@realsee/live 0.3.0-alpha.3 → 0.4.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/live/controller.d.ts +43 -0
  3. package/{lib → dist/live}/createLive.d.ts +6 -6
  4. package/dist/live/createLiveReact.d.ts +6 -0
  5. package/dist/realsee-live.cjs.development.js +4630 -0
  6. package/dist/realsee-live.cjs.development.js.map +1 -0
  7. package/dist/realsee-live.cjs.js +7 -0
  8. package/dist/realsee-live.cjs.production.js +2 -0
  9. package/dist/realsee-live.cjs.production.js.map +1 -0
  10. package/dist/realsee-live.esm.js +4615 -0
  11. package/dist/realsee-live.esm.js.map +1 -0
  12. package/dist/realsee-live.umd.development.js +52454 -0
  13. package/dist/realsee-live.umd.development.js.map +1 -0
  14. package/dist/realsee-live.umd.production.js +2 -0
  15. package/dist/realsee-live.umd.production.js.map +1 -0
  16. package/{lib/RTC → dist/rtc}/BrowserRTC.d.ts +29 -30
  17. package/{lib/RTC → dist/rtc}/BrowserRTC4Chime.d.ts +55 -53
  18. package/dist/rtc/CoreRTC.d.ts +23 -0
  19. package/{lib/RTC → dist/rtc}/VRWebViewRTC.d.ts +22 -23
  20. package/dist/rtc/index.d.ts +5 -0
  21. package/{lib/typings/Chime → dist/typings/chime}/AttendeeResponse.d.ts +5 -5
  22. package/{lib/typings/Chime → dist/typings/chime}/MeetingResponse.d.ts +12 -12
  23. package/{lib/typings/Chime → dist/typings/chime}/MeetingSessionConfigurationOptions.d.ts +16 -16
  24. package/dist/typings/chime/index.d.ts +3 -0
  25. package/dist/typings/index.d.ts +4 -0
  26. package/{lib/typings → dist/typings/live}/EventType.d.ts +90 -89
  27. package/{lib/typings → dist/typings/live}/GetVoiceSign.d.ts +17 -11
  28. package/{lib/typings → dist/typings/live}/Live.d.ts +123 -122
  29. package/{lib/typings → dist/typings/live}/LiveMsg.d.ts +119 -119
  30. package/{lib/typings → dist/typings/live}/LiveOptions.d.ts +65 -46
  31. package/{lib/typings → dist/typings/live}/RoomInfo.d.ts +13 -13
  32. package/{lib/typings → dist/typings/live}/UserInfo.d.ts +87 -87
  33. package/dist/typings/live/UserVolume.d.ts +7 -0
  34. package/{lib/typings → dist/typings/live}/WebSocket.d.ts +78 -78
  35. package/dist/typings/live/index.d.ts +9 -0
  36. package/{lib/createLiveReact.d.ts → dist/typings/react/LiveReact.d.ts} +162 -160
  37. package/dist/typings/react/RTCActionReactCallback.d.ts +2 -0
  38. package/dist/typings/react/index.d.ts +2 -0
  39. package/dist/typings/rtc/VRWebViewRTCOptions.d.ts +6 -0
  40. package/{lib/typings/RTCEventType.d.ts → dist/typings/rtc/eventType.d.ts} +29 -35
  41. package/dist/typings/rtc/index.d.ts +5 -0
  42. package/{lib/typings/RTCJoinedInfo.d.ts → dist/typings/rtc/joinedInfo.d.ts} +34 -28
  43. package/{lib/typings/RTCProtocol.d.ts → dist/typings/rtc/protocol.d.ts} +53 -42
  44. package/dist/typings/rtc/type.d.ts +8 -0
  45. package/{lib/shared-utils → dist/utils}/appendUri.d.ts +1 -1
  46. package/dist/utils/clientDetector.d.ts +4 -0
  47. package/{lib/shared-utils → dist/utils}/equal.d.ts +10 -11
  48. package/{lib/shared-utils/Subscribe.d.ts → dist/utils/subscribe.d.ts} +75 -76
  49. package/{lib/shared-utils → dist/utils}/uuid.d.ts +4 -4
  50. package/package.json +22 -34
  51. package/docs/.nojekyll +0 -1
  52. package/docs/assets/custom.css +0 -43
  53. package/docs/assets/highlight.css +0 -127
  54. package/docs/assets/icons.css +0 -1043
  55. package/docs/assets/icons.png +0 -0
  56. package/docs/assets/icons@2x.png +0 -0
  57. package/docs/assets/main.js +0 -52
  58. package/docs/assets/search.js +0 -1
  59. package/docs/assets/style.css +0 -1413
  60. package/docs/assets/widgets.png +0 -0
  61. package/docs/assets/widgets@2x.png +0 -0
  62. package/docs/classes/RTCProtocol.BrowserRTC.html +0 -60
  63. package/docs/classes/RTCProtocol.BrowserRTC4Chime.html +0 -66
  64. package/docs/classes/RTCProtocol.RTCExample.html +0 -62
  65. package/docs/classes/RTCProtocol.VRWebViewRTC.html +0 -60
  66. package/docs/classes/shared_utils.Subscribe.html +0 -56
  67. package/docs/enums/RTCProtocol.RTCJoinedInfoCodeEnum.html +0 -9
  68. package/docs/enums/RTCProtocol.RTCType.html +0 -1
  69. package/docs/enums/live.BuiltinActionType.html +0 -15
  70. package/docs/enums/live.BuiltinEventType.html +0 -7
  71. package/docs/enums/live.Command.html +0 -7
  72. package/docs/enums/live.MemUserStatus.html +0 -1
  73. package/docs/enums/live.MicroStatus.html +0 -3
  74. package/docs/enums/live.UserStatus.html +0 -9
  75. package/docs/enums/live.WebSocketCloseError.html +0 -19
  76. package/docs/enums/live.WebSocketErrorType.html +0 -1
  77. package/docs/enums/live.WebSocketState.html +0 -13
  78. package/docs/index.html +0 -382
  79. package/docs/interfaces/RTCProtocol.GetVoiceSignReturnType.html +0 -1
  80. package/docs/interfaces/RTCProtocol.RTCJoinedInfo.html +0 -1
  81. package/docs/interfaces/RTCProtocol.RTCProtocol-1.html +0 -60
  82. package/docs/interfaces/RTCProtocol.VRWebViewRTCOptions.html +0 -1
  83. package/docs/interfaces/live.Live.html +0 -119
  84. package/docs/interfaces/live.LiveOptions.html +0 -22
  85. package/docs/interfaces/live.LiveReact.html +0 -52
  86. package/docs/modules/RTCProtocol.html +0 -17
  87. package/docs/modules/live.html +0 -103
  88. package/docs/modules/shared_utils.html +0 -10
  89. package/docs/modules.html +0 -1
  90. package/lib/RTC/BrowserRTC.js +0 -169
  91. package/lib/RTC/BrowserRTC.js.map +0 -1
  92. package/lib/RTC/BrowserRTC4Chime.js +0 -299
  93. package/lib/RTC/BrowserRTC4Chime.js.map +0 -1
  94. package/lib/RTC/VRWebViewRTC.js +0 -125
  95. package/lib/RTC/VRWebViewRTC.js.map +0 -1
  96. package/lib/RTC/index.d.ts +0 -22
  97. package/lib/RTC/index.js +0 -50
  98. package/lib/RTC/index.js.map +0 -1
  99. package/lib/createLive.js +0 -590
  100. package/lib/createLive.js.map +0 -1
  101. package/lib/createLiveReact.js +0 -212
  102. package/lib/createLiveReact.js.map +0 -1
  103. package/lib/index.d.ts +0 -2
  104. package/lib/index.js +0 -8
  105. package/lib/index.js.map +0 -1
  106. package/lib/shared-utils/Subscribe.js +0 -134
  107. package/lib/shared-utils/Subscribe.js.map +0 -1
  108. package/lib/shared-utils/appendUri.js +0 -13
  109. package/lib/shared-utils/appendUri.js.map +0 -1
  110. package/lib/shared-utils/equal.js +0 -92
  111. package/lib/shared-utils/equal.js.map +0 -1
  112. package/lib/shared-utils/uuid.js +0 -17
  113. package/lib/shared-utils/uuid.js.map +0 -1
  114. package/lib/typings/Chime/AttendeeResponse.js +0 -3
  115. package/lib/typings/Chime/AttendeeResponse.js.map +0 -1
  116. package/lib/typings/Chime/MeetingResponse.js +0 -3
  117. package/lib/typings/Chime/MeetingResponse.js.map +0 -1
  118. package/lib/typings/Chime/MeetingSessionConfigurationOptions.js +0 -3
  119. package/lib/typings/Chime/MeetingSessionConfigurationOptions.js.map +0 -1
  120. package/lib/typings/EventType.js +0 -3
  121. package/lib/typings/EventType.js.map +0 -1
  122. package/lib/typings/GetVoiceSign.js +0 -3
  123. package/lib/typings/GetVoiceSign.js.map +0 -1
  124. package/lib/typings/Live.js +0 -3
  125. package/lib/typings/Live.js.map +0 -1
  126. package/lib/typings/LiveMsg.js +0 -111
  127. package/lib/typings/LiveMsg.js.map +0 -1
  128. package/lib/typings/LiveOptions.js +0 -3
  129. package/lib/typings/LiveOptions.js.map +0 -1
  130. package/lib/typings/RTCEventType.js +0 -3
  131. package/lib/typings/RTCEventType.js.map +0 -1
  132. package/lib/typings/RTCJoinedInfo.js +0 -23
  133. package/lib/typings/RTCJoinedInfo.js.map +0 -1
  134. package/lib/typings/RTCProtocol.js +0 -9
  135. package/lib/typings/RTCProtocol.js.map +0 -1
  136. package/lib/typings/RoomInfo.js +0 -3
  137. package/lib/typings/RoomInfo.js.map +0 -1
  138. package/lib/typings/UserInfo.js +0 -31
  139. package/lib/typings/UserInfo.js.map +0 -1
  140. package/lib/typings/VRWebViewRTCOptions.d.ts +0 -6
  141. package/lib/typings/VRWebViewRTCOptions.js +0 -3
  142. package/lib/typings/VRWebViewRTCOptions.js.map +0 -1
  143. package/lib/typings/WebSocket.js +0 -107
  144. package/lib/typings/WebSocket.js.map +0 -1
  145. package/umd/RTCProtocol.543610f0.js +0 -1
  146. package/umd/createLive.96395a4c.js +0 -1
  147. package/umd/createLiveReact.e1836101.js +0 -1
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RealseeLive={})}(this,(function(exports){"use strict";const EVENT_SYMBOL=Symbol("$$REALSEE_LIVE_EVENT$$");function __generateEventIfNotExisted(e){return e[EVENT_SYMBOL]||(e[EVENT_SYMBOL]={}),e[EVENT_SYMBOL]}function __removeEventIfNotExisted(e){e[EVENT_SYMBOL]||delete e[EVENT_SYMBOL]}class Subscribe{hasListener(e){const t=__generateEventIfNotExisted(this);return t&&t[e]&&t[e].length>0}on(e,t,i){const n=__generateEventIfNotExisted(this);return n[e]||(n[e]=[]),n[e].push([t,i||!1]),()=>this.off(e,t)}once(e,t){return this.on(e,t,!0)}off(e,t){if(void 0===e)return void __removeEventIfNotExisted(this);const i=__generateEventIfNotExisted(this);if(i[e]||(i[e]=[]),void 0===t)return void(i[e].length=0);let n=0;for(;n<i[e].length&&i[e][n][0]!==t;n++);n<i[e].length&&i[e].splice(n,1)}emit(e,...t){let i=!1;const n=__generateEventIfNotExisted(this)[e]||[];for(let r of n.slice()){const[n,o=!1]=r,a=n(...t);o&&this.off(e,n),!1===a&&(i=!0)}return i}}class CoreRTC extends Subscribe{}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function getAugmentedNamespace(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})})),t}function createCommonjsModule(e){var t={exports:{}};return e(t,t.exports),t.exports}var trtc=createCommonjsModule((function(e,t){e.exports=function(){function e(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function t(t){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?e(Object(n),!0).forEach((function(e){c(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):e(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e,t,i,n,r,o,a){try{var s=e[o](a),c=s.value}catch(e){return void i(e)}s.done?t(c):Promise.resolve(c).then(n,r)}function r(e){return function(){var t=this,i=arguments;return new Promise((function(r,o){var a=e.apply(t,i);function s(e){n(a,r,o,s,c,"next",e)}function c(e){n(a,r,o,s,c,"throw",e)}s(void 0)}))}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function s(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function p(e,t,i){return(p=h()?Reflect.construct:function(e,t,i){var n=[null];n.push.apply(n,t);var r=new(Function.bind.apply(e,n));return i&&u(r,i.prototype),r}).apply(null,arguments)}function f(e){var t="function"==typeof Map?new Map:void 0;return(f=function(e){if(null===e||(i=e,-1===Function.toString.call(i).indexOf("[native code]")))return e;var i;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return p(e,arguments,d(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),u(n,e)})(e)}function m(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function g(e){var t=h();return function(){var i,n=d(e);if(t){var r=d(this).constructor;i=Reflect.construct(n,arguments,r)}else i=n.apply(this,arguments);return m(this,i)}}function v(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=d(e)););return e}function _(){return(_="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=v(e,t);if(n){var r=Object.getOwnPropertyDescriptor(n,t);return r.get?r.get.call(arguments.length<3?e:i):r.value}}).apply(this,arguments)}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var i=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=i){var n,r,o=[],a=!0,s=!1;try{for(i=i.call(e);!(a=(n=i.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,r=e}finally{try{a||null==i.return||i.return()}finally{if(s)throw r}}return o}}(e,t)||b(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e){return function(e){if(Array.isArray(e))return k(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||b(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){if(e){if("string"==typeof e)return k(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?k(e,t):void 0}}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function T(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=b(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==i.return||i.return()}finally{if(s)throw o}}}}function C(e,t,i,n,r){var o={};return Object.keys(n).forEach((function(e){o[e]=n[e]})),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=i.slice().reverse().reduce((function(i,n){return n(e,t,i)||i}),o),r&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(r):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(e,t,o),o=null),o}var w="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:{};function I(e,t){return e(t={exports:{}},t.exports),t.exports}var E,R,M=function(e){return e&&e.Math==Math&&e},P=M("object"==typeof globalThis&&globalThis)||M("object"==typeof window&&window)||M("object"==typeof self&&self)||M("object"==typeof w&&w)||function(){return this}()||Function("return this")(),A=function(e){try{return!!e()}catch(e){return!0}},D=!A((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),O=!A((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),x=Function.prototype.call,L=O?x.bind(x):function(){return x.apply(x,arguments)},N={}.propertyIsEnumerable,$=Object.getOwnPropertyDescriptor,V={f:$&&!N.call({1:2},1)?function(e){var t=$(this,e);return!!t&&t.enumerable}:N},B=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},F=Function.prototype,U=F.bind,j=F.call,W=O&&U.bind(j,j),H=O?function(e){return e&&W(e)}:function(e){return e&&function(){return j.apply(e,arguments)}},G=H({}.toString),z=H("".slice),J=function(e){return z(G(e),8,-1)},K=P.Object,q=H("".split),Z=A((function(){return!K("z").propertyIsEnumerable(0)}))?function(e){return"String"==J(e)?q(e,""):K(e)}:K,Q=P.TypeError,X=function(e){if(null==e)throw Q("Can't call method on "+e);return e},Y=function(e){return Z(X(e))},ee=function(e){return"function"==typeof e},te=function(e){return"object"==typeof e?null!==e:ee(e)},ie=function(e){return ee(e)?e:void 0},ne=function(e,t){return arguments.length<2?ie(P[e]):P[e]&&P[e][t]},re=H({}.isPrototypeOf),oe=ne("navigator","userAgent")||"",ae=P.process,se=P.Deno,ce=ae&&ae.versions||se&&se.version,le=ce&&ce.v8;le&&(R=(E=le.split("."))[0]>0&&E[0]<4?1:+(E[0]+E[1])),!R&&oe&&(!(E=oe.match(/Edge\/(\d+)/))||E[1]>=74)&&(E=oe.match(/Chrome\/(\d+)/))&&(R=+E[1]);var de=R,ue=!!Object.getOwnPropertySymbols&&!A((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&de&&de<41})),he=ue&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,pe=P.Object,fe=he?function(e){return"symbol"==typeof e}:function(e){var t=ne("Symbol");return ee(t)&&re(t.prototype,pe(e))},me=P.String,ge=function(e){try{return me(e)}catch(e){return"Object"}},ve=P.TypeError,_e=function(e){if(ee(e))return e;throw ve(ge(e)+" is not a function")},Se=function(e,t){var i=e[t];return null==i?void 0:_e(i)},ye=P.TypeError,be=Object.defineProperty,ke=function(e,t){try{be(P,e,{value:t,configurable:!0,writable:!0})}catch(i){P[e]=t}return t},Te=P["__core-js_shared__"]||ke("__core-js_shared__",{}),Ce=I((function(e){(e.exports=function(e,t){return Te[e]||(Te[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.5",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.5/LICENSE",source:"https://github.com/zloirock/core-js"})})),we=P.Object,Ie=function(e){return we(X(e))},Ee=H({}.hasOwnProperty),Re=Object.hasOwn||function(e,t){return Ee(Ie(e),t)},Me=0,Pe=Math.random(),Ae=H(1..toString),De=function(e){return"Symbol("+(void 0===e?"":e)+")_"+Ae(++Me+Pe,36)},Oe=Ce("wks"),xe=P.Symbol,Le=xe&&xe.for,Ne=he?xe:xe&&xe.withoutSetter||De,$e=function(e){if(!Re(Oe,e)||!ue&&"string"!=typeof Oe[e]){var t="Symbol."+e;ue&&Re(xe,e)?Oe[e]=xe[e]:Oe[e]=he&&Le?Le(t):Ne(t)}return Oe[e]},Ve=P.TypeError,Be=$e("toPrimitive"),Fe=function(e,t){if(!te(e)||fe(e))return e;var i,n=Se(e,Be);if(n){if(void 0===t&&(t="default"),i=L(n,e,t),!te(i)||fe(i))return i;throw Ve("Can't convert object to primitive value")}return void 0===t&&(t="number"),function(e,t){var i,n;if("string"===t&&ee(i=e.toString)&&!te(n=L(i,e)))return n;if(ee(i=e.valueOf)&&!te(n=L(i,e)))return n;if("string"!==t&&ee(i=e.toString)&&!te(n=L(i,e)))return n;throw ye("Can't convert object to primitive value")}(e,t)},Ue=function(e){var t=Fe(e,"string");return fe(t)?t:t+""},je=P.document,We=te(je)&&te(je.createElement),He=function(e){return We?je.createElement(e):{}},Ge=!D&&!A((function(){return 7!=Object.defineProperty(He("div"),"a",{get:function(){return 7}}).a})),ze=Object.getOwnPropertyDescriptor,Je={f:D?ze:function(e,t){if(e=Y(e),t=Ue(t),Ge)try{return ze(e,t)}catch(e){}if(Re(e,t))return B(!L(V.f,e,t),e[t])}},Ke=D&&A((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),qe=P.String,Ze=P.TypeError,Qe=function(e){if(te(e))return e;throw Ze(qe(e)+" is not an object")},Xe=P.TypeError,Ye=Object.defineProperty,et=Object.getOwnPropertyDescriptor,tt={f:D?Ke?function(e,t,i){if(Qe(e),t=Ue(t),Qe(i),"function"==typeof e&&"prototype"===t&&"value"in i&&"writable"in i&&!i.writable){var n=et(e,t);n&&n.writable&&(e[t]=i.value,i={configurable:"configurable"in i?i.configurable:n.configurable,enumerable:"enumerable"in i?i.enumerable:n.enumerable,writable:!1})}return Ye(e,t,i)}:Ye:function(e,t,i){if(Qe(e),t=Ue(t),Qe(i),Ge)try{return Ye(e,t,i)}catch(e){}if("get"in i||"set"in i)throw Xe("Accessors not supported");return"value"in i&&(e[t]=i.value),e}},it=D?function(e,t,i){return tt.f(e,t,B(1,i))}:function(e,t,i){return e[t]=i,e},nt=Function.prototype,rt=D&&Object.getOwnPropertyDescriptor,ot=Re(nt,"name"),at={EXISTS:ot,PROPER:ot&&"something"===function(){}.name,CONFIGURABLE:ot&&(!D||D&&rt(nt,"name").configurable)},st=H(Function.toString);ee(Te.inspectSource)||(Te.inspectSource=function(e){return st(e)});var ct,lt,dt,ut=Te.inspectSource,ht=P.WeakMap,pt=ee(ht)&&/native code/.test(ut(ht)),ft=Ce("keys"),mt=function(e){return ft[e]||(ft[e]=De(e))},gt={},vt=P.TypeError,_t=P.WeakMap;if(pt||Te.state){var St=Te.state||(Te.state=new _t),yt=H(St.get),bt=H(St.has),kt=H(St.set);ct=function(e,t){if(bt(St,e))throw new vt("Object already initialized");return t.facade=e,kt(St,e,t),t},lt=function(e){return yt(St,e)||{}},dt=function(e){return bt(St,e)}}else{var Tt=mt("state");gt[Tt]=!0,ct=function(e,t){if(Re(e,Tt))throw new vt("Object already initialized");return t.facade=e,it(e,Tt,t),t},lt=function(e){return Re(e,Tt)?e[Tt]:{}},dt=function(e){return Re(e,Tt)}}var Ct={set:ct,get:lt,has:dt,enforce:function(e){return dt(e)?lt(e):ct(e,{})},getterFor:function(e){return function(t){var i;if(!te(t)||(i=lt(t)).type!==e)throw vt("Incompatible receiver, "+e+" required");return i}}},wt=I((function(e){var t=at.CONFIGURABLE,i=Ct.enforce,n=Ct.get,r=Object.defineProperty,o=D&&!A((function(){return 8!==r((function(){}),"length",{value:8}).length})),a=String(String).split("String"),s=e.exports=function(e,n,s){if("Symbol("===String(n).slice(0,7)&&(n="["+String(n).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),s&&s.getter&&(n="get "+n),s&&s.setter&&(n="set "+n),(!Re(e,"name")||t&&e.name!==n)&&r(e,"name",{value:n,configurable:!0}),o&&s&&Re(s,"arity")&&e.length!==s.arity&&r(e,"length",{value:s.arity}),s&&Re(s,"constructor")&&s.constructor){if(D)try{r(e,"prototype",{writable:!1})}catch(e){}}else e.prototype=void 0;var c=i(e);return Re(c,"source")||(c.source=a.join("string"==typeof n?n:"")),e};Function.prototype.toString=s((function(){return ee(this)&&n(this).source||ut(this)}),"toString")})),It=function(e,t,i,n){var r=!!n&&!!n.unsafe,o=!!n&&!!n.enumerable,a=!!n&&!!n.noTargetGet,s=n&&void 0!==n.name?n.name:t;return ee(i)&&wt(i,s,n),e===P?(o?e[t]=i:ke(t,i),e):(r?!a&&e[t]&&(o=!0):delete e[t],o?e[t]=i:it(e,t,i),e)},Et=Math.ceil,Rt=Math.floor,Mt=function(e){var t=+e;return t!=t||0===t?0:(t>0?Rt:Et)(t)},Pt=Math.max,At=Math.min,Dt=function(e,t){var i=Mt(e);return i<0?Pt(i+t,0):At(i,t)},Ot=Math.min,xt=function(e){return e>0?Ot(Mt(e),9007199254740991):0},Lt=function(e){return xt(e.length)},Nt=function(e){return function(t,i,n){var r,o=Y(t),a=Lt(o),s=Dt(n,a);if(e&&i!=i){for(;a>s;)if((r=o[s++])!=r)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===i)return e||s||0;return!e&&-1}},$t={includes:Nt(!0),indexOf:Nt(!1)},Vt=$t.indexOf,Bt=H([].push),Ft=function(e,t){var i,n=Y(e),r=0,o=[];for(i in n)!Re(gt,i)&&Re(n,i)&&Bt(o,i);for(;t.length>r;)Re(n,i=t[r++])&&(~Vt(o,i)||Bt(o,i));return o},Ut=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],jt=Ut.concat("length","prototype"),Wt={f:Object.getOwnPropertyNames||function(e){return Ft(e,jt)}},Ht={f:Object.getOwnPropertySymbols},Gt=H([].concat),zt=ne("Reflect","ownKeys")||function(e){var t=Wt.f(Qe(e)),i=Ht.f;return i?Gt(t,i(e)):t},Jt=function(e,t,i){for(var n=zt(t),r=tt.f,o=Je.f,a=0;a<n.length;a++){var s=n[a];Re(e,s)||i&&Re(i,s)||r(e,s,o(t,s))}},Kt=/#|\.prototype\./,qt=function(e,t){var i=Qt[Zt(e)];return i==Yt||i!=Xt&&(ee(t)?A(t):!!t)},Zt=qt.normalize=function(e){return String(e).replace(Kt,".").toLowerCase()},Qt=qt.data={},Xt=qt.NATIVE="N",Yt=qt.POLYFILL="P",ei=qt,ti=Je.f,ii=function(e,t){var i,n,r,o,a,s=e.target,c=e.global,l=e.stat;if(i=c?P:l?P[s]||ke(s,{}):(P[s]||{}).prototype)for(n in t){if(o=t[n],r=e.noTargetGet?(a=ti(i,n))&&a.value:i[n],!ei(c?n:s+(l?".":"#")+n,e.forced)&&void 0!==r){if(typeof o==typeof r)continue;Jt(o,r)}(e.sham||r&&r.sham)&&it(o,"sham",!0),It(i,n,o,e)}},ni=H(H.bind),ri=function(e,t){return _e(e),void 0===t?e:O?ni(e,t):function(){return e.apply(t,arguments)}},oi=Array.isArray||function(e){return"Array"==J(e)},ai={};ai[$e("toStringTag")]="z";var si="[object z]"===String(ai),ci=$e("toStringTag"),li=P.Object,di="Arguments"==J(function(){return arguments}()),ui=si?J:function(e){var t,i,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,t){try{return e[t]}catch(e){}}(t=li(e),ci))?i:di?J(t):"Object"==(n=J(t))&&ee(t.callee)?"Arguments":n},hi=function(){},pi=[],fi=ne("Reflect","construct"),mi=/^\s*(?:class|function)\b/,gi=H(mi.exec),vi=!mi.exec(hi),_i=function(e){if(!ee(e))return!1;try{return fi(hi,pi,e),!0}catch(e){return!1}},Si=function(e){if(!ee(e))return!1;switch(ui(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return vi||!!gi(mi,ut(e))}catch(e){return!0}};Si.sham=!0;var yi=!fi||A((function(){var e;return _i(_i.call)||!_i(Object)||!_i((function(){e=!0}))||e}))?Si:_i,bi=$e("species"),ki=P.Array,Ti=function(e,t){return new(function(e){var t;return oi(e)&&(t=e.constructor,(yi(t)&&(t===ki||oi(t.prototype))||te(t)&&null===(t=t[bi]))&&(t=void 0)),void 0===t?ki:t}(e))(0===t?0:t)},Ci=H([].push),wi=function(e){var t=1==e,i=2==e,n=3==e,r=4==e,o=6==e,a=7==e,s=5==e||o;return function(c,l,d,u){for(var h,p,f=Ie(c),m=Z(f),g=ri(l,d),v=Lt(m),_=0,S=u||Ti,y=t?S(c,v):i||a?S(c,0):void 0;v>_;_++)if((s||_ in m)&&(p=g(h=m[_],_,f),e))if(t)y[_]=p;else if(p)switch(e){case 3:return!0;case 5:return h;case 6:return _;case 2:Ci(y,h)}else switch(e){case 4:return!1;case 7:Ci(y,h)}return o?-1:n||r?r:y}},Ii={forEach:wi(0),map:wi(1),filter:wi(2),some:wi(3),every:wi(4),find:wi(5),findIndex:wi(6),filterReject:wi(7)},Ei=$e("species"),Ri=function(e){return de>=51||!A((function(){var t=[];return(t.constructor={})[Ei]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Mi=Ii.map,Pi=Ri("map");ii({target:"Array",proto:!0,forced:!Pi},{map:function(e){return Mi(this,e,arguments.length>1?arguments[1]:void 0)}});var Ai=Ii.filter,Di=Ri("filter");ii({target:"Array",proto:!0,forced:!Di},{filter:function(e){return Ai(this,e,arguments.length>1?arguments[1]:void 0)}});var Oi=si?{}.toString:function(){return"[object "+ui(this)+"]"};si||It(Object.prototype,"toString",Oi,{unsafe:!0});var xi=Je.f,Li=A((function(){xi(1)}));ii({target:"Object",stat:!0,forced:!D||Li,sham:!D},{getOwnPropertyDescriptor:function(e,t){return xi(Y(e),t)}}),I((function(e){var t=function(e){var t=Object.prototype,i=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(e,t,i){return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,i){return e[t]=i}}function c(e,t,i,n){var r=t&&t.prototype instanceof u?t:u,o=Object.create(r.prototype),a=new T(n||[]);return o._invoke=function(e,t,i){var n="suspendedStart";return function(r,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===r)throw o;return w()}for(i.method=r,i.arg=o;;){var a=i.delegate;if(a){var s=y(a,i);if(s){if(s===d)continue;return s}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if("suspendedStart"===n)throw n="completed",i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n="executing";var c=l(e,t,i);if("normal"===c.type){if(n=i.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(n="completed",i.method="throw",i.arg=c.arg)}}}(e,i,a),o}function l(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var d={};function u(){}function h(){}function p(){}var f={};s(f,r,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(C([])));g&&g!==t&&i.call(g,r)&&(f=g);var v=p.prototype=u.prototype=Object.create(f);function _(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){var n;this._invoke=function(r,o){function a(){return new t((function(n,a){!function n(r,o,a,s){var c=l(e[r],e,o);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==typeof u&&i.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(u).then((function(e){d.value=e,a(d)}),(function(e){return n("throw",e,a,s)}))}s(c.arg)}(r,o,n,a)}))}return n=n?n.then(a,a):a()}}function y(e,t){var i=e.iterator[t.method];if(void 0===i){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,y(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(i,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var r=n.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function C(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n<e.length;)if(i.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:w}}function w(){return{value:void 0,done:!0}}return h.prototype=p,s(v,"constructor",p),s(p,"constructor",h),h.displayName=s(p,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,s(e,a,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},_(S.prototype),s(S.prototype,o,(function(){return this})),e.AsyncIterator=S,e.async=function(t,i,n,r,o){void 0===o&&(o=Promise);var a=new S(c(t,i,n,r),o);return e.isGeneratorFunction(i)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},_(v),s(v,a,"Generator"),s(v,r,(function(){return this})),s(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var i in e)t.push(i);return t.reverse(),function i(){for(;t.length;){var n=t.pop();if(n in e)return i.value=n,i.done=!1,i}return i.done=!0,i}},e.values=C,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!e)for(var t in this)"t"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(i,n){return a.type="throw",a.arg=e,t.next=i,n&&(t.method="next",t.arg=void 0),!!n}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),k(i),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var n=i.completion;if("throw"===n.type){var r=n.arg;k(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:C(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=void 0),d}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}));let Ni=!0,$i=!0;function Vi(e,t,i){const n=e.match(t);return n&&n.length>=i&&parseInt(n[i],10)}function Bi(e,t,i){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return r.apply(this,arguments);const o=e=>{const t=i(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,o),r.apply(this,[e,o])};const o=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t])return o.apply(this,arguments);if(!this._eventMap[t].has(i))return o.apply(this,arguments);const n=this._eventMap[t].get(i);return this._eventMap[t].delete(i),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,o.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function Fi(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Ni=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Ui(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):($i=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function ji(){if("object"==typeof window){if(Ni)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Wi(e,t){$i&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Hi(e){return"[object Object]"===Object.prototype.toString.call(e)}function Gi(e){return Hi(e)?Object.keys(e).reduce((function(t,i){const n=Hi(e[i]),r=n?Gi(e[i]):e[i],o=n&&!Object.keys(r).length;return void 0===r||o?t:Object.assign(t,{[i]:r})}),{}):e}function zi(e,t,i){const n=i?"outbound-rtp":"inbound-rtp",r=new Map;if(null===t)return r;const o=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((t=>{e.forEach((i=>{i.type===n&&i.trackId===t.id&&function e(t,i,n){i&&!n.has(i.id)&&(n.set(i.id,i),Object.keys(i).forEach((r=>{r.endsWith("Id")?e(t,t.get(i[r]),n):r.endsWith("Ids")&&i[r].forEach((i=>{e(t,t.get(i),n)}))})))}(e,i,r)}))})),r}const Ji=ji;function Ki(e,t){const i=e&&e.navigator;if(!i.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;const n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const r=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[r("min",i)]=n.ideal,t.optional.push(e),e={},e[r("max",i)]=n.ideal,t.optional.push(e)):(e[r("",i)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[r("",i)]=n.exact):["min","max"].forEach((e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[r(e,i)]=n[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},r=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let o=e.video.facingMode;o=o&&("object"==typeof o?o:{ideal:o});const a=t.version<66;if(o&&("user"===o.exact||"environment"===o.exact||"user"===o.ideal||"environment"===o.ideal)&&(!i.mediaDevices.getSupportedConstraints||!i.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===o.exact||"environment"===o.ideal?t=["back","rear"]:"user"!==o.exact&&"user"!==o.ideal||(t=["front"]),t)return i.mediaDevices.enumerateDevices().then((i=>{let a=(i=i.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&i.length&&t.includes("back")&&(a=i[i.length-1]),a&&(e.video.deviceId=o.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=n(e.video),Ji("chrome: "+JSON.stringify(e)),r(e)}))}e.video=n(e.video)}return Ji("chrome: "+JSON.stringify(e)),r(e)},o=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(i.getUserMedia=function(e,t,n){r(e,(e=>{i.webkitGetUserMedia(e,t,(e=>{n&&n(o(e))}))}))}.bind(i),i.mediaDevices.getUserMedia){const e=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(t){return r(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(o(e))))))}}}function qi(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Zi(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.track.id)):{track:i.track};const r=new Event("track");r.track=i.track,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)})),t.stream.getTracks().forEach((i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.id)):{track:i};const r=new Event("track");r.track=i,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Bi(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Qi(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let r=i.apply(this,arguments);return r||(r=t(this,e),this._senders.push(r)),r};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Xi(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const r=function(e){const t={};return e.result().forEach((e=>{const i={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{i[t]=e.stat(t)})),t[i.id]=i})),t},o=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const n=function(e){i(o(r(e)))};return t.apply(this,[n,e])}return new Promise(((e,i)=>{t.apply(this,[function(t){e(o(r(t)))},i])})).then(i,n)}}function Yi(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zi(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Bi(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zi(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,i,n;return this.getSenders().forEach((i=>{i.track===e&&(t?n=!0:t=i)})),this.getReceivers().forEach((t=>(t.track===e&&(i?n=!0:i=t),t.track===e))),n||t&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function en(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[i.id]?-1===this._shimmedLocalStreams[i.id].indexOf(n)&&this._shimmedLocalStreams[i.id].push(n):this._shimmedLocalStreams[i.id]=[i,n],n};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();i.apply(this,arguments);const n=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const i=this._shimmedLocalStreams[t].indexOf(e);-1!==i&&this._shimmedLocalStreams[t].splice(i,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),r.apply(this,arguments)}}function tn(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return en(e);const i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=i.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};const r=e.RTCPeerConnection.prototype.removeStream;function o(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(r.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:i})}function a(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(n.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:i})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,i){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");const r=this.getSenders().find((e=>e.track===t));if(r)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const o=this._streams[i.id];if(o)o.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const n=new e.MediaStream([t]);this._streams[i.id]=n,this._reverseStreams[n.id]=i,this.addStream(n)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?i.apply(this,[t=>{const i=o(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then((e=>o(this,e)))}};e.RTCPeerConnection.prototype[t]=n[t]}));const s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=a(this,arguments[0]),s.apply(this,arguments)):s.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:o(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(e._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((i=>{this._streams[i].getTracks().find((t=>e.track===t))&&(t=this._streams[i])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function nn(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function rn(e,t){Bi(e,"negotiationneeded",(e=>{const i=e.target;if(!(t.version<72||i.getConfiguration&&"plan-b"===i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e}))}var on=Object.freeze({__proto__:null,shimMediaStream:qi,shimOnTrack:Zi,shimGetSendersWithDtmf:Qi,shimGetStats:Xi,shimSenderReceiverGetStats:Yi,shimAddTrackRemoveTrackWithNative:en,shimAddTrackRemoveTrack:tn,shimPeerConnection:nn,fixNegotiationNeeded:rn,shimGetUserMedia:Ki,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(i){return t(i).then((t=>{const n=i.video&&i.video.width,r=i.video&&i.video.height,o=i.video&&i.video.frameRate;return i.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:o||3}},n&&(i.video.mandatory.maxWidth=n),r&&(i.video.mandatory.maxHeight=r),e.navigator.mediaDevices.getUserMedia(i)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}}),an=I((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var i=t.splitSections(e);return i&&i[0]},t.getMediaSections=function(e){var i=t.splitSections(e);return i.shift(),i},t.matchPrefix=function(e,i){return t.splitLines(e).filter((function(e){return 0===e.indexOf(i)}))},t.parseCandidate=function(e){for(var t,i={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},n=8;n<t.length;n+=2)switch(t[n]){case"raddr":i.relatedAddress=t[n+1];break;case"rport":i.relatedPort=parseInt(t[n+1],10);break;case"tcptype":i.tcpType=t[n+1];break;case"ufrag":i.ufrag=t[n+1],i.usernameFragment=t[n+1];break;default:i[t[n]]=t[n+1]}return i},t.writeCandidate=function(e){var t=[];t.push(e.foundation),t.push(e.component),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);var i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){var t=e.substr(9).split(" "),i={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),i.name=t[0],i.clockRate=parseInt(t[1],10),i.channels=3===t.length?parseInt(t[2],10):1,i.numChannels=i.channels,i},t.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var i=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==i?"/"+i:"")+"\r\n"},t.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,i={},n=e.substr(e.indexOf(" ")+1).split(";"),r=0;r<n.length;r++)i[(t=n[r].trim().split("="))[0].trim()]=t[1];return i},t.writeFmtp=function(e){var t="",i=e.payloadType;if(void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var n=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)})),t+="a=fmtp:"+i+" "+n.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){var t="",i=e.payloadType;return void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+i+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){var t=e.indexOf(" "),i={ssrc:parseInt(e.substr(7,t-7),10)},n=e.indexOf(":",t);return n>-1?(i.attribute=e.substr(t+1,n-t-1),i.value=e.substr(n+1)):i.attribute=e.substr(t+1),i},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var i=t.matchPrefix(e,"a=mid:")[0];if(i)return i.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,i){return{role:"auto",fingerprints:t.matchPrefix(e+i,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var i="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){i+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),i},t.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,i){return t.matchPrefix(e+i,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,i){var n=t.matchPrefix(e+i,"a=ice-ufrag:")[0],r=t.matchPrefix(e+i,"a=ice-pwd:")[0];return n&&r?{usernameFragment:n.substr(12),password:r.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" "),r=3;r<n.length;r++){var o=n[r],a=t.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(a){var s=t.parseRtpMap(a),c=t.matchPrefix(e,"a=fmtp:"+o+" ");switch(s.parameters=c.length?t.parseFmtp(c[0]):{},s.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(t.parseRtcpFb),i.codecs.push(s),s.name.toUpperCase()){case"RED":case"ULPFEC":i.fecMechanisms.push(s.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((function(e){i.headerExtensions.push(t.parseExtmap(e))})),i},t.writeRtpDescription=function(e,i){var n="";n+="m="+e+" ",n+=i.codecs.length>0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=i.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",i.codecs.forEach((function(e){n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));var r=0;return i.codecs.forEach((function(e){e.maxptime>r&&(r=e.maxptime)})),r>0&&(n+="a=maxptime:"+r+"\r\n"),n+="a=rtcp-mux\r\n",i.headerExtensions&&i.headerExtensions.forEach((function(e){n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){var i,n=[],r=t.parseRtpParameters(e),o=-1!==r.fecMechanisms.indexOf("RED"),a=-1!==r.fecMechanisms.indexOf("ULPFEC"),s=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=s.length>0&&s[0].ssrc,l=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));l.length>0&&l[0].length>1&&l[0][0]===c&&(i=l[0][1]),r.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&i&&(t.rtx={ssrc:i}),n.push(t),o&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},n.push(t))}})),0===n.length&&c&&n.push({ssrc:c});var d=t.matchPrefix(e,"b=");return d.length&&(d=0===d[0].indexOf("b=TIAS:")?parseInt(d[0].substr(7),10):0===d[0].indexOf("b=AS:")?1e3*parseInt(d[0].substr(5),10)*.95-16e3:void 0,n.forEach((function(e){e.maxBitrate=d}))),n},t.parseRtcpParameters=function(e){var i={},n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];n&&(i.cname=n.value,i.ssrc=n.ssrc);var r=t.matchPrefix(e,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=0===r.length;var o=t.matchPrefix(e,"a=rtcp-mux");return i.mux=o.length>0,i},t.parseMsid=function(e){var i,n=t.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(i=n[0].substr(7).split(" "))[0],track:i[1]};var r=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return r.length>0?{stream:(i=r[0].value.split(" "))[0],track:i[1]}:void 0},t.parseSctpDescription=function(e){var i,n=t.parseMLine(e),r=t.matchPrefix(e,"a=max-message-size:");r.length>0&&(i=parseInt(r[0].substr(19),10)),isNaN(i)&&(i=65536);var o=t.matchPrefix(e,"a=sctp-port:");if(o.length>0)return{port:parseInt(o[0].substr(12),10),protocol:n.fmt,maxMessageSize:i};if(t.matchPrefix(e,"a=sctpmap:").length>0){var a=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:i}}},t.writeSctpDescription=function(e,t){var i=[];return i="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&i.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),i.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,i,n){var r=void 0!==i?i:2;return"v=0\r\no="+(n||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+r+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,i,n,r){var o=t.writeRtpDescription(e.kind,i);if(o+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a="msid:"+r.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),o},t.getDirection=function(e,i){for(var n=t.splitLines(e),r=0;r<n.length;r++)switch(n[r]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[r].substr(2)}return i?t.getDirection(i):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){var i=t.splitLines(e)[0].substr(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},t.parseOLine=function(e){var i=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var i=t.splitLines(e),n=0;n<i.length;n++)if(i[n].length<2||"="!==i[n].charAt(1))return!1;return!0},e.exports=t}));function sn(e,t,i,n,r){var o=an.writeRtpDescription(e.kind,t);if(o+=an.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=an.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===i?"actpass":r||"active"),o+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=a;var s="msid:"+(n?n.id:"-")+" "+a+"\r\n";o+="a="+s,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+s,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+s,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+an.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+an.localCName+"\r\n"),o}function cn(e,t){var i={codecs:[],headerExtensions:[],fecMechanisms:[]},n=function(e,t){e=parseInt(e,10);for(var i=0;i<t.length;i++)if(t[i].payloadType===e||t[i].preferredPayloadType===e)return t[i]},r=function(e,t,i,r){var o=n(e.parameters.apt,i),a=n(t.parameters.apt,r);return o&&a&&o.name.toLowerCase()===a.name.toLowerCase()};return e.codecs.forEach((function(n){for(var o=0;o<t.codecs.length;o++){var a=t.codecs[o];if(n.name.toLowerCase()===a.name.toLowerCase()&&n.clockRate===a.clockRate){if("rtx"===n.name.toLowerCase()&&n.parameters&&a.parameters.apt&&!r(n,a,e.codecs,t.codecs))continue;(a=JSON.parse(JSON.stringify(a))).numChannels=Math.min(n.numChannels,a.numChannels),i.codecs.push(a),a.rtcpFeedback=a.rtcpFeedback.filter((function(e){for(var t=0;t<n.rtcpFeedback.length;t++)if(n.rtcpFeedback[t].type===e.type&&n.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var n=0;n<t.headerExtensions.length;n++){var r=t.headerExtensions[n];if(e.uri===r.uri){i.headerExtensions.push(r);break}}})),i}function ln(e,t,i){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(i)}function dn(e,t){var i=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return i||e.addRemoteCandidate(t),!i}function un(e,t){var i=new Error(t);return i.name=e,i.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],i}var hn=function(e,t){function i(t,i){i.addTrack(t),i.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function n(t,i,n,r){var o=new Event("track");o.track=i,o.receiver=n,o.transceiver={receiver:n},o.streams=r,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var r=function(i){var n=this,r=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){n[e]=r[e].bind(r)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",i=JSON.parse(JSON.stringify(i||{})),this.usingBundle="max-bundle"===i.bundlePolicy,"negotiate"===i.rtcpMuxPolicy)throw un("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(i.rtcpMuxPolicy||(i.rtcpMuxPolicy="require"),i.iceTransportPolicy){case"all":case"relay":break;default:i.iceTransportPolicy="all"}switch(i.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:i.bundlePolicy="balanced"}if(i.iceServers=function(e,t){var i=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var n=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var r="string"==typeof n;return r&&(n=[n]),n=n.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||i?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(i=!0,!0)})),delete e.url,e.urls=r?n[0]:n,!!n.length}}))}(i.iceServers||[],t),this._iceGatherers=[],i.iceCandidatePoolSize)for(var o=i.iceCandidatePoolSize;o>0;o--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:i.iceServers,gatherPolicy:i.iceTransportPolicy}));else i.iceCandidatePoolSize=0;this._config=i,this.transceivers=[],this._sdpSessionId=an.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(r.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(r.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),r.prototype.onicecandidate=null,r.prototype.onaddstream=null,r.prototype.ontrack=null,r.prototype.onremovestream=null,r.prototype.onsignalingstatechange=null,r.prototype.oniceconnectionstatechange=null,r.prototype.onconnectionstatechange=null,r.prototype.onicegatheringstatechange=null,r.prototype.onnegotiationneeded=null,r.prototype.ondatachannel=null,r.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},r.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},r.prototype.getConfiguration=function(){return this._config},r.prototype.getLocalStreams=function(){return this.localStreams},r.prototype.getRemoteStreams=function(){return this.remoteStreams},r.prototype._createTransceiver=function(e,t){var i=this.transceivers.length>0,n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&i)n.iceTransport=this.transceivers[0].iceTransport,n.dtlsTransport=this.transceivers[0].dtlsTransport;else{var r=this._createIceAndDtlsTransports();n.iceTransport=r.iceTransport,n.dtlsTransport=r.dtlsTransport}return t||this.transceivers.push(n),n},r.prototype.addTrack=function(t,i){if(this._isClosed)throw un("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var n;if(this.transceivers.find((function(e){return e.track===t})))throw un("InvalidAccessError","Track already exists.");for(var r=0;r<this.transceivers.length;r++)this.transceivers[r].track||this.transceivers[r].kind!==t.kind||(n=this.transceivers[r]);return n||(n=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(i)&&this.localStreams.push(i),n.track=t,n.stream=i,n.rtpSender=new e.RTCRtpSender(t,n.dtlsTransport),n.rtpSender},r.prototype.addStream=function(e){var i=this;if(t>=15025)e.getTracks().forEach((function(t){i.addTrack(t,e)}));else{var n=e.clone();e.getTracks().forEach((function(e,t){var i=n.getTracks()[t];e.addEventListener("enabled",(function(e){i.enabled=e.enabled}))})),n.getTracks().forEach((function(e){i.addTrack(e,n)}))}},r.prototype.removeTrack=function(t){if(this._isClosed)throw un("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var i=this.transceivers.find((function(e){return e.rtpSender===t}));if(!i)throw un("InvalidAccessError","Sender was not created by this connection.");var n=i.stream;i.rtpSender.stop(),i.rtpSender=null,i.track=null,i.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(n)&&this.localStreams.indexOf(n)>-1&&this.localStreams.splice(this.localStreams.indexOf(n),1),this._maybeFireNegotiationNeeded()},r.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var i=t.getSenders().find((function(t){return t.track===e}));i&&t.removeTrack(i)}))},r.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},r.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},r.prototype._createIceGatherer=function(t,i){var n=this;if(i&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var r=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(r,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var i=!e.candidate||0===Object.keys(e.candidate).length;r.state=i?"completed":"gathering",null!==n.transceivers[t].bufferedCandidateEvents&&n.transceivers[t].bufferedCandidateEvents.push(e)},r.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),r},r.prototype._gather=function(t,i){var n=this,r=this.transceivers[i].iceGatherer;if(!r.onlocalcandidate){var o=this.transceivers[i].bufferedCandidateEvents;this.transceivers[i].bufferedCandidateEvents=null,r.removeEventListener("localcandidate",this.transceivers[i].bufferCandidates),r.onlocalcandidate=function(e){if(!(n.usingBundle&&i>0)){var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:i};var a=e.candidate,s=!a||0===Object.keys(a).length;if(s)"new"!==r.state&&"gathering"!==r.state||(r.state="completed");else{"new"===r.state&&(r.state="gathering"),a.component=1,a.ufrag=r.getLocalParameters().usernameFragment;var c=an.writeCandidate(a);o.candidate=Object.assign(o.candidate,an.parseCandidate(c)),o.candidate.candidate=c,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var l=an.getMediaSections(n._localDescription.sdp);l[o.candidate.sdpMLineIndex]+=s?"a=end-of-candidates\r\n":"a="+o.candidate.candidate+"\r\n",n._localDescription.sdp=an.getDescription(n._localDescription.sdp)+l.join("");var d=n.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==n.iceGatheringState&&(n.iceGatheringState="gathering",n._emitGatheringStateChange()),s||n._dispatchEvent("icecandidate",o),d&&(n._dispatchEvent("icecandidate",new Event("icecandidate")),n.iceGatheringState="complete",n._emitGatheringStateChange())}},e.setTimeout((function(){o.forEach((function(e){r.onlocalcandidate(e)}))}),0)}},r.prototype._createIceAndDtlsTransports=function(){var t=this,i=new e.RTCIceTransport(null);i.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var n=new e.RTCDtlsTransport(i);return n.ondtlsstatechange=function(){t._updateConnectionState()},n.onerror=function(){Object.defineProperty(n,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:i,dtlsTransport:n}},r.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var i=this.transceivers[e].iceTransport;i&&(delete i.onicestatechange,delete this.transceivers[e].iceTransport);var n=this.transceivers[e].dtlsTransport;n&&(delete n.ondtlsstatechange,delete n.onerror,delete this.transceivers[e].dtlsTransport)},r.prototype._transceive=function(e,i,n){var r=cn(e.localCapabilities,e.remoteCapabilities);i&&e.rtpSender&&(r.encodings=e.sendEncodingParameters,r.rtcp={cname:an.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(r.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(r)),n&&e.rtpReceiver&&r.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?r.encodings=e.recvEncodingParameters:r.encodings=[{}],r.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(r.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(r.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(r))},r.prototype.setLocalDescription=function(e){var t,i,n=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject(un("TypeError",'Unsupported type "'+e.type+'"'));if(!ln("setLocalDescription",e.type,n.signalingState)||n._isClosed)return Promise.reject(un("InvalidStateError","Can not set local "+e.type+" in state "+n.signalingState));if("offer"===e.type)t=an.splitSections(e.sdp),i=t.shift(),t.forEach((function(e,t){var i=an.parseRtpParameters(e);n.transceivers[t].localCapabilities=i})),n.transceivers.forEach((function(e,t){n._gather(e.mid,t)}));else if("answer"===e.type){t=an.splitSections(n._remoteDescription.sdp),i=t.shift();var r=an.matchPrefix(i,"a=ice-lite").length>0;t.forEach((function(e,t){var o=n.transceivers[t],a=o.iceGatherer,s=o.iceTransport,c=o.dtlsTransport,l=o.localCapabilities,d=o.remoteCapabilities;if(!(an.isRejected(e)&&0===an.matchPrefix(e,"a=bundle-only").length||o.rejected)){var u=an.getIceParameters(e,i),h=an.getDtlsParameters(e,i);r&&(h.role="server"),n.usingBundle&&0!==t||(n._gather(o.mid,t),"new"===s.state&&s.start(a,u,r?"controlling":"controlled"),"new"===c.state&&c.start(h));var p=cn(l,d);n._transceive(o,p.codecs.length>0,!1)}}))}return n._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?n._updateSignalingState("have-local-offer"):n._updateSignalingState("stable"),Promise.resolve()},r.prototype.setRemoteDescription=function(r){var o=this;if(-1===["offer","answer"].indexOf(r.type))return Promise.reject(un("TypeError",'Unsupported type "'+r.type+'"'));if(!ln("setRemoteDescription",r.type,o.signalingState)||o._isClosed)return Promise.reject(un("InvalidStateError","Can not set remote "+r.type+" in state "+o.signalingState));var a={};o.remoteStreams.forEach((function(e){a[e.id]=e}));var s=[],c=an.splitSections(r.sdp),l=c.shift(),d=an.matchPrefix(l,"a=ice-lite").length>0,u=an.matchPrefix(l,"a=group:BUNDLE ").length>0;o.usingBundle=u;var h=an.matchPrefix(l,"a=ice-options:")[0];return o.canTrickleIceCandidates=!!h&&h.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(n,c){var h=an.splitLines(n),p=an.getKind(n),f=an.isRejected(n)&&0===an.matchPrefix(n,"a=bundle-only").length,m=h[0].substr(2).split(" ")[2],g=an.getDirection(n,l),v=an.parseMsid(n),_=an.getMid(n)||an.generateIdentifier();if(f||"application"===p&&("DTLS/SCTP"===m||"UDP/DTLS/SCTP"===m))o.transceivers[c]={mid:_,kind:p,protocol:m,rejected:!0};else{var S,y,b,k,T,C,w,I,E;!f&&o.transceivers[c]&&o.transceivers[c].rejected&&(o.transceivers[c]=o._createTransceiver(p,!0));var R,M,P=an.parseRtpParameters(n);f||(R=an.getIceParameters(n,l),(M=an.getDtlsParameters(n,l)).role="client"),w=an.parseRtpEncodingParameters(n);var A=an.parseRtcpParameters(n),D=an.matchPrefix(n,"a=end-of-candidates",l).length>0,O=an.matchPrefix(n,"a=candidate:").map((function(e){return an.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===r.type||"answer"===r.type)&&!f&&u&&c>0&&o.transceivers[c]&&(o._disposeIceAndDtlsTransports(c),o.transceivers[c].iceGatherer=o.transceivers[0].iceGatherer,o.transceivers[c].iceTransport=o.transceivers[0].iceTransport,o.transceivers[c].dtlsTransport=o.transceivers[0].dtlsTransport,o.transceivers[c].rtpSender&&o.transceivers[c].rtpSender.setTransport(o.transceivers[0].dtlsTransport),o.transceivers[c].rtpReceiver&&o.transceivers[c].rtpReceiver.setTransport(o.transceivers[0].dtlsTransport)),"offer"!==r.type||f)"answer"!==r.type||f||(y=(S=o.transceivers[c]).iceGatherer,b=S.iceTransport,k=S.dtlsTransport,T=S.rtpReceiver,C=S.sendEncodingParameters,I=S.localCapabilities,o.transceivers[c].recvEncodingParameters=w,o.transceivers[c].remoteCapabilities=P,o.transceivers[c].rtcpParameters=A,O.length&&"new"===b.state&&(!d&&!D||u&&0!==c?O.forEach((function(e){dn(S.iceTransport,e)})):b.setRemoteCandidates(O)),u&&0!==c||("new"===b.state&&b.start(y,R,"controlling"),"new"===k.state&&k.start(M)),!cn(S.localCapabilities,S.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&S.sendEncodingParameters[0].rtx&&delete S.sendEncodingParameters[0].rtx,o._transceive(S,"sendrecv"===g||"recvonly"===g,"sendrecv"===g||"sendonly"===g),!T||"sendrecv"!==g&&"sendonly"!==g?delete S.rtpReceiver:(E=T.track,v?(a[v.stream]||(a[v.stream]=new e.MediaStream),i(E,a[v.stream]),s.push([E,T,a[v.stream]])):(a.default||(a.default=new e.MediaStream),i(E,a.default),s.push([E,T,a.default]))));else{(S=o.transceivers[c]||o._createTransceiver(p)).mid=_,S.iceGatherer||(S.iceGatherer=o._createIceGatherer(c,u)),O.length&&"new"===S.iceTransport.state&&(!D||u&&0!==c?O.forEach((function(e){dn(S.iceTransport,e)})):S.iceTransport.setRemoteCandidates(O)),I=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(I.codecs=I.codecs.filter((function(e){return"rtx"!==e.name}))),C=S.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var x,L=!1;"sendrecv"===g||"sendonly"===g?(L=!S.rtpReceiver,T=S.rtpReceiver||new e.RTCRtpReceiver(S.dtlsTransport,p),L&&(E=T.track,v&&"-"===v.stream||(v?(a[v.stream]||(a[v.stream]=new e.MediaStream,Object.defineProperty(a[v.stream],"id",{get:function(){return v.stream}})),Object.defineProperty(E,"id",{get:function(){return v.track}}),x=a[v.stream]):(a.default||(a.default=new e.MediaStream),x=a.default)),x&&(i(E,x),S.associatedRemoteMediaStreams.push(x)),s.push([E,T,x]))):S.rtpReceiver&&S.rtpReceiver.track&&(S.associatedRemoteMediaStreams.forEach((function(t){var i=t.getTracks().find((function(e){return e.id===S.rtpReceiver.track.id}));i&&function(t,i){i.removeTrack(t),i.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(i,t)})),S.associatedRemoteMediaStreams=[]),S.localCapabilities=I,S.remoteCapabilities=P,S.rtpReceiver=T,S.rtcpParameters=A,S.sendEncodingParameters=C,S.recvEncodingParameters=w,o._transceive(o.transceivers[c],!1,L)}}})),void 0===o._dtlsRole&&(o._dtlsRole="offer"===r.type?"active":"passive"),o._remoteDescription={type:r.type,sdp:r.sdp},"offer"===r.type?o._updateSignalingState("have-remote-offer"):o._updateSignalingState("stable"),Object.keys(a).forEach((function(t){var i=a[t];if(i.getTracks().length){if(-1===o.remoteStreams.indexOf(i)){o.remoteStreams.push(i);var r=new Event("addstream");r.stream=i,e.setTimeout((function(){o._dispatchEvent("addstream",r)}))}s.forEach((function(e){var t=e[0],r=e[1];i.id===e[2].id&&n(o,t,r,[i])}))}})),s.forEach((function(e){e[2]||n(o,e[0],e[1],[])})),e.setTimeout((function(){o&&o.transceivers&&o.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},r.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},r.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},r.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},r.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var i=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",i)}},r.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var i=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",i)}},r.prototype.createOffer=function(){var i=this;if(i._isClosed)return Promise.reject(un("InvalidStateError","Can not call createOffer after close"));var n=i.transceivers.filter((function(e){return"audio"===e.kind})).length,r=i.transceivers.filter((function(e){return"video"===e.kind})).length,o=arguments[0];if(o){if(o.mandatory||o.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==o.offerToReceiveAudio&&(n=!0===o.offerToReceiveAudio?1:!1===o.offerToReceiveAudio?0:o.offerToReceiveAudio),void 0!==o.offerToReceiveVideo&&(r=!0===o.offerToReceiveVideo?1:!1===o.offerToReceiveVideo?0:o.offerToReceiveVideo)}for(i.transceivers.forEach((function(e){"audio"===e.kind?--n<0&&(e.wantReceive=!1):"video"===e.kind&&--r<0&&(e.wantReceive=!1)}));n>0||r>0;)n>0&&(i._createTransceiver("audio"),n--),r>0&&(i._createTransceiver("video"),r--);var a=an.writeSessionBoilerplate(i._sdpSessionId,i._sdpSessionVersion++);i.transceivers.forEach((function(n,r){var o=n.track,a=n.kind,s=n.mid||an.generateIdentifier();n.mid=s,n.iceGatherer||(n.iceGatherer=i._createIceGatherer(r,i.usingBundle));var c=e.RTCRtpSender.getCapabilities(a);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),n.remoteCapabilities&&n.remoteCapabilities.codecs&&n.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(n.remoteCapabilities&&n.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var l=n.sendEncodingParameters||[{ssrc:1001*(2*r+1)}];o&&t>=15019&&"video"===a&&!l[0].rtx&&(l[0].rtx={ssrc:l[0].ssrc+1}),n.wantReceive&&(n.rtpReceiver=new e.RTCRtpReceiver(n.dtlsTransport,a)),n.localCapabilities=c,n.sendEncodingParameters=l})),"max-compat"!==i._config.bundlePolicy&&(a+="a=group:BUNDLE "+i.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),a+="a=ice-options:trickle\r\n",i.transceivers.forEach((function(e,t){a+=sn(e,e.localCapabilities,"offer",e.stream,i._dtlsRole),a+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===i.iceGatheringState||0!==t&&i.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,a+="a="+an.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(a+="a=end-of-candidates\r\n"))}));var s=new e.RTCSessionDescription({type:"offer",sdp:a});return Promise.resolve(s)},r.prototype.createAnswer=function(){var i=this;if(i._isClosed)return Promise.reject(un("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==i.signalingState&&"have-local-pranswer"!==i.signalingState)return Promise.reject(un("InvalidStateError","Can not call createAnswer in signalingState "+i.signalingState));var n=an.writeSessionBoilerplate(i._sdpSessionId,i._sdpSessionVersion++);i.usingBundle&&(n+="a=group:BUNDLE "+i.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),n+="a=ice-options:trickle\r\n";var r=an.getMediaSections(i._remoteDescription.sdp).length;i.transceivers.forEach((function(e,o){if(!(o+1>r)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?n+="m=application 0 DTLS/SCTP 5000\r\n":n+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?n+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(n+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(n+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var a;e.stream&&("audio"===e.kind?a=e.stream.getAudioTracks()[0]:"video"===e.kind&&(a=e.stream.getVideoTracks()[0]),a&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1}));var s=cn(e.localCapabilities,e.remoteCapabilities);!s.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,n+=sn(e,s,"answer",e.stream,i._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(n+="a=rtcp-rsize\r\n")}}));var o=new e.RTCSessionDescription({type:"answer",sdp:n});return Promise.resolve(o)},r.prototype.addIceCandidate=function(e){var t,i=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(n,r){if(!i._remoteDescription)return r(un("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var o=e.sdpMLineIndex;if(e.sdpMid)for(var a=0;a<i.transceivers.length;a++)if(i.transceivers[a].mid===e.sdpMid){o=a;break}var s=i.transceivers[o];if(!s)return r(un("OperationError","Can not add ICE candidate"));if(s.rejected)return n();var c=Object.keys(e.candidate).length>0?an.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return n();if(c.component&&1!==c.component)return n();if((0===o||o>0&&s.iceTransport!==i.transceivers[0].iceTransport)&&!dn(s.iceTransport,c))return r(un("OperationError","Can not add ICE candidate"));var l=e.candidate.trim();0===l.indexOf("a=")&&(l=l.substr(2)),(t=an.getMediaSections(i._remoteDescription.sdp))[o]+="a="+(c.type?l:"end-of-candidates")+"\r\n",i._remoteDescription.sdp=an.getDescription(i._remoteDescription.sdp)+t.join("")}else for(var d=0;d<i.transceivers.length&&(i.transceivers[d].rejected||(i.transceivers[d].iceTransport.addRemoteCandidate({}),(t=an.getMediaSections(i._remoteDescription.sdp))[d]+="a=end-of-candidates\r\n",i._remoteDescription.sdp=an.getDescription(i._remoteDescription.sdp)+t.join(""),!i.usingBundle));d++);n()}))},r.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var i=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?i=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(i=e.rtpReceiver)})),!i)throw un("InvalidAccessError","Invalid selector.");return i.getStats()}var n=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&n.push(e[t].getStats())}))})),Promise.all(n).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))},["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var i=e[t];if(i&&i.prototype&&i.prototype.getStats){var n=i.prototype.getStats;i.prototype.getStats=function(){return n.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(i){var n;e[i].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(n=e[i]).type]||n.type,t.set(i,e[i])})),t}))}}}));var o=["createOffer","createAnswer"];return o.forEach((function(e){var t=r.prototype[e];r.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(o=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=r.prototype[e];r.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=r.prototype[e];r.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),r};function pn(e){const t=e&&e.navigator,i=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return i(e).catch((e=>Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e))))}}function fn(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function mn(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const i=new Event("enabled");i.enabled=e,this.dispatchEvent(i)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const i=hn(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let i=!1;return(e=JSON.parse(JSON.stringify(e))).filter((e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&Wi("RTCIceServer.url","RTCIceServer.urls");const n="string"==typeof t;return n&&(t=[t]),t=t.filter((e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!i?(i=!0,!0):t&&!i})),delete e.url,e.urls=n?t[0]:t,!!t.length}}))}(e.iceServers),ji("ICE servers after filtering:",e.iceServers)),new i(e)},e.RTCPeerConnection.prototype=i.prototype}function gn(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var vn=Object.freeze({__proto__:null,shimPeerConnection:mn,shimReplaceTrack:gn,shimGetUserMedia:pn,shimGetDisplayMedia:fn});function _n(e,t){const i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){Wi("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){const e=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(i){return"object"==typeof i&&"object"==typeof i.audio&&(i=JSON.parse(JSON.stringify(i)),e(i.audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(i=JSON.parse(JSON.stringify(i)),e(i,"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function Sn(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function yn(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,o]=arguments;return n.apply(this,[e||null]).then((e=>{if(t.version<53&&!r)try{e.forEach((e=>{e.type=i[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,n)=>{e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))}))}return e})).then(r,o)}}function bn(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function kn(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Bi(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Tn(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Wi("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Cn(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function wn(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],i=e&&"sendEncodings"in e;i&&e.sendEncodings.forEach((e=>{if("rid"in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const n=t.apply(this,arguments);if(i){const{sender:t}=n,i=t.getParameters();(!("encodings"in i)||1===i.encodings.length&&0===Object.keys(i.encodings[0]).length)&&(i.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(i).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return n})}function In(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function En(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Rn(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var Mn=Object.freeze({__proto__:null,shimOnTrack:Sn,shimPeerConnection:yn,shimSenderGetStats:bn,shimReceiverGetStats:kn,shimRemoveStream:Tn,shimRTCDataChannel:Cn,shimAddTransceiver:wn,shimGetParameters:In,shimCreateOffer:En,shimCreateAnswer:Rn,shimGetUserMedia:_n,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(i){if(!i||!i.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===i.video?i.video={mediaSource:t}:i.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(i)})}});function Pn(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((i=>t.call(this,i,e))),e.getVideoTracks().forEach((i=>t.call(this,i,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...i){return i&&i.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const i=e.getTracks();this.getSenders().forEach((e=>{i.includes(e.track)&&this.removeTrack(e)}))})}}function An(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const i=new Event("addstream");i.stream=t,e.dispatchEvent(i)}))}),t.apply(e,arguments)}}}function Dn(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,r=t.setLocalDescription,o=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],r=i.apply(this,[n]);return t?(r.then(e,t),Promise.resolve()):r},t.createAnswer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],r=n.apply(this,[i]);return t?(r.then(e,t),Promise.resolve()):r};let s=function(e,t,i){const n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=s,s=function(e,t,i){const n=o.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.setRemoteDescription=s,s=function(e,t,i){const n=a.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=s}function On(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(xn(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}.bind(t))}function xn(e){return e&&void 0!==e.video?Object.assign({},e,{video:Gi(e.video)}):e}function Ln(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){const t=[];for(let i=0;i<e.iceServers.length;i++){let n=e.iceServers[i];!n.hasOwnProperty("urls")&&n.hasOwnProperty("url")?(Wi("RTCIceServer.url","RTCIceServer.urls"),n=JSON.parse(JSON.stringify(n)),n.urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[i])}e.iceServers=t}return new t(e,i)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Nn(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function $n(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const i=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==e.offerToReceiveVideo||i||this.addTransceiver("video")}return t.apply(this,arguments)}}function Vn(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Bn=Object.freeze({__proto__:null,shimLocalStreamsAPI:Pn,shimRemoteStreamsAPI:An,shimCallbacksAPI:Dn,shimGetUserMedia:On,shimConstraints:xn,shimRTCIceServerUrls:Ln,shimTrackEventTransceiver:Nn,shimCreateOfferLegacy:$n,shimAudioContext:Vn});function Fn(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){const i=new t(e),n=an.parseCandidate(e.candidate),r=Object.assign(i,n);return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Bi(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Un(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const i=function(e){if(!e||!e.sdp)return!1;const t=an.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=an.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},n=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const i=parseInt(t[1],10);return i!=i?-1:i},r=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),i},o=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const r=an.matchPrefix(e.sdp,"a=max-message-size:");return r.length>0?n=parseInt(r[0].substr(19),10):"firefox"===t.browser&&-1!==i&&(n=2147483637),n},a=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(i(arguments[0])){const e=n(arguments[0]),t=r(e),i=o(arguments[0],e);let a;a=0===t&&0===i?Number.POSITIVE_INFINITY:0===t||0===i?Math.max(t,i):Math.min(t,i);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>a}),this._sctp=s}return a.apply(this,arguments)}}function jn(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const i=e.send;e.send=function(){const n=arguments[0],r=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&r>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}const i=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=i.apply(this,arguments);return t(e,this),e},Bi(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Wn(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const i=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}}))}function Hn(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const i=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:i}):t.sdp=i}return i.apply(this,arguments)}}function Gn(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.addIceCandidate;i&&0!==i.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var zn=Object.freeze({__proto__:null,shimRTCIceCandidate:Fn,shimMaxMessageSize:Un,shimSendThrowTypeError:jn,shimConnectionState:Wn,removeExtmapAllowMixed:Hn,shimAddIceCandidateNullOrEmpty:Gn});!function({window:e},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const i=ji,n=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:i}=e;if(i.mozGetUserMedia)t.browser="firefox",t.version=Vi(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=Vi(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(i.mediaDevices&&i.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=Vi(i.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!i.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=Vi(i.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),r={browserDetails:n,commonShim:zn,extractVersion:Vi,disableLog:Fi,disableWarnings:Ui};switch(n.browser){case"chrome":if(!on||!nn||!t.shimChrome)return i("Chrome shim is not included in this adapter release."),r;if(null===n.version)return i("Chrome shim can not determine version, not shimming."),r;i("adapter.js shimming chrome."),r.browserShim=on,Gn(e,n),Ki(e,n),qi(e),nn(e,n),Zi(e),tn(e,n),Qi(e),Xi(e),Yi(e),rn(e,n),Fn(e),Wn(e),Un(e,n),jn(e),Hn(e,n);break;case"firefox":if(!Mn||!yn||!t.shimFirefox)return i("Firefox shim is not included in this adapter release."),r;i("adapter.js shimming firefox."),r.browserShim=Mn,Gn(e,n),_n(e,n),yn(e,n),Sn(e),Tn(e),bn(e),kn(e),Cn(e),wn(e),In(e),En(e),Rn(e),Fn(e),Wn(e),Un(e,n),jn(e);break;case"edge":if(!vn||!mn||!t.shimEdge)return i("MS edge shim is not included in this adapter release."),r;i("adapter.js shimming edge."),r.browserShim=vn,pn(e),fn(e),mn(e,n),gn(e),Un(e,n),jn(e);break;case"safari":if(!Bn||!t.shimSafari)return i("Safari shim is not included in this adapter release."),r;i("adapter.js shimming safari."),r.browserShim=Bn,Gn(e,n),Ln(e),$n(e),Dn(e),Pn(e),An(e),Nn(e),On(e),Vn(e),Fn(e),Un(e,n),jn(e),Hn(e,n);break;default:i("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window});var Jn=Function.prototype,Kn=Jn.apply,qn=Jn.call,Zn="object"==typeof Reflect&&Reflect.apply||(O?qn.bind(Kn):function(){return qn.apply(Kn,arguments)}),Qn=H([].slice),Xn=P.TypeError,Yn=function(e,t){if(e<t)throw Xn("Not enough arguments");return e},er=/MSIE .\./.test(oe),tr=P.Function,ir=function(e){return er?function(t,i){var n=Yn(arguments.length,1)>2,r=ee(t)?t:tr(t),o=n?Qn(arguments,2):void 0;return e(n?function(){Zn(r,this,o)}:r,i)}:e},nr={setTimeout:ir(P.setTimeout),setInterval:ir(P.setInterval)},rr=nr.setInterval;ii({global:!0,bind:!0,forced:P.setInterval!==rr},{setInterval:rr});var or=nr.setTimeout;ii({global:!0,bind:!0,forced:P.setTimeout!==or},{setTimeout:or});var ar,sr=Object.keys||function(e){return Ft(e,Ut)},cr={f:D&&!Ke?Object.defineProperties:function(e,t){Qe(e);for(var i,n=Y(t),r=sr(t),o=r.length,a=0;o>a;)tt.f(e,i=r[a++],n[i]);return e}},lr=ne("document","documentElement"),dr=mt("IE_PROTO"),ur=function(){},hr=function(e){return"<script>"+e+"<\/script>"},pr=function(e){e.write(hr("")),e.close();var t=e.parentWindow.Object;return e=null,t},fr=function(){try{ar=new ActiveXObject("htmlfile")}catch(e){}var e,t;fr="undefined"!=typeof document?document.domain&&ar?pr(ar):((t=He("iframe")).style.display="none",lr.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(hr("document.F=Object")),e.close(),e.F):pr(ar);for(var i=Ut.length;i--;)delete fr.prototype[Ut[i]];return fr()};gt[dr]=!0;var mr=Object.create||function(e,t){var i;return null!==e?(ur.prototype=Qe(e),i=new ur,ur.prototype=null,i[dr]=e):i=fr(),void 0===t?i:cr.f(i,t)},gr=$e("unscopables"),vr=Array.prototype;null==vr[gr]&&tt.f(vr,gr,{configurable:!0,value:mr(null)});var _r,Sr,yr,br=function(e){vr[gr][e]=!0},kr={},Tr=!A((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Cr=mt("IE_PROTO"),wr=P.Object,Ir=wr.prototype,Er=Tr?wr.getPrototypeOf:function(e){var t=Ie(e);if(Re(t,Cr))return t[Cr];var i=t.constructor;return ee(i)&&t instanceof i?i.prototype:t instanceof wr?Ir:null},Rr=$e("iterator"),Mr=!1;[].keys&&("next"in(yr=[].keys())?(Sr=Er(Er(yr)))!==Object.prototype&&(_r=Sr):Mr=!0),(null==_r||A((function(){var e={};return _r[Rr].call(e)!==e})))&&(_r={}),ee(_r[Rr])||It(_r,Rr,(function(){return this}));var Pr={IteratorPrototype:_r,BUGGY_SAFARI_ITERATORS:Mr},Ar=tt.f,Dr=$e("toStringTag"),Or=function(e,t,i){e&&!i&&(e=e.prototype),e&&!Re(e,Dr)&&Ar(e,Dr,{configurable:!0,value:t})},xr=Pr.IteratorPrototype,Lr=function(){return this},Nr=function(e,t,i,n){var r=t+" Iterator";return e.prototype=mr(xr,{next:B(+!n,i)}),Or(e,r,!1),kr[r]=Lr,e},$r=P.String,Vr=P.TypeError,Br=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,i={};try{(e=H(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(i,[]),t=i instanceof Array}catch(e){}return function(i,n){return Qe(i),function(e){if("object"==typeof e||ee(e))return e;throw Vr("Can't set "+$r(e)+" as a prototype")}(n),t?e(i,n):i.__proto__=n,i}}():void 0),Fr=at.PROPER,Ur=at.CONFIGURABLE,jr=Pr.IteratorPrototype,Wr=Pr.BUGGY_SAFARI_ITERATORS,Hr=$e("iterator"),Gr=function(){return this},zr=function(e,t,i,n,r,o,a){Nr(i,t,n);var s,c,l,d=function(e){if(e===r&&m)return m;if(!Wr&&e in p)return p[e];switch(e){case"keys":case"values":case"entries":return function(){return new i(this,e)}}return function(){return new i(this)}},u=t+" Iterator",h=!1,p=e.prototype,f=p[Hr]||p["@@iterator"]||r&&p[r],m=!Wr&&f||d(r),g="Array"==t&&p.entries||f;if(g&&(s=Er(g.call(new e)))!==Object.prototype&&s.next&&(Er(s)!==jr&&(Br?Br(s,jr):ee(s[Hr])||It(s,Hr,Gr)),Or(s,u,!0)),Fr&&"values"==r&&f&&"values"!==f.name&&(Ur?it(p,"name","values"):(h=!0,m=function(){return L(f,this)})),r)if(c={values:d("values"),keys:o?m:d("keys"),entries:d("entries")},a)for(l in c)(Wr||h||!(l in p))&&It(p,l,c[l]);else ii({target:t,proto:!0,forced:Wr||h},c);return p[Hr]!==m&&It(p,Hr,m,{name:r}),kr[t]=m,c},Jr=tt.f,Kr=Ct.set,qr=Ct.getterFor("Array Iterator"),Zr=zr(Array,"Array",(function(e,t){Kr(this,{type:"Array Iterator",target:Y(e),index:0,kind:t})}),(function(){var e=qr(this),t=e.target,i=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==i?{value:n,done:!1}:"values"==i?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values"),Qr=kr.Arguments=kr.Array;if(br("keys"),br("values"),br("entries"),D&&"values"!==Qr.name)try{Jr(Qr,"name",{value:"values"})}catch(e){}var Xr=function(e,t,i){var n=Ue(t);n in e?tt.f(e,n,B(0,i)):e[n]=i},Yr=P.Array,eo=Math.max,to=function(e,t,i){for(var n=Lt(e),r=Dt(t,n),o=Dt(void 0===i?n:i,n),a=Yr(eo(o-r,0)),s=0;r<o;r++,s++)Xr(a,s,e[r]);return a.length=s,a},io=Wt.f,no="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],ro={f:function(e){return no&&"Window"==J(e)?function(e){try{return io(e)}catch(e){return to(no)}}(e):io(Y(e))}},oo=A((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),ao=Object.isExtensible,so=A((function(){}))||oo?function(e){return!!te(e)&&(!oo||"ArrayBuffer"!=J(e))&&(!ao||ao(e))}:ao,co=!A((function(){return Object.isExtensible(Object.preventExtensions({}))})),lo=I((function(e){var t=tt.f,i=!1,n=De("meta"),r=0,o=function(e){t(e,n,{value:{objectID:"O"+r++,weakData:{}}})},a=e.exports={enable:function(){a.enable=function(){},i=!0;var e=Wt.f,t=H([].splice),r={};r[n]=1,e(r).length&&(Wt.f=function(i){for(var r=e(i),o=0,a=r.length;o<a;o++)if(r[o]===n){t(r,o,1);break}return r},ii({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:ro.f}))},fastKey:function(e,t){if(!te(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!Re(e,n)){if(!so(e))return"F";if(!t)return"E";o(e)}return e[n].objectID},getWeakData:function(e,t){if(!Re(e,n)){if(!so(e))return!0;if(!t)return!1;o(e)}return e[n].weakData},onFreeze:function(e){return co&&i&&so(e)&&!Re(e,n)&&o(e),e}};gt[n]=!0})),uo=$e("iterator"),ho=Array.prototype,po=function(e){return void 0!==e&&(kr.Array===e||ho[uo]===e)},fo=$e("iterator"),mo=function(e){if(null!=e)return Se(e,fo)||Se(e,"@@iterator")||kr[ui(e)]},go=P.TypeError,vo=function(e,t){var i=arguments.length<2?mo(e):t;if(_e(i))return Qe(L(i,e));throw go(ge(e)+" is not iterable")},_o=function(e,t,i){var n,r;Qe(e);try{if(!(n=Se(e,"return"))){if("throw"===t)throw i;return i}n=L(n,e)}catch(e){r=!0,n=e}if("throw"===t)throw i;if(r)throw n;return Qe(n),i},So=P.TypeError,yo=function(e,t){this.stopped=e,this.result=t},bo=yo.prototype,ko=function(e,t,i){var n,r,o,a,s,c,l,d=i&&i.that,u=!(!i||!i.AS_ENTRIES),h=!(!i||!i.IS_ITERATOR),p=!(!i||!i.INTERRUPTED),f=ri(t,d),m=function(e){return n&&_o(n,"normal",e),new yo(!0,e)},g=function(e){return u?(Qe(e),p?f(e[0],e[1],m):f(e[0],e[1])):p?f(e,m):f(e)};if(h)n=e;else{if(!(r=mo(e)))throw So(ge(e)+" is not iterable");if(po(r)){for(o=0,a=Lt(e);a>o;o++)if((s=g(e[o]))&&re(bo,s))return s;return new yo(!1)}n=vo(e,r)}for(c=n.next;!(l=L(c,n)).done;){try{s=g(l.value)}catch(e){_o(n,"throw",e)}if("object"==typeof s&&s&&re(bo,s))return s}return new yo(!1)},To=P.TypeError,Co=function(e,t){if(re(t,e))return e;throw To("Incorrect invocation")},wo=$e("iterator"),Io=!1;try{var Eo=0,Ro={next:function(){return{done:!!Eo++}},return:function(){Io=!0}};Ro[wo]=function(){return this},Array.from(Ro,(function(){throw 2}))}catch(e){}var Mo=function(e,t){if(!t&&!Io)return!1;var i=!1;try{var n={};n[wo]=function(){return{next:function(){return{done:i=!0}}}},e(n)}catch(e){}return i},Po=function(e,t,i){var n,r;return Br&&ee(n=t.constructor)&&n!==i&&te(r=n.prototype)&&r!==i.prototype&&Br(e,r),e},Ao=function(e,t,i){var n=-1!==e.indexOf("Map"),r=-1!==e.indexOf("Weak"),o=n?"set":"add",a=P[e],s=a&&a.prototype,c=a,l={},d=function(e){var t=H(s[e]);It(s,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(r&&!te(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return r&&!te(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(r&&!te(e))&&t(this,0===e?0:e)}:function(e,i){return t(this,0===e?0:e,i),this})};if(ei(e,!ee(a)||!(r||s.forEach&&!A((function(){(new a).entries().next()})))))c=i.getConstructor(t,e,n,o),lo.enable();else if(ei(e,!0)){var u=new c,h=u[o](r?{}:-0,1)!=u,p=A((function(){u.has(1)})),f=Mo((function(e){new a(e)})),m=!r&&A((function(){for(var e=new a,t=5;t--;)e[o](t,t);return!e.has(-0)}));f||((c=t((function(e,t){Co(e,s);var i=Po(new a,e,c);return null!=t&&ko(t,i[o],{that:i,AS_ENTRIES:n}),i}))).prototype=s,s.constructor=c),(p||m)&&(d("delete"),d("has"),n&&d("get")),(m||h)&&d(o),r&&s.clear&&delete s.clear}return l[e]=c,ii({global:!0,constructor:!0,forced:c!=a},l),Or(c,e),r||i.setStrong(c,e,n),c},Do=function(e,t,i){for(var n in t)It(e,n,t[n],i);return e},Oo=$e("species"),xo=function(e){var t=ne(e),i=tt.f;D&&t&&!t[Oo]&&i(t,Oo,{configurable:!0,get:function(){return this}})},Lo=tt.f,No=lo.fastKey,$o=Ct.set,Vo=Ct.getterFor,Bo={getConstructor:function(e,t,i,n){var r=e((function(e,r){Co(e,o),$o(e,{type:t,index:mr(null),first:void 0,last:void 0,size:0}),D||(e.size=0),null!=r&&ko(r,e[n],{that:e,AS_ENTRIES:i})})),o=r.prototype,a=Vo(t),s=function(e,t,i){var n,r,o=a(e),s=c(e,t);return s?s.value=i:(o.last=s={index:r=No(t,!0),key:t,value:i,previous:n=o.last,next:void 0,removed:!1},o.first||(o.first=s),n&&(n.next=s),D?o.size++:e.size++,"F"!==r&&(o.index[r]=s)),e},c=function(e,t){var i,n=a(e),r=No(t);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key==t)return i};return Do(o,{clear:function(){for(var e=a(this),t=e.index,i=e.first;i;)i.removed=!0,i.previous&&(i.previous=i.previous.next=void 0),delete t[i.index],i=i.next;e.first=e.last=void 0,D?e.size=0:this.size=0},delete:function(e){var t=a(this),i=c(this,e);if(i){var n=i.next,r=i.previous;delete t.index[i.index],i.removed=!0,r&&(r.next=n),n&&(n.previous=r),t.first==i&&(t.first=n),t.last==i&&(t.last=r),D?t.size--:this.size--}return!!i},forEach:function(e){for(var t,i=a(this),n=ri(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:i.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!c(this,e)}}),Do(o,i?{get:function(e){var t=c(this,e);return t&&t.value},set:function(e,t){return s(this,0===e?0:e,t)}}:{add:function(e){return s(this,e=0===e?0:e,e)}}),D&&Lo(o,"size",{get:function(){return a(this).size}}),r},setStrong:function(e,t,i){var n=t+" Iterator",r=Vo(t),o=Vo(n);zr(e,t,(function(e,t){$o(this,{type:n,target:e,state:r(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,i=e.last;i&&i.removed;)i=i.previous;return e.target&&(e.last=i=i?i.next:e.state.first)?"keys"==t?{value:i.key,done:!1}:"values"==t?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),i?"entries":"values",!i,!0),xo(t)}};Ao("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bo);var Fo=P.String,Uo=function(e){if("Symbol"===ui(e))throw TypeError("Cannot convert a Symbol value to a string");return Fo(e)},jo=H("".charAt),Wo=H("".charCodeAt),Ho=H("".slice),Go=function(e){return function(t,i){var n,r,o=Uo(X(t)),a=Mt(i),s=o.length;return a<0||a>=s?e?"":void 0:(n=Wo(o,a))<55296||n>56319||a+1===s||(r=Wo(o,a+1))<56320||r>57343?e?jo(o,a):n:e?Ho(o,a,a+2):r-56320+(n-55296<<10)+65536}},zo={codeAt:Go(!1),charAt:Go(!0)},Jo=zo.charAt,Ko=Ct.set,qo=Ct.getterFor("String Iterator");zr(String,"String",(function(e){Ko(this,{type:"String Iterator",string:Uo(e),index:0})}),(function(){var e,t=qo(this),i=t.string,n=t.index;return n>=i.length?{value:void 0,done:!0}:(e=Jo(i,n),t.index+=e.length,{value:e,done:!1})}));var Zo={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Qo=He("span").classList,Xo=Qo&&Qo.constructor&&Qo.constructor.prototype,Yo=Xo===Object.prototype?void 0:Xo,ea=$e("iterator"),ta=$e("toStringTag"),ia=Zr.values,na=function(e,t){if(e){if(e[ea]!==ia)try{it(e,ea,ia)}catch(t){e[ea]=ia}if(e[ta]||it(e,ta,t),Zo[t])for(var i in Zr)if(e[i]!==Zr[i])try{it(e,i,Zr[i])}catch(t){e[i]=Zr[i]}}};for(var ra in Zo)na(P[ra]&&P[ra].prototype,ra);na(Yo,"DOMTokenList");var oa=Ri("splice"),aa=P.TypeError,sa=Math.max,ca=Math.min;ii({target:"Array",proto:!0,forced:!oa},{splice:function(e,t){var i,n,r,o,a,s,c=Ie(this),l=Lt(c),d=Dt(e,l),u=arguments.length;if(0===u?i=n=0:1===u?(i=0,n=l-d):(i=u-2,n=ca(sa(Mt(t),0),l-d)),l+i-n>9007199254740991)throw aa("Maximum allowed length exceeded");for(r=Ti(c,n),o=0;o<n;o++)(a=d+o)in c&&Xr(r,o,c[a]);if(r.length=n,i<n){for(o=d;o<l-n;o++)s=o+i,(a=o+n)in c?c[s]=c[a]:delete c[s];for(o=l;o>l-n+i;o--)delete c[o-1]}else if(i>n)for(o=l-n;o>d;o--)s=o+i-1,(a=o+n-1)in c?c[s]=c[a]:delete c[s];for(o=0;o<i;o++)c[o+d]=arguments[o+2];return c.length=l-n+i,r}});var la=function(e,t){var i=[][e];return!!i&&A((function(){i.call(null,t||function(){return 1},1)}))},da=Ii.forEach,ua=la("forEach")?[].forEach:function(e){return da(this,e,arguments.length>1?arguments[1]:void 0)};ii({target:"Array",proto:!0,forced:[].forEach!=ua},{forEach:ua});var ha=function(e){if(e&&e.forEach!==ua)try{it(e,"forEach",ua)}catch(t){e.forEach=ua}};for(var pa in Zo)Zo[pa]&&ha(P[pa]&&P[pa].prototype);ha(Yo);var fa=H([].join),ma=Z!=Object,ga=la("join",",");ii({target:"Array",proto:!0,forced:ma||!ga},{join:function(e){return fa(Y(this),void 0===e?",":e)}});var va=$e("isConcatSpreadable"),_a=P.TypeError,Sa=de>=51||!A((function(){var e=[];return e[va]=!1,e.concat()[0]!==e})),ya=Ri("concat"),ba=function(e){if(!te(e))return!1;var t=e[va];return void 0!==t?!!t:oi(e)};ii({target:"Array",proto:!0,arity:1,forced:!Sa||!ya},{concat:function(e){var t,i,n,r,o,a=Ie(this),s=Ti(a,0),c=0;for(t=-1,n=arguments.length;t<n;t++)if(ba(o=-1===t?a:arguments[t])){if(c+(r=Lt(o))>9007199254740991)throw _a("Maximum allowed index exceeded");for(i=0;i<r;i++,c++)i in o&&Xr(s,c,o[i])}else{if(c>=9007199254740991)throw _a("Maximum allowed index exceeded");Xr(s,c++,o)}return s.length=c,s}});var ka=Date.prototype,Ta=H(ka.toString),Ca=H(ka.getTime);"Invalid Date"!=String(new Date(NaN))&&It(ka,"toString",(function(){var e=Ca(this);return e==e?Ta(this):"Invalid Date"}));var wa=function(){var e=Qe(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},Ia=P.RegExp,Ea=A((function(){var e=Ia("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),Ra=Ea||A((function(){return!Ia("a","y").sticky})),Ma={BROKEN_CARET:Ea||A((function(){var e=Ia("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),MISSED_STICKY:Ra,UNSUPPORTED_Y:Ea},Pa=P.RegExp,Aa=A((function(){var e=Pa(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),Da=P.RegExp,Oa=A((function(){var e=Da("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),xa=Ct.get,La=Ce("native-string-replace",String.prototype.replace),Na=RegExp.prototype.exec,$a=Na,Va=H("".charAt),Ba=H("".indexOf),Fa=H("".replace),Ua=H("".slice),ja=function(){var e=/a/,t=/b*/g;return L(Na,e,"a"),L(Na,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),Wa=Ma.BROKEN_CARET,Ha=void 0!==/()??/.exec("")[1];(ja||Ha||Wa||Aa||Oa)&&($a=function(e){var t,i,n,r,o,a,s,c=this,l=xa(c),d=Uo(e),u=l.raw;if(u)return u.lastIndex=c.lastIndex,t=L($a,u,d),c.lastIndex=u.lastIndex,t;var h=l.groups,p=Wa&&c.sticky,f=L(wa,c),m=c.source,g=0,v=d;if(p&&(f=Fa(f,"y",""),-1===Ba(f,"g")&&(f+="g"),v=Ua(d,c.lastIndex),c.lastIndex>0&&(!c.multiline||c.multiline&&"\n"!==Va(d,c.lastIndex-1))&&(m="(?: "+m+")",v=" "+v,g++),i=new RegExp("^(?:"+m+")",f)),Ha&&(i=new RegExp("^"+m+"$(?!\\s)",f)),ja&&(n=c.lastIndex),r=L(Na,p?i:c,v),p?r?(r.input=Ua(r.input,g),r[0]=Ua(r[0],g),r.index=c.lastIndex,c.lastIndex+=r[0].length):c.lastIndex=0:ja&&r&&(c.lastIndex=c.global?r.index+r[0].length:n),Ha&&r&&r.length>1&&L(La,r[0],i,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)})),r&&h)for(r.groups=a=mr(null),o=0;o<h.length;o++)a[(s=h[o])[0]]=r[s[1]];return r});var Ga=$a;ii({target:"RegExp",proto:!0,forced:/./.exec!==Ga},{exec:Ga});var za=$e("species"),Ja=RegExp.prototype,Ka=function(e,t,i,n){var r=$e(e),o=!A((function(){var t={};return t[r]=function(){return 7},7!=""[e](t)})),a=o&&!A((function(){var t=!1,i=/a/;return"split"===e&&((i={}).constructor={},i.constructor[za]=function(){return i},i.flags="",i[r]=/./[r]),i.exec=function(){return t=!0,null},i[r](""),!t}));if(!o||!a||i){var s=H(/./[r]),c=t(r,""[e],(function(e,t,i,n,r){var a=H(e),c=t.exec;return c===Ga||c===Ja.exec?o&&!r?{done:!0,value:s(t,i,n)}:{done:!0,value:a(i,t,n)}:{done:!1}}));It(String.prototype,e,c[0]),It(Ja,r,c[1])}n&&it(Ja[r],"sham",!0)},qa=zo.charAt,Za=function(e,t,i){return t+(i?qa(e,t).length:1)},Qa=Math.floor,Xa=H("".charAt),Ya=H("".replace),es=H("".slice),ts=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,is=/\$([$&'`]|\d{1,2})/g,ns=function(e,t,i,n,r,o){var a=i+e.length,s=n.length,c=is;return void 0!==r&&(r=Ie(r),c=ts),Ya(o,c,(function(o,c){var l;switch(Xa(c,0)){case"$":return"$";case"&":return e;case"`":return es(t,0,i);case"'":return es(t,a);case"<":l=r[es(c,1,-1)];break;default:var d=+c;if(0===d)return o;if(d>s){var u=Qa(d/10);return 0===u?o:u<=s?void 0===n[u-1]?Xa(c,1):n[u-1]+Xa(c,1):o}l=n[d-1]}return void 0===l?"":l}))},rs=P.TypeError,os=function(e,t){var i=e.exec;if(ee(i)){var n=L(i,e,t);return null!==n&&Qe(n),n}if("RegExp"===J(e))return L(Ga,e,t);throw rs("RegExp#exec called on incompatible receiver")},as=$e("replace"),ss=Math.max,cs=Math.min,ls=H([].concat),ds=H([].push),us=H("".indexOf),hs=H("".slice),ps="$0"==="a".replace(/./,"$0"),fs=!!/./[as]&&""===/./[as]("a","$0");Ka("replace",(function(e,t,i){var n=fs?"$":"$0";return[function(e,i){var n=X(this),r=null==e?void 0:Se(e,as);return r?L(r,e,n,i):L(t,Uo(n),e,i)},function(e,r){var o=Qe(this),a=Uo(e);if("string"==typeof r&&-1===us(r,n)&&-1===us(r,"$<")){var s=i(t,o,a,r);if(s.done)return s.value}var c=ee(r);c||(r=Uo(r));var l=o.global;if(l){var d=o.unicode;o.lastIndex=0}for(var u=[];;){var h=os(o,a);if(null===h)break;if(ds(u,h),!l)break;""===Uo(h[0])&&(o.lastIndex=Za(a,xt(o.lastIndex),d))}for(var p,f="",m=0,g=0;g<u.length;g++){for(var v=Uo((h=u[g])[0]),_=ss(cs(Mt(h.index),a.length),0),S=[],y=1;y<h.length;y++)ds(S,void 0===(p=h[y])?p:String(p));var b=h.groups;if(c){var k=ls([v],S,_,a);void 0!==b&&ds(k,b);var T=Uo(Zn(r,void 0,k))}else T=ns(v,a,_,S,b,r);_>=m&&(f+=hs(a,m,_)+T,m=_+v.length)}return f+hs(a,m)}]}),!!A((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}))||!ps||fs);var ms=$e("iterator"),gs=!A((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,i="";return e.pathname="c%20d",t.forEach((function(e,n){t.delete("b"),i+=n+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[ms]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==i||"x"!==new URL("http://x",void 0).host})),vs=Math.floor,_s=function(e,t){var i=e.length,n=vs(i/2);return i<8?Ss(e,t):ys(e,_s(to(e,0,n),t),_s(to(e,n),t),t)},Ss=function(e,t){for(var i,n,r=e.length,o=1;o<r;){for(n=o,i=e[o];n&&t(e[n-1],i)>0;)e[n]=e[--n];n!==o++&&(e[n]=i)}return e},ys=function(e,t,i,n){for(var r=t.length,o=i.length,a=0,s=0;a<r||s<o;)e[a+s]=a<r&&s<o?n(t[a],i[s])<=0?t[a++]:i[s++]:a<r?t[a++]:i[s++];return e},bs=_s,ks=$e("iterator"),Ts=Ct.set,Cs=Ct.getterFor("URLSearchParams"),ws=Ct.getterFor("URLSearchParamsIterator"),Is=Object.getOwnPropertyDescriptor,Es=function(e){if(!D)return P[e];var t=Is(P,e);return t&&t.value},Rs=Es("fetch"),Ms=Es("Request"),Ps=Es("Headers"),As=Ms&&Ms.prototype,Ds=Ps&&Ps.prototype,Os=P.RegExp,xs=P.TypeError,Ls=P.decodeURIComponent,Ns=P.encodeURIComponent,$s=H("".charAt),Vs=H([].join),Bs=H([].push),Fs=H("".replace),Us=H([].shift),js=H([].splice),Ws=H("".split),Hs=H("".slice),Gs=/\+/g,zs=Array(4),Js=function(e){return zs[e-1]||(zs[e-1]=Os("((?:%[\\da-f]{2}){"+e+"})","gi"))},Ks=function(e){try{return Ls(e)}catch(t){return e}},qs=function(e){var t=Fs(e,Gs," "),i=4;try{return Ls(t)}catch(e){for(;i;)t=Fs(t,Js(i--),Ks);return t}},Zs=/[!'()~]|%20/g,Qs={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Xs=function(e){return Qs[e]},Ys=function(e){return Fs(Ns(e),Zs,Xs)},ec=Nr((function(e,t){Ts(this,{type:"URLSearchParamsIterator",iterator:vo(Cs(e).entries),kind:t})}),"Iterator",(function(){var e=ws(this),t=e.kind,i=e.iterator.next(),n=i.value;return i.done||(i.value="keys"===t?n.key:"values"===t?n.value:[n.key,n.value]),i}),!0),tc=function(e){this.entries=[],this.url=null,void 0!==e&&(te(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===$s(e,0)?Hs(e,1):e:Uo(e)))};tc.prototype={type:"URLSearchParams",bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,i,n,r,o,a,s,c=mo(e);if(c)for(i=(t=vo(e,c)).next;!(n=L(i,t)).done;){if(o=(r=vo(Qe(n.value))).next,(a=L(o,r)).done||(s=L(o,r)).done||!L(o,r).done)throw xs("Expected sequence with length 2");Bs(this.entries,{key:Uo(a.value),value:Uo(s.value)})}else for(var l in e)Re(e,l)&&Bs(this.entries,{key:l,value:Uo(e[l])})},parseQuery:function(e){if(e)for(var t,i,n=Ws(e,"&"),r=0;r<n.length;)(t=n[r++]).length&&(i=Ws(t,"="),Bs(this.entries,{key:qs(Us(i)),value:qs(Vs(i,"="))}))},serialize:function(){for(var e,t=this.entries,i=[],n=0;n<t.length;)e=t[n++],Bs(i,Ys(e.key)+"="+Ys(e.value));return Vs(i,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var ic=function(){Co(this,nc),Ts(this,new tc(arguments.length>0?arguments[0]:void 0))},nc=ic.prototype;if(Do(nc,{append:function(e,t){Yn(arguments.length,2);var i=Cs(this);Bs(i.entries,{key:Uo(e),value:Uo(t)}),i.updateURL()},delete:function(e){Yn(arguments.length,1);for(var t=Cs(this),i=t.entries,n=Uo(e),r=0;r<i.length;)i[r].key===n?js(i,r,1):r++;t.updateURL()},get:function(e){Yn(arguments.length,1);for(var t=Cs(this).entries,i=Uo(e),n=0;n<t.length;n++)if(t[n].key===i)return t[n].value;return null},getAll:function(e){Yn(arguments.length,1);for(var t=Cs(this).entries,i=Uo(e),n=[],r=0;r<t.length;r++)t[r].key===i&&Bs(n,t[r].value);return n},has:function(e){Yn(arguments.length,1);for(var t=Cs(this).entries,i=Uo(e),n=0;n<t.length;)if(t[n++].key===i)return!0;return!1},set:function(e,t){Yn(arguments.length,1);for(var i,n=Cs(this),r=n.entries,o=!1,a=Uo(e),s=Uo(t),c=0;c<r.length;c++)(i=r[c]).key===a&&(o?js(r,c--,1):(o=!0,i.value=s));o||Bs(r,{key:a,value:s}),n.updateURL()},sort:function(){var e=Cs(this);bs(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,i=Cs(this).entries,n=ri(e,arguments.length>1?arguments[1]:void 0),r=0;r<i.length;)n((t=i[r++]).value,t.key,this)},keys:function(){return new ec(this,"keys")},values:function(){return new ec(this,"values")},entries:function(){return new ec(this,"entries")}},{enumerable:!0}),It(nc,ks,nc.entries,{name:"entries"}),It(nc,"toString",(function(){return Cs(this).serialize()}),{enumerable:!0}),Or(ic,"URLSearchParams"),ii({global:!0,constructor:!0,forced:!gs},{URLSearchParams:ic}),!gs&&ee(Ps)){var rc=H(Ds.has),oc=H(Ds.set),ac=function(e){if(te(e)){var t,i=e.body;if("URLSearchParams"===ui(i))return t=e.headers?new Ps(e.headers):new Ps,rc(t,"content-type")||oc(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),mr(e,{body:B(0,Uo(i)),headers:B(0,t)})}return e};if(ee(Rs)&&ii({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return Rs(e,arguments.length>1?ac(arguments[1]):{})}}),ee(Ms)){var sc=function(e){return Co(this,As),new Ms(e,arguments.length>1?ac(arguments[1]):{})};As.constructor=sc,sc.prototype=As,ii({global:!0,constructor:!0,noTargetGet:!0,forced:!0},{Request:sc})}}var cc={URLSearchParams:ic,getState:Cs},lc=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Ka("search",(function(e,t,i){return[function(t){var i=X(this),n=null==t?void 0:Se(t,e);return n?L(n,t,i):new RegExp(t)[e](Uo(i))},function(e){var n=Qe(this),r=Uo(e),o=i(t,n,r);if(o.done)return o.value;var a=n.lastIndex;lc(a,0)||(n.lastIndex=0);var s=os(n,r);return lc(n.lastIndex,a)||(n.lastIndex=a),null===s?-1:s.index}]})),(new Date).getTime();var dc=0,uc=function(){return(new Date).getTime()+dc},hc=function(){var e=new Date;return e.setTime(uc()),e.toLocaleString()};Ka("match",(function(e,t,i){return[function(t){var i=X(this),n=null==t?void 0:Se(t,e);return n?L(n,t,i):new RegExp(t)[e](Uo(i))},function(e){var n=Qe(this),r=Uo(e),o=i(t,n,r);if(o.done)return o.value;if(!n.global)return os(n,r);var a=n.unicode;n.lastIndex=0;for(var s,c=[],l=0;null!==(s=os(n,r));){var d=Uo(s[0]);c[l]=d,""===d&&(n.lastIndex=Za(r,xt(n.lastIndex),a)),l++}return 0===l?null:c}]}));var pc=$e("match"),fc=function(e){var t;return te(e)&&(void 0!==(t=e[pc])?!!t:"RegExp"==J(e))},mc=RegExp.prototype,gc=function(e){var t=e.flags;return void 0!==t||"flags"in mc||Re(e,"flags")||!re(mc,e)?t:L(wa,e)},vc=tt.f,_c=function(e,t,i){i in e||vc(e,i,{configurable:!0,get:function(){return t[i]},set:function(e){t[i]=e}})},Sc=Wt.f,yc=Ct.enforce,bc=$e("match"),kc=P.RegExp,Tc=kc.prototype,Cc=P.SyntaxError,wc=H(Tc.exec),Ic=H("".charAt),Ec=H("".replace),Rc=H("".indexOf),Mc=H("".slice),Pc=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Ac=/a/g,Dc=/a/g,Oc=new kc(Ac)!==Ac,xc=Ma.MISSED_STICKY,Lc=Ma.UNSUPPORTED_Y,Nc=D&&(!Oc||xc||Aa||Oa||A((function(){return Dc[bc]=!1,kc(Ac)!=Ac||kc(Dc)==Dc||"/a/i"!=kc(Ac,"i")})));if(ei("RegExp",Nc)){for(var $c=function(e,t){var i,n,r,o,a,s,c=re(Tc,this),l=fc(e),d=void 0===t,u=[],h=e;if(!c&&l&&d&&e.constructor===$c)return e;if((l||re(Tc,e))&&(e=e.source,d&&(t=gc(h))),e=void 0===e?"":Uo(e),t=void 0===t?"":Uo(t),h=e,Aa&&"dotAll"in Ac&&(n=!!t&&Rc(t,"s")>-1)&&(t=Ec(t,/s/g,"")),i=t,xc&&"sticky"in Ac&&(r=!!t&&Rc(t,"y")>-1)&&Lc&&(t=Ec(t,/y/g,"")),Oa&&(e=(o=function(e){for(var t,i=e.length,n=0,r="",o=[],a={},s=!1,c=!1,l=0,d="";n<=i;n++){if("\\"===(t=Ic(e,n)))t+=Ic(e,++n);else if("]"===t)s=!1;else if(!s)switch(!0){case"["===t:s=!0;break;case"("===t:wc(Pc,Mc(e,n+1))&&(n+=2,c=!0),r+=t,l++;continue;case">"===t&&c:if(""===d||Re(a,d))throw new Cc("Invalid capture group name");a[d]=!0,o[o.length]=[d,l],c=!1,d="";continue}c?d+=t:r+=t}return[r,o]}(e))[0],u=o[1]),a=Po(kc(e,t),c?this:Tc,$c),(n||r||u.length)&&(s=yc(a),n&&(s.dotAll=!0,s.raw=$c(function(e){for(var t,i=e.length,n=0,r="",o=!1;n<=i;n++)"\\"!==(t=Ic(e,n))?o||"."!==t?("["===t?o=!0:"]"===t&&(o=!1),r+=t):r+="[\\s\\S]":r+=t+Ic(e,++n);return r}(e),i)),r&&(s.sticky=!0),u.length&&(s.groups=u)),e!==h)try{it(a,"source",""===h?"(?:)":h)}catch(e){}return a},Vc=Sc(kc),Bc=0;Vc.length>Bc;)_c($c,kc,Vc[Bc++]);Tc.constructor=$c,$c.prototype=Tc,It(P,"RegExp",$c,{constructor:!0})}xo("RegExp");var Fc=at.PROPER,Uc=RegExp.prototype.toString,jc=A((function(){return"/a/b"!=Uc.call({source:"a",flags:"b"})})),Wc=Fc&&"toString"!=Uc.name;(jc||Wc)&&It(RegExp.prototype,"toString",(function(){var e=Qe(this);return"/"+Uo(e.source)+"/"+Uo(gc(e))}),{unsafe:!0});var Hc=H(1..valueOf),Gc="\t\n\v\f\r                 \u2028\u2029\ufeff",zc=H("".replace),Jc="["+Gc+"]",Kc=RegExp("^"+Jc+Jc+"*"),qc=RegExp(Jc+Jc+"*$"),Zc=function(e){return function(t){var i=Uo(X(t));return 1&e&&(i=zc(i,Kc,"")),2&e&&(i=zc(i,qc,"")),i}},Qc={start:Zc(1),end:Zc(2),trim:Zc(3)},Xc=Wt.f,Yc=Je.f,el=tt.f,tl=Qc.trim,il=P.Number,nl=il.prototype,rl=P.TypeError,ol=H("".slice),al=H("".charCodeAt),sl=function(e){var t=Fe(e,"number");return"bigint"==typeof t?t:cl(t)},cl=function(e){var t,i,n,r,o,a,s,c,l=Fe(e,"number");if(fe(l))throw rl("Cannot convert a Symbol value to a number");if("string"==typeof l&&l.length>2)if(l=tl(l),43===(t=al(l,0))||45===t){if(88===(i=al(l,2))||120===i)return NaN}else if(48===t){switch(al(l,1)){case 66:case 98:n=2,r=49;break;case 79:case 111:n=8,r=55;break;default:return+l}for(a=(o=ol(l,2)).length,s=0;s<a;s++)if((c=al(o,s))<48||c>r)return NaN;return parseInt(o,n)}return+l};if(ei("Number",!il(" 0o1")||!il("0b1")||il("+0x1"))){for(var ll,dl=function(e){var t=arguments.length<1?0:il(sl(e)),i=this;return re(nl,i)&&A((function(){Hc(i)}))?Po(Object(t),i,dl):t},ul=D?Xc(il):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),hl=0;ul.length>hl;hl++)Re(il,ll=ul[hl])&&!Re(dl,ll)&&el(dl,ll,Yc(il,ll));dl.prototype=nl,nl.constructor=dl,It(P,"Number",dl,{constructor:!0})}var pl=$t.indexOf,fl=H([].indexOf),ml=!!fl&&1/fl([1],1,-0)<0,gl=la("indexOf");ii({target:"Array",proto:!0,forced:ml||!gl},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return ml?fl(this,e,t)||0:pl(this,e,t)}});var vl=A((function(){Er(1)}));ii({target:"Object",stat:!0,forced:vl,sham:!Tr},{getPrototypeOf:function(e){return Er(Ie(e))}});var _l=!A((function(){Reflect.apply((function(){}))}));ii({target:"Reflect",stat:!0,forced:_l},{apply:function(e,t,i){return Zn(_e(e),t,Qe(i))}});var Sl=at.EXISTS,yl=tt.f,bl=Function.prototype,kl=H(bl.toString),Tl=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Cl=H(Tl.exec);D&&!Sl&&yl(bl,"name",{configurable:!0,get:function(){try{return Cl(Tl,kl(this))[1]}catch(e){return""}}});var wl=P.Date,Il=H(wl.prototype.getTime);ii({target:"Date",stat:!0},{now:function(){return Il(new wl)}});var El=P.TypeError,Rl=$e("species"),Ml=function(e,t){var i,n=Qe(e).constructor;return void 0===n||null==(i=Qe(n)[Rl])?t:function(e){if(yi(e))return e;throw El(ge(e)+" is not a constructor")}(i)},Pl=Ma.UNSUPPORTED_Y,Al=Math.min,Dl=[].push,Ol=H(/./.exec),xl=H(Dl),Ll=H("".slice);Ka("split",(function(e,t,i){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,i){var n=Uo(X(this)),r=void 0===i?4294967295:i>>>0;if(0===r)return[];if(void 0===e)return[n];if(!fc(e))return L(t,n,e,r);for(var o,a,s,c=[],l=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,u=new RegExp(e.source,l+"g");(o=L(Ga,u,n))&&!((a=u.lastIndex)>d&&(xl(c,Ll(n,d,o.index)),o.length>1&&o.index<n.length&&Zn(Dl,c,to(o,1)),s=o[0].length,d=a,c.length>=r));)u.lastIndex===o.index&&u.lastIndex++;return d===n.length?!s&&Ol(u,"")||xl(c,""):xl(c,Ll(n,d)),c.length>r?to(c,0,r):c}:"0".split(void 0,0).length?function(e,i){return void 0===e&&0===i?[]:L(t,this,e,i)}:t,[function(t,i){var r=X(this),o=null==t?void 0:Se(t,e);return o?L(o,t,r,i):L(n,Uo(r),t,i)},function(e,r){var o=Qe(this),a=Uo(e),s=i(n,o,a,r,n!==t);if(s.done)return s.value;var c=Ml(o,RegExp),l=o.unicode,d=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Pl?"g":"y"),u=new c(Pl?"^(?:"+o.source+")":o,d),h=void 0===r?4294967295:r>>>0;if(0===h)return[];if(0===a.length)return null===os(u,a)?[a]:[];for(var p=0,f=0,m=[];f<a.length;){u.lastIndex=Pl?0:f;var g,v=os(u,Pl?Ll(a,f):a);if(null===v||(g=Al(xt(u.lastIndex+(Pl?f:0)),a.length))===p)f=Za(a,f,l);else{if(xl(m,Ll(a,p,f)),m.length===h)return m;for(var _=1;_<=v.length-1;_++)if(xl(m,v[_]),m.length===h)return m;f=p=g}}return xl(m,Ll(a,p)),m}]}),!!A((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var i="ab".split(e);return 2!==i.length||"a"!==i[0]||"b"!==i[1]})),Pl);var Nl,$l,Vl,Bl,Fl="process"==J(P.process),Ul=/(?:ipad|iphone|ipod).*applewebkit/i.test(oe),jl=P.setImmediate,Wl=P.clearImmediate,Hl=P.process,Gl=P.Dispatch,zl=P.Function,Jl=P.MessageChannel,Kl=P.String,ql=0,Zl={};try{Nl=P.location}catch(e){}var Ql=function(e){if(Re(Zl,e)){var t=Zl[e];delete Zl[e],t()}},Xl=function(e){return function(){Ql(e)}},Yl=function(e){Ql(e.data)},ed=function(e){P.postMessage(Kl(e),Nl.protocol+"//"+Nl.host)};jl&&Wl||(jl=function(e){Yn(arguments.length,1);var t=ee(e)?e:zl(e),i=Qn(arguments,1);return Zl[++ql]=function(){Zn(t,void 0,i)},$l(ql),ql},Wl=function(e){delete Zl[e]},Fl?$l=function(e){Hl.nextTick(Xl(e))}:Gl&&Gl.now?$l=function(e){Gl.now(Xl(e))}:Jl&&!Ul?(Bl=(Vl=new Jl).port2,Vl.port1.onmessage=Yl,$l=ri(Bl.postMessage,Bl)):P.addEventListener&&ee(P.postMessage)&&!P.importScripts&&Nl&&"file:"!==Nl.protocol&&!A(ed)?($l=ed,P.addEventListener("message",Yl,!1)):$l="onreadystatechange"in He("script")?function(e){lr.appendChild(He("script")).onreadystatechange=function(){lr.removeChild(this),Ql(e)}}:function(e){setTimeout(Xl(e),0)});var td,id,nd,rd,od,ad,sd,cd,ld={set:jl,clear:Wl},dd=/ipad|iphone|ipod/i.test(oe)&&void 0!==P.Pebble,ud=/web0s(?!.*chrome)/i.test(oe),hd=Je.f,pd=ld.set,fd=P.MutationObserver||P.WebKitMutationObserver,md=P.document,gd=P.process,vd=P.Promise,_d=hd(P,"queueMicrotask"),Sd=_d&&_d.value;Sd||(td=function(){var e,t;for(Fl&&(e=gd.domain)&&e.exit();id;){t=id.fn,id=id.next;try{t()}catch(e){throw id?rd():nd=void 0,e}}nd=void 0,e&&e.enter()},Ul||Fl||ud||!fd||!md?!dd&&vd&&vd.resolve?((sd=vd.resolve(void 0)).constructor=vd,cd=ri(sd.then,sd),rd=function(){cd(td)}):Fl?rd=function(){gd.nextTick(td)}:(pd=ri(pd,P),rd=function(){pd(td)}):(od=!0,ad=md.createTextNode(""),new fd(td).observe(ad,{characterData:!0}),rd=function(){ad.data=od=!od}));var yd=Sd||function(e){var t={fn:e,next:void 0};nd&&(nd.next=t),id||(id=t,rd()),nd=t},bd=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},kd=function(){this.head=null,this.tail=null};kd.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var Td,Cd,wd,Id=kd,Ed=P.Promise,Rd="object"==typeof window&&"object"!=typeof Deno,Md=$e("species"),Pd=!1,Ad=ee(P.PromiseRejectionEvent),Dd={CONSTRUCTOR:ei("Promise",(function(){var e=ut(Ed),t=e!==String(Ed);if(!t&&66===de)return!0;if(de>=51&&/native code/.test(e))return!1;var i=new Ed((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(i.constructor={})[Md]=n,!(Pd=i.then((function(){}))instanceof n)||!t&&Rd&&!Ad})),REJECTION_EVENT:Ad,SUBCLASSING:Pd},Od=function(e){var t,i;this.promise=new e((function(e,n){if(void 0!==t||void 0!==i)throw TypeError("Bad Promise constructor");t=e,i=n})),this.resolve=_e(t),this.reject=_e(i)},xd={f:function(e){return new Od(e)}},Ld=ld.set,Nd=Dd.CONSTRUCTOR,$d=Dd.REJECTION_EVENT,Vd=Dd.SUBCLASSING,Bd=Ct.getterFor("Promise"),Fd=Ct.set,Ud=Ed&&Ed.prototype,jd=Ed,Wd=Ud,Hd=P.TypeError,Gd=P.document,zd=P.process,Jd=xd.f,Kd=Jd,qd=!!(Gd&&Gd.createEvent&&P.dispatchEvent),Zd=function(e){var t;return!(!te(e)||!ee(t=e.then))&&t},Qd=function(e,t){var i,n,r,o=t.value,a=1==t.state,s=a?e.ok:e.fail,c=e.resolve,l=e.reject,d=e.domain;try{s?(a||(2===t.rejection&&iu(t),t.rejection=1),!0===s?i=o:(d&&d.enter(),i=s(o),d&&(d.exit(),r=!0)),i===e.promise?l(Hd("Promise-chain cycle")):(n=Zd(i))?L(n,i,c,l):c(i)):l(o)}catch(e){d&&!r&&d.exit(),l(e)}},Xd=function(e,t){e.notified||(e.notified=!0,yd((function(){for(var i,n=e.reactions;i=n.get();)Qd(i,e);e.notified=!1,t&&!e.rejection&&eu(e)})))},Yd=function(e,t,i){var n,r;qd?((n=Gd.createEvent("Event")).promise=t,n.reason=i,n.initEvent(e,!1,!0),P.dispatchEvent(n)):n={promise:t,reason:i},!$d&&(r=P["on"+e])?r(n):"unhandledrejection"===e&&function(e,t){var i=P.console;i&&i.error&&(1==arguments.length?i.error(e):i.error(e,t))}("Unhandled promise rejection",i)},eu=function(e){L(Ld,P,(function(){var t,i=e.facade,n=e.value;if(tu(e)&&(t=bd((function(){Fl?zd.emit("unhandledRejection",n,i):Yd("unhandledrejection",i,n)})),e.rejection=Fl||tu(e)?2:1,t.error))throw t.value}))},tu=function(e){return 1!==e.rejection&&!e.parent},iu=function(e){L(Ld,P,(function(){var t=e.facade;Fl?zd.emit("rejectionHandled",t):Yd("rejectionhandled",t,e.value)}))},nu=function(e,t,i){return function(n){e(t,n,i)}},ru=function(e,t,i){e.done||(e.done=!0,i&&(e=i),e.value=t,e.state=2,Xd(e,!0))},ou=function(e,t,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===t)throw Hd("Promise can't be resolved itself");var n=Zd(t);n?yd((function(){var i={done:!1};try{L(n,t,nu(ou,i,e),nu(ru,i,e))}catch(t){ru(i,t,e)}})):(e.value=t,e.state=1,Xd(e,!1))}catch(t){ru({done:!1},t,e)}}};if(Nd&&(Wd=(jd=function(e){Co(this,Wd),_e(e),L(Td,this);var t=Bd(this);try{e(nu(ou,t),nu(ru,t))}catch(e){ru(t,e)}}).prototype,(Td=function(e){Fd(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new Id,rejection:!1,state:0,value:void 0})}).prototype=It(Wd,"then",(function(e,t){var i=Bd(this),n=Jd(Ml(this,jd));return i.parent=!0,n.ok=!ee(e)||e,n.fail=ee(t)&&t,n.domain=Fl?zd.domain:void 0,0==i.state?i.reactions.add(n):yd((function(){Qd(n,i)})),n.promise})),Cd=function(){var e=new Td,t=Bd(e);this.promise=e,this.resolve=nu(ou,t),this.reject=nu(ru,t)},xd.f=Jd=function(e){return e===jd||void 0===e?new Cd(e):Kd(e)},ee(Ed)&&Ud!==Object.prototype)){wd=Ud.then,Vd||It(Ud,"then",(function(e,t){var i=this;return new jd((function(e,t){L(wd,i,e,t)})).then(e,t)}),{unsafe:!0});try{delete Ud.constructor}catch(e){}Br&&Br(Ud,Wd)}ii({global:!0,constructor:!0,wrap:!0,forced:Nd},{Promise:jd}),Or(jd,"Promise",!1),xo("Promise");var au=Dd.CONSTRUCTOR||!Mo((function(e){Ed.all(e).then(void 0,(function(){}))}));ii({target:"Promise",stat:!0,forced:au},{all:function(e){var t=this,i=xd.f(t),n=i.resolve,r=i.reject,o=bd((function(){var i=_e(t.resolve),o=[],a=0,s=1;ko(e,(function(e){var c=a++,l=!1;s++,L(i,t,e).then((function(e){l||(l=!0,o[c]=e,--s||n(o))}),r)})),--s||n(o)}));return o.error&&r(o.value),i.promise}});var su=Dd.CONSTRUCTOR,cu=Ed&&Ed.prototype;if(ii({target:"Promise",proto:!0,forced:su,real:!0},{catch:function(e){return this.then(void 0,e)}}),ee(Ed)){var lu=ne("Promise").prototype.catch;cu.catch!==lu&&It(cu,"catch",lu,{unsafe:!0})}ii({target:"Promise",stat:!0,forced:au},{race:function(e){var t=this,i=xd.f(t),n=i.reject,r=bd((function(){var r=_e(t.resolve);ko(e,(function(e){L(r,t,e).then(i.resolve,n)}))}));return r.error&&n(r.value),i.promise}}),ii({target:"Promise",stat:!0,forced:Dd.CONSTRUCTOR},{reject:function(e){var t=xd.f(this);return L(t.reject,void 0,e),t.promise}});var du=Dd.CONSTRUCTOR;ii({target:"Promise",stat:!0,forced:du},{resolve:function(e){return function(e,t){if(Qe(e),te(t)&&t.constructor===e)return t;var i=xd.f(e);return(0,i.resolve)(t),i.promise}(this,e)}});var uu=Qc.trim,hu=H("".charAt),pu=P.parseFloat,fu=P.Symbol,mu=fu&&fu.iterator,gu=1/pu(Gc+"-0")!=-1/0||mu&&!A((function(){pu(Object(mu))}))?function(e){var t=uu(Uo(e)),i=pu(t);return 0===i&&"-"==hu(t,0)?-0:i}:pu;ii({global:!0,forced:parseFloat!=gu},{parseFloat:gu});var vu,_u,Su=window.navigator&&window.navigator.userAgent||"",yu=/AppleWebKit\/([\d.]+)/i.exec(Su),bu=(yu&&parseFloat(yu.pop()),/iPad/i.test(Su)),ku=navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&/Macintosh/.test(Su),Tu=/iPhone/i.test(Su)&&!bu,Cu=/iPod/i.test(Su),wu=Tu||bu||Cu||ku,Iu=/Android/i.test(Su);Iu&&function(){var e=Su.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!e)return null;var t=e[1]&&parseFloat(e[1]),i=e[2]&&parseFloat(e[2]);t&&i&&parseFloat(e[1]+"."+e[2])}();var Eu=(Iu&&/webkit/i.test(Su),/Firefox/i.test(Su)),Ru=Eu&&function(){var e=Su.match(/Firefox\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),Mu=/Edge\//i.test(Su),Pu=Mu&&function(){var e=Su.match(/Edge\/(\d+)/i);if(e&&e[1])return e[1]}(),Au=/Edg\//i.test(Su),Du=Au&&function(){var e=Su.match(/Edg\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),Ou=/SogouMobileBrowser\//i.test(Su),xu=Ou&&function(){var e=Su.match(/SogouMobileBrowser\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),Lu=/MetaSr\s/i.test(Su),Nu=Lu&&function(){var e=Su.match(/MetaSr(\s\d+(\.\d+)+)/);return e&&e[1]?parseFloat(e[1]):null}(),$u=/TBS\/\d+/i.test(Su),Vu=$u&&function(){var e=Su.match(/TBS\/(\d+)/i);if(e&&e[1])return e[1]}(),Bu=/XWEB\/\d+/i.test(Su),Fu=Bu&&function(){var e=Su.match(/XWEB\/(\d+)/i);if(e&&e[1])return e[1]}(),Uu=(/MSIE\s8\.0/.test(Su),/MSIE\/\d+/i.test(Su)&&function(){var e=/MSIE\s(\d+)\.\d/.exec(Su),t=e&&parseFloat(e[1]);!t&&/Trident\/7.0/i.test(Su)&&/rv:11.0/.test(Su)&&(t=11)}(),/(micromessenger|webbrowser)/i.test(Su)),ju=Uu&&function(){var e=Su.match(/MicroMessenger\/(\d+)/i);if(e&&e[1])return e[1]}(),Wu=!$u&&/MQQBrowser\/\d+/i.test(Su)&&/COVC\/\d+/i.test(Su),Hu=!$u&&/MQQBrowser\/\d+/i.test(Su)&&!/COVC\/\d+/i.test(Su),Gu=(Hu||Wu)&&function(){var e=Su.match(/ MQQBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),zu=!$u&&/ QQBrowser\/\d+/i.test(Su),Ju=zu&&function(){var e=Su.match(/ QQBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Ku=!$u&&/QQBrowserLite\/\d+/i.test(Su),qu=Ku&&function(){var e=Su.match(/QQBrowserLite\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Zu=!$u&&/MQBHD\/\d+/i.test(Su),Qu=Zu&&function(){var e=Su.match(/MQBHD\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Xu=/Windows/i.test(Su),Yu=!wu&&/MAC OS X/i.test(Su),eh=!Iu&&/Linux/i.test(Su),th=(/MicroMessenger/i.test(Su),/UCBrowser/i.test(Su)),ih=(/Electron/i.test(Su),/MiuiBrowser/i.test(Su)),nh=ih&&function(){var e=Su.match(/MiuiBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),rh=/HuaweiBrowser/i.test(Su),oh=/Huawei/i.test(Su),ah=rh&&function(){var e=Su.match(/HuaweiBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),sh=/SamsungBrowser/i.test(Su),ch=sh&&function(){var e=Su.match(/SamsungBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),lh=/HeyTapBrowser/i.test(Su),dh=lh&&function(){var e=Su.match(/HeyTapBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),uh=/VivoBrowser/i.test(Su),hh=uh&&function(){var e=Su.match(/VivoBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),ph=function(){var e=Su.match(/Chrome\/(\d+)/);return e&&e[1]?Number(e[1]):null},fh=/Chrome/i.test(Su),mh=!Mu&&!Lu&&!Ou&&!$u&&!Bu&&!Au&&!zu&&!ih&&!rh&&!sh&&!lh&&!uh&&/Chrome/i.test(Su),gh=mh&&ph(),vh=mh&&function(){var e=Su.match(/Chrome\/([\d.]+)/);return e&&e[1]?e[1]:null}(),_h=!fh&&!Hu&&!Wu&&!Ku&&!Zu&&/Safari/i.test(Su),Sh=function(){if(_h){var e=Su.match(/Version\/([\d.]+)/);if(e&&e[1])return e[1]}return""}(),yh=/Android.*(wv|.0.0.0)/.test(Su),bh=function(){if(ku)return Sh;if(wu){var e=Su.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){var t=e[1];return e[2]&&(t+=".".concat(e[2])),t}}return""}(),kh="15.1"===bh,Th=14===(vu=Number(bh.split(".")[0]))||13===vu,Ch="file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname,wh=function(){if(Fg(_u))try{_u=window.localStorage}catch(e){sS.warn(e),_u=!1}return _u},Ih=new Map([[Eu,["Firefox",Ru]],[Au,["Edg",Du]],[mh,["Chrome",vh]],[_h,["Safari",Sh]],[$u,["TBS",Vu]],[Bu,["XWEB",Fu]],[Uu&&Tu,["WeChat",ju]],[zu,["QQ(Win)",Ju]],[Hu,["QQ(Mobile)",Gu]],[Wu,["QQ(Mobile X5)",Gu]],[Ku,["QQ(Mac)",qu]],[Zu,["QQ(iPad)",Qu]],[ih,["MI",nh]],[rh,["HW",ah]],[sh,["Samsung",ch]],[lh,["OPPO",dh]],[uh,["VIVO",hh]],[Mu,["EDGE",Pu]],[Ou,["SogouMobile",xu]],[Lu,["Sogou",Nu]]]);function Eh(){var e="unknown",t="unknown";return Ih.get(!0)&&(e=Ih.get(!0)[0],t=Ih.get(!0)[1]),{name:e,version:t}}var Rh=A((function(){sr(1)}));ii({target:"Object",stat:!0,forced:Rh},{keys:function(e){return sr(Ie(e))}});var Mh="canvas",Ph="audio",Ah="video",Dh="auxiliary",Oh="smallVideo",xh="user",Lh="environment",Nh="mute",$h="unmute",Vh="ended",Bh="playing",Fh="pause",Uh="error",jh="loadeddata",Wh="audioinput",Hh="videoinput",Gh="detail",zh="text",Jh="main",Kh="backup",qh="banned",Zh="kick",Qh="user_time_out",Xh="wss://trtc.rtc.qq.com",Yh="wss://webrtc.qq.com",ep="qcloud",tp="trtc",ip="webrtc",np="",rp="jssdk_log",op="jssdk_event",ap="jssdk_new_endreport",sp=function(e){return np=e},cp=1,lp=2,dp=20,up=21,hp="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",pp="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",fp=2,mp=Jh,gp=Dh,vp="DISCONNECTED",_p="CONNECTING",Sp="RECONNECTING",yp="CONNECTED",bp="new",kp="connecting",Tp="failed",Cp="closed",wp="disconnected",Ip="connected",Ep="completed",Rp="join",Mp="delta-join",Pp="rejoin",Ap="leave",Dp="delta-leave",Op="publish",xp="delta-publish",Lp="unpublish",Np="subscribe",$p="unsubscribe",Vp="uplink-connection",Bp="uplink-reconnection",Fp="downlink-connection",Up="downlink-reconnection",jp="setLocalDescription",Wp="setRemoteDescription",Hp="iceConnectionState",Gp="stream-initialize",zp="websocketConnectionState",Jp="websocketReconnectionState",Kp="update-stream",qp="recover-subscription",Zp="start-mix-transcode",Qp="stop-mix-transcode",Xp="player-error",Yp="schedule",ef="load-worklet",tf="unsubscribe",nf="subscribe_change",rf={MANUAL:"manual",PRESET_LAYOUT:"preset-layout"},of={REMOTE:"$PLACE_HOLDER_REMOTE$"},af={IT_AUDIO_VIDEO:0,IT_PICTURE:2,IT_CANVAS:3,IT_PURE_AUDIO:4,IT_PURE_VIDEO:5},sf="string",cf="number",lf="boolean",df="array",uf="object",hf="add",pf="remove",ff={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5},mf=-1,gf=0,vf=1,_f="schedule.rtc.qq.com",Sf="schedule.rtc.qcloud.com",yf="intl-schedule.rtc.qq.com",bf="intl-schedule.rtc.qcloud.com",kf="TRTC",Tf="Client",Cf="LocalStream",wf="RemoteStream",If="Stream",Ef="web.sdk.qcloud.com",Rf="web.sdk.tencent.cn",Mf="web.sdk.cloud.tencent.cn",Pf="https://".concat(Ef,"/trtc/webrtc/doc"),Af="".concat(Pf,"/zh-cn/"),Df={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,NONE:5},Of=Object.keys(Df),xf=["normal leave","timeout leave","kick","role change"],Lf=/"/g,Nf=H("".replace),$f=function(e,t,i,n){var r=Uo(X(e)),o="<"+t;return""!==i&&(o+=" "+i+'="'+Nf(Uo(n),Lf,"&quot;")+'"'),o+">"+r+"</"+t+">"},Vf=function(e){return A((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))};ii({target:"String",proto:!0,forced:Vf("link")},{link:function(e){return $f(this,"a","href",e)}}),ii({target:"Array",stat:!0},{isArray:oi});var Bf="AVOID_REPEATED_CALL",Ff="INVALID_PARAMETER_REQUIRED",Uf="INVALID_PARAMETER_TYPE",jf="INVALID_PARAMETER_EMPTY",Wf="INVALID_PARAMETER_INSTANCE",Hf="INVALID_PARAMETER_RANGE",Gf="API_CALL_TIMEOUT",zf="SIGNAL_CHANNEL_RECONNECTION_FAILED",Jf="SIGNAL_CHANNEL_SETUP_FAILED",Kf="ERROR_MESSAGE",qf="SUBSCRIPTION_TIMEOUT",Zf="EXCHANGE_SDP_TIMEOUT",Qf="DOWNLINK_RECONNECTION_FAILED",Xf="EXCHANGE_SDP_FAILED",Yf="UPLINK_RECONNECTION_FAILED",em="AUDIO",tm="VIDEO",im="INVALID_PURE_AUDIO",nm="INVALID_STREAMID",rm="INVALID_USER_DEFINE_RECORDID",om="INVALID_USER_DEFINE_PUSH_ARGS",am="INVALID_PROXY",sm="INVALID_JOIN",cm="INVALID_ROOMID_STRING",lm="INVALID_ROOMID_INTEGER",dm="JOIN_ROOM_TIMEOUT",um="JOIN_ROOM_FAILED",hm="REJOIN_ROOM_FAILED",pm="INVALID_LEAVE",fm="INVALID_PUBLISH",mm="INVALID_UNPUBLISH",gm="INVALID_AUDIENCE",vm="INVALID_INITIALIZE",_m="INVALID_DUPLICATE_PUBLISHING",Sm="INVALID_REMOTE_STREAM",ym="SUBSCRIBE_FAILED",bm="INVALID_ROLE",km="INVALID_OPERATION_SWITCH_ROLE",Tm="SWITCH_ROLE_TIMEOUT",Cm="SWITCH_ROLE_FAILED",wm="CLIENT_BANNED",Im="INVALID_OPERATION_START_PUBLISH_CDN",Em="INVALID_OPERATION_STOP_PUBLISH_CDN",Rm="INVALID_STREAM_ID",Mm="START_PUBLISH_CDN_FAILED",Pm="STOP_PUBLISH_CDN_FAILED",Am="START_MIX_TRANSCODE",Dm="STOP_MIX_TRANSCODE",Om="INVALID_AUDIO_VOLUME",xm="ENABLE_SMALL_STREAM_PUBLISHED",Lm="DISABLE_SMALL_STREAM_PUBLISHED",Nm="NOT_SUPPORTED_SMALL_STREAM",$m="INVALID_SMALL_STREAM_PROFILE",Vm="INVALID_PARAMETER_REMOTE_STREAM",Bm="INVALID_SWITCH_DEVICE",Fm="INVALID_SWITCH_DEVICE_PUBLISHING",Um="INVALID_REPLACE_TRACK",jm="INVALID_INITIALIZE_LOCAL_STREAM",Wm="INVALID_ADD_TRACK_REPETITIVE",Hm="INVALID_ADD_TRACK_REMOVING",Gm="INVALID_ADD_TRACK_PUBLISHING",zm="INVALID_STREAM_INITIALIZED",Jm="INVALID_ADD_TRACK_NUMBER",Km="INVALID_REMOVE_AUDIO_TRACK",qm="INVALID_REMOVE_AUDIO_ADDING",Zm="INVALID_REMOVE_AUDIO_ON",Qm="INVALID_REMOVE_TRACK_PUBLISHING",Xm="INVALID_REMOVE_TRACK_NOT_PUBLISHING",Ym="INVALID_REMOVE_TRACK_NUMBER",eg="INVALID_REMOVE_TRACK_NOT_PUBLISHED",tg="START_MIX_TRANSCODE_FAILED",ig="STOP_MIX_TRANSCODE_FAILED",ng="MIX_TRANSCODE_NOT_STARTED",rg="CANNOT_LESS_THAN_ZERO",og="MIX_PARAMS_VIDEO_FRAMERATE",ag="MIX_PARAMS_VIDEO_GOP",sg="MIX_PARAMS_AUDIO_BITRATE",cg="MIX_PARAMS_USER_Z_ORDER",lg="MIX_PARAMS_NOT_SELF",dg="MIX_PARAMS_USER_STREAM",ug="INVALID_ELEMENT_ID",hg="INVALID_ELEMENT_ID_TYPE",pg="INVALID_CREATE_STREAM_SOURCE",fg="INVALID_CREATE_STREAM_SCREEN",mg="INVALID_CREATE_STREAM_AUDIO",gg="INVALID_CREATE_STREAM_SCREEN_AUDIO",vg="NOT_SUPPORTED_HTTP",_g="NOT_SUPPORTED_WEBRTC",Sg="NOT_SUPPORTED_PROFILE",yg="NOT_SUPPORTED_H264ENCODE",bg="NOT_SUPPORTED_H264DECODE",kg="NOT_SUPPORTED_REPLACE_TRACK",Tg="NOT_SUPPORTED_CAPTURE",Cg="MICROPHONE_NOT_FOUND",wg="CAMERA_NOT_FOUND",Ig="SIGNAL_RESPONSE_FAILED",Eg="CATCH_HANDLER_ERROR",Rg="API_NOT_EXIST",Mg={AVOID_REPEATED_CALL:function(e){return"previous ".concat(e.name,"() is ongoing, please avoid repeated calls.")},INVALID_PARAMETER_REQUIRED:function(e){var t=e.key,i=e.rule,n=e.fnName,r=e.value;return"'".concat(t||i.name,"' is a required param when calling ").concat(n,"(), received: ").concat(r,".")},INVALID_PARAMETER_TYPE:function(e){var t=e.key,i=e.rule,n=e.fnName,r=e.value,o="".concat(t||i.name),a="";return a=Array.isArray(i.type)?i.type.join("|"):i.type,"'".concat(o,"' must be type of ").concat(a," when calling ").concat(n,"(), received type: ").concat(zg(r),".")},INVALID_PARAMETER_EMPTY:function(e){var t=e.key,i=e.rule,n=e.fnName,r=e.value;return"'".concat(t||i.name,"' cannot be '").concat(r,"' when calling ").concat(n,"().")},INVALID_PARAMETER_INSTANCE:function(e){var t=e.key,i=e.rule,n=e.fnName,r=e.value,o="".concat(t||i.name),a="".concat(i.instanceOf.name||i.instanceOf);return"'".concat(o,"' must be instanceof ").concat(a," when calling ").concat(n,"(), received type: ").concat(zg(r),".")},INVALID_PARAMETER_RANGE:function(e){var t=e.key,i=e.rule,n=e.fnName,r=e.value;return"'".concat(t||i.name,"' must be one of ").concat(i.values.join("|")," when calling ").concat(n,"(), received: ").concat(r,".")},API_CALL_TIMEOUT:function(e){return"".concat(e.commandDesc||e.command," timeout observed.")},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:function(e){return"SignalChannel setup failure: (errorCode: ".concat(e.errorCode,", errorMsg: ").concat(e.errorMsg," }).")},ERROR_MESSAGE:function(e){var t="".concat(e.type," failed");return e.message&&(t="".concat(t,": ").concat(e.message,".")),t},SUBSCRIPTION_TIMEOUT:"remote server does not respond to the subscription.",EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:function(e){return"exchange sdp failed ".concat(e.errMsg,".")},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",AUDIO:function(e){return e.error.toString()+" <audio>"},VIDEO:function(e){return e.error.toString()+" <video>"},INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING:function(e){return"'".concat(e,"' must be validate string when useStringRoomId is true.")},INVALID_ROOMID_INTEGER:function(e){return"'".concat(e,"' must be an integer between [1, 4294967294] when useStringRoomId is false.")},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED:function(e){var t=e.error,i=e.code;return"Failed to join room - ".concat(t," code: ").concat(i)},REJOIN_ROOM_FAILED:function(e){return"reJoin room: ".concat(e.roomId," failed, please check your network.")},INVALID_LEAVE:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:"no permission to publish() under live/".concat("audience",', please call switchRole("').concat("anchor",'") firstly before publish().'),INVALID_INITIALIZE:"cannot publish stream because stream is not initialized or is switching device.",INVALID_DUPLICATE_PUBLISHING:"duplicate publishing, please unpublish and then re-publish.",INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED:function(e){return"failed to subscribe stream, reason: ".concat(e.message,".")},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as ".concat("anchor"," or ").concat("audience","."),INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED:function(e){return"switchRole failed, errCode: ".concat(e.errCode," errMsg: ").concat(e.errMsg,".")},CLIENT_BANNED:function(e){return"client was banned because of "+e.reason+"."},INVALID_OPERATION_START_PUBLISH_CDN:"please call publish() before startPublishCDNStream().",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED:function(e){return"startPublishCDNStream failed, errMsg: ".concat(e.message,".")},STOP_PUBLISH_CDN_FAILED:function(e){return"stopPublishCDNStream failed, errMsg: ".concat(e.message,".")},INVALID_STREAM_ID:function(e){return"'".concat(e,"' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.")},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_PUBLISHING:"the track to be removed is not being publishing.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REMOVE_TRACK_NOT_PUBLISHED:function(e){return"try to replace ".concat(e.kind," track but there's no previous ").concat(e.kind," being published.")},START_MIX_TRANSCODE_FAILED:function(e){return"startMixTranscode failed, errMsg: ".concat(e.message,".")},STOP_MIX_TRANSCODE_FAILED:function(e){return"stopMixTranscode failed, errMsg: ".concat(e.message,".")},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO:function(e){var t=e.key,i=e.rule,n=e.fnName;return"'".concat(t||i.name,"' cannot be less than 0 when calling ").concat(n,"().")},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER:function(e){return"'".concat(e,"' is required and must be between 1 and 15.")},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:function(e){var t=e.key,i=e.fnName;return"'".concat(t,"' is not found in the document object when calling ").concat(i,"().")},INVALID_ELEMENT_ID_TYPE:function(e){var t=e.key,i=e.fnName,n=e.type;return"the element corresponding to '".concat(t,"' must be instanceof HTMLDivElement when calling ").concat(i,"(), received: ").concat(n,".")},INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"not supported in http protocol, please use https protocol.",NOT_SUPPORTED_WEBRTC:"your browser does NOT support WebRTC!",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_REPLACE_TRACK:"replaceTrack is not supported in this browser, please use switchDevice or addTrack instead.",NOT_SUPPORTED_CAPTURE:"captureScreen is not supported, please use chrome.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone and the configuration on TRTC.createStream.",CAMERA_NOT_FOUND:"no camera detected, please check your camera and the configuration on TRTC.createStream.",SIGNAL_RESPONSE_FAILED:function(e){return"".concat(e.signalResponse," failed, response code is ").concat(e.code," , errMsg: ").concat(e.message,".")},CATCH_HANDLER_ERROR:function(e){var t=e.name,i=e.event;return"an error was caught on ".concat(t,".on('").concat(i,"', handler), please check your code on 'handler'.")},API_NOT_EXIST:function(e){var t=e.name;return"experimental api ".concat(t," does not exist.")}},Pg=Af+"module-ErrorCode.html",Ag=function(){if(!wh())return!1;var e=localStorage.getItem("trtc_error_assistance");e&&!function(e){var t=e.saveTime&&(new Date).getTime()-e.saveTime>=6048e5,i=!e.saveVersion||"4.12.5"!==e.saveVersion;return t||i}(JSON.parse(e))||(sS.log("request error info"),function(){var e=new XMLHttpRequest;if(e.open("GET","https://web.sdk.qcloud.com/trtc/webrtc/download/error-message/0.0.1/script.js",!1),e.send(null),4===e.readyState&&200===e.status){var t=document.createElement("script");t.type="text/javascript",t.text=e.responseText,document.body.appendChild(t),localStorage.setItem("trtc_error_assistance",JSON.stringify({message:e.responseText,saveTime:(new Date).getTime(),saveVersion:"4.12.5"})),document.body.removeChild(t)}}())};function Dg(e){var t=e.key,i=e.data,n=e.link,r=e.addDocLink,o=void 0===r||r,a="",s="",c="";Bg(Mg[t])?a=Mg[t](i):Ug(Mg[t])&&(a=Mg[t]);var l=function(){if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};var e=localStorage.getItem("trtc_error_assistance");if(e){e=JSON.parse(e);var t=document.createElement("script");t.type="text/javascript",t.text=e.message,document.body.appendChild(t);var i=window.TRTC_ERROR_INFO,n=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:i,TRTC_ERROR_LINK:n}}return{}}(),d=l.TRTC_ERROR_INFO,u=l.TRTC_ERROR_LINK;d&&d[t]&&(Bg(d[t])?s=d[t](i):Ug(d[t])&&(s=d[t])),n?c=Af+"".concat(n.className,".html#").concat(n.className===kf?".":"").concat(n.fnName):u&&u[t]&&(c=Af+u[t]);var h=a;return h+=" "+s,o&&(h+=s?c?"查看文档:"+c:"查看文档:"+Pg:c?"Refer to:"+c:"Refer to:"+Pg),h}var Og=function(){return function(e){var t=window.location.search.match(new RegExp("(\\?|&)"+e+"=([^&]*)(&|$)"));return t?decodeURIComponent(t[2]):""}("trtc_env")},xg=function(e){return Number(e)<14e8},Lg=function(e,t){var i;i=np||(xg(e)?"https://videoapi-sgp.im.qcloud.com":"https://yun.tim.qq.com");var n=Math.floor(Math.random()*Math.pow(2,31));return"".concat(i,"/v5/AVQualityReportSvc/C2S?random=").concat(n,"&sdkappid=").concat(e,"&cmdtype=").concat(t)};function Ng(){var e=navigator.userAgent,t=navigator.connection,i=e.match(/NetType\/\w+/)?e.match(/NetType\/\w+/)[0]:"";"3gnet"===(i=i.toLowerCase().replace("nettype/",""))&&(i="3g");var n=t&&t.type&&t.type.toLowerCase(),r=t&&t.effectiveType&&t.effectiveType.toLowerCase();"slow-2"===r&&(r="2g");var o=i||"unknown";if(n)switch(n){case"cellular":case"wimax":o=r||"unknown";break;case"wifi":o="wifi";break;case"ethernet":o="wired";break;case"none":case"other":case"unknown":o="unknown"}return o}var $g=function(e){if(!e||"object"!==i(e)||"[object Object]"!=Object.prototype.toString.call(e))return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;var n=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Function.prototype.toString.call(n)===Function.prototype.toString.call(Object)};function Vg(e){var t=Math.round(e/2)+1;return t>6?13e3:1e3*function e(t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return t<=1?i:e(t-1,i,(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1)+i)}(t)}var Bg=function(e){return"function"==typeof e},Fg=function(e){return void 0===e},Ug=function(e){return"string"==typeof e},jg=function(e){return"number"==typeof e},Wg=function(e){return"boolean"==typeof e},Hg=function(e){return"array"===zg(e)},Gg=function(e){return zg(e)==="MediaStreamTrack".toLowerCase()};function zg(e){return Reflect.apply(Object.prototype.toString,e,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}function Jg(e){var t={};return t.urls="turn:".concat(e.url),Fg(e.username)||Fg(e.credential)||(t.username=e.username,t.credential=e.credential,t.credentialType="password",Fg(e.credentialType)||(t.credentialType=e.credentialType)),t}function Kg(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}function qg(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"big";if(!Ug(e))return 0;var i=e.split(".");return"big"===t?(Number(i[0])<<24|Number(i[1])<<16|Number(i[2])<<8|Number(i[3]))>>>0:(Number(i[3])<<24|Number(i[2])<<16|Number(i[1])<<8|Number(i[0]))>>>0}var Zg,Qg,Xg=function(){var e=navigator.language||navigator.userLanguage;return"zh"===e.substr(0,2)},Yg=(Zg=!1,Qg=document.visibilityState,function(){document.visibilityState!==Qg&&sS.info("visibility change: ".concat(document.visibilityState)),Zg||(document.addEventListener("visibilitychange",(function(){sS.info("visibility change: "+document.visibilityState),Qg=document.visibilityState})),Zg=!0)}),ev=!!window.AudioWorkletNode,tv=function(e,t){var i=e.emit;return e.emit=function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];try{i.apply(e,r)}catch(e){var a=Dg({key:Eg,data:{name:t,event:r[0]},addDocLink:!1});sS.warn(a+"\n\n"+e.stack)}},e},iv=function(e,t){return function(){for(var i=new Array(arguments.length),n=0;n<i.length;n++)i[n]=arguments[n];return e.apply(t,i)}},nv=Object.prototype.toString;function rv(e){return"[object Array]"===nv.call(e)}function ov(e){return void 0===e}function av(e){return null!==e&&"object"==typeof e}function sv(e){return"[object Function]"===nv.call(e)}function cv(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),rv(e))for(var i=0,n=e.length;i<n;i++)t.call(null,e[i],i,e);else for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(null,e[r],r,e)}var lv={isArray:rv,isArrayBuffer:function(e){return"[object ArrayBuffer]"===nv.call(e)},isBuffer:function(e){return null!==e&&!ov(e)&&null!==e.constructor&&!ov(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:av,isUndefined:ov,isDate:function(e){return"[object Date]"===nv.call(e)},isFile:function(e){return"[object File]"===nv.call(e)},isBlob:function(e){return"[object Blob]"===nv.call(e)},isFunction:sv,isStream:function(e){return av(e)&&sv(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&"undefined"!=typeof window&&"undefined"!=typeof document},forEach:cv,merge:function e(){var t={};function i(i,n){"object"==typeof t[n]&&"object"==typeof i?t[n]=e(t[n],i):t[n]=i}for(var n=0,r=arguments.length;n<r;n++)cv(arguments[n],i);return t},deepMerge:function e(){var t={};function i(i,n){"object"==typeof t[n]&&"object"==typeof i?t[n]=e(t[n],i):t[n]="object"==typeof i?e({},i):i}for(var n=0,r=arguments.length;n<r;n++)cv(arguments[n],i);return t},extend:function(e,t,i){return cv(t,(function(t,n){e[n]=i&&"function"==typeof t?iv(t,i):t})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}};function dv(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var uv=function(e,t,i){if(!t)return e;var n;if(i)n=i(t);else if(lv.isURLSearchParams(t))n=t.toString();else{var r=[];lv.forEach(t,(function(e,t){null!=e&&(lv.isArray(e)?t+="[]":e=[e],lv.forEach(e,(function(e){lv.isDate(e)?e=e.toISOString():lv.isObject(e)&&(e=JSON.stringify(e)),r.push(dv(t)+"="+dv(e))})))})),n=r.join("&")}if(n){var o=e.indexOf("#");-1!==o&&(e=e.slice(0,o)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e};function hv(){this.handlers=[]}hv.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},hv.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},hv.prototype.forEach=function(e){lv.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var pv=hv,fv=function(e,t,i){return lv.forEach(i,(function(i){e=i(e,t)})),e},mv=function(e){return!(!e||!e.__CANCEL__)},gv=void 0!==commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function vv(){throw new Error("setTimeout has not been defined")}function _v(){throw new Error("clearTimeout has not been defined")}var Sv=vv,yv=_v;function bv(e){if(Sv===setTimeout)return setTimeout(e,0);if((Sv===vv||!Sv)&&setTimeout)return Sv=setTimeout,setTimeout(e,0);try{return Sv(e,0)}catch(t){try{return Sv.call(null,e,0)}catch(t){return Sv.call(this,e,0)}}}"function"==typeof gv.setTimeout&&(Sv=setTimeout),"function"==typeof gv.clearTimeout&&(yv=clearTimeout);var kv,Tv=[],Cv=!1,wv=-1;function Iv(){Cv&&kv&&(Cv=!1,kv.length?Tv=kv.concat(Tv):wv=-1,Tv.length&&Ev())}function Ev(){if(!Cv){var e=bv(Iv);Cv=!0;for(var t=Tv.length;t;){for(kv=Tv,Tv=[];++wv<t;)kv&&kv[wv].run();wv=-1,t=Tv.length}kv=null,Cv=!1,function(e){if(yv===clearTimeout)return clearTimeout(e);if((yv===_v||!yv)&&clearTimeout)return yv=clearTimeout,clearTimeout(e);try{yv(e)}catch(t){try{return yv.call(null,e)}catch(t){return yv.call(this,e)}}}(e)}}function Rv(e,t){this.fun=e,this.array=t}function Mv(){}Rv.prototype.run=function(){this.fun.apply(null,this.array)};var Pv=Mv,Av=Mv,Dv=Mv,Ov=Mv,xv=Mv,Lv=Mv,Nv=Mv,$v=gv.performance||{},Vv=$v.now||$v.mozNow||$v.msNow||$v.oNow||$v.webkitNow||function(){return(new Date).getTime()},Bv=new Date,Fv={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)t[i-1]=arguments[i];Tv.push(new Rv(e,t)),1!==Tv.length||Cv||bv(Ev)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Pv,addListener:Av,once:Dv,off:Ov,removeListener:xv,removeAllListeners:Lv,emit:Nv,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Vv.call($v),i=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(i-=e[0],(n-=e[1])<0&&(i--,n+=1e9)),[i,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Bv)/1e3}},Uv=function(e,t){lv.forEach(e,(function(i,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=i,delete e[n])}))},jv=function(e,t,i,n,r){return function(e,t,i,n,r){return e.config=t,i&&(e.code=i),e.request=n,e.response=r,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}(new Error(e),t,i,n,r)},Wv=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Hv=lv.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");function n(e){var n=e;return t&&(i.setAttribute("href",n),n=i.href),i.setAttribute("href",n),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}return e=n(window.location.href),function(t){var i=lv.isString(t)?n(t):t;return i.protocol===e.protocol&&i.host===e.host}}():function(){return!0},Gv=lv.isStandardBrowserEnv()?{write:function(e,t,i,n,r,o){var a=[];a.push(e+"="+encodeURIComponent(t)),lv.isNumber(i)&&a.push("expires="+new Date(i).toGMTString()),lv.isString(n)&&a.push("path="+n),lv.isString(r)&&a.push("domain="+r),!0===o&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},zv=function(e){return new Promise((function(t,i){var n=e.data,r=e.headers;lv.isFormData(n)&&delete r["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",s=e.auth.password||"";r.Authorization="Basic "+btoa(a+":"+s)}var c,l,d=(c=e.baseURL,l=e.url,c&&!/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(l)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(c,l):l);if(o.open(e.method.toUpperCase(),uv(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,o.onreadystatechange=function(){if(o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in o?function(e){var t,i,n,r={};return e?(lv.forEach(e.split("\n"),(function(e){if(n=e.indexOf(":"),t=lv.trim(e.substr(0,n)).toLowerCase(),i=lv.trim(e.substr(n+1)),t){if(r[t]&&Wv.indexOf(t)>=0)return;r[t]="set-cookie"===t?(r[t]?r[t]:[]).concat([i]):r[t]?r[t]+", "+i:i}})),r):r}(o.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:n,config:e,request:o};!function(e,t,i){var n=i.config.validateStatus;!n||n(i.status)?e(i):t(jv("Request failed with status code "+i.status,i.config,null,i.request,i))}(t,i,r),o=null}},o.onabort=function(){o&&(i(jv("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){i(jv("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),i(jv(t,e,"ECONNABORTED",o)),o=null},lv.isStandardBrowserEnv()){var u=Gv,h=(e.withCredentials||Hv(d))&&e.xsrfCookieName?u.read(e.xsrfCookieName):void 0;h&&(r[e.xsrfHeaderName]=h)}if("setRequestHeader"in o&&lv.forEach(r,(function(e,t){void 0===n&&"content-type"===t.toLowerCase()?delete r[t]:o.setRequestHeader(t,e)})),lv.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),e.responseType)try{o.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),i(e),o=null)})),void 0===n&&(n=null),o.send(n)}))},Jv={"Content-Type":"application/x-www-form-urlencoded"};function Kv(e,t){!lv.isUndefined(e)&&lv.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var qv={adapter:function(){var e;return("undefined"!=typeof XMLHttpRequest||void 0!==Fv&&"[object process]"===Object.prototype.toString.call(Fv))&&(e=zv),e}(),transformRequest:[function(e,t){return Uv(t,"Accept"),Uv(t,"Content-Type"),lv.isFormData(e)||lv.isArrayBuffer(e)||lv.isBuffer(e)||lv.isStream(e)||lv.isFile(e)||lv.isBlob(e)?e:lv.isArrayBufferView(e)?e.buffer:lv.isURLSearchParams(e)?(Kv(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):lv.isObject(e)?(Kv(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};lv.forEach(["delete","get","head"],(function(e){qv.headers[e]={}})),lv.forEach(["post","put","patch"],(function(e){qv.headers[e]=lv.merge(Jv)}));var Zv=qv;function Qv(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Xv=function(e){return Qv(e),e.headers=e.headers||{},e.data=fv(e.data,e.headers,e.transformRequest),e.headers=lv.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),lv.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Zv.adapter)(e).then((function(t){return Qv(e),t.data=fv(t.data,t.headers,e.transformResponse),t}),(function(t){return mv(t)||(Qv(e),t&&t.response&&(t.response.data=fv(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Yv=function(e,t){t=t||{};var i={},n=["url","method","params","data"],r=["headers","auth","proxy"],o=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];lv.forEach(n,(function(e){void 0!==t[e]&&(i[e]=t[e])})),lv.forEach(r,(function(n){lv.isObject(t[n])?i[n]=lv.deepMerge(e[n],t[n]):void 0!==t[n]?i[n]=t[n]:lv.isObject(e[n])?i[n]=lv.deepMerge(e[n]):void 0!==e[n]&&(i[n]=e[n])})),lv.forEach(o,(function(n){void 0!==t[n]?i[n]=t[n]:void 0!==e[n]&&(i[n]=e[n])}));var a=n.concat(r).concat(o),s=Object.keys(t).filter((function(e){return-1===a.indexOf(e)}));return lv.forEach(s,(function(n){void 0!==t[n]?i[n]=t[n]:void 0!==e[n]&&(i[n]=e[n])})),i};function e_(e){this.defaults=e,this.interceptors={request:new pv,response:new pv}}e_.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Yv(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[Xv,void 0],i=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)i=i.then(t.shift(),t.shift());return i},e_.prototype.getUri=function(e){return e=Yv(this.defaults,e),uv(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},lv.forEach(["delete","get","head","options"],(function(e){e_.prototype[e]=function(t,i){return this.request(lv.merge(i||{},{method:e,url:t}))}})),lv.forEach(["post","put","patch"],(function(e){e_.prototype[e]=function(t,i,n){return this.request(lv.merge(n||{},{method:e,url:t,data:i}))}}));var t_=e_;function i_(e){this.message=e}i_.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i_.prototype.__CANCEL__=!0;var n_=i_;function r_(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var i=this;e((function(e){i.reason||(i.reason=new n_(e),t(i.reason))}))}r_.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r_.source=function(){var e;return{token:new r_((function(t){e=t})),cancel:e}};var o_=r_;function a_(e){var t=new t_(e),i=iv(t_.prototype.request,t);return lv.extend(i,t_.prototype,t),lv.extend(i,t),i}var s_=a_(Zv);s_.Axios=t_,s_.create=function(e){return a_(Yv(s_.defaults,e))},s_.Cancel=n_,s_.CancelToken=o_,s_.isCancel=mv,s_.all=function(e){return Promise.all(e)},s_.spread=function(e){return function(t){return e.apply(null,t)}};var c_=s_,l_=s_;c_.default=l_;var d_=c_,u_=I((function(e){var t=Object.prototype.hasOwnProperty,i="~";function n(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,n,o,a){if("function"!=typeof n)throw new TypeError("The listener must be a function");var s=new r(n,o||e,a),c=i?i+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function s(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(i=!1)),s.prototype.eventNames=function(){var e,n,r=[];if(0===this._eventsCount)return r;for(n in e=this._events)t.call(e,n)&&r.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},s.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,a=new Array(o);r<o;r++)a[r]=n[r].fn;return a},s.prototype.listenerCount=function(e){var t=i?i+e:e,n=this._events[t];return n?n.fn?1:n.length:0},s.prototype.emit=function(e,t,n,r,o,a){var s=i?i+e:e;if(!this._events[s])return!1;var c,l,d=this._events[s],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,n),!0;case 4:return d.fn.call(d.context,t,n,r),!0;case 5:return d.fn.call(d.context,t,n,r,o),!0;case 6:return d.fn.call(d.context,t,n,r,o,a),!0}for(l=1,c=new Array(u-1);l<u;l++)c[l-1]=arguments[l];d.fn.apply(d.context,c)}else{var h,p=d.length;for(l=0;l<p;l++)switch(d[l].once&&this.removeListener(e,d[l].fn,void 0,!0),u){case 1:d[l].fn.call(d[l].context);break;case 2:d[l].fn.call(d[l].context,t);break;case 3:d[l].fn.call(d[l].context,t,n);break;case 4:d[l].fn.call(d[l].context,t,n,r);break;default:if(!c)for(h=1,c=new Array(u-1);h<u;h++)c[h-1]=arguments[h];d[l].fn.apply(d[l].context,c)}}return!0},s.prototype.on=function(e,t,i){return o(this,e,t,i,!1)},s.prototype.once=function(e,t,i){return o(this,e,t,i,!0)},s.prototype.removeListener=function(e,t,n,r){var o=i?i+e:e;if(!this._events[o])return this;if(!t)return a(this,o),this;var s=this._events[o];if(s.fn)s.fn!==t||r&&!s.once||n&&s.context!==n||a(this,o);else{for(var c=0,l=[],d=s.length;c<d;c++)(s[c].fn!==t||r&&!s[c].once||n&&s[c].context!==n)&&l.push(s[c]);l.length?this._events[o]=1===l.length?l[0]:l:a(this,o)}return this},s.prototype.removeAllListeners=function(e){var t;return e?(t=i?i+e:e,this._events[t]&&a(this,t)):(this._events=new n,this._eventsCount=0),this},s.prototype.off=s.prototype.removeListener,s.prototype.addListener=s.prototype.on,s.prefixed=i,s.EventEmitter=s,e.exports=s})),h_=new u_,p_=1,f_=2,m_=3,g_=4,v_=5,__=20,S_=21,y_=22,b_=23,k_=24,T_=27,C_=28,w_=29,I_=30,E_=31,R_=32,M_=100,P_=101,A_=102,D_=103,O_=110,x_=111,L_=112,N_=113,$_=114,V_=115,B_=116,F_=120,U_=121,j_=122,W_=123,H_=130,G_=131,z_=132,J_=133,K_=134,q_=135,Z_=136,Q_=137,X_=200,Y_=201,eS=300,tS=301,iS=302,nS=303;function rS(e){var t=e.retryFunction,i=e.settings,n=e.onError,o=e.onRetrying,a=e.context;return function(){for(var e=this,s=arguments.length,c=new Array(s),l=0;l<s;l++)c[l]=arguments[l];var d=i.retries||5,u=0,h=-1,p=0,f=function(){var s=r(regeneratorRuntime.mark((function r(s,l){var m,g,v,_;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,m=a||e,r.next=4,t.apply(m,c);case 4:g=r.sent,u=0,s(g),r.next=14;break;case 9:r.prev=9,r.t0=r.catch(0),v=function(){clearTimeout(h),u=0,p=2,l(r.t0)},_=function(){2!==p&&u<d?(u++,p=1,Bg(o)&&o(u,v),h=setTimeout((function(){h=-1,f(s,l)}),Fg(i.timeout)?1e3:i.timeout)):v()},Bg(n)?n(r.t0,_,l):_();case 14:case"end":return r.stop()}}),r,null,[[0,9]])})));return function(e,t){return s.apply(this,arguments)}}();return new Promise(f)}}var oS=s((function e(t){o(this,e),this.log=t.log,this.level=t.level,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.forAllJoinedClients=t.forAllJoinedClients,this.uploaded=!1})),aS=function(){function e(t){o(this,e),this.id_=t.id,this.userId_=t.userId,this.sdkAppId_=t.sdkAppId,this.type_=t.type,this.isLocal_=!Wg(t.isLocal)||t.isLocal}return s(e,[{key:"setUserId",value:function(e){this.userId_=e}},{key:"setSdkAppId",value:function(e){this.sdkAppId_=e}},{key:"log",value:function(e,t){sS.log({log:"[".concat(this.isLocal_?"":"*").concat(this.id_,"] ").concat(this.type_?this.type_+" ":"").concat(t),level:e,forAllJoinedClients:Fg(this.userId_),userId:this.userId_,sdkAppId:this.sdkAppId_})}},{key:"info",value:function(e){this.log(Df.INFO,e)}},{key:"debug",value:function(e){this.log(Df.DEBUG,e)}},{key:"warn",value:function(e){this.log(Df.WARN,e)}},{key:"error",value:function(e){this.log(Df.ERROR,e)}}]),e}(),sS=new(function(){function e(){var t=this;o(this,e),this.clients_=[],this.queue_=[],this.timeoutId_=-1,this.logLevel_=Df.DEBUG,this.logLevelToUpload_=Df.INFO,this.enableUploadLog_=!0,this.isAbleToUpload_=!1,this.startUpload(),this.checkURLParam(),h_.on(I_,(function(e){var i=e.client;return t.clients_.push(i)})),h_.on(E_,(function(e){e&&$g(e.config)&&Of[e.config.logLevelToUpload]&&(t.logLevelToUpload_=e.config.logLevelToUpload)})),h_.on(g_,this.setIsAbleToUpload,this),h_.on(v_,this.setIsAbleToUpload,this)}var t,i;return s(e,[{key:"getIsAbleToUpload",value:function(){return this.isAbleToUpload_}},{key:"setIsAbleToUpload",value:function(){this.isAbleToUpload_=!0,h_.off(g_,this.setIsAbleToUpload,this),h_.off(v_,this.setIsAbleToUpload,this)}},{key:"startUpload",value:(i=r(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.upload();case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:this.timeoutId_=setTimeout((function(){return t.startUpload()}),2e3);case 8:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(){return i.apply(this,arguments)})},{key:"stopUpload",value:function(){-1!==this.timeoutId_&&(clearTimeout(this.timeoutId_),this.timeoutId_=-1)}},{key:"getLogsToUpload",value:function(){var e=this,t={map:new Map,splicedQueue:[]};if(this.queue_[0].forAllJoinedClients&&0===this.clients_.length)return t;for(var i=0,n=function(){if(50===i)return"break";var n=e.queue_[i];n.forAllJoinedClients?e.clients_.forEach((function(e){if(e.getIsJoined()){var i=e.getUserId(),r=e.getSDKAppId();t.map.has(i)?t.map.get(i).logs.push(n):t.map.set(i,{userId:i,sdkAppId:r,logs:[n]})}})):t.map.has(n.userId)?t.map.get(n.userId).logs.push(n):t.map.set(n.userId,{userId:n.userId,sdkAppId:n.sdkAppId,logs:[n]})};i<this.queue_.length&&"break"!==n();i++);return t.map.size>0&&(t.splicedQueue=this.queue_.splice(0,i)),t}},{key:"upload",value:(t=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==this.queue_.length&&this.isAbleToUpload_){e.next=2;break}return e.abrupt("return");case 2:if(t=this.getLogsToUpload(),i=t.map,n=t.splicedQueue,0!==i.size){e.next=5;break}return e.abrupt("return");case 5:e.prev=5,r=y(i.values()),o=0;case 8:if(!(o<r.length)){e.next=16;break}return a=r[o],s=a.userId,c=a.sdkAppId,l=a.logs,e.next=12,this.uploadLogWithRetry(JSON.stringify({timestamp:hc(),sdkAppId:String(c),userId:s,version:"4.12.5",log:l.map((function(e){return e.log})).join("\n")}),c);case 12:l.forEach((function(e){return e.uploaded=!0}));case 13:o++,e.next=8;break;case 16:e.next=20;break;case 18:e.prev=18,e.t0=e.catch(5);case 20:(d=n.filter((function(e){return!e.uploaded}))).length>0&&(this.queue_=d.concat(this.queue_));case 22:case"end":return e.stop()}}),e,this,[[5,18]])}))),function(){return t.apply(this,arguments)})},{key:"uploadLogWithRetry",value:function(e,t){return rS({retryFunction:function(){return d_.post(Lg(t,rp),e,{timeout:5e3})},settings:{retries:3,timeout:1e3},onError:function(e,t){t()}})()}},{key:"getPrefix",value:function(e){var t=new Date;return t.setTime(uc()),"[".concat(t.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1"),":").concat(t.getMilliseconds(),"] <").concat(Of[e],">")}},{key:"getLogLevel",value:function(){return this.logLevel_}},{key:"setLogLevel",value:function(e){Fg(Of[e])||(this.logLevel_!==e&&this.info("setLogLevel ".concat(e)),this.logLevel_=e)}},{key:"enableUploadLog",value:function(){this.enableUploadLog_=!0}},{key:"disableUploadLog",value:function(){this.enableUploadLog_=!1}},{key:"log",value:function(e){var t=e.log,i=e.level,n=e.forAllJoinedClients,r=void 0===n||n,o=e.userId,a=e.sdkAppId;if(t="".concat(this.getPrefix(i)," ").concat(t),this.enableUploadLog_&&i>=this.logLevelToUpload_&&this.queue_.push(new oS({log:t,level:i,userId:o,sdkAppId:a,forAllJoinedClients:r})),!(i<this.logLevel_))switch(i){case Df.ERROR:console.error(t);break;case Df.WARN:console.warn(t);break;case Df.INFO:console.log(t);break;case Df.DEBUG:console.debug(t)}}},{key:"debug",value:function(e){this.log({log:e,level:Df.DEBUG})}},{key:"info",value:function(e){this.log({log:e,level:Df.INFO})}},{key:"warn",value:function(e){this.log({log:e,level:Df.WARN})}},{key:"error",value:function(e){this.log({log:e,level:Df.ERROR})}},{key:"createLogger",value:function(e){return new aS(e)}},{key:"checkURLParam",value:function(){var e=new URLSearchParams(location.search).get("logLevelToUpload");Of[e]&&(this.logLevelToUpload_=e)}}]),e}()),cS=!0,lS=Math.floor,dS=Number.isInteger||function(e){return!te(e)&&isFinite(e)&&lS(e)===e};ii({target:"Number",stat:!0},{isInteger:dS});var uS,hS=P.TypeError,pS=function(e){if(fc(e))throw hS("The method doesn't accept regular expressions");return e},fS=$e("match"),mS=function(e){var t=/./;try{"/./"[e](t)}catch(i){try{return t[fS]=!1,"/./"[e](t)}catch(e){}}return!1},gS=Je.f,vS=H("".startsWith),_S=H("".slice),SS=Math.min,yS=mS("startsWith"),bS=!(yS||(uS=gS(String.prototype,"startsWith"),!uS||uS.writable));ii({target:"String",proto:!0,forced:!bS&&!yS},{startsWith:function(e){var t=Uo(X(this));pS(e);var i=xt(SS(arguments.length>1?arguments[1]:void 0,t.length)),n=Uo(e);return vS?vS(t,n,i):_S(t,i,i+n.length)===n}});var kS=P.Function,TS=H([].concat),CS=H([].join),wS={},IS=function(e,t,i){if(!Re(wS,t)){for(var n=[],r=0;r<t;r++)n[r]="a["+r+"]";wS[t]=kS("C,a","return new C("+CS(n,",")+")")}return wS[t](e,i)},ES=O?kS.bind:function(e){var t=_e(this),i=t.prototype,n=Qn(arguments,1),r=function(){var i=TS(n,Qn(arguments));return this instanceof r?IS(t,i.length,i):t.apply(e,i)};return te(i)&&(r.prototype=i),r};ii({target:"Function",proto:!0,forced:Function.bind!==ES},{bind:ES});var RS=Ii.findIndex,MS=!0;"findIndex"in[]&&Array(1).findIndex((function(){MS=!1})),ii({target:"Array",proto:!0,forced:MS},{findIndex:function(e){return RS(this,e,arguments.length>1?arguments[1]:void 0)}}),br("findIndex");var PS=H(V.f),AS=H([].push),DS=function(e){return function(t){for(var i,n=Y(t),r=sr(n),o=r.length,a=0,s=[];o>a;)i=r[a++],D&&!PS(n,i)||AS(s,e?[i,n[i]]:n[i]);return s}},OS=(DS(!0),DS(!1));ii({target:"Object",stat:!0},{values:function(e){return OS(e)}});var xS=$t.includes,LS=A((function(){return!Array(1).includes()}));ii({target:"Array",proto:!0,forced:LS},{includes:function(e){return xS(this,e,arguments.length>1?arguments[1]:void 0)}}),br("includes");var NS=H("".indexOf);ii({target:"String",proto:!0,forced:!mS("includes")},{includes:function(e){return!!~NS(Uo(X(this)),Uo(pS(e)),arguments.length>1?arguments[1]:void 0)}});var $S=1,VS=5,BS=2,FS=3,US=4,jS="DISCONNECTED",WS="CONNECTING",HS="RECONNECTING",GS="CONNECTED",zS={CLINET_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110},JS=[zS.UPDATE_REMOTE_MUTE_STAT,zS.UPLINK_NETWORK_STATS,zS.USER_LIST_RES,zS.MUTE_RESULT],KS={CLINET_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result"},qS="publish_change",ZS="join",QS="leave",XS="quality_report",YS="mute_uplink",ey="publish",ty="unpublish",iy="subscribe",ny="unsubscribe",ry="subscribe_change",oy="start_publishing",ay="stop_publishing",sy="start_push_user_cdn",cy="stop_push_user_cdn",ly="start_mcu_mix",dy="stop_mcu_mix",uy="get_user_list",hy="change_role",py={INVALID_PARAMETER:4096,INVALID_OPERATION:4097,NOT_SUPPORTED:4098,DEVICE_NOT_FOUND:4099,INITIALIZE_FAILED:4100,SIGNAL_CHANNEL_SETUP_FAILED:16385,SIGNAL_CHANNEL_ERROR:16386,ICE_TRANSPORT_ERROR:16387,JOIN_ROOM_FAILED:16388,CREATE_OFFER_FAILED:16389,SIGNAL_CHANNEL_RECONNECTION_FAILED:16390,UPLINK_RECONNECTION_FAILED:16391,DOWNLINK_RECONNECTION_FAILED:16392,REMOTE_STREAM_NOT_EXIST:16400,CLIENT_BANNED:16448,SERVER_TIMEOUT:16449,SUBSCRIPTION_TIMEOUT:16450,PLAY_NOT_ALLOWED:16451,DEVICE_AUTO_RECOVER_FAILED:16452,START_PUBLISH_CDN_FAILED:16453,STOP_PUBLISH_CDN_FAILED:16454,START_MIX_TRANSCODE_FAILED:16455,STOP_MIX_TRANSCODE_FAILED:16456,NOT_SUPPORTED_H264:16457,SWITCH_ROLE_FAILED:16458,API_CALL_TIMEOUT:16459,SCHEDULE_FAILED:16460,UNKNOWN:65535},fy=function(e){l(i,e);var t=g(i);function i(e){var n,r=e.name,a=void 0===r?"RtcError":r,s=e.message,c=e.code,l=void 0===c?py.UNKNOWN:c,d=e.extraCode,u=void 0===d?0:d,h=e.constraint;o(this,i);var p="<".concat(function(e){for(var t in py)if(py[t]===e)return t;return"UNKNOWN"}(l)," 0x").concat(l.toString(16),">");return(n=t.call(this,s+"".concat(h?" constraint: ".concat(h):"")+"".concat(s.includes(p)?"":" "+p))).code_=l,n.extraCode_=u,n.name=a,n.message_=s,h&&(n.constraint=h),n}return s(i,[{key:"getCode",value:function(){return this.code_}},{key:"getExtraCode",value:function(){return this.extraCode_}}]),i}(f(Error)),my=32768,gy=32769,vy=32770,_y=32771,Sy=32772,yy=32773,by=32774,ky=32775,Ty=32777,Cy=32778,wy=32779,Iy=32780,Ey=32781,Ry=32782,My=32783,Py=32784,Ay=32785,Dy=32786,Oy=32787,xy=32788,Ly=32789,Ny=32790,$y=32791,Vy=32792,By=32793,Fy=32794,Uy=32795,jy=32796,Wy=32797,Hy=32798,Gy=32799,zy=32800,Jy=32801,Ky=32802,qy=32803,Zy=32804,Qy=new Map,Xy=function(e,t){var i=Qy.get(e);i||(Qy.set(e,[]),i=Qy.get(e)),i.push(t)},Yy=function(e){var t=Qy.get(e),i=[];return t?(Qy.delete(e),i=t.map((function(e){return{uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,str_event_json:e.eventDesc}}))):i=[],i},eb=Object.prototype.hasOwnProperty;function tb(e){if(null==e)return!0;if("boolean"==typeof e)return!1;if("number"==typeof e)return 0===e;if("string"==typeof e)return 0===e.length;if("function"==typeof e)return 0===e.length;if(Array.isArray(e))return 0===e.length;if(e instanceof Error)return""===e.message;if($g(e))switch(Object.prototype.toString.call(e)){case"[object File]":case"[object Map]":case"[object Set]":return 0===e.size;case"[object Object]":for(var t in e)if(eb.call(e,t))return!1;return!0}return!1}var ib=new(function(){function e(){o(this,e);var t=Eh(),i=t.name,n=t.version;this.roomIdMap_=new Map,this.configs_={sdkAppId:"",userId:"",version:"4.12.5",env:ep,browserVersion:i+n,ua:navigator.userAgent}}return s(e,[{key:"setConfig",value:function(e){var t=e.sdkAppId,i=e.env,n=e.userId,r=e.roomId;t!==this.configs_.sdkAppId&&(this.configs_.sdkAppId=String(t)),this.configs_.env=i,this.configs_.userId=n,this.roomIdMap_.set(n,String(r))}},{key:"logEvent",value:function(e){if(!Ch){var i=t(t(t({},e),this.configs_),{},{userId:e.userId||this.configs_.userId});Fg(i.code)&&(i.code="failed"===i.result?py.UNKNOWN:0),this.sendRequest(Lg(this.configs_.sdkAppId,op),i)}}},{key:"logSuccessEvent",value:function(e){Ch||(this.logEvent(t(t({},e),{},{result:"success",roomId:this.roomIdMap_.get(e.userId)})),this.configs_.env===ep&&this.uploadEventToKibana(t(t({},e),{},{result:"success"})))}},{key:"logFailedEvent",value:function(e){if(!Ch){var i=e.eventType,n=e.code,r=e.error,o=e.userId,a={roomId:this.roomIdMap_.get(o),userId:o,eventType:i,result:"failed",code:n||(r instanceof fy?r.getExtraCode()||r.getCode():py.UNKNOWN)};this.logEvent(a),this.configs_.env===ep&&this.uploadEventToKibana(t(t({},a),{},{error:r}))}}},{key:"uploadEventToKibana",value:function(e){var t="stat-".concat(e.eventType,"-").concat(e.result);"delta-join"!==e.eventType&&"delta-leave"!==e.eventType&&"delta-publish"!==e.eventType||(t="".concat(e.eventType,":").concat(e.delta)),this.uploadEvent({log:t,userId:e.userId}),"failed"===e.result&&(t="stat-".concat(e.eventType,"-").concat(e.result,"-").concat(e.code),this.uploadEvent({log:t,userId:e.userId,error:e.error}))}},{key:"uploadEvent",value:function(e){var t=e.log,i=e.userId,n=e.error,r={timestamp:hc(),sdkAppId:this.configs_.sdkAppId,userId:i||this.configs_.userId,version:this.configs_.version,log:t};n&&(r.errorInfo=n.message),this.sendRequest(Lg(this.configs_.sdkAppId,rp),r)}},{key:"sendRequest",value:function(e,t){var i=this;sS.getIsAbleToUpload()?d_.post(e,JSON.stringify(t)).catch((function(){})):setTimeout((function(){i.sendRequest(e,t)}),1e3)}}]),e}()),nb=function(){function e(t){o(this,e),this.client_=t.client,this.sdkAppId_=t.sdkAppId,this.userId_=t.userId,this.userSig_=t.userSig,this.url_=t.url,this.backupUrl_=t.backupUrl,this.version_=t.version;var i="?sdkAppId=".concat(encodeURIComponent(this.sdkAppId_),"&userId=").concat(encodeURIComponent(this.userId_),"&userSig=").concat(encodeURIComponent(this.userSig_));this.urlWithParam_="".concat(this.url_).concat(i),this.backupUrlWithParam_="".concat(this.backupUrl_).concat(i),this.isConnected_=!1,this.isConnecting_=!1,this.socketInUse_=null,this.socket_=null,this.backupSocket_=null,this.backupTimer_=-1,this.signalInfo_={},this.currentState_=jS,this.reconnectionCount_=0,this.reconnectionTimer_=-1,this.seq_=0,this.log_=sS.createLogger({id:"ws|"+this.userId_,userId:this.userId_,sdkAppId:this.sdkAppId_}),this.emitter_=new u_}return s(e,[{key:"connect",value:function(){var e=this;return new Promise((function(t,i){e.log_.info("connect to url: ".concat(e.urlWithParam_)),e.emitConnectionStateChanged(WS),e.socket_=new WebSocket(e.urlWithParam_),e.bindSocket(e.socket_),e.backupTimer_=setTimeout((function(){e.isConnected_||(e.log_.info("trying to connect to backupUrl"),e.tryConnectBackup())}),5e3),e.once(FS,t),e.once(US,i)}))}},{key:"tryConnectBackup",value:function(){this.backupSocket_||(this.unbindAndCloseSocket(Jh),this.log_.debug("try to connect to url: ".concat(this.backupUrlWithParam_)),this.backupSocket_=new WebSocket(this.backupUrlWithParam_),this.bindSocket(this.backupSocket_))}},{key:"bindSocket",value:function(e){e.onopen=this.onopen.bind(this),e.onclose=this.onclose.bind(this),e.onerror=this.onerror.bind(this),e.onmessage=this.onmessage.bind(this)}},{key:"unbindSocket",value:function(e){e.onopen=function(){},e.onclose=function(){},e.onerror=function(){},e.onmessage=function(){}}},{key:"unbindAndCloseSocket",value:function(e){if(e===Jh){if(this.socket_){this.unbindSocket(this.socket_);try{this.socket_.close(1e3)}catch(e){}this.socket_=null}}else if(this.backupSocket_){this.unbindSocket(this.backupSocket_);try{this.backupSocket_.close(1e3)}catch(e){}this.backupSocket_=null}}},{key:"clearBackupTimer",value:function(){-1!==this.backupTimer_&&(clearTimeout(this.backupTimer_),this.backupTimer_=-1)}},{key:"clearReconnectionTimer",value:function(){-1!==this.reconnectionTimer_&&(clearTimeout(this.reconnectionTimer_),this.reconnectionTimer_=-1)}},{key:"onopen",value:function(e){if(!this.isConnected_){this.isConnected_=!0,this.isConnecting_=!1,this.clearBackupTimer(),e.target===this.socket_?(this.unbindAndCloseSocket(Kh),this.socketInUse_=this.socket_):(this.unbindAndCloseSocket(Jh),this.socketInUse_=this.backupSocket_);var t=e.target.url;this.log_.info("websocket[".concat(t,"] is connected")),this.currentState_===WS?this.addSignalEvent($y,"signal channel is connected"):this.currentState_===HS&&this.addSignalEvent(Uy,"signal channel reconnect success"),this.emitConnectionStateChanged(GS),this.emitter_.emit(FS)}}},{key:"onclose",value:function(e){var t=e.target.url,i=e.target===this.socketInUse_;this.log_.info("websocket[".concat(t," InUse: ").concat(i,"] is closed with code: ").concat(e.code)),e.target===this.socketInUse_&&(this.isConnected_=!1,this.emitConnectionStateChanged(jS),this.addSignalEvent(Ny,"signal channel is disconnected"),e.wasClean&&1e3===e.code||(this.log_.warn("onclose code:".concat(e.code," reason:").concat(e.reason)),this.log_.warn("close current websocket and schedule a reconnect timeout"),this.socketInUse_.onclose=function(){},this.socketInUse_.close(4011),this.socket_=this.backupSocket_=this.socketInUse_=null,this.reconnect(Jh)))}},{key:"onerror",value:function(e){var t=e.target.url;this.log_.error("websocket[".concat(t,"] error observed")),this.isConnected_?e.target===this.socketInUse_&&(this.isConnected_=!1,this.unbindAndCloseSocket(Jh),this.unbindAndCloseSocket(Kh),this.socketInUse_=null,this.reconnect(Jh)):(this.isReconnecting_||ib.logFailedEvent({userId:this.client_.getUserId(),eventType:zp,code:py.UNKNOWN}),e.target==this.socket_?(this.unbindAndCloseSocket(Jh),this.reconnect(Kh)):(this.unbindAndCloseSocket(Kh),this.reconnect(Jh))),this.isConnecting_=!1,this.isConnected_=!1}},{key:"onmessage",value:function(e){if(this.isConnected_){var t=JSON.parse(e.data),i=t.cmd,n=t.data,r=Object.values(zS),o=Object.keys(zS)[r.indexOf(i)],a=KS[o];if(!JS.includes(i)){var s=e.target==this.socket_?this.url_:this.backupUrl_;this.log_.debug("websocket[".concat(s,"] received message: ").concat(e.data)),this.log_.info("Received event: [ ".concat(a||"unknown cmd: "+i," ]"))}switch(i){case zS.CHANNEL_SETUP_RESULT:if(0===t.code)this.signalInfo_.clientIp=n.clientIp,this.signalInfo_.signalIp=n.signalInnerIp,this.signalInfo_.tinyId=t.tinyId,n.svrTime&&function(e){dc=e-(new Date).getTime();var t=new Date;t.setTime(e),sS.info("baseTime from server: "+t+" offset: "+dc)}(n.svrTime),this.log_.info("ChannelSetup Success"),ib.logSuccessEvent({userId:this.userId_,eventType:zp}),this.emitter_.emit($S,{signalInfo:this.signalInfo_});else{var c=new fy({code:py.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:Dg({key:Jf,data:{errorCode:t.code,errorMsg:t.message}})});this.close(),ib.logFailedEvent({userId:this.userId_,eventType:zp,error:c}),this.emitter_.emit(VS,c)}break;case zS.JOIN_ROOM_RESULT:0===t.code&&(this.signalInfo_.relayIp=n.relayOuterIp,this.signalInfo_.relayInnerIp=n.relayInnerIp,this.signalInfo_.relayPort=n.relayPort,this.log_.info("signalIp:".concat(this.signalInfo_.signalIp," clientIp:").concat(this.signalInfo_.clientIp," relayIp: ").concat(this.signalInfo_.relayIp))),this.emitter_.emit(a,{data:t});break;case zS.CHANNEL_RECONNECT_RESULT:0===t.code?(this.log_.warn("reconnect success"),this.stopReconnection(),ib.logSuccessEvent({userId:this.userId_,eventType:Jp}),this.client_.syncUserList(),this.client_.checkConnectionsToReconnect()):(this.log_.warn("reconnect failed, ".concat(t.code," ").concat(t.message)),this.client_.reJoin());break;default:this.emitter_.emit(a,{data:t})}}}},{key:"addSignalEvent",value:function(e,t){Xy(this.userId_,{eventId:e,eventDesc:t,timestamp:uc(),userId:this.userId_,tinyId:this.signalInfo_.tinyId})}},{key:"reconnect",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Jh;if(this.isConnecting_||-1!==this.reconnectionTimer_)this.log_.info("signal channel is reconnecting, ignoring current reconnection");else{if(this.reconnectionCount_>=30){this.log_.warn("SDK has tried reconnect signal channel for ".concat(30," times, but all failed. please check your network"));var i=new fy({code:py.SIGNAL_CHANNEL_RECONNECTION_FAILED,message:Dg({key:zf})});return ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Jp,error:i}),this.addSignalEvent(jy,"signal channel reconnect fail"),void this.emitter_.emit(US,i)}this.isConnecting_=!0,this.reconnectionCount_++,this.currentState_!==HS&&(this.emitConnectionStateChanged(HS),this.addSignalEvent(Fy,"signal channel is reconnecting")),this.log_.warn("reconnecting to ".concat(t," signal channel [").concat(this.reconnectionCount_,"/").concat(30,"]"));var n=this.getReconnectionUrl(t);t===Jh?(this.socket_=new WebSocket(n),this.bindSocket(this.socket_)):(this.backupSocket_=new WebSocket(n),this.bindSocket(this.backupSocket_));var r=Vg(this.reconnectionCount_);this.reconnectionTimer_=setTimeout((function(){e.log_.warn("reconnect ".concat(t," signal channel timeout(").concat(r/1e3,"s), close and try again")),e.isConnecting_=!1,e.clearReconnectionTimer(),e.unbindAndCloseSocket(t),e.reconnect(t===Jh?Kh:Jh)}),r)}}},{key:"isConnected",value:function(){return this.isConnected_}},{key:"isReconnecting_",get:function(){return-1!==this.reconnectionTimer_}},{key:"getReconnectionUrl",value:function(e){var t=e===Jh?this.urlWithParam_:this.backupUrlWithParam_;if(!tb(this.signalInfo_)&&-1===t.indexOf("&rc=1")){var i=this.client_.getRoomId(),n=this.client_.getUseStringRoomId();t+="&rc=1&relayInnerIp=".concat(this.signalInfo_.relayInnerIp,"&relayOuterIp=").concat(this.signalInfo_.relayIp,"&relayPort=").concat(this.signalInfo_.relayPort,"&roomId=").concat(i,"&useStringRoomId=").concat(n)}return t}},{key:"send",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.isConnected_){var i={cmd:e,data:t,userId:this.userId_,tinyId:this.signalInfo_.tinyId,seq:++this.seq_};return this.socketInUse_.send(JSON.stringify(i)),i.seq}}},{key:"sendWaitForResponse",value:function(e){var t=this,i=e.command,n=e.data,r=e.timeout,o=void 0===r?5e3:r,a=e.responseCommand,s=e.commandDesc;return new Promise((function(e,r){var c=setTimeout((function(){t.off(a,l);var e=new fy({code:py.API_CALL_TIMEOUT,message:Dg({key:Gf,data:{commandDesc:s,command:i}})});t.log_.warn(e),r(e)}),o),l=function i(n){n.data.seq===d&&(clearTimeout(c),t.off(a,i),e(n))};t.on(a,l);var d=t.send(i,n)}))}},{key:"sendWaitForResponseWithRetry",value:function(){var e=this,t=arguments.length<=0?void 0:arguments[0],i=t.commandDesc,n=t.retries,r=void 0===n?0:n,o=t.retryTimeout,a=void 0===o?0:o;return rS({retryFunction:this.sendWaitForResponse,onRetrying:function(t){e.log_.warn("".concat(i," timeout observed, retrying [").concat(t,"/").concat(r,"]"))},settings:{retries:r,timeout:a},context:this}).apply(void 0,arguments)}},{key:"getCurrentState",value:function(){return this.currentState_}},{key:"getSignalInfo",value:function(){return this.signalInfo_}},{key:"stopReconnection",value:function(){this.isReconnecting_&&(this.reconnectionCount_=0,this.clearReconnectionTimer())}},{key:"close",value:function(){this.log_.info("close SignalChannel"),this.clearBackupTimer(),this.stopReconnection(),this.isConnecting_=!1,this.isConnected_=!1,this.socketInUse_=null,this.unbindAndCloseSocket(Jh),this.unbindAndCloseSocket(Kh),this.emitConnectionStateChanged(jS)}},{key:"on",value:function(e,t,i){this.emitter_.on(e,t,i)}},{key:"removeListener",value:function(e,t,i){this.emitter_.removeListener(e,t,i)}},{key:"once",value:function(e,t,i){this.emitter_.once(e,t,i)}},{key:"off",value:function(e,t,i){this.emitter_.off(e,t,i)}},{key:"emitConnectionStateChanged",value:function(e){e!==this.currentState_&&(this.emitter_.emit(BS,{prevState:this.currentState_,state:e}),this.currentState_=e)}}]),e}(),rb=Ii.find,ob=!0;"find"in[]&&Array(1).find((function(){ob=!1})),ii({target:"Array",proto:!0,forced:ob},{find:function(e){return rb(this,e,arguments.length>1?arguments[1]:void 0)}}),br("find"),Ao("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bo);var ab=I((function(e){var t=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),(t+=null!=e["network-id"]?" network-id %d":"%v")+(null!=e["network-cost"]?" network-cost %d":"%v")}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",(t+=null!=e.rateNumerator?" rate=%s":"")+(null!=e.rateDenominator?"/%s":"")}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(t).forEach((function(e){t[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}))})),sb=I((function(e,t){var i=function(e){return String(Number(e))===e?Number(e):e},n=function(e,t,n){var r=e.name&&e.names;e.push&&!t[e.push]?t[e.push]=[]:r&&!t[e.name]&&(t[e.name]={});var o=e.push?{}:r?t[e.name]:t;!function(e,t,n,r){if(r&&!n)t[r]=i(e[1]);else for(var o=0;o<n.length;o+=1)null!=e[o+1]&&(t[n[o]]=i(e[o+1]))}(n.match(e.reg),o,e.names,e.name),e.push&&t[e.push].push(o)},r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);t.parse=function(e){var t={},i=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(r).forEach((function(e){var t=e[0],r=e.slice(2);"m"===t&&(i.push({rtp:[],fmtp:[]}),o=i[i.length-1]);for(var a=0;a<(ab[t]||[]).length;a+=1){var s=ab[t][a];if(s.reg.test(r))return n(s,o,r)}})),t.media=i,t};var o=function(e,t){var n=t.split(/=(.+)/,2);return 2===n.length?e[n[0]]=i(n[1]):1===n.length&&t.length>1&&(e[n[0]]=void 0),e};t.parseParams=function(e){return e.split(/;\s?/).reduce(o,{})},t.parseFmtpConfig=t.parseParams,t.parsePayloads=function(e){return e.toString().split(" ").map(Number)},t.parseRemoteCandidates=function(e){for(var t=[],n=e.split(" ").map(i),r=0;r<n.length;r+=3)t.push({component:n[r],ip:n[r+1],port:n[r+2]});return t},t.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(o,{})}))},t.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var t,n=!1;return"~"!==e[0]?t=i(e):(t=i(e.substring(1,e.length)),n=!0),{scid:t,paused:n}}))}))}})),cb=/%[sdv%]/g,lb=function(e){var t=1,i=arguments,n=i.length;return e.replace(cb,(function(e){if(t>=n)return e;var r=i[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(r);case"%d":return Number(r);case"%v":return""}}))},db=function(e,t,i){var n=[e+"="+(t.format instanceof Function?t.format(t.push?i:i[t.name]):t.format)];if(t.names)for(var r=0;r<t.names.length;r+=1){var o=t.names[r];t.name?n.push(i[t.name][o]):n.push(i[t.names[r]])}else n.push(i[t.name]);return lb.apply(null,n)},ub=["v","o","s","i","u","e","p","c","b","t","r","z","a"],hb=["i","c","b","a"],pb={write:function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var i=t.outerOrder||ub,n=t.innerOrder||hb,r=[];return i.forEach((function(t){ab[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(db(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(db(t,i,e))}))}))})),e.media.forEach((function(e){r.push(db("m",ab.m[0],e)),n.forEach((function(t){ab[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(db(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(db(t,i,e))}))}))}))})),r.join("\r\n")+"\r\n"},parse:sb.parse,parseParams:sb.parseParams,parseFmtpConfig:sb.parseFmtpConfig,parsePayloads:sb.parsePayloads,parseRemoteCandidates:sb.parseRemoteCandidates,parseImageAttributes:sb.parseImageAttributes,parseSimulcastStreamList:sb.parseSimulcastStreamList},fb=function(e){return pb.parse(e)},mb=function(e){return pb.write(e)},gb=function(e){var t=fb(e);return t.media.forEach((function(e){e.type===Ph&&e.fmtp.forEach((function(e){e.config+=";sprop-stereo=1;stereo=1"}))})),mb(t)};function vb(e){var t=fb(e);return t.media.forEach((function(e){if(e.type===Ah){var t=new Set;e.rtp.forEach((function(e){var i=e.payload;return"H264"===e.codec&&t.add(i)})),e.fmtp.forEach((function(e){var i=e.payload,n=e.config.match(/apt=(\d+)/);n&&n[1]&&t.has(Number(n[1]))&&t.add(i)}));var i=function(e){var i=e.payload;return!t.has(i)};e.rtp=e.rtp.filter(i),e.rtcpFb=e.rtcpFb.filter(i),e.fmtp=e.fmtp.filter(i),e.payloads=e.payloads.split(" ").filter((function(e){return!t.has(Number(e))})).join(" ")}})),mb(t)}var _b,Sb=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},yb=new(function(){function e(){o(this,e),this.intervalMap_=new Map}return s(e,[{key:"setInterval",value:function(e){function t(t,i){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e,t){var i=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!window||!window.requestAnimationFrame)return setInterval(e,t);var r=Sb(),o=Kg(),a=o;this.intervalMap_.set(r,{rafId:null,timeoutId:null,onVisibilityChange:null});var s=function s(){if(n&&document.hidden){if(e(),!i.intervalMap_.has(r))return;var c=setTimeout(s,t);i.setTimeoutId(r,c),o=Kg(),a=o}else{if((a=Kg())-o>=t&&(o=a,e(),!i.intervalMap_.has(r)))return;var l=requestAnimationFrame(s);i.setRafId(r,l)}},c=requestAnimationFrame(s);if(this.setRafId(r,c),n){var l=function(){if(document.hidden){var e=Kg()-o;if(e>=t)s();else{var n=setTimeout(s,t-e);i.setTimeoutId(r,n)}}};document.addEventListener("visibilitychange",l),this.setOnVisibilityChange(r,l),document.hidden&&l()}return r}))},{key:"clearInterval",value:function(e){if(this.intervalMap_.has(e)){var t=this.intervalMap_.get(e),i=t.rafId,n=t.timeoutId,r=t.onVisibilityChange;cancelAnimationFrame(i),clearTimeout(n),document.removeEventListener("visibilitychange",r),this.intervalMap_.delete(e)}}},{key:"setTimeoutId",value:function(e,t){if(this.intervalMap_.has(e)){var i=this.intervalMap_.get(e);i.timeoutId&&clearTimeout(i.timeoutId),i.timeoutId=t}}},{key:"setRafId",value:function(e,t){if(this.intervalMap_.has(e)){var i=this.intervalMap_.get(e);i.rafId&&cancelAnimationFrame(i.rafId),i.rafId=t}}},{key:"setOnVisibilityChange",value:function(e,t){this.intervalMap_.has(e)&&(this.intervalMap_.get(e).onVisibilityChange=t)}}]),e}()),bb=new(function(){function e(){o(this,e),this.prefix_="TRTC",this.queue_=new Map,this.intervalId_=yb.setInterval(this.doFlush.bind(this),2e4),this.checkStorage()}return s(e,[{key:"getRealKey",value:function(e){return"".concat(this.prefix_,"_").concat(e)}},{key:"checkStorage",value:function(){var e=this;wh()&&Object.keys(localStorage).filter((function(t){if(t.startsWith(e.prefix_)){var i=JSON.parse(localStorage.getItem(t));if(i&&i.expiresIn<Date.now())return!0}return!1})).forEach((function(e){return localStorage.removeItem(e)}))}},{key:"doFlush",value:function(){if(wh())try{var e,t=T(this.queue_);try{for(t.s();!(e=t.n()).done;){var i=S(e.value,2),n=i[0],r=i[1];localStorage.setItem(n,JSON.stringify(r))}}catch(e){t.e(e)}finally{t.f()}}catch(e){sS.warn(e)}}},{key:"getItem",value:function(e){if(!wh())return null;try{var t=JSON.parse(localStorage.getItem(this.getRealKey(e)));return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){sS.warn(e)}}},{key:"setItem",value:function(e,t){if(wh())try{var i={expiresIn:Date.now()+6048e5,value:t};this.queue_.set(this.getRealKey(e),i)}catch(e){sS.warn(e)}}},{key:"deleteItem",value:function(e){if(!wh())return!1;try{return e=this.getRealKey(e),this.queue_.delete(e),localStorage.removeItem(e),!0}catch(e){return sS.warn(e),!1}}},{key:"clear",value:function(){if(wh())try{localStorage.clear()}catch(e){sS.warn(e)}}}]),e}()),kb={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isMediaDevicesSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}};(_b=bb.getItem("checkResult"))&&_b.ua===navigator.userAgent&&(kb=_b.checkResult,Ab());var Tb=function(){return!(th||Mu||Au&&Du<80||Eu&&Ru<56)},Cb=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter((function(e){return e in window})).length>0},wb=function(){if(!navigator.mediaDevices)return!1;var e=["getUserMedia","enumerateDevices"];return e.filter((function(e){return e in navigator.mediaDevices})).length===e.length},Ib=function(){var e=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!kb.detail.isH264EncodeSupported&&!kb.detail.isVp8EncodeSupported){e.next=2;break}return e.abrupt("return",{isH264EncodeSupported:kb.detail.isH264EncodeSupported,isVp8EncodeSupported:kb.detail.isVp8EncodeSupported});case 2:return t="",i=!1,n=!1,e.prev=5,r=new RTCPeerConnection,(o=document.createElement("canvas")).getContext("2d"),a=o.captureStream(0),r.addTrack(a.getVideoTracks()[0],a),e.next=13,r.createOffer();case 13:return-1!==(t=e.sent).sdp.toLowerCase().indexOf("h264")&&(i=!0),-1!==t.sdp.toLowerCase().indexOf("vp8")&&(n=!0),r.close(),kb.detail.isH264EncodeSupported=i,kb.detail.isVp8EncodeSupported=n,e.abrupt("return",{isH264EncodeSupported:kb.detail.isH264EncodeSupported,isVp8EncodeSupported:kb.detail.isVp8EncodeSupported});case 22:return e.prev=22,e.t0=e.catch(5),e.abrupt("return",{isH264EncodeSupported:!1,isVp8EncodeSupported:!1});case 25:case"end":return e.stop()}}),e,null,[[5,22]])})));return function(){return e.apply(this,arguments)}}();function Eb(){return Rb.apply(this,arguments)}function Rb(){return(Rb=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(){var e=r(regeneratorRuntime.mark((function e(t){var i,n,o,a,s,c,l,d,u,h,p,f,m,g;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i={encode:!1,decode:!1},n=null,e.prev=2,o=document.createElement("canvas"),a=o.getContext("2d"),o.width=640,o.height=480,s=setInterval((function(){a.fillText("test",Math.floor(640*Math.random()),Math.floor(480*Math.random()))}),33),c=-1,l=-1,n=function(){clearInterval(c),clearInterval(s),clearTimeout(l),u.close(),h.close(),d.getTracks().forEach((function(e){return e.stop()}))},l=setTimeout((function(){n(),t(i)}),3e3),d=o.captureStream(),u=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),u.addEventListener("icecandidate",(function(e){return h.addIceCandidate(e.candidate)})),h.addEventListener("icecandidate",(function(e){return u.addIceCandidate(e.candidate)})),u.addTrack(d.getVideoTracks()[0],d),e.next=20,u.createOffer();case 20:return p=e.sent,e.next=23,u.setLocalDescription(p);case 23:return e.next=25,h.setRemoteDescription(p);case 25:return e.next=27,h.createAnswer();case 27:return f=e.sent,m=fb(f.sdp),g=m.media[0].rtp.findIndex((function(e){return"H264"===e.codec})),m.media[0].rtp=[m.media[0].rtp[g]],m.media[0].fmtp=m.media[0].fmtp.filter((function(e){return e.payload===m.media[0].rtp[0].payload})),m.media[0].rtcpFb=m.media[0].rtcpFb.filter((function(e){return e.payload===m.media[0].rtp[0].payload})),f.sdp=mb(m),e.next=36,h.setLocalDescription(f);case 36:return e.next=38,u.setRemoteDescription(f);case 38:c=setInterval(r(regeneratorRuntime.mark((function e(){var r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i.encode&&i.decode&&(n(),t(i)),e.next=3,u.getStats();case 3:return r=e.sent,e.next=6,h.getStats();case 6:o=e.sent,i.encode||r.forEach((function(e){"outbound-rtp"===e.type&&e.mediaType===Ah&&e.framesEncoded>0&&(i.encode=!0)})),i.decode||o.forEach((function(e){"inbound-rtp"===e.type&&e.mediaType===Ah&&e.framesDecoded>0&&(i.decode=!0)}));case 9:case"end":return e.stop()}}),e)}))),500),e.next=46;break;case 41:e.prev=41,e.t0=e.catch(2),n(),sS.warn(e.t0),t(i);case 46:case"end":return e.stop()}}),e,null,[[2,41]])})));return function(t){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Mb=function(){var e=r(regeneratorRuntime.mark((function e(){var t,i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!kb.detail.isH264DecodeSupported&&!kb.detail.isVp8DecodeSupported){e.next=2;break}return e.abrupt("return",{isH264DecodeSupported:kb.detail.isH264DecodeSupported,isVp8DecodeSupported:kb.detail.isVp8DecodeSupported});case 2:return t="",i=!1,n=!1,e.prev=5,r=new RTCPeerConnection,e.next=9,r.createOffer({offerToReceiveAudio:1,offerToReceiveVideo:1});case 9:return-1!==(t=e.sent).sdp.toLowerCase().indexOf("h264")&&(i=!0),-1!==t.sdp.toLowerCase().indexOf("vp8")&&(n=!0),r.close(),e.abrupt("return",{isH264DecodeSupported:i,isVp8DecodeSupported:n});case 16:return e.prev=16,e.t0=e.catch(5),e.abrupt("return",{isH264DecodeSupported:!1,isVp8DecodeSupported:!1});case 19:case"end":return e.stop()}}),e,null,[[5,16]])})));return function(){return e.apply(this,arguments)}}(),Pb=function(e,t){var i=null;return function(){if(i)return i;for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(i=e.apply(t||this,r)).then((function(e){return i=null,e})).catch((function(e){throw i=null,e})),i}}(function(){var e=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d,u,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!kb.result){e.next=2;break}return e.abrupt("return",kb);case 2:return t=Tb(),i=Cb(),n=wb(),e.next=7,Ib();case 7:return r=e.sent,o=r.isH264EncodeSupported,a=r.isVp8EncodeSupported,e.next=12,Mb();case 12:if(s=e.sent,c=s.isH264DecodeSupported,l=s.isVp8DecodeSupported,!(o&&c&&(lh||uh||yh)&&!$u&&ph()<79)){e.next=23;break}return e.next=18,Eb();case 18:d=e.sent,u=d.encode,h=d.decode,o=u,c=h;case 23:return kb.result=t&&i&&n&&(o||a)&&(c||l),kb.detail.isBrowserSupported=t,kb.detail.isWebRTCSupported=i,kb.detail.isMediaDevicesSupported=n,kb.detail.isH264EncodeSupported=o,kb.detail.isVp8EncodeSupported=a,kb.detail.isH264DecodeSupported=c,kb.detail.isVp8DecodeSupported=l,Ab(),bb.setItem("checkResult",{ua:navigator.userAgent,checkResult:kb}),e.abrupt("return",kb);case 34:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}());function Ab(){Object.keys(kb.detail).findIndex((function(e){return!kb.detail[e]}))>=0&&sS.error("".concat(navigator.userAgent," ").concat(JSON.stringify(kb.detail)))}var Db=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},Ob=function(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype},xb=function(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype},Lb=function(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype},Nb=function(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype},$b=function(){return"RTCRtpSender"in window&&"setParameters"in window.RTCRtpSender.prototype&&xb()},Vb=function(){return!!Fg(navigator.mediaDevices)&&(sS.error(Mg.NOT_SUPPORTED_MEDIA),!0)},Bb=function(){return"http:"===location.protocol&&!Ch&&(sS.error(Mg.NOT_SUPPORTED_HTTP),!0)},Fb=function(e){return!("candidate-pair"!==e.type||!e.nominated||"in-progress"!==e.state&&"succeeded"!==e.state||Wg(e.selected)&&!e.selected)},Ub=new Map([[Iu,"Android"],[wu,"iOS"],[Xu,"Windows"],[Yu,"MacOS"],[eh,"Linux"]]),jb=function(){var e="unknown";return Ub.get(!0)&&(e=Ub.get(!0)),e};function Wb(){var e="";return screen.width&&(e+=(screen.width?screen.width*window.devicePixelRatio:"")+" * "+(screen.height?screen.height*window.devicePixelRatio:"")),e}function Hb(){var e=!1;return(navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia)&&(e=!0),e}function Gb(){for(var e={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"],i=0;i<t.length;i++)if(t[i]in window){e.isSupported=!0;break}return e.isSupported}function zb(){return!Uu&&!wu&&!(!Tb()||!("captureStream"in HTMLCanvasElement.prototype))}var Jb=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Kb=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype;Pb();var qb="stream-added",Zb="stream-removed",Qb="stream-updated",Xb="stream-subscribed",Yb="error",ek="connection-state-changed",tk="stream-added",ik="stream-removed",nk="stream-updated",rk="stream-subscribed",ok="connection-state-changed",ak="peer-join",sk="peer-leave",ck="mute-audio",lk="mute-video",dk="unmute-audio",uk="unmute-video",hk="client-banned",pk="network-quality",fk="audio-volume",mk="error",gk="player-state-changed",vk="screen-sharing-stopped",_k="connection-state-changed",Sk="error",yk="player-state-changed",bk=function(){function e(t){o(this,e);var i=t.getUserId();this.log_=sS.createLogger({id:i,userId:i,sdkAppId:t.getSDKAppId()}),this.prevReport_={},this.prevEncoderImplementation_="",this.prevQualityLimitationReason_="",this.prevDecoderImplementationMap_=new Map}var t,i,n,a;return s(e,[{key:"getSenderStats",value:(a=r(regeneratorRuntime.mark((function e(t){var i,n,r,o=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0,smallFramesEncoded:0,smallFPSCapture:0,smallFramesSent:0},rtt:0},n=t.getPeerConnection(),r=t.getSSRC(),!n){e.next=14;break}return e.prev=4,e.next=7,n.getStats();case 7:e.sent.forEach((function(e){if("outbound-rtp"===e.type)if(e.mediaType===Ah){if(!Eu&&Fg(e.trackId))return;e.ssrc!==r.video||Fg(e.encoderImplementation)||o.prevEncoderImplementation_===e.encoderImplementation||(o.log_.info("encoderImplementation change to ".concat(e.encoderImplementation)),o.prevEncoderImplementation_=e.encoderImplementation),e.ssrc!==r.video||Fg(e.qualityLimitationReason)||o.prevQualityLimitationReason_===e.qualityLimitationReason||(o.log_.info("qualityLimitationReason change to ".concat(e.qualityLimitationReason)),o.prevQualityLimitationReason_=e.qualityLimitationReason);var n=t.getSSRC();e.ssrc===n.video?(i.video.bytesSent=e.bytesSent,i.video.packetsSent=e.packetsSent,i.video.framesEncoded=e.framesEncoded):(i.video.smallBytesSent=e.bytesSent,i.video.smallFramesEncoded=e.framesEncoded)}else e.mediaType===Ph&&(i.audio.bytesSent=e.bytesSent,i.audio.packetsSent=e.packetsSent);else if("candidate-pair"===e.type)Fb(e)&&jg(e.currentRoundTripTime)&&(i.rtt=Math.floor(1e3*e.currentRoundTripTime));else if("track"===e.type)if(Fg(e.frameWidth)||(e.trackIdentifier===t.getLocalStreamVideoTrackId()?(i.video.frameWidth=e.frameWidth,i.video.frameHeight=e.frameHeight,i.video.framesSent=e.framesSent):(i.video.smallFrameWidth=e.frameWidth,i.video.smallFrameHeight=e.frameHeight,i.video.smallFramesSent=e.framesSent)),Fg(e.audioLevel)){var a;_h&&(i.audio.audioLevel=(null===(a=t.getLocalStream())||void 0===a?void 0:a.getInternalAudioLevel())||0)}else i.audio.audioLevel=e.audioLevel||0;else"media-source"===e.type&&(e.kind===Ph?(i.audio.audioLevel=e.audioLevel||0,i.audio.totalAudioEnergy=e.totalAudioEnergy||0):e.kind===Ah&&(e.trackIdentifier===t.getLocalStreamVideoTrackId()?i.video.fpsCapture=e.framesPerSecond:i.video.smallFPSCapture=e.framesPerSecond))})),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(4),this.log_.warn("failed to getStats on sender connection");case 14:return e.abrupt("return",i);case 15:case"end":return e.stop()}}),e,this,[[4,11]])}))),function(e){return a.apply(this,arguments)})},{key:"getReceiverStats",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i={tinyId:t.getTinyId(),userId:t.getUserId(),rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,jitter:0,audioLevel:0,totalAudioEnergy:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0}},!(n=t.getPeerConnection())){e.next=13;break}return e.prev=3,e.next=6,n.getStats();case 6:e.sent.forEach((function(e){if("inbound-rtp"===e.type){if(e.mediaType===Ph)i.audio.packetsReceived=e.packetsReceived,i.audio.bytesReceived=e.bytesReceived,i.audio.packetsLost=e.packetsLost,i.audio.jitter=e.jitter,i.hasAudio=!0;else if(e.mediaType===Ah){if(Eu&&0===e.bytesReceived)return;var n=t.getSSRC();e.ssrc===n.video&&(i.video.packetsReceived=e.packetsReceived,i.video.bytesReceived=e.bytesReceived,i.video.packetsLost=e.packetsLost,i.video.framesReceived=e.framesReceived,i.video.framesDecoded=e.framesDecoded,i.video.fpsDecoded=e.framesPerSecond,i.hasVideo=!0,!e.decoderImplementation||r.prevDecoderImplementationMap_.has(i.userId)&&r.prevDecoderImplementationMap_.get(i.userId)===e.decoderImplementation||(sS.info("[".concat(i.userId,"] decoderImplementation change to ").concat(e.decoderImplementation)),r.prevDecoderImplementationMap_.set(i.userId,e.decoderImplementation))),e.ssrc===n.auxiliary&&(i.auxiliary.packetsReceived=e.packetsReceived,i.auxiliary.bytesReceived=e.bytesReceived,i.auxiliary.packetsLost=e.packetsLost,i.auxiliary.framesReceived=e.framesReceived,i.auxiliary.framesDecoded=e.framesDecoded,i.auxiliary.fpsDecoded=e.framesPerSecond,i.hasAuxiliary=!0)}}else"track"===e.type?(Fg(e.frameWidth)||(e.trackIdentifier===t.getMainStreamVideoTrackId()&&(i.video.frameWidth=e.frameWidth,i.video.frameHeight=e.frameHeight),e.trackIdentifier===t.getAuxStreamVideoTrackId()&&(i.auxiliary.frameWidth=e.frameWidth,i.auxiliary.frameHeight=e.frameHeight)),Fg(e.audioLevel)||(i.audio.audioLevel=e.audioLevel||0,i.audio.totalAudioEnergy=e.totalAudioEnergy||0)):"candidate-pair"===e.type&&Fb(e)&&jg(e.currentRoundTripTime)&&(i.rtt=Math.floor(1e3*e.currentRoundTripTime))})),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(3),this.log_.warn("failed to getStats on receiver connection");case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}}),e,this,[[3,10]])}))),function(e){return n.apply(this,arguments)})},{key:"getStats",value:(i=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n={},!t){e.next=5;break}return e.next=4,this.getSenderStats(t);case 4:n=e.sent;case 5:r=[],o=T(i),e.prev=7,o.s();case 9:if((a=o.n()).done){e.next=17;break}return(s=S(a.value,2))[0],c=s[1],e.next=13,this.getReceiverStats(c);case 13:l=e.sent,r.push(l);case 15:e.next=9;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(7),o.e(e.t0);case 22:return e.prev=22,o.f(),e.finish(22);case 25:return e.abrupt("return",{senderStats:n,receiverStats:r});case 26:case"end":return e.stop()}}),e,this,[[7,19,22,25]])}))),function(e,t){return i.apply(this,arguments)})},{key:"getDifferenceValue",value:function(e,t){if(tb(e))return t;var i=t-e;return i<0?0:i}},{key:"prepareReport",value:function(e){var t=this,i=e.stats,n=e.report,r=e.freezeMap;if(!tb(i.senderStats)){var o={uint32_audio_level:1e8*i.senderStats.audio.audioLevel,uint32_audio_energy:1e6*i.senderStats.audio.totalAudioEnergy,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent,audioLevel:i.senderStats.audio.audioLevel},a=[],s={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded};if(a.push(s),i.senderStats.video.smallBytesSent){var c={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.video.smallFramesSent||0,uint32_video_capture_fps:i.senderStats.video.smallFPSCapture||0,uint32_video_width:i.senderStats.video.smallFrameWidth||0,uint32_video_height:i.senderStats.video.smallFrameHeight||0,uint32_video_codec_bitrate:i.senderStats.video.smallBytesSent,uint32_video_enc_fps:i.senderStats.video.smallFramesEncoded||0};a.push(c)}var l={uint32_bitrate:"",uint32_rtt:i.senderStats.rtt};n.msg_up_stream_info={msg_audio_status:o,msg_video_status:a,msg_network_status:l}}n.msg_down_stream_info=[],i.receiverStats.forEach((function(e){var t={};if(t.msg_user_info={str_identifier:e.userId,uint64_tinyid:e.tinyId},t.msg_network_status={uint32_rtt:e.rtt},t.msg_video_status={},e.hasAudio){var i={uint32_audio_codec_bitrate:e.audio.bytesReceived,uint32_audio_total_bitrate:e.audio.bytesReceived,uint32_audio_level:1e8*e.audio.audioLevel,uint32_audio_energy:1e6*e.audio.totalAudioEnergy,uint32_audio_receive:e.audio.packetsReceived,uint32_audio_origin_lost:e.audio.packetsLost,audioLevel:e.audio.audioLevel};t.msg_audio_status=i}if(t.msg_video_status=[],e.hasVideo){var o=r.get(e.userId+"_"+mp),a=o?o.duration:0,s={uint32_video_stream_type:2,uint32_video_receive_fps:e.video.framesReceived,uint32_video_width:e.video.frameWidth,uint32_video_height:e.video.frameHeight,uint32_video_codec_bitrate:e.video.bytesReceived,uint32_video_receive:e.video.packetsReceived,uint32_video_origin_lost:e.video.packetsLost,uint32_video_block_time:a,uint32_video_dec_fps:e.video.fpsDecoded};t.msg_video_status.push(s)}if(e.hasAuxiliary){var c=r.get(e.userId+"_"+gp),l=c?c.duration:0,d={uint32_video_stream_type:7,uint32_video_receive_fps:e.auxiliary.framesReceived,uint32_video_width:e.auxiliary.frameWidth,uint32_video_height:e.auxiliary.frameHeight,uint32_video_codec_bitrate:e.auxiliary.bytesReceived,uint32_video_receive:e.auxiliary.packetsReceived+e.auxiliary.packetsLost,uint32_video_origin_lost:e.auxiliary.packetsLost,uint32_video_block_time:l,uint32_video_dec_fps:e.auxiliary.fpsDecoded};t.msg_video_status.push(d)}n.msg_down_stream_info.push(t)}));var d=this.prevReport_;this.prevReport_=JSON.parse(JSON.stringify(n));var u=d.msg_up_stream_info.msg_audio_status,h=n.msg_up_stream_info.msg_audio_status,p=this.getDifferenceValue(u.uint32_audio_codec_bitrate,h.uint32_audio_codec_bitrate);h.uint32_audio_codec_bitrate=8*p/2;var f=d.msg_up_stream_info.msg_video_status;n.msg_up_stream_info.msg_video_status.forEach((function(e,i){var n=f[i],r=0,o=0,a=0;n&&(r=n.uint32_video_codec_bitrate,o=n.uint32_video_enc_fps,a=n.uint32_video_codec_fps);var s=t.getDifferenceValue(r,e.uint32_video_codec_bitrate);e.uint32_video_codec_bitrate=8*s/2,e.uint32_video_enc_fps=t.getDifferenceValue(o,e.uint32_video_enc_fps)/2,e.uint32_video_codec_fps=t.getDifferenceValue(a,e.uint32_video_codec_fps)/2}));var m=n.msg_down_stream_info,g=d.msg_down_stream_info;return m.forEach((function(e){var i=g.find((function(t){return t.msg_user_info.uint64_tinyid===e.msg_user_info.uint64_tinyid}));if(i){if(e.msg_audio_status&&i.msg_audio_status){var n=e.msg_audio_status,r=i.msg_audio_status;n.uint32_audio_origin_lost=t.getDifferenceValue(r.uint32_audio_origin_lost,n.uint32_audio_origin_lost),n.uint32_audio_receive=t.getDifferenceValue(r.uint32_audio_receive,n.uint32_audio_receive),n.uint32_audio_receive+=n.uint32_audio_origin_lost;var o=t.getDifferenceValue(r.uint32_audio_codec_bitrate,n.uint32_audio_codec_bitrate);n.uint32_audio_codec_bitrate=8*o/2,n.uint32_audio_total_bitrate=8*o/2}if(e.msg_video_status&&i.msg_video_status){var a=e.msg_video_status,s=i.msg_video_status;a.forEach((function(e,i){var n=s[i],r=0,o=0,a=0,c=0;n&&(r=n.uint32_video_receive,o=n.uint32_video_origin_lost,a=n.uint32_video_codec_bitrate,c=n.uint32_video_receive_fps),e.uint32_video_origin_lost=t.getDifferenceValue(o,e.uint32_video_origin_lost),e.uint32_video_receive=t.getDifferenceValue(r,e.uint32_video_receive)+e.uint32_video_origin_lost;var l=t.getDifferenceValue(a,e.uint32_video_codec_bitrate);e.uint32_video_codec_bitrate=8*l/2;var d=t.getDifferenceValue(c,e.uint32_video_receive_fps);e.uint32_video_receive_fps=d/2}))}}})),n.msg_up_stream_info.msg_network_status.uint32_bitrate=n.msg_up_stream_info.msg_audio_status.uint32_audio_codec_bitrate+n.msg_up_stream_info.msg_video_status[0].uint32_video_codec_bitrate,n}},{key:"getStatsReport",value:(t=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.uplinkConnection,n=t.downlinkConnections,r=t.freezeMap,o={msg_up_stream_info:{msg_audio_status:{uint32_audio_format:0,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0,audioLevel:0},msg_video_status:[{uint32_video_stream_type:0,uint32_video_codec_fps:0,uint32_video_capture_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_final_lost:0,uint32_video_enc_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0},msg_qos:[{uint32_video_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_bitrate:0,uint32_audio_bitrate:0,uint32_video_stream_type:0}]},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:""},msg_audio_status:{uint32_audio_format:0,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0,audioLevel:0},msg_video_status:[{uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0,uint32_jitter:0},msg_qos:[{uint32_video_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_bitrate:0,uint32_audio_bitrate:0,uint32_video_stream_type:0}]}]},"{}"===JSON.stringify(this.prevReport_)&&(this.prevReport_=JSON.parse(JSON.stringify(o))),e.next=5,this.getStats(i,n);case 5:return a=e.sent,this.prepareReport({stats:a,report:o,freezeMap:r}),e.abrupt("return",o);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})}]),e}(),kk=function(){function e(t){var i=t.signalChannel,n=t.connections,r=t.client;o(this,e),this.client_=r,this.signalChannel_=i,this.connections_=n,this.client_=r,this.log_=sS.createLogger({id:"q|"+this.client_.getUserId(),userId:this.client_.getUserId(),sdkAppId:this.client_.getSDKAppId()}),this.uplinkConnection_=null,this.uplinkNetworkQuality_=0,this.uplinkRTT_=0,this.uplinkLoss_=0,this.downlinkNetworkQuality_=0,this.downlinkRTT_=0,this.downlinkLoss_=0,this.downlinkPrevStatMap_=new Map,this.downlinkLossAndRTTMap_=new Map,this.interval_=-1,this.emitter_=new u_,this.initialize()}var t,i;return s(e,[{key:"uplinkNetworkQuality",get:function(){return this.uplinkNetworkQuality_},set:function(e){e!==this.uplinkNetworkQuality_&&this.log_.info("uplink network quality change ".concat(this.uplinkNetworkQuality," -> ").concat(e,", rtt: ").concat(this.uplinkRTT_,", loss: ").concat(this.uplinkLoss_)),this.uplinkNetworkQuality_=e}},{key:"downlinkNetworkQuality",get:function(){return this.downlinkNetworkQuality_},set:function(e){if(e!==this.downlinkNetworkQuality_){var t=this.getAverageLossAndRTT(y(this.downlinkLossAndRTTMap_.values())),i=t.rtt,n=t.loss;this.log_.info("downlink network quality change ".concat(this.downlinkNetworkQuality," -> ").concat(e,", rtt: ").concat(i,", loss: ").concat(n))}this.downlinkNetworkQuality_=e}},{key:"initialize",value:function(){var e=this;this.signalChannel_.on(KS.UPLINK_NETWORK_STATS,(function(t){e.handleUplinkNetworkQuality(t)})),this.signalChannel_.on(BS,this.handleSignalConnectionStateChange.bind(this)),this.start()}},{key:"handleUplinkNetworkQuality",value:function(e){if(!this.uplinkConnection_)return this.uplinkNetworkQuality=0,this.uplinkLoss_=0,void(this.uplinkRTT_=0);var t=this.uplinkConnection_.getPeerConnection();if(t&&this.isPeerConnectionDisconnected(t))return this.uplinkNetworkQuality=6,this.uplinkLoss_=0,void(this.uplinkRTT_=0);if(0===e.data.code){var i=e.data.data,n=i.expectAudPkg+i.expectVidPkg,r=i.recvAudPkg+i.recvVidPkg,o=n-r,a=i.delay;if(a&&this.updateDelay(a),0===n&&0===r)return;this.uplinkLoss_=o<=0?0:Math.round(o/n*100),this.uplinkRTT_=i.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss_,this.uplinkRTT_)}}},{key:"handleDownlinkNetworkQuality",value:(i=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d,u,h,p,f,m,g=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.connections_&&0!==this.connections_.size){e.next=3;break}return this.downlinkNetworkQuality=0,e.abrupt("return");case 3:if(t=y(this.connections_.values()),i=t.filter((function(e){return e.getPeerConnection()&&e.getPeerConnection().connectionState===Ip})),t.filter((function(e){return e.getPeerConnection()&&g.isPeerConnectionDisconnected(e.getPeerConnection())})).length!==t.length){e.next=9;break}return this.downlinkNetworkQuality=6,e.abrupt("return");case 9:n=0;case 10:if(!(n<i.length)){e.next=31;break}return r=i[n].getPeerConnection(),e.next=14,this.getStat(r);case 14:if(o=e.sent,a=o.rtt,s=o.totalPacketsLost,c=o.totalPacketsReceived,this.downlinkPrevStatMap_.has(r)){e.next=21;break}return this.downlinkPrevStatMap_.set(r,{totalPacketsLost:s,totalPacketsReceived:c}),e.abrupt("continue",28);case 21:l=0,d=this.downlinkPrevStatMap_.get(r),u=s-d.totalPacketsLost,h=c-d.totalPacketsReceived,l=u<=0||h<0?0:Math.round(u/(u+h)*100),this.downlinkPrevStatMap_.set(r,{totalPacketsLost:s,totalPacketsReceived:c}),this.downlinkLossAndRTTMap_.set(r,{rtt:a,loss:l,userId:i[n].getUserId()});case 28:n++,e.next=10;break;case 31:if(y(this.downlinkPrevStatMap_.keys()).forEach((function(e){g.isPeerConnectionDisconnected(e)&&(g.downlinkPrevStatMap_.delete(e),g.downlinkLossAndRTTMap_.delete(e))})),0!==this.downlinkLossAndRTTMap_.size){e.next=34;break}return e.abrupt("return");case 34:p=this.getAverageLossAndRTT(y(this.downlinkLossAndRTTMap_.values())),f=p.rtt,m=p.loss,this.downlinkRTT_=f,this.downlinkLoss_=m,this.downlinkNetworkQuality=this.getNetworkQuality(m,f);case 38:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"getStat",value:(t=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i={rtt:0,totalPacketsLost:0,totalPacketsReceived:0},t&&Ob()){e.next=3;break}return e.abrupt("return",i);case 3:n=t.getReceivers(),e.prev=4,r=0;case 6:if(!(r<n.length)){e.next=15;break}return o=n[r],e.next=10,o.getStats();case 10:e.sent.forEach((function(e){"candidate-pair"===e.type&&jg(e.currentRoundTripTime)&&(i.rtt=Math.round(1e3*e.currentRoundTripTime)),"inbound-rtp"!==e.type||e.mediaType!==Ph&&e.mediaType!==Ah||(i.totalPacketsLost+=e.packetsLost,i.totalPacketsReceived+=e.packetsReceived)}));case 12:r++,e.next=6;break;case 15:return e.abrupt("return",i);case 18:return e.prev=18,e.t0=e.catch(4),e.abrupt("return",i);case 21:case"end":return e.stop()}}),e,null,[[4,18]])}))),function(e){return t.apply(this,arguments)})},{key:"getAverageLossAndRTT",value:function(e){var t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach((function(e){t.rtt+=e.rtt,t.loss+=e.loss})),Object.keys(t).forEach((function(i){t[i]=Math.round(t[i]/e.length)}))),t}},{key:"getNetworkQuality",value:function(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}},{key:"handleSignalConnectionStateChange",value:function(e){e.state===jS?(this.uplinkRTT_=0,this.uplinkLoss_=0,this.uplinkNetworkQuality=6):e.state===GS&&6===this.uplinkNetworkQuality&&(this.uplinkNetworkQuality=5)}},{key:"handleUplinkConnectionStateChange",value:function(e){var t=e.state;t===vp?(this.uplinkLoss_=0,this.uplinkRTT_=0,this.uplinkNetworkQuality=6):t===yp&&6===this.uplinkNetworkQuality&&(this.uplinkNetworkQuality=5)}},{key:"isPeerConnectionDisconnected",value:function(e){return!(!e||e.connectionState!==wp&&e.connectionState!==Tp&&e.connectionState!==Cp)}},{key:"setUplinkConnection",value:function(e){this.uplinkConnection_=e,this.uplinkConnection_?this.uplinkConnection_.on(ek,this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT_=0,this.uplinkLoss_=0)}},{key:"start",value:function(){var e=this;-1===this.interval_?(this.log_.info("start network quality calculating"),this.interval_=yb.setInterval((function(){e.handleDownlinkNetworkQuality(),h_.emit(eS,{client:e.client_,uplinkNetworkQuality:e.uplinkNetworkQuality,downlinkNetworkQuality:e.downlinkNetworkQuality,uplinkRTT:e.uplinkRTT_,uplinkLoss:e.uplinkLoss_,downlinkRTT:e.downlinkRTT_,downlinkLoss:e.downlinkLoss_,downlinkLossAndRTTMap:e.downlinkLossAndRTTMap_}),e.emitter_.emit(pk,{uplinkNetworkQuality:e.uplinkNetworkQuality,downlinkNetworkQuality:e.downlinkNetworkQuality,uplinkRTT:e.uplinkRTT_,uplinkLoss:e.uplinkLoss_,downlinkRTT:e.downlinkRTT_,downlinkLoss:e.downlinkLoss_})}),2e3)):this.log_.info("network quality calculating is already started")}},{key:"stop",value:function(){this.log_.info("stop network quality calculating"),-1!==this.interval_&&(yb.clearInterval(this.interval_),this.interval_=-1)}},{key:"on",value:function(e,t){this.emitter_.on(e,t)}},{key:"updateDelay",value:function(e){var t=this;e.forEach((function(e){var i=e.srcTinyId,n=e.videoDelay,r=e.audioDelay,o=t.connections_.get(i);o&&o.setDelay({videoDelay:n,audioDelay:r})}))}}]),e}(),Tk=function(){function e(t){o(this,e),this.log_=sS.createLogger({id:t.client.getUserId(),userId:t.client.getUserId(),sdkAppId:t.client.getSDKAppId()}),this.localStream_=null,this.prevDevices_=[],this.initialize()}var t,i,n;return s(e,[{key:"initialize",value:(n=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",this.onDeviceChange.bind(this));case 1:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"onDeviceChange",value:(i=r(regeneratorRuntime.mark((function e(){var t,i,n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.localStream_&&this.localStream_.getMediaStream()&&!this.localStream_.getScreen()){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,DI.getDevices();case 4:t=e.sent,i=t.filter((function(e){return r.prevDevices_.findIndex((function(t){var i=t.deviceId;return e.deviceId===i}))<0})),n=this.prevDevices_.filter((function(e){return t.findIndex((function(t){var i=t.deviceId;return e.deviceId===i}))<0})),i.length>0&&this.handleDeviceAdded(this.prevDevices_,i),n.length>0&&this.handleDeviceRemoved(t,n),this.prevDevices_=t;case 10:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"setLocalStream",value:(t=r(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=4;break}return e.next=3,DI.getDevices();case 3:this.prevDevices_=e.sent;case 4:this.localStream_=t;case 5:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"handleDeviceAdded",value:function(e,t){this.log_.warn("devicesAdded: ".concat(JSON.stringify(t))),this.localStream_.updateDeviceIdInUse();var i=t.filter((function(e){return e.kind===Hh})),n=t.filter((function(e){return e.kind===Wh})),r=e.filter((function(e){return e.kind===Hh})),o=e.filter((function(e){return e.kind===Wh})),a=i.length>0&&0===r.length&&this.localStream_.getVideo(),s=n.length>0&&0===o.length&&this.localStream_.getAudio();if(s&&a)return this.log_.info("new microphone and camera detected, but there was no device before."),void this.localStream_.updateStream({audio:!0,video:!0,cameraId:i[0].deviceId,microphoneId:n[0].deviceId});a&&(this.log_.info("new camera detected, but there was no camera before."),this.localStream_.updateStream({audio:!1,video:!0,cameraId:i[0].deviceId})),s&&(this.log_.info("new microphone detected, but there was no microphone before."),this.localStream_.updateStream({audio:!0,video:!1,microphoneId:n[0].deviceId}))}},{key:"handleDeviceRemoved",value:function(e,t){this.log_.warn("devicesRemoved: ".concat(JSON.stringify(t))),this.localStream_.updateDeviceIdInUse();var i=!1,n=!1,r=this.localStream_.getCameraId(),o=this.localStream_.getMicrophoneId();if("default"===o){var a=this.localStream_.getMicrophoneGroupId(),s=e.filter((function(e){return"default"===e.deviceId&&e.kind===Wh}))[0];s&&s.groupId!==a&&(n=!0)}if(t.forEach((function(e){var t=e.deviceId;r.length>0&&t===r?i=!0:o.length>0&&t===o&&(n=!0)})),i&&n)return this.log_.warn("current camera and microphone in use is lost, cameraId: ".concat(r,", microphoneId: ").concat(o)),void((this.localStream_.getAudio()||this.localStream_.getVideo())&&this.localStream_.updateStream({video:!0,audio:!0}));i&&(this.log_.warn("current camera in use is lost, deviceId: ".concat(r)),this.localStream_.getVideo()&&this.localStream_.updateStream({video:!0,audio:!1})),n&&(this.log_.warn("current microphone in use is lost, deviceId: ".concat(o)),this.localStream_.getAudio()&&this.localStream_.updateStream({video:!1,audio:!0}))}}]),e}(),Ck=P.RangeError,wk=P.RangeError,Ik=P.String,Ek=Math.floor,Rk=H((function(e){var t=Uo(X(this)),i="",n=Mt(e);if(n<0||1/0==n)throw Ck("Wrong number of repetitions");for(;n>0;(n>>>=1)&&(t+=t))1&n&&(i+=t);return i})),Mk=H("".slice),Pk=H(1..toFixed),Ak=function(e,t,i){return 0===t?i:t%2==1?Ak(e,t-1,i*e):Ak(e*e,t/2,i)},Dk=function(e,t,i){for(var n=-1,r=i;++n<6;)r+=t*e[n],e[n]=r%1e7,r=Ek(r/1e7)},Ok=function(e,t){for(var i=6,n=0;--i>=0;)n+=e[i],e[i]=Ek(n/t),n=n%t*1e7},xk=function(e){for(var t=6,i="";--t>=0;)if(""!==i||0===t||0!==e[t]){var n=Ik(e[t]);i=""===i?n:i+Rk("0",7-n.length)+n}return i},Lk=A((function(){return"0.000"!==Pk(8e-5,3)||"1"!==Pk(.9,0)||"1.25"!==Pk(1.255,2)||"1000000000000000128"!==Pk(0xde0b6b3a7640080,0)}))||!A((function(){Pk({})}));ii({target:"Number",proto:!0,forced:Lk},{toFixed:function(e){var t,i,n,r,o=Hc(this),a=Mt(e),s=[0,0,0,0,0,0],c="",l="0";if(a<0||a>20)throw wk("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return Ik(o);if(o<0&&(c="-",o=-o),o>1e-21)if(i=(t=function(e){for(var t=0,i=e;i>=4096;)t+=12,i/=4096;for(;i>=2;)t+=1,i/=2;return t}(o*Ak(2,69,1))-69)<0?o*Ak(2,-t,1):o/Ak(2,t,1),i*=4503599627370496,(t=52-t)>0){for(Dk(s,0,i),n=a;n>=7;)Dk(s,1e7,0),n-=7;for(Dk(s,Ak(10,n,1),0),n=t-1;n>=23;)Ok(s,1<<23),n-=23;Ok(s,1<<n),Dk(s,1,1),Ok(s,2),l=xk(s)}else Dk(s,0,i),Dk(s,1<<-t,0),l=xk(s)+Rk("0",a);return a>0?c+((r=l.length)<=a?"0."+Rk("0",a-r)+l:Mk(l,0,r-a)+"."+Mk(l,r-a)):c+l}});var Nk,$k=function(e,t,i){return i.get&&wt(i.get,t,{getter:!0}),i.set&&wt(i.set,t,{setter:!0}),tt.f(e,t,i)},Vk=Object.assign,Bk=Object.defineProperty,Fk=H([].concat),Uk=!Vk||A((function(){if(D&&1!==Vk({b:1},Vk(Bk({},"a",{enumerable:!0,get:function(){Bk(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},i=Symbol();return e[i]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=Vk({},e)[i]||"abcdefghijklmnopqrst"!=sr(Vk({},t)).join("")}))?function(e,t){for(var i=Ie(e),n=arguments.length,r=1,o=Ht.f,a=V.f;n>r;)for(var s,c=Z(arguments[r++]),l=o?Fk(sr(c),o(c)):sr(c),d=l.length,u=0;d>u;)s=l[u++],D&&!L(a,c,s)||(i[s]=c[s]);return i}:Vk,jk=function(e,t,i,n){try{return n?t(Qe(i)[0],i[1]):t(i)}catch(t){_o(e,"throw",t)}},Wk=P.Array,Hk=function(e){var t=Ie(e),i=yi(this),n=arguments.length,r=n>1?arguments[1]:void 0,o=void 0!==r;o&&(r=ri(r,n>2?arguments[2]:void 0));var a,s,c,l,d,u,h=mo(t),p=0;if(!h||this==Wk&&po(h))for(a=Lt(t),s=i?new this(a):Wk(a);a>p;p++)u=o?r(t[p],p):t[p],Xr(s,p,u);else for(d=(l=vo(t,h)).next,s=i?new this:[];!(c=L(d,l)).done;p++)u=o?jk(l,r,[c.value,p],!0):c.value,Xr(s,p,u);return s.length=p,s},Gk=/[^\0-\u007E]/,zk=/[.\u3002\uFF0E\uFF61]/g,Jk="Overflow: input needs wider integers to process",Kk=P.RangeError,qk=H(zk.exec),Zk=Math.floor,Qk=String.fromCharCode,Xk=H("".charCodeAt),Yk=H([].join),eT=H([].push),tT=H("".replace),iT=H("".split),nT=H("".toLowerCase),rT=function(e){return e+22+75*(e<26)},oT=function(e,t,i){var n=0;for(e=i?Zk(e/700):e>>1,e+=Zk(e/t);e>455;)e=Zk(e/35),n+=36;return Zk(n+36*e/(e+38))},aT=function(e){var t,i,n=[],r=(e=function(e){for(var t=[],i=0,n=e.length;i<n;){var r=Xk(e,i++);if(r>=55296&&r<=56319&&i<n){var o=Xk(e,i++);56320==(64512&o)?eT(t,((1023&r)<<10)+(1023&o)+65536):(eT(t,r),i--)}else eT(t,r)}return t}(e)).length,o=128,a=0,s=72;for(t=0;t<e.length;t++)(i=e[t])<128&&eT(n,Qk(i));var c=n.length,l=c;for(c&&eT(n,"-");l<r;){var d=2147483647;for(t=0;t<e.length;t++)(i=e[t])>=o&&i<d&&(d=i);var u=l+1;if(d-o>Zk((2147483647-a)/u))throw Kk(Jk);for(a+=(d-o)*u,o=d,t=0;t<e.length;t++){if((i=e[t])<o&&++a>2147483647)throw Kk(Jk);if(i==o){for(var h=a,p=36;;){var f=p<=s?1:p>=s+26?26:p-s;if(h<f)break;var m=h-f,g=36-f;eT(n,Qk(rT(f+m%g))),h=Zk(m/g),p+=36}eT(n,Qk(rT(h))),s=oT(a,u,l==c),a=0,l++}}a++,o++}return Yk(n,"")},sT=zo.codeAt,cT=Ct.set,lT=Ct.getterFor("URL"),dT=cc.URLSearchParams,uT=cc.getState,hT=P.URL,pT=P.TypeError,fT=P.parseInt,mT=Math.floor,gT=Math.pow,vT=H("".charAt),_T=H(/./.exec),ST=H([].join),yT=H(1..toString),bT=H([].pop),kT=H([].push),TT=H("".replace),CT=H([].shift),wT=H("".split),IT=H("".slice),ET=H("".toLowerCase),RT=H([].unshift),MT=/[a-z]/i,PT=/[\d+-.a-z]/i,AT=/\d/,DT=/^0x/i,OT=/^[0-7]+$/,xT=/^\d+$/,LT=/^[\da-f]+$/i,NT=/[\0\t\n\r #%/:<>?@[\\\]^|]/,$T=/[\0\t\n\r #/:<>?@[\\\]^|]/,VT=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,BT=/[\t\n\r]/g,FT=function(e){var t,i,n,r;if("number"==typeof e){for(t=[],i=0;i<4;i++)RT(t,e%256),e=mT(e/256);return ST(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,i=1,n=null,r=0,o=0;o<8;o++)0!==e[o]?(r>i&&(t=n,i=r),n=null,r=0):(null===n&&(n=o),++r);return r>i&&(t=n,i=r),t}(e),i=0;i<8;i++)r&&0===e[i]||(r&&(r=!1),n===i?(t+=i?":":"::",r=!0):(t+=yT(e[i],16),i<7&&(t+=":")));return"["+t+"]"}return e},UT={},jT=Uk({},UT,{" ":1,'"':1,"<":1,">":1,"`":1}),WT=Uk({},jT,{"#":1,"?":1,"{":1,"}":1}),HT=Uk({},WT,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),GT=function(e,t){var i=sT(e,0);return i>32&&i<127&&!Re(t,e)?e:encodeURIComponent(e)},zT={ftp:21,file:null,http:80,https:443,ws:80,wss:443},JT=function(e,t){var i;return 2==e.length&&_T(MT,vT(e,0))&&(":"==(i=vT(e,1))||!t&&"|"==i)},KT=function(e){var t;return e.length>1&&JT(IT(e,0,2))&&(2==e.length||"/"===(t=vT(e,2))||"\\"===t||"?"===t||"#"===t)},qT=function(e){return"."===e||"%2e"===ET(e)},ZT={},QT={},XT={},YT={},eC={},tC={},iC={},nC={},rC={},oC={},aC={},sC={},cC={},lC={},dC={},uC={},hC={},pC={},fC={},mC={},gC={},vC=function(e,t,i){var n,r,o,a=Uo(e);if(t){if(r=this.parse(a))throw pT(r);this.searchParams=null}else{if(void 0!==i&&(n=new vC(i,!0)),r=this.parse(a,null,n))throw pT(r);(o=uT(new dT)).bindURL(this),this.searchParams=o}};vC.prototype={type:"URL",parse:function(e,t,i){var n,r,o,a,s,c=this,l=t||ZT,d=0,u="",h=!1,p=!1,f=!1;for(e=Uo(e),t||(c.scheme="",c.username="",c.password="",c.host=null,c.port=null,c.path=[],c.query=null,c.fragment=null,c.cannotBeABaseURL=!1,e=TT(e,VT,"")),e=TT(e,BT,""),n=Hk(e);d<=n.length;){switch(r=n[d],l){case ZT:if(!r||!_T(MT,r)){if(t)return"Invalid scheme";l=XT;continue}u+=ET(r),l=QT;break;case QT:if(r&&(_T(PT,r)||"+"==r||"-"==r||"."==r))u+=ET(r);else{if(":"!=r){if(t)return"Invalid scheme";u="",l=XT,d=0;continue}if(t&&(c.isSpecial()!=Re(zT,u)||"file"==u&&(c.includesCredentials()||null!==c.port)||"file"==c.scheme&&!c.host))return;if(c.scheme=u,t)return void(c.isSpecial()&&zT[c.scheme]==c.port&&(c.port=null));u="","file"==c.scheme?l=lC:c.isSpecial()&&i&&i.scheme==c.scheme?l=YT:c.isSpecial()?l=nC:"/"==n[d+1]?(l=eC,d++):(c.cannotBeABaseURL=!0,kT(c.path,""),l=fC)}break;case XT:if(!i||i.cannotBeABaseURL&&"#"!=r)return"Invalid scheme";if(i.cannotBeABaseURL&&"#"==r){c.scheme=i.scheme,c.path=to(i.path),c.query=i.query,c.fragment="",c.cannotBeABaseURL=!0,l=gC;break}l="file"==i.scheme?lC:tC;continue;case YT:if("/"!=r||"/"!=n[d+1]){l=tC;continue}l=rC,d++;break;case eC:if("/"==r){l=oC;break}l=pC;continue;case tC:if(c.scheme=i.scheme,r==Nk)c.username=i.username,c.password=i.password,c.host=i.host,c.port=i.port,c.path=to(i.path),c.query=i.query;else if("/"==r||"\\"==r&&c.isSpecial())l=iC;else if("?"==r)c.username=i.username,c.password=i.password,c.host=i.host,c.port=i.port,c.path=to(i.path),c.query="",l=mC;else{if("#"!=r){c.username=i.username,c.password=i.password,c.host=i.host,c.port=i.port,c.path=to(i.path),c.path.length--,l=pC;continue}c.username=i.username,c.password=i.password,c.host=i.host,c.port=i.port,c.path=to(i.path),c.query=i.query,c.fragment="",l=gC}break;case iC:if(!c.isSpecial()||"/"!=r&&"\\"!=r){if("/"!=r){c.username=i.username,c.password=i.password,c.host=i.host,c.port=i.port,l=pC;continue}l=oC}else l=rC;break;case nC:if(l=rC,"/"!=r||"/"!=vT(u,d+1))continue;d++;break;case rC:if("/"!=r&&"\\"!=r){l=oC;continue}break;case oC:if("@"==r){h&&(u="%40"+u),h=!0,o=Hk(u);for(var m=0;m<o.length;m++){var g=o[m];if(":"!=g||f){var v=GT(g,HT);f?c.password+=v:c.username+=v}else f=!0}u=""}else if(r==Nk||"/"==r||"?"==r||"#"==r||"\\"==r&&c.isSpecial()){if(h&&""==u)return"Invalid authority";d-=Hk(u).length+1,u="",l=aC}else u+=r;break;case aC:case sC:if(t&&"file"==c.scheme){l=uC;continue}if(":"!=r||p){if(r==Nk||"/"==r||"?"==r||"#"==r||"\\"==r&&c.isSpecial()){if(c.isSpecial()&&""==u)return"Invalid host";if(t&&""==u&&(c.includesCredentials()||null!==c.port))return;if(a=c.parseHost(u))return a;if(u="",l=hC,t)return;continue}"["==r?p=!0:"]"==r&&(p=!1),u+=r}else{if(""==u)return"Invalid host";if(a=c.parseHost(u))return a;if(u="",l=cC,t==sC)return}break;case cC:if(!_T(AT,r)){if(r==Nk||"/"==r||"?"==r||"#"==r||"\\"==r&&c.isSpecial()||t){if(""!=u){var _=fT(u,10);if(_>65535)return"Invalid port";c.port=c.isSpecial()&&_===zT[c.scheme]?null:_,u=""}if(t)return;l=hC;continue}return"Invalid port"}u+=r;break;case lC:if(c.scheme="file","/"==r||"\\"==r)l=dC;else{if(!i||"file"!=i.scheme){l=pC;continue}if(r==Nk)c.host=i.host,c.path=to(i.path),c.query=i.query;else if("?"==r)c.host=i.host,c.path=to(i.path),c.query="",l=mC;else{if("#"!=r){KT(ST(to(n,d),""))||(c.host=i.host,c.path=to(i.path),c.shortenPath()),l=pC;continue}c.host=i.host,c.path=to(i.path),c.query=i.query,c.fragment="",l=gC}}break;case dC:if("/"==r||"\\"==r){l=uC;break}i&&"file"==i.scheme&&!KT(ST(to(n,d),""))&&(JT(i.path[0],!0)?kT(c.path,i.path[0]):c.host=i.host),l=pC;continue;case uC:if(r==Nk||"/"==r||"\\"==r||"?"==r||"#"==r){if(!t&&JT(u))l=pC;else if(""==u){if(c.host="",t)return;l=hC}else{if(a=c.parseHost(u))return a;if("localhost"==c.host&&(c.host=""),t)return;u="",l=hC}continue}u+=r;break;case hC:if(c.isSpecial()){if(l=pC,"/"!=r&&"\\"!=r)continue}else if(t||"?"!=r)if(t||"#"!=r){if(r!=Nk&&(l=pC,"/"!=r))continue}else c.fragment="",l=gC;else c.query="",l=mC;break;case pC:if(r==Nk||"/"==r||"\\"==r&&c.isSpecial()||!t&&("?"==r||"#"==r)){if(".."===(s=ET(s=u))||"%2e."===s||".%2e"===s||"%2e%2e"===s?(c.shortenPath(),"/"==r||"\\"==r&&c.isSpecial()||kT(c.path,"")):qT(u)?"/"==r||"\\"==r&&c.isSpecial()||kT(c.path,""):("file"==c.scheme&&!c.path.length&&JT(u)&&(c.host&&(c.host=""),u=vT(u,0)+":"),kT(c.path,u)),u="","file"==c.scheme&&(r==Nk||"?"==r||"#"==r))for(;c.path.length>1&&""===c.path[0];)CT(c.path);"?"==r?(c.query="",l=mC):"#"==r&&(c.fragment="",l=gC)}else u+=GT(r,WT);break;case fC:"?"==r?(c.query="",l=mC):"#"==r?(c.fragment="",l=gC):r!=Nk&&(c.path[0]+=GT(r,UT));break;case mC:t||"#"!=r?r!=Nk&&("'"==r&&c.isSpecial()?c.query+="%27":c.query+="#"==r?"%23":GT(r,UT)):(c.fragment="",l=gC);break;case gC:r!=Nk&&(c.fragment+=GT(r,jT))}d++}},parseHost:function(e){var t,i,n;if("["==vT(e,0)){if("]"!=vT(e,e.length-1))return"Invalid host";if(!(t=function(e){var t,i,n,r,o,a,s,c=[0,0,0,0,0,0,0,0],l=0,d=null,u=0,h=function(){return vT(e,u)};if(":"==h()){if(":"!=vT(e,1))return;u+=2,d=++l}for(;h();){if(8==l)return;if(":"!=h()){for(t=i=0;i<4&&_T(LT,h());)t=16*t+fT(h(),16),u++,i++;if("."==h()){if(0==i)return;if(u-=i,l>6)return;for(n=0;h();){if(r=null,n>0){if(!("."==h()&&n<4))return;u++}if(!_T(AT,h()))return;for(;_T(AT,h());){if(o=fT(h(),10),null===r)r=o;else{if(0==r)return;r=10*r+o}if(r>255)return;u++}c[l]=256*c[l]+r,2!=++n&&4!=n||l++}if(4!=n)return;break}if(":"==h()){if(u++,!h())return}else if(h())return;c[l++]=t}else{if(null!==d)return;u++,d=++l}}if(null!==d)for(a=l-d,l=7;0!=l&&a>0;)s=c[l],c[l--]=c[d+a-1],c[d+--a]=s;else if(8!=l)return;return c}(IT(e,1,-1))))return"Invalid host";this.host=t}else if(this.isSpecial()){if(e=function(e){var t,i,n=[],r=iT(tT(nT(e),zk,"."),".");for(t=0;t<r.length;t++)i=r[t],eT(n,qk(Gk,i)?"xn--"+aT(i):i);return Yk(n,".")}(e),_T(NT,e))return"Invalid host";if(null===(t=function(e){var t,i,n,r,o,a,s,c=wT(e,".");if(c.length&&""==c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(i=[],n=0;n<t;n++){if(""==(r=c[n]))return e;if(o=10,r.length>1&&"0"==vT(r,0)&&(o=_T(DT,r)?16:8,r=IT(r,8==o?1:2)),""===r)a=0;else{if(!_T(10==o?xT:8==o?OT:LT,r))return e;a=fT(r,o)}kT(i,a)}for(n=0;n<t;n++)if(a=i[n],n==t-1){if(a>=gT(256,5-t))return null}else if(a>255)return null;for(s=bT(i),n=0;n<i.length;n++)s+=i[n]*gT(256,3-n);return s}(e)))return"Invalid host";this.host=t}else{if(_T($T,e))return"Invalid host";for(t="",i=Hk(e),n=0;n<i.length;n++)t+=GT(i[n],UT);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Re(zT,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&JT(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,i=e.username,n=e.password,r=e.host,o=e.port,a=e.path,s=e.query,c=e.fragment,l=t+":";return null!==r?(l+="//",e.includesCredentials()&&(l+=i+(n?":"+n:"")+"@"),l+=FT(r),null!==o&&(l+=":"+o)):"file"==t&&(l+="//"),l+=e.cannotBeABaseURL?a[0]:a.length?"/"+ST(a,"/"):"",null!==s&&(l+="?"+s),null!==c&&(l+="#"+c),l},setHref:function(e){var t=this.parse(e);if(t)throw pT(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new _C(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+FT(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(Uo(e)+":",ZT)},getUsername:function(){return this.username},setUsername:function(e){var t=Hk(Uo(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var i=0;i<t.length;i++)this.username+=GT(t[i],HT)}},getPassword:function(){return this.password},setPassword:function(e){var t=Hk(Uo(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var i=0;i<t.length;i++)this.password+=GT(t[i],HT)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?FT(e):FT(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,aC)},getHostname:function(){var e=this.host;return null===e?"":FT(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,sC)},getPort:function(){var e=this.port;return null===e?"":Uo(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=Uo(e))?this.port=null:this.parse(e,cC))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+ST(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,hC))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=Uo(e))?this.query=null:("?"==vT(e,0)&&(e=IT(e,1)),this.query="",this.parse(e,mC)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=Uo(e))?("#"==vT(e,0)&&(e=IT(e,1)),this.fragment="",this.parse(e,gC)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var _C=function(e){var t=Co(this,SC),i=Yn(arguments.length,1)>1?arguments[1]:void 0,n=cT(t,new vC(e,!1,i));D||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},SC=_C.prototype,yC=function(e,t){return{get:function(){return lT(this)[e]()},set:t&&function(e){return lT(this)[t](e)},configurable:!0,enumerable:!0}};if(D&&($k(SC,"href",yC("serialize","setHref")),$k(SC,"origin",yC("getOrigin")),$k(SC,"protocol",yC("getProtocol","setProtocol")),$k(SC,"username",yC("getUsername","setUsername")),$k(SC,"password",yC("getPassword","setPassword")),$k(SC,"host",yC("getHost","setHost")),$k(SC,"hostname",yC("getHostname","setHostname")),$k(SC,"port",yC("getPort","setPort")),$k(SC,"pathname",yC("getPathname","setPathname")),$k(SC,"search",yC("getSearch","setSearch")),$k(SC,"searchParams",yC("getSearchParams")),$k(SC,"hash",yC("getHash","setHash"))),It(SC,"toJSON",(function(){return lT(this).serialize()}),{enumerable:!0}),It(SC,"toString",(function(){return lT(this).serialize()}),{enumerable:!0}),hT){var bC=hT.createObjectURL,kC=hT.revokeObjectURL;bC&&It(_C,"createObjectURL",ri(bC,hT)),kC&&It(_C,"revokeObjectURL",ri(kC,hT))}Or(_C,"URL"),ii({global:!0,constructor:!0,forced:!gs,sham:!D},{URL:_C});var TC,CC,wC,IC=new Blob(["class VolumeMeter extends AudioWorkletProcessor{constructor(){super();this.volume=0;this.intervalTime=200;this.tick=this.intervalTime;this.isStop=false;this.port.onmessage=event=>{const{data}=event;switch(data.name){case'setIntervalTime':this.intervalTime=data.intervalTime;break;case'stop':this.isStop=true;break}}}process(inputs){const input=inputs[0];if(this.isStop){return false}if(input.length>0){const firstChannel=input[0];let sum=0;let rms;for(let i=0;i<firstChannel.length;++i){sum+=firstChannel[i]*firstChannel[i]}rms=Math.sqrt(sum/firstChannel.length);this.volume=Math.max(rms,this.volume*0.95);this.tick-=firstChannel.length;if(this.tick<0){this.tick+=(this.intervalTime/1000)*sampleRate;this.port.postMessage({volume:this.volume})}}return true}}registerProcessor('volume-meter',VolumeMeter);"],{type:"application/javascript"}),EC=!1,RC=function(){function e(t){o(this,e),this.context_=t.context,this.addModuleToContext()}var t;return s(e,[{key:"addModuleToContext",value:(t=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.context_.audioWorklet.addModule(URL.createObjectURL(IC));case 3:sS.info("worklet addModule success"),h_.emit(iS),EC=!0,e.next=12;break;case 8:e.prev=8,e.t0=e.catch(0),sS.info("worklet addModule catch error. ".concat(e.t0.message)),h_.emit(nS);case 12:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(){return t.apply(this,arguments)})},{key:"initWorkletSuccess",get:function(){return EC}}]),e}(),MC=function(){function e(t){o(this,e);var i=t.track,n=t.log,r=t.stream;this.volume_=0,this.log_=n,this.track_=i,this.stream_=r,TC||(window.AudioContext=window.AudioContext||window.webkitAudioContext||window.mozAudioContext,TC=new window.AudioContext),this.audioCtx_=TC,this.destination_=this.audioCtx_.destination;var a=new MediaStream;a.addTrack(this.track_),this.streamSource_=this.audioCtx_.createMediaStreamSource(a),this.audioWorkletNode_=null,this.scriptProcessorNode_=null,this.interval_=200,h_.on(tS,this.resume,this),h_.on(R_,this.handleAudioLevelInterval,this),ev?(h_.on(iS,this.initAudioWorklet,this),h_.on(nS,this.initScriptProcessor,this),this.preload()):this.initScriptProcessor()}return s(e,[{key:"preload",value:function(){CC?CC.initWorkletSuccess&&this.initAudioWorklet():CC=new RC({context:TC})}},{key:"initAudioWorklet",value:function(){var e=this;if(!this.audioWorkletNode_)try{this.audioWorkletNode_=new AudioWorkletNode(this.audioCtx_,"volume-meter"),this.audioWorkletNode_.port.onmessage=function(t){e.volume_=t.data.volume||0},this.streamSource_.connect(this.audioWorkletNode_).connect(this.destination_),this.handleAudioLevelInterval({interval:this.interval_}),ib.logSuccessEvent({userId:this.stream_.getUserId(),eventType:ef})}catch(e){ib.logFailedEvent({userId:this.stream_.getUserId(),eventType:ef}),this.initScriptProcessor()}}},{key:"initScriptProcessor",value:function(){var e=this;if(!this.scriptProcessorNode_)try{this.scriptProcessorNode_=this.audioCtx_.createScriptProcessor(2048,1,1),this.scriptProcessorNode_.onaudioprocess=function(t){for(var i=t.inputBuffer.getChannelData(0),n=0,r=0;r<i.length;++r)n+=i[r]*i[r];e.volume_=Math.sqrt(n/i.length)||0},this.streamSource_.connect(this.scriptProcessorNode_),this.scriptProcessorNode_.connect(this.destination_)}catch(e){this.log_.error("volumeMeter init script processor error: "+e)}}},{key:"destroy",value:function(){this.streamSource_&&this.streamSource_.disconnect(),this.scriptProcessorNode_&&this.scriptProcessorNode_.disconnect(),this.audioWorkletNode_&&(this.audioWorkletNode_.port.postMessage({name:"stop"}),this.audioWorkletNode_.disconnect()),this.audioWorkletNode_=null,this.scriptProcessorNode_=null,this.audioCtx_=null,h_.off(tS,this.resume,this),h_.off(R_,this.handleAudioLevelInterval,this),h_.off(iS,this.initAudioWorklet,this),h_.off(nS,this.initScriptProcessor,this)}},{key:"resume",value:function(){this.audioCtx_&&this.audioCtx_.resume()}},{key:"getInternalAudioLevel",value:function(){return this.volume_}},{key:"getCalculatedVolume",value:function(){return this.volume_.toFixed(2)}},{key:"handleAudioLevelInterval",value:function(e){var t=e.interval;this.interval_=t,this.audioWorkletNode_&&this.audioWorkletNode_.port.postMessage({name:"setIntervalTime",intervalTime:t})}}]),e}(),PC=function(){function e(t){o(this,e),this.stream_=t.stream,this.userId_=t.stream.getUserId(),this.log_=this.stream_.getLogger(),this.track_=t.track,this.div_=t.div,this.muted_=t.muted,this.outputDeviceId_=t.outputDeviceId,this.volume_=t.volume,this.emitter_=new u_,this.initializeElement(),this.state_="NONE",this.volumeMeter_=new MC({stream:this.stream_,track:this.track_,log:this.log_})}var t,i,n,a;return s(e,[{key:"isPlaying",get:function(){return"PLAYING"===this.state_}},{key:"initializeElement",value:function(){if(this.isAudioElementInit()){var e=new MediaStream;e.addTrack(this.track_);var t=document.createElement(Ph);t.srcObject=e,t.muted=this.muted_,t.setAttribute("id","audio_".concat(this.stream_.getId())),t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this.div_.appendChild(t),this.element_=t}this.handleEvents()}},{key:"setMuted",value:function(e){this.element_&&(this.element_.muted=e,this.muted_=e)}},{key:"play",value:(a=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.outputDeviceId_||!this.element_){e.next=3;break}return e.next=3,this.element_.setSinkId(this.outputDeviceId_);case 3:if(this.setVolume(this.volume_),e.prev=4,!this.element_){e.next=8;break}return e.next=8,this.element_.play();case 8:e.next=16;break;case 10:if(e.prev=10,e.t0=e.catch(4),this.log_.warn("<audio> play() error: "+e.t0),!(t=e.t0.toString()+" <audio>").startsWith("NotAllowedError")){e.next=16;break}throw new fy({code:py.PLAY_NOT_ALLOWED,message:t});case 16:case"end":return e.stop()}}),e,this,[[4,10]])}))),function(){return a.apply(this,arguments)})},{key:"handleEvents",value:function(){this.handleElementEvent=this.handleElementEvent.bind(this),this.handleTrackEvent=this.handleTrackEvent.bind(this),this.element_&&(this.element_.addEventListener(Bh,this.handleElementEvent),this.element_.addEventListener(Vh,this.handleElementEvent),this.element_.addEventListener(Fh,this.handleElementEvent),this.element_.addEventListener(Uh,this.handleElementEvent)),this.track_.addEventListener(Vh,this.handleTrackEvent),this.track_.addEventListener(Nh,this.handleTrackEvent),this.track_.addEventListener($h,this.handleTrackEvent),this.track_.readyState===Vh&&this.handleTrackEvent({type:Vh}),this.track_.muted&&this.handleTrackEvent({type:Nh})}},{key:"handleElementEvent",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.type,e.t0=i,e.next=e.t0===Bh?4:e.t0===Vh?9:e.t0===Fh?12:e.t0===Uh?17:28;break;case 4:return this.log_.info("stream - audio player is starting playing"),this.state_="PLAYING",h_.emit(D_,{stream:this.stream_}),this.emitter_.emit(yk,{state:this.state_,reason:Bh}),e.abrupt("break",28);case 9:return this.log_.info("stream - audio player is ended"),"STOPPED"!==this.state_&&(this.state_="STOPPED",this.emitter_.emit(yk,{state:this.state_,reason:Vh})),e.abrupt("break",28);case 12:return this.log_.info("stream - audio player is paused"),this.state_="PAUSED",this.emitter_.emit(yk,{state:this.state_,reason:Fh}),ph()<=70&&this.resume(),e.abrupt("break",28);case 17:if(!this.element_||!this.element_.error){e.next=27;break}return n="".concat(jb(),"/").concat(Eh().name,"/").concat(Eh().version),e.next=21,DI.getSpeakers();case 21:r=e.sent,o=r[0].label,(a=r.find((function(e){return e.deviceId===s.outputDeviceId_})))&&(o=a.label),this.log_.error("stream - audio player error observed. code: ".concat(this.element_.error.code," message: ").concat(this.element_.error.message," deviceInfo: ").concat(n," speaker: ").concat(o)),ib.uploadEvent("stat-".concat(this.stream_.getType(),"-audio-").concat(Xp,"-").concat(this.element_.error.code,"-").concat(n,"-").concat(o),this.element_.error);case 27:return e.abrupt("break",28);case 28:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"handleTrackEvent",value:function(e){var t=e.type;switch(t){case Vh:this.log_.info("stream - audio player track is ended"),"STOPPED"!==this.state_&&(this.state_="STOPPED",this.emitter_.emit(yk,{state:this.state_,reason:Vh})),h_.emit(Q_,{stream:this.stream_,type:t});break;case Nh:this.log_.info("stream - audio track is unable to provide media output"),this.stream_.isRemote()||Yg(),"PAUSED"!==this.state_&&(this.state_="PAUSED",this.emitter_.emit(yk,{state:this.state_,reason:Nh})),h_.emit(Z_,{stream:this.stream_,type:t});break;case $h:this.log_.info("stream - audio track is able to provide media output"),"PAUSED"===this.state_&&(this.state_="PLAYING",this.emitter_.emit(yk,{state:this.state_,reason:$h}))}}},{key:"unbindEvents",value:function(){this.element_&&(this.element_.removeEventListener(Bh,this.handleElementEvent),this.element_.removeEventListener(Vh,this.handleElementEvent),this.element_.removeEventListener(Fh,this.handleElementEvent),this.element_.removeEventListener(Uh,this.handleElementEvent)),this.track_&&(this.track_.removeEventListener(Vh,this.handleTrackEvent),this.track_.removeEventListener(Nh,this.handleTrackEvent),this.track_.removeEventListener($h,this.handleTrackEvent))}},{key:"setSinkId",value:(i=r(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.outputDeviceId_===t){e.next=5;break}if(!this.element_){e.next=4;break}return e.next=4,this.element_.setSinkId(t);case 4:this.outputDeviceId_=t;case 5:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"setVolume",value:function(e){this.element_&&(this.log_.info("stream - audioElement setVolume to : ".concat(e)),this.element_.volume=e)}},{key:"getAudioLevel",value:function(){return this.volumeMeter_.getCalculatedVolume()}},{key:"getInternalAudioLevel",value:function(){return this.volumeMeter_.getInternalAudioLevel()}},{key:"stop",value:function(){this.unbindEvents(),this.element_&&(this.div_.removeChild(this.element_),this.element_.srcObject=null,this.element_=null),this.volumeMeter_&&(this.volumeMeter_.destroy(),this.volumeMeter_=null)}},{key:"resume",value:(t=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,this.volumeMeter_&&this.volumeMeter_.resume(),!this.element_){e.next=5;break}return e.next=5,this.element_.play();case 5:e.next=13;break;case 7:if(e.prev=7,e.t0=e.catch(0),this.log_.warn("<audio> play() error: "+e.t0),!(t=Dg({key:em,data:{error:e.t0}})).startsWith("NotAllowedError")){e.next=13;break}throw new fy({code:py.PLAY_NOT_ALLOWED,message:t});case 13:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return t.apply(this,arguments)})},{key:"on",value:function(e,t){this.emitter_.on(e,t)}},{key:"isAudioElementInit",value:function(){return!("15.2"===bh||"15.3"===bh||"15.4"===bh)||"local"!==this.stream_.getType()||!this.muted_||(this.log_.info("audioElement is muted."),!1)}}]),e}(),AC=at.PROPER,DC=Qc.trim;ii({target:"String",proto:!0,forced:(wC="trim",A((function(){return!!Gc[wC]()||"​…᠎"!=="​…᠎"[wC]()||AC&&Gc[wC].name!==wC})))},{trim:function(){return DC(this)}});var OC="".concat("trtc_autoplay","_mask"),xC="".concat("trtc_autoplay","_wrapper"),LC="".concat("trtc_autoplay","_header"),NC="".concat("trtc_autoplay","_content"),$C="".concat("trtc_autoplay","_action_wrapper"),VC="".concat("trtc_autoplay","_question"),BC="".concat("trtc_autoplay","_collapse"),FC="".concat("trtc_autoplay","_action_confirm"),UC="".concat("trtc_autoplay","_detail"),jC="".concat("dialog","-show"),WC="".concat("dialog","-1"),HC="".concat("dialog","-2"),GC=!1,zC=function(){return!!document.querySelector(".".concat(xC))},JC="".concat(Pf,"/").concat(Xg()?"zh-cn":"en","/tutorial-21-advanced-auto-play-policy.html"),KC="<br><a href='".concat(JC,"' target='_blank'>").concat(Xg()?"其他方案?":"Any other solution?","</a>"),qC="".concat(Xg()?"浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。".concat(KC):"Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ".concat(KC)),ZC=function(){function e(){if(o(this,e),this.dialogNode_=null,this.bodyPosition_="",this.content="音视频播放被浏览器拦截,请点击“恢复播放”。",Xg()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!GC){var t=document.createElement("style");t.innerHTML=".".concat(OC,"{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.").concat(OC," div:not(.").concat($C,"){display:block !important;}.").concat(xC,"{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.").concat(xC," a{color:").concat("#2473E8",";}.").concat(LC,"{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.").concat(NC,"{margin:8px 0;}.").concat($C,"{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.").concat(BC,"{margin-right:auto;cursor:pointer}.").concat(VC,"{height:100%;line-height:16px;cursor:pointer;}.").concat(FC,"{margin-left:8px;color:#fff;background:").concat("#2473E8",";padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.").concat(FC,":hover{opacity:0.9;}.").concat(BC,",.").concat(FC,",.").concat(NC,",.").concat(VC,"{font-size:14px;}@media screen and (max-width:750px){.").concat(xC,"{width:80vw;}}"),document.head.appendChild(t),GC=!0}this.showDetail_=!1,this.isCollapseClicked_=!1,this.isQuestionClicked_=!1,this.addDiaLog()}return s(e,[{key:"createDiaLog",value:function(){var e=document.createElement("template");e.innerHTML='<div class="'.concat(OC,"\"><div class='").concat(xC,"'><div class='").concat(LC,"'>").concat(location.host,"</div><div class='").concat(NC,"'>").concat(this.content,"</div><div class='").concat(UC,'\' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">').concat(qC,"</div><div class='").concat($C,"'></div></div></div>").trim();var t=document.createElement("button");t.className=FC,t.innerText=Xg()?"恢复播放":"Resume",t.onclick=this.onConfirm.bind(this);var i=document.createElement("div");i.className=VC,i.innerHTML='<?xml version="1.0" encoding="UTF-8"?>\n <svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">\n <path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>\n <path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>\n <path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>\n </svg>\n ',i.onclick=this.onQuestionClick.bind(this);var n=document.createElement("div");n.className=BC,n.innerText="".concat(Xg()?"详情 >":"Detail >"),n.onclick=this.onCollapseClick.bind(this);var r=e.content.firstChild,o=r.querySelector(".".concat($C));return o.appendChild(n),o.appendChild(i),o.appendChild(t),r}},{key:"addDiaLog",value:function(){zC()||(this.dialogNode_=this.createDiaLog(),document.body.appendChild(this.dialogNode_),this.dialogNode_.onclick=this.onConfirm.bind(this),this.dialogNode_.querySelector(".".concat(xC)).onclick=function(e){return e.stopPropagation()},this.bodyPosition_=document.body.style.position,document.body.style.position="fixed",sS.warn("show autoplay dialog"),ib.uploadEvent({log:jC}))}},{key:"deleteDiaLog",value:function(){this.dialogNode_&&(document.body.removeChild(this.dialogNode_),document.body.style.position=this.bodyPosition_,this.dialogNode_=null)}},{key:"onConfirm",value:function(){sS.warn("confirm clicked, try resume stream"),h_.emit(tS),this.deleteDiaLog()}},{key:"onCollapseClick",value:function(){var e=this.dialogNode_.querySelector(".".concat(UC));e.style.visibility="".concat(this.showDetail_?"hidden":"visible"),e.style.height="".concat(this.showDetail_?0:"fit-content"),this.showDetail_=!this.showDetail_,this.isCollapseClicked_||ib.uploadEvent({log:WC}),this.isCollapseClicked_=!0}},{key:"onQuestionClick",value:function(){window.open(JC,"_blank"),this.isQuestionClicked_||ib.uploadEvent({log:HC}),this.isQuestionClicked_=!0}}]),e}(),QC=function(){function e(t){o(this,e),this.stream_=t.stream,this.userId_=t.stream.getUserId(),this.log_=this.stream_.getLogger(),this.track_=t.track,this.div_=t.div,this.muted_=t.muted,this.objectFit_=t.objectFit,this.mirror_=t.mirror,this.emitter_=new u_,this.initializeElement(),this.state_="NONE",this.pausedRetryCount_=5}var t,i;return s(e,[{key:"isPlaying",get:function(){return"PLAYING"===this.state_}},{key:"initializeElement",value:function(){var e=new MediaStream;e.addTrack(this.track_);var t=document.createElement(Ah);t.srcObject=e,t.muted=!0;var i="width: 100%; height: 100%; object-fit: ".concat(this.objectFit_,";");this.mirror_&&(i+="transform: rotateY(180deg);"),t.setAttribute("id","video_".concat(this.stream_.getId())),t.setAttribute("style",i),t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this.div_&&this.div_.appendChild(t),this.element_=t,this.handleEvents()}},{key:"setRect",value:function(e){var t=e.width,i=e.height;this.element_&&(this.element_.style.width=t+"px",this.element_.style.height=i+"px")}},{key:"setMirror",value:function(e){this.element_&&(this.element_.style.transform=e?"rotateY(180deg)":"",this.mirror_=e)}},{key:"setObjectFit",value:function(e){this.element_&&(this.element_.style.objectFit="".concat(e),this.objectFit_=e)}},{key:"play",value:(i=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.element_.play();case 3:e.next=11;break;case 5:if(e.prev=5,e.t0=e.catch(0),this.log_.warn("<video> play() error: "+e.t0),!(t=e.t0.toString()+" <video>").startsWith("NotAllowedError")){e.next=11;break}throw new fy({code:py.PLAY_NOT_ALLOWED,message:t});case 11:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(){return i.apply(this,arguments)})},{key:"handleEvents",value:function(){this.handleElementEvent=this.handleElementEvent.bind(this),this.handleTrackEvent=this.handleTrackEvent.bind(this),this.element_.addEventListener(Bh,this.handleElementEvent),this.element_.addEventListener(Vh,this.handleElementEvent),this.element_.addEventListener(Fh,this.handleElementEvent),this.element_.addEventListener(Uh,this.handleElementEvent),this.element_.addEventListener(jh,this.handleElementEvent),this.track_.addEventListener(Vh,this.handleTrackEvent),this.track_.addEventListener(Nh,this.handleTrackEvent),this.track_.addEventListener($h,this.handleTrackEvent),this.track_.readyState===Vh&&this.handleTrackEvent({type:Vh}),this.track_.muted&&this.handleTrackEvent({type:Nh})}},{key:"handleElementEvent",value:function(e){switch(e.type){case Bh:this.log_.info("stream - video player is starting playing"),this.state_="PLAYING",h_.emit(A_,{stream:this.stream_}),this.emitter_.emit(yk,{state:this.state_,reason:Bh});break;case Vh:this.log_.info("stream - video player is ended"),"STOPPED"!==this.state_&&(this.state_="STOPPED",this.emitter_.emit(yk,{state:this.state_,reason:Vh}));break;case Fh:this.log_.info("stream - video player is paused"),this.div_&&!document.getElementById(this.div_.id)&&this.log_.warn("video container is not in DOM"),this.state_="PAUSED",this.emitter_.emit(yk,{state:this.state_,reason:Fh}),this.pausedRetryCount_>0&&!zC()&&(this.log_.info("auto resume when video paused"),this.resume(),this.pausedRetryCount_--);break;case Uh:if(this.element_&&this.element_.error){var t="".concat(jb(),"/").concat(Eh().name,"/").concat(Eh().version);this.log_.error("stream - video player error observed. code: ".concat(this.element_.error.code," message: ").concat(this.element_.error.message," deviceInfo: ").concat(t)),ib.uploadEvent("stat-".concat(this.stream_.getType(),"-video-").concat(Xp,"-").concat(this.element_.error.code,"-").concat(t),this.element_.error)}break;case jh:h_.emit(J_,{stream:this.stream_})}}},{key:"handleTrackEvent",value:function(e){var t=e.type;switch(t){case Vh:this.log_.info("stream - video player track is ended"),h_.emit(q_,{stream:this.stream_,type:t}),"STOPPED"!==this.state_&&(this.state_="STOPPED",this.emitter_.emit(yk,{state:this.state_,reason:Vh}));break;case Nh:this.log_.info("stream - video track is unable to provide media output"),this.stream_.isRemote()||Yg(),h_.emit(H_,{stream:this.stream_,type:t}),"PAUSED"!==this.state_&&(this.state_="PAUSED",this.emitter_.emit(yk,{state:this.state_,reason:Nh}));break;case $h:this.log_.info("stream - video track is able to provide media output"),h_.emit(G_,{stream:this.stream_}),"PAUSED"===this.state_&&(this.state_="PLAYING",this.emitter_.emit(yk,{state:this.state_,reason:$h}))}}},{key:"unbindEvents",value:function(){this.element_&&(this.element_.removeEventListener(Bh,this.handleElementEvent),this.element_.removeEventListener(Vh,this.handleElementEvent),this.element_.removeEventListener(Fh,this.handleElementEvent),this.element_.removeEventListener(Uh,this.handleElementEvent),this.element_.removeEventListener(jh,this.handleElementEvent)),this.track_&&(this.track_.removeEventListener(Vh,this.handleTrackEvent),this.track_.removeEventListener(Nh,this.handleTrackEvent),this.track_.removeEventListener($h,this.handleTrackEvent))}},{key:"stop",value:function(){this.unbindEvents(),this.div_&&this.div_.removeChild(this.element_),this.element_.srcObject=null,this.element_=null}},{key:"resume",value:(t=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.element_.play();case 3:e.next=11;break;case 5:if(e.prev=5,e.t0=e.catch(0),this.log_.warn("<video> play() error: "+e.t0),!(t=Dg({key:tm,data:{error:e.t0}})).startsWith("NotAllowedError")){e.next=11;break}throw new fy({code:py.PLAY_NOT_ALLOWED,message:t});case 11:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(){return t.apply(this,arguments)})},{key:"getVideoFrame",value:function(){var e=document.createElement("canvas");return e.width=this.element_.videoWidth,e.height=this.element_.videoHeight,e.getContext("2d").drawImage(this.element_,0,0),e.toDataURL("image/png")}},{key:"on",value:function(e,t){this.emitter_.on(e,t)}},{key:"getElement",value:function(){return this.element_?this.element_:null}}]),e}(),XC=function(){function e(t){o(this,e),this.userId_=t.userId,this.tinyId_=t.tinyId,this.client_=t.client,this.sdpSemantics_=t.client.getSdpSemantics(),this.isUplink_=t.isUplink,this.log_=sS.createLogger({id:"n|"+this.userId_,userId:this.client_.getUserId(),sdkAppId:this.client_.getSDKAppId(),isLocal:this.isUplink_}),this.signalChannel_=t.signalChannel,this.peerConnection_=null,this.connectTimer_=-1,this.isErrorObserved_=!1,this.emitter_=new u_,this.currentState_=vp,this.waitForPeerConnectionConnectedPromise_=null,this.isReconnecting_=!1,this.reconnectionCount_=0,this.reconnectionTimer_=-1,this.isFirstConnection_=!0,this.delay_={audioDelay:0,videoDelay:0}}var t;return s(e,[{key:"initialize",value:function(){var e={iceServers:this.client_.getIceServers(),iceTransportPolicy:this.client_.getIceTransportPolicy(),sdpSemantics:this.sdpSemantics_,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this.peerConnection_=new RTCPeerConnection(e),this.peerConnection_.onconnectionstatechange=this.onConnectionStateChange.bind(this)}},{key:"close",value:function(){this.log_.info("closing connection"),this.closePeerConnection()}},{key:"closePeerConnection",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.peerConnection_&&(this.peerConnection_.onconnectionstatechange=function(){},this.peerConnection_.close(),this.peerConnection_=null,e&&this.emitConnectionStateChangedEvent(vp))}},{key:"getDTLSTransportState",value:function(){if(!this.peerConnection_)return"unknown";var e=null;if(this.isUplink_){if(!xb()||0===this.peerConnection_.getSenders().length)return"unknown";e=this.peerConnection_.getSenders()[0].transport}else{if(!Ob()||0===this.peerConnection_.getReceivers().length)return"unknown";e=this.peerConnection_.getReceivers()[0].transport}return e?e.state:"unknown"}},{key:"onConnectionStateChange",value:function(e){var t=this.peerConnection_.iceConnectionState,i=this.getDTLSTransportState();if(this.log_.info("onConnectionStateChange() connectionState: "+e.target.connectionState),this.log_.info("ICE Transport state: ".concat(t,", DTLS Transport state: ").concat(i)),e.target.connectionState===kp&&this.emitConnectionStateChangedEvent(_p),e.target.connectionState===Tp||e.target.connectionState===Cp){var n="".concat(this.isUplink_?"uplink":"downlink"," ICE/DTLS Transport connection ").concat(e.target.connectionState,". ICE Transport state: ").concat(t,", DTLS Transport state: ").concat(i),r=new fy({message:n,code:py.ICE_TRANSPORT_ERROR});ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Hp,error:r}),this.emitConnectionStateChangedEvent(vp),this.isErrorObserved_||this.emitter_.emit(Yb,r)}e.target.connectionState!==Ip&&e.target.connectionState!==Ep||(this.logSelectedCandidate(),ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:Hp}),this.emitConnectionStateChangedEvent(yp))}},{key:"emitConnectionStateChangedEvent",value:function(e){e!==this.currentState_&&(this.currentState_===Sp&&e===_p||(h_.emit(X_,{client:this.client_,connection:this,prevState:this.currentState_,state:e}),this.emitter_.emit(ek,{prevState:this.currentState_,state:e}),this.currentState_=e))}},{key:"hitTest",value:function(e){return(0===e||"0"===e)&&this.isUplink_||e===this.tinyId_}},{key:"addEventInternal",value:function(e,t){var i=this.client_.getUserId(),n={eventId:e,eventDesc:t,timestamp:uc(),userId:i,tinyId:this.client_.getTinyId()};this.isUplink_||(n.remoteUserId=this.userId_,n.remoteTinyId=this.tinyId_),Xy(i,n)}},{key:"getPeerConnection",value:function(){return this.peerConnection_}},{key:"getClient",value:function(){return this.client_}},{key:"getUserId",value:function(){return this.userId_}},{key:"getTinyId",value:function(){return this.tinyId_}},{key:"logSelectedCandidate",value:(t=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.peerConnection_){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.peerConnection_.getStats();case 4:t=e.sent,i=T(t),e.prev=6,i.s();case 8:if((n=i.n()).done){e.next=18;break}if((r=S(n.value,2))[0],o=r[1],!Fb(o)){e.next=16;break}return a=t.get(o.localCandidateId),s=t.get(o.remoteCandidateId),a&&this.log_.info("local candidate: ".concat(a.candidateType," ").concat(a.protocol,":").concat(a.ip||a.address,":").concat(a.port," ").concat(a.networkType||""," ").concat("relay"===a.candidateType?"relayProtocol:"+a.relayProtocol:"")),s&&this.log_.info("remote candidate: ".concat(s.candidateType," ").concat(s.protocol,":").concat(s.ip||s.address,":").concat(s.port)),e.abrupt("break",18);case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,this,[[6,20,23,26]])}))),function(){return t.apply(this,arguments)})},{key:"getCurrentState",value:function(){return this.currentState_}},{key:"waitForPeerConnectionConnected",value:function(){var e=this;return this.waitForPeerConnectionConnectedPromise_||(this.waitForPeerConnectionConnectedPromise_=new Promise((function(t,i){if(e.currentState_===yp)return t();var n=-1,r=function i(r){r.state===yp&&(clearTimeout(n),e.emitter_.off(ek,i,e),t())};n=setTimeout((function(){e.emitter_.off(ek,r,e);var t=new fy({code:py.API_CALL_TIMEOUT,message:"connection timeout"});i(t)}),1e4),e.emitter_.on(ek,r,e)})),this.waitForPeerConnectionConnectedPromise_=this.waitForPeerConnectionConnectedPromise_.then((function(t){return e.waitForPeerConnectionConnectedPromise_=null,t})).catch((function(t){throw e.waitForPeerConnectionConnectedPromise_=null,t}))),this.waitForPeerConnectionConnectedPromise_}},{key:"getReconnectionCount",value:function(){return this.reconnectionCount_}},{key:"startReconnection",value:function(){this.isReconnecting_=!0,this.emitConnectionStateChangedEvent(Sp),this.reconnect(),this.addEventInternal(this.isUplink_?Wy:zy,"".concat(this.isUplink_?"uplink":"downlink","-connection is reconnecting"))}},{key:"stopReconnection",value:function(){this.log_.info("stop reconnection"),this.isReconnecting_=!1,this.reconnectionCount_=0,this.clearReconnectionTimer(),this.signalChannel_.off(FS,this.reconnect,this)}},{key:"on",value:function(e,t,i){this.emitter_.on(e,t,i)}},{key:"off",value:function(e,t,i){this.emitter_.off(e,t,i)}},{key:"setDelay",value:function(e){var t=e.audioDelay,i=e.videoDelay;this.delay_={audioDelay:t,videoDelay:i}}},{key:"getDelay",value:function(){return this.delay_}}]),e}();function YC(e,t,i,n){if(this.useStringRoomId_){if(!Ug(e)||!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(e))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:cm,data:t,link:{className:n,fnName:i}})})}else if(!(jg(e)&&/^[1-9]\d*$/.test(String(e))&&e<4294967295))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:lm,data:t,link:{className:n,fnName:i}})})}function ew(e,t,i,n){if(!/^[A-Za-z\d_-]*$/.test(e))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Rm,data:t,link:{className:n,fnName:i}})})}var tw,iw,nw={TRTC:{createClient:{name:"clientConfig",required:!0,type:uf,properties:{sdkAppId:{required:!0,type:cf,allowEmpty:!1},userId:{required:!0,type:sf,allowEmpty:!1},userSig:{required:!0,type:sf,allowEmpty:!1},mode:{required:!0,type:sf,values:["rtc","live"]},useStringRoomId:{type:lf},autoSubscribe:{type:lf},enableAutoPlayDialog:{type:lf},streamId:{type:sf},userDefineRecordId:{type:sf},pureAudioPushMode:{type:cf,values:[1,2]}}},createStream:{name:"streamConfig",required:!0,type:uf,properties:{userId:{type:sf},audio:{type:lf},video:{type:lf},screen:{type:lf},screenAudio:{type:lf},microphoneId:{type:sf},cameraId:{type:sf},facingMode:{type:sf,values:[xh,Lh]},audioSource:{instanceOf:window.MediaStreamTrack},videoSource:{instanceOf:window.MediaStreamTrack}},validate:function(e){if(!Fg(e.screen)&&e.screen&&Fg(e.audio)&&(e.audio=!1),!(Fg(e.audio)&&Fg(e.video)||Fg(e.audioSource)&&Fg(e.videoSource)))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:pg})});if(!Fg(e.screen)&&!0===e.screen&&!0===e.video)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:fg})});if(e.audio&&e.screenAudio)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:mg})});if(!0!==e.screen&&!0===e.screenAudio)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:gg})});if(!Fg(e.screen)&&!0===e.screen&&!this.isScreenShareSupported())throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Tg})})}}},CLIENT:{join:{name:"options",required:!0,properties:{roomId:{required:!0,type:[cf,sf],allowEmpty:!1,validate:YC},role:{type:[sf],values:["anchor","audience"]}}},publish:{name:"stream",required:!0,instanceOf:Cf,validate:function(e){if(!this.isJoined_)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:fm})});if("live"===this.mode_&&"audience"===this.role_)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:gm})});if(this.localStream_)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:_m})});if(!e.getIsReadyToPublish())throw new fy({code:py.INVALID_OPERATION,message:Dg({key:vm})});if(this.notPublishWithoutH264Supported_)throw new fy({code:py.NOT_SUPPORTED_H264,message:Dg({key:yg})})}},unpublish:{name:"stream",required:!0,instanceOf:Cf,validate:function(e){if(e!==this.localStream_){if(this.localStream_)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:mm})});this.log_.warn("Client currently has no published stream, please call publish() first.")}}},subscribe:[{name:"stream",required:!0,instanceOf:wf,validate:function(e){if(!e.getConnection())throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Sm})});if(this.notSubscribeWithoutH264Supported_)throw new fy({code:py.NOT_SUPPORTED_H264,message:Dg({key:bg})})}},{name:"options",type:uf,properties:{audio:{type:lf},video:{type:lf}}}],unsubscribe:{name:"stream",required:!0,instanceOf:wf,validate:function(e){if(!e.getConnection())throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Sm})})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate:function(){if("live"!==this.mode_)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:bm})});if(!this.isJoined_)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:km})})}},startPublishCDNStream:{name:"options",required:!1,properties:{streamId:{type:sf,validate:ew},appId:{type:cf,allowEmpty:!1},bizId:{type:cf,allowEmpty:!1},url:{type:sf,allowEmpty:!1}}},startMixTranscode:{name:"config",required:!0,type:uf,properties:{mode:{type:sf,values:["preset-layout","manual"]},streamId:{type:sf,validate:ew},videoWidth:{type:cf,notLessThanZero:!0},videoHeight:{type:cf,notLessThanZero:!0},videoBitrate:{type:cf,notLessThanZero:!0,allowEmpty:!1},videoFramerate:{type:cf,validate:function(e,t,i,n){if(e<=0||e>30)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:og,link:{className:n,fnName:i}})})}},videoGop:{type:cf,validate:function(e,t,i,n){if(e<1||e>8)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:ag,link:{className:n,fnName:i}})})}},audioSampleRate:{type:cf,notLessThanZero:!0},audioBitrate:{type:cf,validate:function(e,t,i,n){if(e<32||e>192)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:sg,link:{className:n,fnName:i}})})}},audioChannels:{type:cf,values:[1,2]},backgroundColor:{type:cf},backgroundImage:{type:sf},mixUsers:{required:!0,type:df,arrayItem:{require:!0,type:uf,properties:{userId:{required:!0,type:sf},roomId:{type:[sf,cf],validate:YC},pureAudio:{type:lf},width:{type:cf,notLessThanZero:!0},height:{type:cf,notLessThanZero:!0},locationX:{type:cf,notLessThanZero:!0},locationY:{type:cf,notLessThanZero:!0},zOrder:{type:cf},streamType:{type:sf,values:["main","auxiliary"]}}}}},validate:function(e,t,i,n,r){var o=0,a=0,s=e.mixUsers,c=[];if(s.forEach((function(e,t){if(c.push(e.userId),!e.pureAudio){if(!e.zOrder||e.zOrder<1||e>15)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:cg,data:"config.mixUsers[".concat(t,"].zOrder"),link:{className:n,fnName:i}})});e.width+e.locationX>o&&(o=e.width+e.locationX),e.height+e.locationY>a&&(a=e.height+e.locationY)}})),c.indexOf(this.getUserId())<0)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:lg,link:{className:n,fnName:i}})});if(e.videoWidth<o||e.videoHeight<a)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:dg,link:{className:n,fnName:i}})})}}},LOCAL_STREAM:{switchDevice:[{name:"type",required:!0,type:sf,values:[Ph,Ah]},{name:"deviceId",required:!0,type:sf,validate:function(){if(this.screen_&&!this.audio_||this.audioSource_||this.videoSource_)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Bm})});if(this.publishState_===gf)throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Fm})})}}]},STREAM:{play:[{name:"elementId",required:!0,type:[sf,"HTMLDivElement"],validate:function(e,t,i){if(Ug(e)){var n=document.getElementById(e);if(!n)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:ug,data:{key:t,fnName:i}})});if(!(n instanceof HTMLDivElement))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:hg,data:{key:t,fnName:i,type:zg(n)}})})}}},{name:"options",type:uf,properties:{objectFit:{type:sf,values:["contain","cover","fill"]},muted:{type:lf},mirror:{type:lf}}}]}};function rw(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(e,i,n){var r=n.value;return n.value=function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return aw.call(this,t,n,i,this.name_),r.apply(this,n)},n}}function ow(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(e,i,n){var o=n.value;return n.value=r(regeneratorRuntime.mark((function e(){var n,r,a,s=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=s.length,r=new Array(n),a=0;a<n;a++)r[a]=s[a];return aw.call(this,t,r,i,this.name_),e.abrupt("return",o.apply(this,r));case 3:case"end":return e.stop()}}),e,this)}))),n}}function aw(e,t,i,n){try{for(var r=0;r<e.length;r++)sw.call(this,{rule:e[r],value:t[r],key:e[r].name,fnName:i,className:n})}catch(e){throw sS.error(e),e}}function sw(e){var t=this,i=e.rule,n=e.value,r=e.key,o=e.fnName,a=e.className;if(Fg(n)){if(i.required)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Ff,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})})}else{if(Array.isArray(i.type)){if(!i.type.map((function(e){return e.toLowerCase()})).includes(zg(n)))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Uf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})})}else if(!Fg(i.type)&&zg(n)!==i.type)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Uf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})});if(!1===i.allowEmpty){var s=jg(n)&&(0===n||Number.isNaN(n)),c=Ug(n)&&""===n.trim();if(s||c)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:jf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})})}if(i.notLessThanZero&&jg(n)&&n<0)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:rg,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})});if(Ug(i.instanceOf)){if(!n||n.name_!==i.instanceOf)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Wf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})})}else if(Bg(i.instanceOf)&&!(n instanceof i.instanceOf))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Wf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})});if(i.values&&!i.values.includes(n))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Hf,data:{key:r,rule:i,fnName:o,value:n},link:{className:a,fnName:o}})});var l=i.properties;$g(l)&&"object"===zg(n)&&Object.keys(l).forEach((function(e){sw.call(t,{rule:l[e],value:n&&n[e],key:"".concat(r,".").concat(e),fnName:o,className:a})}));var d=i.arrayItem;$g(d)&&Hg(n)&&n.forEach((function(e,i){sw.call(t,{rule:d,value:e,key:"".concat(r,"[").concat(i,"]"),fnName:o,className:a})})),Bg(i.validate)&&i.validate.call(this,n,r,o,a,this)}}ii({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var cw=(tw=ow.apply(void 0,y(nw.STREAM.play)),C((iw=function(){function e(t){o(this,e),this.name_=If,this.userId_=t.userId,this.isRemote_=t.isRemote,this.type_=t.type,this.log_=sS.createLogger({id:"s".concat(t.seq?t.seq:"","|").concat(this.userId_),userId:Fg(t.client)?void 0:t.client.getUserId(),sdkAppId:Fg(t.client)?void 0:t.client.getSDKAppId(),isLocal:!this.isRemote_,type:this.isRemote_?this.type_:""}),this.client_=null,Fg(t.client)||(this.client_=t.client),this.mediaStream_=null,this.div_=null,this.isPlaying_=!1,this.connection_=null,this.audioPlayer_=null,this.videoPlayer_=null,this.muted_=!1,this.objectFit_="cover",this.mirror_=!1,this.id_=Sb(),this.audioOutputDeviceId_=0,this.audioVolume_=1,this.emitter_=tv(new u_,this.name_),this.connectionState_=vp,this.installEvents(),Fg(t.mirror)||this.log_.warn('TRTC.createStream "mirror" option was deprecated since v4.12.1,please use localStream.play to set up preview mirror. refer to '.concat(Pf,"/en/LocalStream.html#play. TRTC.createStream 接口的 mirror 选项从 v4.12.1 开始被废弃,请使用 localStream.play 设置本地流预览镜像,参考文档:").concat(Pf,"/zh-cn/LocalStream.html#play。"))}var i,n,a,c,l;return s(e,[{key:"installEvents",value:function(){h_.on(tS,this.restartPlayback,this)}},{key:"uninstallEvents",value:function(){h_.off(tS,this.restartPlayback,this)}},{key:"getType",value:function(){return this.type_}},{key:"getLogger",value:function(){return this.log_}},{key:"isSubscribed",get:function(){return this.type_===mp&&this.connection_.isMainStreamSubscribed||this.type_===gp&&this.connection_.isAuxStreamSubscribed}},{key:"isMainVideoSubscribed",get:function(){var e=this.getSubscribedState();return this.type_===mp&&e&&e.video}},{key:"isMainAudioSubscribed",get:function(){var e=this.getSubscribedState();return this.type_===mp&&e&&e.audio}},{key:"isAuxVideoSubscribed",get:function(){var e=this.getSubscribedState();return this.type_===gp&&e&&e.auxiliary}},{key:"isSmallVideoSubscribed",get:function(){var e=this.getSubscribedState();return this.type_===mp&&e&&e.smallVideo}},{key:"emitConnectionStateChanged",value:function(e){e.state!==this.connectionState_&&(e.state!==vp&&this.isRemote_&&!this.isSubscribed||(this.emitter_.emit(_k,e),this.connectionState_=e.state))}},{key:"setConnection",value:function(e){this.connection_!==e&&(e instanceof XC?(null!==this.connection_&&this.connection_.off(ek,this.emitConnectionStateChanged,this),e.on(ek,this.emitConnectionStateChanged,this)):null===e&&this.connection_.off(ek,this.emitConnectionStateChanged,this),this.connection_=e)}},{key:"getConnection",value:function(){return this.connection_}},{key:"play",value:(l=r(regeneratorRuntime.mark((function e(t,i){var n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.log_.info("stream ".concat(this.isPlaying_?"update":"start to"," play with elementId: ").concat(t," and options: ").concat(JSON.stringify(i),".")),!this.isPlaying_){e.next=9;break}return i&&!Fg(i.muted)&&(this.muted_=i.muted),i&&!Fg(i.objectFit)&&(this.objectFit_=i.objectFit),this.isScreenShare()?this.mirror_=!1:i&&!Fg(i.mirror)&&(this.mirror_=i.mirror),this.audioPlayer_&&this.audioPlayer_.setMuted(this.muted_),this.videoPlayer_&&(this.videoPlayer_.setObjectFit(this.objectFit_),this.videoPlayer_.setMirror(this.mirror_)),this.elementId_!==t&&(n=t,Ug(t)&&(n=document.getElementById(t)),n.appendChild(this.div_),this.elementId_=t),e.abrupt("return");case 9:return this.isPlaying_=!0,(r=document.createElement("div")).setAttribute("id","player_".concat(this.id_)),r.setAttribute("style","width: 100%; height: 100%; position: relative; background-color: black; overflow: hidden;"),o=t,Ug(t)&&(o=document.getElementById(t)),o.appendChild(r),this.elementId_=t,this.div_=r,this.isRemote_||(this.muted_=!0),i&&!Fg(i.muted)&&(this.muted_=i.muted),this.isScreenShare()&&(this.objectFit_="contain"),i&&!Fg(i.objectFit)&&(this.objectFit_=i.objectFit),this.isScreenShare()?this.mirror_=!1:(this.isRemote_||(this.mirror_=!0),i&&!Fg(i.mirror)&&(this.mirror_=i.mirror)),h_.emit(z_,{stream:this}),e.next=26,Promise.all([this.playAudio(),this.playVideo()]);case 26:h_.emit(M_,{stream:this});case 27:case"end":return e.stop()}}),e,this)}))),function(e,t){return l.apply(this,arguments)})},{key:"playAudio",value:(c=r(regeneratorRuntime.mark((function e(){var i,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.hasAudio()&&(!this.isRemote_||this.isMainAudioSubscribed)){e.next=2;break}return e.abrupt("return");case 2:if(i=this.getAudioTrack(),this.audioPlayer_||!i){e.next=17;break}return this.log_.info("stream - create AudioPlayer and play"),this.audioPlayer_=new PC({stream:this,track:i,div:this.div_,muted:this.muted_,outputDeviceId:this.audioOutputDeviceId_,volume:this.audioVolume_}),this.audioPlayer_.on(yk,(function(e){var i={type:Ph,state:e.state,reason:e.reason};h_.emit(P_,t({stream:n},i)),n.emitter_.emit(gk,i)})),e.prev=7,e.next=10,this.audioPlayer_.play();case 10:e.next=17;break;case 12:throw e.prev=12,e.t0=e.catch(7),this.client_&&this.client_.getEnableAutoPlayDialog()&&new ZC,this.emitter_.emit(Sk,e.t0),e.t0;case 17:case"end":return e.stop()}}),e,this,[[7,12]])}))),function(){return c.apply(this,arguments)})},{key:"playVideo",value:(a=r(regeneratorRuntime.mark((function e(){var i,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.hasVideo()&&(!this.isRemote_||this.isMainVideoSubscribed||this.isAuxVideoSubscribed||this.isSmallVideoSubscribed)){e.next=2;break}return e.abrupt("return");case 2:if(i=this.getVideoTrack(),this.videoPlayer_||!i){e.next=18;break}return h_.emit(K_,{stream:this}),this.log_.info("stream - create VideoPlayer and play"),this.videoPlayer_=new QC({stream:this,track:i,div:this.div_,muted:this.muted_,objectFit:this.objectFit_,mirror:this.mirror_}),this.videoPlayer_.on(yk,(function(e){var i={type:Ah,state:e.state,reason:e.reason};h_.emit(P_,t({stream:n},i)),n.emitter_.emit(gk,i)})),e.prev=8,e.next=11,this.videoPlayer_.play();case 11:e.next=18;break;case 13:throw e.prev=13,e.t0=e.catch(8),this.client_&&this.client_.getEnableAutoPlayDialog()&&new ZC,this.emitter_.emit(Sk,e.t0),e.t0;case 18:case"end":return e.stop()}}),e,this,[[8,13]])}))),function(){return a.apply(this,arguments)})},{key:"stopAudio",value:function(){this.audioPlayer_&&(this.log_.info("stream - stop AudioPlayer"),this.audioPlayer_.stop(),this.audioPlayer_=null)}},{key:"stopVideo",value:function(){this.videoPlayer_&&(this.log_.info("stream - stop VideoPlayer"),this.videoPlayer_.stop(),this.videoPlayer_=null)}},{key:"restartPlayback",value:function(){this.audioPlayer_&&!this.audioPlayer_.isPlaying&&this.restartAudio(),this.videoPlayer_&&!this.videoPlayer_.isPlaying&&this.restartVideo()}},{key:"restartAudio",value:function(){this.isPlaying_&&(this.stopAudio(),this.playAudio().catch((function(e){})))}},{key:"restartVideo",value:function(){this.isPlaying_&&(this.stopVideo(),this.playVideo().catch((function(e){})))}},{key:"stop",value:function(){this.isPlaying_&&(this.isPlaying_=!1,this.stopAudio(),this.stopVideo(),this.div_.parentNode.removeChild(this.div_))}},{key:"resume",value:(n=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isPlaying_){e.next=2;break}return e.abrupt("return");case 2:if(this.log_.info("stream - resume"),!this.audioPlayer_){e.next=6;break}return e.next=6,this.audioPlayer_.resume();case 6:if(!this.videoPlayer_){e.next=9;break}return e.next=9,this.videoPlayer_.resume();case 9:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"close",value:function(){this.isPlaying_&&this.stop(),this.isRemote_||(this.mediaStream_&&(this.mediaStream_.preventEvent=1,this.mediaStream_.getTracks().forEach((function(e){e.stop()})),this.mediaStream_=null),this.uninstallEvents())}},{key:"muteAudio",value:function(){return this.addRemoteEvent(!0,Ph),this.doEnableTrack(Ph,!1)}},{key:"muteVideo",value:function(){return this.addRemoteEvent(!0,Ah),this.doEnableTrack(Ah,!1)}},{key:"unmuteAudio",value:function(){return this.addRemoteEvent(!1,Ph),this.doEnableTrack(Ph,!0)}},{key:"unmuteVideo",value:function(){return this.addRemoteEvent(!1,Ah),this.doEnableTrack(Ah,!0)}},{key:"addRemoteEvent",value:function(e,t){if(this.isRemote_&&this.client_){var i=this.client_.getUserId(),n="".concat(e?Nh:$h," remote ").concat(t);Xy(i,{eventId:t===Ph?e?Ay:Oy:e?Py:Dy,eventDesc:n,timestamp:(new Date).getTime(),userId:i,tinyId:this.client_.getTinyId(),remoteUserId:this.userId_,remoteTinyId:this.connection_.getTinyId()})}}},{key:"doEnableTrack",value:function(e,t){var i=!1;return e===Ph?this.mediaStream_.getAudioTracks().forEach((function(e){i=!0,e.enabled=t})):this.mediaStream_.getVideoTracks().forEach((function(e){i=!0,e.enabled=t})),i}},{key:"getId",value:function(){return this.id_}},{key:"getUserId",value:function(){return this.userId_}},{key:"getTinyId",value:function(){return this.connection_?this.connection_.getTinyId():""}},{key:"isPlaying",value:function(){return this.isPlaying_}},{key:"setAudioOutput",value:(i=r(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.audioOutputDeviceId_=t,!this.audioPlayer_){e.next=4;break}return e.next=4,this.audioPlayer_.setSinkId(t);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"setAudioVolume",value:function(e){this.audioVolume_=e,this.log_.info("setAudioVolume to ".concat(e)),this.audioPlayer_&&this.audioPlayer_.setVolume(e)}},{key:"getAudioLevel",value:function(){var e=0;return this.audioPlayer_&&(e=this.audioPlayer_.getAudioLevel()),e}},{key:"getInternalAudioLevel",value:function(){var e=0;return this.audioPlayer_&&(e=this.audioPlayer_.getInternalAudioLevel()),e}},{key:"hasAudio",value:function(){if(this.isRemote_){if(!this.connection_)return!1;var e=this.connection_.getTrackState();return this.type_===mp&&e.audio}return!!this.getAudioTrack()}},{key:"hasVideo",value:function(){if(this.isRemote_){if(!this.connection_)return!1;var e=this.connection_.getTrackState();return this.type_===gp?e.auxiliary:e.video}return!!this.getVideoTrack()}},{key:"getSubscribedState",value:function(){return this.isRemote_&&this.connection_?this.connection_.getSubscribeState():null}},{key:"getAudioTrack",value:function(){var e=null;if(this.mediaStream_){var t=this.mediaStream_.getAudioTracks();t.length>0&&(e=t[0])}return e}},{key:"getVideoTrack",value:function(){var e=null;if(this.mediaStream_){var t=this.mediaStream_.getVideoTracks();t.length>0&&(e=t[0])}return e}},{key:"getVideoFrame",value:function(){return this.videoPlayer_?this.videoPlayer_.getVideoFrame():null}},{key:"getMediaStream",value:function(){return this.mediaStream_}},{key:"setMediaStream",value:function(e){e!==this.mediaStream_&&(this.mediaStream_&&this.mediaStream_.getTracks().forEach((function(e){return e.stop()})),this.mediaStream_=e)}},{key:"updateVideoPlayingState",value:function(e){this.isPlaying_&&(e?(this.log_.info("playing state updated, play video"),this.playVideo().catch((function(e){}))):(this.log_.info("playing state updated, stop video"),this.stopVideo()))}},{key:"updateAudioPlayingState",value:function(e){this.isPlaying_&&(e?(this.log_.info("playing state updated, play audio"),this.playAudio().catch((function(e){}))):(this.log_.info("playing state updated, stop audio"),this.stopAudio()))}},{key:"on",value:function(e,t,i){this.emitter_.on(e,t,i)}},{key:"off",value:function(e,t,i){"*"===e?this.emitter_.removeAllListeners():this.emitter_.off(e,t,i)}},{key:"isRemote",value:function(){return this.isRemote_}},{key:"isScreenShare",value:function(){return!this.isRemote_&&this.screen_||this.isRemote_&&this.getType()===Dh}},{key:"getDiv",value:function(){return this.div_}},{key:"getObjectFit",value:function(){return this.objectFit_}},{key:"getMuted",value:function(){return this.muted_}},{key:"getClient",value:function(){return this.client_}}]),e}()).prototype,"play",[tw],Object.getOwnPropertyDescriptor(iw.prototype,"play"),iw.prototype),iw),lw=function(e){l(n,e);var i=g(n);function n(e){var r;o(this,n);var a={isRemote:!0,type:e.type},s=t(t({},e),a);return(r=i.call(this,s)).name_=wf,r.isStreamAddedEventEmitted_=!1,r.isAbleToCallSubscription_=!0,r}return s(n,[{key:"installEvents",value:function(){_(d(n.prototype),"installEvents",this).call(this),h_.on(N_,this.handleStreamSubscribed,this),h_.on($_,this.handleStreamUnsubscribed,this)}},{key:"uninstallEvents",value:function(){_(d(n.prototype),"uninstallEvents",this).call(this),h_.off(N_,this.handleStreamSubscribed,this),h_.off($_,this.handleStreamUnsubscribed,this)}},{key:"handleStreamSubscribed",value:function(e){e.client===this.client_&&e.stream===this&&this.connection_.getCurrentState()===yp&&this.emitConnectionStateChanged({prevState:vp,state:yp})}},{key:"handleStreamUnsubscribed",value:function(e){e.client===this.client_&&e.stream===this&&this.emitConnectionStateChanged({prevState:yp,state:vp})}},{key:"getType",value:function(){return _(d(n.prototype),"getType",this).call(this)}},{key:"getIsAbleToCallSubscription",value:function(){return this.isAbleToCallSubscription_}},{key:"setIsAbleToCallSubscription",value:function(e){this.isAbleToCallSubscription_=e}},{key:"setIsStreamAddedEventEmitted",value:function(e){this.isStreamAddedEventEmitted_=e}},{key:"getIsStreamAddedEventEmitted",value:function(){return this.isStreamAddedEventEmitted_}},{key:"getAudioTrack",value:function(){return this.connection_&&this.connection_.getTrackState().audio?_(d(n.prototype),"getAudioTrack",this).call(this):null}},{key:"getVideoTrack",value:function(){if(!this.connection_)return null;var e=this.connection_.getTrackState();return this.type_===mp&&!e.video||this.type_===gp&&!e.auxiliary?null:_(d(n.prototype),"getVideoTrack",this).call(this)}},{key:"close",value:function(){_(d(n.prototype),"close",this).call(this)}}]),n}(cw),dw=function(){function e(t){o(this,e),this.client_=t.client,this.subscribedStreams_=new Map,this.unsubscribedStreams_=new Map,this.subscriptedOptions_=new Map,this.autoRecoveryFlags_=new Map}var t,i,n;return s(e,[{key:"isEnabled",get:function(){return"webrtc"!==this.client_.getEnv()}},{key:"recover",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getUserId(),n=t.getType(),this.hasAutoRecoveryFlag(i,n)){e.next=5;break}return e.abrupt("return");case 5:if(r=this.getUnsubscribedStream(i,n)?"unsubscribe":"subscribe",e.prev=6,sS.warn("recover() try to recover subscription [".concat(r,"][").concat(i,"][").concat(n,"]")),"subscribe"!==r){e.next=13;break}return e.next=11,this.recoverSubscription(i,t);case 11:e.next=15;break;case 13:return e.next=15,this.recoverUnsubscription(i,t);case 15:ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:qp}),sS.warn("recover() recover successfully [".concat(r,"][").concat(i,"][").concat(n,"]")),e.next=23;break;case 19:e.prev=19,e.t0=e.catch(6),sS.error("recover() recover failed [".concat(r,"][").concat(i,"][").concat(n,"]"),e.t0),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:qp,error:e.t0});case 23:this.deleteAutoRecoveryFlag(i,n);case 24:case"end":return e.stop()}}),e,this,[[6,19]])}))),function(e){return n.apply(this,arguments)})},{key:"recoverSubscription",value:(i=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.getOptions(t,i.getType()),r=this.getSubscribedStream(t,i.getType()),n&&r){e.next=4;break}return e.abrupt("return");case 4:o=this.getStreamMuteState(r),a=o.isAudioMuted,s=o.isVideoMuted,this.mergeStream(r,i),this.recoverPlayingState(r),a&&r.doEnableTrack(Ph,!1),s&&r.doEnableTrack(Ah,!1);case 9:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"recoverUnsubscription",value:(t=r(regeneratorRuntime.mark((function e(t,i){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.getUnsubscribedStream(t,i.getType())){e.next=3;break}return e.abrupt("return");case 3:this.mergeStream(n,i);case 4:case"end":return e.stop()}}),e,this)}))),function(e,i){return t.apply(this,arguments)})},{key:"getStreamMuteState",value:function(e){var t={isAudioMuted:!1,isVideoMuted:!1},i=e.getMediaStream();return i&&(t.isAudioMuted=i.getAudioTracks().map((function(e){return e.enabled})).includes(!1),t.isVideoMuted=i.getVideoTracks().map((function(e){return e.enabled})).includes(!1)),t}},{key:"recoverPlayingState",value:function(e){var t=e.isPlaying(),i=e.getDiv();if(t&&i){var n=i.parentNode;e.stop(),e.play(n,{objectFit:e.getObjectFit(),muted:e.getMuted()})}}},{key:"mergeStream",value:function(e,t){var i=t.getConnection(),n=t.getMediaStream();e.setConnection(i),i.setRemoteStream(n.id,e),e.setMediaStream(n),e.updateAudioPlayingState(t.hasAudio()),e.updateVideoPlayingState(t.hasVideo())}},{key:"addSubscriptionRecord",value:function(e,t,i){var n=t.getType();if(this.subscribedStreams_.has(e))this.subscribedStreams_.get(e).set(n,t);else{var r=new Map;r.set(t.getType(),t),this.subscribedStreams_.set(e,r)}if(this.subscriptedOptions_.has(e))this.subscriptedOptions_.get(e).set(n,i);else{var o=new Map;o.set(t.getType(),i),this.subscriptedOptions_.set(e,o)}this.deleteUnsubscriptionRecord(e,n)}},{key:"addUnsubscriptionRecord",value:function(e,t){if(this.unsubscribedStreams_.has(e))this.unsubscribedStreams_.get(e).set(t.getType(),t);else{var i=new Map;i.set(t.getType(),t),this.unsubscribedStreams_.set(e,i)}this.deleteSubscriptionRecord(e,t.getType())}},{key:"getSubscribedStream",value:function(e,t){return this.subscribedStreams_.has(e)&&this.subscribedStreams_.get(e).has(t)?this.subscribedStreams_.get(e).get(t):null}},{key:"getOptions",value:function(e,t){return this.subscriptedOptions_.has(e)&&this.subscriptedOptions_.get(e).has(t)?this.subscriptedOptions_.get(e).get(t):null}},{key:"getUnsubscribedStream",value:function(e,t){return this.unsubscribedStreams_.has(e)&&this.unsubscribedStreams_.get(e).has(t)?this.unsubscribedStreams_.get(e).get(t):null}},{key:"deleteSubscriptionRecord",value:function(e,t){this.subscribedStreams_.has(e)&&this.subscribedStreams_.get(e).delete(t),this.subscriptedOptions_.has(e)&&this.subscriptedOptions_.get(e).delete(t)}},{key:"deleteUnsubscriptionRecord",value:function(e,t){this.unsubscribedStreams_.has(e)&&this.unsubscribedStreams_.get(e).delete(t)}},{key:"markAllStream",value:function(){for(var e=0,t=y(this.subscribedStreams_.entries());e<t.length;e++)for(var i=S(t[e],2),n=i[0],r=0,o=y(i[1].entries());r<o.length;r++){var a=S(o[r],1)[0];this.setAutoRecoveryFlag(n,a)}for(var s=0,c=y(this.unsubscribedStreams_.entries());s<c.length;s++)for(var l=S(c[s],2),d=l[0],u=0,h=y(l[1].entries());u<h.length;u++){var p=S(h[u],1)[0];this.setAutoRecoveryFlag(d,p)}}},{key:"setAutoRecoveryFlag",value:function(e,t){if(sS.info("setAutoRecoveryFlag() mark [".concat(e,"][").concat(t,"]")),this.autoRecoveryFlags_.has(e))this.autoRecoveryFlags_.get(e).set(t);else{var i=new Map;i.set(t),this.autoRecoveryFlags_.set(e,i)}}},{key:"hasAutoRecoveryFlag",value:function(e,t){return!!this.isEnabled&&this.autoRecoveryFlags_.has(e)&&this.autoRecoveryFlags_.get(e).has(t)}},{key:"deleteAutoRecoveryFlag",value:function(e,t){this.autoRecoveryFlags_.has(e)&&this.autoRecoveryFlags_.get(e).delete(t)}},{key:"delete",value:function(e){this.unsubscribedStreams_.delete(e),this.subscribedStreams_.delete(e),this.subscriptedOptions_.delete(e),this.autoRecoveryFlags_.delete(e)}}]),e}(),uw=Ri("slice"),hw=$e("species"),pw=P.Array,fw=Math.max;ii({target:"Array",proto:!0,forced:!uw},{slice:function(e,t){var i,n,r,o=Y(this),a=Lt(o),s=Dt(e,a),c=Dt(void 0===t?a:t,a);if(oi(o)&&(i=o.constructor,(yi(i)&&(i===pw||oi(i.prototype))||te(i)&&null===(i=i[hw]))&&(i=void 0),i===pw||void 0===i))return Qn(o,s,c);for(n=new(void 0===i?pw:i)(fw(c-s,0)),r=0;s<c;s++,r++)s in o&&Xr(n,r,o[s]);return n.length=r,n}}),ii({target:"String",proto:!0,forced:Vf("small")},{small:function(){return $f(this,"small","","")}});var mw=Qc.trim,gw=P.parseInt,vw=P.Symbol,_w=vw&&vw.iterator,Sw=/^[+-]?0x/i,yw=H(Sw.exec),bw=8!==gw(Gc+"08")||22!==gw(Gc+"0x16")||_w&&!A((function(){gw(Object(_w))}))?function(e,t){var i=mw(Uo(e));return gw(i,t>>>0||(yw(Sw,i)?16:10))}:gw;ii({global:!0,forced:parseInt!=bw},{parseInt:bw});var kw=function(){function e(t){o(this,e),this.player_=t,this.canvas_=document.createElement(Mh),this.canvasCtx_=this.canvas_.getContext("2d")}return s(e,[{key:"setCanvasRect",value:function(e,t){this.canvas_.width=e,this.canvas_.height=t}},{key:"drawVideoToCanvas",value:function(){var e=this.player_.getElement();this.canvasCtx_.drawImage(e,0,0,this.canvas_.width,this.canvas_.height)}},{key:"generateVideoTrackFromCanvasCapture",value:function(e){return this.canvas_.captureStream(e).getVideoTracks()[0]}},{key:"generateStreamFromTrack",value:function(e){var t=new MediaStream;return t.addTrack(e),t}},{key:"destroy",value:function(){this.player_.stop(),this.canvas_=null,this.canvasCtx_=null}},{key:"canvas",get:function(){return this.canvas_}},{key:"canvasCtx",get:function(){return this.canvasCtx_}},{key:"canDrawVideoToCanvas",get:function(){if(this.player_){var e=this.player_.getElement();if(e)return e.readyState===e.HAVE_ENOUGH_DATA}return!1}}]),e}(),Tw=function(){function e(t){o(this,e),this.localStream_=t,this.player_=new QC({stream:t,track:t.getVideoTrack(),muted:!0,objectFit:"cover",mirror:!1}),this.player_.play().then((function(){sS.info("VideoGenerator: play local video success")})).catch((function(){sS.error("VideoGenerator: Failed to play local video")})),this.processor_=new kw(this.player_)}return s(e,[{key:"generateSmallVideoTrack",value:function(e){var t=this.getSmallVideoProfile(e);this.processor_.setCanvasRect(t.width,t.height),this.player_.setRect({width:t.width,height:t.height});var i=this.processor_.generateVideoTrackFromCanvasCapture(t.frameRate);return this.interval_=yb.setInterval(this.render.bind(this),Math.ceil(1e3/t.frameRate)),i}},{key:"render",value:function(){this.processor_.canDrawVideoToCanvas&&this.processor_.drawVideoToCanvas()}},{key:"destroy",value:function(){yb.clearInterval(this.interval_),this.processor_&&this.processor_.destroy()}},{key:"getSmallVideoProfile",value:function(e){var t,i=this.localStream_.getVideoTrack(),n=this.localStream_.getVideoProfile(),r=i.getSettings(),o=r&&r.width&&r.height?{width:r.width,height:r.height}:n,a=o.width*o.height,s=e.width*e.height;return sS.log("big stream resolution: ".concat(o.height,"*").concat(o.width," small stream resolution: ").concat(e.height,"*").concat(e.width," ")),a>s?t=a/s:(sS.warn("Small stream resolution is larger than big stream, which is invalid. big: ".concat(o.width," * ").concat(o.height," small: ").concat(e.width," * ").concat(e.height)),t=a/19200),{width:parseInt(o.width/Math.sqrt(t)),height:parseInt(o.height/Math.sqrt(t)),frameRate:e.frameRate}}}]),e}(),Cw={voiceActivityDetection:!1},ww=function(e){l(k,e);var t,i,n,a,c,u,h,p,f,m,v,S,y,b=g(k);function k(e){var t;return o(this,k),(t=b.call(this,e)).localStream_=null,t.exchangeSDPTimeout_=-1,t.smallGenerator_=null,t.isSDPExchanging_=!1,t.ssrc_={audio:0,video:0,small:0},t.canvasTrack_=null,t}return s(k,[{key:"initialize",value:function(){_(d(k.prototype),"initialize",this).call(this),this.installEvents()}},{key:"reset",value:function(){_(d(k.prototype),"close",this).call(this),this.uninstallEvents(),this.clearExchangeSDPTimeout(),this.canvasTrack_=null,this.localStream_&&this.localStream_.clearCanvas()}},{key:"close",value:function(){this.reset(),this.emitConnectionStateChangedEvent(vp),this.smallGenerator_&&(this.smallGenerator_.destroy(),this.smallGenerator_=null)}},{key:"installEvents",value:function(){this.emitter_.on(Yb,this.handleError,this),this.emitter_.on(ek,this.handleConnectionStateChange,this)}},{key:"uninstallEvents",value:function(){this.emitter_.off(Yb,this.handleError,this),this.emitter_.off(ek,this.handleConnectionStateChange,this)}},{key:"publish",value:(y=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.localStream_=t,i=t.getMediaStream(),this.log_.info("is publishing stream: ".concat(t.getId())),n=this.localStream_.getAudioTrack(),r=this.localStream_.getVideoTrack(),n&&this.peerConnection_.addTrack(n,i),r&&(kh&&Gg(r)?(this.canvasTrack_=this.localStream_.genCanvasTrack(r),this.peerConnection_.addTrack(this.canvasTrack_,i)):this.peerConnection_.addTrack(r,i),this.client_.getIsEnableSmallStream()&&(this.smallGenerator_=new Tw(this.localStream_),o=this.smallGenerator_.generateSmallVideoTrack(this.client_.smallStreamConfig_),this.peerConnection_.addTrack(o,i))),e.next=9,this.connect();case 9:return e.abrupt("return",t);case 10:case"end":return e.stop()}}),e,this)}))),function(e){return y.apply(this,arguments)})},{key:"updateMediaSettings",value:function(e){var t=this,i=this.client_.getSystemResult().detail,n=i.isH264EncodeSupported,r=i.isVp8EncodeSupported,o="";n?o="H264":r&&(o="VP8");var a={videoCodec:o,videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0};return Jb?e.getTracks().forEach((function(e){var i=e.getSettings();if(e.kind===Ph){var n=1;i.channelCount&&(n=i.channelCount),a.audioChannel=n,a.audioBps=1e3*t.localStream_.getAudioBitrate(),a.audioFs=i.sampleRate}else e.kind===Ah&&(t.client_.getIsEnableSmallStream()&&(a.smallVideoWidth=t.client_.smallStreamConfig.width,a.smallVideoHeight=t.client_.smallStreamConfig.height,a.smallVideoFps=t.client_.smallStreamConfig.framerate,a.smallVideoBps=1e3*t.client_.smallStreamConfig.bitrate),a.videoWidth=i.width,a.videoHeight=i.height,a.videoFps=i.frameRate,a.videoBps=1e3*t.localStream_.getVideoBitrate())})):a=this.getMediaSettingsFromProfile(a),this.log_.info("updateMediaSettings: "+JSON.stringify(a)),a}},{key:"getMediaSettingsFromProfile",value:function(e){var t=this.localStream_;if(t){if(t.getAudioTrack()){var i=t.getAudioProfile();e.audioChannel=i.channelCount,e.audioBps=1e3*i.bitrate,e.audioFs=i.sampleRate}if(t.getVideoTrack()){var n=t.getVideoProfile();e.videoWidth=n.width,e.videoHeight=n.height,e.videoFps=n.frameRate,e.videoBps=1e3*n.bitrate}}return e}},{key:"addTrack",value:(S=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.peerConnection_){e.next=19;break}if(t.kind===Ah&&kh&&Gg(t)&&(t=this.canvasTrack_=this.localStream_.genCanvasTrack(t)),this.log_.info("is adding ".concat(t.kind," track to current published local stream")),!(Lb()&&this.peerConnection_.getTransceivers().findIndex((function(e){return"stopped"===e.direction}))>=0)){e.next=7;break}return this.log_.warn("transceiver is stopping, negotiate sdp first"),e.next=7,this.updateOffer(pf,t);case 7:if(!(i=this.peerConnection_.getSenders().find((function(e){return e.track&&e.track.kind===t.kind})))){e.next=14;break}return this.log_.warn("sender already exists, remove sender first"),n=i.track,this.removeSender(i),e.next=14,this.updateOffer(pf,n);case 14:return r=this.localStream_.getMediaStream(),this.peerConnection_.addTrack(t,r),e.next=18,this.updateOffer(hf,t);case 18:Xy(this.userId_,{eventId:t.kind===Ph?gy:my,eventDesc:"add ".concat(t.kind," track to current published stream"),timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_});case 19:case"end":return e.stop()}}),e,this)}))),function(e){return S.apply(this,arguments)})},{key:"isNeedToResetOfferOrder",value:function(){if("plan-b"===this.sdpSemantics_||!this.peerConnection_||!this.peerConnection_.localDescription)return!1;for(var e=this.peerConnection_.localDescription.sdp,t=fb(e),i=0;i<t.media.length;i++)if(0===t.media[i].mid&&t.media[i].type===Ah)return!0;return!1}},{key:"removeSender",value:function(e){var t=null;Lb()&&(t=this.peerConnection_.getTransceivers().find((function(t){return t.sender&&t.sender.track===e.track}))),this.peerConnection_.removeTrack(e),t&&Bg(t.stop)&&(this.log_.info("stop transceiver"),t.stop())}},{key:"removeTrack",value:(v=r(regeneratorRuntime.mark((function e(t){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.peerConnection_||!xb()){e.next=14;break}if(t.kind===Ah&&kh&&this.canvasTrack_&&(t=this.canvasTrack_,this.localStream_.clearCanvas()),this.log_.info("is removing ".concat(t.kind," track from current published local stream")),t.kind!==Ah||!this.isNeedToResetOfferOrder()){e.next=9;break}return this.reset(),this.initialize(),e.next=8,this.publish(this.localStream_);case 8:return e.abrupt("return");case 9:return(i=this.peerConnection_.getSenders().find((function(e){return e.track===t})))&&this.removeSender(i),e.next=13,this.updateOffer(pf,t);case 13:Xy(this.userId_,{eventId:t.kind===Ph?_y:vy,eventDesc:"remove ".concat(t.kind," track from current published stream"),timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_});case 14:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)})},{key:"isReplaceTrackAvailable",value:function(){return"RTCRtpSender"in window&&"replaceTrack"in window.RTCRtpSender.prototype}},{key:"replaceTrack",value:(m=r(regeneratorRuntime.mark((function e(t){var i,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.kind!==Ah||!kh||!this.canvasTrack_){e.next=2;break}return e.abrupt("return");case 2:if(this.isReplaceTrackAvailable()&&xb()){e.next=4;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:kg})});case 4:if(this.peerConnection_){e.next=6;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Um})});case 6:if(0!==(i=this.peerConnection_.getSenders()).length){e.next=9;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Um})});case 9:i.forEach((function(e){e.track&&e.track.kind===t.kind&&(n.log_.info("is replacing ".concat(t.kind," track to current published local stream")),e.replaceTrack(t))})),Xy(this.userId_,{eventId:t.kind===Ph?My:Ry,eventDesc:"replace ".concat(t.kind," track from current published stream"),timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_});case 11:case"end":return e.stop()}}),e,this)}))),function(e){return m.apply(this,arguments)})},{key:"setBandwidth",value:(f=r(regeneratorRuntime.mark((function e(t,i,n){var r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isUplink_){e.next=2;break}return e.abrupt("return",n);case 2:if($b()){e.next=4;break}return e.abrupt("return",i===Ah?this.updateVideoBandwidthRestriction(n,t):this.updateAudioBandwidthRestriction(n,t));case 4:if(!(r=this.peerConnection_.getSenders().find((function(e){return e.track&&e.track.kind===i})))){e.next=20;break}return(o=r.getParameters()).encodings&&0!==o.encodings.length||(o.encodings=[{}]),"unlimited"===t?delete o.encodings[0].maxBitrate:o.encodings[0].maxBitrate=1e3*t,e.prev=9,e.next=12,r.setParameters(o);case 12:return this.log_.info(i+" bandwidth was set to "+t+" kbps"),e.abrupt("return",n);case 16:return e.prev=16,e.t0=e.catch(9),this.log_.info("failed to set bandwidth by setting maxBitrate: "+e.t0),e.abrupt("return",i===Ah?this.updateVideoBandwidthRestriction(n,t):this.updateAudioBandwidthRestriction(n,t));case 20:return e.abrupt("return",n);case 21:case"end":return e.stop()}}),e,this,[[9,16]])}))),function(e,t,i){return f.apply(this,arguments)})},{key:"setSmallStreamBandwidth",value:(p=r(regeneratorRuntime.mark((function e(t,i){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isUplink_){e.next=2;break}return e.abrupt("return",i);case 2:if($b()){e.next=4;break}return e.abrupt("return",this.updateSmallVideoBandwidthRestriction(i,t));case 4:if(!(n=this.peerConnection_.getSenders().filter((function(e){return e.track&&e.track.kind===Ah}))[1])){e.next=20;break}return(r=n.getParameters()).encodings&&0!==r.encodings.length||(r.encodings=[{}]),"unlimited"===t?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=1e3*t,e.prev=9,e.next=12,n.setParameters(r);case 12:return this.log_.info("small stream bandwidth was set to "+t+" kbps"),e.abrupt("return",i);case 16:return e.prev=16,e.t0=e.catch(9),this.log_.info("failed to set small stream bandwidth by setting maxBitrate: "+e.t0),e.abrupt("return",this.updateSmallVideoBandwidthRestriction(i,t));case 20:return e.abrupt("return",i);case 21:case"end":return e.stop()}}),e,this,[[9,16]])}))),function(e,t){return p.apply(this,arguments)})},{key:"updateVideoBandwidthRestriction",value:function(e,t){var i="AS";return Eu&&(i="TIAS",t*=1e3),-1===e.indexOf("b="+i+":")?e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/,"m=video $1\r\nc=IN $2\r\nb="+i+":"+t+"\r\n"):e.replace(new RegExp("b="+i+":.*\r\n"),"b="+i+":"+t+"\r\n")}},{key:"updateAudioBandwidthRestriction",value:function(e,t){var i="AS";return Eu&&(i="TIAS",t*=1e3),e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,"m=audio $1\r\nc=IN $2\r\nb="+i+":"+t+"\r\n")}},{key:"updateSmallVideoBandwidthRestriction",value:function(e,t){var i="AS";Eu&&(i="TIAS",t*=1e3);var n=/m=video (.*)\r\nc=IN (.*)\r\n/g,r=[],o=n.exec(e);for(r.push(o);null!==o;)o=n.exec(e),r.push(o);var a=r[r.length-2],s=e.slice(0,a.index),c=e.slice(a.index);return-1===e.indexOf("b="+i+":")?s+(c=c.replace(/m=video (.*)\r\nc=IN (.*)\r\n/,"m=video $1\r\nc=IN $2\r\nb="+i+":"+t+"\r\n")):s+(c=c.replace(new RegExp("b="+i+":.*\r\n"),"b="+i+":"+t+"\r\n"))}},{key:"removeBandwidthRestriction",value:function(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}},{key:"removeVideoOrientation",value:function(e){return e.replace(/urn:3gpp:video-orientation/,"")}},{key:"connect",value:(h=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.exchangeSDP();case 3:return e.next=5,this.waitForPeerConnectionConnected();case 5:e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),this.closePeerConnection(!0),e.t0;case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return h.apply(this,arguments)})},{key:"exchangeSDP",value:(u=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this.isSDPExchanging_=!0,e.next=4,this.createOffer();case 4:return this.log_.info("createOffer success, sending offer to remote server"),e.next=7,this.doExchangeSDP();case 7:this.isSDPExchanging_=!1,e.next=14;break;case 10:throw e.prev=10,e.t0=e.catch(0),this.isSDPExchanging_=!1,e.t0;case 14:case"end":return e.stop()}}),e,this,[[0,10]])}))),function(){return u.apply(this,arguments)})},{key:"createOffer",value:(c=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.peerConnection_.createOffer(Cw);case 3:return t=e.sent,e.next=6,this.peerConnection_.setLocalDescription(t);case 6:this.updateSSRC(t.sdp),ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:jp,kind:"offer"}),e.next=14;break;case 10:throw e.prev=10,e.t0=e.catch(0),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:jp,kind:"offer",error:e.t0}),e.t0;case 14:case"end":return e.stop()}}),e,this,[[0,10]])}))),function(){return c.apply(this,arguments)})},{key:"doExchangeSDP",value:function(){var e=this;return new Promise((function(t,i){e.exchangeSDPTimeout_=setTimeout((function(){e.signalChannel_.off(KS.PUBLISH_RESULT,n),e.clearExchangeSDPTimeout();var t=new fy({code:py.API_CALL_TIMEOUT,message:Dg({key:Zf})});i(t)}),5e3);var n=function(){var n=r(regeneratorRuntime.mark((function n(r){var o,a,s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(n.prev=0,e.clearExchangeSDPTimeout(),o=r.data,a=o.code,s=o.message,0!==a){n.next=9;break}return n.next=6,e.acceptAnswer(r.data.data);case 6:t(),n.next=10;break;case 9:e.checkPublishResultCode(a,s);case 10:n.next=15;break;case 12:n.prev=12,n.t0=n.catch(0),i(n.t0);case 15:case"end":return n.stop()}}),n,null,[[0,12]])})));return function(e){return n.apply(this,arguments)}}(),o=e.updateMediaSettings(e.localStream_.getMediaStream()),a={type:e.peerConnection_.localDescription.type,sdp:e.removeVideoOrientation(e.peerConnection_.localDescription.sdp),screen:e.localStream_.hasScreenTrack(),constraintConfig:o};e.signalChannel_.once(KS.PUBLISH_RESULT,n),e.log_.debug("sending sdp offer: "+a.sdp),e.signalChannel_.send(ey,a)}))}},{key:"setSDPDirection",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"all",n=fb(e);return n.media.forEach((function(e){"all"!==i&&e.type!==i||(e.direction=t)})),mb(n)}},{key:"updateOffer",value:(a=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.peerConnection_.createOffer(Cw);case 3:return n=e.sent,Eu&&(n.sdp=this.setSDPDirection(n.sdp,"sendrecv")),e.next=7,this.peerConnection_.setLocalDescription(n);case 7:return r=this.updateMediaSettings(this.localStream_.getMediaStream()),o={action:t,trackId:i.id,kind:i.kind===Ah?"bigVideo":i.kind,type:"offer",sdp:this.peerConnection_.localDescription.sdp,constraintConfig:r},this.log_.info("createOffer success, sending updated offer to remote server"),this.log_.debug("updatedOffer: "+o.sdp),e.next=13,this.signalChannel_.sendWaitForResponse({command:qS,data:o,responseCommand:KS.UPDATE_OFFER_RESULT,timeout:1e4,commandDesc:"update offer"});case 13:return a=e.sent,s=a.data,c=s.code,l=s.message,0!==c&&this.checkPublishResultCode(c,l),e.next=18,this.acceptAnswer(a.data.data);case 18:this.updateSSRC(n.sdp),ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:jp,kind:"offer"}),e.next=27;break;case 22:throw e.prev=22,e.t0=e.catch(0),this.log_.error(e.t0),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:jp,kind:"offer",error:e.t0}),e.t0;case 27:case"end":return e.stop()}}),e,this,[[0,22]])}))),function(e,t){return a.apply(this,arguments)})},{key:"acceptAnswer",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this.localStream_.getVideoBitrate(),n=this.localStream_.getAudioBitrate(),e.prev=2,r=this.removeVideoOrientation(t.sdp),e.next=6,this.setBandwidth(i,Ah,r);case 6:return r=e.sent,e.next=9,this.setBandwidth(n,Ph,r);case 9:if(r=e.sent,!this.client_.getIsEnableSmallStream()){e.next=15;break}return o=this.client_.smallStreamConfig,e.next=14,this.setSmallStreamBandwidth(o.bitrate,r);case 14:r=e.sent;case 15:return a={type:t.type,sdp:r},e.next=18,this.peerConnection_.setRemoteDescription(a);case 18:this.log_.debug("accepted answer: "+r),ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:Wp,kind:"answer"}),e.next=27;break;case 22:throw e.prev=22,e.t0=e.catch(2),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Wp,kind:"answer",error:e.t0}),this.log_.error("failed to accept remote answer "+e.t0),e.t0;case 27:case"end":return e.stop()}}),e,this,[[2,22]])}))),function(e){return n.apply(this,arguments)})},{key:"sendMutedFlag",value:function(e){var t={audio:e.audio,bigVideo:e.video,auxVideo:e.auxVideo};this.log_.info("send muted state: ".concat(JSON.stringify(t))),this.signalChannel_.send(YS,t)}},{key:"getIsReconnecting",value:function(){return this.isReconnecting_}},{key:"reconnect",value:(i=r(regeneratorRuntime.mark((function e(){var t,i,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(-1===this.reconnectionTimer_){e.next=3;break}return this.log_.warn("reconnect() uplink is reconnecting, ignore current reconnection"),e.abrupt("return");case 3:if(!(this.reconnectionCount_>=30)){e.next=12;break}return this.log_.warn("SDK has tried reconnect uplink for ".concat(30," times, but all failed, please check your network")),this.stopReconnection(),t=new fy({code:py.UPLINK_RECONNECTION_FAILED,message:Dg({key:Yf})}),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Bp,error:t}),this.addEventInternal(Gy,"uplink-connection reconnect fail"),this.emitConnectionStateChangedEvent(vp),this.emitter_.emit(Yb,t),e.abrupt("return");case 12:if(this.signalChannel_.getCurrentState()===GS){e.next=16;break}return this.log_.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this.signalChannel_.once(FS,this.reconnect,this),e.abrupt("return");case 16:if(this.reconnectionCount_++,e.prev=17,this.log_.warn("reconnect() try to reconnect uplink [".concat(this.reconnectionCount_,"/").concat(30,"]")),i=Vg(this.reconnectionCount_),this.reconnectionTimer_=setTimeout((function(){n.log_.warn("reconnect() uplink reconnect timeout(".concat(i/1e3,"s), try again")),n.signalChannel_.off(KS.UNPUBLISH_RESULT,n.onUnpublishResult,n),n.clearReconnectionTimer(),n.reconnect()}),i),!(this.isSDPExchanging_||this.peerConnection_&&this.peerConnection_.connectionState===kp)){e.next=23;break}return e.abrupt("return");case 23:this.signalChannel_.send(ty),this.signalChannel_.once(KS.UNPUBLISH_RESULT,this.onUnpublishResult,this),e.next=29;break;case 27:e.prev=27,e.t0=e.catch(17);case 29:case"end":return e.stop()}}),e,this,[[17,27]])}))),function(){return i.apply(this,arguments)})},{key:"onUnpublishResult",value:(t=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this.reset(),this.initialize(),e.next=5,this.publish(this.localStream_);case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(0);case 9:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return t.apply(this,arguments)})},{key:"clearExchangeSDPTimeout",value:function(){-1!==this.exchangeSDPTimeout_&&(clearTimeout(this.exchangeSDPTimeout_),this.exchangeSDPTimeout_=-1)}},{key:"clearReconnectionTimer",value:function(){-1!==this.reconnectionTimer_&&(clearTimeout(this.reconnectionTimer_),this.reconnectionTimer_=-1)}},{key:"handleError",value:function(e){e.getCode()===py.ICE_TRANSPORT_ERROR&&(this.isFirstConnection_&&(this.isFirstConnection_=!1,ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Vp,error:e})),this.isReconnecting_||this.startReconnection())}},{key:"handleConnectionStateChange",value:function(e){e.state===yp&&(this.isFirstConnection_&&(this.isFirstConnection_=!1,ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:Vp}),this.addEventInternal(Vy,"uplink-connection is connected")),this.isReconnecting_&&(ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:Bp}),this.log_.warn("reconnect() uplink reconnect successfully"),this.addEventInternal(Hy,"uplink-connection reconnect success"),this.stopReconnection()))}},{key:"updateSSRC",value:function(e){var t=this;try{var i=0;fb(e).media.forEach((function(e){if(e.type===Ph){var n=e.ssrcs[0];n&&(t.ssrc_.audio=n.id)}else{var r=e.ssrcs[0];switch(i+=1){case 1:r&&(t.ssrc_.video=r.id);break;case 2:r&&(t.ssrc_.small=r.id)}}}))}catch(e){}}},{key:"getLocalStreamVideoTrackId",value:function(){if(this.peerConnection_){var e=this.peerConnection_.getSenders().filter((function(e){return e.track&&e.track.kind===Ah}));if(e[0])return e[0].track.id}if(this.localStream_){var t=this.localStream_.getVideoTrack();if(t)return t.id}return""}},{key:"getSSRC",value:function(){return this.ssrc_}},{key:"checkPublishResultCode",value:function(e,t){if(0!==e)throw 1028===e?(this.log_.error(Mg.NOT_SUPPORTED_H264ENCODE),new fy({code:py.NOT_SUPPORTED_H264,message:Dg({key:yg})})):new fy({code:py.UNKNOWN,message:Dg({key:Ig,data:{signalResponse:KS.PUBLISH_RESULT,code:e,message:t}})})}},{key:"getLocalStream",value:function(){return this.localStream_}}]),k}(XC),Iw=function(e){l(f,e);var t,i,n,a,c,u,h,p=g(f);function f(e){var t;return o(this,f),(t=p.call(this,e)).remoteStreams_=new Map,t.autoSubscribe=e.autoSubscribe,t.trackState_={audio:e.trackState.audio,video:e.trackState.video,auxiliary:e.trackState.auxiliary,smallVideo:e.trackState.smallVideo},t.ssrc_={audio:0,video:0,auxiliary:0},t.subscribeState_={audio:e.autoSubscribe,video:e.autoSubscribe,auxiliary:e.autoSubscribe,smallVideo:!1},t.pendingSubscription_=[],t.subscriptionTimeout_=-1,t.subscriptionRetryCount_=0,t.isSubscriptionPending_=!1,t.isSDPExchanging_=!1,t.installEvents(),t}return s(f,[{key:"isMainStreamSubscribed",get:function(){return(this.subscribeState_.audio||this.subscribeState_.video||this.subscribeState_.smallVideo)&&(this.trackState_.audio||this.trackState_.video||this.trackState_.smallVideo)}},{key:"isAuxStreamSubscribed",get:function(){return this.subscribeState_.auxiliary&&this.trackState_.auxiliary}},{key:"isSmallStreamSubscribed",get:function(){return this.subscribeState_.smallVideo&&this.trackState_.smallVideo}},{key:"isBigStreamSubscribed",get:function(){return this.subscribeState_.video&&this.trackState_.video}},{key:"isStreamUnpublished",value:function(e){return e.getType()===Jh?!this.trackState_.audio&&!this.trackState_.video:!this.trackState_.auxiliary}},{key:"initialize",value:function(){_(d(f.prototype),"initialize",this).call(this),this.peerConnection_.ontrack=this.onTrack.bind(this)}},{key:"close",value:function(){var e=this;_(d(f.prototype),"close",this).call(this),this.trackState_.audio=!1,this.trackState_.video=!1,this.trackState_.auxiliary=!1,this.emitConnectionStateChangedEvent(vp),-1!==this.subscriptionTimeout_&&(clearTimeout(this.subscriptionTimeout_),this.subscriptionTimeout_=-1),this.remoteStreams_.forEach((function(t){var i=t;i.setConnection(null),i.getIsStreamAddedEventEmitted()&&e.emitter_.emit(Zb,{stream:i})})),this.remoteStreams_.clear(),this.uninstallEvents()}},{key:"installEvents",value:function(){var e=this;h_.on(O_,this.onRemoteStreamUpdate,this),this.signalChannel_.on(KS.SUBSCRIBE_CHANGE_RESULT,this.onSubscribeChangeResult,this),this.signalChannel_.on(KS.UNSUBSCRIBE_RESULT,this.onUnsubscribeResult,this),this.emitter_.on(Yb,(function(t){t.getCode()===py.ICE_TRANSPORT_ERROR&&(e.isFirstConnection_&&(e.isFirstConnection_=!1,ib.logFailedEvent({userId:e.client_.getUserId(),eventType:Fp,error:t})),e.isReconnecting_||e.startReconnection())})),this.emitter_.on(ek,(function(t){t.state===yp&&e.isFirstConnection_&&(e.isFirstConnection_=!1,ib.logSuccessEvent({userId:e.client_.getUserId(),eventType:Fp}),e.addEventInternal(By,"downlink-connection is connected"))}))}},{key:"uninstallEvents",value:function(){h_.removeListener(O_,this.onRemoteStreamUpdate,this),this.signalChannel_.removeListener(KS.SUBSCRIBE_CHANGE_RESULT,this.onSubscribeChangeResult,this),this.signalChannel_.removeListener(KS.UNSUBSCRIBE_RESULT,this.onUnsubscribeResult,this)}},{key:"onRemoteStreamUpdate",value:function(e){if(this.hitTest(e.tinyId)&&e.client===this.client_){this.updateTrackState(e.action,e.kind);var t=e.kind===Dh?pp:hp,i=this.remoteStreams_.get(t);if(!i)return;e.action===hf?this.handleRemoteAddTrack(e.kind,i):this.handleRemoteRemoveTrack(e.kind,i)}}},{key:"handleRemoteAddTrack",value:function(e,t){this.log_.info("remote add ".concat(e," track")),e===Ph?t.updateAudioPlayingState(this.subscribeState_.audio):t.updateVideoPlayingState(e===Dh?this.subscribeState_.auxiliary:this.subscribeState_.video||this.subscribeState_.smallVideo),t.getIsStreamAddedEventEmitted()?this.emitter_.emit(Qb,{stream:t}):(this.emitter_.emit(qb,{stream:t}),this.currentState_===yp&&t.emitConnectionStateChanged({prevState:vp,state:yp}))}},{key:"handleRemoteRemoveTrack",value:function(e,t){t.getIsStreamAddedEventEmitted()&&(this.log_.info("remote remove ".concat(e," track")),e===Dh||!this.trackState_.audio&&!this.trackState_.video?(this.log_.info("remote stream ".concat(t.getType()," removed")),this.currentState_===yp&&t.emitConnectionStateChanged({prevState:yp,state:vp}),this.emitter_.emit(Zb,{stream:t})):(e===Ph?t.updateAudioPlayingState(!1):t.updateVideoPlayingState(!1),this.emitter_.emit(Qb,{stream:t})))}},{key:"updateTrackState",value:function(e,t){var i=e===hf;switch(t){case Ph:this.trackState_.audio=i;break;case Ah:this.trackState_.video=i;break;case Dh:this.trackState_.auxiliary=i;break;case Oh:this.trackState_.smallVideo=i}this.log_.info("trackState updated: ".concat(JSON.stringify(this.trackState_)))}},{key:"onTrack",value:function(e){var t=e.streams[0],i=e.track;if(this.log_.info("ontrack() kind: ".concat(i.kind," id: ").concat(i.id," streamId: ").concat(t.id)),"unified-plan"===this.sdpSemantics_){var n=function(e){var t=pb.parse(e),i={audio:[],video:[]};return t.media.forEach((function(e){if(e.ssrcs){var t=e.ssrcs[0].id>>16&255;if(e.type===Ph)i.audio.push(hp);else if(e.type==Ah){var n=t===fp?hp:pp;i.video.push(n)}}})),i}(this.peerConnection_.remoteDescription.sdp);if(i.kind===Ph){if(0===n.audio.length||t.id!==hp)return void this.log_.debug("skip this invalid audio track")}else if(-1===n.video.indexOf(t.id))return void this.log_.debug("skip this invalid video track: ".concat(i.id," msid: ").concat(t.id))}ib.logEvent({eventType:"ontrack",kind:i.kind});var r=!1,o=this.remoteStreams_.get(t.id),a=t.id===hp?mp:gp;if(Fg(o)&&((o=new lw({type:a,userId:this.userId_,client:this.client_})).setConnection(this),this.remoteStreams_.set(t.id,o),r=!0),o.setMediaStream(t),i.kind===Ph?o.updateAudioPlayingState(this.subscribeState_.audio):a===mp?o.updateVideoPlayingState(this.subscribeState_.video||this.subscribeState_.smallVideo):o.updateVideoPlayingState(this.subscribeState_.auxiliary),(a!==gp||this.trackState_.auxiliary)&&(a!==mp||this.trackState_.audio||this.trackState_.video)){var s=this.client_.getSubscriptionManager();s&&s.hasAutoRecoveryFlag(this.userId_,a)||(r?this.emitter_.emit(qb,{stream:o}):this.emitter_.emit(Qb,{stream:o}))}}},{key:"addRRTRLine",value:function(e){var t=e.split("\r\n"),i=new Map;t.forEach((function(e,n){/^a=rtcp-fb:/.test(e)&&t[n+1]&&!/^a=rtcp-fb:/.test(t[n+1])&&i.set(n+1,e.match(/^a=rtcp-fb:\d+/)[0]+" rrtr")}));for(var n=y(i),r=0;r<n.length;r++){var o=S(n[r],2),a=o[0],s=o[1];t.splice(a+r,0,s)}return t.join("\r\n")}},{key:"addSPSDescription",value:function(e){var t=fb(e);return t.media.forEach((function(e){e.type===Ah&&e.fmtp.forEach((function(e){e.config+=";sps-pps-idr-in-keyframe=1"}))})),mb(t)}},{key:"removeSDESDescription",value:function(e){var t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],i=fb(e);return i.media.forEach((function(e){e.ext=e.ext.filter((function(e){return!t.includes(e.uri)}))})),mb(i)}},{key:"isSubscriptionStateNotChanged",value:function(e,t){return e.getType()===mp?(null==t?void 0:t.audio)===this.subscribeState_.audio&&(null==t?void 0:t.video)===this.subscribeState_.video&&this.isSubscribeSmall(t):e.getType()===gp?!Fg(t.video)&&this.subscribeState_.auxiliary===t.video:void 0}},{key:"isSubscribeSmall",value:function(e){return Fg(e.smallVideo)&&!this.subscribeState_.smallVideo}},{key:"subscribe",value:(h=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,o=i.emitEvent,a=void 0===o||o,s=t.getType(),(null===(n=this.peerConnection_)||void 0===n?void 0:n.connectionState)!==bp&&(null===(r=this.peerConnection_)||void 0===r?void 0:r.connectionState)!==kp){e.next=6;break}return e.next=6,this.waitForPeerConnectionConnected();case 6:if(!this.isSubscriptionStateNotChanged(t,i)){e.next=13;break}if(this.peerConnection_){e.next=11;break}return this.initialize(),e.next=11,this.connect();case 11:case 26:return a&&Fg(i.smallVideo)&&this.emitter_.emit(Xb,{stream:t,result:!0}),e.abrupt("return",t);case 13:if(s===Jh?(Fg(i.audio)||(this.subscribeState_.audio=i.audio),Fg(i.video)||(this.subscribeState_.video=i.video),this.subscribeState_.smallVideo=(null==i?void 0:i.smallVideo)||!1,this.addEventInternal(this.subscribeState_.audio?Ty:wy,this.subscribeState_.audio?"subscribe audio":"unsubscribe audio"),this.addEventInternal(this.subscribeState_.video?Ty:wy,this.subscribeState_.video?"subscribe video":"unsubscribe video"),this.addEventInternal(this.subscribeState_.smallVideo?qy:Zy,this.subscribeState_.smallVideo?"subscribe smallVideo":"unsubscribe smallVideo")):Fg(i.video)||(this.subscribeState_.auxiliary=i.video),this.log_.info("subscribe ".concat(s," stream with options ").concat(JSON.stringify(i)," current state: ").concat(JSON.stringify(this.subscribeState_))),!this.peerConnection_&&!this.isSDPExchanging_){e.next=23;break}return c=nf,this.isMainStreamSubscribed||this.isAuxStreamSubscribed||(c=tf),e.next=20,this.sendSubscription(t,c);case 20:s===Jh?(t.updateAudioPlayingState(this.subscribeState_.audio),t.updateVideoPlayingState(this.subscribeState_.video||this.subscribeState_.smallVideo)):t.updateVideoPlayingState(this.subscribeState_.auxiliary),e.next=26;break;case 23:return this.initialize(),e.next=26,this.connect();case 30:if(e.prev=30,e.t0=e.catch(0),!this.isStreamUnpublished(t)){e.next=34;break}throw new fy({code:py.REMOTE_STREAM_NOT_EXIST,message:"remote user ".concat(this.userId_," unpublished stream")});case 34:throw e.t0;case 35:case"end":return e.stop()}}),e,this,[[0,30]])}))),function(e,t){return h.apply(this,arguments)})},{key:"unsubscribe",value:(u=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((i=t.getType())!==Jh){e.next=10;break}if(this.isMainStreamSubscribed){e.next=5;break}return this.log_.info("main stream already unsubscribed"),e.abrupt("return",t);case 5:this.subscribeState_.audio=!1,this.subscribeState_.video=!1,this.subscribeState_.smallVideo=!1,e.next=14;break;case 10:if(this.isAuxStreamSubscribed){e.next=13;break}return this.log_.info("auxiliary stream already unsubscribed"),e.abrupt("return",t);case 13:this.subscribeState_.auxiliary=!1;case 14:return n=tf,(i===mp&&this.isAuxStreamSubscribed||i===gp&&this.isMainStreamSubscribed)&&(n=nf),this.log_.info("unsubscribe ".concat(i," stream with ").concat(JSON.stringify(this.subscribeState_))),e.next=19,this.sendSubscription(t,n);case 19:return t.updateVideoPlayingState(!1),t.updateAudioPlayingState(!1),n===tf&&((r=t.getMediaStream())&&r.getTracks().forEach((function(e){return r.removeTrack(e)})),this.closePeerConnection(),this.emitConnectionStateChangedEvent(vp)),this.addEventInternal(wy,"unsubscribe audio"),this.addEventInternal(Cy,"unsubscribe video"),e.abrupt("return",t);case 25:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"sendSubscription",value:function(e,t){var i=this;return new Promise((function(n,r){var o={srcTinyId:i.tinyId_,srcUserId:i.userId_};t===nf&&(o={audio:i.subscribeState_.audio,bigVideo:i.subscribeState_.video,auxVideo:i.subscribeState_.auxiliary,smallVideo:i.subscribeState_.smallVideo,srcTinyId:i.tinyId_}),i.pendingSubscription_.length>0?i.log_.debug("queue the subscription for later handling"):i.doSendSubscription(o,e,t),i.pendingSubscription_.push({stream:e,type:t,data:o,callback:function(e){var o=e.code,a=e.message;if(0===o)n();else{var s=new fy({code:o,message:Dg({key:Kf,data:{type:t,message:a}})});i.log_.error(s),r(s)}}})}))}},{key:"doSendSubscription",value:function(e,t,i){var n=this;this.log_.debug("doSendSubscription() send SUBSCRIBE command with data: ".concat(JSON.stringify(e))),i===nf?this.signalChannel_.send(ry,e):i===tf&&this.signalChannel_.send(ny,e),this.isSubscriptionPending_=!0,this.subscriptionTimeout_=setTimeout((function(){if(n.isSubscriptionPending_)if(n.log_.debug("subscription timeout"),n.subscriptionRetryCount_+=1,n.subscriptionRetryCount_<=3){n.log_.debug("resend subscription");var e=n.pendingSubscription_[0].data;n.doSendSubscription(e,t,i)}else n.log_.error(Mg.SUBSCRIPTION_TIMEOUT),n.pendingSubscription_.shift(),n.isSubscriptionPending_=!1,n.subscriptionRetryCount_=0,n.emitter_.emit(Yb,new fy({code:py.SUBSCRIPTION_TIMEOUT,message:Dg({key:qf})}))}),5e3)}},{key:"onSubscribeChangeResult",value:function(e){var t=e&&e.data||{},i=t.code,n=t.message,r=t.data.srcTinyId;if(this.hitTest(r)){var o=this.pendingSubscription_[0];o&&o.type===nf&&o.callback({code:i,message:n}),this.sendNextSubscription()}}},{key:"onUnsubscribeResult",value:function(e){var t=e&&e.data||{},i=t.code,n=t.message,r=t.data.srcTinyId;if(this.hitTest(r)){var o=this.pendingSubscription_[0];o&&o.type===tf&&o.callback({code:i,message:n}),this.sendNextSubscription()}}},{key:"connect",value:(c=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.exchangeSDP();case 3:return e.next=5,this.waitForPeerConnectionConnected();case 5:e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),this.closePeerConnection(!0),e.t0;case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return c.apply(this,arguments)})},{key:"exchangeSDP",value:(a=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this.isSDPExchanging_=!0,e.next=4,this.createOffer();case 4:return this.log_.info("createOffer success, sending offer to remote server"),t=this.peerConnection_.localDescription,i=t.type,n=t.sdp,r={type:i,sdp:n,srcUserId:this.userId_,srcTinyId:this.tinyId_,audio:this.subscribeState_.audio,bigVideo:this.subscribeState_.video,auxVideo:this.subscribeState_.auxiliary,smallVideo:this.subscribeState_.smallVideo},h_.emit(Y_,{client:this.client_,connection:this,userId:this.userId_,tinyId:this.tinyId_,role:dp,subscribeState:this.subscribeState_,trackState:this.trackState_}),e.next=10,this.signalChannel_.sendWaitForResponse({command:iy,commandDesc:"exchange sdp",data:r,responseCommand:KS.SUBSCRIBE_RESULT});case 10:if(o=e.sent,this.peerConnection_){e.next=15;break}throw a=this.genRemoteStreamNotExistError(),this.log_.warn(a),a;case 15:return e.next=17,this.onSubscribeResult(o);case 17:this.isSDPExchanging_=!1,e.next=24;break;case 20:throw e.prev=20,e.t0=e.catch(0),this.isSDPExchanging_=!1,e.t0;case 24:case"end":return e.stop()}}),e,this,[[0,20]])}))),function(){return a.apply(this,arguments)})},{key:"createOffer",value:(n=r(regeneratorRuntime.mark((function e(){var t,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={voiceActivityDetection:!1},"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype&&"unified-plan"===this.sdpSemantics_?(this.peerConnection_.addTransceiver(Ph,{direction:"recvonly"}),this.peerConnection_.addTransceiver(Ah,{direction:"recvonly"}),this.peerConnection_.addTransceiver(Ah,{direction:"recvonly"})):(t.offerToReceiveAudio=!0,t.offerToReceiveVideo=!0),e.next=4,this.peerConnection_.createOffer(t);case 4:return i=e.sent,e.next=7,Mb();case 7:return e.sent.isH264DecodeSupported||(this.log_.warn("remove h264 desc from sdp"),i.sdp=vb(i.sdp)),i.sdp=this.addRRTRLine(i.sdp),i.sdp=this.addSPSDescription(i.sdp),i.sdp=gb(i.sdp),"unified-plan"===this.sdpSemantics_&&(i.sdp=this.removeSDESDescription(i.sdp)),e.next=16,this.peerConnection_.setLocalDescription(i);case 16:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"onSubscribeResult",value:(i=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t&&t.data||{},n=i.code,r=i.message,o=void 0===r?"":r,a=t&&t.data&&t.data.data||{},s=a.type,c=a.sdp,77393!==n){e.next=5;break}throw this.log_.error(Mg.NOT_SUPPORTED_H264DECODE),new fy({code:py.NOT_SUPPORTED_H264,message:Dg({key:bg})});case 5:if(e.prev=5,0===n){e.next=8;break}throw new fy({code:n,message:Dg({key:Xf,data:{errMsg:o}})});case 8:return this.log_.debug("accept remote answer: "+c),e.next=11,this.peerConnection_.setRemoteDescription({type:s,sdp:c});case 11:this.updateSSRC(c),e.next=18;break;case 14:throw e.prev=14,e.t0=e.catch(5),this.log_.error(e.t0),e.t0;case 18:case"end":return e.stop()}}),e,this,[[5,14]])}))),function(e){return i.apply(this,arguments)})},{key:"updateSSRC",value:function(e){var t=this;try{fb(e).media.forEach((function(e){if(e.type===Ph){var i=e.ssrcs.find((function(e){return e.value.includes(hp)}));i&&(t.ssrc_.audio=i.id)}else{var n=e.ssrcs.find((function(e){return e.value.includes(hp)})),r=e.ssrcs.find((function(e){return e.value.includes(pp)}));n&&(t.ssrc_.video=n.id),r&&(t.ssrc_.auxiliary=r.id)}}))}catch(e){}}},{key:"sendNextSubscription",value:function(){if(void 0!==this.pendingSubscription_.shift()&&(this.subscriptionRetryCount_=0,this.isSubscriptionPending_=!1,-1!==this.subscriptionTimeout_&&(clearTimeout(this.subscriptionTimeout_),this.subscriptionTimeout_=-1)),this.pendingSubscription_.length>0){var e=this.pendingSubscription_[0];this.log_.info("schedule a pending subscription"),this.doSendSubscription(e.data,e.stream,e.type)}}},{key:"setRemoteStream",value:function(e,t){this.remoteStreams_.set(e,t)}},{key:"getSubscribeState",value:function(){return this.subscribeState_}},{key:"getTrackState",value:function(){return this.trackState_}},{key:"getSSRC",value:function(){return this.ssrc_}},{key:"getMainStream",value:function(){return this.remoteStreams_.get(hp)}},{key:"getAuxStream",value:function(){return this.remoteStreams_.get(pp)}},{key:"getMainStreamVideoTrackId",value:function(){var e=this.getMainStream();if(e){var t=e.getVideoTrack();if(t)return t.id}return""}},{key:"getAuxStreamVideoTrackId",value:function(){var e=this.getAuxStream();if(e){var t=e.getVideoTrack();if(t)return t.id}return""}},{key:"reconnect",value:(t=r(regeneratorRuntime.mark((function e(){var t,i,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(-1===this.reconnectionTimer_){e.next=3;break}return this.log_.warn("reconnect() downlink is reconnecting, ignore current reconnection"),e.abrupt("return");case 3:if(!(this.reconnectionCount_>=30)){e.next=12;break}return this.log_.warn("SDK has tried reconnect downlink [".concat(this.userId_,"] for ").concat(30," times, but all failed, please check your network")),this.stopReconnection(),t=new fy({code:py.DOWNLINK_RECONNECTION_FAILED,message:Dg({key:Qf})}),ib.logFailedEvent({userId:this.client_.getUserId(),eventType:Up,error:t}),this.addEventInternal(Ky,"downlink-connection reconnect fail"),this.emitConnectionStateChangedEvent(vp),this.emitter_.emit(Yb,t),e.abrupt("return");case 12:if(this.signalChannel_.getCurrentState()===GS){e.next=16;break}return this.log_.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this.signalChannel_.once(FS,this.reconnect,this),e.abrupt("return");case 16:if(this.reconnectionCount_++,this.log_.warn("reconnect() try to reconnect downlink [".concat(this.reconnectionCount_,"/").concat(30,"]")),i=Vg(this.reconnectionCount_),this.reconnectionTimer_=setTimeout((function(){n.log_.warn("reconnect() downlink [".concat(n.userId_,"] reconnect timeout(").concat(i/1e3,"s), try again")),n.clearReconnectionTimer(),n.reconnect()}),i),!(this.isSDPExchanging_||this.peerConnection_&&this.peerConnection_.connectionState===kp)){e.next=22;break}return e.abrupt("return");case 22:return e.prev=22,this.closePeerConnection(),this.initialize(),e.next=27,this.connect();case 27:this.stopReconnection(),this.log_.warn("reconnect() downlink reconnect successfully"),ib.logSuccessEvent({userId:this.client_.getUserId(),eventType:Up}),this.addEventInternal(Jy,"downlink-connection reconnect success"),this.recoverSubscription(),e.next=36;break;case 34:e.prev=34,e.t0=e.catch(22);case 36:case"end":return e.stop()}}),e,this,[[22,34]])}))),function(){return t.apply(this,arguments)})},{key:"recoverSubscription",value:function(){var e=this,t=this.client_.getSubscriptionManager();t&&y(this.remoteStreams_.values()).forEach((function(i){t.hasAutoRecoveryFlag(e.userId_,i.getType())&&t.recover(i)}))}},{key:"getIsReconnecting",value:function(){return this.isReconnecting_}},{key:"getSubscribedMainStream",value:function(){var e=null;return this.isMainStreamSubscribed&&(e=this.remoteStreams_.get(hp)),e}},{key:"clearReconnectionTimer",value:function(){-1!==this.reconnectionTimer_&&(clearTimeout(this.reconnectionTimer_),this.reconnectionTimer_=-1)}},{key:"startReconnection",value:function(){var e=this.client_.getSubscriptionManager();if(e){var t,i=T(this.remoteStreams_.values());try{for(i.s();!(t=i.n()).done;){var n=t.value,r=n.getType();(r===mp&&(this.trackState_.audio||this.trackState_.video)||r===gp&&this.trackState_.auxiliary)&&e.setAutoRecoveryFlag(this.userId_,n.getType())}}catch(e){i.e(e)}finally{i.f()}}_(d(f.prototype),"startReconnection",this).call(this)}},{key:"getCurrentState",value:function(){return this.currentState_}}]),f}(XC),Ew=P.TypeError,Rw=function(e){return function(t,i,n,r){_e(i);var o=Ie(t),a=Z(o),s=Lt(o),c=e?s-1:0,l=e?-1:1;if(n<2)for(;;){if(c in a){r=a[c],c+=l;break}if(c+=l,e?c<0:s<=c)throw Ew("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=l)c in a&&(r=i(r,a[c],c,o));return r}},Mw=[Rw(!1),Rw(!0)][0],Pw=la("reduce");ii({target:"Array",proto:!0,forced:!Pw||!Fl&&de>79&&de<83},{reduce:function(e){var t=arguments.length;return Mw(this,e,t,t>1?arguments[1]:void 0)}});var Aw=function(){function e(){o(this,e),this.startTime=0,this.endTime=0,this.start()}return s(e,[{key:"start",value:function(){0===this.startTime&&(this.startTime=Kg())}},{key:"stop",value:function(){0===this.endTime&&(this.endTime=Kg())}},{key:"getDuration",value:function(){return 0===this.endTime?Kg()-this.startTime:this.endTime-this.startTime}}]),e}(),Dw=function(){function e(t){o(this,e),this.client_=t.client,this.intervalId_=-1,this.statsCalculator_=t.stats,this.prevStats_=null,this.renderFreezeMap_=new Map,this.remoteStreamMap_=new Map,this.dataFreezeMap_=new Map,this.monitorFreezeData_=new Map}var t,i,n;return s(e,[{key:"installEvents",value:function(){h_.on(K_,this.handlePlayVideoStart,this),h_.on(H_,this.onVideoTrackMuted,this),h_.on(G_,this.onVideoTrackUnmuted,this),h_.on(B_,this.handleStreamStopped,this),h_.on($_,this.handleStreamStopped,this),h_.on(A_,this.handleVideoPlaying,this)}},{key:"uninstallEvents",value:function(){h_.off(K_,this.handlePlayVideoStart,this),h_.off(H_,this.onVideoTrackMuted,this),h_.off(G_,this.onVideoTrackUnmuted,this),h_.off(B_,this.handleStreamStopped,this),h_.off($_,this.handleStreamStopped,this),h_.off(A_,this.handleVideoPlaying,this)}},{key:"start",value:function(){var e=this;-1===this.intervalId_&&(this.installEvents(),this.intervalId_=yb.setInterval(r(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e.detectFPS();case 3:t.next=7;break;case 5:t.prev=5,t.t0=t.catch(0);case 7:case"end":return t.stop()}}),t,null,[[0,5]])}))),1e3))}},{key:"stop",value:function(){-1!==this.intervalId_&&(this.uninstallEvents(),yb.clearInterval(this.intervalId_),this.intervalId_=-1,this.renderFreezeMap_.clear(),this.dataFreezeMap_.clear(),this.remoteStreamMap_.clear())}},{key:"onVideoTrackMuted",value:function(e){var t=e.stream;if(t.getClient()===this.client_&&t.isRemote()){var i=t.userId_,n=t.type_,r="".concat(i,"_").concat(n),o=this.dataFreezeMap_.get(r),a=new Aw;o?o.durationItemList.push(a):this.dataFreezeMap_.set(r,{userId:i,type:n,durationItemList:[a],isFreezing:function(){var e=this.durationItemList[this.durationItemList.length-1];return e&&0===e.endTime}})}}},{key:"onVideoTrackUnmuted",value:function(e){var t=e.stream;if(t.getClient()===this.client_&&t.isRemote()){var i=t.userId_,n=t.type_,r="".concat(i,"_").concat(n);this.stopDataFreeze({key:r,userId:i,type:n})}}},{key:"handleStreamStopped",value:function(e){var t=e.client,i=e.stream;if(t===this.client_){var n=i.getUserId(),r=i.getType(),o="".concat(n,"_").concat(r);this.stopDataFreeze({key:o,userId:n,type:r})}}},{key:"stopDataFreeze",value:function(e){var t=e.key,i=e.userId,n=e.type,r=this.dataFreezeMap_.get(t);if(r&&r.isFreezing()){var o=r.durationItemList[r.durationItemList.length-1];o.stop();var a=o.getDuration();a>500?(ib.logEvent({eventType:"videoFrozenCount",delta:a}),this.monitorFreezeData_.set(t,{userId:i,type:n,duration:a})):r.durationItemList.pop()}}},{key:"getTotalDuration",value:function(e){return e.reduce((function(e,t){var i=t.getDuration();return e+Math.min(i,5e3)}),0)}},{key:"getStats",value:(n=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this.client_.getConnections(),i={},n=T(t),e.prev=3,n.s();case 5:if((r=n.n()).done){e.next=20;break}if(o=S(r.value,2),a=o[0],(s=o[1]).getPeerConnection()){e.next=9;break}return e.abrupt("continue",18);case 9:return c=s.getSubscribeState(),l=s.getTrackState(),e.next=13,this.statsCalculator_.getReceiverStats(s);case 13:d=e.sent,(u={userId:d.userId,tinyId:a,hasVideo:l.video&&c.video,hasAuxiliary:l.auxiliary&&c.auxiliary,video:{framesDecoded:0},auxiliary:{framesDecoded:0}}).hasVideo&&(u.video.framesDecoded=d.video.framesDecoded),u.hasAuxiliary&&(u.auxiliary.framesDecoded=d.auxiliary.framesDecoded),i[d.userId]=u;case 18:e.next=5;break;case 20:e.next=25;break;case 22:e.prev=22,e.t0=e.catch(3),n.e(e.t0);case 25:return e.prev=25,n.f(),e.finish(25);case 28:return e.abrupt("return",i);case 29:case"end":return e.stop()}}),e,this,[[3,22,25,28]])}))),function(){return n.apply(this,arguments)})},{key:"detectFPS",value:(i=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getStats();case 2:if(t=e.sent,this.prevStats_){e.next=6;break}return this.prevStats_=t,e.abrupt("return");case 6:e.t0=regeneratorRuntime.keys(t);case 7:if((e.t1=e.t0()).done){e.next=17;break}if(i=e.t1.value,this.prevStats_[i]){e.next=11;break}return e.abrupt("continue",7);case 11:n=t[i].tinyId,r=this.client_.getMutedStates(),t[i].hasVideo&&this.prevStats_[i].hasVideo&&r.has(n)&&!r.get(n).videoMuted&&(o=t[i].video.framesDecoded-this.prevStats_[i].video.framesDecoded,this.handleRenderFreeze({userId:i,type:mp,fps:o})),t[i].hasAuxiliary&&this.prevStats_[i].hasAuxiliary&&(a=t[i].auxiliary.framesDecoded-this.prevStats_[i].auxiliary.framesDecoded,this.handleRenderFreeze({userId:i,type:gp,fps:a})),e.next=7;break;case 17:this.prevStats_=t;case 18:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"handleRenderFreeze",value:(t=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.userId,n=t.fps,r=t.type,o="".concat(i,"_").concat(r),a=this.renderFreezeMap_.get(o),n<=2?(s=Kg(),a&&!a.isFreeze&&(a.freezeTimeline.push({startTime:s,endTime:void 0}),a.isFreeze=!0),a||this.renderFreezeMap_.set(o,{userId:i,type:r,isFreeze:!0,freezeTimeline:[{startTime:s,endTime:void 0}],renderFreezeTotal:0})):a&&a.isFreeze&&(a.isFreeze=!1,(c=a.freezeTimeline.pop()).endTime=Kg(),l=c.endTime-c.startTime,a.freezeTimeline.push(c),a.renderFreezeTotal+=Math.min(5e3,l));case 4:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"handlePlayVideoStart",value:function(e){var t=e.stream;if(t.getClient()===this.client_&&t.isRemote()&&t.hasVideo()){var i="".concat(t.getUserId(),"_").concat(t.getType());this.remoteStreamMap_.has(i)?this.remoteStreamMap_.get(i).remoteStream=t:this.remoteStreamMap_.set(i,{isPlayingFired:!1,remoteStream:t})}}},{key:"handleVideoPlaying",value:function(e){var t=e.stream;if(t.isRemote()&&t.getClient()===this.client_){var i="".concat(t.getUserId(),"_").concat(t.getType());this.remoteStreamMap_.has(i)&&(this.remoteStreamMap_.get(i).isPlayingFired=!0)}}},{key:"getDataFreezeDuration",value:function(e){var t={dataFreeze:0,count:0},i=this.dataFreezeMap_.get(e);if(i){if(i.isFreezing()){var n=i.durationItemList[i.durationItemList.length-1];n.stop(),n.getDuration()<500&&i.durationItemList.pop()}t.dataFreeze=this.getTotalDuration(i.durationItemList),t.count=i.durationItemList.length}return t}},{key:"getRenderFreezeDuration",value:function(e){var t=this.renderFreezeMap_.get(e),i=0,n=0;if(t)if(t.isFreeze){var r=Kg()-t.freezeTimeline[t.freezeTimeline.length-1].startTime;i=t.renderFreezeTotal+Math.min(r,5e3),n=t.freezeTimeline.length}else i=t.renderFreezeTotal;return{renderFreeze:i,count:n}}},{key:"getMonitorFreeze",value:function(){return this.monitorFreezeData_}},{key:"isBlackStream",value:function(e){return!!this.remoteStreamMap_.has(e)&&!this.remoteStreamMap_.get(e).isPlayingFired}},{key:"resetMonitor",value:function(){this.monitorFreezeData_.clear()}}]),e}(),Ow=s((function e(t){o(this,e),this.userId=t.userId,this.tinyId=t.tinyId,this.role=t.role===dp?"anchor":"audience"})),xw=I((function(e){!function(t){function i(e,t){var i=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(i>>16)<<16|65535&i}function n(e,t,n,r,o,a){return i((s=i(i(t,e),i(r,a)))<<(c=o)|s>>>32-c,n);var s,c}function r(e,t,i,r,o,a,s){return n(t&i|~t&r,e,t,o,a,s)}function o(e,t,i,r,o,a,s){return n(t&r|i&~r,e,t,o,a,s)}function a(e,t,i,r,o,a,s){return n(t^i^r,e,t,o,a,s)}function s(e,t,i,r,o,a,s){return n(i^(t|~r),e,t,o,a,s)}function c(e,t){var n,c,l,d,u;e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var h=1732584193,p=-271733879,f=-1732584194,m=271733878;for(n=0;n<e.length;n+=16)c=h,l=p,d=f,u=m,h=r(h,p,f,m,e[n],7,-680876936),m=r(m,h,p,f,e[n+1],12,-389564586),f=r(f,m,h,p,e[n+2],17,606105819),p=r(p,f,m,h,e[n+3],22,-1044525330),h=r(h,p,f,m,e[n+4],7,-176418897),m=r(m,h,p,f,e[n+5],12,1200080426),f=r(f,m,h,p,e[n+6],17,-1473231341),p=r(p,f,m,h,e[n+7],22,-45705983),h=r(h,p,f,m,e[n+8],7,1770035416),m=r(m,h,p,f,e[n+9],12,-1958414417),f=r(f,m,h,p,e[n+10],17,-42063),p=r(p,f,m,h,e[n+11],22,-1990404162),h=r(h,p,f,m,e[n+12],7,1804603682),m=r(m,h,p,f,e[n+13],12,-40341101),f=r(f,m,h,p,e[n+14],17,-1502002290),h=o(h,p=r(p,f,m,h,e[n+15],22,1236535329),f,m,e[n+1],5,-165796510),m=o(m,h,p,f,e[n+6],9,-1069501632),f=o(f,m,h,p,e[n+11],14,643717713),p=o(p,f,m,h,e[n],20,-373897302),h=o(h,p,f,m,e[n+5],5,-701558691),m=o(m,h,p,f,e[n+10],9,38016083),f=o(f,m,h,p,e[n+15],14,-660478335),p=o(p,f,m,h,e[n+4],20,-405537848),h=o(h,p,f,m,e[n+9],5,568446438),m=o(m,h,p,f,e[n+14],9,-1019803690),f=o(f,m,h,p,e[n+3],14,-187363961),p=o(p,f,m,h,e[n+8],20,1163531501),h=o(h,p,f,m,e[n+13],5,-1444681467),m=o(m,h,p,f,e[n+2],9,-51403784),f=o(f,m,h,p,e[n+7],14,1735328473),h=a(h,p=o(p,f,m,h,e[n+12],20,-1926607734),f,m,e[n+5],4,-378558),m=a(m,h,p,f,e[n+8],11,-2022574463),f=a(f,m,h,p,e[n+11],16,1839030562),p=a(p,f,m,h,e[n+14],23,-35309556),h=a(h,p,f,m,e[n+1],4,-1530992060),m=a(m,h,p,f,e[n+4],11,1272893353),f=a(f,m,h,p,e[n+7],16,-155497632),p=a(p,f,m,h,e[n+10],23,-1094730640),h=a(h,p,f,m,e[n+13],4,681279174),m=a(m,h,p,f,e[n],11,-358537222),f=a(f,m,h,p,e[n+3],16,-722521979),p=a(p,f,m,h,e[n+6],23,76029189),h=a(h,p,f,m,e[n+9],4,-640364487),m=a(m,h,p,f,e[n+12],11,-421815835),f=a(f,m,h,p,e[n+15],16,530742520),h=s(h,p=a(p,f,m,h,e[n+2],23,-995338651),f,m,e[n],6,-198630844),m=s(m,h,p,f,e[n+7],10,1126891415),f=s(f,m,h,p,e[n+14],15,-1416354905),p=s(p,f,m,h,e[n+5],21,-57434055),h=s(h,p,f,m,e[n+12],6,1700485571),m=s(m,h,p,f,e[n+3],10,-1894986606),f=s(f,m,h,p,e[n+10],15,-1051523),p=s(p,f,m,h,e[n+1],21,-2054922799),h=s(h,p,f,m,e[n+8],6,1873313359),m=s(m,h,p,f,e[n+15],10,-30611744),f=s(f,m,h,p,e[n+6],15,-1560198380),p=s(p,f,m,h,e[n+13],21,1309151649),h=s(h,p,f,m,e[n+4],6,-145523070),m=s(m,h,p,f,e[n+11],10,-1120210379),f=s(f,m,h,p,e[n+2],15,718787259),p=s(p,f,m,h,e[n+9],21,-343485551),h=i(h,c),p=i(p,l),f=i(f,d),m=i(m,u);return[h,p,f,m]}function l(e){var t,i="",n=32*e.length;for(t=0;t<n;t+=8)i+=String.fromCharCode(e[t>>5]>>>t%32&255);return i}function d(e){var t,i=[];for(i[(e.length>>2)-1]=void 0,t=0;t<i.length;t+=1)i[t]=0;var n=8*e.length;for(t=0;t<n;t+=8)i[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return i}function u(e){var t,i,n="";for(i=0;i<e.length;i+=1)t=e.charCodeAt(i),n+="0123456789abcdef".charAt(t>>>4&15)+"0123456789abcdef".charAt(15&t);return n}function h(e){return unescape(encodeURIComponent(e))}function p(e){return function(e){return l(c(d(e),8*e.length))}(h(e))}function f(e,t){return function(e,t){var i,n,r=d(e),o=[],a=[];for(o[15]=a[15]=void 0,r.length>16&&(r=c(r,8*e.length)),i=0;i<16;i+=1)o[i]=909522486^r[i],a[i]=1549556828^r[i];return n=c(o.concat(d(t)),512+8*t.length),l(c(a.concat(n),640))}(h(e),h(t))}function m(e,t,i){return t?i?f(t,e):u(f(t,e)):i?p(e):u(p(e))}e.exports?e.exports=m:t.md5=m}(w)})),Lw=function(){function e(t){o(this,e),this.client_=t.client,this.signalChannel_=t.signalChannel,this.log_=sS.createLogger({id:"mix|"+this.client_.getUserId(),userId:t.client.getUserId(),sdkAppId:t.client.getSDKAppId()}),this.isMixing_=!1,this.config_=null,this.data_=null,this.remoteStreamMap_=new Map,this.installEvents()}var t,i,n,a;return s(e,[{key:"isPresetLayoutMode",get:function(){return this.config_&&this.config_.mode===rf.PRESET_LAYOUT}},{key:"installEvents",value:function(){h_.on(N_,this.onStreamSubscribed,this),h_.on($_,this.onStreamUnsubscribed,this),this.client_.on("stream-removed",this.onStreamRemoved,this)}},{key:"uninstallEvents",value:function(){h_.off(N_,this.onStreamSubscribed,this),h_.off($_,this.onStreamUnsubscribed,this),this.client_.off("stream-removed",this.onStreamRemoved,this)}},{key:"stop",value:function(){this.uninstallEvents()}},{key:"onStreamSubscribed",value:function(e){var t=e.client,i=e.stream;t===this.client_&&(this.remoteStreamMap_.set(i.getId(),{remoteStream:i,isUsed:!1}),this.isMixing_&&this.hasAvailablePlaceHolder()&&this.startMixTranscode(this.config_))}},{key:"onStreamUnsubscribed",value:function(e){var t=e.client,i=e.stream;t===this.client_&&this.onStreamRemoved({stream:i})}},{key:"onStreamRemoved",value:function(e){var t=e.stream;if(this.remoteStreamMap_.has(t.getId())){var i=this.remoteStreamMap_.get(t.getId()).isUsed;this.remoteStreamMap_.delete(t.getId()),this.isMixing_&&this.isPresetLayoutMode&&i&&this.startMixTranscode(this.config_)}}},{key:"startMixTranscode",value:(a=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,this.resetIsUsedFlag(),this.config_=t,i=this.getInputParam(t,this.remoteStreamMap_),n=this.getOutputParam(t),r=this.getOutputSessionId({config:t,roomId:this.client_.getRoomId(),userId:this.client_.getUserId()}),!this.isMixing_||!this.data_||r===this.data_.outputSessionId){e.next=10;break}return this.log_.info("startMixTranscode() streamId changed, stop mixing before start"),e.next=10,this.doStopMixTranscode();case 10:return e.next=12,this.doStartMixTranscode({outputSessionId:r,inputParam:i,outputParam:n});case 12:e.next=18;break;case 14:throw e.prev=14,e.t0=e.catch(0),this.resetIsUsedFlag(),e.t0;case 18:case"end":return e.stop()}}),e,this,[[0,14]])}))),function(e){return a.apply(this,arguments)})},{key:"doStartMixTranscode",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.outputSessionId,n=t.inputParam,r=t.outputParam,o={roomId:String(this.client_.getRoomId()),mcuRequestTime:Date.now(),outputSessionId:i,inputParam:n,outputParam:r},this.data_=o,this.log_.info("startMixTranscode: ".concat(JSON.stringify(o))),this.isMixing_=!0,e.prev=5,e.next=8,this.signalChannel_.sendWaitForResponse({command:ly,data:o,timeout:5e3,responseCommand:KS.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"});case 8:if(a=e.sent,s=a.data,c=s.code,l=s.message,0===c){e.next=15;break}throw-102083===c&&(l="Please enable relayed-push in ".concat("https://console.cloud.tencent.com/trtc"," and try later, refer to ").concat(Af,"tutorial-26-advanced-publish-cdn-stream.html")),this.log_.error("startMixTranscode failed, errCode: ".concat(c," errMsg: ").concat(l)),this.isMixing_=!1,new fy({code:py.START_MIX_TRANSCODE_FAILED,message:Dg({key:tg,data:{message:l},link:{className:"Client",fnName:"startMixTranscode"}})});case 15:e.next=21;break;case 17:throw e.prev=17,e.t0=e.catch(5),this.isMixing_=!1,e.t0;case 21:case"end":return e.stop()}}),e,this,[[5,17]])}))),function(e){return n.apply(this,arguments)})},{key:"stopMixTranscode",value:(i=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMixing_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:ng})});case 2:return e.next=4,this.doStopMixTranscode();case 4:this.resetIsUsedFlag();case 5:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"doStopMixTranscode",value:(t=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={mcuRequestTime:Date.now(),outputSessionId:this.data_.outputSessionId,streamType:this.data_.outputParam.streamType},this.log_.info("stopMixTranscode: ".concat(JSON.stringify(t))),e.next=4,this.signalChannel_.sendWaitForResponse({command:dy,data:t,timeout:5e3,responseCommand:KS.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"});case 4:if(i=e.sent,n=i.data,r=n.code,o=n.message,0!==r){e.next=10;break}this.isMixing_=!1,e.next=12;break;case 10:throw this.log_.error("stopMixTranscode failed, errCode: ".concat(r," errMsg: ").concat(o)),new fy({code:py.STOP_MIX_TRANSCODE_FAILED,message:Dg({key:ig,data:{message:o},link:{className:"Client",fnName:"stopMixTranscode"}})});case 12:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"getOutputSessionId",value:function(e){var t=e.config,i=e.userId,n=e.roomId;return Ug(t.streamId)&&t.streamId.length>0?t.streamId:xw("".concat(n,"_").concat(i,"_main"))}},{key:"getInputParam",value:function(e,t){var i=this,n=e.mixUsers.map((function(e){return{userId:e.userId,roomId:String(e.roomId||i.client_.getRoomId()),width:e.width||0,height:e.height||0,locationX:e.locationX||0,locationY:e.locationY||0,zOrder:e.zOrder,streamType:Fg(e.streamType)||e.streamType!==gp?0:1,inputType:e.pureAudio?af.IT_PURE_AUDIO:af.IT_AUDIO_VIDEO}}));return e.mode===rf.PRESET_LAYOUT&&(n.forEach((function(e){if(e.userId===of.REMOTE){var i=y(t.values()).find((function(e){return!e.isUsed}));i&&(e.userId=i.remoteStream.getUserId(),e.streamType=i.remoteStream.getType()===gp?1:0,i.isUsed=!0)}})),n=n.filter((function(e){return e.userId!==of.REMOTE}))),n}},{key:"getOutputParam",value:function(e){var t=e.streamId||"";return{streamId:t,streamType:t.length>0?1:0,width:Fg(e.videoWidth)?640:e.videoWidth,height:Fg(e.videoHeight)?480:e.videoHeight,videoBps:e.videoBitrate||0,fps:e.videoFramerate||15,gop:e.videoGOP||2,audioSampleRate:e.audioSampleRate||48e3,audioBps:e.audioBitrate||64,audioChannels:e.audioChannels||1,backgroundColor:e.backgroundColor||0,backgroundImg:e.backgroundImage||"",extraInfo:"",videoCodec:2,audioCodec:0}}},{key:"hasAvailablePlaceHolder",value:function(){return!!this.isPresetLayoutMode&&this.data_.inputParam.length!==this.config_.mixUsers.length}},{key:"resetIsUsedFlag",value:function(){this.remoteStreamMap_.forEach((function(e){return e.isUsed=!1}))}}]),e}(),Nw=function(){function e(t){o(this,e),this.client_=t.client,this.signalChannel_=t.signalChannel,this.isPublishingTencentCDN_=!1,this.publishTencentStreamRetryCount_=0,this.publishGivenCDNData_=null,this.isPublishingGivenCDN_=!1}var t,i,n,a,c;return s(e,[{key:"getIsPublishingTencentCDN",value:function(){return this.isPublishingTencentCDN_}},{key:"getIsPublishingGivenCDN",value:function(){return this.isPublishingGivenCDN_}},{key:"startPublishTencentCDN",value:(c=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(i=t.streamId)||(n="".concat(this.client_.getRoomId(),"_").concat(this.client_.getUserId(),"_main"),/^[A-Za-z\d_-]*$/.test(n)||(n=xw(n)),i="".concat(this.client_.getSDKAppId(),"_").concat(n)),r={requestTime:Date.now(),sessionId:xw("".concat(this.client_.getRoomId(),"_").concat(this.client_.getUserId(),"_main")),streamId:i,streamType:0},this.isPublishingTencentCDN_=!0,this.publishTencentStreamRetryCount_=0,e.next=7,this.doStartPublishTencentCDN(r);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"doStartPublishTencentCDN",value:(a=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,sS.info("startPublishTencentCDN: "+JSON.stringify(t)),e.next=4,this.signalChannel_.sendWaitForResponseWithRetry({command:oy,data:t,timeout:2e3,responseCommand:KS.START_PUBLISH_TENCENT_CDN_RES,commandDesc:"startPublishCDNStream",retries:2});case 4:if(i=e.sent,n=i.data,r=n.code,o=n.message,0===r){e.next=11;break}throw this.isPublishingTencentCDN_=!1,-102083===r&&(o="Please enable relayed-push in ".concat("https://console.cloud.tencent.com/trtc"," and try later, refer to ").concat(Af,"tutorial-26-advanced-publish-cdn-stream.html")),sS.error("startPublishTencentCDN failed, errCode: ".concat(r,", errMsg: ").concat(o)),new fy({code:py.START_PUBLISH_CDN_FAILED,message:Dg({key:Mm,data:{message:o},link:{className:"Client",fnName:"startPublishCDNStream"}})});case 11:e.next=17;break;case 13:throw e.prev=13,e.t0=e.catch(0),this.isPublishingTencentCDN_=!1,e.t0;case 17:case"end":return e.stop()}}),e,this,[[0,13]])}))),function(e){return a.apply(this,arguments)})},{key:"stopPublishTencentCDN",value:(n=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={requestTime:Date.now(),sessionId:xw("".concat(this.client_.getRoomId(),"_").concat(this.client_.getUserId(),"_main"))},sS.info("stopPublishTencentCDN: "+JSON.stringify(t)),e.next=4,this.signalChannel_.sendWaitForResponse({command:ay,data:t,timeout:5e3,responseCommand:KS.STOP_PUBLISH_TENCENT_CDN_RES,commandDesc:"stopPublishCDNStream"});case 4:if(i=e.sent,n=i.data,r=n.code,o=n.message,0!==r){e.next=10;break}this.isPublishingTencentCDN_=!1,e.next=17;break;case 10:if(-102069!==r){e.next=15;break}sS.warn("stopPublishTencentCDN failed, can not stopPublishTencentCDN in auto relayed-push mode"),this.isPublishingTencentCDN_=!1,e.next=17;break;case 15:throw sS.error("stopPublishTencentCDN failed, errCode: ".concat(r," errMsg: ").concat(o)),new fy({code:py.STOP_PUBLISH_CDN_FAILED,message:Dg({key:Pm,data:{message:o},link:{className:"Client",fnName:"stopPublishCDNStream"}})});case 17:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"startPublishGivenCDN",value:(i=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i={pushRequestTime:Date.now(),pushAppId:t.appId,pushBizId:t.bizId,pushCdnUrl:t.url,pushStreamType:"main"},sS.info("startPublishGivenCDN: "+JSON.stringify(i)),this.publishGivenCDNData_=i,this.isPublishingGivenCDN_=!0,e.prev=4,e.next=7,this.signalChannel_.sendWaitForResponse({command:sy,data:i,timeout:5e3,responseCommand:KS.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDNStream"});case 7:if(n=e.sent,r=n.data,o=r.code,a=r.message,0===o){e.next=13;break}throw sS.error("startPublishGivenCDN failed, errCode: ".concat(o,", errMsg: ").concat(a)),this.isPublishingGivenCDN_=!1,new fy({code:py.START_PUBLISH_CDN_FAILED,message:Dg({key:Mm,data:{message:a},link:{className:"Client",fnName:"startPublishCDNStream"}})});case 13:e.next=19;break;case 15:throw e.prev=15,e.t0=e.catch(4),this.isPublishingGivenCDN_=!1,e.t0;case 19:case"end":return e.stop()}}),e,this,[[4,15]])}))),function(e){return i.apply(this,arguments)})},{key:"stopPublishGivenCDN",value:(t=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.publishGivenCDNData_,i=t.pushAppId,n=t.pushBizId,r=t.pushCdnUrl,o=t.pushStreamType,a={pushRequestTime:Date.now(),pushAppId:i,pushBizId:n,pushCdnUrl:r,pushStreamType:o},sS.info("stopPublishGivenCDN: "+JSON.stringify(a)),e.next=5,this.signalChannel_.sendWaitForResponse({command:cy,data:a,timeout:5e3,responseCommand:KS.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDNStream"});case 5:if(s=e.sent,c=s.data,l=c.code,d=c.message,0!==l){e.next=11;break}this.isPublishingGivenCDN_=!1,e.next=13;break;case 11:throw sS.error("stopPublishGivenCDN failed, errCode: ".concat(l," errMsg: ").concat(d)),new fy({code:py.STOP_PUBLISH_CDN_FAILED,message:Dg({key:Pm,data:{message:d},link:{className:"Client",fnName:"stopPublishCDNStream"}})});case 13:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})}]),e}(),$w=function(){function e(t){o(this,e),this.client_=t.client,this.durationMap_=new Map,this.installEvents()}return s(e,[{key:"installEvents",value:function(){h_.on(N_,this.handleSubscribed,this),h_.on(O_,this.handleStreamTrackUpdated,this),h_.on($_,this.handleStreamStopped,this),h_.on(B_,this.handleStreamStopped,this)}},{key:"uninstallEvents",value:function(){h_.off(N_,this.handleSubscribed,this),h_.off(V_,this.handleStreamTrackUpdated,this),h_.off($_,this.handleStreamStopped,this),h_.off(B_,this.handleStreamStopped,this)}},{key:"handleSubscribed",value:function(e){var t=e.client,i=e.stream;if(t===this.client_){var n=i.getUserId(),r=i.getType(),o="".concat(n,"_").concat(r);if(i.hasAudio())if(i.isMainAudioSubscribed){var a=new Aw,s=this.durationMap_.get(o);s?this.isRecording(s.audio)||s.audio.push(a):this.durationMap_.set(o,{userId:n,type:r,audio:[a],video:[]})}else this.stopDurationItem(o,Ph);if(i.hasVideo())if(r===mp&&i.isMainVideoSubscribed||r===gp&&i.isAuxVideoSubscribed){var c=new Aw,l=this.durationMap_.get(o);l?this.isRecording(l.video)||l.video.push(c):this.durationMap_.set(o,{userId:n,type:r,audio:[],video:[c]})}else this.stopDurationItem(o,Ah)}}},{key:"handleStreamStopped",value:function(e){var t=e.client,i=e.stream;if(this.clientHitTest(t)){var n=i.getUserId(),r=i.getType(),o="".concat(n,"_").concat(r);this.stopDurationItem(o,Ph),this.stopDurationItem(o,Ah)}}},{key:"handleStreamTrackUpdated",value:function(e){var t=e.client,i=e.userId,n=e.tinyId,r=e.kind,o=e.action;if(this.clientHitTest(t)&&this.client_.getConnections().has(n)){var a=r===Dh?r:mp,s="".concat(i,"_").concat(a);if(o===hf){var c=this.client_.getConnections().get(n).getSubscribeState();if(r===Ph&&!c.audio||r===Ah&&!c.video||r===Dh&&!c.auxiliary)return;var l=new Aw,d=this.durationMap_.get(s);d?(r!==Ph||this.isRecording(d.audio)||d.audio.push(l),r===Ph||this.isRecording(d.video)||d.video.push(l)):this.durationMap_.set(s,{userId:i,type:a,audio:r===Ph?[l]:[],video:r===Ph?[]:[l]})}else this.stopDurationItem(s,r===Ph?Ph:Ah)}}},{key:"isRecording",value:function(e){return e.findIndex((function(e){return 0===e.endTime}))>=0}},{key:"stopDurationItem",value:function(e,t){if(this.durationMap_.has(e)){var i=this.durationMap_.get(e)[t].find((function(e){return 0===e.endTime}));i&&i.stop()}}},{key:"clientHitTest",value:function(e){return this.client_===e}},{key:"getDuration",value:function(e,t){return this.durationMap_.has(e)?this.durationMap_.get(e)[t].reduce((function(e,t){return e+t.getDuration()}),0):0}},{key:"getDurationMap",value:function(){return this.durationMap_}},{key:"reset",value:function(){this.durationMap_.clear()}}]),e}(),Vw=ro.f,Bw=A((function(){return!Object.getOwnPropertyNames(1)}));ii({target:"Object",stat:!0,forced:Bw},{getOwnPropertyNames:Vw});var Fw={msg_user_info:0,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_render_first:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0},Uw=s((function e(t){o(this,e),this.str_identifier=String(t.userId),this.uint64_tinyid=Number(t.tinyId),this.uint32_role=t.role})),jw=function(){function e(t){var i=this;o(this,e),this.frameWorkType_=t.frameWorkType||30,this.client_=t.client,this.keyPrefix_="key_point",this.storageKey_="".concat(this.keyPrefix_,"_").concat(this.client_.getUserId()),this.log_=sS.createLogger({id:"kpm|"+this.client_.getUserId(),userId:this.client_.getUserId(),sdkAppId:this.client_.getSDKAppId()}),this.upload=rS({retryFunction:this.upload,settings:{timeout:500,retries:3},onError:function(e,t){return t()}}),Object.getOwnPropertyNames(this.__proto__).forEach((function(e){e.startsWith("handle")&&Bg(i[e])&&(i[e]=function(e){var t=e.fn,i=e.context;return r(regeneratorRuntime.mark((function e(){var n,r,o,a=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(e.prev=0,n=a.length,r=new Array(n),o=0;o<n;o++)r[o]=a[o];return e.next=4,t.apply(i||this,r);case 4:return e.abrupt("return",e.sent);case 7:e.prev=7,e.t0=e.catch(0),sS.error("".concat(t.name,"() error observed ")+e.t0);case 10:case"end":return e.stop()}}),e,this,[[0,7]])})))}({fn:i[e],context:i}))})),this.initData(),this.installEvents(),this.intervalId_=yb.setInterval(this.setStorage.bind(this),2e4)}var i,n,a;return s(e,[{key:"initData",value:function(){this.firstPublishedUserList_=[],this.networkQuality_={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this.basicInfo={string_sdk_version:"4.12.5",uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:"live"===this.client_.getMode()?1:0,uint32_joining_duration:0,uint32_networkType:ff[Ng()],uint32_framework:this.frameWorkType_},this.pathJoinRoom_={uint64_start_time:0,uint64_init_audio_start_time:0,uint64_init_audio_end_time:0,uint64_init_camera_start_time:0,uint64_init_camera_end_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_init_audio_ret:0,int32_init_camera_ret:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this.pathLeaveRoom_={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this.pathMainVideoMap_=new Map,this.pathMainAudioMap_=new Map,this.pathAuxiliaryMap_=new Map,this.localStreamStats_={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this.remoteStreamStatsMap_=new Map}},{key:"installEvents",value:function(){h_.on(p_,this.handleJoinStart,this),h_.on(C_,this.handleWSStart,this),h_.on(w_,this.handleWSEnd,this),h_.on(f_,this.handleJoinSendCMD,this),h_.on(m_,this.handleJoinReceivedCMDResponce,this),h_.on(g_,this.handleJoinSuccess,this),h_.on(v_,this.handleJoinFailed,this),h_.on(k_,this.handleReceivedPublishUserList,this),h_.on(X_,this.handleConnectionStateChanged,this),h_.on(__,this.handleLeaveStart,this),h_.on(y_,this.handleLeaveSuccess,this),h_.on(S_,this.handleLeaveSendCMD,this),h_.on(Y_,this.handleSendSubscribeCMD,this),h_.on(A_,this.handleVideoPlaying,this),h_.on(D_,this.handleAudioPlaying,this),h_.on(eS,this.handleNetworkQuality,this),h_.on(b_,this.handleHeartbeatStats,this),h_.on(x_,this.handleRemoteStreamAdded,this),h_.on(L_,this.handleRemoteStreamSubscribeStart,this),h_.on(N_,this.handleRemoteStreamSubscribed,this),h_.on(J_,this.handleVideoLoadedData,this),h_.on(z_,this.handlePlayStream,this),h_.on(T_,this.handlePublishStart,this),h_.on(U_,this.handleLocalStreamInitStart,this),h_.on(j_,this.handleLocalStreamInitEnd,this),h_.on(W_,this.handleLocalStreamInitFailed,this)}},{key:"uninstallEvents",value:function(){h_.off(p_,this.handleJoinStart,this),h_.off(C_,this.handleWSStart,this),h_.off(w_,this.handleWSEnd,this),h_.off(f_,this.handleJoinSendCMD,this),h_.off(m_,this.handleJoinReceivedCMDResponce,this),h_.off(k_,this.handleReceivedPublishUserList,this),h_.off(X_,this.handleConnectionStateChanged,this),h_.off(__,this.handleLeaveStart,this),h_.off(y_,this.handleLeaveSuccess,this),h_.off(g_,this.handleJoinSuccess,this),h_.off(v_,this.handleJoinFailed,this),h_.off(S_,this.handleLeaveSendCMD,this),h_.off(Y_,this.handleSendSubscribeCMD,this),h_.off(A_,this.handleVideoPlaying,this),h_.off(D_,this.handleAudioPlaying,this),h_.off(eS,this.handleNetworkQuality,this),h_.off(b_,this.handleHeartbeatStats,this),h_.off(x_,this.handleRemoteStreamAdded,this),h_.off(L_,this.handleRemoteStreamSubscribeStart,this),h_.off(N_,this.handleRemoteStreamSubscribed,this),h_.off(J_,this.handleVideoLoadedData,this),h_.off(z_,this.handlePlayStream,this),h_.off(T_,this.handlePublishStart,this),h_.off(U_,this.handleLocalStreamInitStart,this),h_.off(j_,this.handleLocalStreamInitEnd,this),h_.off(W_,this.handleLocalStreamInitFailed,this)}},{key:"handleJoinStart",value:function(e){this.hitTest(e.client)&&0===this.pathJoinRoom_.uint64_start_time&&(this.pathJoinRoom_.uint64_start_time=Date.now(),this.checkStorage())}},{key:"handleWSStart",value:function(e){var t=e.client;this.hitTest(t)&&0===this.pathJoinRoom_.uint64_send_request_acc_ip_cmd_start_time&&(this.pathJoinRoom_.uint64_send_request_acc_ip_cmd_start_time=Date.now())}},{key:"handleWSEnd",value:function(e){var t=e.client,i=e.error;this.hitTest(t)&&0===this.pathJoinRoom_.uint64_send_request_acc_ip_cmd_end_time&&(this.pathJoinRoom_.uint64_send_request_acc_ip_cmd_end_time=Date.now(),i&&(this.pathJoinRoom_.int32_send_request_acc_ip_cmd_ret=i instanceof fy?Number(i.getExtraCode()||i.getCode()):py.UNKNOWN,this.pathJoinRoom_.int32_end_ret=2))}},{key:"handleJoinSendCMD",value:function(e){this.hitTest(e.client)&&0===this.pathJoinRoom_.uint64_send_request_enter_room_cmd_start_time&&(this.pathJoinRoom_.uint64_send_request_enter_room_cmd_start_time=Date.now())}},{key:"handleJoinReceivedCMDResponce",value:function(e){this.hitTest(e.client)&&0===this.pathJoinRoom_.uint64_send_request_enter_room_cmd_end_time&&(this.pathJoinRoom_.uint64_send_request_enter_room_cmd_end_time=Date.now(),this.pathJoinRoom_.int32_send_request_enter_room_cmd_ret=e.code,0!==e.code&&(this.pathJoinRoom_.int32_end_ret=3))}},{key:"handleJoinSuccess",value:function(e){this.hitTest(e.client)&&0===this.pathJoinRoom_.uint64_end_time&&(this.pathJoinRoom_.uint64_end_time=Date.now(),this.pathJoinRoom_.int32_end_ret=0)}},{key:"handleJoinFailed",value:function(e){var t=e.client;this.hitTest(t)&&(this.pathJoinRoom_.uint64_end_time=Date.now(),0===this.pathJoinRoom_.int32_end_ret&&(this.pathJoinRoom_.int32_end_ret=3),this.prepareReport(),this.report())}},{key:"handleReceivedPublishUserList",value:function(e){this.hitTest(e.client)&&0===this.pathJoinRoom_.uint64_recv_userlist_time&&(this.pathJoinRoom_.uint64_recv_userlist_time=Date.now(),this.firstPublishedUserList_=e.data.data&&e.data.data.userList||[])}},{key:"handleConnectionStateChanged",value:function(e){var t=e.client,i=e.state,n=e.connection;if(this.hitTest(t)&&i===yp){this.client_.getUplinkConnection()===n&&0===this.pathJoinRoom_.uint64_send_first_video_frame_time&&this.localStreamStats_.publishStartTime>this.pathJoinRoom_.uint64_end_time&&this.localStreamStats_.publishStartTime-this.pathJoinRoom_.uint64_end_time<=100&&(this.pathJoinRoom_.uint64_send_first_video_frame_time=Date.now());var r=this.pathMainVideoMap_.get("".concat(n.getUserId(),"_").concat(mp));r&&0===r.statsToReport.uint64_pc_connected_time&&(r.statsToReport.uint64_pc_connected_time=Date.now())}}},{key:"handleLeaveStart",value:function(e){this.hitTest(e.client)&&(this.pathLeaveRoom_.uint64_start_time=Date.now())}},{key:"handleLeaveSuccess",value:function(e){this.hitTest(e.client)&&0===this.pathLeaveRoom_.uint64_end_time&&(this.pathLeaveRoom_.uint64_end_time=Date.now(),0!==this.pathJoinRoom_.uint64_end_time?this.basicInfo.uint32_joining_duration=this.pathLeaveRoom_.uint64_end_time-this.pathJoinRoom_.uint64_end_time:this.log_.warn("pathJoinRoom endTime is 0"),this.report())}},{key:"handleLeaveSendCMD",value:function(e){this.hitTest(e.client)&&(this.pathLeaveRoom_.uint64_send_request_exit_room_cmd_start_time=Date.now(),this.pathLeaveRoom_.uint64_send_request_exit_room_cmd_end_time=Date.now())}},{key:"handleRemoteStreamAdded",value:function(e){var i=e.client,n=e.stream;if(this.hitTest(i)){var r=n.getUserId(),o=n.getType(),a="".concat(r,"_").concat(o),s=this.remoteStreamStatsMap_.get(a);if(s)s.stream=n;else{var c={userId:r,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:t({},Fw),stream:n};c.statsToReport.msg_user_info=new Uw({userId:r,tinyId:n.getTinyId(),role:dp}),c.statsToReport.uint32_stream_type=o===mp?2:7,this.remoteStreamStatsMap_.set(a,c)}}}},{key:"handleRemoteStreamSubscribeStart",value:function(e){var t=e.client,i=e.stream;if(this.hitTest(t)){var n=i.getUserId(),r=i.getType(),o="".concat(n,"_").concat(r),a=this.remoteStreamStatsMap_.get(o);a&&0===a.subscribeStartTime&&(a.subscribeStartTime=Date.now())}}},{key:"handleSendSubscribeCMD",value:function(e){if(this.hitTest(e.client)){var t=new Uw(e),i=Date.now(),n="".concat(e.userId,"_").concat(mp);e.trackState.video&&e.subscribeState.video&&!this.pathMainVideoMap_.has(n)&&this.pathMainVideoMap_.set(n,{statsToReport:{msg_user_info:t,uint64_start_enter_time:this.pathJoinRoom_.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0,uint64_pc_connected_time:0},userId:e.userId,sendSubscribeCMDTime:i}),e.trackState.audio&&e.subscribeState.audio&&!this.pathMainAudioMap_.has(n)&&this.pathMainAudioMap_.set(n,{statsToReport:{msg_user_info:t,uint64_start_enter_time:this.pathJoinRoom_.uint64_start_time,uint64_play_first_frame_time:0},userId:e.userId,sendSubscribeCMDTime:i});var r="".concat(e.userId,"_").concat(gp);e.trackState.auxiliary&&e.subscribeState.auxiliary&&!this.pathAuxiliaryMap_.has(r)&&this.pathAuxiliaryMap_.set(r,{sendSubscribeCMDTime:i})}}},{key:"handleRemoteStreamSubscribed",value:function(e){var t=e.client,i=e.stream;if(this.hitTest(t)){var n=i.getUserId(),r=i.getType(),o="".concat(n,"_").concat(r),a=this.remoteStreamStatsMap_.get(o);a&&0===a.subscribedTime&&(a.subscribedTime=Date.now(),a.stream=i)}}},{key:"handlePlayStream",value:function(e){var t=e.stream;if(t.isRemote()&&t.getConnection()&&this.hitTest(t.getConnection().getClient())){var i=t.getConnection().getUserId(),n="".concat(i,"_").concat(t.getType());if(this.remoteStreamStatsMap_.has(n)){var r=this.remoteStreamStatsMap_.get(n);0===r.playStreamTime&&(r.playStreamTime=Date.now())}}}},{key:"handleVideoLoadedData",value:function(e){var t=e.stream;if(t.isRemote()&&t.getConnection()&&this.hitTest(t.getConnection().getClient())){var i=t.getConnection().getUserId(),n="".concat(i,"_").concat(t.getType());if(this.pathMainVideoMap_.has(n)){var r=this.pathMainVideoMap_.get(n);0===r.statsToReport.uint64_combine_first_frame_time&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}}}},{key:"handleVideoPlaying",value:function(e){var t=e.stream;if(t.isRemote()&&t.getConnection()&&this.hitTest(t.getConnection().getClient())){var i=t.getConnection().getUserId(),n="".concat(i,"_").concat(t.getType()),r=Date.now();if(this.pathMainVideoMap_.has(n)){var o=this.pathMainVideoMap_.get(n);if(0===o.statsToReport.uint64_render_first_frame_time&&(o.statsToReport.uint64_render_first_frame_time=r),this.remoteStreamStatsMap_.has(n)){var a=this.remoteStreamStatsMap_.get(n),s=a.statsToReport,c=a.playStreamTime,l=a.subscribedTime;0===s.uint32_video_render_first&&c-l<=100&&(s.uint32_video_render_first=r-o.sendSubscribeCMDTime)}}if(t.getType()===gp&&this.pathAuxiliaryMap_.has(n)&&this.remoteStreamStatsMap_.has(n)){var d=this.remoteStreamStatsMap_.get(n),u=d.statsToReport,h=d.playStreamTime,p=d.subscribedTime;0===u.uint32_video_render_first&&h-p<=100&&(u.uint32_video_render_first=r-this.pathAuxiliaryMap_.get(n).sendSubscribeCMDTime)}}}},{key:"handleAudioPlaying",value:function(e){if(e.stream.isRemote()&&e.stream.getConnection()&&this.hitTest(e.stream.getConnection().getClient())){var t=e.stream.getConnection().getUserId(),i="".concat(t,"_").concat(e.stream.getType());if(this.pathMainAudioMap_.has(i)){var n=this.pathMainAudioMap_.get(i);0===n.statsToReport.uint64_play_first_frame_time&&(n.statsToReport.uint64_play_first_frame_time=Date.now())}}}},{key:"handleNetworkQuality",value:function(e){var t=this;this.hitTest(e.client)&&(this.networkQuality_.totalUplinkLoss+=e.uplinkLoss,this.networkQuality_.totalUplinkRTT+=e.uplinkRTT,this.networkQuality_.count++,e.downlinkLossAndRTTMap.forEach((function(e){var i=e.rtt,n=e.loss,r=e.userId,o=t.networkQuality_.totalDownlinkRTTAndLossMap.get(r);o?(o.totalRTT+=i,o.totalLoss+=n,o.count++):t.networkQuality_.totalDownlinkRTTAndLossMap.set(r,{totalRTT:i,totalLoss:n,count:1})})))}},{key:"handleHeartbeatStats",value:function(e){var t=this;if(this.hitTest(e.client)){var i=e.stats,n=i.msg_up_stream_info,r=i.msg_down_stream_info;if(n.msg_video_status[0]){var o=n.msg_video_status[0],a=o.uint32_video_codec_bitrate,s=o.uint32_video_enc_fps,c=o.uint32_video_width,l=o.uint32_video_height;this.localStreamStats_.totalVideoBitrate+=a,this.localStreamStats_.totalVideoFPS+=s,this.localStreamStats_.totalVideoWidth+=c,this.localStreamStats_.totalVideoHeight+=l,this.localStreamStats_.videoCount++}var d=n.msg_audio_status.audioLevel;Math.floor(100*d)>0&&(this.localStreamStats_.totalAudioLevel+=d,this.localStreamStats_.audioLevelCount++),r.forEach((function(e){var i=e.msg_user_info,n=e.msg_audio_status,r=e.msg_video_status,o=i.str_identifier;if(r.forEach((function(e){var i=2===e.uint32_video_stream_type,n=7===e.uint32_video_stream_type,r="".concat(o,"_").concat(i?mp:gp);if(t.remoteStreamStatsMap_.has(r)){var a=t.remoteStreamStatsMap_.get(r);(i&&a.stream.isMainVideoSubscribed||n&&a.stream.isAuxVideoSubscribed)&&(a.totalVideoFPS+=e.uint32_video_receive_fps,a.totalVideoBitrate+=e.uint32_video_codec_bitrate,a.videoCount++,0===a.statsToReport.uint32_video_width&&(a.statsToReport.uint32_video_width=e.uint32_video_width),0===a.statsToReport.uint32_video_height&&(a.statsToReport.uint32_video_height=e.uint32_video_height))}})),n){var a="".concat(o,"_").concat(mp);if(t.remoteStreamStatsMap_.has(a)){var s=t.remoteStreamStatsMap_.get(a);s.stream.isMainAudioSubscribed&&(s.totalAudioBitrate+=n.uint32_audio_codec_bitrate,s.audioCount++,Math.floor(100*n.audioLevel)>0&&(s.totalAudioLevel+=n.audioLevel,s.audioLevelCount++))}}}))}}},{key:"handlePublishStart",value:function(e){var t=e.client;this.hitTest(t)&&0===this.localStreamStats_.publishStartTime&&(this.localStreamStats_.publishStartTime=Date.now())}},{key:"handleLocalStreamInitStart",value:function(e){var t=e.audio,i=e.video;t&&0===this.pathJoinRoom_.uint64_init_audio_start_time&&(this.pathJoinRoom_.uint64_init_audio_start_time=Date.now()),i&&0===this.pathJoinRoom_.uint64_init_camera_start_time&&(this.pathJoinRoom_.uint64_init_camera_start_time=Date.now())}},{key:"handleLocalStreamInitEnd",value:function(e){var t=e.audio,i=e.video;t&&0===this.pathJoinRoom_.uint64_init_audio_end_time&&(this.pathJoinRoom_.uint64_init_audio_end_time=Date.now()),i&&0===this.pathJoinRoom_.uint64_init_camera_end_time&&(this.pathJoinRoom_.uint64_init_camera_end_time=Date.now())}},{key:"handleLocalStreamInitFailed",value:function(e){var t=e.audio,i=e.video,n=e.error,r=n instanceof fy?n.getExtraCode()||n.getCode():{NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5}[n.name]||py.UNKNOWN;t&&0===this.pathJoinRoom_.uint64_init_audio_end_time&&(this.pathJoinRoom_.int32_init_audio_ret=r,this.pathJoinRoom_.uint64_init_audio_end_time=Date.now()),i&&0===this.pathJoinRoom_.uint64_init_camera_end_time&&(this.pathJoinRoom_.int32_init_camera_ret=r,this.pathJoinRoom_.uint64_init_camera_end_time=Date.now())}},{key:"hasVideoFlag",value:function(e){return this.firstPublishedUserList_.findIndex((function(t){return t.userId===e&&1&t.flag}))>=0}},{key:"hasAudioFlag",value:function(e){return this.firstPublishedUserList_.findIndex((function(t){return t.userId===e&&8&t.flag}))>=0}},{key:"hasAuxFlag",value:function(e){return this.firstPublishedUserList_.findIndex((function(t){return t.userId===e&&4&t.flag}))>=0}},{key:"hitTest",value:function(e){return e===this.client_}},{key:"checkStorage",value:(a=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,!(t=bb.getItem(this.storageKey_))){e.next=6;break}return e.next=5,this.upload(t);case 5:bb.deleteItem(this.storageKey_);case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),this.log_.warn(e.t0);case 11:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(){return a.apply(this,arguments)})},{key:"setStorage",value:function(){this.prepareReport();var e=this.getReportData();0!==e.msg_path_enter_room.uint64_start_time&&bb.setItem(this.storageKey_,e)}},{key:"prepareReport",value:function(){var e=this;if(this.networkQuality_.count>0&&(this.basicInfo.uint32_avg_rtt=Math.floor(this.networkQuality_.totalUplinkRTT/this.networkQuality_.count),this.basicInfo.uint32_avg_up_loss=Math.floor(this.networkQuality_.totalUplinkLoss/this.networkQuality_.count)),this.localStreamStats_.videoCount>0){this.localStreamStats_.statsToReport.uint32_video_big_capture_fps=Math.floor(this.localStreamStats_.totalVideoFPS/this.localStreamStats_.videoCount),this.localStreamStats_.statsToReport.uint32_video_big_bitrate=Math.floor(this.localStreamStats_.totalVideoBitrate/this.localStreamStats_.videoCount);var t=Math.floor(this.localStreamStats_.totalVideoWidth/this.localStreamStats_.videoCount),i=Math.floor(this.localStreamStats_.totalVideoHeight/this.localStreamStats_.videoCount);this.localStreamStats_.statsToReport.uint32_video_big_resolution=t<<16|i}this.localStreamStats_.audioLevelCount>0&&(this.localStreamStats_.statsToReport.uint32_audio_capture_db=Math.floor(this.localStreamStats_.totalAudioLevel/this.localStreamStats_.audioLevelCount*100)),this.remoteStreamStatsMap_.forEach((function(t,i){var n=t.userId;if(e.networkQuality_.totalDownlinkRTTAndLossMap.has(n)){var r=e.networkQuality_.totalDownlinkRTTAndLossMap.get(n),o=r.totalLoss,a=r.count;t.statsToReport.uint32_avg_down_loss=Math.floor(o/a)}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));var s=e.client_.getCallDurationCalculator();s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(i,Ph),t.statsToReport.uint32_video_play_time=s.getDuration(i,Ah)),t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,5e3);var c=e.client_.getBadCaseDetector();if(c){var l=c.getDataFreezeDuration(i),d=l.dataFreeze,u=l.count,h=c.getRenderFreezeDuration(i).renderFreeze;t.statsToReport.uint32_video_block_count=u,t.statsToReport.uint32_video_block_time=Math.min(d,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(h,t.statsToReport.uint32_video_play_time),c.isBlackStream(i)&&0===t.statsToReport.uint32_video_avg_fps?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}(0===t.subscribeStartTime||t.subscribeStartTime-t.streamAddedTime>100||0===t.playStreamTime)&&(e.pathMainAudioMap_.delete(i),e.pathMainVideoMap_.delete(i),t.statsToReport.uint32_video_render_first=0)})),this.pathMainAudioMap_.forEach((function(t,i){e.hasAudioFlag(t.userId)?t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>5e3&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+5e3):e.pathMainAudioMap_.delete(i)})),this.pathMainVideoMap_.forEach((function(t,i){e.hasVideoFlag(t.userId)?t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>5e3&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+5e3):e.pathMainVideoMap_.delete(i)})),this.pathJoinRoom_.uint64_end_time-this.pathJoinRoom_.uint64_start_time>5e3&&(this.pathJoinRoom_.uint64_end_time=this.pathJoinRoom_.uint64_start_time+5e3)}},{key:"getReportData",value:function(){var e=this.client_.getSignalInfo();return{uint32_sdk_app_id:Number(this.client_.getSDKAppId()),msg_user_info:new Uw({userId:this.client_.getUserId(),tinyId:this.client_.getTinyId(),role:"anchor"===this.client_.getRole()?dp:up}),msg_basic_info:this.basicInfo,uint32_acc_ip:qg(e.relayIp),uint32_client_ip:qg(e.clientIp,"small"),uint32_acc_port:0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Math.pow(2,31)),msg_path_enter_room:this.pathJoinRoom_,msg_path_exit_room:this.pathLeaveRoom_,msg_path_recv_video:y(this.pathMainVideoMap_.values()).map((function(e){return e.statsToReport})),msg_quality_statistics:y(this.remoteStreamStatsMap_.values()).map((function(e){return e.statsToReport})),str_room_name:String(this.client_.getRoomId()),msg_path_recv_audio:y(this.pathMainAudioMap_.values()).map((function(e){return e.statsToReport})),uint32_info_client_ip:qg(e.clientIp,"small"),error_code:[],msg_local_statistics:this.localStreamStats_.statsToReport}}},{key:"report",value:(n=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,t=this.getReportData(),e.next=4,this.upload(t);case 4:bb.deleteItem(this.storageKey_),this.initData(),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),this.log_.warn(e.t0);case 11:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(){return n.apply(this,arguments)})},{key:"upload",value:(i=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(Ch||0===t.msg_path_enter_room.uint64_start_time||[Ef,Rf,Mf].findIndex((function(e){return e===location.host}))>=0)){e.next=2;break}return e.abrupt("return");case 2:return i=Number(this.client_.getSDKAppId()),n=Lg(i,ap),e.next=6,d_.post(n,JSON.stringify(t));case 6:if("ok"===(r=e.sent).data){e.next=9;break}throw"key point upload failed: ".concat(r.data);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})}]),e}();function Ww(){return function(e,t,i){var n=i.value,o=new Map;return i.value=r(regeneratorRuntime.mark((function e(){var i,r,a,s,c=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o.get(this)){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Bf,data:{name:t}})});case 2:for(e.prev=2,o.set(this,!0),i=c.length,r=new Array(i),a=0;a<i;a++)r[a]=c[a];return e.next=7,n.apply(this,r);case 7:return s=e.sent,o.set(this,!1),e.abrupt("return",s);case 12:throw e.prev=12,e.t0=e.catch(2),o.set(this,!1),e.t0;case 16:case"end":return e.stop()}}),e,this,[[2,12]])}))),i}}function Hw(e){return Gw.apply(this,arguments)}function Gw(){return(Gw=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c,l,d,u,h,p,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.userId,n=t.sdkAppId,r=t.useStringRoomId,o=t.roomId,a=t.userSig,s={delta:0,count:[1,1],msg:[]},e.prev=2,(c=new FormData).append("userId",String(i)),c.append("sdkAppId",String(n)),c.append("isStrGroupId",r),c.append("groupId",String(o)),c.append("sdkVersion","4.12.5"),c.append("userSig",String(a)),l=Kg(),e.next=13,Zw(c,s,n);case 13:return d=e.sent,s.delta=Kg()-l,zw({stat:s,userId:i}),e.abrupt("return",d);case 19:throw e.prev=19,e.t0=e.catch(2),u=Hg(e.t0)?e.t0[0]:e.t0,h=jg(u.code)?u.code:0,p="get websocket url failed: ".concat(u.message.includes("timeout")?"timeout":u.message),f=new fy({code:py.SCHEDULE_FAILED,extraCode:h,message:Dg({key:um,data:{error:p,code:h}})}),sS.error(f),zw({stat:s,userId:i,roomId:o,error:f}),f;case 28:case"end":return e.stop()}}),e,null,[[2,19]])})))).apply(this,arguments)}function zw(e){var t=e.stat,i=e.userId,n=e.error;n?ib.logFailedEvent({eventType:Yp,error:n,userId:i}):ib.logSuccessEvent({eventType:Yp,delta:t.delta,userId:i}),ib.uploadEvent({log:"stat-schedule:"+JSON.stringify(t),userId:i})}function Jw(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Jh;return t=xg(e)?i===Jh?yf:bf:i===Jh?_f:Sf,"https://".concat(t,"/api/v1/config")}function Kw(e,t,i){return new Promise((function(n,r){d_.post(e,t,i).then((function(e){0===e.data.code?n(e.data.data):r({code:e.data.code,message:e.data.msg})})).catch(r)}))}var qw=function(e,t){return rS({retryFunction:Kw,settings:{retries:3,timeout:0},onError:t,onRetrying:e})};function Zw(e,t,i){return new Promise((function(n,r){var o,a=null;(o=[qw((function(e){return t.count[0]=e+1}),(function(e,i){t.msg[0]=e.message,a||i()}))(Jw(i,Jh),e,{timeout:2e3}),qw((function(e){return t.count[1]=e+1}),(function(e,i){t.msg[1]=e.message,a||i()}))(Jw(i,Kh),e,{timeout:2e3})],new Promise((function(e,t){var i=[];o.forEach((function(n){n.then(e).catch((function(e){i.push(e),i.length===o.length&&t(i)}))}))}))).then((function(e){n(a=e)})).catch(r)}))}var Qw,Xw,Yw,eI,tI,iI,nI,rI,oI,aI,sI,cI,lI,dI,uI,hI=new(function(){function e(){o(this,e)}return s(e,[{key:"call",value:function(e,t){return Bg(this[e])?this[e](t):Promise.reject(new fy({code:py.INVALID_PARAMETER,message:Dg({key:Rg,data:{name:e}})}))}},{key:"updatePrivateMapKey",value:function(e){var t=e.privateMapKey;return e.client.setProperty("privateMapKey",t),Promise.resolve()}}]),e}()),pI=(Qw=Ww(),Xw=ow(nw.CLIENT.join),Yw=Ww(),eI=Ww(),tI=ow(nw.CLIENT.publish),iI=Ww(),nI=ow(nw.CLIENT.unpublish),rI=ow.apply(void 0,y(nw.CLIENT.subscribe)),oI=ow(nw.CLIENT.unsubscribe),aI=Ww(),sI=ow(nw.CLIENT.switchRole),cI=ow(nw.CLIENT.startPublishCDNStream),lI=ow(nw.CLIENT.startMixTranscode),dI=Ww(),C((uI=function(){function e(t){var i,n;o(this,e),this.name_=Tf,this.mode_=t.mode,this.sdpSemantics_="plan-b",Fg(t.sdpSemantics)?function(){if(!Nb())return!1;if(Fg(window.RTCRtpTransceiver))return!1;if(!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var e=new RTCPeerConnection,t=!1;try{e.addTransceiver(Ph),t=!0}catch(e){}return e.close(),t}()&&(this.sdpSemantics_="unified-plan"):this.sdpSemantics_=t.sdpSemantics,this.sdkAppId_=t.sdkAppId,this.userId_=t.userId,this.log_=sS.createLogger({id:"c".concat(t.seq,"|").concat(this.userId_),userId:this.userId_,sdkAppId:this.sdkAppId_}),this.userSig_=t.userSig,this.roomId_=0,this.useStringRoomId_=t.useStringRoomId||!1,this.pureAudioPushMode_=null,this.version_=t.version,this.log_.info("using sdpSemantics: "+this.sdpSemantics_),this.signalChannel_=null,this.role_="anchor",this.privateMapKey_="",this.tinyId_=0,this.env_="",this.proxy_=null,this.connections_=new Map,this.mutedStates_=new Map,this.userMap_=new Map,this.syncUserListInterval_=-1,this.localStream_=null,this.uplinkConnection_=null,this.emitter_=tv(new u_,this.name_),this.isJoined_=!1,this.heartbeat_=-1,this.lastHeartBeatTime_=-1,this.stats_=new bk(this),this.joinTimeout_=-1,this.changeBigSmallRecords_=new Map,this.networkQuality_=null,this.badCaseDetector_=null,this.networkType_=Ng(),this.autoSubscribe_=!!Fg(t.autoSubscribe)||t.autoSubscribe,this.startJoinTimestamp_=0,this.joinedTimestamp_=0,this.joinOptions_={},this.basis_=(n={browser:Eh().name+"/"+Eh().version,os:jb(),displayResolution:Wb(),isScreenShareSupported:Db(),isWebRTCSupported:Cb(),isGetUserMediaSupported:Hb(),isWebAudioSupported:Gb(),isWebSocketsSupported:"WebSocket"in window&&2===window.WebSocket.CLOSING,isWebCodecSupported:(i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1},Fg(window.AudioDecoder)||(i.AudioDecoder=!0),Fg(window.AudioEncoder)||(i.AudioEncoder=!0),Fg(window.VideoDecoder)||(i.VideoDecoder=!0),Fg(window.VideoEncoder)||(i.VideoEncoder=!0),Fg(window.ImageDecoder)||(i.ImageDecoder=!0),i),isMediaSessionSupported:"mediaSession"in navigator&&!Fg(navigator.mediaSession.setActionHandler),isWebTransportSupported:!Fg(window.WebTransport)},navigator.userAgent.includes("miniProgram")&&(n.browser="mini/".concat(n.browser)),n),this.initBussinessInfo_(t),this.publishedCDN_=!1,this.publishCDNData_=null,this.mixedMCU_=!1,this.mixTranscodeData_=null,this.checkSystemResult_=null,this.enableAudioVolumeEvaluation_=!1,this.audioVolumeIntervalId_=null,this.mixTranscodeManager_=null,this.publishCDNManager_=null,this.keyPointManager_=new jw({client:this,frameWorkType:t.frameWorkType}),this.getUserList=rS({retryFunction:this.getUserList,settings:{retries:3},onError:function(e,t){return t()}}),this.isPublishing_=!1,this.isEnableSmallStream_=!1,this.smallStreamConfig_={bitrate:100,frameRate:15,height:120,width:160},this.turnServers_=[],this.iceTransportPolicy_=t.iceTransportPolicy,this.schedule_={domains:null,iceServers:null,iceTransportPolicy:null},this.enableAutoPlayDialog_=!!Fg(t.enableAutoPlayDialog)||t.enableAutoPlayDialog,this.signalInfo_={}}var i,n,a,c,l,d,u,h,p,f,m,g,v,_,b,k,C,w,I,E,R,M,P,A,D,O;return s(e,[{key:"initBussinessInfo_",value:function(e){this.bussinessInfo_=e.bussinessInfo;var t={};if(Ug(e.bussinessInfo)&&(t=JSON.parse(e.bussinessInfo)),!Fg(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:im})});this.pureAudioPushMode_=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this.pureAudioPushMode_}if(!Fg(e.streamId)){if(!(Ug(e.streamId)&&String(e.streamId)&&String(e.streamId).length<=64))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:nm})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_streamid_main=e.streamId}if(!Fg(e.userDefineRecordId)){if(null===e.userDefineRecordId.match(/^[A-Za-z0-9_-]{1,64}$/gi))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:rm})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Fg(e.userDefinePushArgs)){if(!(Ug(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:om})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs}tb(t)||(this.bussinessInfo_=JSON.stringify(t))}},{key:"setProxyServer",value:function(e){if(this.log_.info("set proxy server: ".concat(JSON.stringify(e))),Ug(e)){if(!e.startsWith("wss://"))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:am})});this.proxy_=e}else if($g(e)){var t=e.websocketProxy,i=e.loggerProxy;t&&(this.proxy_=t),i&&sp(i)}}},{key:"schedule",value:(O=r(regeneratorRuntime.mark((function e(i){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Hw({userId:this.userId_,sdkAppId:this.sdkAppId_,roomId:i,useStringRoomId:this.useStringRoomId_,version:this.version_,userSig:this.userSig_});case 2:(n=e.sent)&&(this.log_.info("schedule: ".concat(JSON.stringify(n))),this.schedule_=t(t({},this.schedule_),n),h_.emit(E_,this.schedule_));case 4:case"end":return e.stop()}}),e,this)}))),function(e){return O.apply(this,arguments)})},{key:"getSignalChannelUrl",value:function(){var e={mainUrl:"",backupUrl:""},t=Og();return t?e.mainUrl=e.backupUrl="wss://".concat(t,".rtc.qq.com"):this.proxy_?e.mainUrl=e.backupUrl=this.proxy_:Array.isArray(this.schedule_.domains)&&this.schedule_.domains.length>0&&(e.mainUrl=e.backupUrl="wss://".concat(this.schedule_.domains[0]),this.schedule_.domains[1]&&(e.backupUrl="wss://".concat(this.schedule_.domains[1]))),e}},{key:"getUserId",value:function(){return this.userId_}},{key:"getUserSig",value:function(){return this.userSig_}},{key:"getRole",value:function(){return this.role_}},{key:"getSignalInfo",value:function(){return this.signalInfo_}},{key:"getRoomId",value:function(){return this.roomId_}},{key:"getSDKAppId",value:function(){return this.sdkAppId_}},{key:"getTinyId",value:function(){return this.tinyId_}},{key:"setTurnServer",value:function(e){this.log_.info("set turn server: "+JSON.stringify(e));var t=[];Array.isArray(e)?e.forEach((function(e){return t.push(Jg(e))})):$g(e)&&t.push(Jg(e)),this.turnServers_=t}},{key:"getIceTransportPolicy",value:function(){return this.iceTransportPolicy_||this.schedule_.iceTransportPolicy||"all"}},{key:"initialize",value:function(){var e=this;this.log_.info("setup signal channel");var t=this.getSignalChannelUrl(),i=t.mainUrl,n=t.backupUrl;return this.signalChannel_=new nb({sdkAppId:this.sdkAppId_,userId:this.userId_,userSig:this.userSig_,url:i,backupUrl:n,version:this.version_,client:this}),this.networkQuality_||(this.networkQuality_=new kk({connections:this.connections_,signalChannel:this.signalChannel_,userId:this.userId_,client:this}),this.networkQuality_.on(pk,(function(t){e.emitter_.emit(pk,t)}))),this.deviceDetector_||(this.deviceDetector_=new Tk({client:this})),this.subscriptionManager_||(this.subscriptionManager_=new dw({client:this})),this.badCaseDetector_||(this.badCaseDetector_=new Dw({client:this,stats:this.stats_})),this.callDurationCalculator_||(this.callDurationCalculator_=new $w({client:this})),this.mixTranscodeManager_||(this.mixTranscodeManager_=new Lw({client:this,signalChannel:this.signalChannel_})),this.publishCDNManager_||(this.publishCDNManager_=new Nw({client:this,signalChannel:this.signalChannel_})),this.signalChannel_.on(BS,(function(t){e.log_.info("SignalChannel state changed from ".concat(t.prevState," to ").concat(t.state)),e.emitter_.emit(ok,t)})),this.signalChannel_.on(US,(function(t){e.reset(),e.emitter_.emit(mk,t)})),this.signalChannel_.once($S,(function(t){e.tinyId_=t.signalInfo.tinyId,h_.emit(w_,{client:e})})),this.signalChannel_.on(KS.PEER_JOIN,this.onPeerJoin,this),this.signalChannel_.on(KS.PEER_LEAVE,this.onPeerLeave,this),this.signalChannel_.on(KS.UPDATE_REMOTE_MUTE_STAT,(function(t){Date.now()-e.lastHeartBeatTime_>=1e4&&e.doHeartbeat(),h_.emit(k_,{client:e,data:t.data}),e.onPublishedUserList(t.data),e.onUpdateRemoteMuteStat(t.data)})),this.signalChannel_.on(KS.CLINET_BANNED,(function(t){var i=t.data.data,n=i.reason;if(ib.uploadEvent({log:"stat-banned:".concat(n),userId:e.userId_}),n===qh)n="you got banned by account admin";else if(n===Zh)n="duplicated userId joining the room";else if(n===Qh)return e.log_.warn("".concat(n," last heart beat time: ").concat(e.lastHeartBeatTime_," interval: ").concat(Date.now()-e.lastHeartBeatTime_,", visibility: ").concat(document.visibilityState)),void e.reJoin();e.log_.error("user was banned because of [".concat(i.reason,"]")),e.reset(),e.onClientBanned(n)})),h_.emit(C_,{client:this}),this.signalChannel_.connect()}},{key:"join",value:(D=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isJoined_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:sm})});case 2:return e.next=4,Pb();case 4:if(this.checkSystemResult_=e.sent,(i=Og())||(i=ep,this.proxy_&&(this.proxy_.startsWith(Xh)?i=tp:this.proxy_.startsWith(Yh)&&(i=ip))),this.env_=i,ib.setConfig({env:i,sdkAppId:this.sdkAppId_,userId:this.userId_,roomId:t.roomId}),this.uploadTrtcStats(),n=this.checkSystemResult_.detail,r=n.isH264EncodeSupported,o=n.isVp8EncodeSupported,Cb()&&(r||o)){e.next=13;break}throw new fy({code:py.NOT_SUPPORTED,message:Dg({key:_g})});case 13:if(this.joinOptions_=t,this.startJoinTimestamp_=Kg(),h_.emit(p_,{client:this}),Xy(this.userId_,{eventId:xy,eventDesc:"joining room",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),e.prev=17,this.proxy_||this.schedule_.domains){e.next=21;break}return e.next=21,this.schedule(t.roomId);case 21:return e.next=23,this.initialize(t);case 23:return e.next=25,this.doJoin(t);case 25:this.signalInfo_=this.signalChannel_.getSignalInfo(),h_.emit(g_,{client:this}),this.joinedTimestamp_=Kg(),a=this.joinedTimestamp_-this.startJoinTimestamp_,ib.logSuccessEvent({userId:this.userId_,eventType:Mp,delta:a}),ib.logSuccessEvent({userId:this.userId_,eventType:Rp}),ib.uploadEvent({log:"stat-autoplay-dialog:".concat(this.enableAutoPlayDialog_),userId:this.userId_}),ib.uploadEvent({log:"stat-conv-".concat(Ch,"-").concat(location.hostname),userId:this.userId_}),e.next=41;break;case 35:throw e.prev=35,e.t0=e.catch(17),h_.emit(v_,{client:this,error:e.t0}),ib.logFailedEvent({userId:this.userId_,eventType:Rp,error:e.t0}),this.reset(),e.t0;case 41:case"end":return e.stop()}}),e,this,[[17,35]])}))),function(e){return D.apply(this,arguments)})},{key:"uploadTrtcStats",value:(A=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d,u,h,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,DI.getMicrophones();case 3:n=e.sent,t=n&&n.length,e.next=9;break;case 7:e.prev=7,e.t0=e.catch(0);case 9:return e.prev=9,e.next=12,DI.getCameras();case 12:r=e.sent,i=r&&r.length,e.next=18;break;case 16:e.prev=16,e.t1=e.catch(9);case 18:o={microphone:t,camera:i},a=this.checkSystemResult_.detail,s=a.isH264EncodeSupported,c=a.isVp8EncodeSupported,l=a.isH264DecodeSupported,d=a.isVp8DecodeSupported,u={webRTC:this.basis_.isWebRTCSupported,getUserMedia:this.basis_.isGetUserMediaSupported,webSocket:this.basis_.isWebSocketsSupported,screenShare:this.basis_.isScreenShareSupported,webAudio:this.basis_.isWebAudioSupported,h264Encode:s,h264Decode:l,vp8Encode:c,vp8Decode:d},h={browser:this.basis_.browser,os:this.basis_.os,trtc:u,devices:o},p={isWebCodecSupported:this.basis_.isWebCodecSupported,isMediaSessionSupported:this.basis_.isMediaSessionSupported,isWebTransportSupported:this.basis_.isWebTransportSupported},ib.uploadEvent({log:"trtcstats-"+JSON.stringify(h),userId:this.userId_}),this.log_.info("TrtcStats-"+JSON.stringify(h)),ib.uploadEvent({log:"trtcadvancedstats-"+JSON.stringify(p),userId:this.userId_});case 26:case"end":return e.stop()}}),e,this,[[0,7],[9,16]])}))),function(){return A.apply(this,arguments)})},{key:"doJoin",value:function(e){var t=this;return new Promise((function(i,n){t.roomId_=e.roomId,Fg(e.role)||(t.role_=e.role),Fg(e.privateMapKey)||(t.privateMapKey_=e.privateMapKey),t.log_.info("Join() => joining room: ".concat(e.roomId," useStringRoomId: ").concat(t.useStringRoomId_," mode: ").concat(t.mode_," role: ").concat(t.role_));var r={roomId:String(e.roomId),useStringRoomId:t.useStringRoomId_,privateMapKey:t.privateMapKey_,trtcRole:"anchor"===t.role_?dp:up,trtcScene:"live"===t.mode_?lp:cp,sdpSemantics:t.sdpSemantics_,version:t.version_,ua:navigator&&navigator.userAgent||"",autoSubscribe:t.autoSubscribe_,terminalType:Iu?4:Tu?2:bu?3:Yu?12:Xu?5:eh?13:1,netType:ff[Ng()],bussinessInfo:t.bussinessInfo_};t.joinTimeout_=setTimeout((function(){t.log_.error("join room timeout observed"),n(new fy({code:py.JOIN_ROOM_FAILED,message:Dg({key:dm})}))}),5e3),h_.emit(f_,{client:t}),t.signalChannel_.once(VS,(function(e){clearTimeout(t.joinTimeout_),t.joinTimeout_=-1,h_.emit(w_,{client:t,error:e}),n(e)})),t.signalChannel_.send(ZS,r),t.signalChannel_.once(KS.JOIN_ROOM_RESULT,(function(e){clearTimeout(t.joinTimeout_),t.joinTimeout_=-1;var r=e.data,o=r.code,a=r.message;h_.emit(m_,{client:t,code:o}),0===o?(t.isJoined_=!0,t.log_.info("Join room success, start heartbeat"),t.startHeartbeat(),t.badCaseDetector_&&t.badCaseDetector_.start(),t.syncUserList(),t.startSyncUserListInterval(),i()):(t.log_.error("Join room failed result: "+o+" error: "+a),n(new fy({code:py.JOIN_ROOM_FAILED,extraCode:o,message:Dg({key:um,data:{error:a,code:o}})})))}))}))}},{key:"reJoin",value:(P=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isJoined_){e.next=3;break}return this.log_.warn("reJoin abort"),e.abrupt("return");case 3:return this.isJoined_=!1,e.prev=4,this.log_.warn("reJoin pending: ".concat(this.joinOptions_.roomId)),this.subscriptionManager_&&this.subscriptionManager_.markAllStream(),this.signalChannel_.close(),e.next=10,this.signalChannel_.connect();case 10:return e.next=12,this.doJoin(t(t({},this.joinOptions_),{},{role:this.role_,privateMapKey:this.privateMapKey_}));case 12:this.log_.warn("reJoin success"),ib.logSuccessEvent({userId:this.userId_,eventType:Pp}),this.checkConnectionsToReconnect(),this.republish(),e.next=24;break;case 18:e.prev=18,e.t0=e.catch(4),this.log_.warn("reJoin fail "+e.t0),this.reset(),ib.logFailedEvent({userId:this.userId_,eventType:Pp,error:e.t0}),this.emitter_.emit(mk,new fy({code:py.JOIN_ROOM_FAILED,message:Dg({key:hm,data:{roomId:this.joinOptions_.roomId}})}));case 24:case"end":return e.stop()}}),e,this,[[4,18]])}))),function(){return P.apply(this,arguments)})},{key:"republish",value:function(){var e=this;if(this.uplinkConnection_&&this.localStream_&&!this.uplinkConnection_.getIsReconnecting()){this.log_.warn("republish pending");var t=this.localStream_;this.doUnpublish(t).then((function(){return e.publish(t)})).then((function(){return e.log_.warn("republish success")})).catch((function(t){return e.log_.warn("republish fail "+t)}))}}},{key:"leave",value:(M=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return h_.emit(__,{client:this}),Xy(this.userId_,{eventId:Ly,eventDesc:"leaving room",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),e.prev=2,e.next=5,this.doHeartbeat();case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:this.doLeave(),h_.emit(y_,{client:this}),ib.logSuccessEvent({userId:this.userId_,eventType:Ap}),t=Math.floor((Kg()-this.joinedTimestamp_)/1e3),ib.logSuccessEvent({userId:this.userId_,eventType:Dp,delta:t});case 14:case"end":return e.stop()}}),e,this,[[2,7]])}))),function(){return M.apply(this,arguments)})},{key:"doLeave",value:function(){this.isJoined_&&(h_.emit(S_,{client:this}),this.log_.info("leave() => leaving room"),this.signalChannel_.send(QS),this.reset())}},{key:"clearNetworkQuality",value:function(){this.networkQuality_&&(this.networkQuality_.stop(),this.networkQuality_=null)}},{key:"closeConnections",value:function(){var e=this;this.connections_.forEach((function(t){e.closeDownLink(t.getTinyId())}))}},{key:"destroy",value:function(){if(this.isJoined_)throw this.log_.warn("please call leave() before destroy() client"),new fy({code:py.INVALID_OPERATION,message:Dg({key:pm})});this.log_.info("destroying SignalChannel"),this.signalChannel_&&(this.signalChannel_.close(),this.signalChannel_=null)}},{key:"reset",value:function(){this.keyPointManager_&&this.keyPointManager_.prepareReport(),this.mixTranscodeManager_&&(this.mixTranscodeManager_.stop(),this.mixTranscodeManager_=null),this.publishCDNManager_&&(this.publishCDNManager_=null),this.userMap_.clear(),this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.mutedStates_.clear(),this.clearNetworkQuality(),this.badCaseDetector_&&this.callDurationCalculator_&&this.uploadAllCallStats(),this.closeUplink(),this.isJoined_=!1,this.destroy()}},{key:"startSyncUserListInterval",value:function(){-1===this.syncUserListInterval_&&(this.syncUserListInterval_=yb.setInterval(this.syncUserList.bind(this),1e4))}},{key:"stopSyncUserListInterval",value:function(){yb.clearInterval(this.syncUserListInterval_),this.syncUserListInterval_=-1}},{key:"syncUserList",value:(R=r(regeneratorRuntime.mark((function e(){var t,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.getUserList();case 3:t=e.sent,0!==this.userMap_.size&&this.userMap_.forEach((function(e){t.findIndex((function(t){return t.userId===e.userId}))<0&&(i.log_.info("peer leave detected: ".concat(e.userId)),i.cleanUser({userId:e.userId,tinyId:e.tinyId}))})),t.forEach((function(e){var t=e.userId;i.userMap_.has(t)||t===i.userId_||(i.userMap_.set(t,e),i.emitter_.emit(ak,{userId:t}))})),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),this.log_.warn("sync user list failed: "+e.t0);case 11:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(){return R.apply(this,arguments)})},{key:"getUserList",value:function(){var e=this;return new Promise((function(t,i){e.signalChannel_.send(uy),e.signalChannel_.once(KS.USER_LIST_RES,(function(e){var n=e.data,r=n.code,o=n.message;if(0!==r){var a=Dg({key:Ig,data:{signalResponse:KS.USER_LIST_RES,code:r,message:o}});i(a)}else{var s=(e.data.data&&e.data.data.userList||[]).map((function(e){var t=e.userId,i=e.srcTinyId,n=e.role;return new Ow({userId:t,tinyId:i,role:n})}));t(s)}})),setTimeout(i,2e3)}))}},{key:"publish",value:(E=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.setPublishState(gf),this.isPublishing_=!0,i=Kg(),h_.emit(T_,{client:this,stream:t}),this.log_.info("publish() => publishing local stream"),n=new ww({userId:this.userId_,tinyId:this.tinyId_,client:this,isUplink:!0,signalChannel:this.signalChannel_}),t.setConnection(n),n.initialize(),n.on(Yb,(function(e){var t=e.getCode();t!==py.ICE_TRANSPORT_ERROR&&(t===py.UPLINK_RECONNECTION_FAILED&&a.closeUplink(),a.emitter_.emit(mk,e))})),e.prev=9,e.next=12,n.publish(t);case 12:this.localStream_=e.sent,this.localStream_.getBeautyStatus()&&this.log_.info("beauty stream is published successfully"),this.log_.info("local stream is published successfully"),this.isPublishing_=!1,t.setPublishState(vf),this.uplinkConnection_=n,r=Kg(),o=r-i,ib.logSuccessEvent({userId:this.userId_,eventType:Op}),ib.logSuccessEvent({userId:this.userId_,eventType:xp,delta:o}),t.hasAudio()&&Xy(this.userId_,{eventId:gy,eventDesc:"publish audio track",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),t.hasVideo()&&Xy(this.userId_,{eventId:my,eventDesc:"publish video track",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),this.networkQuality_&&this.networkQuality_.setUplinkConnection(this.uplinkConnection_),this.deviceDetector_&&this.deviceDetector_.setLocalStream(this.localStream_),h_.emit(F_,{localStream:this.localStream_,client:this}),this.notPublishWithoutH264Supported_=!1,e.next=39;break;case 30:throw e.prev=30,e.t0=e.catch(9),e.t0 instanceof fy&&e.t0.getCode()===py.NOT_SUPPORTED_H264&&(this.notPublishWithoutH264Supported_=!0),t.setPublishState(mf),n.close(),this.log_.error("failed to publish stream "+e.t0),this.isPublishing_=!1,ib.logFailedEvent({userId:this.userId_,eventType:Op,error:e.t0}),e.t0;case 39:case"end":return e.stop()}}),e,this,[[9,30]])}))),function(e){return E.apply(this,arguments)})},{key:"unpublish",value:(I=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.localStream_){e.next=2;break}return e.abrupt("return");case 2:return this.log_.info("unpublish() => unpublishing local stream"),e.prev=3,e.next=6,this.doUnpublish();case 6:ib.logSuccessEvent({userId:this.userId_,eventType:Lp}),e.next=13;break;case 9:throw e.prev=9,e.t0=e.catch(3),ib.logFailedEvent({userId:this.userId_,eventType:Lp,error:e.t0}),e.t0;case 13:case"end":return e.stop()}}),e,this,[[3,9]])}))),function(){return I.apply(this,arguments)})},{key:"doUnpublish",value:function(){var e=this;return this.signalChannel_.sendWaitForResponse({command:ty,commandDesc:"unpublish",responseCommand:KS.UNPUBLISH_RESULT}).then((function(){e.closeUplink()})).catch((function(){e.closeUplink()}))}},{key:"closeUplink",value:function(){this.uplinkConnection_&&(this.uplinkConnection_.getIsReconnecting()&&this.uplinkConnection_.stopReconnection(),this.uplinkConnection_.close(),this.uplinkConnection_=null,this.networkQuality_&&this.networkQuality_.setUplinkConnection(null),this.localStream_.hasAudio()&&Xy(this.userId_,{eventId:_y,eventDesc:"unpublish audio track",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),this.localStream_.hasVideo()&&Xy(this.userId_,{eventId:vy,eventDesc:"unpublish video track",timestamp:uc(),userId:this.userId_,tinyId:this.tinyId_}),this.localStream_.setConnection(null),this.localStream_=null,this.deviceDetector_&&this.deviceDetector_.setLocalStream(null))}},{key:"closeDownLink",value:function(e){var t=this.connections_.get(e);t&&(t.getIsReconnecting()&&t.stopReconnection(),this.subscriptionManager_&&this.subscriptionManager_.delete(t.getUserId()),t.close(),this.connections_.delete(e),this.mutedStates_.delete(e))}},{key:"subscribe",value:(w=r(regeneratorRuntime.mark((function e(t,i){var n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.log_.info("subscribe() => subscribe to [".concat(t.getUserId(),"] ").concat(t.getType()," stream with options: ").concat(JSON.stringify(i))),Fg(i)&&(i={audio:!0,video:!0}),Fg(i.video)&&(i.video=!0),Fg(i.audio)&&(i.audio=!0),e.prev=4,n=t.getConnection(),h_.emit(L_,{client:this,stream:t}),e.next=9,n.subscribe(t,i);case 9:this.subscriptionManager_&&this.subscriptionManager_.addSubscriptionRecord(t.getUserId(),t,i),this.notSubscribeWithoutH264Supported_=!1,ib.logSuccessEvent({userId:this.userId_,eventType:Np}),e.next=22;break;case 14:throw e.prev=14,e.t0=e.catch(4),(r=e.t0 instanceof fy?e.t0.getCode():py.UNKNOWN)===py.NOT_SUPPORTED_H264&&(this.notSubscribeWithoutH264Supported_=!0),o=new fy({code:r,message:Dg({key:ym,data:{message:e.t0.message}})}),ib.logFailedEvent({userId:this.userId_,eventType:Np,error:o}),this.log_.error(o),o;case 22:case"end":return e.stop()}}),e,this,[[4,14]])}))),function(e,t){return w.apply(this,arguments)})},{key:"unsubscribe",value:(C=r(regeneratorRuntime.mark((function e(t){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.log_.info("unsubscribe() => unsubscribe to [".concat(t.getUserId(),"] ").concat(t.getType()," stream")),e.prev=1,i=t.getConnection(),e.next=5,i.unsubscribe(t);case 5:this.subscriptionManager_&&this.subscriptionManager_.addUnsubscriptionRecord(t.getUserId(),t),h_.emit($_,{client:this,stream:t}),ib.logSuccessEvent({userId:this.userId_,eventType:$p}),e.next=14;break;case 10:throw e.prev=10,e.t0=e.catch(1),ib.logFailedEvent({userId:this.userId_,eventType:$p,error:e.t0}),e.t0;case 14:case"end":return e.stop()}}),e,this,[[1,10]])}))),function(e){return C.apply(this,arguments)})},{key:"switchRole",value:(k=r(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.role_!==t){e.next=2;break}return e.abrupt("return");case 2:if("audience"!==t||!this.localStream_){e.next=5;break}return e.next=5,this.unpublish(this.localStream_);case 5:return this.log_.info("switchRole() => switch role to: "+t),e.next=8,this.doSwitchRole(t);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return k.apply(this,arguments)})},{key:"doSwitchRole",value:function(e){var t=this;return new Promise((function(i,n){var r={role:"anchor"===e?dp:up,privateMapKey:t.privateMapKey_};t.log_.info("switchRole signal data: "+JSON.stringify(r));var o=setTimeout((function(){t.log_.error("switchRole timeout observed"),t.signalChannel_.off(KS.SWITCH_ROLE_RES,a),n(new fy({code:py.SWITCH_ROLE_FAILED,message:Dg({key:Tm})}))}),5e3),a=function(r){clearTimeout(o);var a=r.data,s=a.code,c=a.message;0===s?(t.role_=e,i()):(t.log_.error("switchRole failed, errCode: ".concat(s,", errMsg: ").concat(c)),n(new fy({code:py.SWITCH_ROLE_FAILED,message:Dg({key:Cm,data:{errMsg:c,errCode:s}})})))};t.signalChannel_.once(KS.SWITCH_ROLE_RES,a),t.signalChannel_.send(hy,r)}))}},{key:"on",value:function(e,t,i){this.emitter_.on(e,t,i)}},{key:"off",value:function(e,t,i){"*"===e?this.emitter_.removeAllListeners():this.emitter_.off(e,t,i)}},{key:"getRemoteMutedState",value:function(){var e=this,i=[];return this.mutedStates_.forEach((function(n,r,o){var a=e.connections_.get(r);a&&i.push(t({userId:a.getUserId()},n))})),i}},{key:"getTransportStats",value:(b=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t={rtt:0,downlinksRTT:{}},!this.uplinkConnection_){e.next=6;break}return e.next=4,this.stats_.getSenderStats(this.uplinkConnection_);case 4:i=e.sent,t.rtt=i.rtt;case 6:n=T(this.connections_),e.prev=7,n.s();case 9:if((r=n.n()).done){e.next=17;break}return(o=S(r.value,2))[0],a=o[1],e.next=13,this.stats_.getReceiverStats(a);case 13:s=e.sent,t.downlinksRTT[s.userId]=s.rtt;case 15:e.next=9;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(7),n.e(e.t0);case 22:return e.prev=22,n.f(),e.finish(22);case 25:return e.abrupt("return",t);case 26:case"end":return e.stop()}}),e,this,[[7,19,22,25]])}))),function(){return b.apply(this,arguments)})},{key:"getLocalAudioStats",value:(_=r(regeneratorRuntime.mark((function e(){var t,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t={})[this.userId_]={bytesSent:0,packetsSent:0},!this.uplinkConnection_){e.next=7;break}return e.next=5,this.stats_.getSenderStats(this.uplinkConnection_);case 5:i=e.sent,t[this.userId_]={bytesSent:i.audio.bytesSent,packetsSent:i.audio.packetsSent};case 7:return e.abrupt("return",t);case 8:case"end":return e.stop()}}),e,this)}))),function(){return _.apply(this,arguments)})},{key:"getLocalVideoStats",value:(v=r(regeneratorRuntime.mark((function e(){var t,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t={})[this.userId_]={bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0},!this.uplinkConnection_){e.next=7;break}return e.next=5,this.stats_.getSenderStats(this.uplinkConnection_);case 5:i=e.sent,t[this.userId_]={bytesSent:i.video.bytesSent,packetsSent:i.video.packetsSent,framesEncoded:i.video.framesEncoded,framesSent:i.video.framesSent,frameWidth:i.video.frameWidth,frameHeight:i.video.frameHeight};case 7:return e.abrupt("return",t);case 8:case"end":return e.stop()}}),e,this)}))),function(){return v.apply(this,arguments)})},{key:"getRemoteAudioStats",value:(g=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t={},i=T(this.connections_),e.prev=2,i.s();case 4:if((n=i.n()).done){e.next=13;break}return(r=S(n.value,2))[0],o=r[1],a=o.getDelay(),s=a.audioDelay,e.next=9,this.stats_.getReceiverStats(o);case 9:(c=e.sent).hasAudio&&(t[c.userId]={bytesReceived:c.audio.bytesReceived,packetsReceived:c.audio.packetsReceived,packetsLost:c.audio.packetsLost,end2EndDelay:s});case 11:e.next=4;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(2),i.e(e.t0);case 18:return e.prev=18,i.f(),e.finish(18);case 21:return e.abrupt("return",t);case 22:case"end":return e.stop()}}),e,this,[[2,15,18,21]])}))),function(){return g.apply(this,arguments)})},{key:"getRemoteVideoStats",value:(m=r(regeneratorRuntime.mark((function e(){var t,i,n,r,o,a,s,c,l,d=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=d.length>0&&void 0!==d[0]?d[0]:mp,i={},n=T(this.connections_),e.prev=3,n.s();case 5:if((r=n.n()).done){e.next=15;break}return(o=S(r.value,2))[0],a=o[1],e.next=9,this.stats_.getReceiverStats(a);case 9:s=e.sent,c=a.getDelay(),l=c.videoDelay,t===mp&&s.hasVideo&&(i[s.userId]={bytesReceived:s.video.bytesReceived,packetsReceived:s.video.packetsReceived,packetsLost:s.video.packetsLost,framesDecoded:s.video.framesDecoded,frameWidth:s.video.frameWidth,frameHeight:s.video.frameHeight,end2EndDelay:l}),t===gp&&s.hasAuxiliary&&(i[s.userId]={bytesReceived:s.auxiliary.bytesReceived,packetsReceived:s.auxiliary.packetsReceived,packetsLost:s.auxiliary.packetsLost,framesDecoded:s.auxiliary.framesDecoded,frameWidth:s.auxiliary.frameWidth,frameHeight:s.auxiliary.frameHeight,end2EndDelay:l});case 13:e.next=5;break;case 15:e.next=20;break;case 17:e.prev=17,e.t0=e.catch(3),n.e(e.t0);case 20:return e.prev=20,n.f(),e.finish(20);case 23:return e.abrupt("return",i);case 24:case"end":return e.stop()}}),e,this,[[3,17,20,23]])}))),function(){return m.apply(this,arguments)})},{key:"getSdpSemantics",value:function(){return this.sdpSemantics_}},{key:"getIceServers",value:function(){return 0===this.turnServers_.length&&this.schedule_.iceServers?this.schedule_.iceServers:this.turnServers_}},{key:"getConnections",value:function(){return this.connections_}},{key:"getMutedStates",value:function(){return this.mutedStates_}},{key:"startHeartbeat",value:function(){-1===this.heartbeat_&&(this.log_.info("startHeartbeat..."),this.heartbeat_=yb.setInterval(this.doHeartbeat.bind(this),2e3))}},{key:"stopHeartbeat",value:function(){-1!==this.heartbeat_&&(this.log_.info("stopHeartbeat"),yb.clearInterval(this.heartbeat_),this.heartbeat_=-1,this.lastHeartBeatTime_=-1)}},{key:"doHeartbeat",value:(f=r(regeneratorRuntime.mark((function e(){var i,n,r,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this.badCaseDetector_.getMonitorFreeze(),e.next=3,this.stats_.getStatsReport({uplinkConnection:this.uplinkConnection_,downlinkConnections:this.connections_,freezeMap:i});case 3:if(n=e.sent,h_.emit(b_,{client:this,stats:n}),this.badCaseDetector_.resetMonitor(),this.signalChannel_){e.next=8;break}return e.abrupt("return");case 8:r=this.signalChannel_.isConnected()?Yy(this.userId_):[],o=t(t({str_sdk_version:"4.12.5",uint64_datetime:(new Date).getTime(),msg_user_info:{str_identifier:this.userId_,uint64_tinyid:this.tinyId_},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:ff[this.networkType_]}},n),{},{msg_event_msg:r}),this.signalChannel_.send(XS,o),a=Date.now(),this.lastHeartBeatTime_>0&&a-this.lastHeartBeatTime_>1e4&&this.log_.warn("heartbeat took ".concat(a-this.lastHeartBeatTime_)),this.lastHeartBeatTime_=a,this.isRelayMaybeFailed()&&this.reJoin();case 15:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"onRemoteStreamAdded",value:function(e){var t=e.content,i=t.userId,n=t.tinyId,r=t.audio,o=t.bigVideo,a=t.auxVideo,s=t.smallVideo;if(null!==i){this.userMap_.has(i)||(this.userMap_.set(i,new Ow({userId:i,tinyId:n,role:"anchor"})),this.emitter_.emit(ak,{userId:i}));var c=this.connections_.get(n);if(c){if(c.getIsReconnecting())return;this.log_.warn("duplicated stream-added observed, rebuild the connection"),c.close(),this.connections_.delete(n)}var l={audio:r,video:o,auxiliary:a,smallVideo:s};this.log_.info("remote peer [".concat(i,"] published stream. trackState: ").concat(JSON.stringify(l))),this.createDownlinkConnection({userId:i,tinyId:n,trackState:l})}else this.log_.warn("received null userId on stream added")}},{key:"createDownlinkConnection",value:function(e){var t=this,i=e.userId,n=e.tinyId,r=e.trackState,o=new Iw({userId:i,tinyId:n,client:this,isUplink:!1,signalChannel:this.signalChannel_,autoSubscribe:this.autoSubscribe_,trackState:r});this.connections_.set(n,o),this.installDownlinkEvents(o,i,n),this.autoSubscribe_?(o.initialize(),o.connect().catch((function(){var e=o.getTrackState();o.getMainStream()||!e.audio&&!e.video||t.initRemoteStream({type:mp,userId:i,downlinkConnection:o}),!o.getAuxStream()&&e.auxiliary&&t.initRemoteStream({type:gp,userId:i,downlinkConnection:o})}))):((r.audio||r.video)&&this.initRemoteStream({type:mp,userId:i,downlinkConnection:o}),r.auxiliary&&this.initRemoteStream({type:gp,userId:i,downlinkConnection:o}))}},{key:"initRemoteStream",value:function(e){var t=e.type,i=e.userId,n=e.downlinkConnection,r=new lw({type:t,userId:i,client:this});r.setConnection(n),n.setRemoteStream(t===mp?hp:pp,r),r.setIsStreamAddedEventEmitted(!0),h_.emit(x_,{client:this,stream:r}),this.emitter_.emit(tk,{stream:r})}},{key:"installDownlinkEvents",value:function(e,t,i){var n=this;e.on(qb,(function(e){e.stream.setIsStreamAddedEventEmitted(!0),h_.emit(x_,{client:n,stream:e.stream}),n.emitter_.emit(tk,{stream:e.stream})})),e.on(Zb,(function(e){n.changeBigSmallRecords_.delete(e.stream.getUserId()),e.stream.stop(),e.stream.setIsStreamAddedEventEmitted(!1),n.subscriptionManager_&&n.subscriptionManager_.deleteAutoRecoveryFlag(e.stream.getUserId(),e.stream.getType()),h_.emit(B_,{client:n,stream:e.stream}),n.emitter_.emit(ik,{stream:e.stream})})),e.on(Qb,(function(e){h_.emit(V_,{client:n,stream:e.stream}),n.emitter_.emit(nk,{stream:e.stream})})),e.on(Xb,(function(e){h_.emit(N_,{client:n,stream:e.stream}),n.emitter_.emit(rk,{stream:e.stream})})),e.on(Yb,(function(e){var t=e.getCode();t!==py.ICE_TRANSPORT_ERROR&&(t===py.DOWNLINK_RECONNECTION_FAILED&&n.closeDownLink(i),n.emitter_.emit(mk,e))}))}},{key:"onPeerJoin",value:function(e){var t=e.data.data,i=t.srcTinyId,n=t.userId,r=t.role;this.userMap_.has(n)||(this.userMap_.set(n,new Ow({userId:n,tinyId:i,role:r})),this.emitter_.emit(ak,{userId:n}))}},{key:"onPeerLeave",value:function(e){var t=e.data.data,i=t.srcTinyId,n=t.userId,r=t.reason,o=void 0===r?0:r;this.log_.info("peer leave [".concat(n,"]: ").concat(xf[o])),this.cleanUser({userId:n,tinyId:i})}},{key:"cleanUser",value:function(e){var t=e.userId,i=e.tinyId;this.userMap_.delete(t),this.closeDownLink(i),this.emitter_.emit(sk,{userId:t})}},{key:"onPublishedUserList",value:function(e){var t=this;try{var i=e.data.userList.map((function(e){return e.userId}));this.connections_.forEach((function(e){var n=e.getUserId(),r=e.getTinyId();i.findIndex((function(e){return e===n}))<0&&(t.log_.info("peer unpublished detected [".concat(n,"]")),t.closeDownLink(r))})),e.data.userList.forEach((function(e){var i=e.userId,n=e.srcTinyId,r=e.flag;if(i!==t.userId_){var o=!!(1&r),a=!!(8&r),s=!!(4&r),c=!!(2&r),l=t.connections_.get(n);if(t.changeBigSmallRecords_.has(i)&&t.checkSubscribeBigSmallVideo(l,c),l){var d=l.getTrackState(),u=d.audio,h=d.video,p=d.auxiliary,f=d.smallVideo;!h&&o&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:hf,kind:Ah}),!u&&a&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:hf,kind:Ph}),!p&&s&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:hf,kind:Dh}),!f&&c&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:hf,kind:Oh}),h&&!o&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:pf,kind:Ah}),u&&!a&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:pf,kind:Ph}),p&&!s&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:pf,kind:Dh}),f&&!c&&h_.emit(O_,{client:t,tinyId:n,userId:i,action:pf,kind:Oh})}else t.log_.info("peer published detected [".concat(i,"]")),t.onRemoteStreamAdded({content:{audio:a,bigVideo:o,auxVideo:s,smallVideo:c,userId:i,tinyId:n}})}}))}catch(e){}}},{key:"onUpdateRemoteMuteStat",value:function(e){var t=this,i=e.data;(i&&i.userList||[]).forEach((function(e){var i=e.srcTinyId,n=e.userId;if(0!==i&&i!==t.tinyId_){var r=t.connections_.get(i);if(r){var o=r.getMainStream();if(o&&o.getIsStreamAddedEventEmitted()){var a=!!(1&e.flag),s=!!(8&e.flag),c=!!(2&e.flag),l=!!(64&e.flag),d=!!(16&e.flag),u=t.mutedStates_.get(i);if(void 0===u)return t.mutedStates_.set(i,{hasAudio:s,hasVideo:a,hasSmall:c,audioMuted:l,videoMuted:d}),a?d?t.emitter_.emit(lk,{userId:n}):t.emitter_.emit(uk,{userId:n}):t.emitter_.emit(lk,{userId:n}),void(s?l?t.emitter_.emit(ck,{userId:n}):t.emitter_.emit(dk,{userId:n}):t.emitter_.emit(ck,{userId:n}));var h=!l&&s;(!u.audioMuted&&u.hasAudio)!==h&&(h?t.emitter_.emit(dk,{userId:n}):t.emitter_.emit(ck,{userId:n}));var p=!d&&a;(!u.videoMuted&&u.hasVideo)!==p&&(p?t.emitter_.emit(uk,{userId:n}):t.emitter_.emit(lk,{userId:n})),t.mutedStates_.set(i,{hasAudio:s,hasVideo:a,hasSmall:c,audioMuted:l,videoMuted:d})}}else t.mutedStates_.delete(i)}}))}},{key:"onClientBanned",value:function(e){this.emitter_.emit(hk,new fy({code:py.CLIENT_BANNED,message:Dg({key:wm,data:{reason:e}})}))}},{key:"getEnv",value:function(){return this.env_}},{key:"getSubscriptionManager",value:function(){return this.subscriptionManager_}},{key:"startPublishCDNStream",value:(p=r(regeneratorRuntime.mark((function e(){var t,i=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=i.length>0&&void 0!==i[0]?i[0]:{},this.localStream_){e.next=3;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Im})});case 3:return this.log_.info("startPublishCDNStream params: ".concat(JSON.stringify(t))),e.next=6,this.publishCDNManager_.startPublishTencentCDN(t);case 6:if(!(t.appId&&t.bizId&&t.url)){e.next=9;break}return e.next=9,this.publishCDNManager_.startPublishGivenCDN(t);case 9:case"end":return e.stop()}}),e,this)}))),function(){return p.apply(this,arguments)})},{key:"stopPublishCDNStream",value:(h=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.publishCDNManager_.getIsPublishingTencentCDN()){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Em})});case 2:return this.log_.info("stopPublishCDNStream"),e.next=5,this.publishCDNManager_.stopPublishTencentCDN();case 5:if(!this.publishCDNManager_.getIsPublishingGivenCDN()){e.next=8;break}return e.next=8,this.publishCDNManager_.stopPublishGivenCDN();case 8:case"end":return e.stop()}}),e,this)}))),function(){return h.apply(this,arguments)})},{key:"startMixTranscode",value:(u=r(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isJoined_&&this.mixTranscodeManager_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Am})});case 2:return Fg(t.mode)&&(t.mode=rf.MANUAL),e.prev=3,this.log_.info("startMixTranscode with config ".concat(JSON.stringify(t))),ib.uploadEvent({log:"mix-transcode-mode:".concat(t.mode),userId:this.userId_}),e.next=8,this.mixTranscodeManager_.startMixTranscode(t);case 8:ib.logSuccessEvent({userId:this.userId_,eventType:Zp}),e.next=15;break;case 11:throw e.prev=11,e.t0=e.catch(3),ib.logFailedEvent({userId:this.userId_,eventType:Zp,error:e.t0}),e.t0;case 15:case"end":return e.stop()}}),e,this,[[3,11]])}))),function(e){return u.apply(this,arguments)})},{key:"stopMixTranscode",value:(d=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isJoined_&&this.mixTranscodeManager_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Dm})});case 2:return e.prev=2,e.next=5,this.mixTranscodeManager_.stopMixTranscode();case 5:ib.logSuccessEvent({userId:this.userId_,eventType:Qp}),e.next=12;break;case 8:throw e.prev=8,e.t0=e.catch(2),ib.logFailedEvent({userId:this.userId_,eventType:Qp,error:e.t0}),e.t0;case 12:case"end":return e.stop()}}),e,this,[[2,8]])}))),function(){return d.apply(this,arguments)})},{key:"getSystemResult",value:function(){return this.checkSystemResult_}},{key:"enableAudioVolumeEvaluation",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!jg(t))throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Om})});if(this.log_.info("enableAudioVolumeEvaluation with interval: "+t),t<=0)return this.enableAudioVolumeEvaluation_=!1,yb.clearInterval(this.audioVolumeIntervalId_),void(this.audioVolumeIntervalId_=null);t=Math.floor(Math.max(t,16)),h_.emit(R_,{interval:t}),this.audioVolumeIntervalId_&&(yb.clearInterval(this.audioVolumeIntervalId_),this.audioVolumeIntervalId_=null),this.enableAudioVolumeEvaluation_=!0,this.audioVolumeIntervalId_=yb.setInterval((function(){var t=[];if(e.localStream_){var i=Math.floor(100*e.localStream_.getAudioLevel());t.push({userId:e.userId_,audioVolume:i,stream:e.localStream_})}e.connections_.forEach((function(e){var i=e.getSubscribedMainStream();if(i){var n=Math.floor(100*i.getAudioLevel());t.push({userId:e.getUserId(),audioVolume:n,stream:i})}})),e.emitter_.emit(fk,{result:t})}),t,i)}},{key:"callExperimentalAPI",value:function(e,i){return hI.call(e,t({client:this},i))}},{key:"setProperty",value:function(e,t){var i="".concat(e,"_");Fg(this[i])||(this[i]=t)}},{key:"uploadAllCallStats",value:function(){var e=this;this.callDurationCalculator_.getDurationMap().forEach((function(t,i){var n={userId:t.userId,type:t.type,duration:e.callDurationCalculator_.getDuration(i,Ah),dataFreeze:e.badCaseDetector_.getDataFreezeDuration(i).dataFreeze,renderFreeze:e.badCaseDetector_.getRenderFreezeDuration(i).renderFreeze};ib.uploadEvent({log:"callStats-"+JSON.stringify(n),userId:e.userId_})})),this.badCaseDetector_.stop(),this.callDurationCalculator_.reset()}},{key:"enableSmallStream",value:(l=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isPublished()&&!this.isPublishing_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:xm})});case 2:if(!zb()){e.next=7;break}this.setIsEnableSmallStream(!0),this.log_.info("SmallStream successfully enabled"),e.next=8;break;case 7:throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Nm})});case 8:case"end":return e.stop()}}),e,this)}))),function(){return l.apply(this,arguments)})},{key:"disableSmallStream",value:(c=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isPublished()&&!this.isPublishing_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Lm})});case 2:this.setIsEnableSmallStream(!1),this.log_.info("SmallStream successfully disabled");case 4:case"end":return e.stop()}}),e,this)}))),function(){return c.apply(this,arguments)})},{key:"setSmallStreamProfile",value:function(e){var t=this;e&&e.framerate&&(e.frameRate=e.framerate),Object.keys(this.smallStreamConfig_).forEach((function(i){e[i]&&(t.smallStreamConfig_[i]=e[i])})),this.log_.info("setSmallStreamProfile: bitrate=".concat(this.smallStreamConfig_.bitrate,", frameRate=").concat(this.smallStreamConfig_.frameRate,", height=").concat(this.smallStreamConfig_.height,", width=").concat(this.smallStreamConfig_.width));var i=this.smallStreamConfig_,n=i.width,r=i.height,o=i.bitrate,a=i.frameRate;if(n<0||r<0||o<0||a<0)throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:$m})})}},{key:"setRemoteVideoStreamType",value:(a=r(regeneratorRuntime.mark((function e(t,i){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=i,e.next="big"===e.t0||"small"===e.t0?3:6;break;case 3:return e.next=5,this.changeVideoType(t,i);case 5:case 6:return e.abrupt("break",7);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"changeVideoType",value:(n=r(regeneratorRuntime.mark((function e(t,i){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof lw){e.next=2;break}throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Vm})});case 2:if(t.getConnection()){e.next=4;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Sm})});case 4:n=t.getUserId(),r={stream:t,options:{video:"big"===i,smallVideo:"small"===i},isSubscribing:!1,reSubscribeCount:10},this.changeBigSmallRecords_.set(n,r),this.log_.info("change video type: streamType=".concat(t.getType(),", set ").concat(i));case 9:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"checkSubscribeBigSmallVideo",value:(i=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s,c,l,d,u,h,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.isBigStreamSubscribed||t.isSmallStreamSubscribed){e.next=2;break}return e.abrupt("return");case 2:if(n=t.getUserId(),r=this.changeBigSmallRecords_.get(n)||{},o=t.getSubscribeState(),a=o.video,s=o.smallVideo,c=r.stream,l=r.options,d=r.isSubscribing,u=r.reSubscribeCount,!(l.video&&a||l.smallVideo&&s&&i)){e.next=8;break}return e.abrupt("return");case 8:if(!d){e.next=10;break}return e.abrupt("return");case 10:if(!(i&&t.isBigStreamSubscribed||t.isSmallStreamSubscribed)){e.next=29;break}if(e.prev=11,!(l&&c&&!d&&u>=1)){e.next=23;break}return this.log_.info("subscribe small video: userId=".concat(n)),r.isSubscribing=!0,r.reSubscribeCount=u-1,h={video:l.video,smallVideo:l.smallVideo},p=c.getConnection(),!i&&p.isSmallStreamSubscribed&&(h={video:!0,smallVideo:!1}),e.next=21,null==p?void 0:p.subscribe(c,h);case 21:r.isSubscribing=!1,this.log_.info("changeType ".concat(n," ").concat(l.smallVideo?"small":"big"," video success, count ").concat(11-u));case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(11),this.log_.info("resubscribe ".concat(n," ").concat(l.smallVideo?"small":"big"," video failed, count ").concat(11-u)),0===u&&(r.isSubscribing=!1);case 29:case"end":return e.stop()}}),e,this,[[11,25]])}))),function(e,t){return i.apply(this,arguments)})},{key:"setIsEnableSmallStream",value:function(e){this.isEnableSmallStream_=e}},{key:"getIsEnableSmallStream",value:function(){return this.isEnableSmallStream_}},{key:"smallStreamConfig",get:function(){return this.smallStreamConfig_}},{key:"isPublished",value:function(){return!!this.localStream_}},{key:"getUplinkConnection",value:function(){return this.uplinkConnection_}},{key:"getLocalStream",value:function(){return this.localStream_}},{key:"getMode",value:function(){return this.mode_}},{key:"getBadCaseDetector",value:function(){return this.badCaseDetector_}},{key:"getCallDurationCalculator",value:function(){return this.callDurationCalculator_}},{key:"getIsJoined",value:function(){return this.isJoined_}},{key:"getAllConnections",value:function(){var e=y(this.connections_.values());return this.uplinkConnection_&&e.push(this.uplinkConnection_),e}},{key:"isRelayMaybeFailed",value:function(){var e=this.getAllConnections();if(0===e.length)return!1;for(var t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}},{key:"getUseStringRoomId",value:function(){return this.useStringRoomId_}},{key:"checkConnectionsToReconnect",value:function(){var e=this;this.getAllConnections().forEach((function(t){if(!t.getIsReconnecting()){var i=t.getPeerConnection();i&&i.connectionState===Cp&&(e.log_.warn("[".concat(t.getUserId(),"] pc is closed but not reconnect")),t.startReconnection())}}))}},{key:"getEnableAutoPlayDialog",value:function(){return this.enableAutoPlayDialog_}}]),e}()).prototype,"join",[Qw,Xw],Object.getOwnPropertyDescriptor(uI.prototype,"join"),uI.prototype),C(uI.prototype,"leave",[Yw],Object.getOwnPropertyDescriptor(uI.prototype,"leave"),uI.prototype),C(uI.prototype,"publish",[eI,tI],Object.getOwnPropertyDescriptor(uI.prototype,"publish"),uI.prototype),C(uI.prototype,"unpublish",[iI,nI],Object.getOwnPropertyDescriptor(uI.prototype,"unpublish"),uI.prototype),C(uI.prototype,"subscribe",[rI],Object.getOwnPropertyDescriptor(uI.prototype,"subscribe"),uI.prototype),C(uI.prototype,"unsubscribe",[oI],Object.getOwnPropertyDescriptor(uI.prototype,"unsubscribe"),uI.prototype),C(uI.prototype,"switchRole",[aI,sI],Object.getOwnPropertyDescriptor(uI.prototype,"switchRole"),uI.prototype),C(uI.prototype,"startPublishCDNStream",[cI],Object.getOwnPropertyDescriptor(uI.prototype,"startPublishCDNStream"),uI.prototype),C(uI.prototype,"startMixTranscode",[lI],Object.getOwnPropertyDescriptor(uI.prototype,"startMixTranscode"),uI.prototype),C(uI.prototype,"setRemoteVideoStreamType",[dI],Object.getOwnPropertyDescriptor(uI.prototype,"setRemoteVideoStreamType"),uI.prototype),uI),fI=rS({retryFunction:function(){var e=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Vb()){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,mI(t);case 4:if(i=e.sent,sS.info("getUserMedia with constraints: "+JSON.stringify(i)),!i.audio){e.next=11;break}return e.next=9,DI.getMicrophones();case 9:n=e.sent,sS.info("microphones: ".concat(JSON.stringify(n)));case 11:if(!i.video){e.next=16;break}return e.next=14,DI.getCameras();case 14:r=e.sent,sS.info("cameras: ".concat(JSON.stringify(r)));case 16:return e.prev=16,e.next=19,navigator.mediaDevices.getUserMedia(i);case 19:return e.abrupt("return",e.sent);case 22:if(e.prev=22,e.t0=e.catch(16),"NotFoundError"!==e.t0.name){e.next=29;break}if(!r||0!==r.length){e.next=27;break}throw new fy({code:py.DEVICE_NOT_FOUND,message:Dg({key:wg})});case 27:if(!n||0!==n.length){e.next=29;break}throw new fy({code:py.DEVICE_NOT_FOUND,message:Dg({key:Cg})});case 29:throw new fy({code:py.INITIALIZE_FAILED,name:e.t0.name,message:e.t0.message,constraint:e.t0.constraint});case 30:case"end":return e.stop()}}),e,null,[[16,22]])})));return function(t){return e.apply(this,arguments)}}(),settings:{retries:3,timeout:500},onError:function(e,t,i){"NotReadableError"===e.name?t():i(e)},onRetrying:function(e){sS.warn("getUserMedia NotReadableError observed, retrying [".concat(e,"/3]"))}});function mI(e){return gI.apply(this,arguments)}function gI(){return(gI=r(regeneratorRuntime.mark((function e(i){var n,r,o,a,s,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression},i.audio){e.next=5;break}n=!1,e.next=15;break;case 5:if(tb(i.microphoneId)){e.next=9;break}n=t({deviceId:{exact:i.microphoneId},sampleRate:i.sampleRate,channelCount:i.channelCount},n),e.next=15;break;case 9:return n=t({sampleRate:i.sampleRate,channelCount:i.channelCount},n),e.next=12,DI.getMicrophones();case 12:r=e.sent,(o=r.filter((function(e){return e.deviceId.length>0}))).length>0&&(n.deviceId={exact:o[0].deviceId});case 15:return a={},s={ideal:i.width,max:i.width},c={ideal:i.height,max:i.height},a=!Fg(i.facingMode)&&i.video?{facingMode:i.facingMode,width:s,height:c,frameRate:i.frameRate}:!tb(i.cameraId)&&i.video?{deviceId:{exact:i.cameraId},width:s,height:c,frameRate:i.frameRate}:!!i.video&&(!!Fg(i.width)||{width:s,height:c,frameRate:i.frameRate}),e.abrupt("return",{audio:n,video:a});case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var vI=function(){var e=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c,l,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Vb()){e.next=2;break}return e.abrupt("return");case 2:if(i=null,!(mh&&gh<74||_h)){e.next=27;break}return n=SI(t),sS.info("getDisplayMedia with constraints: "+JSON.stringify(n)),e.next=8,navigator.mediaDevices.getDisplayMedia(n);case 8:if(r=e.sent,!t.screenAudio){e.next=14;break}return sS.warn("Your browser not support capture system audio"),e.abrupt("return",r);case 14:if(!t.audio){e.next=24;break}return o=_I(t),sS.info("getUserMedia with constraints: "+JSON.stringify(o)),e.next=19,navigator.mediaDevices.getUserMedia(o);case 19:return i=e.sent,r.addTrack(i.getAudioTracks()[0]),e.abrupt("return",r);case 24:return e.abrupt("return",r);case 25:e.next=53;break;case 27:if(!t.screenAudio){e.next=37;break}return t.audioConstraints={echoCancellation:!0,noiseSuppression:!0,sampleRate:44100},a=SI(t),sS.info("getDisplayMedia with constraints: "+JSON.stringify(a)),e.next=33,navigator.mediaDevices.getDisplayMedia(a);case 33:return s=e.sent,e.abrupt("return",s);case 37:return c=SI(t),sS.info("getDisplayMedia with constraints: "+JSON.stringify(c)),e.next=41,navigator.mediaDevices.getDisplayMedia(c);case 41:if(l=e.sent,!t.audio){e.next=52;break}return d=_I(t),sS.info("getUserMedia with constraints: "+JSON.stringify(d)),e.next=47,navigator.mediaDevices.getUserMedia(d);case 47:return i=e.sent,l.addTrack(i.getAudioTracks()[0]),e.abrupt("return",l);case 52:return e.abrupt("return",l);case 53:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function _I(e){var t={echoCancellation:e.echoCancellation,autoGainControl:e.autoGainControl,noiseSuppression:e.noiseSuppression,sampleRate:e.sampleRate,channelCount:e.channelCount};return Fg(e.microphoneId)||(t.deviceId={exact:e.microphoneId}),{audio:t,video:!1}}function SI(e){var t={},i={width:e.width,height:e.height,frameRate:e.frameRate};return Fg(e.screenSource)||(i.displaySurface=e.screenSource),t.video=i,Fg(e.audioConstraints)||(t.audio=e.audioConstraints),t}var yI=new Map;yI.set("120p",{width:160,height:120,frameRate:15,bitrate:200}),yI.set("180p",{width:320,height:180,frameRate:15,bitrate:350}),yI.set("240p",{width:320,height:240,frameRate:15,bitrate:400}),yI.set("360p",{width:640,height:360,frameRate:15,bitrate:800}),yI.set("480p",{width:640,height:480,frameRate:15,bitrate:900}),yI.set("720p",{width:1280,height:720,frameRate:15,bitrate:1500}),yI.set("1080p",{width:1920,height:1080,frameRate:15,bitrate:2e3}),yI.set("1440p",{width:2560,height:1440,frameRate:30,bitrate:4860}),yI.set("4K",{width:3840,height:2160,frameRate:30,bitrate:9e3});var bI=new Map;bI.set("480p",{width:640,height:480,frameRate:5,bitrate:900}),bI.set("480p_2",{width:640,height:480,frameRate:30,bitrate:1e3}),bI.set("720p",{width:1280,height:720,frameRate:5,bitrate:1200}),bI.set("720p_2",{width:1280,height:720,frameRate:30,bitrate:3e3}),bI.set("1080p",{width:1920,height:1080,frameRate:5,bitrate:1600}),bI.set("1080p_2",{width:1920,height:1080,frameRate:30,bitrate:4e3});var kI,TI,CI=new Map;CI.set("standard",{sampleRate:48e3,channelCount:1,bitrate:40}),CI.set("standard-stereo",{sampleRate:48e3,channelCount:2,bitrate:64}),CI.set("high",{sampleRate:48e3,channelCount:1,bitrate:128}),CI.set("high-stereo",{sampleRate:48e3,channelCount:2,bitrate:192});var wI,II,EI,RI=(kI=ow.apply(void 0,y(nw.LOCAL_STREAM.switchDevice)),C((TI=function(e){l(y,e);var n,a,c,u,h,p,f,m,v,S=g(y);function y(e){var i;o(this,y);var n=t(t({},e),{isRemote:!1,type:"local"});return(i=S.call(this,n)).name_=Cf,i.client_=null,i.video_=e.video,i.audio_=e.audio,i.cameraId_=e.cameraId,i.cameraGroupId_="",i.facingMode_=e.facingMode,i.microphoneId_=e.microphoneId,i.microphoneGroupId_="",i.videoSource_=e.videoSource,i.audioSource_=e.audioSource,i.screen_=e.screen,i.screenSource_=e.screenSource,i.screenAudio_=e.screenAudio,i.audioProfile_={echoCancellation:!!Fg(e.echoCancellation)||e.echoCancellation,autoGainControl:!!Fg(e.autoGainControl)||e.autoGainControl,noiseSuppression:!!Fg(e.noiseSuppression)||e.noiseSuppression,sampleRate:48e3,channelCount:1,bitrate:40},i.videoProfile_={width:640,height:480,frameRate:15,bitrate:900},i.screenProfile_={width:1920,height:1080,frameRate:5,bitrate:1600},i.videoBitrate_=i.screen_?1600:900,i.videoSetting_=null,i.muteState_={video:!1,audio:!1,auxVideo:!1},i.beautyStatus_=!1,i.recoverCaptureCount_=0,i.initState(),i.canvas_=null,i.canvasInterval_=-1,i.log_.info("stream created: "+i.id_),i}return s(y,[{key:"initState",value:function(){this.isAddingTrack_=!1,this.isRemovingTrack_=!1,this.setIsReadyToPublish(!1),this.setPublishState(mf)}},{key:"installEvents",value:function(){_(d(y.prototype),"installEvents",this).call(this),h_.on(F_,this.onStreamPublished,this),h_.on(q_,this.onVideoTrackStopped,this),h_.on(H_,this.onVideoTrackStopped,this),h_.on(Q_,this.onAudioTrackStopped,this),h_.on(Z_,this.onAudioTrackStopped,this)}},{key:"uninstallEvents",value:function(){_(d(y.prototype),"uninstallEvents",this).call(this),h_.off(F_,this.onStreamPublished,this),h_.off(q_,this.onVideoTrackStopped,this),h_.off(H_,this.onVideoTrackStopped,this),h_.off(Q_,this.onAudioTrackStopped,this),h_.off(Z_,this.onAudioTrackStopped,this)}},{key:"initialize",value:function(){var e=this;return new Promise((function(t,i){if(Bb())i(new fy({code:py.INVALID_OPERATION,message:Dg({key:vg})}));else{if(Fg(e.audio_)){var n=new MediaStream;return Fg(e.audioSource_)||(n.addTrack(e.audioSource_),e.updateAudioPlayingState(!0)),Fg(e.videoSource_)||(n.addTrack(e.videoSource_),e.updateVideoPlayingState(!0)),e.setMediaStream(n),ib.logSuccessEvent({userId:e.client_?e.client_.getUserId():e.userId_,eventType:Gp,kind:"custom"}),e.setIsReadyToPublish(!0),t()}e.screen_?(e.log_.info("initialize stream audio: "+e.audio_+" screenAudio: "+e.screenAudio_+" screen: "+e.screen_),vI({audio:e.audio_,screenAudio:e.screenAudio_,microphoneId:e.microphoneId_,screenSource:e.screenSource_,width:e.screenProfile_.width,height:e.screenProfile_.height,frameRate:e.screenProfile_.frameRate,sampleRate:e.audioProfile_.sampleRate,channelCount:e.audioProfile_.channelCount,autoGainControl:e.audioProfile_.autoGainControl,noiseSuppression:e.audioProfile_.noiseSuppression,echoCancellation:e.audioProfile_.echoCancellation}).then((function(i){e.setMediaStream(i),e.updateAudioPlayingState(e.audio_||e.screenAudio_),e.updateVideoPlayingState(!0);var n=e.getVideoTrack();return e.listenForScreenSharingStopped(n),e.setVideoContentHint(Gh),e.updateDeviceIdInUse(),e.setIsReadyToPublish(!0),e.log_.info(JSON.stringify(n.getSettings())),ib.logSuccessEvent({userId:e.client_?e.client_.getUserId():e.userId_,eventType:Gp,kind:"getDisplayMedia"}),t()})).catch((function(t){ib.logFailedEvent({userId:e.client_?e.client_.getUserId():e.userId_,eventType:Gp,kind:"getDisplayMedia",error:t}),e.log_.error("getDisplayMedia error observed "+t),i(t instanceof fy?t:new fy({code:py.INITIALIZE_FAILED,name:t.name,message:t.message}))}))):(h_.emit(U_,{stream:e,audio:e.audio_,video:e.video_}),e.log_.info("initialize stream audio: "+e.audio_+" video: "+e.video_),fI({audio:e.audio_,video:e.video_,facingMode:e.facingMode_,cameraId:e.cameraId_,microphoneId:e.microphoneId_,width:e.videoProfile_.width,height:e.videoProfile_.height,frameRate:e.videoProfile_.frameRate,sampleRate:e.audioProfile_.sampleRate,channelCount:e.audioProfile_.channelCount,autoGainControl:e.audioProfile_.autoGainControl,noiseSuppression:e.audioProfile_.noiseSuppression,echoCancellation:e.audioProfile_.echoCancellation}).then((function(i){h_.emit(j_,{stream:e,audio:e.audio_,video:e.video_}),e.setMediaStream(i);var n=e.getVideoTrack();return n&&(Jb&&(e.videoSetting_=n.getSettings()),Kb&&e.log_.info("video capabilities: "+JSON.stringify(n.getCapabilities()))),e.updateAudioPlayingState(e.audio_),e.updateVideoPlayingState(e.video_),e.updateDeviceIdInUse(),e.log_.info("gotStream hasAudio: "+e.hasAudio()+" hasVideo: "+e.hasVideo()),e.setIsReadyToPublish(!0),ib.logSuccessEvent({userId:e.client_?e.client_.getUserId():e.userId_,eventType:Gp,kind:"getUserMedia"}),t()})).catch((function(t){h_.emit(W_,{stream:e,audio:e.audio_,video:e.video_,error:t}),ib.logFailedEvent({userId:e.client_?e.client_.getUserId():e.userId_,eventType:Gp,kind:"getUserMedia",error:t}),e.log_.error("getUserMedia error observed "+t),i(t)})))}}))}},{key:"listenForScreenSharingStopped",value:function(e){var t=this;e.addEventListener("ended",(function(e){t.log_.info("screen sharing was stopped because the video track is ended"),t.emitter_.emit(vk)}))}},{key:"muteAudio",value:function(){var e=_(d(y.prototype),"muteAudio",this).call(this);return e&&(this.log_.info("localStream mute audio"),this.sendMutedFlag(Ph,!0)),e}},{key:"muteVideo",value:function(){var e=_(d(y.prototype),"muteVideo",this).call(this);return e&&(this.log_.info("localStream mute video"),this.sendMutedFlag(Ah,!0)),e}},{key:"unmuteAudio",value:function(){var e=_(d(y.prototype),"unmuteAudio",this).call(this);return e&&(this.log_.info("localStream unmute audio"),this.sendMutedFlag(Ph,!1)),e}},{key:"unmuteVideo",value:function(){var e=_(d(y.prototype),"unmuteVideo",this).call(this);return e&&(this.log_.info("localStream unmute video"),this.sendMutedFlag(Ah,!1)),e}},{key:"sendMutedFlag",value:function(e,t){this.setMuteState(e,t);var i=this.getConnection();if(i){i.sendMutedFlag(this.muteState_);var n=i.getUserId(),r=i.getTinyId(),o="".concat(t?Nh:$h," local ").concat(e," track");Xy(n,{eventId:e===Ph?t?Sy:by:t?yy:ky,eventDesc:o,timestamp:uc(),userId:n,tinyId:r})}}},{key:"setMuteState",value:function(e,t){this.muteState_[e]=t,this.log_.info("set ".concat(e," muted state: [").concat(t?"mute":"unmute","]"))}},{key:"setAudioProfile",value:function(e){var n;"object"===i(e)?n=e:void 0===(n=CI.get(e))&&(n=CI.get("standard")),this.log_.info("setAudioProfile: "+JSON.stringify(n)),this.audioProfile_=t(t({},this.audioProfile_),n)}},{key:"setVideoProfile",value:(v=r(regeneratorRuntime.mark((function e(i){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.connection_||$b()){e.next=2;break}throw new fy({code:py.NOT_SUPPORTED,message:Dg({key:Sg})});case 2:if($g(i)?n=t(t({},this.videoProfile_),i):Ug(i)&&(n=yI.get(i),Fg(n)&&(n=yI.get("480p"))),n&&n.width*n.height>921600&&Th&&(n.width=1280,n.height=720,this.log_.warn("reset to 1280 * 720 on iOS 13~14")),this.log_.info("setVideoProfile "+JSON.stringify(n)),!(r=this.getVideoTrack())){e.next=9;break}return e.next=9,r.applyConstraints(n);case 9:if(this.videoBitrate_===n.bitrate){e.next=14;break}if(!this.connection_){e.next=13;break}return e.next=13,this.connection_.setBandwidth(n.bitrate,Ah);case 13:this.videoBitrate_=n.bitrate;case 14:this.videoProfile_=n;case 15:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)})},{key:"getVideoBitrate",value:function(){return this.videoBitrate_}},{key:"getAudioBitrate",value:function(){return this.audioProfile_.bitrate}},{key:"setScreenProfile",value:function(e){var t=e;"object"!==i(e)&&void 0===(t=bI.get(e))&&(t=bI.get("1080p")),this.log_.info("setScreenProfile "+JSON.stringify(e)),this.screenProfile_=t,this.videoBitrate_=t.bitrate}},{key:"getVideoProfile",value:function(){return this.screen_?this.screenProfile_:this.videoProfile_}},{key:"getAudioProfile",value:function(){return this.audioProfile_}},{key:"setVideoContentHint",value:function(e){var t=this.getVideoTrack();t&&"contentHint"in t&&(this.log_.info("set video track contentHint to: "+e),t.contentHint=e,t.contentHint!==e&&this.log_.warn("Invalid video track contentHint: "+e))}},{key:"switchDevice",value:(m=r(regeneratorRuntime.mark((function e(t,i){var n,r,o,a,s,c,l,d,u,h,p,f,m,g,v,_,S;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=t===Ph)){e.next=8;break}if(this.microphoneId_!==i){e.next=4;break}return e.abrupt("return");case 4:this.microphoneId_=i,this.audio_=!0,e.next=12;break;case 8:if(this.cameraId_!==i){e.next=10;break}return e.abrupt("return");case 10:i===xh||i===Lh?this.facingMode_=i:this.cameraId_=i,this.video_=!0;case 12:if(this.getMediaStream()){e.next=14;break}return e.abrupt("return");case 14:return this.setIsReadyToPublish(!1),this.log_.info("switchDevice "+t+" to: "+i),n||((r=this.getVideoTrack())&&r.stop(),oh&&(o=this.getAudioTrack())&&(this.log_.info("stop audio track first in huawei env"),o.stop())),n&&(a=this.getAudioTrack(),s=this.getMicrophoneTrackMixed(),a&&a.stop(),s&&s.stop()),e.next=20,fI({audio:this.audio_&&t===Ph||oh,video:this.video_&&t===Ah,facingMode:i===xh||i===Lh?i:void 0,cameraId:this.cameraId_,microphoneId:this.microphoneId_,width:this.videoProfile_.width,height:this.videoProfile_.height,frameRate:this.videoProfile_.frameRate,sampleRate:this.audioProfile_.sampleRate,channelCount:this.audioProfile_.channelCount});case 20:if(c=e.sent,l=null,!n){e.next=27;break}(d=c.getAudioTracks()[0])&&this.isAudioTrackMixed()?(u=this.getAudioTrack(),h=DI.AudioMixerPlugin.getAudioTrackMap(),p=DI.AudioMixerPlugin.mix({targetTrack:d,sourceList:h.get(u.id).sourceList,trackList:h.get(u.id).trackList}),l=p):l=d,e.next=36;break;case 27:if(!(l=c.getVideoTracks()[0])||!this.isVideoTrackBeautified()){e.next=32;break}return e.next=31,this.generateBeautyTrack(l);case 31:l=e.sent;case 32:if(!(f=c.getAudioTracks()[0])||!oh){e.next=36;break}return e.next=36,this.replaceTrack_(f);case 36:return e.next=38,this.replaceTrack_(l);case 38:this.updateDeviceIdInUse(),(m=this.getConnection())&&(g=m.getUserId(),v=m.getTinyId(),_=Iy,S="switch camera",n&&(_=Ey,S="switch microphone"),Xy(g,{eventId:_,eventDesc:S,timestamp:uc(),userId:g,tinyId:v})),this.log_.info("switch ".concat(n?"microphone":"camera"," success ")),this.setIsReadyToPublish(!0);case 43:case"end":return e.stop()}}),e,this)}))),function(e,t){return m.apply(this,arguments)})},{key:"addTrack",value:(f=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isAddingTrack_){e.next=2;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Wm})});case 2:if(!this.isRemovingTrack_){e.next=4;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Hm})});case 4:if(this.publishState_!==gf){e.next=6;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Gm})});case 6:if(i=this.getMediaStream()){e.next=9;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:zm})});case 9:if(!(t.kind===Ph&&i.getAudioTracks().length>0||t.kind===Ah&&i.getVideoTracks().length>0)){e.next=11;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Jm})});case 11:if(t.kind===Ah&&Jb&&(n=t.getSettings(),!this.videoSetting_||n.width===this.videoSetting_.width&&n.height===this.videoSetting_.height||this.log_.warn("video resolution of the track (".concat(n.width," x ").concat(n.height,") shall be kept the same as the previous: ").concat(this.videoSetting_.width," x ").concat(this.videoSetting_.height,". It may cause abnormal Cloud Recording."))),e.prev=12,this.isAddingTrack_=!0,this.keepMuteState(t),i.addTrack(t),!(r=this.getConnection())){e.next=20;break}return e.next=20,r.addTrack(t);case 20:t.kind===Ph?(this.audio_=!0,this.updateAudioPlayingState(!0)):(this.video_=!0,this.updateVideoPlayingState(!0)),this.isAddingTrack_=!1,e.next=29;break;case 24:throw e.prev=24,e.t0=e.catch(12),i.removeTrack(t),this.isAddingTrack_=!1,e.t0;case 29:case"end":return e.stop()}}),e,this,[[12,24]])}))),function(e){return f.apply(this,arguments)})},{key:"removeTrack",value:(p=r(regeneratorRuntime.mark((function e(t){var i,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.kind!==Ph){e.next=2;break}throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Km})});case 2:if(!this.isAddingTrack_){e.next=4;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:qm})});case 4:if(!this.isRemovingTrack_){e.next=6;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Zm})});case 6:if(this.publishState_!==gf){e.next=8;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Qm})});case 8:if(i=this.getMediaStream()){e.next=11;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:zm})});case 11:if(-1!==i.getTracks().indexOf(t)){e.next=13;break}throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:Xm})});case 13:if(1!==i.getTracks().length){e.next=15;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Ym})});case 15:if(e.prev=15,this.isRemovingTrack_=!0,!(n=this.getConnection())){e.next=21;break}return e.next=21,n.removeTrack(t);case 21:i.removeTrack(t),t.kind===Ph?(this.audio_=!1,this.updateAudioPlayingState(!1)):(this.video_=!1,this.updateVideoPlayingState(!1)),this.isRemovingTrack_=!1,e.next=30;break;case 26:throw e.prev=26,e.t0=e.catch(15),this.isRemovingTrack_=!1,e.t0;case 30:case"end":return e.stop()}}),e,this,[[15,26]])}))),function(e){return p.apply(this,arguments)})},{key:"replaceTrack",value:(h=r(regeneratorRuntime.mark((function e(t){var i,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this.getMediaStream()){e.next=3;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:jm})});case 3:if(this.publishState_!==gf){e.next=5;break}throw new fy({code:py.INVALID_OPERATION,message:Dg({key:Um})});case 5:if(!(t.kind===Ph&&i.getAudioTracks().length<=0||t.kind===Ah&&i.getVideoTracks().length<=0)){e.next=7;break}throw new fy({code:py.INVALID_PARAMETER,message:Dg({key:eg,data:t})});case 7:if(t.kind===Ah&&Jb&&(n=t.getSettings(),!this.videoSetting_||n.width===this.videoSetting_.width&&n.height===this.videoSetting_.height||this.log_.warn("video resolution of the track (".concat(n.width," x ").concat(n.height,") shall be kept the same as the previous: ").concat(this.videoSetting_.width," x ").concat(this.videoSetting_.height,". It may cause abnormal Cloud Recording."))),this.keepMuteState(t),t.kind===Ph?(i.removeTrack(i.getAudioTracks()[0]),i.addTrack(t),_(d(y.prototype),"restartAudio",this).call(this)):(i.removeTrack(i.getVideoTracks()[0]),i.addTrack(t),_(d(y.prototype),"restartVideo",this).call(this)),!(r=this.getConnection())){e.next=14;break}return e.next=14,r.replaceTrack(t);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return h.apply(this,arguments)})},{key:"updateStream",value:(u=r(regeneratorRuntime.mark((function e(t){var i,n,r,o,a,s,c,l,d,u,h,p,f,m,g;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mediaStream_){e.next=2;break}return e.abrupt("return");case 2:return this.log_.info("updateStream() try to recover local stream"),e.prev=3,e.next=6,DI.getCameras();case 6:return i=e.sent,e.next=9,DI.getMicrophones();case 9:if(n=e.sent,r=this.audio_&&t.audio,(o=this.video_&&t.video)&&0===i.length&&(o=!1,this.log_.info("updateStream() video flag is true, but no camera detected, set video to false")),r&&0===n.length&&(r=!1,this.log_.info("updateStream() audio flag is true, but no microphone detected, set audio to false")),!1!==r||!1!==o){e.next=17;break}return this.log_.info("updateStream() both audio and video are false, recover stream aborted"),e.abrupt("return");case 17:return a=t&&i.findIndex((function(e){return e.deviceId===t.cameraId}))>=0,s=t&&n.findIndex((function(e){return e.deviceId===t.microphoneId}))>=0,e.next=21,fI({audio:r,video:o,cameraId:a?t.cameraId:void 0,microphoneId:s?t.microphoneId:void 0,facingMode:this.facingMode_,width:this.videoProfile_.width,height:this.videoProfile_.height,frameRate:this.videoProfile_.frameRate,sampleRate:this.audioProfile_.sampleRate,channelCount:this.audioProfile_.channelCount});case 21:c=e.sent,l=c.getTracks(),d=0;case 24:if(!(d<l.length)){e.next=49;break}if((u=l[d]).kind!==Ph||!this.isAudioTrackMixed()){e.next=37;break}if(h=this.getAudioTrack(),p=DI.AudioMixerPlugin.getAudioTrackMap(),(f=p.get(h.id)).hasMicrophone){e.next=33;break}return u.stop(),e.abrupt("continue",46);case 33:return m=DI.AudioMixerPlugin.mix({targetTrack:u,sourceList:f.sourceList,trackList:f.trackList}),e.next=36,this.replaceTrack_(m);case 36:return e.abrupt("continue",46);case 37:if(u.kind!==Ah||!this.isVideoTrackBeautified()){e.next=44;break}return e.next=40,this.generateBeautyTrack(u);case 40:return g=e.sent,e.next=43,this.replaceTrack_(g);case 43:return e.abrupt("continue",46);case 44:return e.next=46,this.replaceTrack_(u);case 46:d++,e.next=24;break;case 49:this.updateDeviceIdInUse(),ib.logSuccessEvent({userId:this.client_?this.client_.getUserId():this.userId_,eventType:Kp}),this.log_.info("updateStream() recover local stream successfully"),e.next=59;break;case 54:e.prev=54,e.t0=e.catch(3),ib.logFailedEvent({userId:this.client_?this.client_.getUserId():this.userId_,eventType:Kp,error:e.t0}),this.log_.error("updateStream() failed to recover local stream, "+e.t0),this.emitter_.emit(Sk,new fy({code:py.DEVICE_AUTO_RECOVER_FAILED,message:e.t0.message}));case 59:case"end":return e.stop()}}),e,this,[[3,54]])}))),function(e){return u.apply(this,arguments)})},{key:"replaceTrack_",value:(c=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=this.mediaStream_.getAudioTracks(),n=this.mediaStream_.getVideoTracks(),!(t.kind===Ph&&i.length<=0||t.kind===Ah&&n.length<=0)){e.next=5;break}return this.log_.info("there is no previous ".concat(t.kind," track, replacement ignored")),e.abrupt("return");case 5:if(this.keepMuteState(t),t.kind===Ph?(this.mediaStream_.removeTrack(i[0]),this.mediaStream_.addTrack(t),_(d(y.prototype),"restartAudio",this).call(this)):(Jb&&(r=t.getSettings(),!this.videoSetting_||r.width===this.videoSetting_.width&&r.height===this.videoSetting_.height||this.log_.warn("the resolution of video track to be replaced (".concat(r.width," x ").concat(r.height,") is different from the previous video settings (").concat(this.videoSetting_.width," x ").concat(this.videoSetting_.height,"). It may cause a cloud recording exception"))),this.mediaStream_.removeTrack(n[0]),this.mediaStream_.addTrack(t),_(d(y.prototype),"restartVideo",this).call(this)),!(o=this.getConnection())){e.next=11;break}return e.next=11,o.replaceTrack(t);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"updateDeviceIdInUse",value:function(){var e=this;if(!this.mediaStream_)return this.cameraId_="",this.cameraGroupId_="",this.microphoneId_="",void(this.microphoneGroupId_="");Jb&&this.mediaStream_.getTracks().forEach((function(t){if(t.kind===Ph&&e.isAudioTrackMixed()){var i=e.getMicrophoneTrackMixed();if(i){var n=i.getSettings(),r=n.deviceId,o=n.groupId;r&&(e.microphoneId_=r,e.microphoneGroupId_=o)}}else if(t.kind===Ah&&e.isVideoTrackBeautified()){var a=e.getBeautyOriginTrack();if(a){var s=a.getSettings(),c=s.deviceId,l=s.groupId;c&&(e.cameraId_=c,e.cameraGroupId_=l)}}else{var d=t.getSettings(),u=d.deviceId,h=d.groupId;u&&(t.kind===Ph?(e.microphoneId_=u,e.microphoneGroupId_=h):t.kind!==Ah||e.screen_||(e.cameraId_=u,e.cameraGroupId_=h))}}));var t=this.mediaStream_.getAudioTracks(),i=this.mediaStream_.getVideoTracks();t&&0===t.length&&(this.microphoneId_="",this.microphoneGroupId_=""),i&&0===i.length&&(this.cameraId_="",this.cameraGroupId_="")}},{key:"isAudioTrackMixed",value:function(){if(DI.AudioMixerPlugin){var e=DI.AudioMixerPlugin.getAudioTrackMap(),t=this.getAudioTrack();if(e&&t&&e.has(t.id))return!0}return!1}},{key:"getMicrophoneTrackMixed",value:function(){if(DI.AudioMixerPlugin){var e=DI.AudioMixerPlugin.getAudioTrackMap(),t=this.getAudioTrack();if(e&&t&&e.has(t.id)){var i=e.get(t.id);return i.hasMicrophone?i.microphoneTrack:null}}return null}},{key:"isVideoTrackBeautified",value:function(){if(DI.beautyTrackMap){var e=DI.beautyTrackMap,t=this.getVideoTrack();if(t&&e.has(t.id))return!0}return!1}},{key:"getBeautyOriginTrack",value:function(){if(DI.beautyTrackMap){var e=DI.beautyTrackMap,t=this.getVideoTrack();if(t&&e.has(t.id)){var i=e.get(t.id);if(i.originTrack)return i.originTrack}}return null}},{key:"generateBeautyTrack",value:(a=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=null,n=this.getVideoTrack(),r=DI.beautyTrackMap.get(n.id),o=r.param,r.type){e.next=8;break}i=r.pluginInstance.generateBeautyTrack(t),e.next=22;break;case 8:e.t0=r.type,e.next="beauty"===e.t0?11:"virtual"===e.t0?13:"mixed"===e.t0?17:21;break;case 11:return i=r.pluginInstance.generateBeautyTrack(t),e.abrupt("break",22);case 13:return e.next=15,r.pluginInstance.generateVirtualTrack({videoTrack:t,type:o.type,img:o.img});case 15:case 19:return i=e.sent,e.abrupt("break",22);case 17:return e.next=19,r.pluginInstance.generateMixedTrack({videoTrack:t,type:o.type,img:o.img});case 21:return e.abrupt("break",22);case 22:return r.pluginInstance.deleteSource(n.id),this.log_.info("regenerate beauty track, track id = ".concat(t.id)),e.abrupt("return",i);case 25:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"getScreen",value:function(){return this.screen_}},{key:"hasScreenTrack",value:function(){if(this.screen_)return!0;var e=this.getVideoTrack();return!!e&&(e.contentHint===Gh||e.contentHint===zh)}},{key:"getVideo",value:function(){return this.video_}},{key:"getAudio",value:function(){return this.audio_}},{key:"getCameraId",value:function(){return this.cameraId_}},{key:"getMicrophoneId",value:function(){return this.microphoneId_}},{key:"getMicrophoneGroupId",value:function(){return this.microphoneGroupId_}},{key:"getIsReadyToPublish",value:function(){return this.isReadyToPublish_}},{key:"setIsReadyToPublish",value:function(e){this.isReadyToPublish_=e}},{key:"setPublishState",value:function(e){this.publishState_=e}},{key:"setBeautyStatus",value:function(e){this.beautyStatus_=!!e}},{key:"getBeautyStatus",value:function(){return this.beautyStatus_}},{key:"onStreamPublished",value:function(e){var t=e.localStream,i=e.client;if(t===this){this.client_=i,this.log_.setUserId(i.getUserId()),this.log_.setSdkAppId(i.getSDKAppId());var n=this.getAudioTrack(),r=this.getVideoTrack();if(n){var o=!n.enabled;this.setMuteState(Ph,o)}if(r){var a=!r.enabled;this.setMuteState(Ah,a)}this.connection_&&this.connection_.sendMutedFlag(this.muteState_)}}},{key:"keepMuteState",value:function(e){e instanceof MediaStreamTrack&&this.muteState_[e.kind]&&(e.enabled=!1,this.log_.warn("prev ".concat(e.kind," track is muted, keep mute state")))}},{key:"onVideoTrackStopped",value:(n=r(regeneratorRuntime.mark((function e(t){var i,n,r,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.stream,n=t.type,!(i!==this||!this.video_||!this.cameraId_||this.recoverCaptureCount_>10||(wu||Iu)&&n===Nh)){e.next=3;break}return e.abrupt("return");case 3:if(!(r=this.getVideoTrack())){e.next=11;break}return o=r.getSettings().deviceId,e.next=8,DI.getCameras();case 8:if(!(e.sent.findIndex((function(e){return e.deviceId===o}))<0)){e.next=11;break}return e.abrupt("return");case 11:this.recoverCaptureCount_+=1,ib.uploadEvent({log:"stat-local-video-".concat(n),userId:this.userId_}),this.updateStream({audio:!1,video:!0,cameraId:this.cameraId_});case 14:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"onAudioTrackStopped",value:function(e){var t=e.stream,i=e.type;t!==this||!this.audio_||!this.microphoneId_||this.recoverCaptureCount_>10||(wu||Iu)&&i===Nh||(this.recoverCaptureCount_+=1,ib.uploadEvent({log:"stat-local-audio-".concat(i),userId:this.userId_}),this.updateStream({audio:!0,video:!1,microphoneId:this.microphoneId_}))}},{key:"setAudioVolume",value:function(e){_(d(y.prototype),"setAudioVolume",this).call(this,e)}},{key:"clearCanvas",value:function(){this.canvasInterval_&&(yb.clearInterval(this.canvasInterval_),this.canvasInterval_=-1,this.canvas_=null)}},{key:"genCanvasTrack",value:function(e){var t=this;this.log_.info("gen canvas track");var i=e.getSettings(),n=i.width,r=i.height,o=i.frameRate;this.canvas_=document.createElement("canvas");var a=this.canvas_.getContext("2d");return this.canvas_.width=n,this.canvas_.height=r,this.canvasInterval_=yb.setInterval((function(){if(t.hasVideo()){var e=t.getVideoTrack().getSettings();e.width===t.canvas_.width&&e.height===t.canvas_.height||(t.canvas_.width=e.width,t.canvas_.height=e.height)}t.videoPlayer_&&t.videoPlayer_.element_&&a.drawImage(t.videoPlayer_.element_,0,0,t.canvas_.width,t.canvas_.height)}),Math.max(66,Math.floor(1e3/o))),this.canvas_.captureStream().getVideoTracks()[0]}}]),y}(cw)).prototype,"switchDevice",[kI],Object.getOwnPropertyDescriptor(TI.prototype,"switchDevice"),TI.prototype),TI),MI=0,PI=0,AI=(wI=rw(nw.TRTC.createClient),II=rw(nw.TRTC.createStream),C((EI=function(){function e(){o(this,e),this.name_=kf,this.VERSION="4.12.5",this.Logger={loggerManager:sS,LogLevel:{TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,NONE:5},setLogLevel:function(e){sS.setLogLevel(e),Xg()&&e<=1&&Ag()},enableUploadLog:function(){sS.enableUploadLog()},disableUploadLog:function(){sS.warn("disableUploadLog"),sS.disableUploadLog()}}}var i,n,a,c,l;return s(e,[{key:"checkSystemRequirements",value:(l=r(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Pb();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(){return l.apply(this,arguments)})},{key:"isScreenShareSupported",value:function(){return Db()}},{key:"isSmallStreamSupported",value:function(){return zb()}},{key:"getDevices",value:(c=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Bb()&&!Vb()){e.next=2;break}return e.abrupt("return",[]);case 2:return e.next=4,navigator.mediaDevices.enumerateDevices();case 4:return t=e.sent,e.abrupt("return",t.filter((function(e){return e.kind!==Wh||"communications"!=e.deviceId})).map((function(e,t){var i=e.label;e.label||(i=e.kind+"_"+t);var n={label:i,deviceId:e.deviceId,kind:e.kind};return e.groupId&&(n.groupId=e.groupId),n})));case 6:case"end":return e.stop()}}),e)}))),function(){return c.apply(this,arguments)})},{key:"getCameras",value:(a=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Bb()&&!Vb()){e.next=2;break}return e.abrupt("return",[]);case 2:return e.next=4,navigator.mediaDevices.enumerateDevices();case 4:return t=e.sent,e.abrupt("return",t.filter((function(e){return e.kind===Hh})).map((function(e,t){var i=e.label;e.label||(i="camera_"+t);var n={label:i,deviceId:e.deviceId,kind:e.kind};return e.groupId&&(n.groupId=e.groupId),n})));case 6:case"end":return e.stop()}}),e)}))),function(){return a.apply(this,arguments)})},{key:"getMicrophones",value:(n=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Bb()&&!Vb()){e.next=2;break}return e.abrupt("return",[]);case 2:return e.next=4,navigator.mediaDevices.enumerateDevices();case 4:return t=e.sent,e.abrupt("return",t.filter((function(e){return e.kind===Wh&&"communications"!==e.deviceId})).map((function(e,t){var i=e.label;e.label||(i="microphone_"+t);var n={label:i,deviceId:e.deviceId,kind:e.kind};return e.groupId&&(n.groupId=e.groupId),n})));case 6:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})},{key:"getSpeakers",value:(i=r(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Bb()&&!Vb()){e.next=2;break}return e.abrupt("return",[]);case 2:return e.next=4,navigator.mediaDevices.enumerateDevices();case 4:return t=e.sent,e.abrupt("return",t.filter((function(e){return"audiooutput"===e.kind})).map((function(e,t){var i=e.label;e.label||(i="speaker_"+t);var n={label:i,deviceId:e.deviceId,kind:e.kind};return e.groupId&&(n.groupId=e.groupId),n})));case 6:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)})},{key:"createClient",value:function(e){cS&&(cS=!1,sS.getLogLevel()!=DI.Logger.LogLevel.NONE&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info("* API Document: "+"".concat(Af,"index.html")),console.info("* Changelog: https://cloud.tencent.com/document/product/647/38958"),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),sS.info("TRTC Web SDK Version: 4.12.5"),sS.info("UserAgent: "+navigator.userAgent),sS.info("URL of current page: "+location.href));var i={version:this.VERSION},n=new pI(t(t(t({},i),e),{},{seq:++MI}));return h_.emit(I_,{client:n}),n}},{key:"createStream",value:function(e){return new RI(t(t({},e),{},{seq:++PI}))}}]),e}()).prototype,"createClient",[wI],Object.getOwnPropertyDescriptor(EI.prototype,"createClient"),EI.prototype),C(EI.prototype,"createStream",[II],Object.getOwnPropertyDescriptor(EI.prototype,"createStream"),EI.prototype),EI);Bb();var DI=new AI;return DI}()})),TRTC=trtc,RTCType;function S4(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function uuid(){return(S4()+S4()+"-"+S4()+"-4"+S4().substr(0,3)+"-"+S4()+"-"+S4()+S4()+S4()).toLowerCase()}exports.RTCType=void 0,RTCType=exports.RTCType||(exports.RTCType={}),RTCType.RealseeBrowserRTC="RealseeBrowserRTC",RTCType.RealseeVRWebViewRTC="RealseeVRWebViewRTC",RTCType.RealseeBrowserChimeRTC="RealseeBrowserChimeRTC";class BrowserRTC extends CoreRTC{constructor(e){super(),this.type=exports.RTCType.RealseeBrowserRTC,this.joined=!1,this.micro=!1,this.voiceId="",this._getVoiceSign=()=>{throw new Error("方法 getVoiceSign 未实现")},this.$dom=document.createElement("div"),this._trtc={client:null,stream:null},this.join=async e=>{var t;this.emit("joinWillStart");const i=await this._getVoiceSign({voiceId:e.voiceId,roomId:e.roomId,userId:e.userId});this._trtc.client=TRTC.createClient({mode:"rtc",...i}),null===(t=this._trtc.client)||void 0===t||t.enableAudioVolumeEvaluation(),this._registerRtcEvent();let n=await new Promise((t=>{var i;null===(i=this._trtc.client)||void 0===i||i.join({roomId:Number(e.voiceId)}).then((()=>t(!0))).catch((()=>t(!1)))}));return this.joined=n,!!n&&(this._trtc.stream=TRTC.createStream({userId:i.userId,audio:!0,video:!1}),n=await new Promise((e=>{var t;null===(t=this._trtc.stream)||void 0===t||t.initialize().then((()=>e(!0))).catch((()=>e(!1)))})),n=await new Promise((e=>{var t;null===(t=this._trtc.client)||void 0===t||t.publish(this._trtc.stream).then((()=>e(!0))).catch((()=>e(!1)))})),this.joined=n,this.joined&&this.emit("joined"),n)},this._handleStreamAdded=e=>{var t;const i=e.stream;console.log("远端流增加: "+i.getId()),null===(t=this._trtc.client)||void 0===t||t.subscribe(i)},this._handleStreamSubscribed=e=>{const t=e.stream;console.log("远端流订阅成功:"+t.getId());const i=`rs-rtc-remote_stream-${t.getId()}`,n=document.createElement("div");n.id=i,this.$dom.appendChild(n),t.play(i)},this._getVoiceSign=e.getVoiceSign,this._initParentDom()}_initParentDom(){this.$dom.id=`rs-rtc-${uuid()}`,this.$dom.style.display="none",document.body.appendChild(this.$dom)}quit(){return new Promise((async e=>{var t,i;this.joined=!1,this._trtc.stream&&(await(null===(t=this._trtc.client)||void 0===t?void 0:t.unpublish(this._trtc.stream)),this._trtc.stream.stop(),this._trtc.stream.close(),this._trtc.stream=null),null===(i=this._trtc.client)||void 0===i||i.leave().then((()=>this._trtc.client=null)).then((()=>e(!0))).catch((()=>e(!1)))}))}detectMicro(){return new Promise((e=>{const t={audio:!0,video:!1};try{navigator.mediaDevices.getUserMedia(t).then((()=>e(!0))).catch((()=>e(!1)))}catch(t){console.error(t),e(!1)}}))}toggleMicro(e){var t,i,n,r;return Promise.resolve((e?null===(i=null===(t=this._trtc)||void 0===t?void 0:t.stream)||void 0===i?void 0:i.unmuteAudio():null===(r=null===(n=this._trtc)||void 0===n?void 0:n.stream)||void 0===r?void 0:r.muteAudio())||!1)}shock(){throw new Error("Method not implemented.")}_registerRtcEvent(){var e,t,i,n;null===(e=this._trtc.client)||void 0===e||e.on("stream-added",this._handleStreamAdded),null===(t=this._trtc.client)||void 0===t||t.on("stream-subscribed",this._handleStreamSubscribed),null===(i=this._trtc.client)||void 0===i||i.on("audio-volume",(e=>this.emit("userVolumes",[{userId:e.userId,audioVolume:e.audioVolume}]))),null===(n=this._trtc.client)||void 0===n||n.on("error",(e=>this.emit("error",e)))}}class DefaultVideoStreamIdSet{constructor(e){this.ids=new Set(e)}add(e){this.ids.add(e)}array(){return Array.from(this.ids.values()).sort(((e,t)=>e-t))}contain(e){return this.ids.has(e)}forEach(e){this.ids.forEach(e)}empty(){return 0===this.ids.size}size(){return this.ids.size}equal(e){if(!e)return 0===this.ids.size;const t=this.array(),i=e.array();if(t.length!==i.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==i[e])return!1;return!0}clone(){return new DefaultVideoStreamIdSet(this.array())}remove(e){this.ids.delete(e)}toJSON(){return this.array()}truncate(e){const t=this.array();return new DefaultVideoStreamIdSet(t.splice(0,e))}}var _default$2Q=DefaultVideoStreamIdSet,DefaultVideoStreamIdSet_1$1=Object.defineProperty({default:_default$2Q},"__esModule",{value:!0}),DefaultVideoStreamIdSet_1=DefaultVideoStreamIdSet_1$1;class AllHighestVideoBandwidthPolicy{constructor(e){this.selfAttendeeId=e,this.reset()}reset(){this.optimalReceiveSet=new DefaultVideoStreamIdSet_1.default,this.subscribedReceiveSet=new DefaultVideoStreamIdSet_1.default,this.videoSources=void 0}updateIndex(e){this.videoIndex=e,this.optimalReceiveSet=this.calculateOptimalReceiveSet(e)}updateMetrics(e){}wantsResubscribe(){return!this.subscribedReceiveSet.equal(this.optimalReceiveSet)}chooseSubscriptions(){return this.subscribedReceiveSet=this.optimalReceiveSet.clone(),this.subscribedReceiveSet.clone()}chooseRemoteVideoSources(e){this.videoSources=e,this.optimalReceiveSet=this.calculateOptimalReceiveSet(this.videoIndex).clone()}calculateOptimalReceiveSet(e){const t=new DefaultVideoStreamIdSet_1.default;if(!this.videoIndex||this.videoIndex.allStreams().empty())return t;const i=e.highestQualityStreamFromEachGroupExcludingSelf(this.selfAttendeeId);if(void 0===this.videoSources)return i;const n=this.videoIndex.remoteStreamDescriptions(),r=new Map;for(const e of n)i.contain(e.streamId)&&r.set(e.attendeeId,e.streamId);for(const e of this.videoSources){const i=e.attendee.attendeeId;r.has(i)&&t.add(r.get(i))}return t}}var _default$2P=AllHighestVideoBandwidthPolicy,AllHighestVideoBandwidthPolicy_1$1=Object.defineProperty({default:_default$2P},"__esModule",{value:!0});class ApplicationMetadata{constructor(e,t){this.appName=e,this.appVersion=t}static create(e,t){const i=/^[a-zA-Z0-9]+[a-zA-Z0-9_-]*[a-zA-Z0-9]+$/g;if(!e||e.length>32)throw new Error("appName should be a valid string and 1 to 32 characters in length");if(!i.test(e))throw new Error(`appName must satisfy ${i} regular expression`);if(!t||t.length>32)throw new Error("appVersion should be a valid string and 1 to 32 characters in length");if(!/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/gm.test(t))throw new Error("appVersion must satisfy Semantic Versioning format");return new ApplicationMetadata(e,t)}}var _default$2O=ApplicationMetadata,ApplicationMetadata_1$1=Object.defineProperty({default:_default$2O},"__esModule",{value:!0});class TimeoutScheduler{constructor(e){this.timeoutMs=e,this.timer=null}start(e){this.stop(),this.timer=setTimeout((()=>{clearTimeout(this.timer),e()}),this.timeoutMs)}stop(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)}}var _default$2N=TimeoutScheduler,TimeoutScheduler_1$1=Object.defineProperty({default:_default$2N},"__esModule",{value:!0}),TimeoutScheduler_1=TimeoutScheduler_1$1;class AsyncScheduler extends TimeoutScheduler_1.default{constructor(){super(0)}static nextTick(e){setTimeout(e,0)}}var _default$2M=AsyncScheduler,AsyncScheduler_1$1=Object.defineProperty({default:_default$2M},"__esModule",{value:!0}),VideoLogEvent_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.VideoLogEvent=void 0,function(e){e[e.InputAttached=0]="InputAttached",e[e.SendingFailed=1]="SendingFailed",e[e.SendingSuccess=2]="SendingSuccess"}(i=t.VideoLogEvent||(t.VideoLogEvent={})),t.default=i})),LogLevel_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevel=void 0,function(e){e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.OFF=4]="OFF"}(i=t.LogLevel||(t.LogLevel={})),t.default=i})),LogLevel_1=LogLevel_1$1,AsyncScheduler_1=AsyncScheduler_1$1;class OnceTask{constructor(e,t,i){this.logger=e,this.task=t,this.dependencies=i,this.canceled=!1}name(){return`${this.task.name()} (once)`}cancel(){if(!this.canceled){if(this.dependencies)for(const e of this.dependencies)e.cancel();this.logger.info(`Canceling ${this.name()}`),AsyncScheduler_1.default.nextTick((()=>this.task.cancel())),this.canceled=!0,this.cancelPromise&&AsyncScheduler_1.default.nextTick((()=>this.cancelPromise(new Error(`canceling ${this.name()}`))))}}logDependencies(){if(this.logger.getLogLevel()>LogLevel_1.default.INFO)return;if(!this.dependencies)return;const e=this.dependencies.filter((e=>e)).map((e=>e.name())).join(", ");this.logger.info(`${this.task.name()} waiting for dependencies: ${e}`)}run(){if(this.promise)return this.promise;const e=this.dependencies?Promise.all(this.dependencies.map((e=>null==e?void 0:e.run()))):Promise.resolve();return this.logDependencies(),this.ongoing=e.then((()=>this.task.run())),this.promise=new Promise(((e,t)=>{this.cancelPromise=t,this.ongoing.then(e).catch(t)}))}setParent(e){this.task.setParent(e)}}var _default$2L=OnceTask,OnceTask_1$1=Object.defineProperty({default:_default$2L},"__esModule",{value:!0}),TaskStatus;!function(e){e.IDLE="IDLE",e.RUNNING="RUNNING",e.CANCELED="CANCELED",e.FINISHED="FINISHED"}(TaskStatus||(TaskStatus={}));var _default$2K=TaskStatus,TaskStatus_1$1=Object.defineProperty({default:_default$2K},"__esModule",{value:!0}),OnceTask_1=OnceTask_1$1,TaskStatus_1=TaskStatus_1$1,__awaiter$_=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class BaseTask{constructor(e){this.logger=e,this.taskName="BaseTask",this.parentTask=null,this.status=TaskStatus_1.default.IDLE,this.run=this.baseRun.bind(this,this.run),this.cancel=this.baseCancel.bind(this,this.cancel)}once(...e){return new OnceTask_1.default(this.logger,this,e)}cancel(){}name(){return this.parentTask?`${this.parentTask.name()}/${this.taskName}`:this.taskName}setParent(e){this.parentTask=e}getStatus(){return this.status}logAndThrow(e){throw this.logger.info(e),new Error(e)}baseRun(e){return __awaiter$_(this,void 0,void 0,(function*(){try{const t=Date.now();switch(this.logger.info(`running task ${this.name()}`),this.status){case TaskStatus_1.default.RUNNING:this.logAndThrow(`${this.name()} is already running`);case TaskStatus_1.default.CANCELED:this.logAndThrow(`${this.name()} was canceled before running`);case TaskStatus_1.default.FINISHED:this.logAndThrow(`${this.name()} was already finished`)}this.status=TaskStatus_1.default.RUNNING,yield e.call(this),this.logger.info(`${this.name()} took ${Math.round(Date.now()-t)} ms`)}catch(e){throw e}finally{this.status!==TaskStatus_1.default.CANCELED&&(this.status=TaskStatus_1.default.FINISHED)}}))}baseCancel(e){this.status!==TaskStatus_1.default.CANCELED&&this.status!==TaskStatus_1.default.FINISHED?(this.logger.info(`canceling task ${this.name()}`),this.status=TaskStatus_1.default.CANCELED,e.call(this)):this.logger.info(`Not canceling ${this.name()}: state is ${this.status}`)}}var _default$2J=BaseTask,BaseTask_1$1=Object.defineProperty({default:_default$2J},"__esModule",{value:!0}),VideoLogEvent_1=VideoLogEvent_1$1,BaseTask_1=BaseTask_1$1,__awaiter$Z=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class AttachMediaInputTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="AttachMediaInputTask"}run(){return __awaiter$Z(this,void 0,void 0,(function*(){const e=this.context.transceiverController;e.setPeer(this.context.peer),e.setupLocalTransceivers();const t=this.context.activeAudioInput;if(t){const i=t.getAudioTracks();if(this.context.browserBehavior.requiresUnifiedPlan())this.context.logger.info("attaching audio track to peer connection (unified-plan)"),yield e.setAudioInput(i.length?i[0]:null);else{this.context.logger.info("attaching audio track to peer connection (plan-b)");const e=this.context.peer.getSenders();t.getAudioTracks().forEach((i=>{e.find((e=>e.track.id===i.id))||(this.context.localAudioSender=this.context.peer.addTrack(i,t))}))}}else yield e.setAudioInput(null),this.context.logger.info("no audio track");const i=this.context.activeVideoInput;if(i){const t=i.getVideoTracks(),n=t.length?t[0]:null;if(this.context.browserBehavior.requiresUnifiedPlan()){if(this.context.logger.info("attaching video track to peer connection (unified-plan)"),yield e.setVideoInput(n),this.context.enableSimulcast&&this.context.videoUplinkBandwidthPolicy){const t=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();e.setEncodingParameters(t)}}else{this.context.logger.info("attaching video track to peer connection (plan-b)");this.context.peer.getSenders().find((e=>e.track&&e.track.id===t[0].id))||(this.context.localVideoSender&&(this.context.peer.removeTrack(this.context.localVideoSender),this.context.localVideoSender=null),this.context.localVideoSender=this.context.peer.addTrack(t[0],i))}n&&(this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.InputAttached,this.context.videoDeviceInformation),this.context.videoInputAttachedTimestampMs=Date.now())}else yield e.setVideoInput(null),this.context.logger.info("no video track"),this.context.localVideoSender&&(this.context.logger.info("removing track from peer"),this.context.peer.removeTrack(this.context.localVideoSender),this.context.localVideoSender=null);this.context.videoSubscriptions=e.updateVideoTransceivers(this.context.videoStreamIndex,this.context.videosToReceive)}))}}var _default$2I=AttachMediaInputTask,AttachMediaInputTask_1$1=Object.defineProperty({default:_default$2I},"__esModule",{value:!0});class Attendee{}var _default$2H=Attendee,Attendee_1$1=Object.defineProperty({default:_default$2H},"__esModule",{value:!0}),AudioLogEvent_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.AudioLogEvent=void 0,function(e){e[e.DeviceChanged=0]="DeviceChanged",e[e.MutedLocal=1]="MutedLocal",e[e.UnmutedLocal=2]="UnmutedLocal",e[e.Connected=3]="Connected",e[e.ConnectFailed=4]="ConnectFailed",e[e.RedmicStartLoss=5]="RedmicStartLoss",e[e.RedmicEndLoss=6]="RedmicEndLoss"}(i=t.AudioLogEvent||(t.AudioLogEvent={})),t.default=i}));class AudioProfile{constructor(e=null){this.audioBitrateBps=e}static fullbandSpeechMono(){return new AudioProfile(4e4)}static fullbandMusicMono(){return new AudioProfile(64e3)}static fullbandMusicStereo(){return new AudioProfile(128e3)}isStereo(){return 128e3===this.audioBitrateBps}}var _default$2G=AudioProfile,AudioProfile_1$1=Object.defineProperty({default:_default$2G},"__esModule",{value:!0});class AudioVideoControllerState{constructor(){this.logger=null,this.browserBehavior=null,this.signalingClient=null,this.meetingSessionConfiguration=null,this.peer=null,this.previousSdpOffer=null,this.sdpOfferInit=null,this.audioVideoController=null,this.realtimeController=null,this.videoTileController=null,this.mediaStreamBroker=null,this.audioMixController=null,this.activeAudioInput=null,this.activeVideoInput=null,this.transceiverController=null,this.indexFrame=null,this.iceCandidates=[],this.iceCandidateHandler=null,this.iceGatheringStateEventHandler=null,this.sdpAnswer=null,this.turnCredentials=null,this.reconnectController=null,this.removableObservers=[],this.audioProfile=null,this.videoStreamIndex=null,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.lastKnownVideoAvailability=null,this.localVideoSender=null,this.localAudioSender=null,this.videoCaptureAndEncodeParameter=null,this.videosToReceive=null,this.lastVideosToReceive=null,this.videoSubscriptions=null,this.videoSubscriptionLimit=25,this.previousSdpAnswerAsString="",this.serverSupportsCompression=!1,this.videosPaused=null,this.videoDuplexMode=null,this.volumeIndicatorAdapter=null,this.statsCollector=null,this.connectionMonitor=null,this.videoInputAttachedTimestampMs=0,this.audioDeviceInformation={},this.videoDeviceInformation={},this.enableSimulcast=!1,this.eventController=null,this.signalingOpenDurationMs=null,this.iceGatheringDurationMs=null,this.startAudioVideoTimestamp=null,this.attendeePresenceDurationMs=null,this.meetingStartDurationMs=null,this.poorConnectionCount=0,this.maxVideoTileCount=0,this.startTimeMs=null}}var _default$2F=AudioVideoControllerState,AudioVideoControllerState_1$1=Object.defineProperty({default:_default$2F},"__esModule",{value:!0}),BackgroundBlurStrength=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BlurStrengthMapper=void 0;class i{static getBlurAmount(e,t){if(e<=0)throw new Error(`invalid value for blur strength: ${e}`);return Math.round(e*t.height/this.BLUR_STRENGTH_DIVISOR)}}t.BlurStrengthMapper=i,i.BLUR_STRENGTH_DIVISOR=540,t.default={LOW:7,MEDIUM:15,HIGH:30}})),fetch_1=createCommonjsModule((function(e,t){function i(e,t,i){if(!i)return fetch(e,t);const o=r(e,i),a=n(t,i);return fetch(o,a)}function n(e,t){return(null==t?void 0:t.headers)?e?Object.assign(Object.assign({},e),{headers:Object.assign(Object.assign({},e.headers||{}),t.headers)}):{headers:t.headers}:e}function r(e,t){if(!(null==t?void 0:t.escapedQueryString))return e;const i=-1!==e.lastIndexOf("?");return`${e}${i?"&":"?"}${t.escapedQueryString}`}Object.defineProperty(t,"__esModule",{value:!0}),t.isValidRevisionID=t.isValidAssetGroup=t.resolveURL=t.addQueryParams=t.withQueryString=t.withRequestHeaders=t.fetchWithBehavior=void 0,t.fetchWithBehavior=i,t.withRequestHeaders=n,t.withQueryString=r,t.addQueryParams=function(e,t){const i=Object.keys(t);if(!i.length)return e;const n=new URLSearchParams(null==e?void 0:e.escapedQueryString);for(const e of i)n.append(e,t[e]);return Object.assign(Object.assign({},e),{escapedQueryString:n.toString()})};const o={method:"HEAD",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"origin"};t.resolveURL=function(e,t){return i(e,o,t).then((t=>t.redirected?t.url:e))},t.isValidAssetGroup=function(e){return!!e&&/^[-.a-zA-Z0-9]+$/.test(e)},t.isValidRevisionID=function(e){return!!e&&/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]{22}$/.test(e)}})),fetch_js_1=fetch_1,loader=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.loadWorker=void 0;const i={method:"GET",mode:"cors",credentials:"omit",redirect:"follow",referrerPolicy:"no-referrer"};t.loadWorker=(e,t,n,r)=>{null==r||r.debug(`Loading ${t} worker from ${e}.`);let o=!1;try{o=self.origin===new URL(e).origin}catch(e){null==r||r.error("Could not compare origins.",e)}if(o){const i=fetch_js_1.withQueryString(e,n);return Promise.resolve(new Worker(i,{name:t}))}return fetch_js_1.fetchWithBehavior(e,i,n).then((e=>{if(e.ok)return e.blob().then((e=>new Worker(window.URL.createObjectURL(e))));throw new Error("Fetch failed.")}))}})),loader_js_1=loader,support=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isOldChrome=t.supportsWASMStreaming=t.supportsSharedArrayBuffer=t.supportsWASM=t.supportsAudioWorklet=t.supportsWorker=t.supportsVoiceFocusWorker=t.supportsWASMPostMessage=t.isSafari=void 0;t.isSafari=(e=globalThis)=>{const t=e.navigator.userAgent,i=t.match(/Safari\//),n=t.match(/Chrom(?:e|ium)\//);return!(!i||n)};t.supportsWASMPostMessage=(e=globalThis)=>{if(t.isSafari(e))return!1;if(((e=globalThis)=>!!e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/))(e)){return(n(e)||0)<95}return!0};t.supportsVoiceFocusWorker=(e=globalThis,n,r)=>i(void 0,void 0,void 0,(function*(){if(!t.supportsWorker(e,r))return!1;const i=`${n.paths.workers}worker-v1.js`;try{const e=yield loader_js_1.loadWorker(i,"VoiceFocusTestWorker",n,r);try{e.terminate()}catch(e){null==r||r.debug("Failed to terminate worker.",e)}return!0}catch(e){return null==r||r.info("Failed to fetch and instantiate test worker",e),!1}}));t.supportsWorker=(e=globalThis,t)=>{try{return!!e.Worker}catch(e){return null==t||t.info("Does not support Worker",e),!1}};t.supportsAudioWorklet=(e=globalThis,t)=>{try{return!!e.AudioWorklet&&!!e.AudioWorkletNode}catch(e){return null==t||t.info("Does not support Audio Worklet",e),!1}};t.supportsWASM=(e=globalThis,t)=>{try{return!(!e.WebAssembly||!e.WebAssembly.compile&&!e.WebAssembly.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM",e),!1}};t.supportsSharedArrayBuffer=(e=globalThis,t=globalThis,i)=>{try{return!(!e.SharedArrayBuffer||!t.chrome&&!e.crossOriginIsolated)}catch(e){return null==i||i.info("Does not support SharedArrayBuffer."),!1}};t.supportsWASMStreaming=(e=globalThis,t)=>{var i;try{return!!(null===(i=e.WebAssembly)||void 0===i?void 0:i.compileStreaming)}catch(e){return null==t||t.info("Does not support WASM streaming compilation",e),!1}};const n=(e=globalThis)=>{try{if(!e.chrome)return}catch(e){}const t=e.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9]+)/);if(t)return parseInt(t[1],10)};t.isOldChrome=(e=globalThis,t)=>{const i=n(e);return!!i&&(i<90&&(null==t||t.debug(`Chrome ${i} has incomplete SIMD support.`),!0))}}));class ModelSpecBuilder{constructor(){this.path=null,this.input=null,this.output=null}static builder(){return new ModelSpecBuilder}withDefaultModel(){return this.withSelfieSegmentationDefaults()}withSelfieSegmentationDefaults(){return this.path="https://static.sdkassets.chime.aws/bgblur/models/selfie_segmentation_landscape.tflite",this.input={height:144,width:256,range:[0,1],channels:3},this.output={height:144,width:256,range:[0,1],channels:1},this}withPath(e){return this.path=e,this}withInput(e){return this.input=e,this}withOutput(e){return this.output=e,this}validate(){if(!this.path)throw new Error("model spec path is not set");if(!this.input)throw new Error("model spec input is not set");if(!this.output)throw new Error("model spec output is not set")}build(){return this.validate(),{path:this.path,input:this.input,output:this.output}}}var _default$2E=ModelSpecBuilder,ModelSpecBuilder_1$1=Object.defineProperty({default:_default$2E},"__esModule",{value:!0}),__spreadArray=function(e,t,i){if(i||2===arguments.length)for(var n,r=0,o=t.length;r<o;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))},BrowserInfo=function(e,t,i){this.name=e,this.version=t,this.os=i,this.type="browser"},NodeInfo=function(e){this.version=e,this.type="node",this.name="node",this.os=process.platform},SearchBotDeviceInfo=function(e,t,i,n){this.name=e,this.version=t,this.os=i,this.bot=n,this.type="bot-device"},BotInfo=function(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null},ReactNativeInfo=function(){this.type="react-native",this.name="react-native",this.version=null,this.os=null},SEARCHBOX_UA_REGEX=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,SEARCHBOT_OS_REGEX=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,REQUIRED_VERSION_PARTS=3,userAgentRules=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",SEARCHBOX_UA_REGEX]],operatingSystemRules=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function detect(e){return e?parseUserAgent(e):"undefined"==typeof document&&"undefined"!=typeof navigator&&"ReactNative"===navigator.product?new ReactNativeInfo:"undefined"!=typeof navigator?parseUserAgent(navigator.userAgent):getNodeVersion()}function matchUserAgent(e){return""!==e&&userAgentRules.reduce((function(t,i){var n=i[0],r=i[1];if(t)return t;var o=r.exec(e);return!!o&&[n,o]}),!1)}function browserName(e){var t=matchUserAgent(e);return t?t[0]:null}function parseUserAgent(e){var t=matchUserAgent(e);if(!t)return null;var i=t[0],n=t[1];if("searchbot"===i)return new BotInfo;var r=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);r?r.length<REQUIRED_VERSION_PARTS&&(r=__spreadArray(__spreadArray([],r,!0),createVersionParts(REQUIRED_VERSION_PARTS-r.length),!0)):r=[];var o=r.join("."),a=detectOS(e),s=SEARCHBOT_OS_REGEX.exec(e);return s&&s[1]?new SearchBotDeviceInfo(i,o,a,s[1]):new BrowserInfo(i,o,a)}function detectOS(e){for(var t=0,i=operatingSystemRules.length;t<i;t++){var n=operatingSystemRules[t],r=n[0];if(n[1].exec(e))return r}return null}function getNodeVersion(){return"undefined"!=typeof process&&process.version?new NodeInfo(process.version.slice(1)):null}function createVersionParts(e){for(var t=[],i=0;i<e;i++)t.push("0");return t}var es=Object.freeze({__proto__:null,BrowserInfo:BrowserInfo,NodeInfo:NodeInfo,SearchBotDeviceInfo:SearchBotDeviceInfo,BotInfo:BotInfo,ReactNativeInfo:ReactNativeInfo,detect:detect,browserName:browserName,parseUserAgent:parseUserAgent,detectOS:detectOS,getNodeVersion:getNodeVersion}),detect_browser_1=getAugmentedNamespace(es),__awaiter$Y=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultBrowserBehavior{constructor({recreateAudioContextIfNeeded:e=!1}={}){this.browser=detect_browser_1.detect(),this.browserSupport={chrome:78,"edge-chromium":79,electron:7,firefox:75,ios:12,safari:12,opera:66,samsung:12,crios:86,fxios:23,"ios-webview":605,"chromium-webview":92},this.browserName={chrome:"Google Chrome","edge-chromium":"Microsoft Edge",electron:"Electron",firefox:"Mozilla Firefox",ios:"Safari iOS",safari:"Safari",opera:"Opera",samsung:"Samsung Internet",crios:"Chrome iOS",fxios:"Firefox iOS","ios-webview":"WKWebView iOS","chromium-webview":"Chrome WebView"},this.chromeLike=["chrome","edge-chromium","chromium-webview","opera","samsung"],this.webkitBrowsers=["crios","fxios","safari","ios","ios-webview"],this.recreateAudioContextIfNeeded=e}version(){return this.browser.version}majorVersion(){return parseInt(this.version().split(".")[0])}name(){return this.browser.name}hasChromiumWebRTC(){for(const e of this.chromeLike)if(e===this.browser.name)return!0;return!1}hasWebKitWebRTC(){for(const e of this.webkitBrowsers)if(e===this.browser.name)return!0;return!1}hasFirefoxWebRTC(){return this.isFirefox()}supportsCanvasCapturedStreamPlayback(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()}supportsBackgroundFilter(){return("safari"!==this.name()||15!==this.majorVersion())&&!!this.supportsCanvasCapturedStreamPlayback()}requiresUnifiedPlan(){return this.isFirefox()||this.hasChromiumWebRTC()||this.hasWebKitWebRTC()&&this.isUnifiedPlanSupported()}requiresResolutionAlignment(e,t){return this.isAndroid()&&this.isPixel3()?[64*Math.ceil(e/64),64*Math.ceil(t/64)]:[e,t]}requiresCheckForSdpConnectionAttributes(){return!this.isIOSSafari()&&!this.isIOSChrome()&&!this.isIOSFirefox()}requiresIceCandidateGatheringTimeoutWorkaround(){return this.hasChromiumWebRTC()}requiresUnifiedPlanMunging(){return this.hasChromiumWebRTC()||this.hasWebKitWebRTC()&&this.isUnifiedPlanSupported()}requiresSortCodecPreferencesForSdpAnswer(){return this.isFirefox()&&this.majorVersion()<=68}requiresSimulcastMunging(){return this.isSafari()}requiresBundlePolicy(){return"max-bundle"}requiresPromiseBasedWebRTCGetStats(){return!this.hasChromiumWebRTC()}requiresVideoElementWorkaround(){return this.isSafari()&&12===this.majorVersion()}requiresNoExactMediaStreamConstraints(){return this.isSamsungInternet()||this.isIOSSafari()&&("12.0.0"===this.version()||"12.1.0"===this.version())}requiresGroupIdMediaStreamConstraints(){return this.isSamsungInternet()}requiresContextRecreationForAudioWorklet(){return!!this.recreateAudioContextIfNeeded&&("chrome"in commonjsGlobal&&("Mac OS"===this.browser.os&&!(!this.isChrome()&&!this.isEdge())))}getDisplayMediaAudioCaptureSupport(){return this.isChrome()||this.isEdge()}supportsSenderSideBandwidthEstimation(){return this.hasChromiumWebRTC()||this.isSafari()}doesNotSupportMediaDeviceLabels(){return"chromium-webview"===this.browser.name}screenShareUnsupported(){return console.warn("This function is no longer supported."),!0}isSupported(){return!(!this.browserSupport[this.browser.name]||this.majorVersion()<this.browserSupport[this.browser.name])&&("firefox"!==this.browser.name||!this.isAndroid())}isSimulcastSupported(){return this.hasChromiumWebRTC()}supportDownlinkBandwidthEstimation(){return!this.isFirefox()}supportString(){if(this.isAndroid())return`${this.browserName.chrome} ${this.browserSupport.chrome}+, ${this.browserName.samsung} ${this.browserSupport.samsung}+`;const e=[];for(const t in this.browserSupport)e.push(`${this.browserName[t]} ${this.browserSupport[t]}+`);return e.join(", ")}supportedVideoCodecs(){return __awaiter$Y(this,void 0,void 0,(function*(){const e=new RTCPeerConnection;return e.addTransceiver("video",{direction:"inactive",streams:[]}),(yield e.createOffer({offerToReceiveVideo:!0})).sdp.split("\r\n").filter((e=>e.includes("a=rtpmap:"))).map((e=>e.replace(/.* /,"").replace(/\/.*/,""))).filter(((e,t,i)=>i.indexOf(e)===t)).filter((e=>"rtx"!==e&&"red"!==e&&"ulpfec"!==e))}))}supportsSetSinkId(){return"setSinkId"in HTMLAudioElement.prototype}disableResolutionScaleDown(){return this.isAndroid()}disable480pResolutionScaleDown(){return/( Chrome\/98\.)/i.test(navigator.userAgent)&&this.browser.os.startsWith("Windows")}requiresDisablingH264Encoding(){return(this.isIOSSafari()||this.isIOSChrome()||this.isIOSFirefox())&&("15.1.0"===this.version()||/( OS 15_1)/i.test(navigator.userAgent))}isIOSSafari(){return"ios"===this.browser.name||"ios-webview"===this.browser.name||"safari"===this.browser.name&&/( Mac )/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1}isSafari(){return"safari"===this.browser.name||"ios"===this.browser.name}isFirefox(){return"firefox"===this.browser.name}isIOSFirefox(){return"fxios"===this.browser.name}isIOSChrome(){return"crios"===this.browser.name}isChrome(){return"chrome"===this.browser.name}isEdge(){return"edge-chromium"===this.browser.name}isSamsungInternet(){return"samsung"===this.browser.name}isAndroid(){return/(android)/i.test(navigator.userAgent)}isPixel3(){return/( pixel 3)/i.test(navigator.userAgent)}isUnifiedPlanSupported(){return RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection")}}var _default$2D=DefaultBrowserBehavior,DefaultBrowserBehavior_1$1=Object.defineProperty({default:_default$2D},"__esModule",{value:!0}),_default$2C={hash:"eb8fe0c",raw:"v2.30.1",semverString:"2.30.1"},version$1=Object.defineProperty({default:_default$2C},"__esModule",{value:!0}),DefaultBrowserBehavior_1=DefaultBrowserBehavior_1$1,version_1=version$1;class Versioning{static get sdkName(){return"amazon-chime-sdk-js"}static get sdkVersion(){return version_1.default.semverString}static get sdkVersionSemVer(){var e,t,i;const n=version_1.default.semverString.match(/^(?<major>[0-9]+)\.(?<minor>[0-9]+)(?:\.(?<patch>[0-9]+))?/);return{major:null===(e=null==n?void 0:n.groups)||void 0===e?void 0:e.major,minor:null===(t=null==n?void 0:n.groups)||void 0===t?void 0:t.minor,patch:null===(i=null==n?void 0:n.groups)||void 0===i?void 0:i.patch}}static get buildSHA(){return version_1.default.hash.substr(1)}static get sdkUserAgentLowResolution(){const e=new DefaultBrowserBehavior_1.default;return`${e.name()}-${e.majorVersion()}`}static urlWithVersion(e){const t=new URL(e);return t.searchParams.append(Versioning.X_AMZN_VERSION,Versioning.sdkVersion),t.searchParams.append(Versioning.X_AMZN_USER_AGENT,Versioning.sdkUserAgentLowResolution),t.toString()}}var _default$2B=Versioning;Versioning.X_AMZN_VERSION="X-Amzn-Version",Versioning.X_AMZN_USER_AGENT="X-Amzn-User-Agent";var Versioning_1$1=Object.defineProperty({default:_default$2B},"__esModule",{value:!0}),support_js_1=support,ModelSpecBuilder_1=ModelSpecBuilder_1$1,Versioning_1=Versioning_1$1,__awaiter$X=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};const CREATE_DEFAULT_MODEL_SPEC=()=>ModelSpecBuilder_1.default.builder().withSelfieSegmentationDefaults().build(),DEFAULT_CDN="https://static.sdkassets.chime.aws",DEFAULT_PATHS={worker:`${DEFAULT_CDN}/bgblur/workers/worker.js`,wasm:`${DEFAULT_CDN}/bgblur/wasm/_cwt-wasm.wasm`,simd:`${DEFAULT_CDN}/bgblur/wasm/_cwt-wasm-simd.wasm`};class BackgroundFilterVideoFrameProcessor{static defaultAssetSpec(){const e=Versioning_1.default.sdkVersionSemVer;return{assetGroup:`sdk-${e.major}.${e.minor}`}}static createUrlWithParams(e,t){const i=new URL(e),n=Object.keys(t);for(const e of n)void 0!==t[e]&&i.searchParams.set(e,t[e]);return i.toString()}static resolveSpec(e){const{paths:t=DEFAULT_PATHS,model:i=CREATE_DEFAULT_MODEL_SPEC(),assetGroup:n=this.defaultAssetSpec().assetGroup,revisionID:r=this.defaultAssetSpec().revisionID}=e||{},o={assetGroup:n,revisionID:r,sdk:encodeURIComponent(Versioning_1.default.sdkVersion),ua:encodeURIComponent(Versioning_1.default.sdkUserAgentLowResolution)};return t.worker=this.createUrlWithParams(t.worker,o),t.wasm=this.createUrlWithParams(t.wasm,o),t.simd=this.createUrlWithParams(t.simd,o),i.path=this.createUrlWithParams(i.path,o),{paths:t,model:i,assetGroup:n,revisionID:r}}static resolveOptions(e){e.reportingPeriodMillis||(e.reportingPeriodMillis=1e3);return e.filterCPUUtilization?(e.filterCPUUtilization<0||e.filterCPUUtilization>100)&&(e.logger.warn("filterCPUUtilization must be set to a range between 0 and 100 percent. Falling back to default of 30 percent"),e.filterCPUUtilization=30):e.filterCPUUtilization=30,e}static isSupported(e,t){const{logger:i}=t;if("undefined"==typeof globalThis)return i.info("Browser does not have globalThis."),Promise.resolve(!1);return(new DefaultBrowserBehavior_1.default).supportsBackgroundFilter()?support_js_1.supportsWASM(globalThis,i)?this.supportsBackgroundFilter(globalThis,e,i):(i.info("Browser does not support WASM."),Promise.resolve(!1)):(i.info("Browser is not supported."),Promise.resolve(!1))}static supportsBackgroundFilter(e=globalThis,t,i){return __awaiter$X(this,void 0,void 0,(function*(){if(!support_js_1.supportsWorker(e,i))return i.info("Browser does not support web workers."),!1;const n=t.paths.worker;try{const e=yield loader_js_1.loadWorker(n,"BackgroundFilterWorker",{},null);try{e.terminate()}catch(e){i.info(`Failed to terminate worker. ${e.message}`)}return!0}catch(e){return i.info(`Failed to fetch and instantiate test worker ${e.message}`),!1}}))}}var _default$2A=BackgroundFilterVideoFrameProcessor,BackgroundFilterVideoFrameProcessor_1$1=Object.defineProperty({default:_default$2A},"__esModule",{value:!0});class ConsoleLogger{constructor(e,t=LogLevel_1.default.WARN){this.name=e,this.level=t}info(e){this.log(LogLevel_1.default.INFO,e)}warn(e){this.log(LogLevel_1.default.WARN,e)}error(e){this.log(LogLevel_1.default.ERROR,e)}debug(e){LogLevel_1.default.DEBUG<this.level||("string"==typeof e?this.log(LogLevel_1.default.DEBUG,e):e?this.log(LogLevel_1.default.DEBUG,e()):this.log(LogLevel_1.default.DEBUG,""+e))}setLogLevel(e){this.level=e}getLogLevel(){return this.level}log(e,t){if(e<this.level)return;const i=`${(new Date).toISOString()} [${LogLevel_1.default[e]}] ${this.name} - ${t}`;switch(e){case LogLevel_1.default.ERROR:console.error(i);break;case LogLevel_1.default.WARN:console.warn(i);break;case LogLevel_1.default.DEBUG:console.debug(i.replace(/\\r\\n/g,"\n"));break;case LogLevel_1.default.INFO:console.info(i)}}}var _default$2z=ConsoleLogger,ConsoleLogger_1$1=Object.defineProperty({default:_default$2z},"__esModule",{value:!0}),__awaiter$W=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class NoOpVideoFrameProcessor{process(e){return __awaiter$W(this,void 0,void 0,(function*(){return e}))}destroy(){return __awaiter$W(this,void 0,void 0,(function*(){}))}}var _default$2y=NoOpVideoFrameProcessor,NoOpVideoFrameProcessor_1$1=Object.defineProperty({default:_default$2y},"__esModule",{value:!0}),__awaiter$V=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class CanvasVideoFrameBuffer{constructor(e){this.canvas=e,this.destroyed=!1}destroy(){this.canvas=null,this.destroyed=!0}asCanvasImageSource(){return __awaiter$V(this,void 0,void 0,(function*(){return this.destroyed?Promise.reject("canvas buffer is destroyed"):Promise.resolve(this.canvas)}))}asCanvasElement(){return this.canvas}}var _default$2x=CanvasVideoFrameBuffer,CanvasVideoFrameBuffer_1$1=Object.defineProperty({default:_default$2x},"__esModule",{value:!0});const FILTER_DURATION_FACTOR=.8;class BackgroundFilterFrameCounter{constructor(e,t,i,n){this.delegate=e,this.reportingPeriodMillis=t,this.filterCPUUtilization=i,this.logger=n,this._processingFilter=!0,this.lastReportedEventTimestamp=0,this.lastFilterCompleteTimestamp=0,this.filterTotalMillis=0,this.filterCount=0,this.framerate=0,this.filterDurationNotifyMillis=0,this.setSegmentationDuration()}reportEvent(e){const t=e-this.lastReportedEventTimestamp;if(t>=this.reportingPeriodMillis){const i=this.filterCount,n=this.filterTotalMillis;if(this.filterCount=0,this.filterTotalMillis=0,this.lastReportedEventTimestamp=e,0===this.framerate||0===i)return;const r=Math.round(n/i),o=Math.round(this.framerate*(t/1e3))-i,a=Math.round(100*n/t);r>=this.filterDurationNotifyMillis&&this.delegate.filterFrameDurationHigh({framesDropped:o,avgFilterDurationMillis:r,framerate:this.framerate,periodMillis:t}),a>=this.filterCPUUtilization&&this.delegate.filterCPUUtilizationHigh({cpuUtilization:a,filterMillis:n,periodMillis:t})}}setSegmentationDuration(){this.filterDurationNotifyMillis=Math.round(1e3/this.framerate*FILTER_DURATION_FACTOR)}frameReceived(e){e!==this.framerate&&(this.framerate=e,this.logger.info(`frame counter setting frame rate to ${this.framerate}`),this.setSegmentationDuration());const t=Date.now();this.reportEvent(t)}filterSubmitted(){this._processingFilter=!0,this.lastFilterCompleteTimestamp=Date.now()}filterComplete(){this.filterTotalMillis+=Date.now()-this.lastFilterCompleteTimestamp,this._processingFilter=!1,this.filterCount++}get processingSegment(){return this._processingFilter}}var _default$2w=BackgroundFilterFrameCounter,BackgroundFilterFrameCounter_1$1=Object.defineProperty({default:_default$2w},"__esModule",{value:!0}),CanvasVideoFrameBuffer_1=CanvasVideoFrameBuffer_1$1,BackgroundFilterFrameCounter_1=BackgroundFilterFrameCounter_1$1,BackgroundFilterProcessor_1$1=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BackgroundFilterMonitor=void 0;class n{constructor(){this.value=void 0,this.resolve=null}whenNext(){return this.promise||(this.promise=new Promise((e=>this.resolve=e))),this.promise}next(e){this.value=e,this.resolve(e),delete this.promise}}class r{constructor(e,t,i,o){this.targetCanvas=document.createElement("canvas"),this.canvasCtx=this.targetCanvas.getContext("2d"),this.canvasVideoFrameBuffer=new CanvasVideoFrameBuffer_1.default(this.targetCanvas),this.mask$=new n,this.sourceWidth=0,this.sourceHeight=0,this.frameNumber=0,this.videoFramesPerFilterUpdate=1,this.initWorkerPromise=r.createWorkerPromise(),this.loadModelPromise=r.createWorkerPromise(),this.modelInitialized=!1,this.destroyed=!1,this.filterType=e,this.validateSpec(t),this.validateOptions(i),this.spec=t,this.logger=i.logger,this.delegate=o,this.initCPUMonitor(i)}static createWorkerPromise(){const e={resolve:null,reject:null,promise:null};return e.promise=new Promise(((t,i)=>{e.resolve=t,e.reject=i})),e}validateSpec(e){if(!e)throw new Error("processor has null spec");if(!e.model)throw new Error("processor spec has null model");if(!e.paths)throw new Error("processor spec has null paths")}validateOptions(e){if(!e)throw new Error("processor has null options");if(!e.logger)throw new Error("processor has null options - logger");if(!e.reportingPeriodMillis)throw new Error("processor has null options - reportingPeriodMillis");if(!e.filterCPUUtilization)throw new Error("processor has null options - filterCPUUtilization")}initCPUMonitor(e){this.videoFramesPerFilterUpdate=1,this.frameCounter=new BackgroundFilterFrameCounter_1.default(this.delegate,e.reportingPeriodMillis,e.filterCPUUtilization,this.logger),this.cpuMonitor=new o(5e3,{reduceCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.min(this.videoFramesPerFilterUpdate+1,10))},increaseCPUUtilization:()=>{this.updateVideoFramesPerFilterUpdate(Math.max(this.videoFramesPerFilterUpdate-1,1))}}),this.delegate.addObserver(this.cpuMonitor)}stringify(e){return JSON.stringify(e,null,2)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload)return this.logger.error("failed to initialize module"),void this.initWorkerPromise.reject(new Error("failed to initialize the module"));const t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:0}}),this.initWorkerPromise.resolve({})}handleLoadModel(e){if(this.logger.info(`received load model message: ${this.stringify(e)}`),2!==e.payload)return this.logger.error("failed to load model! status: "+e.payload),void this.loadModelPromise.reject(new Error("failed to load model! status: "+e.payload));this.modelInitialized=!0,this.loadModelPromise.resolve({})}handlePredict(e){this.mask$.next(e.payload.output)}handleWorkerEvent(e){const t=e.data;switch(t.msg){case"initialize":this.handleInitialize(t);break;case"loadModel":this.handleLoadModel(t);break;case"predict":this.handlePredict(t);break;default:this.logger.info(`unexpected event msg: ${this.stringify(t)}`)}}loadAssets(){return i(this,void 0,void 0,(function*(){this.logger.info("start initializing the processor");try{this.worker=yield loader_js_1.loadWorker(this.spec.paths.worker,"BackgroundFilterWorker",{},null),this.worker.addEventListener("message",(e=>this.handleWorkerEvent(e))),this.worker.postMessage({msg:"initialize",payload:{wasmPath:this.spec.paths.wasm,simdPath:this.spec.paths.simd}}),yield this.initWorkerPromise.promise,this.logger.info(`successfully initialized the ${this.filterType} worker`),yield this.loadModelPromise.promise,this.logger.info(`successfully loaded ${this.filterType} worker segmentation model`)}catch(e){throw new Error(`could not initialize the ${this.filterType} video frame processor due to '${e.message}'`)}this.logger.info(`successfully initialized the ${this.filterType} processor`)}))}process(e){return i(this,void 0,void 0,(function*(){if(this.destroyed)return e;this.frameCounter.frameReceived(e[0].framerate),this.cpuMonitor.frameReceived();const t=e[0].asCanvasElement();if(!t)return e;if(!this.modelInitialized)return e[0]=this.canvasVideoFrameBuffer,e;const i=t.width,n=t.height;if(0===i||0===n)return e;0===this.sourceWidth&&(this.sourceWidth=i,this.sourceHeight=n,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight,this.logger.info(`${this.filterType} source width: ${this.sourceWidth}`),this.logger.info(`${this.filterType} source height: ${this.sourceHeight}`),this.initOnFirstExecution()),this.sourceWidth===i&&this.sourceHeight===n||(this.sourceWidth=i,this.sourceHeight=n,this.targetCanvas.width=this.sourceWidth,this.targetCanvas.height=this.sourceHeight);try{this.frameCounter.filterSubmitted();let e=this.mask$.value;const i=this.spec.model.input.width/t.width,n=this.spec.model.input.height/t.height;void 0===this.scaledCanvas&&(this.scaledCanvas=document.createElement("canvas"),this.scaledCanvas.width=this.spec.model.input.width,this.scaledCanvas.height=this.spec.model.input.height);const r=this.scaledCanvas.getContext("2d");r.save(),r.scale(i,n),r.drawImage(t,0,0),r.restore();const o=r.getImageData(0,0,this.scaledCanvas.width,this.scaledCanvas.height);if(this.frameNumber%this.videoFramesPerFilterUpdate==0){const t=this.mask$.whenNext();this.worker.postMessage({msg:"predict",payload:o},[o.data.buffer]),e=yield t}this.destroyed||this.drawImageWithMask(t,e)}catch(t){return this.logger.error(`could not process ${this.filterType} frame buffer due to ${t}`),e}finally{this.frameCounter.filterComplete(),this.frameNumber++}return e[0]=this.canvasVideoFrameBuffer,e}))}updateVideoFramesPerFilterUpdate(e){e!==this.videoFramesPerFilterUpdate&&(this.videoFramesPerFilterUpdate=e,this.logger.info(`Adjusting filter rate to compensate for CPU utilization. Filter rate is ${this.videoFramesPerFilterUpdate} video frames per filter.`))}destroy(){var e,t,n,r;return i(this,void 0,void 0,(function*(){this.destroyed=!0,this.delegate.removeObserver(this.cpuMonitor),this.canvasVideoFrameBuffer.destroy(),null===(e=this.worker)||void 0===e||e.postMessage({msg:"destroy"}),null===(t=this.worker)||void 0===t||t.postMessage({msg:"stop"}),null===(n=this.targetCanvas)||void 0===n||n.remove(),this.targetCanvas=void 0,null===(r=this.scaledCanvas)||void 0===r||r.remove(),this.scaledCanvas=void 0,this.logger.info(`${this.filterType} frame process destroyed`)}))}}t.default=r;class o{constructor(e,t){this.monitoringPeriodMillis=e,this.observer=t,this.lastCPUChangeTimestamp=0}filterCPUUtilizationHigh(){const e=Date.now();e-this.lastCPUChangeTimestamp>=this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.reduceCPUUtilization())}frameReceived(){const e=Date.now();e-this.lastCPUChangeTimestamp>=2*this.monitoringPeriodMillis&&(this.lastCPUChangeTimestamp=e,this.observer.increaseCPUUtilization())}}t.BackgroundFilterMonitor=o}));class BackgroundFilterVideoFrameProcessorDelegate{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}filterFrameDurationHigh(e){var t;for(const i of this.observers)null===(t=i.filterFrameDurationHigh)||void 0===t||t.call(i,e)}filterCPUUtilizationHigh(e){var t;for(const i of this.observers)null===(t=i.filterCPUUtilizationHigh)||void 0===t||t.call(i,e)}}var _default$2v=BackgroundFilterVideoFrameProcessorDelegate,BackgroundFilterVideoFrameProcessorDelegate_1$1=Object.defineProperty({default:_default$2v},"__esModule",{value:!0}),BackgroundFilterVideoFrameProcessorDelegate_1=BackgroundFilterVideoFrameProcessorDelegate_1$1;class BackgroundBlurVideoFrameProcessorDelegate extends BackgroundFilterVideoFrameProcessorDelegate_1.default{}var _default$2u=BackgroundBlurVideoFrameProcessorDelegate,BackgroundBlurVideoFrameProcessorDelegate_1$1=Object.defineProperty({default:_default$2u},"__esModule",{value:!0}),BackgroundFilterProcessor_1=BackgroundFilterProcessor_1$1,BackgroundBlurStrength_1=BackgroundBlurStrength,BackgroundBlurVideoFrameProcessorDelegate_1=BackgroundBlurVideoFrameProcessorDelegate_1$1,__awaiter$U=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class BackgroundBlurProcessorProvided extends BackgroundFilterProcessor_1.default{constructor(e,t){super("background blur",e,t,new BackgroundBlurVideoFrameProcessorDelegate_1.default),this.blurAmount=0,this.setBlurStrength(t.blurStrength),this.logger.info("BackgroundBlur processor successfully created"),this.logger.info(`BackgroundBlur spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundBlur options: ${this.stringify(t)}`)}validateOptions(e){if(super.validateOptions(e),!e.blurStrength)throw new Error("processor has null options - blurStrength")}initOnFirstExecution(){this.setBlurPixels()}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height));this.scaledCanvas.getContext("2d").putImageData(t,0,0);const{canvasCtx:i,targetCanvas:n}=this,{width:r,height:o}=n;i.save(),i.clearRect(0,0,r,o),i.drawImage(this.scaledCanvas,0,0,r,o),i.globalCompositeOperation="source-in",i.drawImage(e,0,0,r,o),i.globalCompositeOperation="destination-over",i.filter=`blur(${this.blurAmount}px)`,i.drawImage(e,0,0,n.width,n.height),i.restore()}setBlurStrength(e){this._blurStrength=e,this.logger.info(`blur strength set to ${this._blurStrength}`),this.setBlurPixels()}setBlurPixels(){this.blurAmount=BackgroundBlurStrength_1.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:this.sourceHeight}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}static isSupported(){return __awaiter$U(this,void 0,void 0,(function*(){const e=document.createElement("canvas"),t=void 0!==e.getContext("2d").filter;return e.remove(),t}))}}var _default$2t=BackgroundBlurProcessorProvided,BackgroundBlurProcessorProvided_1$1=Object.defineProperty({default:_default$2t},"__esModule",{value:!0}),BackgroundBlurProcessorProvided_1=BackgroundBlurProcessorProvided_1$1,__awaiter$T=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class BackgroundBlurProcessorBuiltIn extends BackgroundBlurProcessorProvided_1.default{constructor(e,t){super(e,t),this.blurCanvas=document.createElement("canvas"),this.blurCanvasCtx=this.blurCanvas.getContext("2d"),this.blurCanvas.width=this.spec.model.input.width,this.blurCanvas.height=this.spec.model.input.height,this.logger.info("BackgroundBlur processor using builtin blur")}drawImageWithMask(e,t){const i=this.blurredImage,{canvasCtx:n,targetCanvas:r}=this,{width:o,height:a}=r;if(!t||!i)return void n.clearRect(0,0,o,a);this.scaledCanvas.getContext("2d").putImageData(t,0,0),this.blurCanvasCtx.putImageData(this.blurredImage,0,0),n.save(),n.clearRect(0,0,o,a),n.drawImage(this.scaledCanvas,0,0,o,a),n.globalCompositeOperation="source-in",n.drawImage(e,0,0,o,a),n.globalCompositeOperation="destination-over",n.drawImage(this.blurCanvas,0,0,o,a),n.restore()}setBlurStrength(e){if(super.setBlurStrength(e),this.worker){this.modelInitialized=!1,this.worker.postMessage({msg:"destroy"});const e=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:e.path,inputHeight:e.input.height,inputWidth:e.input.width,inputChannels:4,modelRangeMin:e.input.range[0],modelRangeMax:e.input.range[1],blurPixels:this.blurAmount}})}}setBlurPixels(){this.blurAmount=BackgroundBlurStrength_1.BlurStrengthMapper.getBlurAmount(this._blurStrength,{height:540}),this.logger.info(`background blur amount set to ${this.blurAmount}`)}handleInitialize(e){if(this.logger.info(`received initialize message: ${this.stringify(e)}`),!e.payload)return this.logger.error("failed to initialize module"),void this.initWorkerPromise.reject(new Error("failed to initialize the module"));const t=this.spec.model;this.worker.postMessage({msg:"loadModel",payload:{modelUrl:t.path,inputHeight:t.input.height,inputWidth:t.input.width,inputChannels:4,modelRangeMin:t.input.range[0],modelRangeMax:t.input.range[1],blurPixels:this.blurAmount}}),this.initWorkerPromise.resolve({})}handlePredict(e){this.blurredImage=e.payload.blurOutput,super.handlePredict(e)}destroy(){const e=Object.create(null,{destroy:{get:()=>super.destroy}});var t;return __awaiter$T(this,void 0,void 0,(function*(){e.destroy.call(this),null===(t=this.blurCanvas)||void 0===t||t.remove(),this.blurCanvas=void 0}))}}var _default$2s=BackgroundBlurProcessorBuiltIn,BackgroundBlurProcessorBuiltIn_1$1=Object.defineProperty({default:_default$2s},"__esModule",{value:!0}),BackgroundFilterVideoFrameProcessor_1=BackgroundFilterVideoFrameProcessor_1$1,ConsoleLogger_1=ConsoleLogger_1$1,NoOpVideoFrameProcessor_1=NoOpVideoFrameProcessor_1$1,BackgroundBlurProcessorBuiltIn_1=BackgroundBlurProcessorBuiltIn_1$1,__awaiter$S=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class NoOpBackgroundBlurProcessor extends NoOpVideoFrameProcessor_1.default{setBlurStrength(){}loadAssets(){return __awaiter$S(this,void 0,void 0,(function*(){}))}addObserver(){}removeObserver(){}}class BackgroundBlurVideoFrameProcessor extends BackgroundFilterVideoFrameProcessor_1.default{static create(e,t){return __awaiter$S(this,void 0,void 0,(function*(){e=BackgroundBlurVideoFrameProcessor.resolveSpec(e),t=BackgroundBlurVideoFrameProcessor.resolveOptions(t);const{logger:i}=t,n=yield BackgroundBlurVideoFrameProcessor.isSupported(e,t);if(i.info(`processor is ${n?"":"not"} supported`),!n)return i.warn("Using no-op processor because background blur is not supported"),new NoOpBackgroundBlurProcessor;let r;return(yield BackgroundBlurProcessorProvided_1.default.isSupported())?(i.info("Using browser-provided background blur"),r=new BackgroundBlurProcessorProvided_1.default(e,t)):(i.info("Using built-in background blur"),r=new BackgroundBlurProcessorBuiltIn_1.default(e,t)),yield r.loadAssets(),r}))}static resolveOptions(e={}){return e.blurStrength||(e.blurStrength=BackgroundBlurStrength_1.default.MEDIUM),e.logger||(e.logger=new ConsoleLogger_1.default("BackgroundBlurProcessor",LogLevel_1.default.INFO)),e=super.resolveOptions(e)}static isSupported(e,t){return e=BackgroundBlurVideoFrameProcessor.resolveSpec(e),t=BackgroundBlurVideoFrameProcessor.resolveOptions(t),super.isSupported(e,t)}}var _default$2r=BackgroundBlurVideoFrameProcessor,BackgroundBlurVideoFrameProcessor_1$1=Object.defineProperty({default:_default$2r},"__esModule",{value:!0});class BackgroundReplacementVideoFrameProcessorDelegate extends BackgroundFilterVideoFrameProcessorDelegate_1.default{}var _default$2q=BackgroundReplacementVideoFrameProcessorDelegate,BackgroundReplacementVideoFrameProcessorDelegate_1$1=Object.defineProperty({default:_default$2q},"__esModule",{value:!0}),BackgroundReplacementVideoFrameProcessorDelegate_1=BackgroundReplacementVideoFrameProcessorDelegate_1$1,__awaiter$R=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class BackgroundReplacementFilter extends BackgroundFilterProcessor_1.default{constructor(e,t){super("background replacement",e,t,new BackgroundReplacementVideoFrameProcessorDelegate_1.default),this.replacementBlob=t.imageBlob,this.logger.info("BackgroundReplacement processor successfully created"),this.logger.info(`BackgroundReplacement spec: ${this.stringify(this.spec)}`),this.logger.info(`BackgroundReplacement options: ${this.stringify(t)}`)}setImageBlob(e){return __awaiter$R(this,void 0,void 0,(function*(){this.replacementBlob=e,this.replacementImage=yield BackgroundReplacementFilter.loadImage(this.createReplacementObjectUrl())}))}initOnFirstExecution(){}drawImageWithMask(e,t){t||(t=new ImageData(this.spec.model.input.width,this.spec.model.input.height));this.scaledCanvas.getContext("2d").putImageData(t,0,0);const{canvasCtx:i,targetCanvas:n}=this,{width:r,height:o}=n;i.save(),i.clearRect(0,0,r,o),i.drawImage(this.scaledCanvas,0,0,r,o),i.globalCompositeOperation="source-in",i.drawImage(e,0,0,r,o),i.globalCompositeOperation="destination-over",i.drawImage(this.replacementImage,0,0,n.width,n.height),i.restore()}static loadImageExecutor(e,t,i){const n=new Image;n.crossOrigin="Anonymous",n.addEventListener("load",(()=>{e(n)}),!1),n.addEventListener("error",(e=>{t(new Error(`Could not load replacement image ${n.src}: ${e.message}`))}),!1),n.src=i}static loadImage(e){return __awaiter$R(this,void 0,void 0,(function*(){return new Promise(((t,i)=>this.loadImageExecutor(t,i,e)))}))}revokeReplacementObjectUrl(){this.replacementObjectUrl&&URL.revokeObjectURL(this.replacementObjectUrl)}createReplacementObjectUrl(){return this.revokeReplacementObjectUrl(),this.replacementObjectUrl=URL.createObjectURL(this.replacementBlob),this.replacementObjectUrl}loadAssets(){const e=Object.create(null,{loadAssets:{get:()=>super.loadAssets}});return __awaiter$R(this,void 0,void 0,(function*(){this.replacementImage=yield BackgroundReplacementFilter.loadImage(this.createReplacementObjectUrl()),e.loadAssets.call(this)}))}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}destroy(){const e=Object.create(null,{destroy:{get:()=>super.destroy}});return __awaiter$R(this,void 0,void 0,(function*(){e.destroy.call(this),this.revokeReplacementObjectUrl()}))}}var _default$2p=BackgroundReplacementFilter,BackgroundReplacementFilter_1$1=Object.defineProperty({default:_default$2p},"__esModule",{value:!0}),BackgroundReplacementFilter_1=BackgroundReplacementFilter_1$1,__awaiter$Q=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class NoOpBackgroundReplacementProcessor extends NoOpVideoFrameProcessor_1.default{loadAssets(){return __awaiter$Q(this,void 0,void 0,(function*(){}))}addObserver(){}removeObserver(){}setImageBlob(){return __awaiter$Q(this,void 0,void 0,(function*(){}))}}class BackgroundReplacementVideoFrameProcessor extends BackgroundFilterVideoFrameProcessor_1.default{static create(e,t){return __awaiter$Q(this,void 0,void 0,(function*(){e=this.resolveSpec(e),t=this.resolveOptions(t),yield this.resolveOptionsAsync(t);const{logger:i}=t;if(!(yield BackgroundReplacementVideoFrameProcessor.isSupported(e,t)))return i.warn("Using no-op processor because background replacement is not supported"),new NoOpBackgroundReplacementProcessor;i.info("Using background replacement filter");const n=new BackgroundReplacementFilter_1.default(e,t);return yield n.loadAssets(),n}))}static resolveOptions(e={}){return e.logger||(e.logger=new ConsoleLogger_1.default("BackgroundReplacementProcessor",LogLevel_1.default.INFO)),super.resolveOptions(e)}static resolveOptionsAsync(e){return __awaiter$Q(this,void 0,void 0,(function*(){if(!e.imageBlob){const t=document.createElement("canvas");t.width=100,t.height=100;const i=t.getContext("2d");i.fillStyle="blue",i.fillRect(0,0,100,100);const n=yield new Promise((e=>{t.toBlob(e)}));e.imageBlob=n}}))}static isSupported(e,t){const i=Object.create(null,{isSupported:{get:()=>super.isSupported}});return __awaiter$Q(this,void 0,void 0,(function*(){e=this.resolveSpec(e),t=this.resolveOptions(t),yield this.resolveOptionsAsync(t);const n=t.imageBlob,r=URL.createObjectURL(n);try{yield BackgroundReplacementFilter_1.default.loadImage(r)}catch(e){return t.logger.info(`Failed to fetch load replacement image ${e.message}`),!1}finally{URL.revokeObjectURL(r)}return i.isSupported.call(this,e,t)}))}}var _default$2o=BackgroundReplacementVideoFrameProcessor,BackgroundReplacementVideoFrameProcessor_1$1=Object.defineProperty({default:_default$2o},"__esModule",{value:!0});class BaseConnectionHealthPolicy{constructor(e,t){this.minHealth=e.minHealth,this.maxHealth=e.maxHealth,this.currentHealth=e.initialHealth,this.currentData=t.clone()}minimumHealth(){return this.minHealth}maximumHealth(){return this.maxHealth}health(){return this.maximumHealth()}update(e){this.currentData=e}getConnectionHealthData(){return this.currentData.clone()}healthy(){return this.health()>this.minimumHealth()}healthIfChanged(){const e=this.health();return e!==this.currentHealth?(this.currentHealth=e,e):null}}var _default$2n=BaseConnectionHealthPolicy,BaseConnectionHealthPolicy_1$1=Object.defineProperty({default:_default$2n},"__esModule",{value:!0});class BitrateParameters{}var _default$2m=BitrateParameters,BitrateParameters_1$1=Object.defineProperty({default:_default$2m},"__esModule",{value:!0});class CSPMonitor{static register(){"document"in commonjsGlobal&&document.addEventListener&&CSPMonitor.shouldRegisterCSPMonitor&&(CSPMonitor.added||(document.addEventListener("securitypolicyviolation",CSPMonitor.listener),CSPMonitor.added=!0))}static unregister(){"document"in commonjsGlobal&&document.removeEventListener&&(document.removeEventListener("securitypolicyviolation",CSPMonitor.listener),CSPMonitor.loggers=new Set,CSPMonitor.added=!1)}static disable(){CSPMonitor.shouldRegisterCSPMonitor=!1,CSPMonitor.unregister()}static addLogger(e){e&&CSPMonitor.loggers.add(e)}static removeLogger(e){e&&CSPMonitor.loggers.delete(e)}}var _default$2l=CSPMonitor;CSPMonitor.loggers=new Set,CSPMonitor.shouldRegisterCSPMonitor=!0,CSPMonitor.added=!1,CSPMonitor.listener=e=>{const t=`Security Policy Violation\nBlocked URI: ${e.blockedURI}\nViolated Directive: ${e.violatedDirective}\nOriginal Policy: ${e.originalPolicy}\nDocument URI: ${e.documentURI}\nSource File: ${e.sourceFile}\nLine No.: ${e.lineNumber}\n`;for(const e of CSPMonitor.loggers)e.error(t);0===CSPMonitor.loggers.size&&console.error(t)};var CSPMonitor_1$1=Object.defineProperty({default:_default$2l},"__esModule",{value:!0}),CheckAudioConnectivityFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.AudioInputRequestFailed=1]="AudioInputRequestFailed",e[e.AudioInputPermissionDenied=2]="AudioInputPermissionDenied",e[e.ConnectionFailed=3]="ConnectionFailed",e[e.AudioNotReceived=4]="AudioNotReceived"}(i=t.CheckAudioConnectivityFeedback||(t.CheckAudioConnectivityFeedback={})),t.default=i})),CheckAudioInputFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioInputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied"}(i=t.CheckAudioInputFeedback||(t.CheckAudioInputFeedback={})),t.default=i})),CheckAudioOutputFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckAudioOutputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed"}(i=t.CheckAudioOutputFeedback||(t.CheckAudioOutputFeedback={})),t.default=i})),CheckCameraResolutionFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckCameraResolutionFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.ResolutionNotSupported=2]="ResolutionNotSupported",e[e.PermissionDenied=3]="PermissionDenied"}(i=t.CheckCameraResolutionFeedback||(t.CheckCameraResolutionFeedback={})),t.default=i})),CheckContentShareConnectivityFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckContentShareConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied",e[e.TimedOut=3]="TimedOut",e[e.ConnectionFailed=4]="ConnectionFailed"}(i=t.CheckContentShareConnectivityFeedback||(t.CheckContentShareConnectivityFeedback={})),t.default=i})),CheckNetworkTCPConnectivityFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkTCPConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",e[e.ConnectionFailed=2]="ConnectionFailed",e[e.ICENegotiationFailed=3]="ICENegotiationFailed"}(i=t.CheckNetworkTCPConnectivityFeedback||(t.CheckNetworkTCPConnectivityFeedback={})),t.default=i})),CheckNetworkUDPConnectivityFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckNetworkUDPConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.MeetingSessionURLsNotInitialized=1]="MeetingSessionURLsNotInitialized",e[e.ConnectionFailed=2]="ConnectionFailed",e[e.ICENegotiationFailed=3]="ICENegotiationFailed"}(i=t.CheckNetworkUDPConnectivityFeedback||(t.CheckNetworkUDPConnectivityFeedback={})),t.default=i})),CheckVideoConnectivityFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoConnectivityFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.VideoInputRequestFailed=1]="VideoInputRequestFailed",e[e.VideoInputPermissionDenied=2]="VideoInputPermissionDenied",e[e.ConnectionFailed=3]="ConnectionFailed",e[e.VideoNotSent=4]="VideoNotSent"}(i=t.CheckVideoConnectivityFeedback||(t.CheckVideoConnectivityFeedback={})),t.default=i})),CheckVideoInputFeedback_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.CheckVideoInputFeedback=void 0,function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.PermissionDenied=2]="PermissionDenied"}(i=t.CheckVideoInputFeedback||(t.CheckVideoInputFeedback={})),t.default=i})),__awaiter$P=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class CleanRestartedSessionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanRestartedSessionTask"}run(){return __awaiter$P(this,void 0,void 0,(function*(){this.context.peer&&this.context.peer.close(),this.context.transceiverController.reset(),this.context.localVideoSender=null,this.context.peer=null,this.context.videoDownlinkBandwidthPolicy.reset(),this.context.iceCandidateHandler=null,this.context.iceCandidates=[],this.context.previousSdpOffer=null}))}}var _default$2k=CleanRestartedSessionTask,CleanRestartedSessionTask_1$1=Object.defineProperty({default:_default$2k},"__esModule",{value:!0}),SignalingClientEventType_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SignalingClientEventType=void 0,function(e){e[e.WebSocketConnecting=0]="WebSocketConnecting",e[e.WebSocketOpen=1]="WebSocketOpen",e[e.WebSocketError=2]="WebSocketError",e[e.WebSocketClosing=3]="WebSocketClosing",e[e.WebSocketClosed=4]="WebSocketClosed",e[e.WebSocketFailed=5]="WebSocketFailed",e[e.WebSocketMessage=6]="WebSocketMessage",e[e.WebSocketSendMessageFailure=7]="WebSocketSendMessageFailure",e[e.WebSocketSentMessage=8]="WebSocketSentMessage",e[e.ProtocolDecodeFailure=9]="ProtocolDecodeFailure",e[e.ReceivedSignalFrame=10]="ReceivedSignalFrame",e[e.WebSocketSkippedMessage=11]="WebSocketSkippedMessage"}(i=t.SignalingClientEventType||(t.SignalingClientEventType={})),t.default=i})),SignalingClientEventType_1=SignalingClientEventType_1$1,__awaiter$O=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class CleanStoppedSessionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="CleanStoppedSessionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$O(this,void 0,void 0,(function*(){try{this.context.signalingClient.ready()&&(this.context.signalingClient.closeConnection(),yield this.receiveWebSocketClosedEvent())}catch(e){throw e}finally{for(const e of this.context.removableObservers)e.removeObserver();this.context.statsCollector.stop(),this.context.statsCollector=null,this.context.connectionMonitor.stop(),this.context.connectionMonitor=null,this.context.peer&&this.context.peer.close(),this.context.peer=null,this.context.localVideoSender=null,this.context.sdpAnswer=null,this.context.sdpOfferInit=null,this.context.indexFrame=null,this.context.videoDownlinkBandwidthPolicy.reset(),this.context.iceCandidateHandler=null,this.context.iceCandidates=[],this.context.turnCredentials=null,this.context.videoSubscriptions=null,this.context.transceiverController.reset(),this.context.videoUplinkBandwidthPolicy.setTransceiverController&&this.context.videoUplinkBandwidthPolicy.setTransceiverController(void 0),this.context.videoDownlinkBandwidthPolicy.bindToTileController&&this.context.videoDownlinkBandwidthPolicy.bindToTileController(void 0);const e=this.context.videoTileController.getLocalVideoTile();e&&e.bindVideoStream("",!0,null,null,null,null),this.context.videoTileController.removeAllVideoTiles()}}))}receiveWebSocketClosedEvent(){return new Promise(((e,t)=>{const i=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("CleanStoppedSessionTask got canceled while waiting for the WebSocket closed event"))}handleSignalingClientEvent(t){t.type===SignalingClientEventType_1.default.WebSocketClosed&&(this.signalingClient.removeObserver(this),e())}}(this.context.signalingClient);this.taskCanceler=i,this.context.signalingClient.registerObserver(i)}))}}var _default$2j=CleanStoppedSessionTask,CleanStoppedSessionTask_1$1=Object.defineProperty({default:_default$2j},"__esModule",{value:!0}),ClientMetricReportDirection_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportDirection=void 0,function(e){e[e.UPSTREAM=0]="UPSTREAM",e[e.DOWNSTREAM=1]="DOWNSTREAM"}(i=t.ClientMetricReportDirection||(t.ClientMetricReportDirection={})),t.default=i})),ClientMetricReportMediaType_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.ClientMetricReportMediaType=void 0,function(e){e[e.AUDIO=0]="AUDIO",e[e.VIDEO=1]="VIDEO"}(i=t.ClientMetricReportMediaType||(t.ClientMetricReportMediaType={})),t.default=i}));class ClientVideoStreamReceivingReport{}var _default$2i=ClientVideoStreamReceivingReport,ClientVideoStreamReceivingReport_1$1=Object.defineProperty({default:_default$2i},"__esModule",{value:!0});class ConnectionHealthData{constructor(){this.connectionStartTimestampMs=0,this.consecutiveStatsWithNoPackets=0,this.lastPacketLossInboundTimestampMs=0,this.lastGoodSignalTimestampMs=0,this.lastWeakSignalTimestampMs=0,this.lastNoSignalTimestampMs=0,this.consecutiveMissedPongs=0,this.packetsReceivedInLastMinute=[],this.fractionPacketsLostInboundInLastMinute=[],this.audioSpeakerDelayMs=0,this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}static isTimestampRecent(e,t){return Date.now()<e+t}setConnectionStartTime(){this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}reset(){this.connectionStartTimestampMs=0,this.consecutiveStatsWithNoPackets=0,this.lastPacketLossInboundTimestampMs=0,this.lastGoodSignalTimestampMs=0,this.lastWeakSignalTimestampMs=0,this.lastNoSignalTimestampMs=0,this.consecutiveMissedPongs=0,this.packetsReceivedInLastMinute=[],this.fractionPacketsLostInboundInLastMinute=[],this.audioSpeakerDelayMs=0,this.connectionStartTimestampMs=Date.now(),this.lastGoodSignalTimestampMs=Date.now()}isConnectionStartRecent(e){return ConnectionHealthData.isTimestampRecent(this.connectionStartTimestampMs,e)}isLastPacketLossRecent(e){return ConnectionHealthData.isTimestampRecent(this.lastPacketLossInboundTimestampMs,e)}isGoodSignalRecent(e){return ConnectionHealthData.isTimestampRecent(this.lastGoodSignalTimestampMs,e)}isWeakSignalRecent(e){return ConnectionHealthData.isTimestampRecent(this.lastWeakSignalTimestampMs,e)}isNoSignalRecent(e){return ConnectionHealthData.isTimestampRecent(this.lastNoSignalTimestampMs,e)}clone(){const e=new ConnectionHealthData;return e.connectionStartTimestampMs=this.connectionStartTimestampMs,e.consecutiveStatsWithNoPackets=this.consecutiveStatsWithNoPackets,e.lastPacketLossInboundTimestampMs=this.lastPacketLossInboundTimestampMs,e.lastGoodSignalTimestampMs=this.lastGoodSignalTimestampMs,e.lastWeakSignalTimestampMs=this.lastWeakSignalTimestampMs,e.lastNoSignalTimestampMs=this.lastNoSignalTimestampMs,e.consecutiveMissedPongs=this.consecutiveMissedPongs,e.packetsReceivedInLastMinute=this.packetsReceivedInLastMinute.slice(0),e.fractionPacketsLostInboundInLastMinute=this.fractionPacketsLostInboundInLastMinute.slice(0),e.audioSpeakerDelayMs=this.audioSpeakerDelayMs,e}setConsecutiveMissedPongs(e){this.consecutiveMissedPongs=e}setConsecutiveStatsWithNoPackets(e){this.consecutiveStatsWithNoPackets=e}setLastPacketLossInboundTimestampMs(e){this.lastPacketLossInboundTimestampMs=e}setLastNoSignalTimestampMs(e){this.lastNoSignalTimestampMs=e}setLastWeakSignalTimestampMs(e){this.lastWeakSignalTimestampMs=e}setLastGoodSignalTimestampMs(e){this.lastGoodSignalTimestampMs=e}setAudioSpeakerDelayMs(e){this.audioSpeakerDelayMs=e}}var _default$2h=ConnectionHealthData,ConnectionHealthData_1$1=Object.defineProperty({default:_default$2h},"__esModule",{value:!0});class ConnectionHealthPolicyConfiguration{constructor(){this.minHealth=0,this.maxHealth=1,this.initialHealth=1,this.connectionUnhealthyThreshold=25,this.noSignalThresholdTimeMs=1e4,this.connectionWaitTimeMs=1e4,this.zeroBarsNoSignalTimeMs=5e3,this.oneBarWeakSignalTimeMs=5e3,this.twoBarsTimeMs=5e3,this.threeBarsTimeMs=1e4,this.fourBarsTimeMs=2e4,this.fiveBarsTimeMs=6e4,this.cooldownTimeMs=6e4,this.pastSamplesToConsider=15,this.goodSignalTimeMs=15e3,this.fractionalLoss=.5,this.packetsExpected=50,this.maximumTimesToWarn=2,this.missedPongsLowerThreshold=1,this.missedPongsUpperThreshold=4,this.maximumAudioDelayMs=6e4,this.maximumAudioDelayDataPoints=10}}var _default$2g=ConnectionHealthPolicyConfiguration,ConnectionHealthPolicyConfiguration_1$1=Object.defineProperty({default:_default$2g},"__esModule",{value:!0}),ContentShareConstants;!function(e){e.Modality="#content"}(ContentShareConstants||(ContentShareConstants={}));var _default$2f=ContentShareConstants,ContentShareConstants_1$1=Object.defineProperty({default:_default$2f},"__esModule",{value:!0});class IntervalScheduler{constructor(e){this.intervalMs=e}start(e){this.stop(),this.timer=setInterval(e,this.intervalMs)}stop(){void 0!==this.timer&&(clearInterval(this.timer),this.timer=void 0)}running(){return void 0!==this.timer}}var _default$2e=IntervalScheduler,IntervalScheduler_1$1=Object.defineProperty({default:_default$2e},"__esModule",{value:!0}),IntervalScheduler_1=IntervalScheduler_1$1,__awaiter$N=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class MediaDeviceProxyHandler{constructor(){this.scheduler=null,this.devices=null,this.deviceChangeListeners=new Set,this.get=(e,t,i)=>{if(!Reflect.has(e,t))return;if(!("ondevicechange"in navigator.mediaDevices)){if("addEventListener"===t)return this.patchAddEventListener(e,t,i);if("removeEventListener"===t)return this.patchRemoveEventListener(e,t,i)}const n=Reflect.get(e,t,i);return"function"==typeof n?n.bind(e):n},this.patchAddEventListener=(e,t,i)=>{const n=Reflect.get(e,t,i);return(t,i,r)=>{if("devicechange"!==t)return Reflect.apply(n,e,[t,i,r]);this.deviceChangeListeners.add(i),this.scheduler||(this.scheduler=new IntervalScheduler_1.default(MediaDeviceProxyHandler.INTERVAL_MS),this.scheduler.start(this.pollDeviceLists))}},this.patchRemoveEventListener=(e,t,i)=>{const n=Reflect.get(e,t,i);return(t,i,r)=>{if("devicechange"!==t)return Reflect.apply(n,e,[t,i,r]);this.deviceChangeListeners.delete(i),0===this.deviceChangeListeners.size&&this.scheduler&&(this.scheduler.stop(),this.scheduler=null)}},this.pollDeviceLists=()=>__awaiter$N(this,void 0,void 0,(function*(){const e=yield this.sortedDeviceList();if(this.devices){(e.length!==this.devices.length||e.some(((e,t)=>e.deviceId!==this.devices[t].deviceId)))&&this.handleDeviceChangeEvent()}this.devices=e}))}sortedDeviceList(){return __awaiter$N(this,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).sort(((e,t)=>e.deviceId<t.deviceId?1:e.deviceId>t.deviceId?-1:0))}))}handleDeviceChangeEvent(){for(const e of this.deviceChangeListeners)AsyncScheduler_1.default.nextTick((()=>{if(this.deviceChangeListeners.has(e)){const t=new Event("devicechange");"function"==typeof e?e(t):e.handleEvent(t)}}))}}var _default$2d=MediaDeviceProxyHandler;MediaDeviceProxyHandler.INTERVAL_MS=1e3;var MediaDeviceProxyHandler_1$1=Object.defineProperty({default:_default$2d},"__esModule",{value:!0}),MediaDeviceProxyHandler_1=MediaDeviceProxyHandler_1$1;class DefaultMediaDeviceFactory{constructor(){this.isMediaDevicesSupported="undefined"!=typeof navigator&&!!navigator.mediaDevices}create(){if(this.isMediaDevicesSupported)return new Proxy(navigator.mediaDevices,new MediaDeviceProxyHandler_1.default);throw new Error("navigator.mediaDevices is not supported")}}var _default$2c=DefaultMediaDeviceFactory,DefaultMediaDeviceFactory_1$1=Object.defineProperty({default:_default$2c},"__esModule",{value:!0}),Types=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.None=t.Some=t.Maybe=void 0;class i{static of(e){return null==e?r.of():n.of(e)}}t.Maybe=i;class n{constructor(e){this.value=e,this.isSome=!0,this.isNone=!1}map(e){return i.of(e(this.value))}flatMap(e){return e(this.value)}get(){return this.value}getOrElse(e){return this.value}defaulting(e){return i.of(this.getOrElse(e))}static of(e){if(null==e)throw new Error("value is ${value}");return new n(e)}}t.Some=n;class r{constructor(){this.isSome=!1,this.isNone=!0}get(){throw new Error("value is null")}getOrElse(e){return e}map(e){return new r}flatMap(e){return new r}defaulting(e){return i.of(this.getOrElse(e))}static of(){return new r}}t.None=r})),ContentShareConstants_1=ContentShareConstants_1$1;class DefaultModality{constructor(e){this._id=e}id(){return this._id}base(){return this._id?this._id.split(DefaultModality.MODALITY_SEPARATOR)[0]:""}modality(){if(!this._id)return"";const e=this._id.split(DefaultModality.MODALITY_SEPARATOR);return 2===e.length?e[1]:""}hasModality(e){return""!==e&&this.modality()===e}withModality(e){const t=new DefaultModality(this.base()+DefaultModality.MODALITY_SEPARATOR+e);return""===e||""===this.base()||new DefaultModality(t._id).modality()!==e?new DefaultModality(this.base()):t}}var _default$2b=DefaultModality;DefaultModality.MODALITY_SEPARATOR=ContentShareConstants_1.default.Modality[0],DefaultModality.MODALITY_CONTENT=ContentShareConstants_1.default.Modality.substr(1);var DefaultModality_1$1=Object.defineProperty({default:_default$2b},"__esModule",{value:!0});class VideoTileState{constructor(){this.tileId=null,this.localTile=!1,this.localTileStarted=!1,this.isContent=!1,this.active=!1,this.paused=!1,this.poorConnection=!1,this.boundAttendeeId=null,this.boundExternalUserId=null,this.boundVideoStream=null,this.boundVideoElement=null,this.nameplate=null,this.videoStreamContentWidth=null,this.videoStreamContentHeight=null,this.videoElementCSSWidthPixels=null,this.videoElementCSSHeightPixels=null,this.devicePixelRatio=0,this.videoElementPhysicalWidthPixels=null,this.videoElementPhysicalHeightPixels=null,this.streamId=null}clone(){const e=new VideoTileState;return e.tileId=this.tileId,e.localTile=this.localTile,e.isContent=this.isContent,e.active=this.active,e.paused=this.paused,e.poorConnection=this.poorConnection,e.boundAttendeeId=this.boundAttendeeId,e.boundExternalUserId=this.boundExternalUserId,e.boundVideoStream=this.boundVideoStream,e.boundVideoElement=this.boundVideoElement,e.nameplate=this.nameplate,e.videoStreamContentWidth=this.videoStreamContentWidth,e.videoStreamContentHeight=this.videoStreamContentHeight,e.videoElementCSSWidthPixels=this.videoElementCSSWidthPixels,e.videoElementCSSHeightPixels=this.videoElementCSSHeightPixels,e.devicePixelRatio=this.devicePixelRatio,e.videoElementPhysicalWidthPixels=this.videoElementPhysicalWidthPixels,e.videoElementPhysicalHeightPixels=this.videoElementPhysicalHeightPixels,e.streamId=this.streamId,e}}var _default$2a=VideoTileState,VideoTileState_1$1=Object.defineProperty({default:_default$2a},"__esModule",{value:!0}),DefaultModality_1=DefaultModality_1$1,VideoTileState_1=VideoTileState_1$1,__awaiter$M=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultVideoTile{constructor(e,t,i,n){this.tileController=i,this.devicePixelRatioMonitor=n,this.tileState=new VideoTileState_1.default,this.tileState.tileId=e,this.tileState.localTile=t,this.devicePixelRatioMonitor.registerObserver(this)}static connectVideoStreamToVideoElement(e,t,i){const n=i&&"environment"!==e.getVideoTracks()[0].getSettings().facingMode?"rotateY(180deg)":"";DefaultVideoTile.setVideoElementFlag(t,"disablePictureInPicture",i),DefaultVideoTile.setVideoElementFlag(t,"disableRemotePlayback",i),t.style.transform!==n&&(t.style.transform=n),t.hasAttribute("controls")&&t.removeAttribute("controls"),t.hasAttribute("autoplay")||t.setAttribute("autoplay","true"),t.hasAttribute("playsinline")||t.setAttribute("playsinline","true"),t.hasAttribute("muted")||(t.setAttribute("muted","true"),t.muted=!0),t.srcObject!==e&&(t.srcObject=e),(new DefaultBrowserBehavior_1.default).requiresVideoElementWorkaround()&&AsyncScheduler_1.default.nextTick((()=>__awaiter$M(this,void 0,void 0,(function*(){try{yield t.play()}catch(e){}}))))}static disconnectVideoStreamFromVideoElement(e,t,i=!1){if(e)if(t)i||(e.srcObject=null,e.style.transform="");else{if(!e.srcObject)return;e.pause(),e.style.transform="",DefaultVideoTile.setVideoElementFlag(e,"disablePictureInPicture",!1),DefaultVideoTile.setVideoElementFlag(e,"disableRemotePlayback",!1);const t=e.srcObject,i=t.getTracks();for(const e of i)e.stop(),t.removeTrack(e);if((new DefaultBrowserBehavior_1.default).requiresVideoElementWorkaround()){const t=e.srcObject;AsyncScheduler_1.default.nextTick((()=>{e.srcObject===t&&(e.srcObject=null)}))}else e.srcObject=null}}destroy(){this.devicePixelRatioMonitor.removeObserver(this),this.tileState.boundVideoElement&&this.tileState.boundVideoElement.srcObject===this.tileState.boundVideoStream&&DefaultVideoTile.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,!1),this.tileState=new VideoTileState_1.default}devicePixelRatioChanged(e){this.tileState.devicePixelRatio=e,this.sendTileStateUpdate()}id(){return this.tileState.tileId}state(){return this.tileState.clone()}stateRef(){return this.tileState}bindVideoStream(e,t,i,n,r,o,a){let s=!1;this.tileState.boundAttendeeId!==e&&(this.tileState.boundAttendeeId=e,new DefaultModality_1.default(e).hasModality(DefaultModality_1.default.MODALITY_CONTENT)&&(this.tileState.isContent=!0),s=!0),this.tileState.boundExternalUserId!==a&&(this.tileState.boundExternalUserId=a,s=!0),this.tileState.localTile!==t&&(this.tileState.localTile=t,s=!0),this.tileState.boundVideoStream!==i&&(this.tileState.boundVideoStream=i,s=!0),this.tileState.videoStreamContentWidth!==n&&(this.tileState.videoStreamContentWidth=n,s=!0),this.tileState.videoStreamContentHeight!==r&&(this.tileState.videoStreamContentHeight=r,s=!0),this.tileState.streamId!==o&&(this.tileState.streamId=o,s=!0),s&&this.sendTileStateUpdate()}bindVideoElement(e){let t=!1;this.tileState.boundVideoElement!==e&&(this.tileState.boundVideoElement=e,t=!0),null!==this.tileState.boundVideoElement?(this.tileState.videoElementCSSWidthPixels!==e.clientWidth&&(this.tileState.videoElementCSSWidthPixels=e.clientWidth,t=!0),this.tileState.videoElementCSSHeightPixels!==e.clientHeight&&(this.tileState.videoElementCSSHeightPixels=e.clientHeight,t=!0)):(this.tileState.videoElementCSSWidthPixels=null,this.tileState.videoElementCSSHeightPixels=null),t&&this.sendTileStateUpdate()}pause(){this.tileState.paused||(this.tileState.paused=!0,this.sendTileStateUpdate())}unpause(){this.tileState.paused&&(this.tileState.paused=!1,this.sendTileStateUpdate())}markPoorConnection(){return!this.tileState.poorConnection&&(this.tileState.poorConnection=!0,this.sendTileStateUpdate(),!0)}unmarkPoorConnection(){return!!this.tileState.poorConnection&&(this.tileState.poorConnection=!1,this.sendTileStateUpdate(),!0)}capture(){if(!this.tileState.active)return null;const e=document.createElement("canvas"),t=this.tileState.boundVideoElement;e.width=t.videoWidth||t.width,e.height=t.videoHeight||t.height;const i=e.getContext("2d");return i.drawImage(t,0,0,e.width,e.height),i.getImageData(0,0,e.width,e.height)}setStreamId(e){this.tileState.streamId=e,this.tileController.sendTileStateUpdate(this.state())}sendTileStateUpdate(){this.updateActiveState(),this.updateVideoStreamOnVideoElement(),this.updateVideoElementPhysicalPixels(),this.tileController.sendTileStateUpdate(this.state())}updateActiveState(){this.tileState.active=!(this.tileState.paused||this.tileState.poorConnection||!this.tileState.boundAttendeeId||!this.tileState.boundVideoElement||!this.tileState.boundVideoStream)}updateVideoElementPhysicalPixels(){"number"==typeof this.tileState.videoElementCSSWidthPixels&&"number"==typeof this.tileState.videoElementCSSHeightPixels?(this.tileState.videoElementPhysicalWidthPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSWidthPixels,this.tileState.videoElementPhysicalHeightPixels=this.tileState.devicePixelRatio*this.tileState.videoElementCSSHeightPixels):(this.tileState.videoElementPhysicalWidthPixels=null,this.tileState.videoElementPhysicalHeightPixels=null)}updateVideoStreamOnVideoElement(){this.tileState.active?DefaultVideoTile.connectVideoStreamToVideoElement(this.tileState.boundVideoStream,this.tileState.boundVideoElement,this.tileState.localTile):DefaultVideoTile.disconnectVideoStreamFromVideoElement(this.tileState.boundVideoElement,this.tileState.paused,this.tileController.keepLastFrameWhenPaused)}static setVideoElementFlag(e,t,i){t in e&&(e[t]=i)}}var _default$29=DefaultVideoTile,DefaultVideoTile_1$1=Object.defineProperty({default:_default$29},"__esModule",{value:!0}),AudioTransformDevice=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isAudioTransformDevice=void 0,t.isAudioTransformDevice=function(e){return!!e&&"object"==typeof e&&"mute"in e&&"stop"in e&&"intrinsicDevice"in e}}));class DeviceSelection{constructor(){this.groupId=""}matchesConstraints(e){return JSON.stringify(this.constraints)===JSON.stringify(e)}}var _default$28=DeviceSelection,DeviceSelection_1$1=Object.defineProperty({default:_default$28},"__esModule",{value:!0});class GetUserMediaError extends Error{constructor(e,t){super(t||"Error fetching device."),this.cause=e,this.name="GetUserMediaError"}}var _default$27=GetUserMediaError,GetUserMediaError_1$1=Object.defineProperty({default:_default$27},"__esModule",{value:!0}),GetUserMediaError_1=GetUserMediaError_1$1;class NotFoundError extends GetUserMediaError_1.default{constructor(e){super(e),this.name="NotFoundError"}}var _default$26=NotFoundError,NotFoundError_1$1=Object.defineProperty({default:_default$26},"__esModule",{value:!0});class NotReadableError extends GetUserMediaError_1.default{constructor(e){super(e),this.name="NotReadableError"}}var _default$25=NotReadableError,NotReadableError_1$1=Object.defineProperty({default:_default$25},"__esModule",{value:!0});class OverconstrainedError extends GetUserMediaError_1.default{constructor(e,t){super(e),this.constraint=t,this.name="OverconstrainedError"}}var _default$24=OverconstrainedError,OverconstrainedError_1$1=Object.defineProperty({default:_default$24},"__esModule",{value:!0});class PermissionDeniedError extends GetUserMediaError_1.default{constructor(e,t){super(e,t),this.name="PermissionDeniedError"}}var _default$23=PermissionDeniedError,PermissionDeniedError_1$1=Object.defineProperty({default:_default$23},"__esModule",{value:!0});class TypeError$1 extends GetUserMediaError_1.default{constructor(e){super(e),this.name="TypeError"}}var _default$22=TypeError$1,_TypeError=Object.defineProperty({default:_default$22},"__esModule",{value:!0});class VideoQualitySettings{constructor(e,t,i,n){this.videoWidth=e,this.videoHeight=t,this.videoFrameRate=i,this.videoMaxBandwidthKbps=n}}var _default$21=VideoQualitySettings,VideoQualitySettings_1$1=Object.defineProperty({default:_default$21},"__esModule",{value:!0}),VideoTransformDevice=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isVideoTransformDevice=void 0,t.isVideoTransformDevice=function(e){return!!e&&"object"==typeof e&&"transformStream"in e&&"stop"in e&&"intrinsicDevice"in e}})),DefaultMediaDeviceFactory_1=DefaultMediaDeviceFactory_1$1,Types_1=Types,DefaultVideoTile_1=DefaultVideoTile_1$1,AudioTransformDevice_1=AudioTransformDevice,DeviceSelection_1=DeviceSelection_1$1,NotFoundError_1=NotFoundError_1$1,NotReadableError_1=NotReadableError_1$1,OverconstrainedError_1=OverconstrainedError_1$1,PermissionDeniedError_1=PermissionDeniedError_1$1,TypeError_1=_TypeError,VideoQualitySettings_1=VideoQualitySettings_1$1,VideoTransformDevice_1=VideoTransformDevice,__awaiter$L=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};function fillSMPTEColorBars(e,t){const i=e.width,n=e.height,r=2*n/3,o=3*n/4,a=n,s=["#c0c0c0","#c0c000","#00c0c0","#00c000","#c000c0","#c00000","#0000c0"],c=["#0000c0","#000000","#c000c0","#000000","#00c0c0","#000000","#c0c0c0"],l=["#00214c","#ffffff","#32006a","#131313","#090909","#131313","#1d1d1d","#131313"],d=[0*i,1*i/4*(5/7),2*i/4*(5/7),3*i/4*(5/7),i*(5/7),i*(5/7+1/21),i*(5/7+2/21),i*(6/7),1*i],u=i/s.length,h=e.getContext("2d");for(let e=0;e<s.length;e++)h.fillStyle=s[e],h.fillRect(t+e*u,0,u,r),h.fillStyle=c[e],h.fillRect(t+e*u,r,u,o-r);for(let e=0;e<l.length;e++)h.fillStyle=l[e],h.fillRect(t+d[e],o,d[e+1]-d[e],a-o)}function makeColorBars(e,t){const i=new IntervalScheduler_1.default(1e3),n=e.getContext("2d"),r=e.captureStream(5)||null;if(!r)return;i.start((()=>{"smpte"===t?fillSMPTEColorBars(e,0):(n.fillStyle=t,n.fillRect(0,0,e.width,e.height))}));const o=()=>{i.stop()};return r.getVideoTracks()[0].addEventListener("ended",o),{listener:o,scheduler:i,stream:r}}class DefaultDeviceController{constructor(e,t,i=new DefaultBrowserBehavior_1.default){this.logger=e,this.browserBehavior=i,this.deviceInfoCache=null,this.activeDevices={audio:null,video:null},this.chosenVideoTransformDevice=null,this.audioOutputDeviceId=null,this.deviceChangeObservers=new Set,this.deviceLabelTrigger=()=>navigator.mediaDevices.getUserMedia({audio:!0,video:!0}),this.audioInputDestinationNode=null,this.audioInputSourceNode=null,this.videoInputQualitySettings=null,this.useWebAudio=!1,this.inputDeviceCount=0,this.mediaStreamMuteObserver=(e,t)=>{for(const i of this.deviceChangeObservers)AsyncScheduler_1.default.nextTick((()=>{this.deviceChangeObservers.has(i)&&i.audioInputMuteStateChanged&&i.audioInputMuteStateChanged(e,t)}))},this.alreadyHandlingDeviceChange=!1;const{enableWebAudio:n=!1}=t||{};this.useWebAudio=n,this.muteCallback=e=>{var t;null===(t=this.transform)||void 0===t||t.device.mute(e)},this.videoInputQualitySettings=new VideoQualitySettings_1.default(DefaultDeviceController.defaultVideoWidth,DefaultDeviceController.defaultVideoHeight,DefaultDeviceController.defaultVideoFrameRate,DefaultDeviceController.defaultVideoMaxBandwidthKbps);const r=this.browserBehavior.requiresResolutionAlignment(this.videoInputQualitySettings.videoWidth,this.videoInputQualitySettings.videoHeight);this.videoInputQualitySettings.videoWidth=r[0],this.videoInputQualitySettings.videoHeight=r[1],this.logger.info(`DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`);try{this.mediaDeviceWrapper=(new DefaultMediaDeviceFactory_1.default).create();const e=navigator.mediaDevices.getSupportedConstraints();this.logger.info(`Supported Constraints in this browser ${JSON.stringify(e)}`)}catch(t){e.error(t.message)}}isWatchingForDeviceChanges(){return!!this.onDeviceChangeCallback}ensureWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()||(this.logger.info("Starting devicechange listener."),this.onDeviceChangeCallback=()=>{this.logger.info("Device change event callback is triggered"),this.handleDeviceChange()},null===(e=this.mediaDeviceWrapper)||void 0===e||e.addEventListener("devicechange",this.onDeviceChangeCallback))}stopWatchingDeviceChanges(){var e;this.isWatchingForDeviceChanges()&&(this.logger.info("Stopping devicechange listener."),null===(e=this.mediaDeviceWrapper)||void 0===e||e.removeEventListener("devicechange",this.onDeviceChangeCallback),this.onDeviceChangeCallback=void 0)}shouldObserveDeviceChanges(){if(this.deviceChangeObservers.size)return!0;return this.activeDevices.audio&&null!==this.activeDevices.audio.constraints||this.activeDevices.video&&null!==this.activeDevices.video.constraints||!!this.audioOutputDeviceId}watchForDeviceChangesIfNecessary(){this.shouldObserveDeviceChanges()?this.ensureWatchingDeviceChanges():this.stopWatchingDeviceChanges()}destroy(){var e,t;return __awaiter$L(this,void 0,void 0,(function*(){this.stopWatchingDeviceChanges(),yield this.chooseAudioInputDevice(null),yield this.chooseVideoInputDevice(null),null===(e=this.audioInputSourceNode)||void 0===e||e.disconnect(),null===(t=this.audioInputDestinationNode)||void 0===t||t.disconnect(),this.audioInputSourceNode=void 0,this.audioInputDestinationNode=void 0}))}listAudioInputDevices(e=!1){return __awaiter$L(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("audioinput",e);return this.trace("listAudioInputDevices",e,t),t}))}listVideoInputDevices(e=!1){return __awaiter$L(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("videoinput",e);return this.trace("listVideoInputDevices",e,t),t}))}listAudioOutputDevices(e=!1){return __awaiter$L(this,void 0,void 0,(function*(){const t=yield this.listDevicesOfKind("audiooutput",e);return this.trace("listAudioOutputDevices",e,t),t}))}pushAudioMeetingStateForPermissions(e){var t,i;null===(i=null===(t=this.boundAudioVideoController)||void 0===t?void 0:t.eventController)||void 0===i||i.publishEvent(null===e?"audioInputUnselected":"audioInputSelected")}pushVideoMeetingStateForPermissions(e){var t,i;null===(i=null===(t=this.boundAudioVideoController)||void 0===t?void 0:t.eventController)||void 0===i||i.publishEvent(null===e?"videoInputUnselected":"videoInputSelected")}chooseAudioInputDevice(e){var t,i;return __awaiter$L(this,void 0,void 0,(function*(){if(void 0===e)return void this.logger.error("Audio input device cannot be undefined");let n=this.useWebAudio;this.useWebAudio||this.logger.debug("Not using Web Audio. No need to recreate audio context."),"suspended"===(null===(t=DefaultDeviceController.audioContext)||void 0===t?void 0:t.state)&&(n=!1),n&&!this.browserBehavior.requiresContextRecreationForAudioWorklet()&&(this.logger.debug("Browser does not require audio context recreation hack."),n=!1),n&&!this.transform&&AudioTransformDevice_1.isAudioTransformDevice(e)&&(this.logger.debug("Neither device is a transform. No need to recreate audio context."),n=!1),n&&(this.logger.info("Recreating audio context when selecting new device."),this.transform&&(this.transform.nodes&&(this.transform.nodes.end.disconnect(),this.transform.nodes=void 0),this.transform=void 0),this.audioInputSourceNode&&(this.audioInputSourceNode.disconnect(),this.audioInputSourceNode=void 0),this.audioInputDestinationNode&&(this.audioInputDestinationNode.disconnect(),this.audioInputDestinationNode=void 0),DefaultDeviceController.closeAudioContext()),AudioTransformDevice_1.isAudioTransformDevice(e)?(this.logger.info(`Choosing transform input device ${e}`),yield this.chooseAudioTransformInputDevice(e)):(this.logger.info(`Choosing intrinsic audio input device ${e}`),this.removeTransform(),yield this.chooseInputIntrinsicDevice("audio",e,!1),this.trace("chooseAudioInputDevice",e,"success")),n&&(null===(i=this.boundAudioVideoController)||void 0===i?void 0:i.rtcPeerConnection)&&this.boundAudioVideoController.restartLocalAudio((()=>{this.logger.info("Local audio restarted.")})),this.pushAudioMeetingStateForPermissions(e)}))}chooseAudioTransformInputDevice(e){var t;return __awaiter$L(this,void 0,void 0,(function*(){if((null===(t=this.transform)||void 0===t?void 0:t.device)===e)return;if(!this.useWebAudio)throw new Error("Cannot apply transform device without enabling Web Audio.");const i=DefaultDeviceController.getAudioContext();if(i instanceof OfflineAudioContext);else switch(i.state){case"running":break;case"closed":throw new Error("Cannot choose a transform device with a closed audio context.");case"suspended":yield i.resume()}let n;try{n=yield e.createAudioNode(i)}catch(e){throw this.logger.error(`Unable to create transform device node: ${e}.`),e}const r=yield e.intrinsicDevice();yield this.chooseInputIntrinsicDevice("audio",r,!1),this.logger.debug(`Got inner stream: ${r}.`),this.setTransform(e,n)}))}chooseVideoTransformInputDevice(e){var t,i;return __awaiter$L(this,void 0,void 0,(function*(){if(e===this.chosenVideoTransformDevice)return void this.logger.info("Reselecting same VideoTransformDevice");const n=this.chosenVideoTransformDevice;n&&this.logger.info("Switched from previous VideoTransformDevice");const r=!!n,o=yield e.intrinsicDevice();if(!this.isMediaStreamReusableByDeviceId(null===(t=this.activeDevices.video)||void 0===t?void 0:t.stream,o))return this.logger.info("video transform device needs new intrinsic device"),r&&n.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=e,this.activeDevices.video=null,void(yield this.chooseInputIntrinsicDevice("video",o,!1,!0));this.chosenVideoTransformDevice=e;const a=this.activeDevices.video.stream;if(this.logger.info("video transform device uses previous stream"),!o.id){const e=o;e.width=e.width||this.videoInputQualitySettings.videoWidth,e.height=e.height||this.videoInputQualitySettings.videoHeight,e.frameRate=e.frameRate||this.videoInputQualitySettings.videoFrameRate,yield a.getVideoTracks()[0].applyConstraints(e)}yield e.transformStream(this.activeDevices.video.stream),(null===(i=this.boundAudioVideoController)||void 0===i?void 0:i.videoTileController.hasStartedLocalVideoTile())&&(this.boundAudioVideoController.replaceLocalVideo?this.restartLocalVideoAfterSelection(!1,!0):yield this.boundAudioVideoController.update({needsRenegotiation:!0}))}))}chooseVideoInputDevice(e){return __awaiter$L(this,void 0,void 0,(function*(){if(void 0!==e){if(VideoTransformDevice_1.isVideoTransformDevice(e))return this.logger.info(`Choosing video transform device ${e}`),this.chooseVideoTransformInputDevice(e);this.updateMaxBandwidthKbps(),this.chosenVideoInputIsTransformDevice()&&(this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null),yield this.chooseInputIntrinsicDevice("video",e,!1),this.trace("chooseVideoInputDevice",e),this.pushVideoMeetingStateForPermissions(e)}else this.logger.error("Video input device cannot be undefined")}))}chooseAudioOutputDevice(e){return __awaiter$L(this,void 0,void 0,(function*(){this.audioOutputDeviceId=e,this.watchForDeviceChangesIfNecessary(),yield this.bindAudioOutput(),this.trace("chooseAudioOutputDevice",e,null)}))}addDeviceChangeObserver(e){this.logger.info("adding device change observer"),this.deviceChangeObservers.add(e),this.watchForDeviceChangesIfNecessary(),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.logger.info("removing device change observer"),this.deviceChangeObservers.delete(e),this.watchForDeviceChangesIfNecessary(),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){var e,t;if(!this.activeDevices.audio)return null;const i=null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.end;if(i){const e=i.context.createAnalyser();return e.removeOriginalInputs=()=>{try{i.disconnect(e)}catch(e){}},i.connect(e),e}return this.createAnalyserNodeForRawAudioInput()}createAnalyserNodeForRawAudioInput(){return this.activeDevices.audio?this.createAnalyserNodeForStream(this.activeDevices.audio.stream):null}createAnalyserNodeForStream(e){const t=DefaultDeviceController.getAudioContext(),i=t.createAnalyser(),n=t.createMediaStreamSource(e);return n.connect(i),this.trace("createAnalyserNodeForAudioInput"),i.removeOriginalInputs=()=>{try{n.disconnect(i)}catch(e){}},i}startVideoPreviewForVideoInput(e){if(!this.activeDevices.video)return this.logger.warn("cannot bind video preview since video input device has not been chosen"),void this.trace("startVideoPreviewForVideoInput",e.id);const t=e.srcObject;t&&this.activeDevices.video.stream!==t&&(this.releaseMediaStream(e.srcObject),DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(e,!1)),this.chosenVideoTransformDevice?DefaultVideoTile_1.default.connectVideoStreamToVideoElement(this.chosenVideoTransformDevice.outputMediaStream,e,!0):DefaultVideoTile_1.default.connectVideoStreamToVideoElement(this.activeDevices.video.stream,e,!0),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){const t=e.srcObject,i=this.activeDevices.video;i&&this.releaseActiveDevice(i),t&&(this.releaseMediaStream(t),DefaultVideoTile_1.default.disconnectVideoStreamFromVideoElement(e,!1)),this.trace("stopVideoPreviewForVideoInput",e.id)}setDeviceLabelTrigger(e){if(this.deviceInfoCache)for(const e of this.deviceInfoCache)if(!e.label){this.deviceInfoCache=null;break}this.deviceLabelTrigger=e,this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){let t=null;return this.useWebAudio?(t=DefaultDeviceController.getAudioContext().createMediaStreamSource(e),t.connect(this.getMediaStreamOutputNode())):this.logger.warn("WebAudio is not enabled, mixIntoAudioInput will not work"),this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,i,n){const r=this.browserBehavior.requiresResolutionAlignment(e,t);this.videoInputQualitySettings=new VideoQualitySettings_1.default(r[0],r[1],i,n),this.updateMaxBandwidthKbps()}getVideoInputQualitySettings(){return this.videoInputQualitySettings}acquireAudioInputStream(){return this.acquireInputStream("audio")}acquireVideoInputStream(){return this.acquireInputStream("video")}acquireDisplayInputStream(e){return __awaiter$L(this,void 0,void 0,(function*(){return e&&e.video&&e.video.mandatory&&e.video.mandatory.chromeMediaSource&&e.video.mandatory.chromeMediaSourceId?navigator.mediaDevices.getUserMedia(e):navigator.mediaDevices.getDisplayMedia(e)}))}releaseAudioTransformStream(){this.logger.info("Stopping audio track for Web Audio graph"),this.stopTracksAndRemoveCallbacks("audio"),this.logger.info("Removing audio transform, if there is one."),this.removeTransform(),this.audioInputSourceNode&&(this.audioInputSourceNode.disconnect(),this.audioInputSourceNode=void 0),this.audioInputDestinationNode&&(this.audioInputDestinationNode.disconnect(),this.audioInputDestinationNode=void 0)}releaseVideoTransformStream(){this.logger.info("Stopping video track for transform"),this.stopTracksAndRemoveCallbacks("video"),this.logger.info("Disconnecting video transform"),this.chosenVideoTransformDevice.onOutputStreamDisconnect(),this.chosenVideoTransformDevice=null}stopTracksAndRemoveCallbacks(e){const t=this.activeDevices[e];if(!t)return;const i=t.endedCallback,n=t.trackMuteCallback,r=t.trackUnmuteCallback;for(const o of t.stream.getTracks())o.stop(),i&&o.removeEventListener("ended",i),n&&o.removeEventListener("mute",n),r&&o.removeEventListener("unmute",r),delete t.endedCallback,delete t.trackMuteCallback,delete t.trackUnmuteCallback,delete this.activeDevices[e]}releaseOrdinaryStream(e){var t;const i=e.getTracks();if(i.length){for(const e of i)e.stop();for(const i in this.activeDevices){const n=this.activeDevices[i];if((null==n?void 0:n.stream)===e){switch(i){case"audio":for(const t of e.getAudioTracks())t.removeEventListener("mute",n.trackMuteCallback),t.removeEventListener("unmute",n.trackUnmuteCallback),t.removeEventListener("ended",n.endedCallback);delete n.trackMuteCallback,delete n.trackUnmuteCallback,delete n.endedCallback;break;case"video":{if(n.endedCallback){for(const t of e.getTracks())t.removeEventListener("ended",n.endedCallback);delete n.endedCallback}const i=null===(t=this.boundAudioVideoController)||void 0===t?void 0:t.videoTileController;(null==i?void 0:i.hasStartedLocalVideoTile())&&i.stopLocalVideoTile();break}}delete this.activeDevices[i]}}}}releaseMediaStream(e){var t,i;if(e)try{if(e===(null===(t=this.audioInputDestinationNode)||void 0===t?void 0:t.stream))return void this.releaseAudioTransformStream();if(e===(null===(i=this.chosenVideoTransformDevice)||void 0===i?void 0:i.outputMediaStream))return void this.releaseVideoTransformStream();this.releaseOrdinaryStream(e)}finally{this.watchForDeviceChangesIfNecessary()}}chosenVideoInputIsTransformDevice(){return!!this.chosenVideoTransformDevice}bindToAudioVideoController(e){this.boundAudioVideoController&&this.unsubscribeFromMuteAndUnmuteLocalAudio(),this.boundAudioVideoController=e,this.subscribeToMuteAndUnmuteLocalAudio(),this.browserBehavior.supportsSetSinkId()&&AsyncScheduler_1.default.nextTick((()=>{this.bindAudioOutput()}))}subscribeToMuteAndUnmuteLocalAudio(){this.boundAudioVideoController&&this.boundAudioVideoController.realtimeController&&this.boundAudioVideoController.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.muteCallback)}unsubscribeFromMuteAndUnmuteLocalAudio(){this.boundAudioVideoController.realtimeController&&this.boundAudioVideoController.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.muteCallback)}static getIntrinsicDeviceId(e){if(void 0===e)return;if(null===e)return null;if("string"==typeof e)return e;if(e.id)return e.id;const t=e.deviceId;if(void 0===t)return;if(null===t)return null;if("string"==typeof t||Array.isArray(t))return t;const i=t;return"string"==typeof i.exact||Array.isArray(i.exact)?i.exact:void 0}static createEmptyAudioDevice(){return DefaultDeviceController.synthesizeAudioDevice(0)}static createEmptyVideoDevice(){return DefaultDeviceController.synthesizeVideoDevice("black")}static synthesizeAudioDevice(e){const t=DefaultDeviceController.getAudioContext(),i=t.createMediaStreamDestination();if(e){const n=t.createGain();n.gain.value=.1,n.connect(i);const r=t.createOscillator();r.frequency.value=e,r.connect(n),r.start()}else{const e=t.createBufferSource();try{e.buffer=t.createBuffer(1,5*t.sampleRate,t.sampleRate)}catch(i){if(!i||"NotSupportedError"!==i.name)throw i;e.buffer=t.createBuffer(1,5*DefaultDeviceController.defaultSampleRate,DefaultDeviceController.defaultSampleRate)}e.buffer.getChannelData(0)[0]=3e-4,e.loop=!0,e.connect(i),e.start()}return i.stream}static synthesizeVideoDevice(e){const t=document.createElement("canvas");t.width=480,t.height=t.width/16*9;const i=makeColorBars(t,e);if(!i)return null;const{stream:n}=i;return n}updateMaxBandwidthKbps(){this.boundAudioVideoController&&this.boundAudioVideoController.setVideoMaxBandwidthKbps(this.videoInputQualitySettings.videoMaxBandwidthKbps)}listDevicesOfKind(e,t){return __awaiter$L(this,void 0,void 0,(function*(){return!t&&null!==this.deviceInfoCache&&this.isWatchingForDeviceChanges()||(yield this.updateDeviceInfoCacheFromBrowser()),this.listCachedDevicesOfKind(e)}))}updateDeviceInfoCacheFromBrowser(){return __awaiter$L(this,void 0,void 0,(function*(){if("undefined"==typeof MediaDeviceInfo)return void(this.deviceInfoCache=[]);let e=yield navigator.mediaDevices.enumerateDevices(),t=!0;for(const i of e)if(!i.label){t=!1;break}if(!t)try{this.logger.info("attempting to trigger media device labels since they are hidden");const t=yield this.deviceLabelTrigger();e=yield navigator.mediaDevices.enumerateDevices();for(const e of t.getTracks())e.stop()}catch(e){this.logger.info("unable to get media device labels")}this.logger.debug(`Update device info cache with devices: ${JSON.stringify(e)}`),this.deviceInfoCache=e}))}listCachedDevicesOfKind(e){const t=[];for(const i of this.deviceInfoCache)i.kind===e&&t.push(i);return t}handleDeviceChange(){return __awaiter$L(this,void 0,void 0,(function*(){if(null===this.deviceInfoCache)return;if(this.alreadyHandlingDeviceChange)return void AsyncScheduler_1.default.nextTick((()=>{this.handleDeviceChange()}));this.alreadyHandlingDeviceChange=!0;const e=this.listCachedDevicesOfKind("audioinput"),t=this.listCachedDevicesOfKind("videoinput"),i=this.listCachedDevicesOfKind("audiooutput");yield this.updateDeviceInfoCacheFromBrowser();const n=this.listCachedDevicesOfKind("audioinput"),r=this.listCachedDevicesOfKind("videoinput"),o=this.listCachedDevicesOfKind("audiooutput");this.forEachObserver((a=>{this.areDeviceListsEqual(e,n)||Types_1.Maybe.of(a.audioInputsChanged).map((e=>e.bind(a)(n))),this.areDeviceListsEqual(t,r)||Types_1.Maybe.of(a.videoInputsChanged).map((e=>e.bind(a)(r))),this.areDeviceListsEqual(i,o)||Types_1.Maybe.of(a.audioOutputsChanged).map((e=>e.bind(a)(o)))})),this.alreadyHandlingDeviceChange=!1}))}handleDeviceStreamEnded(e,t){return __awaiter$L(this,void 0,void 0,(function*(){try{yield this.chooseInputIntrinsicDevice(e,null,!1)}catch(e){this.logger.error("Failed to choose null device after stream ended.")}"audio"===e?this.forEachObserver((e=>{Types_1.Maybe.of(e.audioInputStreamEnded).map((i=>i.bind(e)(t)))})):this.forEachObserver((e=>{Types_1.Maybe.of(e.videoInputStreamEnded).map((i=>i.bind(e)(t)))}))}))}forEachObserver(e){for(const t of this.deviceChangeObservers)AsyncScheduler_1.default.nextTick((()=>{this.deviceChangeObservers.has(t)&&e(t)}))}areDeviceListsEqual(e,t){return JSON.stringify(e.map((e=>JSON.stringify(e))).sort())===JSON.stringify(t.map((e=>JSON.stringify(e))).sort())}intrinsicDeviceAsMediaStream(e){return e&&e.id?e:null}hasSameMediaStreamId(e,t,i){var n,r,o,a;let s;return"audio"===e?(s=null==i?void 0:i.audio.streamId,!!s&&s===(null===(r=null===(n=t.constraints)||void 0===n?void 0:n.audio)||void 0===r?void 0:r.streamId)):(s=null==i?void 0:i.video.streamId,!!s&&s===(null===(a=null===(o=null==t?void 0:t.constraints)||void 0===o?void 0:o.video)||void 0===a?void 0:a.streamId))}hasSameGroupId(e,t,i){if(""===e)return!0;const n=DefaultDeviceController.getIntrinsicDeviceId(i);return this.logger.debug(`Checking deviceIds ${n} of type ${typeof n} with groupId ${e}`),"string"==typeof n&&e===this.getGroupIdFromDeviceId(t,n)}getGroupIdFromDeviceId(e,t){if(null!==this.deviceInfoCache){const i=this.listCachedDevicesOfKind(`${e}input`).find((e=>e.deviceId===t));if(i&&i.groupId)return this.logger.debug(`GroupId of deviceId ${t} found in cache is ${i.groupId}`),i.groupId}else this.logger.error("Device cache is not populated. Please make sure to call list devices first");return this.logger.debug(`GroupId of deviceId ${t} found in cache is empty`),""}getActiveDeviceId(e){if(this.activeDevices[e]&&this.activeDevices[e].constraints){const t=(this.activeDevices[e].constraints.audio||this.activeDevices[e].constraints.video).deviceId;let i;return i="string"==typeof t?t:t.exact,i}return null}restartLocalVideoAfterSelection(e,t){return __awaiter$L(this,void 0,void 0,(function*(){!e&&this.boundAudioVideoController&&this.boundAudioVideoController.videoTileController.hasStartedLocalVideoTile()&&(t?(yield this.boundAudioVideoController.replaceLocalVideo(),this.logger.info("successfully replaced video track")):(this.logger.info("restarting local video to switch to new device"),this.boundAudioVideoController.restartLocalVideo((()=>{}))))}))}handleGetUserMediaError(e,t){if(!e)throw new GetUserMediaError_1.default(e);switch(e.name){case"NotReadableError":case"TrackStartError":throw new NotReadableError_1.default(e);case"NotFoundError":case"DevicesNotFoundError":throw new NotFoundError_1.default(e);case"NotAllowedError":case"PermissionDeniedError":case"SecurityError":throw t&&t<DefaultDeviceController.permissionDeniedOriginDetectionThresholdMs?new PermissionDeniedError_1.default(e,"Permission denied by browser"):new PermissionDeniedError_1.default(e,"Permission denied by user");case"OverconstrainedError":case"ConstraintNotSatisfiedError":throw new OverconstrainedError_1.default(e);case"TypeError":throw new TypeError_1.default(e);default:throw new GetUserMediaError_1.default(e)}}releaseActiveDevice(e){if(e&&e.stream){if(e.endedCallback){const t=e.stream.getTracks()[0];t&&t.removeEventListener("ended",e.endedCallback)}delete e.endedCallback,this.releaseMediaStream(e.stream),delete e.stream}}matchesDeviceSelection(e,t,i,n){return!!(i&&i.stream.active&&(this.hasSameMediaStreamId(e,i,n)||null!==i.groupId&&this.hasSameGroupId(i.groupId,e,t)))&&(this.logger.debug(`Compare current device constraint ${JSON.stringify(i.constraints)} to proposed constraints ${JSON.stringify(n)}`),i.matchesConstraints(n))}chooseInputIntrinsicDevice(e,t,i,n=!1){var r,o,a,s,c;return __awaiter$L(this,void 0,void 0,(function*(){this.inputDeviceCount+=1;const l=this.inputDeviceCount;if(null===t&&"video"===e){this.lastNoVideoInputDeviceCount=this.inputDeviceCount;const t=this.activeDevices[e];return void(t&&(this.releaseActiveDevice(t),delete this.activeDevices[e],this.watchForDeviceChangesIfNecessary()))}const d=this.calculateMediaStreamConstraints(e,t);if(this.matchesDeviceSelection(e,t,this.activeDevices[e],d))return void this.logger.info(`reusing existing ${e} input device`);this.activeDevices[e]&&this.activeDevices[e].stream&&("audio"===e?this.releaseActiveDevice(this.activeDevices[e]):"video"===e&&(this.stopTracksAndRemoveCallbacks("video"),delete this.activeDevices[e]));const u=Date.now(),h=new DeviceSelection_1.default;try{this.logger.info(`requesting new ${e} device with constraint ${JSON.stringify(d)}`);const i=this.intrinsicDeviceAsMediaStream(t);if("audio"===e&&null===t)h.stream=DefaultDeviceController.createEmptyAudioDevice(),h.constraints=null;else if(i)this.logger.info(`using media stream ${i.id} for ${e} device`),h.stream=i,h.constraints=d;else{if(h.stream=yield navigator.mediaDevices.getUserMedia(d),h.constraints=d,"video"===e&&this.lastNoVideoInputDeviceCount>l)return this.logger.warn(`ignored to get video device for constraints ${JSON.stringify(d)} as no device was requested`),void this.releaseMediaStream(h.stream);yield this.handleDeviceChange();const t=h.stream.getTracks()[0];h.endedCallback=()=>{this.activeDevices[e]&&this.activeDevices[e].stream===h.stream&&(this.logger.warn(`${e} input device which was active is no longer available, resetting to null device`),this.handleDeviceStreamEnded(e,this.getActiveDeviceId(e)),delete h.endedCallback)},t.addEventListener("ended",h.endedCallback,{once:!0})}if(null!==t){const t=null===(r=this.getMediaTrackSettings(h.stream))||void 0===r?void 0:r.deviceId;h.groupId=t?this.getGroupIdFromDeviceId(e,t):""}else h.groupId="";if("audio"===e){const e=h.stream.getAudioTracks()[0];if(e){const t=e.getSettings().deviceId||h.stream;h.trackMuteCallback=()=>{this.mediaStreamMuteObserver(t,!0)},h.trackUnmuteCallback=()=>{this.mediaStreamMuteObserver(t,!1)},e.addEventListener("mute",h.trackMuteCallback,{once:!1}),e.addEventListener("unmute",h.trackUnmuteCallback,{once:!1})}}}catch(t){let n;if(n=(null==t?void 0:t.name)&&t.message?`${t.name}: ${t.message}`:(null==t?void 0:t.name)?t.name:(null==t?void 0:t.message)?t.message:"UnknownError","audio"===e?null===(a=null===(o=this.boundAudioVideoController)||void 0===o?void 0:o.eventController)||void 0===a||a.publishEvent("audioInputFailed",{audioInputErrorMessage:n}):null===(c=null===(s=this.boundAudioVideoController)||void 0===s?void 0:s.eventController)||void 0===c||c.publishEvent("videoInputFailed",{videoInputErrorMessage:n}),this.logger.error(`failed to get ${e} device for constraints ${JSON.stringify(d)}: ${n}`),t&&"constraint"in t&&this.logger.error(`Over-constrained by constraint: ${t.constraint}`),"audio"===e){this.logger.info(`choosing null ${e} device instead`);try{h.stream=DefaultDeviceController.createEmptyAudioDevice(),h.constraints=null,yield this.handleNewInputDevice(e,h,i)}catch(t){this.logger.error(`failed to choose null ${e} device. ${t.name}: ${t.message}`)}}this.handleGetUserMediaError(t,Date.now()-u)}finally{this.watchForDeviceChangesIfNecessary()}if(this.logger.info(`got ${e} device for constraints ${JSON.stringify(d)}`),yield this.handleNewInputDevice(e,h,i,n),"audio"===e){this.logger.debug("Notifying mute state after selection");for(const e of h.stream.getAudioTracks())e.muted?h.trackMuteCallback():h.trackUnmuteCallback()}}))}handleNewInputDevice(e,t,i,n=!1){return __awaiter$L(this,void 0,void 0,(function*(){if(this.activeDevices[e]=t,this.logger.debug(`Set activeDevice to ${JSON.stringify(t)}`),this.watchForDeviceChangesIfNecessary(),"video"===e)this.chosenVideoInputIsTransformDevice()&&(this.logger.info("apply processors to transform"),yield this.chosenVideoTransformDevice.transformStream(this.activeDevices.video.stream)),yield this.restartLocalVideoAfterSelection(i,n);else if(this.useWebAudio)this.attachAudioInputStreamToAudioContext(this.activeDevices[e].stream);else if(this.boundAudioVideoController)try{yield this.boundAudioVideoController.restartLocalAudio((()=>{}))}catch(e){this.logger.info(`cannot replace audio track due to: ${e.message}`)}else this.logger.info("no audio-video controller is bound to the device controller")}))}bindAudioOutput(){return __awaiter$L(this,void 0,void 0,(function*(){if(!this.boundAudioVideoController)return;const e=this.deviceInfoFromDeviceId("audiooutput",this.audioOutputDeviceId);yield this.boundAudioVideoController.audioMixController.bindAudioDevice(e)}))}calculateMediaStreamConstraints(e,t){let i={};""===t&&(t=null);const n=this.intrinsicDeviceAsMediaStream(t);if(null===t)return null;if("string"==typeof t?this.browserBehavior.requiresNoExactMediaStreamConstraints()&&this.browserBehavior.requiresGroupIdMediaStreamConstraints()?(i.deviceId=t,i.groupId=this.getGroupIdFromDeviceId(e,t)):this.browserBehavior.requiresNoExactMediaStreamConstraints()?i.deviceId=t:i.deviceId={exact:t}:n?i.streamId=n.id:isMediaDeviceInfo(t)?(i.deviceId=t.deviceId,i.groupId=t.groupId):i=t,"video"===e&&(i.width=i.width||{ideal:this.videoInputQualitySettings.videoWidth},i.height=i.height||{ideal:this.videoInputQualitySettings.videoHeight},i.frameRate=i.frameRate||{ideal:this.videoInputQualitySettings.videoFrameRate}),"audio"===e&&this.supportSampleRateConstraint()&&(i.sampleRate={ideal:DefaultDeviceController.defaultSampleRate}),"audio"===e&&this.supportSampleSizeConstraint()&&(i.sampleSize={ideal:DefaultDeviceController.defaultSampleSize}),"audio"===e&&this.supportChannelCountConstraint()&&(i.channelCount={ideal:DefaultDeviceController.defaultChannelCount}),"audio"===e){i=Object.assign({echoCancellation:!0,googEchoCancellation:!0,googEchoCancellation2:!0,googAutoGainControl:!0,googAutoGainControl2:!0,googNoiseSuppression:!0,googNoiseSuppression2:!0,googHighpassFilter:!0},i)}return"audio"===e?{audio:i}:{video:i}}deviceInfoFromDeviceId(e,t){if(null===this.deviceInfoCache)return null;for(const i of this.deviceInfoCache)if(i.kind===e&&i.deviceId===t)return i;return null}acquireInputStream(e){return __awaiter$L(this,void 0,void 0,(function*(){if("audio"===e&&this.useWebAudio){return this.getMediaStreamDestinationNode().stream}if("video"===e&&this.chosenVideoInputIsTransformDevice())return this.chosenVideoTransformDevice.outputMediaStream;let t=null;if(this.activeDevices[e]){this.logger.info(`checking whether existing ${e} input device can be reused`);const i=this.activeDevices[e];t=i.constraints?i.constraints[e]:null}else{if("audio"!==e)throw this.logger.error(`no ${e} device chosen, stopping local video tile`),this.boundAudioVideoController.videoTileController.stopLocalVideoTile(),new Error(`no ${e} device chosen, stopping local video tile`);this.logger.info(`no ${e} device chosen, creating empty ${e} device`)}try{yield this.chooseInputIntrinsicDevice(e,t,!0)}catch(t){if(this.logger.error(`unable to acquire ${e} device`),t instanceof PermissionDeniedError_1.default)throw t;throw new GetUserMediaError_1.default(t,`unable to acquire ${e} device`)}return this.activeDevices[e].stream}))}hasAppliedTransform(){return!!this.transform}isMediaStreamReusableByDeviceId(e,t){if(!e||!e.active||!t)return!1;if(t.id)return e.id===t.id;const i=this.getMediaTrackSettings(e);if(!i.deviceId)return!1;const n=DefaultDeviceController.getIntrinsicDeviceId(t);return"string"==typeof n&&i.deviceId===n}getMediaTrackSettings(e){var t;return null===(t=e.getTracks()[0])||void 0===t?void 0:t.getSettings()}reconnectAudioInputs(){if(!this.audioInputSourceNode)return;this.audioInputSourceNode.disconnect();const e=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(e)}setTransform(e,t){var i,n;null===(n=null===(i=this.transform)||void 0===i?void 0:i.nodes)||void 0===n||n.end.disconnect(),this.transform={nodes:t,device:e};const r=null==t?void 0:t.end,o=this.getMediaStreamDestinationNode();this.logger.debug(`Connecting transform node ${r} to destination ${o}.`),null==r||r.connect(o),this.reconnectAudioInputs()}removeTransform(){var e;const t=this.transform;if(t)return null===(e=this.transform.nodes)||void 0===e||e.end.disconnect(),this.transform=void 0,this.reconnectAudioInputs(),t}attachAudioInputStreamToAudioContext(e){var t;null===(t=this.audioInputSourceNode)||void 0===t||t.disconnect(),this.audioInputSourceNode=DefaultDeviceController.getAudioContext().createMediaStreamSource(e);const i=this.getMediaStreamOutputNode();this.audioInputSourceNode.connect(i)}getMediaStreamDestinationNode(){return this.audioInputDestinationNode||(this.audioInputDestinationNode=DefaultDeviceController.getAudioContext().createMediaStreamDestination()),this.audioInputDestinationNode}getMediaStreamOutputNode(){var e,t;return(null===(t=null===(e=this.transform)||void 0===e?void 0:e.nodes)||void 0===t?void 0:t.start)||this.getMediaStreamDestinationNode()}static getAudioContext(){if(!DefaultDeviceController.audioContext){const e={};navigator.mediaDevices.getSupportedConstraints().sampleRate&&(e.sampleRate=DefaultDeviceController.defaultSampleRate),DefaultDeviceController.audioContext=new(window.AudioContext||window.webkitAudioContext)(e)}return DefaultDeviceController.audioContext}static closeAudioContext(){if(DefaultDeviceController.audioContext)try{DefaultDeviceController.audioContext.close()}catch(e){}DefaultDeviceController.audioContext=null}supportSampleRateConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleRate}supportSampleSizeConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().sampleSize}supportChannelCountConstraint(){return this.useWebAudio&&!!navigator.mediaDevices.getSupportedConstraints().channelCount}trace(e,t,i){let n=`API/DefaultDeviceController/${e}`;void 0!==t&&(n+=` ${JSON.stringify(t)}`),void 0!==i&&(n+=` -> ${JSON.stringify(i)}`),this.logger.info(n)}}var _default$20=DefaultDeviceController;function isMediaDeviceInfo(e){return"object"==typeof e&&"deviceId"in e&&"groupId"in e&&"kind"in e&&"label"in e}DefaultDeviceController.permissionDeniedOriginDetectionThresholdMs=500,DefaultDeviceController.defaultVideoWidth=960,DefaultDeviceController.defaultVideoHeight=540,DefaultDeviceController.defaultVideoFrameRate=15,DefaultDeviceController.defaultVideoMaxBandwidthKbps=1400,DefaultDeviceController.defaultSampleRate=48e3,DefaultDeviceController.defaultSampleSize=16,DefaultDeviceController.defaultChannelCount=1,DefaultDeviceController.audioContext=null;var DefaultDeviceController_1$1=Object.defineProperty({default:_default$20},"__esModule",{value:!0}),DefaultDeviceController_1=DefaultDeviceController_1$1,__awaiter$K=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ContentShareMediaStreamBroker{constructor(e){this.logger=e}get mediaStream(){return this._mediaStream}set mediaStream(e){this._mediaStream=e}acquireAudioInputStream(){return __awaiter$K(this,void 0,void 0,(function*(){return 0===this._mediaStream.getAudioTracks().length?(this.logger.info("No audio stream available. Synthesizing an audio stream."),DefaultDeviceController_1.default.synthesizeAudioDevice(0)):this._mediaStream}))}acquireVideoInputStream(){return __awaiter$K(this,void 0,void 0,(function*(){return this._mediaStream}))}releaseMediaStream(e){this.logger.info("release media stream called")}acquireDisplayInputStream(e){return __awaiter$K(this,void 0,void 0,(function*(){return e&&e.video&&e.video.mandatory&&e.video.mandatory.chromeMediaSource&&e.video.mandatory.chromeMediaSourceId?navigator.mediaDevices.getUserMedia(e):navigator.mediaDevices.getDisplayMedia(e)}))}bindToAudioVideoController(e){throw new Error("unsupported")}acquireScreenCaptureDisplayInputStream(e,t){return __awaiter$K(this,void 0,void 0,(function*(){return this.acquireDisplayInputStream(this.screenCaptureDisplayMediaConstraints(e,t))}))}screenCaptureDisplayMediaConstraints(e,t){return{audio:!(e||!(new DefaultBrowserBehavior_1.default).getDisplayMediaAudioCaptureSupport()),video:Object.assign(Object.assign({},!e&&{frameRate:{max:t||ContentShareMediaStreamBroker.defaultFrameRate}}),e&&{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:e,maxFrameRate:t||ContentShareMediaStreamBroker.defaultFrameRate}})}}toggleMediaStream(e){let t=!1;if(this.mediaStream)for(let i=0;i<this.mediaStream.getTracks().length;i++)this.mediaStream.getTracks()[i].enabled!==e&&(this.mediaStream.getTracks()[i].enabled=e,t=!0);return t}cleanup(){if(this.mediaStream)for(let e=0;e<this.mediaStream.getTracks().length;e++){this.mediaStream.getTracks()[e].stop()}this.mediaStream=null}}var _default$1$=ContentShareMediaStreamBroker;ContentShareMediaStreamBroker.defaultFrameRate=15;var ContentShareMediaStreamBroker_1$1=Object.defineProperty({default:_default$1$},"__esModule",{value:!0}),__awaiter$J=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class CreatePeerConnectionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreatePeerConnectionTask",this.removeTrackAddedEventListener=null,this.removeTrackRemovedEventListeners={},this.trackEvents=["ended","mute","unmute","isolationchange","overconstrained"],this.removeVideoTrackEventListeners={},this.trackAddedHandler=e=>{const t=e.track;if(this.context.logger.info(`received track event: kind=${t.kind} id=${t.id} label=${t.label}`),e.transceiver&&"inactive"===e.transceiver.currentDirection)return;if(0===e.streams.length)return void this.context.logger.warn("Track event but no stream");const i=e.streams[0];"audio"===t.kind?this.context.audioMixController.bindAudioStream(i):"video"!==t.kind||this.trackIsVideoInput(t)||this.addRemoteVideoTrack(t,i)}}removeObserver(){this.removeTrackAddedEventListener&&this.removeTrackAddedEventListener();for(const e in this.removeTrackRemovedEventListeners)this.removeTrackRemovedEventListeners[e]()}addPeerConnectionEventLogger(){const e=this.context.peer;e.addEventListener("connectionstatechange",(()=>{this.context.logger.info(`peer connection state changed: ${e.connectionState}`)})),e.addEventListener("negotiationneeded",(()=>{this.context.logger.info("peer connection negotiation is needed")})),e.addEventListener("icegatheringstatechange",(()=>{this.context.logger.info(`peer connection ice gathering state changed: ${e.iceGatheringState}`)})),e.addEventListener("icecandidate",(e=>{this.context.logger.info(`peer connection ice candidate: ${e.candidate?e.candidate.candidate:"(null)"}`)})),e.addEventListener("iceconnectionstatechange",(()=>{this.context.logger.info(`peer connection ice connection state changed: ${e.iceConnectionState}`)}))}run(){return __awaiter$J(this,void 0,void 0,(function*(){this.context.removableObservers.push(this);const e=this.context.turnCredentials&&this.context.turnCredentials.uris.length>0?{iceServers:[{urls:this.context.turnCredentials.uris,username:this.context.turnCredentials.username,credential:this.context.turnCredentials.password,credentialType:"password"}],iceTransportPolicy:"relay"}:{};e.bundlePolicy=this.context.browserBehavior.requiresBundlePolicy(),e.sdpSemantics=this.context.browserBehavior.requiresUnifiedPlan()?"unified-plan":"plan-b",this.logger.info(`SDP semantics are ${e.sdpSemantics}`);const t={optional:[{googCpuOveruseDetection:!1},{googCombinedAudioVideoBwe:!0}]};this.context.peer?this.context.logger.info("reusing peer connection"):(this.context.logger.info("creating new peer connection"),this.context.peer=new RTCPeerConnection(e,t),this.addPeerConnectionEventLogger()),this.removeTrackAddedEventListener=()=>{this.context.peer&&this.context.peer.removeEventListener("track",this.trackAddedHandler),this.removeTrackAddedEventListener=null},this.context.peer.addEventListener("track",this.trackAddedHandler)}))}trackIsVideoInput(e){if(this.context.transceiverController.useTransceivers())return this.logger.debug((()=>"getting video track type (unified-plan)")),this.context.transceiverController.trackIsVideoInput(e);if(this.logger.debug((()=>"getting video track type (plan-b)")),this.context.activeVideoInput){const t=this.context.activeVideoInput.getVideoTracks();if(t&&t.length>0&&t[0].id===e.id)return!0}return!1}addRemoteVideoTrack(e,t){var i;let n=t.id;this.context.browserBehavior.requiresUnifiedPlan()||(t=new MediaStream([e]),n=e.id);const r=this.context.videoStreamIndex.attendeeIdForTrack(n);let o,a;if(this.context.videoTileController.getVideoTileForAttendeeId?(a=this.context.videoTileController.getVideoTileForAttendeeId(r),o=!!(null===(i=null==a?void 0:a.state())||void 0===i?void 0:i.boundVideoStream)):o=this.context.videoTileController.haveVideoTileForAttendeeId(r),o)return void this.context.logger.info(`Not adding remote track. Already have tile for attendeeId: ${r}`);a||(a=this.context.videoTileController.addVideoTile(),this.logger.info(`Created video tile ${a.id()}`));let s,c,l=this.context.videoStreamIndex.streamIdForTrack(n);void 0===l&&(this.logger.warn(`stream not found for tile=${a.id()} track=${n}`),l=null);for(let i=0;i<this.trackEvents.length;i++){const n=this.trackEvents[i],r=t.getVideoTracks();if(r&&r.length){const t=r[0],i=()=>{this.context.logger.info(`received the ${n} event for tile=${a.id()} id=${e.id} streamId=${l}`),"ended"===n&&this.context.browserBehavior.requiresUnifiedPlan()&&this.removeRemoteVideoTrack(e,a.state())};t.addEventListener(n,i),this.removeVideoTrackEventListeners[e.id]||(this.removeVideoTrackEventListeners[e.id]=[]),this.removeVideoTrackEventListeners[e.id].push((()=>{t.removeEventListener(n,i)}))}}if(e.getSettings){const t=e.getSettings();s=t.width,c=t.height}else{const t=e.getCapabilities();s=t.width,c=t.height}const d=this.context.videoStreamIndex.externalUserIdForTrack(n);a.bindVideoStream(r,!1,t,s,c,l,d),this.logger.info(`video track added, use tile=${a.id()} track=${n} streamId=${l}`);let u="removetrack",h=t;this.context.browserBehavior.requiresUnifiedPlan()||(this.logger.debug((()=>"updating end event and target track (plan-b)")),u="ended",h=e);const p=()=>this.removeRemoteVideoTrack(e,a.state());this.removeTrackRemovedEventListeners[e.id]=()=>{h.removeEventListener(u,p),delete this.removeTrackRemovedEventListeners[e.id]},h.addEventListener(u,p)}removeRemoteVideoTrack(e,t){if(this.removeTrackRemovedEventListeners.hasOwnProperty(e.id)){this.removeTrackRemovedEventListeners[e.id]();for(const t of this.removeVideoTrackEventListeners[e.id])t();delete this.removeVideoTrackEventListeners[e.id]}this.logger.info(`video track ended, removing tile=${t.tileId} id=${e.id} stream=${t.streamId}`),t.streamId?this.context.videosPaused.remove(t.streamId):this.logger.warn(`no stream found for tile=${t.tileId}`),this.context.videoTileController.removeVideoTile(t.tileId)}}var _default$1_=CreatePeerConnectionTask;CreatePeerConnectionTask.REMOVE_HANDLER_INTERVAL_MS=1e4;var CreatePeerConnectionTask_1$1=Object.defineProperty({default:_default$1_},"__esModule",{value:!0}),MeetingSessionStatusCode_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionStatusCode=void 0,function(e){e[e.OK=0]="OK",e[e.Left=1]="Left",e[e.AudioJoinedFromAnotherDevice=2]="AudioJoinedFromAnotherDevice",e[e.AudioDisconnectAudio=3]="AudioDisconnectAudio",e[e.AudioAuthenticationRejected=4]="AudioAuthenticationRejected",e[e.AudioCallAtCapacity=5]="AudioCallAtCapacity",e[e.AudioCallEnded=6]="AudioCallEnded",e[e.TURNMeetingEnded=6]="TURNMeetingEnded",e[e.MeetingEnded=6]="MeetingEnded",e[e.AudioInternalServerError=7]="AudioInternalServerError",e[e.AudioServiceUnavailable=8]="AudioServiceUnavailable",e[e.AudioDisconnected=9]="AudioDisconnected",e[e.VideoCallSwitchToViewOnly=10]="VideoCallSwitchToViewOnly",e[e.VideoCallAtSourceCapacity=11]="VideoCallAtSourceCapacity",e[e.SignalingBadRequest=12]="SignalingBadRequest",e[e.SignalingInternalServerError=13]="SignalingInternalServerError",e[e.SignalingRequestFailed=14]="SignalingRequestFailed",e[e.StateMachineTransitionFailed=15]="StateMachineTransitionFailed",e[e.ICEGatheringTimeoutWorkaround=16]="ICEGatheringTimeoutWorkaround",e[e.ConnectionHealthReconnect=17]="ConnectionHealthReconnect",e[e.RealtimeApiFailed=18]="RealtimeApiFailed",e[e.TaskFailed=19]="TaskFailed",e[e.AudioDeviceSwitched=20]="AudioDeviceSwitched",e[e.IncompatibleSDP=21]="IncompatibleSDP",e[e.TURNCredentialsForbidden=22]="TURNCredentialsForbidden",e[e.NoAttendeePresent=23]="NoAttendeePresent",e[e.AudioAttendeeRemoved=24]="AudioAttendeeRemoved",e[e.AudioVideoWasRemovedFromPrimaryMeeting=25]="AudioVideoWasRemovedFromPrimaryMeeting"}(i=t.MeetingSessionStatusCode||(t.MeetingSessionStatusCode={})),t.default=i})),SDPCandidateType_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SDPCandidateType=void 0,function(e){e.Host="host",e.ServerReflexive="srflx",e.PeerReflexive="prflx",e.Relay="relay"}(i=t.SDPCandidateType||(t.SDPCandidateType={})),t.default=i}));class SDPMediaSection{}var _default$1Z=SDPMediaSection,SDPMediaSection_1$1=Object.defineProperty({default:_default$1Z},"__esModule",{value:!0}),SDPCandidateType_1=SDPCandidateType_1$1,SDPMediaSection_1=SDPMediaSection_1$1;class DefaultSDP{constructor(e){this.sdp=e}clone(){return new DefaultSDP(this.sdp)}static isRTPCandidate(e){const t=/candidate[:](\S+) (\d+)/g.exec(e);return null!==t&&"1"===t[2]}static linesToSDP(e){return new DefaultSDP(e.join(DefaultSDP.CRLF))}static candidateTypeFromString(e){switch(e){case SDPCandidateType_1.default.Host:return SDPCandidateType_1.default.Host;case SDPCandidateType_1.default.ServerReflexive:return SDPCandidateType_1.default.ServerReflexive;case SDPCandidateType_1.default.PeerReflexive:return SDPCandidateType_1.default.PeerReflexive;case SDPCandidateType_1.default.Relay:return SDPCandidateType_1.default.Relay}return null}static candidateType(e){const t=/a[=]candidate[:].* typ ([a-z]+) /g.exec(e);return null===t?null:DefaultSDP.candidateTypeFromString(t[1])}static mediaType(e){const t=/m=(audio|video)/g.exec(e);if(null!==t)return t[1]}static mid(e){if(e.includes("a=mid:"))return e.replace(/^(a=mid:)/,"")}static direction(e){const t=/a=(sendrecv|sendonly|recvonly|inactive)/g.exec(e);if(null!==t)return t[1]}static splitLines(e){return e.trim().split("\n").map((e=>e.trim()))}static splitSections(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+DefaultSDP.CRLF))}static findActiveCameraSection(e){let t=0,i=!1;for(const n of e){if(/^m=video/.test(n)&&n.indexOf("sendrecv")>-1){i=!0;break}t++}return!1===i&&(t=-1),t}static parseSSRCMedia(e){const t=e.indexOf(" ");let i=0,n="",r="";i=DefaultSDP.extractSSRCFromAttributeLine(e);const o=e.indexOf(":",t);return o>-1?(n=e.substr(t+1,o-t-1),r=e.substr(o+1)):n=e.substr(t+1),[i,n,r]}static extractSSRCsFromFIDGroupLine(e){return/^a=ssrc-group:FID\s(.+)/.exec(e)[1]}static extractSSRCFromAttributeLine(e){const t=/^a=ssrc:([0-9]+)\s/.exec(e);return null===t?0:parseInt(t[1],10)}static matchPrefix(e,t){return DefaultSDP.splitLines(e).filter((e=>0===e.indexOf(t)))}lines(){return this.sdp.split(DefaultSDP.CRLF)}hasVideo(){return null!==/^m=video/gm.exec(this.sdp)}hasCandidates(){return null!==/a[=]candidate[:]/g.exec(this.sdp)}hasCandidatesForAllMLines(){return!(this.sdp.indexOf("c=IN IP4 0.0.0.0")>-1)}withBundleAudioVideo(){const e=this.lines(),t=[];for(const i of e){const e=i.replace(/^a=group:BUNDLE audio$/,"a=group:BUNDLE audio video");e===i?t.push(i):t.push(e)}return DefaultSDP.linesToSDP(t)}copyVideo(e){const t=e.split(DefaultSDP.CRLF),i=DefaultSDP.splitLines(this.sdp);let n=!1;for(const e of t)/^m=video/.test(e)?n=!0:/^m=/.test(e)&&(n=!1),n&&i.push(e);return DefaultSDP.linesToSDP(i)}withoutCandidateType(e){return DefaultSDP.linesToSDP(this.lines().filter((t=>DefaultSDP.candidateType(t)!==e)))}withoutServerReflexiveCandidates(){return this.withoutCandidateType(SDPCandidateType_1.default.ServerReflexive)}withBandwidthRestriction(e,t){const i=this.lines(),n=[];for(const r of i)n.push(r),/^m=video/.test(r)&&(t?n.push("b=TIAS:"+1e3*e):n.push(`b=AS:${e}`));return DefaultSDP.linesToSDP(n)}withAudioMaxAverageBitrate(e){if(!e)return this.clone();e=Math.trunc(Math.min(Math.max(e,DefaultSDP.rfc7587LowestBitrate),DefaultSDP.rfc7587HighestBitrate));const t=this.lines(),i=DefaultSDP.findOpusFmtpAttributes(t),n=DefaultSDP.updateOpusFmtpAttributes(t,i,[`maxaveragebitrate=${e}`]);return DefaultSDP.linesToSDP(n)}withStereoAudio(){const e=this.lines(),t=DefaultSDP.findOpusFmtpAttributes(e),i=DefaultSDP.updateOpusFmtpAttributes(e,t,["stereo=1","sprop-stereo=1"]);return DefaultSDP.linesToSDP(i)}static findOpusFmtpAttributes(e){const t=/^a=rtpmap:\s*(\d+)\s+opus\/48000/;let i=!1;const n=[];for(const r of e)if(r.startsWith("m=audio")&&(n.push(null),i=!0),r.startsWith("m=video")&&(i=!1),i){const e=t.exec(r);null!==e&&(n[n.length-1]=`a=fmtp:${e[1]} `)}return n}static updateOpusFmtpAttributes(e,t,i){const n=[];let r=0,o=null;for(const a of e)if(a.startsWith("m=audio")&&(o=t[r],r++),a.startsWith("m=video")&&(o=null),o&&a.startsWith(o)){const e=a.slice(o.length).split(";"),t=[];for(const n of e){i.findIndex((e=>e.startsWith(n.split("=")[0])))<0&&t.push(n)}for(const e of i)t.push(e);n.push(o+t.join(";"))}else n.push(a);return n}withUnifiedPlanFormat(){let e=this.sdp;return e.includes("mozilla")?this.clone():(e=e.replace("o=-","o=mozilla-chrome"),new DefaultSDP(e))}getUniqueRtpHeaderExtensionId(e){const t=[];for(const i of e)if(/^a=extmap:/.test(i.trim())){const e=+i.split("a=extmap:")[1].split(" ")[0];t.push(e)}t.sort(((e,t)=>e-t));let i=0;for(const e of t){if(e-i>1)return i+1;i=e}return 14===i?-1:i+1}withVideoLayersAllocationRtpHeaderExtension(){const e=DefaultSDP.splitSections(this.sdp),t=[];for(let i of e){if(/^m=video/.test(i)){const e=DefaultSDP.splitLines(i),n=[],r=this.getUniqueRtpHeaderExtensionId(e);if(-1===r){t.push(i);continue}for(const t of e)if(n.push(t),/^a=sendrecv/.test(t.trim())){const e="a=extmap:"+r+" http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00";n.push(e)}i=n.join(DefaultSDP.CRLF)+DefaultSDP.CRLF}t.push(i)}const i=t.join("");return new DefaultSDP(i)}preferH264IfExists(){const e=this.sdp,t=DefaultSDP.splitSections(e);if(t.length<2)return new DefaultSDP(this.sdp);const i=[];for(let e=0;e<t.length;e++){if(/^m=video/.test(t[e])){const i=DefaultSDP.splitLines(t[e]);let n=0,r=0;if(i.forEach((e=>{if(/^a=rtpmap:/.test(e)){const t=/^a=rtpmap:([0-9]+)\s/.exec(e);e.toLowerCase().includes("vp8")?n=parseInt(t[1],10):e.toLowerCase().includes("h264")&&(r=parseInt(t[1],10))}})),0!==n&&0!==r){const e=i[0].split(" ");let t=-1,o=-1;for(let i=3;i<e.length;i++){const a=parseInt(e[i],10);a===n?t=i:a===r&&(o=i)}t<o&&(e[t]=r.toString(),e[o]=n.toString()),i[0]=e.join(" ")}t[e]=i.join(DefaultSDP.CRLF)+DefaultSDP.CRLF}i.push(t[e])}const n=i.join("");return new DefaultSDP(n)}withOldFashionedMungingSimulcast(e){if(e<2)return this.clone();const t=this.sdp,i=DefaultSDP.splitSections(t);if(i.length<2)return new DefaultSDP(this.sdp);const n=DefaultSDP.findActiveCameraSection(i);if(-1===n)return new DefaultSDP(this.sdp);let r="",o="";DefaultSDP.matchPrefix(i[n],"a=ssrc:").forEach((e=>{const t=DefaultSDP.parseSSRCMedia(e);"cname"===t[1]?r=t[2]:"msid"===t[1]&&(o=t[2])}));const a=DefaultSDP.matchPrefix(i[n],"a=ssrc-group:FID ");if(""===r||""===o||a.length<1)return new DefaultSDP(this.sdp);const s=DefaultSDP.extractSSRCsFromFIDGroupLine(a[0]),c=i[n].trim().split(DefaultSDP.CRLF).filter((e=>0!==e.indexOf("a=ssrc:")&&0!==e.indexOf("a=ssrc-group:"))),l=[],[d,u]=s.split(" ").map((e=>parseInt(e,10)));let h=d,p=u;for(let t=0;t<e;t++)c.push("a=ssrc:"+h+" cname:"+r),c.push("a=ssrc:"+h+" msid:"+o),c.push("a=ssrc:"+p+" cname:"+r),c.push("a=ssrc:"+p+" msid:"+o),c.push("a=ssrc-group:FID "+h+" "+p),l.push(h),h+=1,p=h+1;c.push("a=ssrc-group:SIM "+l.join(" ")),i[n]=c.join(DefaultSDP.CRLF)+DefaultSDP.CRLF;const f=i.join("");return new DefaultSDP(f)}ssrcForVideoSendingSection(){const e=this.sdp,t=DefaultSDP.splitSections(e);if(t.length<2)return"";const i=DefaultSDP.findActiveCameraSection(t);if(-1===i)return"";const n=DefaultSDP.matchPrefix(t[i],"a=ssrc-group:FID ");if(n.length<1)return"";const r=DefaultSDP.extractSSRCsFromFIDGroupLine(n[0]),[o]=r.split(" ").map((e=>parseInt(e,10)));return o.toString()}videoSendSectionHasDifferentSSRC(e){const t=this.ssrcForVideoSendingSection(),i=e.ssrcForVideoSendingSection();if(""===t||""===i)return!1;return parseInt(t,10)!==parseInt(i,10)}removeH264SupportFromSendSection(){const e=this.sdp,t=DefaultSDP.splitSections(e),i=DefaultSDP.findActiveCameraSection(t);if(-1===i)return new DefaultSDP(this.sdp);const n=t[i],r=DefaultSDP.splitLines(n),o=[],a=new Map;r.forEach((e=>{if(/^a=rtpmap:/.test(e)){const t=/^a=rtpmap:([0-9]+)\s/.exec(e);t&&e.toLowerCase().includes("h264")&&o.push(parseInt(t[1],10))}if(/^a=fmtp:/.test(e)){const t=/^a=fmtp:([0-9]+) apt=([0-9]+)/.exec(e);if(t&&3===t.length){const e=parseInt(t[1],10),i=parseInt(t[2],10);a.has(i)?a.get(i).push(e):a.set(i,[e])}}}));const s=new Set;for(const e of o){s.add(e);const t=a.get(e);if(t)for(const e of t)s.add(e)}if(o.length>0){const e=r[0].split(" ");r[0]=e.filter((e=>!s.has(parseInt(e)))).join(" ")}const c=r.filter((e=>{if(!e.includes("rtpmap")&&!e.includes("rtcp-fb")&&!e.includes("fmtp"))return!0;for(const t of s)if(e.includes(t.toString()))return!1;return!0}));t[i]=c.join(DefaultSDP.CRLF)+DefaultSDP.CRLF;const l=t.join("");return new DefaultSDP(l)}mediaSections(){const e=DefaultSDP.splitSections(this.sdp);if(e.length<2)return[];const t=[];for(let i=1;i<e.length;i++){const n=new SDPMediaSection_1.default,r=DefaultSDP.splitLines(e[i]);for(const e of r){const t=DefaultSDP.mediaType(e);if(void 0!==t){n.mediaType=t;continue}const i=DefaultSDP.direction(e);if(void 0!==i){n.direction=i;continue}const r=DefaultSDP.mid(e);void 0===r||(n.mid=r)}t.push(n)}return t}}var _default$1Y=DefaultSDP;DefaultSDP.CRLF="\r\n",DefaultSDP.rfc7587LowestBitrate=6e3,DefaultSDP.rfc7587HighestBitrate=51e4;var DefaultSDP_1$1=Object.defineProperty({default:_default$1Y},"__esModule",{value:!0}),MeetingSessionStatusCode_1=MeetingSessionStatusCode_1$1,DefaultSDP_1=DefaultSDP_1$1,__awaiter$I=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class CreateSDPTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="CreateSDPTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}sessionUsesAudio(){var e,t;return!!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL)}sessionUsesVideo(){let e;e=this.context.transceiverController.useTransceivers()?this.context.transceiverController.hasVideoInput():this.context.videoTileController.hasStartedLocalVideoTile();const t=!!this.context.videosToReceive&&!this.context.videosToReceive.empty(),i=e||t;return this.context.logger.info(`uses video: ${i} (enabled: true, sending: ${e}, receiving: ${t})`),i}run(){return __awaiter$I(this,void 0,void 0,(function*(){const e={offerToReceiveAudio:this.sessionUsesAudio(),offerToReceiveVideo:this.sessionUsesVideo()};this.logger.info(`peer connection offerOptions: ${JSON.stringify(e)}`),yield new Promise(((t,i)=>__awaiter$I(this,void 0,void 0,(function*(){this.cancelPromise=e=>{i(e)};try{if(this.context.sdpOfferInit=yield this.context.peer.createOffer(e),this.context.logger.info("peer connection created offer"),this.context.previousSdpOffer&&new DefaultSDP_1.default(this.context.sdpOfferInit.sdp).videoSendSectionHasDifferentSSRC(this.context.previousSdpOffer)){const e=new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.IncompatibleSDP}`);return this.context.previousSdpOffer=null,void i(e)}t()}catch(e){i(e)}finally{delete this.cancelPromise}}))))}))}}var _default$1X=CreateSDPTask,CreateSDPTask_1$1=Object.defineProperty({default:_default$1X},"__esModule",{value:!0});class DataMessage{constructor(e,t,i,n,r,o){this.timestampMs=e,this.topic=t,this.data=i,this.senderAttendeeId=n,this.senderExternalUserId=r,this.throttled=!!o}text(){return(new TextDecoder).decode(this.data)}json(){return JSON.parse((new TextDecoder).decode(this.data))}}var _default$1W=DataMessage,DataMessage_1$1=Object.defineProperty({default:_default$1W},"__esModule",{value:!0}),__awaiter$H=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultActiveSpeakerDetector{constructor(e,t,i,n=1e3,r=200){this.realtimeController=e,this.selfAttendeeId=t,this.hasBandwidthPriorityCallback=i,this.waitIntervalMs=n,this.updateIntervalMs=r,this.speakerScores={},this.speakerMuteState={},this.detectorCallbackToHandler=new Map,this.detectorCallbackToScoresTimer=new Map,this.detectorCallbackToActivityTimer=new Map,this.hasBandwidthPriority=!1,this.mostRecentUpdateTimestamp={}}needUpdate(e){return!this.activeSpeakers||(0===this.speakerScores[e]&&this.activeSpeakers.includes(e)||this.speakerScores[e]>0&&!this.activeSpeakers.includes(e))}updateActiveSpeakers(e,t,i){if(!this.needUpdate(i))return;const n=[],r=Object.keys(this.speakerScores);for(let e=0;e<r.length;e++){const t=r[e];n.push({attendeeId:t,activeScore:this.speakerScores[t]})}const o=n.sort(((e,t)=>t.activeScore-e.activeScore)).filter((function(e){return e.activeScore>0})).map((function(e){return e.attendeeId}));this.activeSpeakers=o,t(o);const a=o.length>0&&o[0]===this.selfAttendeeId&&e.prioritizeVideoSendBandwidthForActiveSpeaker();this.hasBandwidthPriority!==a&&(this.hasBandwidthPriority=a,this.hasBandwidthPriorityCallback(a))}updateScore(e,t,i,n,r){const o=e.calculateScore(i,n,r);this.speakerScores[i]!==o&&(this.speakerScores[i]=o,this.mostRecentUpdateTimestamp[i]=Date.now(),this.updateActiveSpeakers(e,t,i))}subscribe(e,t,i,n){const r=(i,n)=>{if(!n)return this.speakerScores[i]=0,this.mostRecentUpdateTimestamp[i]=Date.now(),void this.updateActiveSpeakers(e,t,i);this.realtimeController.realtimeSubscribeToVolumeIndicator(i,((i,n,r,o)=>{this.mostRecentUpdateTimestamp[i]=Date.now(),null!==r&&(this.speakerMuteState[i]=r),this.updateScore(e,t,i,n,r)}))};this.detectorCallbackToHandler.set(t,r);const o=new IntervalScheduler_1.default(this.updateIntervalMs);if(o.start((()=>{for(const i in this.speakerScores)Date.now()-this.mostRecentUpdateTimestamp[i]>this.waitIntervalMs&&this.updateScore(e,t,i,0,this.speakerMuteState[i])})),this.detectorCallbackToActivityTimer.set(t,o),i&&n){const e=new IntervalScheduler_1.default(n);e.start((()=>{i(this.speakerScores)})),this.detectorCallbackToScoresTimer.set(t,e)}this.realtimeController.realtimeSubscribeToAttendeeIdPresence(r)}unsubscribe(e){const t=this.detectorCallbackToHandler.get(e);this.detectorCallbackToHandler.delete(e),t&&this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(t);const i=this.detectorCallbackToActivityTimer.get(e);i&&(i.stop(),this.detectorCallbackToActivityTimer.delete(e));const n=this.detectorCallbackToScoresTimer.get(e);n&&(n.stop(),this.detectorCallbackToHandler.delete(e))}destroy(){return __awaiter$H(this,void 0,void 0,(function*(){for(const e of this.detectorCallbackToHandler.values())this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e);for(const e of this.detectorCallbackToActivityTimer.values())e.stop();for(const e of this.detectorCallbackToScoresTimer.values())e.stop();this.detectorCallbackToHandler.clear(),this.detectorCallbackToActivityTimer.clear(),this.detectorCallbackToScoresTimer.clear()}))}}var _default$1V=DefaultActiveSpeakerDetector,DefaultActiveSpeakerDetector_1$1=Object.defineProperty({default:_default$1V},"__esModule",{value:!0});class DefaultActiveSpeakerPolicy{constructor(e=.9,t=.01,i=.2,n=.2){this.speakerWeight=e,this.cutoffThreshold=t,this.silenceThreshold=i,this.takeoverRate=n,this.volumes={}}calculateScore(e,t,i){(i||null===t)&&(t=0),this.volumes.hasOwnProperty(e)||(this.volumes[e]=0),t=t>this.silenceThreshold?1:0;const n=this.volumes[e]*this.speakerWeight+t*(1-this.speakerWeight);this.volumes[e]=n;for(const i in this.volumes)i!==e&&(this.volumes[i]=Math.max(this.volumes[i]-this.takeoverRate*t,0));return n<this.cutoffThreshold?0:n}prioritizeVideoSendBandwidthForActiveSpeaker(){return!0}}var _default$1U=DefaultActiveSpeakerPolicy,DefaultActiveSpeakerPolicy_1$1=Object.defineProperty({default:_default$1U},"__esModule",{value:!0}),__awaiter$G=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultAudioMixController{constructor(e){this.logger=e,this.audioDevice=null,this.audioElement=null,this.audioStream=null,this.browserBehavior=new DefaultBrowserBehavior_1.default,this.observers=new Set}bindAudioElement(e){return __awaiter$G(this,void 0,void 0,(function*(){if(!e)throw new Error(`Cannot bind audio element: ${e}`);return this.audioElement=e,this.audioElement.autoplay=!0,this.bindAudioMix()}))}unbindAudioElement(){this.audioElement&&(this.audioElement.srcObject=null,this.audioElement=null,this.forEachObserver((e=>{this.audioStream&&e.meetingAudioStreamBecameInactive(this.audioStream)})))}bindAudioStream(e){return __awaiter$G(this,void 0,void 0,(function*(){if(e){this.audioStream=e;try{yield this.bindAudioMix()}catch(e){this.logger&&this.logger.warn(`Failed to bind audio stream: ${e}`)}}}))}bindAudioDevice(e){return __awaiter$G(this,void 0,void 0,(function*(){if(e&&!this.browserBehavior.supportsSetSinkId())throw new Error("Cannot select audio output device. This browser does not support setSinkId.");return this.audioDevice=e,this.bindAudioMix()}))}forEachObserver(e){for(const t of this.observers)AsyncScheduler_1.default.nextTick((()=>{e(t)}))}bindAudioMix(){var e,t;return __awaiter$G(this,void 0,void 0,(function*(){if(!this.audioElement)return;const i=this.audioElement.srcObject;this.audioStream&&(this.audioElement.srcObject=this.audioStream),i!==this.audioStream&&this.forEachObserver((e=>{i&&e.meetingAudioStreamBecameInactive(i),this.audioStream&&e.meetingAudioStreamBecameActive(this.audioStream)}));const n=(null===(e=this.audioDevice)||void 0===e?void 0:e.deviceId)!==this.audioElement.sinkId;if(n&&void 0===this.audioElement.sinkId)throw new Error("Cannot select audio output device. This browser does not support setSinkId.");const r=this.audioDevice?this.audioDevice.deviceId:"";if(r===this.audioElement.sinkId)return;const o=this.audioElement,a=this.audioStream;if(this.browserBehavior.hasChromiumWebRTC()&&(o.srcObject=null),n)try{yield o.setSinkId(r)}catch(e){throw null===(t=this.logger)||void 0===t||t.error(`Failed to set sinkId for audio element: ${e}`),e}this.browserBehavior.hasChromiumWebRTC()&&(o.srcObject=a)}))}getCurrentMeetingAudioStream(){return __awaiter$G(this,void 0,void 0,(function*(){return this.audioStream}))}addAudioMixObserver(e){return __awaiter$G(this,void 0,void 0,(function*(){this.observers.add(e)}))}removeAudioMixObserver(e){return __awaiter$G(this,void 0,void 0,(function*(){this.observers.delete(e)}))}}var _default$1T=DefaultAudioMixController,DefaultAudioMixController_1$1=Object.defineProperty({default:_default$1T},"__esModule",{value:!0});class SignalingAndMetricsConnectionMonitor{constructor(e,t,i,n,r,o){this.audioVideoController=e,this.realtimeController=t,this.videoTileController=i,this.connectionHealthData=n,this.pingPong=r,this.statsCollector=o,this.isActive=!1,this.hasSeenValidPacketMetricsBefore=!1,this.lastAvailableSendBandwidthKbps=0,this.lastAvailableRecvBandwidthKbps=0,this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange((e=>{this.isActive&&this.receiveSignalStrengthChange(e)}))}start(){this.isActive=!0,this.pingPong.addObserver(this),this.pingPong.start(),this.audioVideoController.addObserver(this)}stop(){this.isActive=!1,this.pingPong.removeObserver(this),this.pingPong.stop(),this.audioVideoController.removeObserver(this)}receiveSignalStrengthChange(e){0===e?this.connectionHealthData.setLastNoSignalTimestampMs(Date.now()):e<=.5?this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now()):this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now()),this.updateConnectionHealth()}didReceivePong(e,t,i){this.connectionHealthData.setConsecutiveMissedPongs(0),this.statsCollector.logLatency("ping_pong",t),this.statsCollector.logLatency("ping_pong_clock_skew",i),this.updateConnectionHealth()}didMissPongs(){this.connectionHealthData.setConsecutiveMissedPongs(this.connectionHealthData.consecutiveMissedPongs+1),this.updateConnectionHealth()}metricsDidReceive(e){let t=0,i=0;const n=e.getObservableMetrics(),r=n.audioPacketsReceived,o=n.audioPacketsReceivedFractionLoss;let a=0;const s=n.videoPacketSentPerSecond,c=n.videoUpstreamBitrate,l=n.availableSendBandwidth||n.availableOutgoingBitrate,d=n.availableReceiveBandwidth||n.availableIncomingBitrate,u=n.audioSpeakerDelayMs,h=n.nackCountReceivedPerSecond||n.googNackCountReceivedPerSecond;"number"!=typeof l||isNaN(l)||this.updateAvailableSendBandwidth(l/1e3,h),"number"!=typeof d||isNaN(d)||this.updateAvailableReceiveBandwidth(d/1e3),"number"!=typeof c||isNaN(c)||(a=c/1e3),"number"!=typeof u||isNaN(u)||this.connectionHealthData.setAudioSpeakerDelayMs(u),this.monitorVideoUplinkHealth(a,s),"number"==typeof r&&"number"==typeof o&&(t=r,i=o,t<0||i<0||(this.addToMinuteWindow(this.connectionHealthData.packetsReceivedInLastMinute,t),this.addToMinuteWindow(this.connectionHealthData.fractionPacketsLostInboundInLastMinute,i),t>0?(this.hasSeenValidPacketMetricsBefore=!0,this.connectionHealthData.setConsecutiveStatsWithNoPackets(0)):this.hasSeenValidPacketMetricsBefore&&this.connectionHealthData.setConsecutiveStatsWithNoPackets(this.connectionHealthData.consecutiveStatsWithNoPackets+1),(0===t||i>0)&&this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now()),this.updateConnectionHealth()))}addToMinuteWindow(e,t){e.unshift(t),e.length>60&&e.pop()}updateAvailableSendBandwidth(e,t){if(e!==this.lastAvailableSendBandwidthKbps){if(0===this.lastAvailableSendBandwidthKbps)return void(this.lastAvailableSendBandwidthKbps=e);const i=this.lastAvailableSendBandwidthKbps;this.lastAvailableSendBandwidthKbps=e,this.audioVideoController.forEachObserver((n=>{Types_1.Maybe.of(n.videoSendBandwidthDidChange).map((r=>r.bind(n)(e,i,t)))}))}}updateAvailableReceiveBandwidth(e){if(e!==this.lastAvailableRecvBandwidthKbps){if(0===this.lastAvailableRecvBandwidthKbps)return void(this.lastAvailableRecvBandwidthKbps=e);const t=this.lastAvailableRecvBandwidthKbps;this.lastAvailableRecvBandwidthKbps=e,this.audioVideoController.forEachObserver((i=>{Types_1.Maybe.of(i.videoReceiveBandwidthDidChange).map((n=>n.bind(i)(e,t)))}))}}updateConnectionHealth(){this.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.connectionHealthDidChange).map((t=>t.bind(e)(this.connectionHealthData.clone())))}))}monitorVideoUplinkHealth(e,t){this.videoTileController.hasStartedLocalVideoTile()&&this.audioVideoController.forEachObserver((i=>{Types_1.Maybe.of(i.videoSendHealthDidChange).map((n=>n.bind(i)(e,t)))}))}}var _default$1S=SignalingAndMetricsConnectionMonitor,SignalingAndMetricsConnectionMonitor_1$1=Object.defineProperty({default:_default$1S},"__esModule",{value:!0}),uaParser=createCommonjsModule((function(e,t){!function(i,n){var r="function",o="undefined",a="object",s="string",c="model",l="name",d="type",u="vendor",h="version",p="architecture",f="console",m="mobile",g="tablet",v="smarttv",_="wearable",S="embedded",y="Amazon",b="Apple",k="ASUS",T="BlackBerry",C="Firefox",w="Google",I="Huawei",E="LG",R="Microsoft",M="Motorola",P="Opera",A="Samsung",D="Sony",O="Xiaomi",x="Zebra",L="Facebook",N=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},$=function(e,t){return typeof e===s&&-1!==V(t).indexOf(V(e))},V=function(e){return e.toLowerCase()},B=function(e,t){if(typeof e===s)return e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,""),typeof t===o?e:e.substring(0,255)},F=function(e,t){for(var i,o,s,c,l,d,u=0;u<t.length&&!l;){var h=t[u],p=t[u+1];for(i=o=0;i<h.length&&!l;)if(l=h[i++].exec(e))for(s=0;s<p.length;s++)d=l[++o],typeof(c=p[s])===a&&c.length>0?2===c.length?typeof c[1]==r?this[c[0]]=c[1].call(this,d):this[c[0]]=c[1]:3===c.length?typeof c[1]!==r||c[1].exec&&c[1].test?this[c[0]]=d?d.replace(c[1],c[2]):n:this[c[0]]=d?c[1].call(this,d,c[2]):n:4===c.length&&(this[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):n):this[c]=d||n;u+=2}},U=function(e,t){for(var i in t)if(typeof t[i]===a&&t[i].length>0){for(var r=0;r<t[i].length;r++)if($(t[i][r],e))return"?"===i?n:i}else if($(t[i],e))return"?"===i?n:i;return e},j={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},W={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,"Opera Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,P]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UCBrowser"]],[/\bqbcore\/([\w\.]+)/i],[h,[l,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/yabrowser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure Browser"],h],[/\bfocus\/([\w\.]+)/i],[h,[l,"Firefox Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,"Opera Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,"Opera Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI Browser"]],[/fxios\/([-\w\.]+)/i],[h,[l,C]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 Browser"]],[/(oculus|samsung|sailfish)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 Browser"],h],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,L],h],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,"Chrome Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,"Chrome WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w\.]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,U,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,"Firefox Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[l,h]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[p,"amd64"]],[/(ia32(?=;))/i],[[p,V]],[/((?:i[346]|x)86)[;\)]/i],[[p,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[p,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[p,"armhf"]],[/windows (ce|mobile); ppc;/i],[[p,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[p,/ower/,"",V]],[/(sun4\w)[;\)]/i],[[p,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[p,V]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[pt]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[c,[u,A],[d,g]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[c,[u,A],[d,m]],[/\((ip(?:hone|od)[\w ]*);/i],[c,[u,b],[d,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[c,[u,b],[d,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[c,[u,I],[d,g]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}-[atu]?[ln][01259x][012359][an]?)\b(?!.+d\/s)/i],[c,[u,I],[d,m]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[c,/_/g," "],[u,O],[d,m]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[c,/_/g," "],[u,O],[d,g]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[c,[u,"OPPO"],[d,m]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[c,[u,"Vivo"],[d,m]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[c,[u,"Realme"],[d,m]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[c,[u,M],[d,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[c,[u,M],[d,g]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[c,[u,E],[d,g]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[c,[u,E],[d,m]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[c,[u,"Lenovo"],[d,g]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[c,/_/g," "],[u,"Nokia"],[d,m]],[/(pixel c)\b/i],[c,[u,w],[d,g]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[c,[u,w],[d,m]],[/droid.+ ([c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[c,[u,D],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[c,"Xperia Tablet"],[u,D],[d,g]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[c,[u,"OnePlus"],[d,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[c,[u,y],[d,g]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[c,/(.+)/g,"Fire Phone $1"],[u,y],[d,m]],[/(playbook);[-\w\),; ]+(rim)/i],[c,u,[d,g]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[c,[u,T],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[c,[u,k],[d,g]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[c,[u,k],[d,m]],[/(nexus 9)/i],[c,[u,"HTC"],[d,g]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\w]*)/i],[u,[c,/_/g," "],[d,m]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[c,[u,"Acer"],[d,g]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[c,[u,"Meizu"],[d,m]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[c,[u,"Sharp"],[d,m]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[u,c,[d,m]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[u,c,[d,g]],[/(surface duo)/i],[c,[u,R],[d,g]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[c,[u,"Fairphone"],[d,m]],[/(u304aa)/i],[c,[u,"AT&T"],[d,m]],[/\bsie-(\w*)/i],[c,[u,"Siemens"],[d,m]],[/\b(rct\w+) b/i],[c,[u,"RCA"],[d,g]],[/\b(venue[\d ]{2,7}) b/i],[c,[u,"Dell"],[d,g]],[/\b(q(?:mv|ta)\w+) b/i],[c,[u,"Verizon"],[d,g]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[c,[u,"Barnes & Noble"],[d,g]],[/\b(tm\d{3}\w+) b/i],[c,[u,"NuVision"],[d,g]],[/\b(k88) b/i],[c,[u,"ZTE"],[d,g]],[/\b(nx\d{3}j) b/i],[c,[u,"ZTE"],[d,m]],[/\b(gen\d{3}) b.+49h/i],[c,[u,"Swiss"],[d,m]],[/\b(zur\d{3}) b/i],[c,[u,"Swiss"],[d,g]],[/\b((zeki)?tb.*\b) b/i],[c,[u,"Zeki"],[d,g]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[u,"Dragon Touch"],c,[d,g]],[/\b(ns-?\w{0,9}) b/i],[c,[u,"Insignia"],[d,g]],[/\b((nxa|next)-?\w{0,9}) b/i],[c,[u,"NextBook"],[d,g]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[u,"Voice"],c,[d,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[u,"LvTel"],c,[d,m]],[/\b(ph-1) /i],[c,[u,"Essential"],[d,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[c,[u,"Envizen"],[d,g]],[/\b(trio[-\w\. ]+) b/i],[c,[u,"MachSpeed"],[d,g]],[/\btu_(1491) b/i],[c,[u,"Rotor"],[d,g]],[/(shield[\w ]+) b/i],[c,[u,"Nvidia"],[d,g]],[/(sprint) (\w+)/i],[u,c,[d,m]],[/(kin\.[onetw]{3})/i],[[c,/\./g," "],[u,R],[d,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[c,[u,x],[d,g]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[c,[u,x],[d,m]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[u,c,[d,f]],[/droid.+; (shield) bui/i],[c,[u,"Nvidia"],[d,f]],[/(playstation [345portablevi]+)/i],[c,[u,D],[d,f]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[c,[u,R],[d,f]],[/smart-tv.+(samsung)/i],[u,[d,v]],[/hbbtv.+maple;(\d+)/i],[[c,/^/,"SmartTV"],[u,A],[d,v]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[u,E],[d,v]],[/(apple) ?tv/i],[u,[c,"Apple TV"],[d,v]],[/crkey/i],[[c,"Chromecast"],[u,w],[d,v]],[/droid.+aft(\w)( bui|\))/i],[c,[u,y],[d,v]],[/\(dtv[\);].+(aquos)/i],[c,[u,"Sharp"],[d,v]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[u,B],[c,B],[d,v]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[d,v]],[/((pebble))app/i],[u,c,[d,_]],[/droid.+; (glass) \d/i],[c,[u,w],[d,_]],[/droid.+; (wt63?0{2,3})\)/i],[c,[u,x],[d,_]],[/(quest( 2)?)/i],[c,[u,L],[d,_]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[u,[d,S]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[c,[d,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[c,[d,g]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[d,g]],[/(phone|mobile(?:[;\/]| safari)|pda(?=.+windows ce))/i],[[d,m]],[/(android[-\w\. ]{0,9});.+buil/i],[c,[u,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[l,[h,U,j]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[l,"Windows"],[h,U,j]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,"Mac OS"],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,T]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,"Firefox OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/crkey\/([\d\.]+)/i],[h,[l,"Chromecast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[l,"Chromium OS"],h],[/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[l,h]]},H=function(e,t){if(typeof e===a&&(t=e,e=n),!(this instanceof H))return new H(e,t).getResult();var r=e||(typeof i!==o&&i.navigator&&i.navigator.userAgent?i.navigator.userAgent:""),c=t?function(e,t){var i={};for(var n in e)t[n]&&t[n].length%2==0?i[n]=t[n].concat(e[n]):i[n]=e[n];return i}(W,t):W;return this.getBrowser=function(){var e={};return e.name=n,e.version=n,F.call(e,r,c.browser),e.major=function(e){return typeof e===s?e.replace(/[^\d\.]/g,"").split(".")[0]:n}(e.version),e},this.getCPU=function(){var e={};return e.architecture=n,F.call(e,r,c.cpu),e},this.getDevice=function(){var e={};return e.vendor=n,e.model=n,e.type=n,F.call(e,r,c.device),e},this.getEngine=function(){var e={};return e.name=n,e.version=n,F.call(e,r,c.engine),e},this.getOS=function(){var e={};return e.name=n,e.version=n,F.call(e,r,c.os),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return r},this.setUA=function(e){return r=typeof e===s&&e.length>255?B(e,255):e,this},this.setUA(r),this};H.VERSION="1.0.2",H.BROWSER=N([l,h,"major"]),H.CPU=N([p]),H.DEVICE=N([c,u,d,f,m,v,g,_,S]),H.ENGINE=H.OS=N([l,h]),e.exports&&(t=e.exports=H),t.UAParser=H;var G=typeof i!==o&&(i.jQuery||i.Zepto);if(G&&!G.ua){var z=new H;G.ua=z.getResult(),G.ua.get=function(){return z.getUA()},G.ua.set=function(e){z.setUA(e);var t=z.getResult();for(var i in t)G.ua[i]=t[i]}}}("object"==typeof window?window:commonjsGlobal)}));const flattenEventAttributes=e=>{const t={};for(const[i,n]of Object.entries(e))if(null!=n&&""!==n){if("number"!=typeof n&&"string"!=typeof n)throw new TypeError("Unhandled type received while flattening attributes.");t[i]=n}return t};var _default$1R=flattenEventAttributes,flattenEventAttributes_1$1=Object.defineProperty({default:_default$1R},"__esModule",{value:!0}),ua_parser_js_1=uaParser,flattenEventAttributes_1=flattenEventAttributes_1$1,__awaiter$F=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultEventController{constructor(e,t){var i,n,r,o,a,s,c;this.audioVideoController=e,this.eventReporter=t,this.meetingHistoryStates=[];try{this.parserResult=navigator&&navigator.userAgent?new ua_parser_js_1.UAParser(navigator.userAgent).getResult():null}catch(t){e.logger.error(t.message)}this.browserMajorVersion=(null===(r=null===(n=null===(i=this.parserResult)||void 0===i?void 0:i.browser)||void 0===n?void 0:n.version)||void 0===r?void 0:r.split(".")[0])||DefaultEventController.UNAVAILABLE,this.browserName=(null===(o=this.parserResult)||void 0===o?void 0:o.browser.name)||DefaultEventController.UNAVAILABLE,this.browserVersion=(null===(a=this.parserResult)||void 0===a?void 0:a.browser.version)||DefaultEventController.UNAVAILABLE,this.deviceName=[(null===(s=this.parserResult)||void 0===s?void 0:s.device.vendor)||"",(null===(c=this.parserResult)||void 0===c?void 0:c.device.model)||""].join(" ").trim()||DefaultEventController.UNAVAILABLE}publishEvent(e,t){return __awaiter$F(this,void 0,void 0,(function*(){const i=Date.now();this.meetingHistoryStates.push({name:e,timestampMs:i});const n=Object.freeze(Object.assign(this.getAttributes(i),t));this.audioVideoController.forEachObserver((t=>{t.eventDidReceive&&t.eventDidReceive(e,n)})),this.reportEvent(e,i,t)}))}reportEvent(e,t,i){var n;return __awaiter$F(this,void 0,void 0,(function*(){let r;try{i&&(r=flattenEventAttributes_1.default(i)),yield null===(n=this.eventReporter)||void 0===n?void 0:n.reportEvent(t,e,r)}catch(e){this.audioVideoController.logger.error(`Error reporting event ${e}`)}}))}pushMeetingState(e,t=Date.now()){return __awaiter$F(this,void 0,void 0,(function*(){this.meetingHistoryStates.push({name:e,timestampMs:t}),this.reportEvent(e,t)}))}getAttributes(e){var t,i;return{attendeeId:this.audioVideoController.configuration.credentials.attendeeId,browserMajorVersion:this.browserMajorVersion,browserName:this.browserName,browserVersion:this.browserVersion,deviceName:this.deviceName,externalMeetingId:"string"==typeof this.audioVideoController.configuration.externalMeetingId?this.audioVideoController.configuration.externalMeetingId:"",externalUserId:this.audioVideoController.configuration.credentials.externalUserId,meetingHistory:this.meetingHistoryStates,meetingId:this.audioVideoController.configuration.meetingId,osName:(null===(t=this.parserResult)||void 0===t?void 0:t.os.name)||DefaultEventController.UNAVAILABLE,osVersion:(null===(i=this.parserResult)||void 0===i?void 0:i.os.version)||DefaultEventController.UNAVAILABLE,sdkVersion:Versioning_1.default.sdkVersion,sdkName:Versioning_1.default.sdkName,timestampMs:e}}}var _default$1Q=DefaultEventController;DefaultEventController.UNAVAILABLE="Unavailable";var DefaultEventController_1$1=Object.defineProperty({default:_default$1Q},"__esModule",{value:!0}),aspromise=asPromise;function asPromise(e,t){for(var i=new Array(arguments.length-1),n=0,r=2,o=!0;r<arguments.length;)i[n++]=arguments[r++];return new Promise((function(r,a){i[n]=function(e){if(o)if(o=!1,e)a(e);else{for(var t=new Array(arguments.length-1),i=0;i<t.length;)t[i++]=arguments[i];r.apply(null,t)}};try{e.apply(t||null,i)}catch(e){o&&(o=!1,a(e))}}))}var base64_1=createCommonjsModule((function(e,t){var i=t;i.length=function(e){var t=e.length;if(!t)return 0;for(var i=0;--t%4>1&&"="===e.charAt(t);)++i;return Math.ceil(3*e.length)/4-i};for(var n=new Array(64),r=new Array(123),o=0;o<64;)r[n[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;i.encode=function(e,t,i){for(var r,o=null,a=[],s=0,c=0;t<i;){var l=e[t++];switch(c){case 0:a[s++]=n[l>>2],r=(3&l)<<4,c=1;break;case 1:a[s++]=n[r|l>>4],r=(15&l)<<2,c=2;break;case 2:a[s++]=n[r|l>>6],a[s++]=n[63&l],c=0}s>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),s=0)}return c&&(a[s++]=n[r],a[s++]=61,1===c&&(a[s++]=61)),o?(s&&o.push(String.fromCharCode.apply(String,a.slice(0,s))),o.join("")):String.fromCharCode.apply(String,a.slice(0,s))};var a="invalid encoding";i.decode=function(e,t,i){for(var n,o=i,s=0,c=0;c<e.length;){var l=e.charCodeAt(c++);if(61===l&&s>1)break;if(void 0===(l=r[l]))throw Error(a);switch(s){case 0:n=l,s=1;break;case 1:t[i++]=n<<2|(48&l)>>4,n=l,s=2;break;case 2:t[i++]=(15&n)<<4|(60&l)>>2,n=l,s=3;break;case 3:t[i++]=(3&n)<<6|l,s=0}}if(1===s)throw Error(a);return i-o},i.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}})),eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function(e,t,i){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:i||this}),this},EventEmitter.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var i=this._listeners[e],n=0;n<i.length;)i[n].fn===t?i.splice(n,1):++n;return this},EventEmitter.prototype.emit=function(e){var t=this._listeners[e];if(t){for(var i=[],n=1;n<arguments.length;)i.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,i)}return this};var float=factory(factory);function factory(e){return"undefined"!=typeof Float32Array?function(){var t=new Float32Array([-0]),i=new Uint8Array(t.buffer),n=128===i[3];function r(e,n,r){t[0]=e,n[r]=i[0],n[r+1]=i[1],n[r+2]=i[2],n[r+3]=i[3]}function o(e,n,r){t[0]=e,n[r]=i[3],n[r+1]=i[2],n[r+2]=i[1],n[r+3]=i[0]}function a(e,n){return i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],t[0]}function s(e,n){return i[3]=e[n],i[2]=e[n+1],i[1]=e[n+2],i[0]=e[n+3],t[0]}e.writeFloatLE=n?r:o,e.writeFloatBE=n?o:r,e.readFloatLE=n?a:s,e.readFloatBE=n?s:a}():function(){function t(e,t,i,n){var r=t<0?1:0;if(r&&(t=-t),0===t)e(1/t>0?0:2147483648,i,n);else if(isNaN(t))e(2143289344,i,n);else if(t>34028234663852886e22)e((r<<31|2139095040)>>>0,i,n);else if(t<11754943508222875e-54)e((r<<31|Math.round(t/1401298464324817e-60))>>>0,i,n);else{var o=Math.floor(Math.log(t)/Math.LN2);e((r<<31|o+127<<23|8388607&Math.round(t*Math.pow(2,-o)*8388608))>>>0,i,n)}}function i(e,t,i){var n=e(t,i),r=2*(n>>31)+1,o=n>>>23&255,a=8388607&n;return 255===o?a?NaN:r*(1/0):0===o?1401298464324817e-60*r*a:r*Math.pow(2,o-150)*(a+8388608)}e.writeFloatLE=t.bind(null,writeUintLE),e.writeFloatBE=t.bind(null,writeUintBE),e.readFloatLE=i.bind(null,readUintLE),e.readFloatBE=i.bind(null,readUintBE)}(),"undefined"!=typeof Float64Array?function(){var t=new Float64Array([-0]),i=new Uint8Array(t.buffer),n=128===i[7];function r(e,n,r){t[0]=e,n[r]=i[0],n[r+1]=i[1],n[r+2]=i[2],n[r+3]=i[3],n[r+4]=i[4],n[r+5]=i[5],n[r+6]=i[6],n[r+7]=i[7]}function o(e,n,r){t[0]=e,n[r]=i[7],n[r+1]=i[6],n[r+2]=i[5],n[r+3]=i[4],n[r+4]=i[3],n[r+5]=i[2],n[r+6]=i[1],n[r+7]=i[0]}function a(e,n){return i[0]=e[n],i[1]=e[n+1],i[2]=e[n+2],i[3]=e[n+3],i[4]=e[n+4],i[5]=e[n+5],i[6]=e[n+6],i[7]=e[n+7],t[0]}function s(e,n){return i[7]=e[n],i[6]=e[n+1],i[5]=e[n+2],i[4]=e[n+3],i[3]=e[n+4],i[2]=e[n+5],i[1]=e[n+6],i[0]=e[n+7],t[0]}e.writeDoubleLE=n?r:o,e.writeDoubleBE=n?o:r,e.readDoubleLE=n?a:s,e.readDoubleBE=n?s:a}():function(){function t(e,t,i,n,r,o){var a=n<0?1:0;if(a&&(n=-n),0===n)e(0,r,o+t),e(1/n>0?0:2147483648,r,o+i);else if(isNaN(n))e(0,r,o+t),e(2146959360,r,o+i);else if(n>17976931348623157e292)e(0,r,o+t),e((a<<31|2146435072)>>>0,r,o+i);else{var s;if(n<22250738585072014e-324)e((s=n/5e-324)>>>0,r,o+t),e((a<<31|s/4294967296)>>>0,r,o+i);else{var c=Math.floor(Math.log(n)/Math.LN2);1024===c&&(c=1023),e(4503599627370496*(s=n*Math.pow(2,-c))>>>0,r,o+t),e((a<<31|c+1023<<20|1048576*s&1048575)>>>0,r,o+i)}}}function i(e,t,i,n,r){var o=e(n,r+t),a=e(n,r+i),s=2*(a>>31)+1,c=a>>>20&2047,l=4294967296*(1048575&a)+o;return 2047===c?l?NaN:s*(1/0):0===c?5e-324*s*l:s*Math.pow(2,c-1075)*(l+4503599627370496)}e.writeDoubleLE=t.bind(null,writeUintLE,0,4),e.writeDoubleBE=t.bind(null,writeUintBE,4,0),e.readDoubleLE=i.bind(null,readUintLE,0,4),e.readDoubleBE=i.bind(null,readUintBE,4,0)}(),e}function writeUintLE(e,t,i){t[i]=255&e,t[i+1]=e>>>8&255,t[i+2]=e>>>16&255,t[i+3]=e>>>24}function writeUintBE(e,t,i){t[i]=e>>>24,t[i+1]=e>>>16&255,t[i+2]=e>>>8&255,t[i+3]=255&e}function readUintLE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function readUintBE(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}var utf8_1=createCommonjsModule((function(e,t){var i=t;i.length=function(e){for(var t=0,i=0,n=0;n<e.length;++n)(i=e.charCodeAt(n))<128?t+=1:i<2048?t+=2:55296==(64512&i)&&56320==(64512&e.charCodeAt(n+1))?(++n,t+=4):t+=3;return t},i.read=function(e,t,i){if(i-t<1)return"";for(var n,r=null,o=[],a=0;t<i;)(n=e[t++])<128?o[a++]=n:n>191&&n<224?o[a++]=(31&n)<<6|63&e[t++]:n>239&&n<365?(n=((7&n)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,o[a++]=55296+(n>>10),o[a++]=56320+(1023&n)):o[a++]=(15&n)<<12|(63&e[t++])<<6|63&e[t++],a>8191&&((r||(r=[])).push(String.fromCharCode.apply(String,o)),a=0);return r?(a&&r.push(String.fromCharCode.apply(String,o.slice(0,a))),r.join("")):String.fromCharCode.apply(String,o.slice(0,a))},i.write=function(e,t,i){for(var n,r,o=i,a=0;a<e.length;++a)(n=e.charCodeAt(a))<128?t[i++]=n:n<2048?(t[i++]=n>>6|192,t[i++]=63&n|128):55296==(64512&n)&&56320==(64512&(r=e.charCodeAt(a+1)))?(n=65536+((1023&n)<<10)+(1023&r),++a,t[i++]=n>>18|240,t[i++]=n>>12&63|128,t[i++]=n>>6&63|128,t[i++]=63&n|128):(t[i++]=n>>12|224,t[i++]=n>>6&63|128,t[i++]=63&n|128);return i-o}})),pool_1=pool;function pool(e,t,i){var n=i||8192,r=n>>>1,o=null,a=n;return function(i){if(i<1||i>r)return e(i);a+i>n&&(o=e(n),a=0);var s=t.call(o,a,a+=i);return 7&a&&(a=1+(7|a)),s}}var require$$4$1=minimal$1,longbits=LongBits$2;function LongBits$2(e,t){this.lo=e>>>0,this.hi=t>>>0}var zero$2=LongBits$2.zero=new LongBits$2(0,0);zero$2.toNumber=function(){return 0},zero$2.zzEncode=zero$2.zzDecode=function(){return this},zero$2.length=function(){return 1};var zeroHash=LongBits$2.zeroHash="\0\0\0\0\0\0\0\0";LongBits$2.fromNumber=function(e){if(0===e)return zero$2;var t=e<0;t&&(e=-e);var i=e>>>0,n=(e-i)/4294967296>>>0;return t&&(n=~n>>>0,i=~i>>>0,++i>4294967295&&(i=0,++n>4294967295&&(n=0))),new LongBits$2(i,n)},LongBits$2.from=function(e){if("number"==typeof e)return LongBits$2.fromNumber(e);if(require$$4$1.isString(e)){if(!require$$4$1.Long)return LongBits$2.fromNumber(parseInt(e,10));e=require$$4$1.Long.fromString(e)}return e.low||e.high?new LongBits$2(e.low>>>0,e.high>>>0):zero$2},LongBits$2.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,i=~this.hi>>>0;return t||(i=i+1>>>0),-(t+4294967296*i)}return this.lo+4294967296*this.hi},LongBits$2.prototype.toLong=function(e){return require$$4$1.Long?new require$$4$1.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var charCodeAt=String.prototype.charCodeAt;LongBits$2.fromHash=function(e){return e===zeroHash?zero$2:new LongBits$2((charCodeAt.call(e,0)|charCodeAt.call(e,1)<<8|charCodeAt.call(e,2)<<16|charCodeAt.call(e,3)<<24)>>>0,(charCodeAt.call(e,4)|charCodeAt.call(e,5)<<8|charCodeAt.call(e,6)<<16|charCodeAt.call(e,7)<<24)>>>0)},LongBits$2.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},LongBits$2.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},LongBits$2.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},LongBits$2.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return 0===i?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:i<128?9:10};var require$$0$6=aspromise,require$$1$2=base64_1,require$$2$1=eventemitter,require$$3$1=float,require$$4=inquire_1,require$$5$1=utf8_1,require$$6$1=pool_1,require$$7=longbits,minimal$1=createCommonjsModule((function(e,t){var i=t;function n(e,t,i){for(var n=Object.keys(t),r=0;r<n.length;++r)void 0!==e[n[r]]&&i||(e[n[r]]=t[n[r]]);return e}function r(e){function t(e,i){if(!(this instanceof t))return new t(e,i);Object.defineProperty(this,"message",{get:function(){return e}}),Error.captureStackTrace?Error.captureStackTrace(this,t):Object.defineProperty(this,"stack",{value:(new Error).stack||""}),i&&n(this,i)}return(t.prototype=Object.create(Error.prototype)).constructor=t,Object.defineProperty(t.prototype,"name",{get:function(){return e}}),t.prototype.toString=function(){return this.name+": "+this.message},t}i.asPromise=require$$0$6,i.base64=require$$1$2,i.EventEmitter=require$$2$1,i.float=require$$3$1,i.inquire=require$$4,i.utf8=require$$5$1,i.pool=require$$6$1,i.LongBits=require$$7,i.global="undefined"!=typeof window&&window||void 0!==commonjsGlobal&&commonjsGlobal||"undefined"!=typeof self&&self||commonjsGlobal,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isNode=Boolean(i.global.process&&i.global.process.versions&&i.global.process.versions.node),i.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},i.isString=function(e){return"string"==typeof e||e instanceof String},i.isObject=function(e){return e&&"object"==typeof e},i.isset=i.isSet=function(e,t){var i=e[t];return!(null==i||!e.hasOwnProperty(t))&&("object"!=typeof i||(Array.isArray(i)?i.length:Object.keys(i).length)>0)},i.Buffer=function(){try{var e=i.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(e){return"number"==typeof e?i.Buffer?i._Buffer_allocUnsafe(e):new i.Array(e):i.Buffer?i._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},i.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(e){return e?i.LongBits.from(e).toHash():i.LongBits.zeroHash},i.longFromHash=function(e,t){var n=i.LongBits.fromHash(e);return i.Long?i.Long.fromBits(n.lo,n.hi,t):n.toNumber(Boolean(t))},i.merge=n,i.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(e){for(var t={},i=0;i<e.length;++i)t[e[i]]=1;return function(){for(var e=Object.keys(this),i=e.length-1;i>-1;--i)if(1===t[e[i]]&&void 0!==this[e[i]]&&null!==this[e[i]])return e[i]}},i.oneOfSetter=function(e){return function(t){for(var i=0;i<e.length;++i)e[i]!==t&&delete this[e[i]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var e=i.Buffer;e?(i._Buffer_from=e.from!==Uint8Array.from&&e.from||function(t,i){return new e(t,i)},i._Buffer_allocUnsafe=e.allocUnsafe||function(t){return new e(t)}):i._Buffer_from=i._Buffer_allocUnsafe=null}})),writer=Writer,BufferWriter$1,LongBits$1=require$$4$1.LongBits,base64=require$$4$1.base64,utf8$1=require$$4$1.utf8;function Op(e,t,i){this.fn=e,this.len=t,this.next=void 0,this.val=i}function noop(){}function State(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function Writer(){this.len=0,this.head=new Op(noop,0,0),this.tail=this.head,this.states=null}function writeByte(e,t,i){t[i]=255&e}function writeVarint32(e,t,i){for(;e>127;)t[i++]=127&e|128,e>>>=7;t[i]=e}function VarintOp(e,t){this.len=e,this.next=void 0,this.val=t}function writeVarint64(e,t,i){for(;e.hi;)t[i++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[i++]=127&e.lo|128,e.lo=e.lo>>>7;t[i++]=e.lo}function writeFixed32(e,t,i){t[i]=255&e,t[i+1]=e>>>8&255,t[i+2]=e>>>16&255,t[i+3]=e>>>24}Writer.create=require$$4$1.Buffer?function(){return(Writer.create=function(){return new BufferWriter$1})()}:function(){return new Writer},Writer.alloc=function(e){return new require$$4$1.Array(e)},require$$4$1.Array!==Array&&(Writer.alloc=require$$4$1.pool(Writer.alloc,require$$4$1.Array.prototype.subarray)),Writer.prototype._push=function(e,t,i){return this.tail=this.tail.next=new Op(e,t,i),this.len+=t,this},VarintOp.prototype=Object.create(Op.prototype),VarintOp.prototype.fn=writeVarint32,Writer.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new VarintOp((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},Writer.prototype.int32=function(e){return e<0?this._push(writeVarint64,10,LongBits$1.fromNumber(e)):this.uint32(e)},Writer.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},Writer.prototype.uint64=function(e){var t=LongBits$1.from(e);return this._push(writeVarint64,t.length(),t)},Writer.prototype.int64=Writer.prototype.uint64,Writer.prototype.sint64=function(e){var t=LongBits$1.from(e).zzEncode();return this._push(writeVarint64,t.length(),t)},Writer.prototype.bool=function(e){return this._push(writeByte,1,e?1:0)},Writer.prototype.fixed32=function(e){return this._push(writeFixed32,4,e>>>0)},Writer.prototype.sfixed32=Writer.prototype.fixed32,Writer.prototype.fixed64=function(e){var t=LongBits$1.from(e);return this._push(writeFixed32,4,t.lo)._push(writeFixed32,4,t.hi)},Writer.prototype.sfixed64=Writer.prototype.fixed64,Writer.prototype.float=function(e){return this._push(require$$4$1.float.writeFloatLE,4,e)},Writer.prototype.double=function(e){return this._push(require$$4$1.float.writeDoubleLE,8,e)};var writeBytes=require$$4$1.Array.prototype.set?function(e,t,i){t.set(e,i)}:function(e,t,i){for(var n=0;n<e.length;++n)t[i+n]=e[n]};Writer.prototype.bytes=function(e){var t=e.length>>>0;if(!t)return this._push(writeByte,1,0);if(require$$4$1.isString(e)){var i=Writer.alloc(t=base64.length(e));base64.decode(e,i,0),e=i}return this.uint32(t)._push(writeBytes,t,e)},Writer.prototype.string=function(e){var t=utf8$1.length(e);return t?this.uint32(t)._push(utf8$1.write,t,e):this._push(writeByte,1,0)},Writer.prototype.fork=function(){return this.states=new State(this),this.head=this.tail=new Op(noop,0,0),this.len=0,this},Writer.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop,0,0),this.len=0),this},Writer.prototype.ldelim=function(){var e=this.head,t=this.tail,i=this.len;return this.reset().uint32(i),i&&(this.tail.next=e.next,this.tail=t,this.len+=i),this},Writer.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),i=0;e;)e.fn(e.val,t,i),i+=e.len,e=e.next;return t},Writer._configure=function(e){BufferWriter$1=e};var require$$0$5=writer,writer_buffer=BufferWriter;(BufferWriter.prototype=Object.create(require$$0$5.prototype)).constructor=BufferWriter;var Buffer=require$$4$1.Buffer;function BufferWriter(){require$$0$5.call(this)}BufferWriter.alloc=function(e){return(BufferWriter.alloc=require$$4$1._Buffer_allocUnsafe)(e)};var writeBytesBuffer=Buffer&&Buffer.prototype instanceof Uint8Array&&"set"===Buffer.prototype.set.name?function(e,t,i){t.set(e,i)}:function(e,t,i){if(e.copy)e.copy(t,i,0,e.length);else for(var n=0;n<e.length;)t[i++]=e[n++]};function writeStringBuffer(e,t,i){e.length<40?require$$4$1.utf8.write(e,t,i):t.utf8Write(e,i)}BufferWriter.prototype.bytes=function(e){require$$4$1.isString(e)&&(e=require$$4$1._Buffer_from(e,"base64"));var t=e.length>>>0;return this.uint32(t),t&&this._push(writeBytesBuffer,t,e),this},BufferWriter.prototype.string=function(e){var t=Buffer.byteLength(e);return this.uint32(t),t&&this._push(writeStringBuffer,t,e),this};var reader=Reader,BufferReader$1,LongBits=require$$4$1.LongBits,utf8=require$$4$1.utf8;function indexOutOfRange(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function Reader(e){this.buf=e,this.pos=0,this.len=e.length}var create_array="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new Reader(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new Reader(e);throw Error("illegal buffer")},value;function readLongVarint(){var e=new LongBits(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw indexOutOfRange(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw indexOutOfRange(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function readFixed32_end(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader.create=require$$4$1.Buffer?function(e){return(Reader.create=function(e){return require$$4$1.Buffer.isBuffer(e)?new BufferReader$1(e):create_array(e)})(e)}:create_array,Reader.prototype._slice=require$$4$1.Array.prototype.subarray||require$$4$1.Array.prototype.slice,Reader.prototype.uint32=(value=4294967295,function(){if(value=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return value;if(value=(value|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return value;if(value=(value|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return value;if(value=(value|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return value;if(value=(value|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return value;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return value}),Reader.prototype.int32=function(){return 0|this.uint32()},Reader.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},Reader.prototype.bool=function(){return 0!==this.uint32()},Reader.prototype.fixed32=function(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)},Reader.prototype.sfixed32=function(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return 0|readFixed32_end(this.buf,this.pos+=4)},Reader.prototype.float=function(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var e=require$$4$1.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},Reader.prototype.double=function(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var e=require$$4$1.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},Reader.prototype.bytes=function(){var e=this.uint32(),t=this.pos,i=this.pos+e;if(i>this.len)throw indexOutOfRange(this,e);return this.pos+=e,Array.isArray(this.buf)?this.buf.slice(t,i):t===i?new this.buf.constructor(0):this._slice.call(this.buf,t,i)},Reader.prototype.string=function(){var e=this.bytes();return utf8.read(e,0,e.length)},Reader.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw indexOutOfRange(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw indexOutOfRange(this)}while(128&this.buf[this.pos++]);return this},Reader.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},Reader._configure=function(e){BufferReader$1=e;var t=require$$4$1.Long?"toLong":"toNumber";require$$4$1.merge(Reader.prototype,{int64:function(){return readLongVarint.call(this)[t](!1)},uint64:function(){return readLongVarint.call(this)[t](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[t](!1)},fixed64:function(){return readFixed64.call(this)[t](!0)},sfixed64:function(){return readFixed64.call(this)[t](!1)}})};var require$$2=reader,reader_buffer=BufferReader;function BufferReader(e){require$$2.call(this,e)}(BufferReader.prototype=Object.create(require$$2.prototype)).constructor=BufferReader,require$$4$1.Buffer&&(BufferReader.prototype._slice=require$$4$1.Buffer.prototype.slice),BufferReader.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len))};var service=Service;function Service(e,t,i){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");require$$4$1.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(i)}(Service.prototype=Object.create(require$$4$1.EventEmitter.prototype)).constructor=Service,Service.prototype.rpcCall=function e(t,i,n,r,o){if(!r)throw TypeError("request must be specified");var a=this;if(!o)return require$$4$1.asPromise(e,a,t,i,n,r);if(a.rpcImpl)try{return a.rpcImpl(t,i[a.requestDelimited?"encodeDelimited":"encode"](r).finish(),(function(e,i){if(e)return a.emit("error",e,t),o(e);if(null!==i){if(!(i instanceof n))try{i=n[a.responseDelimited?"decodeDelimited":"decode"](i)}catch(e){return a.emit("error",e,t),o(e)}return a.emit("data",i,t),o(null,i)}a.end(!0)}))}catch(e){return a.emit("error",e,t),void setTimeout((function(){o(e)}),0)}else setTimeout((function(){o(Error("already ended"))}),0)},Service.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};var require$$0$4=service,rpc_1=createCommonjsModule((function(e,t){t.Service=require$$0$4})),roots={},require$$1$1=writer_buffer,require$$3=reader_buffer,require$$5=rpc_1,require$$6=roots,indexMinimal=createCommonjsModule((function(e,t){var i=t;function n(){i.Reader._configure(i.BufferReader),i.util._configure()}i.build="minimal",i.Writer=require$$0$5,i.BufferWriter=require$$1$1,i.Reader=require$$2,i.BufferReader=require$$3,i.util=require$$4$1,i.rpc=require$$5,i.roots=require$$6,i.configure=n,i.Writer._configure(i.BufferWriter),n()})),require$$0$3=indexMinimal,minimal=require$$0$3,$protobuf=minimal,$Reader=$protobuf.Reader,$Writer=$protobuf.Writer,$util=$protobuf.util,$root=$protobuf.roots.default||($protobuf.roots.default={}),valuesById,values;$root.SdkSignalFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}var t,i;return e.prototype.timestampMs=$util.Long?$util.Long.fromBits(0,0,!0):0,e.prototype.type=1,e.prototype.error=null,e.prototype.join=null,e.prototype.joinack=null,e.prototype.sub=null,e.prototype.suback=null,e.prototype.index=null,e.prototype.pause=null,e.prototype.leave=null,e.prototype.leaveAck=null,e.prototype.bitrates=null,e.prototype.audioControl=null,e.prototype.audioMetadata=null,e.prototype.audioStreamIdInfo=null,e.prototype.pingPong=null,e.prototype.audioStatus=null,e.prototype.clientMetric=null,e.prototype.dataMessage=null,e.prototype.remoteVideoUpdate=null,e.prototype.primaryMeetingJoin=null,e.prototype.primaryMeetingJoinAck=null,e.prototype.primaryMeetingLeave=null,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t.uint32(8).uint64(e.timestampMs),t.uint32(16).int32(e.type),null!=e.error&&e.hasOwnProperty("error")&&$root.SdkErrorFrame.encode(e.error,t.uint32(26).fork()).ldelim(),null!=e.join&&e.hasOwnProperty("join")&&$root.SdkJoinFrame.encode(e.join,t.uint32(34).fork()).ldelim(),null!=e.joinack&&e.hasOwnProperty("joinack")&&$root.SdkJoinAckFrame.encode(e.joinack,t.uint32(42).fork()).ldelim(),null!=e.sub&&e.hasOwnProperty("sub")&&$root.SdkSubscribeFrame.encode(e.sub,t.uint32(50).fork()).ldelim(),null!=e.suback&&e.hasOwnProperty("suback")&&$root.SdkSubscribeAckFrame.encode(e.suback,t.uint32(58).fork()).ldelim(),null!=e.index&&e.hasOwnProperty("index")&&$root.SdkIndexFrame.encode(e.index,t.uint32(66).fork()).ldelim(),null!=e.pause&&e.hasOwnProperty("pause")&&$root.SdkPauseResumeFrame.encode(e.pause,t.uint32(82).fork()).ldelim(),null!=e.leave&&e.hasOwnProperty("leave")&&$root.SdkLeaveFrame.encode(e.leave,t.uint32(90).fork()).ldelim(),null!=e.leaveAck&&e.hasOwnProperty("leaveAck")&&$root.SdkLeaveAckFrame.encode(e.leaveAck,t.uint32(98).fork()).ldelim(),null!=e.bitrates&&e.hasOwnProperty("bitrates")&&$root.SdkBitrateFrame.encode(e.bitrates,t.uint32(114).fork()).ldelim(),null!=e.audioControl&&e.hasOwnProperty("audioControl")&&$root.SdkAudioControlFrame.encode(e.audioControl,t.uint32(138).fork()).ldelim(),null!=e.audioMetadata&&e.hasOwnProperty("audioMetadata")&&$root.SdkAudioMetadataFrame.encode(e.audioMetadata,t.uint32(146).fork()).ldelim(),null!=e.audioStreamIdInfo&&e.hasOwnProperty("audioStreamIdInfo")&&$root.SdkAudioStreamIdInfoFrame.encode(e.audioStreamIdInfo,t.uint32(154).fork()).ldelim(),null!=e.pingPong&&e.hasOwnProperty("pingPong")&&$root.SdkPingPongFrame.encode(e.pingPong,t.uint32(162).fork()).ldelim(),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&$root.SdkAudioStatusFrame.encode(e.audioStatus,t.uint32(170).fork()).ldelim(),null!=e.clientMetric&&e.hasOwnProperty("clientMetric")&&$root.SdkClientMetricFrame.encode(e.clientMetric,t.uint32(178).fork()).ldelim(),null!=e.dataMessage&&e.hasOwnProperty("dataMessage")&&$root.SdkDataMessageFrame.encode(e.dataMessage,t.uint32(186).fork()).ldelim(),null!=e.remoteVideoUpdate&&e.hasOwnProperty("remoteVideoUpdate")&&$root.SdkRemoteVideoUpdateFrame.encode(e.remoteVideoUpdate,t.uint32(202).fork()).ldelim(),null!=e.primaryMeetingJoin&&e.hasOwnProperty("primaryMeetingJoin")&&$root.SdkPrimaryMeetingJoinFrame.encode(e.primaryMeetingJoin,t.uint32(210).fork()).ldelim(),null!=e.primaryMeetingJoinAck&&e.hasOwnProperty("primaryMeetingJoinAck")&&$root.SdkPrimaryMeetingJoinAckFrame.encode(e.primaryMeetingJoinAck,t.uint32(218).fork()).ldelim(),null!=e.primaryMeetingLeave&&e.hasOwnProperty("primaryMeetingLeave")&&$root.SdkPrimaryMeetingLeaveFrame.encode(e.primaryMeetingLeave,t.uint32(226).fork()).ldelim(),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkSignalFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.timestampMs=e.uint64();break;case 2:n.type=e.int32();break;case 3:n.error=$root.SdkErrorFrame.decode(e,e.uint32());break;case 4:n.join=$root.SdkJoinFrame.decode(e,e.uint32());break;case 5:n.joinack=$root.SdkJoinAckFrame.decode(e,e.uint32());break;case 6:n.sub=$root.SdkSubscribeFrame.decode(e,e.uint32());break;case 7:n.suback=$root.SdkSubscribeAckFrame.decode(e,e.uint32());break;case 8:n.index=$root.SdkIndexFrame.decode(e,e.uint32());break;case 10:n.pause=$root.SdkPauseResumeFrame.decode(e,e.uint32());break;case 11:n.leave=$root.SdkLeaveFrame.decode(e,e.uint32());break;case 12:n.leaveAck=$root.SdkLeaveAckFrame.decode(e,e.uint32());break;case 14:n.bitrates=$root.SdkBitrateFrame.decode(e,e.uint32());break;case 17:n.audioControl=$root.SdkAudioControlFrame.decode(e,e.uint32());break;case 18:n.audioMetadata=$root.SdkAudioMetadataFrame.decode(e,e.uint32());break;case 19:n.audioStreamIdInfo=$root.SdkAudioStreamIdInfoFrame.decode(e,e.uint32());break;case 20:n.pingPong=$root.SdkPingPongFrame.decode(e,e.uint32());break;case 21:n.audioStatus=$root.SdkAudioStatusFrame.decode(e,e.uint32());break;case 22:n.clientMetric=$root.SdkClientMetricFrame.decode(e,e.uint32());break;case 23:n.dataMessage=$root.SdkDataMessageFrame.decode(e,e.uint32());break;case 25:n.remoteVideoUpdate=$root.SdkRemoteVideoUpdateFrame.decode(e,e.uint32());break;case 26:n.primaryMeetingJoin=$root.SdkPrimaryMeetingJoinFrame.decode(e,e.uint32());break;case 27:n.primaryMeetingJoinAck=$root.SdkPrimaryMeetingJoinAckFrame.decode(e,e.uint32());break;case 28:n.primaryMeetingLeave=$root.SdkPrimaryMeetingLeaveFrame.decode(e,e.uint32());break;default:e.skipType(7&r)}}if(!n.hasOwnProperty("timestampMs"))throw $util.ProtocolError("missing required 'timestampMs'",{instance:n});if(!n.hasOwnProperty("type"))throw $util.ProtocolError("missing required 'type'",{instance:n});return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(!($util.isInteger(e.timestampMs)||e.timestampMs&&$util.isInteger(e.timestampMs.low)&&$util.isInteger(e.timestampMs.high)))return"timestampMs: integer|Long expected";switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:case 7:case 8:case 9:case 10:case 13:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 24:case 25:case 26:case 27:}var t;if(null!=e.error&&e.hasOwnProperty("error")&&(t=$root.SdkErrorFrame.verify(e.error)))return"error."+t;if(null!=e.join&&e.hasOwnProperty("join")&&(t=$root.SdkJoinFrame.verify(e.join)))return"join."+t;if(null!=e.joinack&&e.hasOwnProperty("joinack")&&(t=$root.SdkJoinAckFrame.verify(e.joinack)))return"joinack."+t;if(null!=e.sub&&e.hasOwnProperty("sub")&&(t=$root.SdkSubscribeFrame.verify(e.sub)))return"sub."+t;if(null!=e.suback&&e.hasOwnProperty("suback")&&(t=$root.SdkSubscribeAckFrame.verify(e.suback)))return"suback."+t;if(null!=e.index&&e.hasOwnProperty("index")&&(t=$root.SdkIndexFrame.verify(e.index)))return"index."+t;if(null!=e.pause&&e.hasOwnProperty("pause")&&(t=$root.SdkPauseResumeFrame.verify(e.pause)))return"pause."+t;if(null!=e.leave&&e.hasOwnProperty("leave")&&(t=$root.SdkLeaveFrame.verify(e.leave)))return"leave."+t;if(null!=e.leaveAck&&e.hasOwnProperty("leaveAck")&&(t=$root.SdkLeaveAckFrame.verify(e.leaveAck)))return"leaveAck."+t;if(null!=e.bitrates&&e.hasOwnProperty("bitrates")&&(t=$root.SdkBitrateFrame.verify(e.bitrates)))return"bitrates."+t;if(null!=e.audioControl&&e.hasOwnProperty("audioControl")&&(t=$root.SdkAudioControlFrame.verify(e.audioControl)))return"audioControl."+t;if(null!=e.audioMetadata&&e.hasOwnProperty("audioMetadata")&&(t=$root.SdkAudioMetadataFrame.verify(e.audioMetadata)))return"audioMetadata."+t;if(null!=e.audioStreamIdInfo&&e.hasOwnProperty("audioStreamIdInfo")&&(t=$root.SdkAudioStreamIdInfoFrame.verify(e.audioStreamIdInfo)))return"audioStreamIdInfo."+t;if(null!=e.pingPong&&e.hasOwnProperty("pingPong")&&(t=$root.SdkPingPongFrame.verify(e.pingPong)))return"pingPong."+t;if(null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(t=$root.SdkAudioStatusFrame.verify(e.audioStatus)))return"audioStatus."+t;if(null!=e.clientMetric&&e.hasOwnProperty("clientMetric")&&(t=$root.SdkClientMetricFrame.verify(e.clientMetric)))return"clientMetric."+t;if(null!=e.dataMessage&&e.hasOwnProperty("dataMessage")&&(t=$root.SdkDataMessageFrame.verify(e.dataMessage)))return"dataMessage."+t;if(null!=e.remoteVideoUpdate&&e.hasOwnProperty("remoteVideoUpdate")&&(t=$root.SdkRemoteVideoUpdateFrame.verify(e.remoteVideoUpdate)))return"remoteVideoUpdate."+t;if(null!=e.primaryMeetingJoin&&e.hasOwnProperty("primaryMeetingJoin")&&(t=$root.SdkPrimaryMeetingJoinFrame.verify(e.primaryMeetingJoin)))return"primaryMeetingJoin."+t;if(null!=e.primaryMeetingJoinAck&&e.hasOwnProperty("primaryMeetingJoinAck")&&(t=$root.SdkPrimaryMeetingJoinAckFrame.verify(e.primaryMeetingJoinAck)))return"primaryMeetingJoinAck."+t;if(null!=e.primaryMeetingLeave&&e.hasOwnProperty("primaryMeetingLeave")&&(t=$root.SdkPrimaryMeetingLeaveFrame.verify(e.primaryMeetingLeave)))return"primaryMeetingLeave."+t;return null},e.fromObject=function(e){if(e instanceof $root.SdkSignalFrame)return e;var t=new $root.SdkSignalFrame;switch(null!=e.timestampMs&&($util.Long?(t.timestampMs=$util.Long.fromValue(e.timestampMs)).unsigned=!0:"string"==typeof e.timestampMs?t.timestampMs=parseInt(e.timestampMs,10):"number"==typeof e.timestampMs?t.timestampMs=e.timestampMs:"object"==typeof e.timestampMs&&(t.timestampMs=new $util.LongBits(e.timestampMs.low>>>0,e.timestampMs.high>>>0).toNumber(!0))),e.type){case"JOIN":case 1:t.type=1;break;case"JOIN_ACK":case 2:t.type=2;break;case"SUBSCRIBE":case 3:t.type=3;break;case"SUBSCRIBE_ACK":case 4:t.type=4;break;case"INDEX":case 5:t.type=5;break;case"PAUSE":case 7:t.type=7;break;case"RESUME":case 8:t.type=8;break;case"LEAVE":case 9:t.type=9;break;case"LEAVE_ACK":case 10:t.type=10;break;case"BITRATES":case 13:t.type=13;break;case"AUDIO_CONTROL":case 16:t.type=16;break;case"AUDIO_METADATA":case 17:t.type=17;break;case"AUDIO_STREAM_ID_INFO":case 18:t.type=18;break;case"PING_PONG":case 19:t.type=19;break;case"AUDIO_STATUS":case 20:t.type=20;break;case"CLIENT_METRIC":case 21:t.type=21;break;case"DATA_MESSAGE":case 22:t.type=22;break;case"REMOTE_VIDEO_UPDATE":case 24:t.type=24;break;case"PRIMARY_MEETING_JOIN":case 25:t.type=25;break;case"PRIMARY_MEETING_JOIN_ACK":case 26:t.type=26;break;case"PRIMARY_MEETING_LEAVE":case 27:t.type=27}if(null!=e.error){if("object"!=typeof e.error)throw TypeError(".SdkSignalFrame.error: object expected");t.error=$root.SdkErrorFrame.fromObject(e.error)}if(null!=e.join){if("object"!=typeof e.join)throw TypeError(".SdkSignalFrame.join: object expected");t.join=$root.SdkJoinFrame.fromObject(e.join)}if(null!=e.joinack){if("object"!=typeof e.joinack)throw TypeError(".SdkSignalFrame.joinack: object expected");t.joinack=$root.SdkJoinAckFrame.fromObject(e.joinack)}if(null!=e.sub){if("object"!=typeof e.sub)throw TypeError(".SdkSignalFrame.sub: object expected");t.sub=$root.SdkSubscribeFrame.fromObject(e.sub)}if(null!=e.suback){if("object"!=typeof e.suback)throw TypeError(".SdkSignalFrame.suback: object expected");t.suback=$root.SdkSubscribeAckFrame.fromObject(e.suback)}if(null!=e.index){if("object"!=typeof e.index)throw TypeError(".SdkSignalFrame.index: object expected");t.index=$root.SdkIndexFrame.fromObject(e.index)}if(null!=e.pause){if("object"!=typeof e.pause)throw TypeError(".SdkSignalFrame.pause: object expected");t.pause=$root.SdkPauseResumeFrame.fromObject(e.pause)}if(null!=e.leave){if("object"!=typeof e.leave)throw TypeError(".SdkSignalFrame.leave: object expected");t.leave=$root.SdkLeaveFrame.fromObject(e.leave)}if(null!=e.leaveAck){if("object"!=typeof e.leaveAck)throw TypeError(".SdkSignalFrame.leaveAck: object expected");t.leaveAck=$root.SdkLeaveAckFrame.fromObject(e.leaveAck)}if(null!=e.bitrates){if("object"!=typeof e.bitrates)throw TypeError(".SdkSignalFrame.bitrates: object expected");t.bitrates=$root.SdkBitrateFrame.fromObject(e.bitrates)}if(null!=e.audioControl){if("object"!=typeof e.audioControl)throw TypeError(".SdkSignalFrame.audioControl: object expected");t.audioControl=$root.SdkAudioControlFrame.fromObject(e.audioControl)}if(null!=e.audioMetadata){if("object"!=typeof e.audioMetadata)throw TypeError(".SdkSignalFrame.audioMetadata: object expected");t.audioMetadata=$root.SdkAudioMetadataFrame.fromObject(e.audioMetadata)}if(null!=e.audioStreamIdInfo){if("object"!=typeof e.audioStreamIdInfo)throw TypeError(".SdkSignalFrame.audioStreamIdInfo: object expected");t.audioStreamIdInfo=$root.SdkAudioStreamIdInfoFrame.fromObject(e.audioStreamIdInfo)}if(null!=e.pingPong){if("object"!=typeof e.pingPong)throw TypeError(".SdkSignalFrame.pingPong: object expected");t.pingPong=$root.SdkPingPongFrame.fromObject(e.pingPong)}if(null!=e.audioStatus){if("object"!=typeof e.audioStatus)throw TypeError(".SdkSignalFrame.audioStatus: object expected");t.audioStatus=$root.SdkAudioStatusFrame.fromObject(e.audioStatus)}if(null!=e.clientMetric){if("object"!=typeof e.clientMetric)throw TypeError(".SdkSignalFrame.clientMetric: object expected");t.clientMetric=$root.SdkClientMetricFrame.fromObject(e.clientMetric)}if(null!=e.dataMessage){if("object"!=typeof e.dataMessage)throw TypeError(".SdkSignalFrame.dataMessage: object expected");t.dataMessage=$root.SdkDataMessageFrame.fromObject(e.dataMessage)}if(null!=e.remoteVideoUpdate){if("object"!=typeof e.remoteVideoUpdate)throw TypeError(".SdkSignalFrame.remoteVideoUpdate: object expected");t.remoteVideoUpdate=$root.SdkRemoteVideoUpdateFrame.fromObject(e.remoteVideoUpdate)}if(null!=e.primaryMeetingJoin){if("object"!=typeof e.primaryMeetingJoin)throw TypeError(".SdkSignalFrame.primaryMeetingJoin: object expected");t.primaryMeetingJoin=$root.SdkPrimaryMeetingJoinFrame.fromObject(e.primaryMeetingJoin)}if(null!=e.primaryMeetingJoinAck){if("object"!=typeof e.primaryMeetingJoinAck)throw TypeError(".SdkSignalFrame.primaryMeetingJoinAck: object expected");t.primaryMeetingJoinAck=$root.SdkPrimaryMeetingJoinAckFrame.fromObject(e.primaryMeetingJoinAck)}if(null!=e.primaryMeetingLeave){if("object"!=typeof e.primaryMeetingLeave)throw TypeError(".SdkSignalFrame.primaryMeetingLeave: object expected");t.primaryMeetingLeave=$root.SdkPrimaryMeetingLeaveFrame.fromObject(e.primaryMeetingLeave)}return t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if($util.Long){var n=new $util.Long(0,0,!0);i.timestampMs=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.timestampMs=t.longs===String?"0":0;i.type=t.enums===String?"JOIN":1,i.error=null,i.join=null,i.joinack=null,i.sub=null,i.suback=null,i.index=null,i.pause=null,i.leave=null,i.leaveAck=null,i.bitrates=null,i.audioControl=null,i.audioMetadata=null,i.audioStreamIdInfo=null,i.pingPong=null,i.audioStatus=null,i.clientMetric=null,i.dataMessage=null,i.remoteVideoUpdate=null,i.primaryMeetingJoin=null,i.primaryMeetingJoinAck=null,i.primaryMeetingLeave=null}return null!=e.timestampMs&&e.hasOwnProperty("timestampMs")&&("number"==typeof e.timestampMs?i.timestampMs=t.longs===String?String(e.timestampMs):e.timestampMs:i.timestampMs=t.longs===String?$util.Long.prototype.toString.call(e.timestampMs):t.longs===Number?new $util.LongBits(e.timestampMs.low>>>0,e.timestampMs.high>>>0).toNumber(!0):e.timestampMs),null!=e.type&&e.hasOwnProperty("type")&&(i.type=t.enums===String?$root.SdkSignalFrame.Type[e.type]:e.type),null!=e.error&&e.hasOwnProperty("error")&&(i.error=$root.SdkErrorFrame.toObject(e.error,t)),null!=e.join&&e.hasOwnProperty("join")&&(i.join=$root.SdkJoinFrame.toObject(e.join,t)),null!=e.joinack&&e.hasOwnProperty("joinack")&&(i.joinack=$root.SdkJoinAckFrame.toObject(e.joinack,t)),null!=e.sub&&e.hasOwnProperty("sub")&&(i.sub=$root.SdkSubscribeFrame.toObject(e.sub,t)),null!=e.suback&&e.hasOwnProperty("suback")&&(i.suback=$root.SdkSubscribeAckFrame.toObject(e.suback,t)),null!=e.index&&e.hasOwnProperty("index")&&(i.index=$root.SdkIndexFrame.toObject(e.index,t)),null!=e.pause&&e.hasOwnProperty("pause")&&(i.pause=$root.SdkPauseResumeFrame.toObject(e.pause,t)),null!=e.leave&&e.hasOwnProperty("leave")&&(i.leave=$root.SdkLeaveFrame.toObject(e.leave,t)),null!=e.leaveAck&&e.hasOwnProperty("leaveAck")&&(i.leaveAck=$root.SdkLeaveAckFrame.toObject(e.leaveAck,t)),null!=e.bitrates&&e.hasOwnProperty("bitrates")&&(i.bitrates=$root.SdkBitrateFrame.toObject(e.bitrates,t)),null!=e.audioControl&&e.hasOwnProperty("audioControl")&&(i.audioControl=$root.SdkAudioControlFrame.toObject(e.audioControl,t)),null!=e.audioMetadata&&e.hasOwnProperty("audioMetadata")&&(i.audioMetadata=$root.SdkAudioMetadataFrame.toObject(e.audioMetadata,t)),null!=e.audioStreamIdInfo&&e.hasOwnProperty("audioStreamIdInfo")&&(i.audioStreamIdInfo=$root.SdkAudioStreamIdInfoFrame.toObject(e.audioStreamIdInfo,t)),null!=e.pingPong&&e.hasOwnProperty("pingPong")&&(i.pingPong=$root.SdkPingPongFrame.toObject(e.pingPong,t)),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(i.audioStatus=$root.SdkAudioStatusFrame.toObject(e.audioStatus,t)),null!=e.clientMetric&&e.hasOwnProperty("clientMetric")&&(i.clientMetric=$root.SdkClientMetricFrame.toObject(e.clientMetric,t)),null!=e.dataMessage&&e.hasOwnProperty("dataMessage")&&(i.dataMessage=$root.SdkDataMessageFrame.toObject(e.dataMessage,t)),null!=e.remoteVideoUpdate&&e.hasOwnProperty("remoteVideoUpdate")&&(i.remoteVideoUpdate=$root.SdkRemoteVideoUpdateFrame.toObject(e.remoteVideoUpdate,t)),null!=e.primaryMeetingJoin&&e.hasOwnProperty("primaryMeetingJoin")&&(i.primaryMeetingJoin=$root.SdkPrimaryMeetingJoinFrame.toObject(e.primaryMeetingJoin,t)),null!=e.primaryMeetingJoinAck&&e.hasOwnProperty("primaryMeetingJoinAck")&&(i.primaryMeetingJoinAck=$root.SdkPrimaryMeetingJoinAckFrame.toObject(e.primaryMeetingJoinAck,t)),null!=e.primaryMeetingLeave&&e.hasOwnProperty("primaryMeetingLeave")&&(i.primaryMeetingLeave=$root.SdkPrimaryMeetingLeaveFrame.toObject(e.primaryMeetingLeave,t)),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e.Type=(t={},(i=Object.create(t))[t[1]="JOIN"]=1,i[t[2]="JOIN_ACK"]=2,i[t[3]="SUBSCRIBE"]=3,i[t[4]="SUBSCRIBE_ACK"]=4,i[t[5]="INDEX"]=5,i[t[7]="PAUSE"]=7,i[t[8]="RESUME"]=8,i[t[9]="LEAVE"]=9,i[t[10]="LEAVE_ACK"]=10,i[t[13]="BITRATES"]=13,i[t[16]="AUDIO_CONTROL"]=16,i[t[17]="AUDIO_METADATA"]=17,i[t[18]="AUDIO_STREAM_ID_INFO"]=18,i[t[19]="PING_PONG"]=19,i[t[20]="AUDIO_STATUS"]=20,i[t[21]="CLIENT_METRIC"]=21,i[t[22]="DATA_MESSAGE"]=22,i[t[24]="REMOTE_VIDEO_UPDATE"]=24,i[t[25]="PRIMARY_MEETING_JOIN"]=25,i[t[26]="PRIMARY_MEETING_JOIN_ACK"]=26,i[t[27]="PRIMARY_MEETING_LEAVE"]=27,i),e}(),$root.SdkErrorFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.status=0,e.prototype.description="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.status&&e.hasOwnProperty("status")&&t.uint32(8).uint32(e.status),null!=e.description&&e.hasOwnProperty("description")&&t.uint32(18).string(e.description),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkErrorFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.status=e.uint32();break;case 2:n.description=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.status&&e.hasOwnProperty("status")&&!$util.isInteger(e.status)?"status: integer expected":null!=e.description&&e.hasOwnProperty("description")&&!$util.isString(e.description)?"description: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkErrorFrame)return e;var t=new $root.SdkErrorFrame;return null!=e.status&&(t.status=e.status>>>0),null!=e.description&&(t.description=String(e.description)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.status=0,i.description=""),null!=e.status&&e.hasOwnProperty("status")&&(i.status=e.status),null!=e.description&&e.hasOwnProperty("description")&&(i.description=e.description),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkJoinFlags=(valuesById={},values=Object.create(valuesById),values[valuesById[1]="SEND_BITRATES"]=1,values[valuesById[2]="HAS_STREAM_UPDATE"]=2,values[valuesById[8]="USE_SEND_SIDE_BWE"]=8,values[valuesById[16]="COMPLETE_VIDEO_SOURCES_LIST"]=16,values[valuesById[32]="EXCLUDE_SELF_CONTENT_IN_INDEX"]=32,values),$root.SdkClientDetails=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.appName="",e.prototype.appVersion="",e.prototype.deviceModel="",e.prototype.deviceMake="",e.prototype.platformName="",e.prototype.platformVersion="",e.prototype.clientSource="",e.prototype.chimeSdkVersion="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.appName&&e.hasOwnProperty("appName")&&t.uint32(10).string(e.appName),null!=e.appVersion&&e.hasOwnProperty("appVersion")&&t.uint32(18).string(e.appVersion),null!=e.deviceModel&&e.hasOwnProperty("deviceModel")&&t.uint32(26).string(e.deviceModel),null!=e.deviceMake&&e.hasOwnProperty("deviceMake")&&t.uint32(34).string(e.deviceMake),null!=e.platformName&&e.hasOwnProperty("platformName")&&t.uint32(42).string(e.platformName),null!=e.platformVersion&&e.hasOwnProperty("platformVersion")&&t.uint32(50).string(e.platformVersion),null!=e.clientSource&&e.hasOwnProperty("clientSource")&&t.uint32(58).string(e.clientSource),null!=e.chimeSdkVersion&&e.hasOwnProperty("chimeSdkVersion")&&t.uint32(66).string(e.chimeSdkVersion),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkClientDetails;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.appName=e.string();break;case 2:n.appVersion=e.string();break;case 3:n.deviceModel=e.string();break;case 4:n.deviceMake=e.string();break;case 5:n.platformName=e.string();break;case 6:n.platformVersion=e.string();break;case 7:n.clientSource=e.string();break;case 8:n.chimeSdkVersion=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.appName&&e.hasOwnProperty("appName")&&!$util.isString(e.appName)?"appName: string expected":null!=e.appVersion&&e.hasOwnProperty("appVersion")&&!$util.isString(e.appVersion)?"appVersion: string expected":null!=e.deviceModel&&e.hasOwnProperty("deviceModel")&&!$util.isString(e.deviceModel)?"deviceModel: string expected":null!=e.deviceMake&&e.hasOwnProperty("deviceMake")&&!$util.isString(e.deviceMake)?"deviceMake: string expected":null!=e.platformName&&e.hasOwnProperty("platformName")&&!$util.isString(e.platformName)?"platformName: string expected":null!=e.platformVersion&&e.hasOwnProperty("platformVersion")&&!$util.isString(e.platformVersion)?"platformVersion: string expected":null!=e.clientSource&&e.hasOwnProperty("clientSource")&&!$util.isString(e.clientSource)?"clientSource: string expected":null!=e.chimeSdkVersion&&e.hasOwnProperty("chimeSdkVersion")&&!$util.isString(e.chimeSdkVersion)?"chimeSdkVersion: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkClientDetails)return e;var t=new $root.SdkClientDetails;return null!=e.appName&&(t.appName=String(e.appName)),null!=e.appVersion&&(t.appVersion=String(e.appVersion)),null!=e.deviceModel&&(t.deviceModel=String(e.deviceModel)),null!=e.deviceMake&&(t.deviceMake=String(e.deviceMake)),null!=e.platformName&&(t.platformName=String(e.platformName)),null!=e.platformVersion&&(t.platformVersion=String(e.platformVersion)),null!=e.clientSource&&(t.clientSource=String(e.clientSource)),null!=e.chimeSdkVersion&&(t.chimeSdkVersion=String(e.chimeSdkVersion)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.appName="",i.appVersion="",i.deviceModel="",i.deviceMake="",i.platformName="",i.platformVersion="",i.clientSource="",i.chimeSdkVersion=""),null!=e.appName&&e.hasOwnProperty("appName")&&(i.appName=e.appName),null!=e.appVersion&&e.hasOwnProperty("appVersion")&&(i.appVersion=e.appVersion),null!=e.deviceModel&&e.hasOwnProperty("deviceModel")&&(i.deviceModel=e.deviceModel),null!=e.deviceMake&&e.hasOwnProperty("deviceMake")&&(i.deviceMake=e.deviceMake),null!=e.platformName&&e.hasOwnProperty("platformName")&&(i.platformName=e.platformName),null!=e.platformVersion&&e.hasOwnProperty("platformVersion")&&(i.platformVersion=e.platformVersion),null!=e.clientSource&&e.hasOwnProperty("clientSource")&&(i.clientSource=e.clientSource),null!=e.chimeSdkVersion&&e.hasOwnProperty("chimeSdkVersion")&&(i.chimeSdkVersion=e.chimeSdkVersion),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkJoinFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.protocolVersion=2,e.prototype.maxNumOfVideos=0,e.prototype.flags=0,e.prototype.clientDetails=null,e.prototype.audioSessionId=$util.Long?$util.Long.fromBits(0,0,!0):0,e.prototype.wantsCompressedSdp=!1,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.protocolVersion&&e.hasOwnProperty("protocolVersion")&&t.uint32(8).uint32(e.protocolVersion),null!=e.maxNumOfVideos&&e.hasOwnProperty("maxNumOfVideos")&&t.uint32(16).uint32(e.maxNumOfVideos),null!=e.flags&&e.hasOwnProperty("flags")&&t.uint32(24).uint32(e.flags),null!=e.clientDetails&&e.hasOwnProperty("clientDetails")&&$root.SdkClientDetails.encode(e.clientDetails,t.uint32(34).fork()).ldelim(),null!=e.audioSessionId&&e.hasOwnProperty("audioSessionId")&&t.uint32(48).uint64(e.audioSessionId),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&t.uint32(56).bool(e.wantsCompressedSdp),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkJoinFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.protocolVersion=e.uint32();break;case 2:n.maxNumOfVideos=e.uint32();break;case 3:n.flags=e.uint32();break;case 4:n.clientDetails=$root.SdkClientDetails.decode(e,e.uint32());break;case 6:n.audioSessionId=e.uint64();break;case 7:n.wantsCompressedSdp=e.bool();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.protocolVersion&&e.hasOwnProperty("protocolVersion")&&!$util.isInteger(e.protocolVersion))return"protocolVersion: integer expected";if(null!=e.maxNumOfVideos&&e.hasOwnProperty("maxNumOfVideos")&&!$util.isInteger(e.maxNumOfVideos))return"maxNumOfVideos: integer expected";if(null!=e.flags&&e.hasOwnProperty("flags")&&!$util.isInteger(e.flags))return"flags: integer expected";if(null!=e.clientDetails&&e.hasOwnProperty("clientDetails")){var t=$root.SdkClientDetails.verify(e.clientDetails);if(t)return"clientDetails."+t}return null!=e.audioSessionId&&e.hasOwnProperty("audioSessionId")&&!($util.isInteger(e.audioSessionId)||e.audioSessionId&&$util.isInteger(e.audioSessionId.low)&&$util.isInteger(e.audioSessionId.high))?"audioSessionId: integer|Long expected":null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&"boolean"!=typeof e.wantsCompressedSdp?"wantsCompressedSdp: boolean expected":null},e.fromObject=function(e){if(e instanceof $root.SdkJoinFrame)return e;var t=new $root.SdkJoinFrame;if(null!=e.protocolVersion&&(t.protocolVersion=e.protocolVersion>>>0),null!=e.maxNumOfVideos&&(t.maxNumOfVideos=e.maxNumOfVideos>>>0),null!=e.flags&&(t.flags=e.flags>>>0),null!=e.clientDetails){if("object"!=typeof e.clientDetails)throw TypeError(".SdkJoinFrame.clientDetails: object expected");t.clientDetails=$root.SdkClientDetails.fromObject(e.clientDetails)}return null!=e.audioSessionId&&($util.Long?(t.audioSessionId=$util.Long.fromValue(e.audioSessionId)).unsigned=!0:"string"==typeof e.audioSessionId?t.audioSessionId=parseInt(e.audioSessionId,10):"number"==typeof e.audioSessionId?t.audioSessionId=e.audioSessionId:"object"==typeof e.audioSessionId&&(t.audioSessionId=new $util.LongBits(e.audioSessionId.low>>>0,e.audioSessionId.high>>>0).toNumber(!0))),null!=e.wantsCompressedSdp&&(t.wantsCompressedSdp=Boolean(e.wantsCompressedSdp)),t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if(i.protocolVersion=2,i.maxNumOfVideos=0,i.flags=0,i.clientDetails=null,$util.Long){var n=new $util.Long(0,0,!0);i.audioSessionId=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.audioSessionId=t.longs===String?"0":0;i.wantsCompressedSdp=!1}return null!=e.protocolVersion&&e.hasOwnProperty("protocolVersion")&&(i.protocolVersion=e.protocolVersion),null!=e.maxNumOfVideos&&e.hasOwnProperty("maxNumOfVideos")&&(i.maxNumOfVideos=e.maxNumOfVideos),null!=e.flags&&e.hasOwnProperty("flags")&&(i.flags=e.flags),null!=e.clientDetails&&e.hasOwnProperty("clientDetails")&&(i.clientDetails=$root.SdkClientDetails.toObject(e.clientDetails,t)),null!=e.audioSessionId&&e.hasOwnProperty("audioSessionId")&&("number"==typeof e.audioSessionId?i.audioSessionId=t.longs===String?String(e.audioSessionId):e.audioSessionId:i.audioSessionId=t.longs===String?$util.Long.prototype.toString.call(e.audioSessionId):t.longs===Number?new $util.LongBits(e.audioSessionId.low>>>0,e.audioSessionId.high>>>0).toNumber(!0):e.audioSessionId),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&(i.wantsCompressedSdp=e.wantsCompressedSdp),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkJoinAckFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.turnCredentials=null,e.prototype.videoSubscriptionLimit=25,e.prototype.wantsCompressedSdp=!1,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.turnCredentials&&e.hasOwnProperty("turnCredentials")&&$root.SdkTurnCredentials.encode(e.turnCredentials,t.uint32(10).fork()).ldelim(),null!=e.videoSubscriptionLimit&&e.hasOwnProperty("videoSubscriptionLimit")&&t.uint32(16).uint32(e.videoSubscriptionLimit),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&t.uint32(24).bool(e.wantsCompressedSdp),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkJoinAckFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.turnCredentials=$root.SdkTurnCredentials.decode(e,e.uint32());break;case 2:n.videoSubscriptionLimit=e.uint32();break;case 3:n.wantsCompressedSdp=e.bool();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.turnCredentials&&e.hasOwnProperty("turnCredentials")){var t=$root.SdkTurnCredentials.verify(e.turnCredentials);if(t)return"turnCredentials."+t}return null!=e.videoSubscriptionLimit&&e.hasOwnProperty("videoSubscriptionLimit")&&!$util.isInteger(e.videoSubscriptionLimit)?"videoSubscriptionLimit: integer expected":null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&"boolean"!=typeof e.wantsCompressedSdp?"wantsCompressedSdp: boolean expected":null},e.fromObject=function(e){if(e instanceof $root.SdkJoinAckFrame)return e;var t=new $root.SdkJoinAckFrame;if(null!=e.turnCredentials){if("object"!=typeof e.turnCredentials)throw TypeError(".SdkJoinAckFrame.turnCredentials: object expected");t.turnCredentials=$root.SdkTurnCredentials.fromObject(e.turnCredentials)}return null!=e.videoSubscriptionLimit&&(t.videoSubscriptionLimit=e.videoSubscriptionLimit>>>0),null!=e.wantsCompressedSdp&&(t.wantsCompressedSdp=Boolean(e.wantsCompressedSdp)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.turnCredentials=null,i.videoSubscriptionLimit=25,i.wantsCompressedSdp=!1),null!=e.turnCredentials&&e.hasOwnProperty("turnCredentials")&&(i.turnCredentials=$root.SdkTurnCredentials.toObject(e.turnCredentials,t)),null!=e.videoSubscriptionLimit&&e.hasOwnProperty("videoSubscriptionLimit")&&(i.videoSubscriptionLimit=e.videoSubscriptionLimit),null!=e.wantsCompressedSdp&&e.hasOwnProperty("wantsCompressedSdp")&&(i.wantsCompressedSdp=e.wantsCompressedSdp),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkLeaveFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkLeaveFrame;e.pos<i;){var r=e.uint32();e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null},e.fromObject=function(e){return e instanceof $root.SdkLeaveFrame?e:new $root.SdkLeaveFrame},e.toObject=function(){return{}},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkLeaveAckFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkLeaveAckFrame;e.pos<i;){var r=e.uint32();e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null},e.fromObject=function(e){return e instanceof $root.SdkLeaveAckFrame?e:new $root.SdkLeaveAckFrame},e.toObject=function(){return{}},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkStreamServiceType=function(){var e={},t=Object.create(e);return t[e[1]="RX"]=1,t[e[2]="TX"]=2,t[e[3]="DUPLEX"]=3,t}(),$root.SdkStreamMediaType=function(){var e={},t=Object.create(e);return t[e[1]="AUDIO"]=1,t[e[2]="VIDEO"]=2,t}(),$root.SdkSubscribeFrame=function(){function e(e){if(this.sendStreams=[],this.receiveStreamIds=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.duplex=1,e.prototype.sendStreams=$util.emptyArray,e.prototype.receiveStreamIds=$util.emptyArray,e.prototype.sdpOffer="",e.prototype.audioHost="",e.prototype.audioCheckin=!1,e.prototype.audioMuted=!1,e.prototype.compressedSdpOffer=$util.newBuffer([]),e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.duplex&&e.hasOwnProperty("duplex")&&t.uint32(8).int32(e.duplex),null!=e.sendStreams&&e.sendStreams.length)for(var i=0;i<e.sendStreams.length;++i)$root.SdkStreamDescriptor.encode(e.sendStreams[i],t.uint32(18).fork()).ldelim();if(null!=e.receiveStreamIds&&e.receiveStreamIds.length)for(i=0;i<e.receiveStreamIds.length;++i)t.uint32(24).uint32(e.receiveStreamIds[i]);return null!=e.sdpOffer&&e.hasOwnProperty("sdpOffer")&&t.uint32(34).string(e.sdpOffer),null!=e.audioHost&&e.hasOwnProperty("audioHost")&&t.uint32(42).string(e.audioHost),null!=e.audioCheckin&&e.hasOwnProperty("audioCheckin")&&t.uint32(48).bool(e.audioCheckin),null!=e.audioMuted&&e.hasOwnProperty("audioMuted")&&t.uint32(56).bool(e.audioMuted),null!=e.compressedSdpOffer&&e.hasOwnProperty("compressedSdpOffer")&&t.uint32(66).bytes(e.compressedSdpOffer),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkSubscribeFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.duplex=e.int32();break;case 2:n.sendStreams&&n.sendStreams.length||(n.sendStreams=[]),n.sendStreams.push($root.SdkStreamDescriptor.decode(e,e.uint32()));break;case 3:if(n.receiveStreamIds&&n.receiveStreamIds.length||(n.receiveStreamIds=[]),2==(7&r))for(var o=e.uint32()+e.pos;e.pos<o;)n.receiveStreamIds.push(e.uint32());else n.receiveStreamIds.push(e.uint32());break;case 4:n.sdpOffer=e.string();break;case 5:n.audioHost=e.string();break;case 6:n.audioCheckin=e.bool();break;case 7:n.audioMuted=e.bool();break;case 8:n.compressedSdpOffer=e.bytes();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.duplex&&e.hasOwnProperty("duplex"))switch(e.duplex){default:return"duplex: enum value expected";case 1:case 2:case 3:}if(null!=e.sendStreams&&e.hasOwnProperty("sendStreams")){if(!Array.isArray(e.sendStreams))return"sendStreams: array expected";for(var t=0;t<e.sendStreams.length;++t){var i=$root.SdkStreamDescriptor.verify(e.sendStreams[t]);if(i)return"sendStreams."+i}}if(null!=e.receiveStreamIds&&e.hasOwnProperty("receiveStreamIds")){if(!Array.isArray(e.receiveStreamIds))return"receiveStreamIds: array expected";for(t=0;t<e.receiveStreamIds.length;++t)if(!$util.isInteger(e.receiveStreamIds[t]))return"receiveStreamIds: integer[] expected"}return null!=e.sdpOffer&&e.hasOwnProperty("sdpOffer")&&!$util.isString(e.sdpOffer)?"sdpOffer: string expected":null!=e.audioHost&&e.hasOwnProperty("audioHost")&&!$util.isString(e.audioHost)?"audioHost: string expected":null!=e.audioCheckin&&e.hasOwnProperty("audioCheckin")&&"boolean"!=typeof e.audioCheckin?"audioCheckin: boolean expected":null!=e.audioMuted&&e.hasOwnProperty("audioMuted")&&"boolean"!=typeof e.audioMuted?"audioMuted: boolean expected":null!=e.compressedSdpOffer&&e.hasOwnProperty("compressedSdpOffer")&&!(e.compressedSdpOffer&&"number"==typeof e.compressedSdpOffer.length||$util.isString(e.compressedSdpOffer))?"compressedSdpOffer: buffer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkSubscribeFrame)return e;var t=new $root.SdkSubscribeFrame;switch(e.duplex){case"RX":case 1:t.duplex=1;break;case"TX":case 2:t.duplex=2;break;case"DUPLEX":case 3:t.duplex=3}if(e.sendStreams){if(!Array.isArray(e.sendStreams))throw TypeError(".SdkSubscribeFrame.sendStreams: array expected");t.sendStreams=[];for(var i=0;i<e.sendStreams.length;++i){if("object"!=typeof e.sendStreams[i])throw TypeError(".SdkSubscribeFrame.sendStreams: object expected");t.sendStreams[i]=$root.SdkStreamDescriptor.fromObject(e.sendStreams[i])}}if(e.receiveStreamIds){if(!Array.isArray(e.receiveStreamIds))throw TypeError(".SdkSubscribeFrame.receiveStreamIds: array expected");t.receiveStreamIds=[];for(i=0;i<e.receiveStreamIds.length;++i)t.receiveStreamIds[i]=e.receiveStreamIds[i]>>>0}return null!=e.sdpOffer&&(t.sdpOffer=String(e.sdpOffer)),null!=e.audioHost&&(t.audioHost=String(e.audioHost)),null!=e.audioCheckin&&(t.audioCheckin=Boolean(e.audioCheckin)),null!=e.audioMuted&&(t.audioMuted=Boolean(e.audioMuted)),null!=e.compressedSdpOffer&&("string"==typeof e.compressedSdpOffer?$util.base64.decode(e.compressedSdpOffer,t.compressedSdpOffer=$util.newBuffer($util.base64.length(e.compressedSdpOffer)),0):e.compressedSdpOffer.length&&(t.compressedSdpOffer=e.compressedSdpOffer)),t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.sendStreams=[],i.receiveStreamIds=[]),t.defaults&&(i.duplex=t.enums===String?"RX":1,i.sdpOffer="",i.audioHost="",i.audioCheckin=!1,i.audioMuted=!1,t.bytes===String?i.compressedSdpOffer="":(i.compressedSdpOffer=[],t.bytes!==Array&&(i.compressedSdpOffer=$util.newBuffer(i.compressedSdpOffer)))),null!=e.duplex&&e.hasOwnProperty("duplex")&&(i.duplex=t.enums===String?$root.SdkStreamServiceType[e.duplex]:e.duplex),e.sendStreams&&e.sendStreams.length){i.sendStreams=[];for(var n=0;n<e.sendStreams.length;++n)i.sendStreams[n]=$root.SdkStreamDescriptor.toObject(e.sendStreams[n],t)}if(e.receiveStreamIds&&e.receiveStreamIds.length){i.receiveStreamIds=[];for(n=0;n<e.receiveStreamIds.length;++n)i.receiveStreamIds[n]=e.receiveStreamIds[n]}return null!=e.sdpOffer&&e.hasOwnProperty("sdpOffer")&&(i.sdpOffer=e.sdpOffer),null!=e.audioHost&&e.hasOwnProperty("audioHost")&&(i.audioHost=e.audioHost),null!=e.audioCheckin&&e.hasOwnProperty("audioCheckin")&&(i.audioCheckin=e.audioCheckin),null!=e.audioMuted&&e.hasOwnProperty("audioMuted")&&(i.audioMuted=e.audioMuted),null!=e.compressedSdpOffer&&e.hasOwnProperty("compressedSdpOffer")&&(i.compressedSdpOffer=t.bytes===String?$util.base64.encode(e.compressedSdpOffer,0,e.compressedSdpOffer.length):t.bytes===Array?Array.prototype.slice.call(e.compressedSdpOffer):e.compressedSdpOffer),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkSubscribeAckFrame=function(){function e(e){if(this.allocations=[],this.tracks=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.duplex=1,e.prototype.allocations=$util.emptyArray,e.prototype.sdpAnswer="",e.prototype.tracks=$util.emptyArray,e.prototype.compressedSdpAnswer=$util.newBuffer([]),e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.duplex&&e.hasOwnProperty("duplex")&&t.uint32(8).int32(e.duplex),null!=e.allocations&&e.allocations.length)for(var i=0;i<e.allocations.length;++i)$root.SdkStreamAllocation.encode(e.allocations[i],t.uint32(18).fork()).ldelim();if(null!=e.sdpAnswer&&e.hasOwnProperty("sdpAnswer")&&t.uint32(26).string(e.sdpAnswer),null!=e.tracks&&e.tracks.length)for(i=0;i<e.tracks.length;++i)$root.SdkTrackMapping.encode(e.tracks[i],t.uint32(34).fork()).ldelim();return null!=e.compressedSdpAnswer&&e.hasOwnProperty("compressedSdpAnswer")&&t.uint32(42).bytes(e.compressedSdpAnswer),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkSubscribeAckFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.duplex=e.int32();break;case 2:n.allocations&&n.allocations.length||(n.allocations=[]),n.allocations.push($root.SdkStreamAllocation.decode(e,e.uint32()));break;case 3:n.sdpAnswer=e.string();break;case 4:n.tracks&&n.tracks.length||(n.tracks=[]),n.tracks.push($root.SdkTrackMapping.decode(e,e.uint32()));break;case 5:n.compressedSdpAnswer=e.bytes();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.duplex&&e.hasOwnProperty("duplex"))switch(e.duplex){default:return"duplex: enum value expected";case 1:case 2:case 3:}if(null!=e.allocations&&e.hasOwnProperty("allocations")){if(!Array.isArray(e.allocations))return"allocations: array expected";for(var t=0;t<e.allocations.length;++t){if(i=$root.SdkStreamAllocation.verify(e.allocations[t]))return"allocations."+i}}if(null!=e.sdpAnswer&&e.hasOwnProperty("sdpAnswer")&&!$util.isString(e.sdpAnswer))return"sdpAnswer: string expected";if(null!=e.tracks&&e.hasOwnProperty("tracks")){if(!Array.isArray(e.tracks))return"tracks: array expected";for(t=0;t<e.tracks.length;++t){var i;if(i=$root.SdkTrackMapping.verify(e.tracks[t]))return"tracks."+i}}return null!=e.compressedSdpAnswer&&e.hasOwnProperty("compressedSdpAnswer")&&!(e.compressedSdpAnswer&&"number"==typeof e.compressedSdpAnswer.length||$util.isString(e.compressedSdpAnswer))?"compressedSdpAnswer: buffer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkSubscribeAckFrame)return e;var t=new $root.SdkSubscribeAckFrame;switch(e.duplex){case"RX":case 1:t.duplex=1;break;case"TX":case 2:t.duplex=2;break;case"DUPLEX":case 3:t.duplex=3}if(e.allocations){if(!Array.isArray(e.allocations))throw TypeError(".SdkSubscribeAckFrame.allocations: array expected");t.allocations=[];for(var i=0;i<e.allocations.length;++i){if("object"!=typeof e.allocations[i])throw TypeError(".SdkSubscribeAckFrame.allocations: object expected");t.allocations[i]=$root.SdkStreamAllocation.fromObject(e.allocations[i])}}if(null!=e.sdpAnswer&&(t.sdpAnswer=String(e.sdpAnswer)),e.tracks){if(!Array.isArray(e.tracks))throw TypeError(".SdkSubscribeAckFrame.tracks: array expected");t.tracks=[];for(i=0;i<e.tracks.length;++i){if("object"!=typeof e.tracks[i])throw TypeError(".SdkSubscribeAckFrame.tracks: object expected");t.tracks[i]=$root.SdkTrackMapping.fromObject(e.tracks[i])}}return null!=e.compressedSdpAnswer&&("string"==typeof e.compressedSdpAnswer?$util.base64.decode(e.compressedSdpAnswer,t.compressedSdpAnswer=$util.newBuffer($util.base64.length(e.compressedSdpAnswer)),0):e.compressedSdpAnswer.length&&(t.compressedSdpAnswer=e.compressedSdpAnswer)),t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.allocations=[],i.tracks=[]),t.defaults&&(i.duplex=t.enums===String?"RX":1,i.sdpAnswer="",t.bytes===String?i.compressedSdpAnswer="":(i.compressedSdpAnswer=[],t.bytes!==Array&&(i.compressedSdpAnswer=$util.newBuffer(i.compressedSdpAnswer)))),null!=e.duplex&&e.hasOwnProperty("duplex")&&(i.duplex=t.enums===String?$root.SdkStreamServiceType[e.duplex]:e.duplex),e.allocations&&e.allocations.length){i.allocations=[];for(var n=0;n<e.allocations.length;++n)i.allocations[n]=$root.SdkStreamAllocation.toObject(e.allocations[n],t)}if(null!=e.sdpAnswer&&e.hasOwnProperty("sdpAnswer")&&(i.sdpAnswer=e.sdpAnswer),e.tracks&&e.tracks.length){i.tracks=[];for(n=0;n<e.tracks.length;++n)i.tracks[n]=$root.SdkTrackMapping.toObject(e.tracks[n],t)}return null!=e.compressedSdpAnswer&&e.hasOwnProperty("compressedSdpAnswer")&&(i.compressedSdpAnswer=t.bytes===String?$util.base64.encode(e.compressedSdpAnswer,0,e.compressedSdpAnswer.length):t.bytes===Array?Array.prototype.slice.call(e.compressedSdpAnswer):e.compressedSdpAnswer),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkIndexFrame=function(){function e(e){if(this.sources=[],this.pausedAtSourceIds=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.atCapacity=!1,e.prototype.sources=$util.emptyArray,e.prototype.pausedAtSourceIds=$util.emptyArray,e.prototype.numParticipants=0,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.atCapacity&&e.hasOwnProperty("atCapacity")&&t.uint32(8).bool(e.atCapacity),null!=e.sources&&e.sources.length)for(var i=0;i<e.sources.length;++i)$root.SdkStreamDescriptor.encode(e.sources[i],t.uint32(18).fork()).ldelim();if(null!=e.pausedAtSourceIds&&e.pausedAtSourceIds.length)for(i=0;i<e.pausedAtSourceIds.length;++i)t.uint32(24).uint32(e.pausedAtSourceIds[i]);return null!=e.numParticipants&&e.hasOwnProperty("numParticipants")&&t.uint32(32).uint32(e.numParticipants),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkIndexFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.atCapacity=e.bool();break;case 2:n.sources&&n.sources.length||(n.sources=[]),n.sources.push($root.SdkStreamDescriptor.decode(e,e.uint32()));break;case 3:if(n.pausedAtSourceIds&&n.pausedAtSourceIds.length||(n.pausedAtSourceIds=[]),2==(7&r))for(var o=e.uint32()+e.pos;e.pos<o;)n.pausedAtSourceIds.push(e.uint32());else n.pausedAtSourceIds.push(e.uint32());break;case 4:n.numParticipants=e.uint32();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.atCapacity&&e.hasOwnProperty("atCapacity")&&"boolean"!=typeof e.atCapacity)return"atCapacity: boolean expected";if(null!=e.sources&&e.hasOwnProperty("sources")){if(!Array.isArray(e.sources))return"sources: array expected";for(var t=0;t<e.sources.length;++t){var i=$root.SdkStreamDescriptor.verify(e.sources[t]);if(i)return"sources."+i}}if(null!=e.pausedAtSourceIds&&e.hasOwnProperty("pausedAtSourceIds")){if(!Array.isArray(e.pausedAtSourceIds))return"pausedAtSourceIds: array expected";for(t=0;t<e.pausedAtSourceIds.length;++t)if(!$util.isInteger(e.pausedAtSourceIds[t]))return"pausedAtSourceIds: integer[] expected"}return null!=e.numParticipants&&e.hasOwnProperty("numParticipants")&&!$util.isInteger(e.numParticipants)?"numParticipants: integer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkIndexFrame)return e;var t=new $root.SdkIndexFrame;if(null!=e.atCapacity&&(t.atCapacity=Boolean(e.atCapacity)),e.sources){if(!Array.isArray(e.sources))throw TypeError(".SdkIndexFrame.sources: array expected");t.sources=[];for(var i=0;i<e.sources.length;++i){if("object"!=typeof e.sources[i])throw TypeError(".SdkIndexFrame.sources: object expected");t.sources[i]=$root.SdkStreamDescriptor.fromObject(e.sources[i])}}if(e.pausedAtSourceIds){if(!Array.isArray(e.pausedAtSourceIds))throw TypeError(".SdkIndexFrame.pausedAtSourceIds: array expected");t.pausedAtSourceIds=[];for(i=0;i<e.pausedAtSourceIds.length;++i)t.pausedAtSourceIds[i]=e.pausedAtSourceIds[i]>>>0}return null!=e.numParticipants&&(t.numParticipants=e.numParticipants>>>0),t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.sources=[],i.pausedAtSourceIds=[]),t.defaults&&(i.atCapacity=!1,i.numParticipants=0),null!=e.atCapacity&&e.hasOwnProperty("atCapacity")&&(i.atCapacity=e.atCapacity),e.sources&&e.sources.length){i.sources=[];for(var n=0;n<e.sources.length;++n)i.sources[n]=$root.SdkStreamDescriptor.toObject(e.sources[n],t)}if(e.pausedAtSourceIds&&e.pausedAtSourceIds.length){i.pausedAtSourceIds=[];for(n=0;n<e.pausedAtSourceIds.length;++n)i.pausedAtSourceIds[n]=e.pausedAtSourceIds[n]}return null!=e.numParticipants&&e.hasOwnProperty("numParticipants")&&(i.numParticipants=e.numParticipants),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkPauseResumeFrame=function(){function e(e){if(this.streamIds=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.streamIds=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.streamIds&&e.streamIds.length)for(var i=0;i<e.streamIds.length;++i)t.uint32(8).uint32(e.streamIds[i]);return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkPauseResumeFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)if(n.streamIds&&n.streamIds.length||(n.streamIds=[]),2==(7&r))for(var o=e.uint32()+e.pos;e.pos<o;)n.streamIds.push(e.uint32());else n.streamIds.push(e.uint32());else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streamIds&&e.hasOwnProperty("streamIds")){if(!Array.isArray(e.streamIds))return"streamIds: array expected";for(var t=0;t<e.streamIds.length;++t)if(!$util.isInteger(e.streamIds[t]))return"streamIds: integer[] expected"}return null},e.fromObject=function(e){if(e instanceof $root.SdkPauseResumeFrame)return e;var t=new $root.SdkPauseResumeFrame;if(e.streamIds){if(!Array.isArray(e.streamIds))throw TypeError(".SdkPauseResumeFrame.streamIds: array expected");t.streamIds=[];for(var i=0;i<e.streamIds.length;++i)t.streamIds[i]=e.streamIds[i]>>>0}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.streamIds=[]),e.streamIds&&e.streamIds.length){i.streamIds=[];for(var n=0;n<e.streamIds.length;++n)i.streamIds[n]=e.streamIds[n]}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkBitrateFrame=function(){function e(e){if(this.bitrates=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.bitrates=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.bitrates&&e.bitrates.length)for(var i=0;i<e.bitrates.length;++i)$root.SdkBitrate.encode(e.bitrates[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkBitrateFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.bitrates&&n.bitrates.length||(n.bitrates=[]),n.bitrates.push($root.SdkBitrate.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.bitrates&&e.hasOwnProperty("bitrates")){if(!Array.isArray(e.bitrates))return"bitrates: array expected";for(var t=0;t<e.bitrates.length;++t){var i=$root.SdkBitrate.verify(e.bitrates[t]);if(i)return"bitrates."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkBitrateFrame)return e;var t=new $root.SdkBitrateFrame;if(e.bitrates){if(!Array.isArray(e.bitrates))throw TypeError(".SdkBitrateFrame.bitrates: array expected");t.bitrates=[];for(var i=0;i<e.bitrates.length;++i){if("object"!=typeof e.bitrates[i])throw TypeError(".SdkBitrateFrame.bitrates: object expected");t.bitrates[i]=$root.SdkBitrate.fromObject(e.bitrates[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.bitrates=[]),e.bitrates&&e.bitrates.length){i.bitrates=[];for(var n=0;n<e.bitrates.length;++n)i.bitrates[n]=$root.SdkBitrate.toObject(e.bitrates[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkStreamDescriptor=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.streamId=0,e.prototype.framerate=0,e.prototype.maxBitrateKbps=0,e.prototype.trackLabel="",e.prototype.groupId=0,e.prototype.avgBitrateBps=0,e.prototype.attendeeId="",e.prototype.mediaType=1,e.prototype.externalUserId="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.streamId&&e.hasOwnProperty("streamId")&&t.uint32(8).uint32(e.streamId),null!=e.framerate&&e.hasOwnProperty("framerate")&&t.uint32(16).uint32(e.framerate),null!=e.maxBitrateKbps&&e.hasOwnProperty("maxBitrateKbps")&&t.uint32(24).uint32(e.maxBitrateKbps),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&t.uint32(34).string(e.trackLabel),null!=e.groupId&&e.hasOwnProperty("groupId")&&t.uint32(48).uint32(e.groupId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&t.uint32(56).uint32(e.avgBitrateBps),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&t.uint32(66).string(e.attendeeId),null!=e.mediaType&&e.hasOwnProperty("mediaType")&&t.uint32(72).int32(e.mediaType),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&t.uint32(82).string(e.externalUserId),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkStreamDescriptor;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.streamId=e.uint32();break;case 2:n.framerate=e.uint32();break;case 3:n.maxBitrateKbps=e.uint32();break;case 4:n.trackLabel=e.string();break;case 6:n.groupId=e.uint32();break;case 7:n.avgBitrateBps=e.uint32();break;case 8:n.attendeeId=e.string();break;case 9:n.mediaType=e.int32();break;case 10:n.externalUserId=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streamId&&e.hasOwnProperty("streamId")&&!$util.isInteger(e.streamId))return"streamId: integer expected";if(null!=e.framerate&&e.hasOwnProperty("framerate")&&!$util.isInteger(e.framerate))return"framerate: integer expected";if(null!=e.maxBitrateKbps&&e.hasOwnProperty("maxBitrateKbps")&&!$util.isInteger(e.maxBitrateKbps))return"maxBitrateKbps: integer expected";if(null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!$util.isString(e.trackLabel))return"trackLabel: string expected";if(null!=e.groupId&&e.hasOwnProperty("groupId")&&!$util.isInteger(e.groupId))return"groupId: integer expected";if(null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&!$util.isInteger(e.avgBitrateBps))return"avgBitrateBps: integer expected";if(null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!$util.isString(e.attendeeId))return"attendeeId: string expected";if(null!=e.mediaType&&e.hasOwnProperty("mediaType"))switch(e.mediaType){default:return"mediaType: enum value expected";case 1:case 2:}return null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!$util.isString(e.externalUserId)?"externalUserId: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkStreamDescriptor)return e;var t=new $root.SdkStreamDescriptor;switch(null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.framerate&&(t.framerate=e.framerate>>>0),null!=e.maxBitrateKbps&&(t.maxBitrateKbps=e.maxBitrateKbps>>>0),null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),null!=e.groupId&&(t.groupId=e.groupId>>>0),null!=e.avgBitrateBps&&(t.avgBitrateBps=e.avgBitrateBps>>>0),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),e.mediaType){case"AUDIO":case 1:t.mediaType=1;break;case"VIDEO":case 2:t.mediaType=2}return null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.streamId=0,i.framerate=0,i.maxBitrateKbps=0,i.trackLabel="",i.groupId=0,i.avgBitrateBps=0,i.attendeeId="",i.mediaType=t.enums===String?"AUDIO":1,i.externalUserId=""),null!=e.streamId&&e.hasOwnProperty("streamId")&&(i.streamId=e.streamId),null!=e.framerate&&e.hasOwnProperty("framerate")&&(i.framerate=e.framerate),null!=e.maxBitrateKbps&&e.hasOwnProperty("maxBitrateKbps")&&(i.maxBitrateKbps=e.maxBitrateKbps),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(i.trackLabel=e.trackLabel),null!=e.groupId&&e.hasOwnProperty("groupId")&&(i.groupId=e.groupId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&(i.avgBitrateBps=e.avgBitrateBps),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(i.attendeeId=e.attendeeId),null!=e.mediaType&&e.hasOwnProperty("mediaType")&&(i.mediaType=t.enums===String?$root.SdkStreamMediaType[e.mediaType]:e.mediaType),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(i.externalUserId=e.externalUserId),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkStreamAllocation=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.trackLabel="",e.prototype.streamId=0,e.prototype.groupId=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&t.uint32(10).string(e.trackLabel),null!=e.streamId&&e.hasOwnProperty("streamId")&&t.uint32(16).uint32(e.streamId),null!=e.groupId&&e.hasOwnProperty("groupId")&&t.uint32(24).uint32(e.groupId),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkStreamAllocation;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.trackLabel=e.string();break;case 2:n.streamId=e.uint32();break;case 3:n.groupId=e.uint32();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!$util.isString(e.trackLabel)?"trackLabel: string expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!$util.isInteger(e.streamId)?"streamId: integer expected":null!=e.groupId&&e.hasOwnProperty("groupId")&&!$util.isInteger(e.groupId)?"groupId: integer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkStreamAllocation)return e;var t=new $root.SdkStreamAllocation;return null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.groupId&&(t.groupId=e.groupId>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.trackLabel="",i.streamId=0,i.groupId=0),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(i.trackLabel=e.trackLabel),null!=e.streamId&&e.hasOwnProperty("streamId")&&(i.streamId=e.streamId),null!=e.groupId&&e.hasOwnProperty("groupId")&&(i.groupId=e.groupId),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTrackMapping=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.streamId=0,e.prototype.ssrc=0,e.prototype.trackLabel="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.streamId&&e.hasOwnProperty("streamId")&&t.uint32(8).uint32(e.streamId),null!=e.ssrc&&e.hasOwnProperty("ssrc")&&t.uint32(16).uint32(e.ssrc),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&t.uint32(26).string(e.trackLabel),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTrackMapping;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.streamId=e.uint32();break;case 2:n.ssrc=e.uint32();break;case 3:n.trackLabel=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!$util.isInteger(e.streamId)?"streamId: integer expected":null!=e.ssrc&&e.hasOwnProperty("ssrc")&&!$util.isInteger(e.ssrc)?"ssrc: integer expected":null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&!$util.isString(e.trackLabel)?"trackLabel: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkTrackMapping)return e;var t=new $root.SdkTrackMapping;return null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.ssrc&&(t.ssrc=e.ssrc>>>0),null!=e.trackLabel&&(t.trackLabel=String(e.trackLabel)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.streamId=0,i.ssrc=0,i.trackLabel=""),null!=e.streamId&&e.hasOwnProperty("streamId")&&(i.streamId=e.streamId),null!=e.ssrc&&e.hasOwnProperty("ssrc")&&(i.ssrc=e.ssrc),null!=e.trackLabel&&e.hasOwnProperty("trackLabel")&&(i.trackLabel=e.trackLabel),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkBitrate=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.sourceStreamId=0,e.prototype.avgBitrateBps=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.sourceStreamId&&e.hasOwnProperty("sourceStreamId")&&t.uint32(8).uint32(e.sourceStreamId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&t.uint32(16).uint32(e.avgBitrateBps),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkBitrate;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.sourceStreamId=e.uint32();break;case 2:n.avgBitrateBps=e.uint32();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.sourceStreamId&&e.hasOwnProperty("sourceStreamId")&&!$util.isInteger(e.sourceStreamId)?"sourceStreamId: integer expected":null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&!$util.isInteger(e.avgBitrateBps)?"avgBitrateBps: integer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkBitrate)return e;var t=new $root.SdkBitrate;return null!=e.sourceStreamId&&(t.sourceStreamId=e.sourceStreamId>>>0),null!=e.avgBitrateBps&&(t.avgBitrateBps=e.avgBitrateBps>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.sourceStreamId=0,i.avgBitrateBps=0),null!=e.sourceStreamId&&e.hasOwnProperty("sourceStreamId")&&(i.sourceStreamId=e.sourceStreamId),null!=e.avgBitrateBps&&e.hasOwnProperty("avgBitrateBps")&&(i.avgBitrateBps=e.avgBitrateBps),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioControlFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.muted=!1,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.muted&&e.hasOwnProperty("muted")&&t.uint32(8).bool(e.muted),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioControlFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.muted=e.bool();else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null},e.fromObject=function(e){if(e instanceof $root.SdkAudioControlFrame)return e;var t=new $root.SdkAudioControlFrame;return null!=e.muted&&(t.muted=Boolean(e.muted)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.muted=!1),null!=e.muted&&e.hasOwnProperty("muted")&&(i.muted=e.muted),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioMetadataFrame=function(){function e(e){if(this.attendeeStates=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.attendeeStates=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.attendeeStates&&e.attendeeStates.length)for(var i=0;i<e.attendeeStates.length;++i)$root.SdkAudioAttendeeState.encode(e.attendeeStates[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioMetadataFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.attendeeStates&&n.attendeeStates.length||(n.attendeeStates=[]),n.attendeeStates.push($root.SdkAudioAttendeeState.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.attendeeStates&&e.hasOwnProperty("attendeeStates")){if(!Array.isArray(e.attendeeStates))return"attendeeStates: array expected";for(var t=0;t<e.attendeeStates.length;++t){var i=$root.SdkAudioAttendeeState.verify(e.attendeeStates[t]);if(i)return"attendeeStates."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkAudioMetadataFrame)return e;var t=new $root.SdkAudioMetadataFrame;if(e.attendeeStates){if(!Array.isArray(e.attendeeStates))throw TypeError(".SdkAudioMetadataFrame.attendeeStates: array expected");t.attendeeStates=[];for(var i=0;i<e.attendeeStates.length;++i){if("object"!=typeof e.attendeeStates[i])throw TypeError(".SdkAudioMetadataFrame.attendeeStates: object expected");t.attendeeStates[i]=$root.SdkAudioAttendeeState.fromObject(e.attendeeStates[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.attendeeStates=[]),e.attendeeStates&&e.attendeeStates.length){i.attendeeStates=[];for(var n=0;n<e.attendeeStates.length;++n)i.attendeeStates[n]=$root.SdkAudioAttendeeState.toObject(e.attendeeStates[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioAttendeeState=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.audioStreamId=0,e.prototype.volume=0,e.prototype.muted=!1,e.prototype.signalStrength=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&t.uint32(8).uint32(e.audioStreamId),null!=e.volume&&e.hasOwnProperty("volume")&&t.uint32(16).uint32(e.volume),null!=e.muted&&e.hasOwnProperty("muted")&&t.uint32(24).bool(e.muted),null!=e.signalStrength&&e.hasOwnProperty("signalStrength")&&t.uint32(32).uint32(e.signalStrength),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioAttendeeState;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.audioStreamId=e.uint32();break;case 2:n.volume=e.uint32();break;case 3:n.muted=e.bool();break;case 4:n.signalStrength=e.uint32();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&!$util.isInteger(e.audioStreamId)?"audioStreamId: integer expected":null!=e.volume&&e.hasOwnProperty("volume")&&!$util.isInteger(e.volume)?"volume: integer expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null!=e.signalStrength&&e.hasOwnProperty("signalStrength")&&!$util.isInteger(e.signalStrength)?"signalStrength: integer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkAudioAttendeeState)return e;var t=new $root.SdkAudioAttendeeState;return null!=e.audioStreamId&&(t.audioStreamId=e.audioStreamId>>>0),null!=e.volume&&(t.volume=e.volume>>>0),null!=e.muted&&(t.muted=Boolean(e.muted)),null!=e.signalStrength&&(t.signalStrength=e.signalStrength>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.audioStreamId=0,i.volume=0,i.muted=!1,i.signalStrength=0),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&(i.audioStreamId=e.audioStreamId),null!=e.volume&&e.hasOwnProperty("volume")&&(i.volume=e.volume),null!=e.muted&&e.hasOwnProperty("muted")&&(i.muted=e.muted),null!=e.signalStrength&&e.hasOwnProperty("signalStrength")&&(i.signalStrength=e.signalStrength),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioStreamIdInfoFrame=function(){function e(e){if(this.streams=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.streams=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.streams&&e.streams.length)for(var i=0;i<e.streams.length;++i)$root.SdkAudioStreamIdInfo.encode(e.streams[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioStreamIdInfoFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.streams&&n.streams.length||(n.streams=[]),n.streams.push($root.SdkAudioStreamIdInfo.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streams&&e.hasOwnProperty("streams")){if(!Array.isArray(e.streams))return"streams: array expected";for(var t=0;t<e.streams.length;++t){var i=$root.SdkAudioStreamIdInfo.verify(e.streams[t]);if(i)return"streams."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkAudioStreamIdInfoFrame)return e;var t=new $root.SdkAudioStreamIdInfoFrame;if(e.streams){if(!Array.isArray(e.streams))throw TypeError(".SdkAudioStreamIdInfoFrame.streams: array expected");t.streams=[];for(var i=0;i<e.streams.length;++i){if("object"!=typeof e.streams[i])throw TypeError(".SdkAudioStreamIdInfoFrame.streams: object expected");t.streams[i]=$root.SdkAudioStreamIdInfo.fromObject(e.streams[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.streams=[]),e.streams&&e.streams.length){i.streams=[];for(var n=0;n<e.streams.length;++n)i.streams[n]=$root.SdkAudioStreamIdInfo.toObject(e.streams[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioStreamIdInfo=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.audioStreamId=0,e.prototype.attendeeId="",e.prototype.muted=!1,e.prototype.externalUserId="",e.prototype.dropped=!1,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&t.uint32(8).uint32(e.audioStreamId),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&t.uint32(18).string(e.attendeeId),null!=e.muted&&e.hasOwnProperty("muted")&&t.uint32(24).bool(e.muted),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&t.uint32(34).string(e.externalUserId),null!=e.dropped&&e.hasOwnProperty("dropped")&&t.uint32(40).bool(e.dropped),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioStreamIdInfo;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.audioStreamId=e.uint32();break;case 2:n.attendeeId=e.string();break;case 3:n.muted=e.bool();break;case 4:n.externalUserId=e.string();break;case 5:n.dropped=e.bool();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&!$util.isInteger(e.audioStreamId)?"audioStreamId: integer expected":null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!$util.isString(e.attendeeId)?"attendeeId: string expected":null!=e.muted&&e.hasOwnProperty("muted")&&"boolean"!=typeof e.muted?"muted: boolean expected":null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!$util.isString(e.externalUserId)?"externalUserId: string expected":null!=e.dropped&&e.hasOwnProperty("dropped")&&"boolean"!=typeof e.dropped?"dropped: boolean expected":null},e.fromObject=function(e){if(e instanceof $root.SdkAudioStreamIdInfo)return e;var t=new $root.SdkAudioStreamIdInfo;return null!=e.audioStreamId&&(t.audioStreamId=e.audioStreamId>>>0),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.muted&&(t.muted=Boolean(e.muted)),null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),null!=e.dropped&&(t.dropped=Boolean(e.dropped)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.audioStreamId=0,i.attendeeId="",i.muted=!1,i.externalUserId="",i.dropped=!1),null!=e.audioStreamId&&e.hasOwnProperty("audioStreamId")&&(i.audioStreamId=e.audioStreamId),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(i.attendeeId=e.attendeeId),null!=e.muted&&e.hasOwnProperty("muted")&&(i.muted=e.muted),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(i.externalUserId=e.externalUserId),null!=e.dropped&&e.hasOwnProperty("dropped")&&(i.dropped=e.dropped),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkPingPongType=function(){var e={},t=Object.create(e);return t[e[1]="PING"]=1,t[e[2]="PONG"]=2,t}(),$root.SdkPingPongFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.type=1,e.prototype.pingId=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t.uint32(8).int32(e.type),t.uint32(16).uint32(e.pingId),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkPingPongFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.type=e.int32();break;case 2:n.pingId=e.uint32();break;default:e.skipType(7&r)}}if(!n.hasOwnProperty("type"))throw $util.ProtocolError("missing required 'type'",{instance:n});if(!n.hasOwnProperty("pingId"))throw $util.ProtocolError("missing required 'pingId'",{instance:n});return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 1:case 2:}return $util.isInteger(e.pingId)?null:"pingId: integer expected"},e.fromObject=function(e){if(e instanceof $root.SdkPingPongFrame)return e;var t=new $root.SdkPingPongFrame;switch(e.type){case"PING":case 1:t.type=1;break;case"PONG":case 2:t.type=2}return null!=e.pingId&&(t.pingId=e.pingId>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.type=t.enums===String?"PING":1,i.pingId=0),null!=e.type&&e.hasOwnProperty("type")&&(i.type=t.enums===String?$root.SdkPingPongType[e.type]:e.type),null!=e.pingId&&e.hasOwnProperty("pingId")&&(i.pingId=e.pingId),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkAudioStatusFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.audioStatus=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&t.uint32(8).uint32(e.audioStatus),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkAudioStatusFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.audioStatus=e.uint32();else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&!$util.isInteger(e.audioStatus)?"audioStatus: integer expected":null},e.fromObject=function(e){if(e instanceof $root.SdkAudioStatusFrame)return e;var t=new $root.SdkAudioStatusFrame;return null!=e.audioStatus&&(t.audioStatus=e.audioStatus>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.audioStatus=0),null!=e.audioStatus&&e.hasOwnProperty("audioStatus")&&(i.audioStatus=e.audioStatus),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkMetric=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.type=1,e.prototype.value=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.type&&e.hasOwnProperty("type")&&t.uint32(8).int32(e.type),null!=e.value&&e.hasOwnProperty("value")&&t.uint32(17).double(e.value),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkMetric;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.type=e.int32();break;case 2:n.value=e.double();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 64:case 66:case 69:case 72:case 86:case 87:}return null!=e.value&&e.hasOwnProperty("value")&&"number"!=typeof e.value?"value: number expected":null},e.fromObject=function(e){if(e instanceof $root.SdkMetric)return e;var t=new $root.SdkMetric;switch(e.type){case"VIDEO_ACTUAL_ENCODER_BITRATE":case 1:t.type=1;break;case"VIDEO_AVAILABLE_SEND_BANDWIDTH":case 2:t.type=2;break;case"VIDEO_RETRANSMIT_BITRATE":case 3:t.type=3;break;case"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH":case 4:t.type=4;break;case"VIDEO_TARGET_ENCODER_BITRATE":case 5:t.type=5;break;case"VIDEO_BUCKET_DELAY_MS":case 6:t.type=6;break;case"STUN_RTT_MS":case 7:t.type=7;break;case"SOCKET_DISCARDED_PPS":case 8:t.type=8;break;case"RTC_MIC_JITTER_MS":case 9:t.type=9;break;case"RTC_MIC_PPS":case 10:t.type=10;break;case"RTC_MIC_FRACTION_PACKET_LOST_PERCENT":case 11:t.type=11;break;case"RTC_MIC_BITRATE":case 12:t.type=12;break;case"RTC_MIC_RTT_MS":case 13:t.type=13;break;case"RTC_SPK_PPS":case 14:t.type=14;break;case"RTC_SPK_FRACTION_PACKET_LOST_PERCENT":case 15:t.type=15;break;case"RTC_SPK_JITTER_MS":case 16:t.type=16;break;case"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT":case 17:t.type=17;break;case"RTC_SPK_BITRATE":case 18:t.type=18;break;case"RTC_SPK_CURRENT_DELAY_MS":case 19:t.type=19;break;case"RTC_SPK_JITTER_BUFFER_MS":case 20:t.type=20;break;case"VIDEO_SENT_RTT_MS":case 21:t.type=21;break;case"VIDEO_ENCODE_USAGE_PERCENT":case 22:t.type=22;break;case"VIDEO_NACKS_RECEIVED":case 23:t.type=23;break;case"VIDEO_PLIS_RECEIVED":case 24:t.type=24;break;case"VIDEO_AVERAGE_ENCODE_MS":case 25:t.type=25;break;case"VIDEO_INPUT_FPS":case 26:t.type=26;break;case"VIDEO_ENCODE_FPS":case 27:t.type=27;break;case"VIDEO_SENT_FPS":case 28:t.type=28;break;case"VIDEO_FIRS_RECEIVED":case 29:t.type=29;break;case"VIDEO_SENT_PPS":case 30:t.type=30;break;case"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT":case 31:t.type=31;break;case"VIDEO_SENT_BITRATE":case 32:t.type=32;break;case"VIDEO_DROPPED_FPS":case 33:t.type=33;break;case"VIDEO_TARGET_DELAY_MS":case 34:t.type=34;break;case"VIDEO_DECODE_MS":case 35:t.type=35;break;case"VIDEO_OUTPUT_FPS":case 36:t.type=36;break;case"VIDEO_RECEIVED_PPS":case 37:t.type=37;break;case"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT":case 38:t.type=38;break;case"VIDEO_RENDER_DELAY_MS":case 39:t.type=39;break;case"VIDEO_RECEIVED_FPS":case 40:t.type=40;break;case"VIDEO_DECODE_FPS":case 41:t.type=41;break;case"VIDEO_NACKS_SENT":case 42:t.type=42;break;case"VIDEO_FIRS_SENT":case 43:t.type=43;break;case"VIDEO_RECEIVED_BITRATE":case 44:t.type=44;break;case"VIDEO_CURRENT_DELAY_MS":case 45:t.type=45;break;case"VIDEO_JITTER_BUFFER_MS":case 46:t.type=46;break;case"VIDEO_DISCARDED_PPS":case 47:t.type=47;break;case"VIDEO_PLIS_SENT":case 48:t.type=48;break;case"VIDEO_RECEIVED_JITTER_MS":case 49:t.type=49;break;case"VIDEO_ENCODE_HEIGHT":case 64:t.type=64;break;case"VIDEO_SENT_QP_SUM":case 66:t.type=66;break;case"VIDEO_DECODE_HEIGHT":case 69:t.type=69;break;case"VIDEO_RECEIVED_QP_SUM":case 72:t.type=72;break;case"VIDEO_ENCODE_WIDTH":case 86:t.type=86;break;case"VIDEO_DECODE_WIDTH":case 87:t.type=87}return null!=e.value&&(t.value=Number(e.value)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.type=t.enums===String?"VIDEO_ACTUAL_ENCODER_BITRATE":1,i.value=0),null!=e.type&&e.hasOwnProperty("type")&&(i.type=t.enums===String?$root.SdkMetric.Type[e.type]:e.type),null!=e.value&&e.hasOwnProperty("value")&&(i.value=t.json&&!isFinite(e.value)?String(e.value):e.value),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="VIDEO_ACTUAL_ENCODER_BITRATE"]=1,t[e[2]="VIDEO_AVAILABLE_SEND_BANDWIDTH"]=2,t[e[3]="VIDEO_RETRANSMIT_BITRATE"]=3,t[e[4]="VIDEO_AVAILABLE_RECEIVE_BANDWIDTH"]=4,t[e[5]="VIDEO_TARGET_ENCODER_BITRATE"]=5,t[e[6]="VIDEO_BUCKET_DELAY_MS"]=6,t[e[7]="STUN_RTT_MS"]=7,t[e[8]="SOCKET_DISCARDED_PPS"]=8,t[e[9]="RTC_MIC_JITTER_MS"]=9,t[e[10]="RTC_MIC_PPS"]=10,t[e[11]="RTC_MIC_FRACTION_PACKET_LOST_PERCENT"]=11,t[e[12]="RTC_MIC_BITRATE"]=12,t[e[13]="RTC_MIC_RTT_MS"]=13,t[e[14]="RTC_SPK_PPS"]=14,t[e[15]="RTC_SPK_FRACTION_PACKET_LOST_PERCENT"]=15,t[e[16]="RTC_SPK_JITTER_MS"]=16,t[e[17]="RTC_SPK_FRACTION_DECODER_LOSS_PERCENT"]=17,t[e[18]="RTC_SPK_BITRATE"]=18,t[e[19]="RTC_SPK_CURRENT_DELAY_MS"]=19,t[e[20]="RTC_SPK_JITTER_BUFFER_MS"]=20,t[e[21]="VIDEO_SENT_RTT_MS"]=21,t[e[22]="VIDEO_ENCODE_USAGE_PERCENT"]=22,t[e[23]="VIDEO_NACKS_RECEIVED"]=23,t[e[24]="VIDEO_PLIS_RECEIVED"]=24,t[e[25]="VIDEO_AVERAGE_ENCODE_MS"]=25,t[e[26]="VIDEO_INPUT_FPS"]=26,t[e[27]="VIDEO_ENCODE_FPS"]=27,t[e[28]="VIDEO_SENT_FPS"]=28,t[e[29]="VIDEO_FIRS_RECEIVED"]=29,t[e[30]="VIDEO_SENT_PPS"]=30,t[e[31]="VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT"]=31,t[e[32]="VIDEO_SENT_BITRATE"]=32,t[e[33]="VIDEO_DROPPED_FPS"]=33,t[e[34]="VIDEO_TARGET_DELAY_MS"]=34,t[e[35]="VIDEO_DECODE_MS"]=35,t[e[36]="VIDEO_OUTPUT_FPS"]=36,t[e[37]="VIDEO_RECEIVED_PPS"]=37,t[e[38]="VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT"]=38,t[e[39]="VIDEO_RENDER_DELAY_MS"]=39,t[e[40]="VIDEO_RECEIVED_FPS"]=40,t[e[41]="VIDEO_DECODE_FPS"]=41,t[e[42]="VIDEO_NACKS_SENT"]=42,t[e[43]="VIDEO_FIRS_SENT"]=43,t[e[44]="VIDEO_RECEIVED_BITRATE"]=44,t[e[45]="VIDEO_CURRENT_DELAY_MS"]=45,t[e[46]="VIDEO_JITTER_BUFFER_MS"]=46,t[e[47]="VIDEO_DISCARDED_PPS"]=47,t[e[48]="VIDEO_PLIS_SENT"]=48,t[e[49]="VIDEO_RECEIVED_JITTER_MS"]=49,t[e[64]="VIDEO_ENCODE_HEIGHT"]=64,t[e[66]="VIDEO_SENT_QP_SUM"]=66,t[e[69]="VIDEO_DECODE_HEIGHT"]=69,t[e[72]="VIDEO_RECEIVED_QP_SUM"]=72,t[e[86]="VIDEO_ENCODE_WIDTH"]=86,t[e[87]="VIDEO_DECODE_WIDTH"]=87,t}(),e}(),$root.SdkStreamMetricFrame=function(){function e(e){if(this.metrics=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.streamId=0,e.prototype.groupId=0,e.prototype.metrics=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.streamId&&e.hasOwnProperty("streamId")&&t.uint32(24).uint32(e.streamId),null!=e.groupId&&e.hasOwnProperty("groupId")&&t.uint32(32).uint32(e.groupId),null!=e.metrics&&e.metrics.length)for(var i=0;i<e.metrics.length;++i)$root.SdkMetric.encode(e.metrics[i],t.uint32(42).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkStreamMetricFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 3:n.streamId=e.uint32();break;case 4:n.groupId=e.uint32();break;case 5:n.metrics&&n.metrics.length||(n.metrics=[]),n.metrics.push($root.SdkMetric.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.streamId&&e.hasOwnProperty("streamId")&&!$util.isInteger(e.streamId))return"streamId: integer expected";if(null!=e.groupId&&e.hasOwnProperty("groupId")&&!$util.isInteger(e.groupId))return"groupId: integer expected";if(null!=e.metrics&&e.hasOwnProperty("metrics")){if(!Array.isArray(e.metrics))return"metrics: array expected";for(var t=0;t<e.metrics.length;++t){var i=$root.SdkMetric.verify(e.metrics[t]);if(i)return"metrics."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkStreamMetricFrame)return e;var t=new $root.SdkStreamMetricFrame;if(null!=e.streamId&&(t.streamId=e.streamId>>>0),null!=e.groupId&&(t.groupId=e.groupId>>>0),e.metrics){if(!Array.isArray(e.metrics))throw TypeError(".SdkStreamMetricFrame.metrics: array expected");t.metrics=[];for(var i=0;i<e.metrics.length;++i){if("object"!=typeof e.metrics[i])throw TypeError(".SdkStreamMetricFrame.metrics: object expected");t.metrics[i]=$root.SdkMetric.fromObject(e.metrics[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.metrics=[]),t.defaults&&(i.streamId=0,i.groupId=0),null!=e.streamId&&e.hasOwnProperty("streamId")&&(i.streamId=e.streamId),null!=e.groupId&&e.hasOwnProperty("groupId")&&(i.groupId=e.groupId),e.metrics&&e.metrics.length){i.metrics=[];for(var n=0;n<e.metrics.length;++n)i.metrics[n]=$root.SdkMetric.toObject(e.metrics[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkClientMetricFrame=function(){function e(e){if(this.globalMetrics=[],this.streamMetricFrames=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.globalMetrics=$util.emptyArray,e.prototype.streamMetricFrames=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.globalMetrics&&e.globalMetrics.length)for(var i=0;i<e.globalMetrics.length;++i)$root.SdkMetric.encode(e.globalMetrics[i],t.uint32(10).fork()).ldelim();if(null!=e.streamMetricFrames&&e.streamMetricFrames.length)for(i=0;i<e.streamMetricFrames.length;++i)$root.SdkStreamMetricFrame.encode(e.streamMetricFrames[i],t.uint32(18).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkClientMetricFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.globalMetrics&&n.globalMetrics.length||(n.globalMetrics=[]),n.globalMetrics.push($root.SdkMetric.decode(e,e.uint32()));break;case 2:n.streamMetricFrames&&n.streamMetricFrames.length||(n.streamMetricFrames=[]),n.streamMetricFrames.push($root.SdkStreamMetricFrame.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.globalMetrics&&e.hasOwnProperty("globalMetrics")){if(!Array.isArray(e.globalMetrics))return"globalMetrics: array expected";for(var t=0;t<e.globalMetrics.length;++t){if(i=$root.SdkMetric.verify(e.globalMetrics[t]))return"globalMetrics."+i}}if(null!=e.streamMetricFrames&&e.hasOwnProperty("streamMetricFrames")){if(!Array.isArray(e.streamMetricFrames))return"streamMetricFrames: array expected";for(t=0;t<e.streamMetricFrames.length;++t){var i;if(i=$root.SdkStreamMetricFrame.verify(e.streamMetricFrames[t]))return"streamMetricFrames."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkClientMetricFrame)return e;var t=new $root.SdkClientMetricFrame;if(e.globalMetrics){if(!Array.isArray(e.globalMetrics))throw TypeError(".SdkClientMetricFrame.globalMetrics: array expected");t.globalMetrics=[];for(var i=0;i<e.globalMetrics.length;++i){if("object"!=typeof e.globalMetrics[i])throw TypeError(".SdkClientMetricFrame.globalMetrics: object expected");t.globalMetrics[i]=$root.SdkMetric.fromObject(e.globalMetrics[i])}}if(e.streamMetricFrames){if(!Array.isArray(e.streamMetricFrames))throw TypeError(".SdkClientMetricFrame.streamMetricFrames: array expected");t.streamMetricFrames=[];for(i=0;i<e.streamMetricFrames.length;++i){if("object"!=typeof e.streamMetricFrames[i])throw TypeError(".SdkClientMetricFrame.streamMetricFrames: object expected");t.streamMetricFrames[i]=$root.SdkStreamMetricFrame.fromObject(e.streamMetricFrames[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.globalMetrics=[],i.streamMetricFrames=[]),e.globalMetrics&&e.globalMetrics.length){i.globalMetrics=[];for(var n=0;n<e.globalMetrics.length;++n)i.globalMetrics[n]=$root.SdkMetric.toObject(e.globalMetrics[n],t)}if(e.streamMetricFrames&&e.streamMetricFrames.length){i.streamMetricFrames=[];for(n=0;n<e.streamMetricFrames.length;++n)i.streamMetricFrames[n]=$root.SdkStreamMetricFrame.toObject(e.streamMetricFrames[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkDataMessageFrame=function(){function e(e){if(this.messages=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.messages=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.messages&&e.messages.length)for(var i=0;i<e.messages.length;++i)$root.SdkDataMessagePayload.encode(e.messages[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkDataMessageFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.messages&&n.messages.length||(n.messages=[]),n.messages.push($root.SdkDataMessagePayload.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.messages&&e.hasOwnProperty("messages")){if(!Array.isArray(e.messages))return"messages: array expected";for(var t=0;t<e.messages.length;++t){var i=$root.SdkDataMessagePayload.verify(e.messages[t]);if(i)return"messages."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkDataMessageFrame)return e;var t=new $root.SdkDataMessageFrame;if(e.messages){if(!Array.isArray(e.messages))throw TypeError(".SdkDataMessageFrame.messages: array expected");t.messages=[];for(var i=0;i<e.messages.length;++i){if("object"!=typeof e.messages[i])throw TypeError(".SdkDataMessageFrame.messages: object expected");t.messages[i]=$root.SdkDataMessagePayload.fromObject(e.messages[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.messages=[]),e.messages&&e.messages.length){i.messages=[];for(var n=0;n<e.messages.length;++n)i.messages[n]=$root.SdkDataMessagePayload.toObject(e.messages[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkDataMessagePayload=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.topic="",e.prototype.data=$util.newBuffer([]),e.prototype.lifetimeMs=0,e.prototype.senderAttendeeId="",e.prototype.ingestTimeNs=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.senderExternalUserId="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.topic&&e.hasOwnProperty("topic")&&t.uint32(10).string(e.topic),null!=e.data&&e.hasOwnProperty("data")&&t.uint32(18).bytes(e.data),null!=e.lifetimeMs&&e.hasOwnProperty("lifetimeMs")&&t.uint32(24).uint32(e.lifetimeMs),null!=e.senderAttendeeId&&e.hasOwnProperty("senderAttendeeId")&&t.uint32(34).string(e.senderAttendeeId),null!=e.ingestTimeNs&&e.hasOwnProperty("ingestTimeNs")&&t.uint32(40).int64(e.ingestTimeNs),null!=e.senderExternalUserId&&e.hasOwnProperty("senderExternalUserId")&&t.uint32(50).string(e.senderExternalUserId),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkDataMessagePayload;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.topic=e.string();break;case 2:n.data=e.bytes();break;case 3:n.lifetimeMs=e.uint32();break;case 4:n.senderAttendeeId=e.string();break;case 5:n.ingestTimeNs=e.int64();break;case 6:n.senderExternalUserId=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.topic&&e.hasOwnProperty("topic")&&!$util.isString(e.topic)?"topic: string expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"==typeof e.data.length||$util.isString(e.data))?"data: buffer expected":null!=e.lifetimeMs&&e.hasOwnProperty("lifetimeMs")&&!$util.isInteger(e.lifetimeMs)?"lifetimeMs: integer expected":null!=e.senderAttendeeId&&e.hasOwnProperty("senderAttendeeId")&&!$util.isString(e.senderAttendeeId)?"senderAttendeeId: string expected":null!=e.ingestTimeNs&&e.hasOwnProperty("ingestTimeNs")&&!($util.isInteger(e.ingestTimeNs)||e.ingestTimeNs&&$util.isInteger(e.ingestTimeNs.low)&&$util.isInteger(e.ingestTimeNs.high))?"ingestTimeNs: integer|Long expected":null!=e.senderExternalUserId&&e.hasOwnProperty("senderExternalUserId")&&!$util.isString(e.senderExternalUserId)?"senderExternalUserId: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkDataMessagePayload)return e;var t=new $root.SdkDataMessagePayload;return null!=e.topic&&(t.topic=String(e.topic)),null!=e.data&&("string"==typeof e.data?$util.base64.decode(e.data,t.data=$util.newBuffer($util.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.lifetimeMs&&(t.lifetimeMs=e.lifetimeMs>>>0),null!=e.senderAttendeeId&&(t.senderAttendeeId=String(e.senderAttendeeId)),null!=e.ingestTimeNs&&($util.Long?(t.ingestTimeNs=$util.Long.fromValue(e.ingestTimeNs)).unsigned=!1:"string"==typeof e.ingestTimeNs?t.ingestTimeNs=parseInt(e.ingestTimeNs,10):"number"==typeof e.ingestTimeNs?t.ingestTimeNs=e.ingestTimeNs:"object"==typeof e.ingestTimeNs&&(t.ingestTimeNs=new $util.LongBits(e.ingestTimeNs.low>>>0,e.ingestTimeNs.high>>>0).toNumber())),null!=e.senderExternalUserId&&(t.senderExternalUserId=String(e.senderExternalUserId)),t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if(i.topic="",t.bytes===String?i.data="":(i.data=[],t.bytes!==Array&&(i.data=$util.newBuffer(i.data))),i.lifetimeMs=0,i.senderAttendeeId="",$util.Long){var n=new $util.Long(0,0,!1);i.ingestTimeNs=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.ingestTimeNs=t.longs===String?"0":0;i.senderExternalUserId=""}return null!=e.topic&&e.hasOwnProperty("topic")&&(i.topic=e.topic),null!=e.data&&e.hasOwnProperty("data")&&(i.data=t.bytes===String?$util.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.lifetimeMs&&e.hasOwnProperty("lifetimeMs")&&(i.lifetimeMs=e.lifetimeMs),null!=e.senderAttendeeId&&e.hasOwnProperty("senderAttendeeId")&&(i.senderAttendeeId=e.senderAttendeeId),null!=e.ingestTimeNs&&e.hasOwnProperty("ingestTimeNs")&&("number"==typeof e.ingestTimeNs?i.ingestTimeNs=t.longs===String?String(e.ingestTimeNs):e.ingestTimeNs:i.ingestTimeNs=t.longs===String?$util.Long.prototype.toString.call(e.ingestTimeNs):t.longs===Number?new $util.LongBits(e.ingestTimeNs.low>>>0,e.ingestTimeNs.high>>>0).toNumber():e.ingestTimeNs),null!=e.senderExternalUserId&&e.hasOwnProperty("senderExternalUserId")&&(i.senderExternalUserId=e.senderExternalUserId),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTurnCredentials=function(){function e(e){if(this.uris=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.username="",e.prototype.password="",e.prototype.ttl=0,e.prototype.uris=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.username&&e.hasOwnProperty("username")&&t.uint32(10).string(e.username),null!=e.password&&e.hasOwnProperty("password")&&t.uint32(18).string(e.password),null!=e.ttl&&e.hasOwnProperty("ttl")&&t.uint32(24).uint32(e.ttl),null!=e.uris&&e.uris.length)for(var i=0;i<e.uris.length;++i)t.uint32(34).string(e.uris[i]);return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTurnCredentials;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.username=e.string();break;case 2:n.password=e.string();break;case 3:n.ttl=e.uint32();break;case 4:n.uris&&n.uris.length||(n.uris=[]),n.uris.push(e.string());break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.username&&e.hasOwnProperty("username")&&!$util.isString(e.username))return"username: string expected";if(null!=e.password&&e.hasOwnProperty("password")&&!$util.isString(e.password))return"password: string expected";if(null!=e.ttl&&e.hasOwnProperty("ttl")&&!$util.isInteger(e.ttl))return"ttl: integer expected";if(null!=e.uris&&e.hasOwnProperty("uris")){if(!Array.isArray(e.uris))return"uris: array expected";for(var t=0;t<e.uris.length;++t)if(!$util.isString(e.uris[t]))return"uris: string[] expected"}return null},e.fromObject=function(e){if(e instanceof $root.SdkTurnCredentials)return e;var t=new $root.SdkTurnCredentials;if(null!=e.username&&(t.username=String(e.username)),null!=e.password&&(t.password=String(e.password)),null!=e.ttl&&(t.ttl=e.ttl>>>0),e.uris){if(!Array.isArray(e.uris))throw TypeError(".SdkTurnCredentials.uris: array expected");t.uris=[];for(var i=0;i<e.uris.length;++i)t.uris[i]=String(e.uris[i])}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.uris=[]),t.defaults&&(i.username="",i.password="",i.ttl=0),null!=e.username&&e.hasOwnProperty("username")&&(i.username=e.username),null!=e.password&&e.hasOwnProperty("password")&&(i.password=e.password),null!=e.ttl&&e.hasOwnProperty("ttl")&&(i.ttl=e.ttl),e.uris&&e.uris.length){i.uris=[];for(var n=0;n<e.uris.length;++n)i.uris[n]=e.uris[n]}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptItem=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.content="",e.prototype.endTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.speakerAttendeeId="",e.prototype.speakerExternalUserId="",e.prototype.startTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.type=1,e.prototype.vocabularyFilterMatch=!1,e.prototype.confidence=0,e.prototype.stable=!1,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.content&&e.hasOwnProperty("content")&&t.uint32(10).string(e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&t.uint32(16).int64(e.endTime),null!=e.speakerAttendeeId&&e.hasOwnProperty("speakerAttendeeId")&&t.uint32(26).string(e.speakerAttendeeId),null!=e.speakerExternalUserId&&e.hasOwnProperty("speakerExternalUserId")&&t.uint32(34).string(e.speakerExternalUserId),null!=e.startTime&&e.hasOwnProperty("startTime")&&t.uint32(40).int64(e.startTime),null!=e.type&&e.hasOwnProperty("type")&&t.uint32(48).int32(e.type),null!=e.vocabularyFilterMatch&&e.hasOwnProperty("vocabularyFilterMatch")&&t.uint32(56).bool(e.vocabularyFilterMatch),null!=e.confidence&&e.hasOwnProperty("confidence")&&t.uint32(65).double(e.confidence),null!=e.stable&&e.hasOwnProperty("stable")&&t.uint32(72).bool(e.stable),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptItem;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.content=e.string();break;case 2:n.endTime=e.int64();break;case 3:n.speakerAttendeeId=e.string();break;case 4:n.speakerExternalUserId=e.string();break;case 5:n.startTime=e.int64();break;case 6:n.type=e.int32();break;case 7:n.vocabularyFilterMatch=e.bool();break;case 8:n.confidence=e.double();break;case 9:n.stable=e.bool();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.content&&e.hasOwnProperty("content")&&!$util.isString(e.content))return"content: string expected";if(null!=e.endTime&&e.hasOwnProperty("endTime")&&!($util.isInteger(e.endTime)||e.endTime&&$util.isInteger(e.endTime.low)&&$util.isInteger(e.endTime.high)))return"endTime: integer|Long expected";if(null!=e.speakerAttendeeId&&e.hasOwnProperty("speakerAttendeeId")&&!$util.isString(e.speakerAttendeeId))return"speakerAttendeeId: string expected";if(null!=e.speakerExternalUserId&&e.hasOwnProperty("speakerExternalUserId")&&!$util.isString(e.speakerExternalUserId))return"speakerExternalUserId: string expected";if(null!=e.startTime&&e.hasOwnProperty("startTime")&&!($util.isInteger(e.startTime)||e.startTime&&$util.isInteger(e.startTime.low)&&$util.isInteger(e.startTime.high)))return"startTime: integer|Long expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:}return null!=e.vocabularyFilterMatch&&e.hasOwnProperty("vocabularyFilterMatch")&&"boolean"!=typeof e.vocabularyFilterMatch?"vocabularyFilterMatch: boolean expected":null!=e.confidence&&e.hasOwnProperty("confidence")&&"number"!=typeof e.confidence?"confidence: number expected":null!=e.stable&&e.hasOwnProperty("stable")&&"boolean"!=typeof e.stable?"stable: boolean expected":null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptItem)return e;var t=new $root.SdkTranscriptItem;switch(null!=e.content&&(t.content=String(e.content)),null!=e.endTime&&($util.Long?(t.endTime=$util.Long.fromValue(e.endTime)).unsigned=!1:"string"==typeof e.endTime?t.endTime=parseInt(e.endTime,10):"number"==typeof e.endTime?t.endTime=e.endTime:"object"==typeof e.endTime&&(t.endTime=new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber())),null!=e.speakerAttendeeId&&(t.speakerAttendeeId=String(e.speakerAttendeeId)),null!=e.speakerExternalUserId&&(t.speakerExternalUserId=String(e.speakerExternalUserId)),null!=e.startTime&&($util.Long?(t.startTime=$util.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),e.type){case"PRONUNCIATION":case 1:t.type=1;break;case"PUNCTUATION":case 2:t.type=2}return null!=e.vocabularyFilterMatch&&(t.vocabularyFilterMatch=Boolean(e.vocabularyFilterMatch)),null!=e.confidence&&(t.confidence=Number(e.confidence)),null!=e.stable&&(t.stable=Boolean(e.stable)),t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if(i.content="",$util.Long){var n=new $util.Long(0,0,!1);i.endTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.endTime=t.longs===String?"0":0;if(i.speakerAttendeeId="",i.speakerExternalUserId="",$util.Long){n=new $util.Long(0,0,!1);i.startTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.startTime=t.longs===String?"0":0;i.type=t.enums===String?"PRONUNCIATION":1,i.vocabularyFilterMatch=!1,i.confidence=0,i.stable=!1}return null!=e.content&&e.hasOwnProperty("content")&&(i.content=e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&("number"==typeof e.endTime?i.endTime=t.longs===String?String(e.endTime):e.endTime:i.endTime=t.longs===String?$util.Long.prototype.toString.call(e.endTime):t.longs===Number?new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.speakerAttendeeId&&e.hasOwnProperty("speakerAttendeeId")&&(i.speakerAttendeeId=e.speakerAttendeeId),null!=e.speakerExternalUserId&&e.hasOwnProperty("speakerExternalUserId")&&(i.speakerExternalUserId=e.speakerExternalUserId),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?i.startTime=t.longs===String?String(e.startTime):e.startTime:i.startTime=t.longs===String?$util.Long.prototype.toString.call(e.startTime):t.longs===Number?new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.type&&e.hasOwnProperty("type")&&(i.type=t.enums===String?$root.SdkTranscriptItem.Type[e.type]:e.type),null!=e.vocabularyFilterMatch&&e.hasOwnProperty("vocabularyFilterMatch")&&(i.vocabularyFilterMatch=e.vocabularyFilterMatch),null!=e.confidence&&e.hasOwnProperty("confidence")&&(i.confidence=t.json&&!isFinite(e.confidence)?String(e.confidence):e.confidence),null!=e.stable&&e.hasOwnProperty("stable")&&(i.stable=e.stable),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="PRONUNCIATION"]=1,t[e[2]="PUNCTUATION"]=2,t}(),e}(),$root.SdkTranscriptEntity=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.category="",e.prototype.confidence=0,e.prototype.content="",e.prototype.endTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.startTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.type="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.category&&e.hasOwnProperty("category")&&t.uint32(10).string(e.category),null!=e.confidence&&e.hasOwnProperty("confidence")&&t.uint32(17).double(e.confidence),null!=e.content&&e.hasOwnProperty("content")&&t.uint32(26).string(e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&t.uint32(32).int64(e.endTime),null!=e.startTime&&e.hasOwnProperty("startTime")&&t.uint32(40).int64(e.startTime),null!=e.type&&e.hasOwnProperty("type")&&t.uint32(50).string(e.type),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptEntity;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.category=e.string();break;case 2:n.confidence=e.double();break;case 3:n.content=e.string();break;case 4:n.endTime=e.int64();break;case 5:n.startTime=e.int64();break;case 6:n.type=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.category&&e.hasOwnProperty("category")&&!$util.isString(e.category)?"category: string expected":null!=e.confidence&&e.hasOwnProperty("confidence")&&"number"!=typeof e.confidence?"confidence: number expected":null!=e.content&&e.hasOwnProperty("content")&&!$util.isString(e.content)?"content: string expected":null!=e.endTime&&e.hasOwnProperty("endTime")&&!($util.isInteger(e.endTime)||e.endTime&&$util.isInteger(e.endTime.low)&&$util.isInteger(e.endTime.high))?"endTime: integer|Long expected":null!=e.startTime&&e.hasOwnProperty("startTime")&&!($util.isInteger(e.startTime)||e.startTime&&$util.isInteger(e.startTime.low)&&$util.isInteger(e.startTime.high))?"startTime: integer|Long expected":null!=e.type&&e.hasOwnProperty("type")&&!$util.isString(e.type)?"type: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptEntity)return e;var t=new $root.SdkTranscriptEntity;return null!=e.category&&(t.category=String(e.category)),null!=e.confidence&&(t.confidence=Number(e.confidence)),null!=e.content&&(t.content=String(e.content)),null!=e.endTime&&($util.Long?(t.endTime=$util.Long.fromValue(e.endTime)).unsigned=!1:"string"==typeof e.endTime?t.endTime=parseInt(e.endTime,10):"number"==typeof e.endTime?t.endTime=e.endTime:"object"==typeof e.endTime&&(t.endTime=new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber())),null!=e.startTime&&($util.Long?(t.startTime=$util.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),null!=e.type&&(t.type=String(e.type)),t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if(i.category="",i.confidence=0,i.content="",$util.Long){var n=new $util.Long(0,0,!1);i.endTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.endTime=t.longs===String?"0":0;if($util.Long){n=new $util.Long(0,0,!1);i.startTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.startTime=t.longs===String?"0":0;i.type=""}return null!=e.category&&e.hasOwnProperty("category")&&(i.category=e.category),null!=e.confidence&&e.hasOwnProperty("confidence")&&(i.confidence=t.json&&!isFinite(e.confidence)?String(e.confidence):e.confidence),null!=e.content&&e.hasOwnProperty("content")&&(i.content=e.content),null!=e.endTime&&e.hasOwnProperty("endTime")&&("number"==typeof e.endTime?i.endTime=t.longs===String?String(e.endTime):e.endTime:i.endTime=t.longs===String?$util.Long.prototype.toString.call(e.endTime):t.longs===Number?new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?i.startTime=t.longs===String?String(e.startTime):e.startTime:i.startTime=t.longs===String?$util.Long.prototype.toString.call(e.startTime):t.longs===Number?new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.type&&e.hasOwnProperty("type")&&(i.type=e.type),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptAlternative=function(){function e(e){if(this.items=[],this.entities=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.items=$util.emptyArray,e.prototype.transcript="",e.prototype.entities=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.items&&e.items.length)for(var i=0;i<e.items.length;++i)$root.SdkTranscriptItem.encode(e.items[i],t.uint32(10).fork()).ldelim();if(null!=e.transcript&&e.hasOwnProperty("transcript")&&t.uint32(18).string(e.transcript),null!=e.entities&&e.entities.length)for(i=0;i<e.entities.length;++i)$root.SdkTranscriptEntity.encode(e.entities[i],t.uint32(26).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptAlternative;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.items&&n.items.length||(n.items=[]),n.items.push($root.SdkTranscriptItem.decode(e,e.uint32()));break;case 2:n.transcript=e.string();break;case 3:n.entities&&n.entities.length||(n.entities=[]),n.entities.push($root.SdkTranscriptEntity.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.items&&e.hasOwnProperty("items")){if(!Array.isArray(e.items))return"items: array expected";for(var t=0;t<e.items.length;++t){if(i=$root.SdkTranscriptItem.verify(e.items[t]))return"items."+i}}if(null!=e.transcript&&e.hasOwnProperty("transcript")&&!$util.isString(e.transcript))return"transcript: string expected";if(null!=e.entities&&e.hasOwnProperty("entities")){if(!Array.isArray(e.entities))return"entities: array expected";for(t=0;t<e.entities.length;++t){var i;if(i=$root.SdkTranscriptEntity.verify(e.entities[t]))return"entities."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptAlternative)return e;var t=new $root.SdkTranscriptAlternative;if(e.items){if(!Array.isArray(e.items))throw TypeError(".SdkTranscriptAlternative.items: array expected");t.items=[];for(var i=0;i<e.items.length;++i){if("object"!=typeof e.items[i])throw TypeError(".SdkTranscriptAlternative.items: object expected");t.items[i]=$root.SdkTranscriptItem.fromObject(e.items[i])}}if(null!=e.transcript&&(t.transcript=String(e.transcript)),e.entities){if(!Array.isArray(e.entities))throw TypeError(".SdkTranscriptAlternative.entities: array expected");t.entities=[];for(i=0;i<e.entities.length;++i){if("object"!=typeof e.entities[i])throw TypeError(".SdkTranscriptAlternative.entities: object expected");t.entities[i]=$root.SdkTranscriptEntity.fromObject(e.entities[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.items=[],i.entities=[]),t.defaults&&(i.transcript=""),e.items&&e.items.length){i.items=[];for(var n=0;n<e.items.length;++n)i.items[n]=$root.SdkTranscriptItem.toObject(e.items[n],t)}if(null!=e.transcript&&e.hasOwnProperty("transcript")&&(i.transcript=e.transcript),e.entities&&e.entities.length){i.entities=[];for(n=0;n<e.entities.length;++n)i.entities[n]=$root.SdkTranscriptEntity.toObject(e.entities[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptLanguageWithScore=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.languageCode="",e.prototype.score=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&t.uint32(10).string(e.languageCode),null!=e.score&&e.hasOwnProperty("score")&&t.uint32(17).double(e.score),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptLanguageWithScore;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.languageCode=e.string();break;case 2:n.score=e.double();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.languageCode&&e.hasOwnProperty("languageCode")&&!$util.isString(e.languageCode)?"languageCode: string expected":null!=e.score&&e.hasOwnProperty("score")&&"number"!=typeof e.score?"score: number expected":null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptLanguageWithScore)return e;var t=new $root.SdkTranscriptLanguageWithScore;return null!=e.languageCode&&(t.languageCode=String(e.languageCode)),null!=e.score&&(t.score=Number(e.score)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.languageCode="",i.score=0),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&(i.languageCode=e.languageCode),null!=e.score&&e.hasOwnProperty("score")&&(i.score=t.json&&!isFinite(e.score)?String(e.score):e.score),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptResult=function(){function e(e){if(this.alternatives=[],this.languageIdentification=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.alternatives=$util.emptyArray,e.prototype.channelId="",e.prototype.endTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.isPartial=!1,e.prototype.resultId="",e.prototype.startTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.languageCode="",e.prototype.languageIdentification=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.alternatives&&e.alternatives.length)for(var i=0;i<e.alternatives.length;++i)$root.SdkTranscriptAlternative.encode(e.alternatives[i],t.uint32(10).fork()).ldelim();if(null!=e.channelId&&e.hasOwnProperty("channelId")&&t.uint32(18).string(e.channelId),null!=e.endTime&&e.hasOwnProperty("endTime")&&t.uint32(24).int64(e.endTime),null!=e.isPartial&&e.hasOwnProperty("isPartial")&&t.uint32(32).bool(e.isPartial),null!=e.resultId&&e.hasOwnProperty("resultId")&&t.uint32(42).string(e.resultId),null!=e.startTime&&e.hasOwnProperty("startTime")&&t.uint32(48).int64(e.startTime),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&t.uint32(58).string(e.languageCode),null!=e.languageIdentification&&e.languageIdentification.length)for(i=0;i<e.languageIdentification.length;++i)$root.SdkTranscriptLanguageWithScore.encode(e.languageIdentification[i],t.uint32(66).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptResult;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.alternatives&&n.alternatives.length||(n.alternatives=[]),n.alternatives.push($root.SdkTranscriptAlternative.decode(e,e.uint32()));break;case 2:n.channelId=e.string();break;case 3:n.endTime=e.int64();break;case 4:n.isPartial=e.bool();break;case 5:n.resultId=e.string();break;case 6:n.startTime=e.int64();break;case 7:n.languageCode=e.string();break;case 8:n.languageIdentification&&n.languageIdentification.length||(n.languageIdentification=[]),n.languageIdentification.push($root.SdkTranscriptLanguageWithScore.decode(e,e.uint32()));break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.alternatives&&e.hasOwnProperty("alternatives")){if(!Array.isArray(e.alternatives))return"alternatives: array expected";for(var t=0;t<e.alternatives.length;++t){if(i=$root.SdkTranscriptAlternative.verify(e.alternatives[t]))return"alternatives."+i}}if(null!=e.channelId&&e.hasOwnProperty("channelId")&&!$util.isString(e.channelId))return"channelId: string expected";if(null!=e.endTime&&e.hasOwnProperty("endTime")&&!($util.isInteger(e.endTime)||e.endTime&&$util.isInteger(e.endTime.low)&&$util.isInteger(e.endTime.high)))return"endTime: integer|Long expected";if(null!=e.isPartial&&e.hasOwnProperty("isPartial")&&"boolean"!=typeof e.isPartial)return"isPartial: boolean expected";if(null!=e.resultId&&e.hasOwnProperty("resultId")&&!$util.isString(e.resultId))return"resultId: string expected";if(null!=e.startTime&&e.hasOwnProperty("startTime")&&!($util.isInteger(e.startTime)||e.startTime&&$util.isInteger(e.startTime.low)&&$util.isInteger(e.startTime.high)))return"startTime: integer|Long expected";if(null!=e.languageCode&&e.hasOwnProperty("languageCode")&&!$util.isString(e.languageCode))return"languageCode: string expected";if(null!=e.languageIdentification&&e.hasOwnProperty("languageIdentification")){if(!Array.isArray(e.languageIdentification))return"languageIdentification: array expected";for(t=0;t<e.languageIdentification.length;++t){var i;if(i=$root.SdkTranscriptLanguageWithScore.verify(e.languageIdentification[t]))return"languageIdentification."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptResult)return e;var t=new $root.SdkTranscriptResult;if(e.alternatives){if(!Array.isArray(e.alternatives))throw TypeError(".SdkTranscriptResult.alternatives: array expected");t.alternatives=[];for(var i=0;i<e.alternatives.length;++i){if("object"!=typeof e.alternatives[i])throw TypeError(".SdkTranscriptResult.alternatives: object expected");t.alternatives[i]=$root.SdkTranscriptAlternative.fromObject(e.alternatives[i])}}if(null!=e.channelId&&(t.channelId=String(e.channelId)),null!=e.endTime&&($util.Long?(t.endTime=$util.Long.fromValue(e.endTime)).unsigned=!1:"string"==typeof e.endTime?t.endTime=parseInt(e.endTime,10):"number"==typeof e.endTime?t.endTime=e.endTime:"object"==typeof e.endTime&&(t.endTime=new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber())),null!=e.isPartial&&(t.isPartial=Boolean(e.isPartial)),null!=e.resultId&&(t.resultId=String(e.resultId)),null!=e.startTime&&($util.Long?(t.startTime=$util.Long.fromValue(e.startTime)).unsigned=!1:"string"==typeof e.startTime?t.startTime=parseInt(e.startTime,10):"number"==typeof e.startTime?t.startTime=e.startTime:"object"==typeof e.startTime&&(t.startTime=new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber())),null!=e.languageCode&&(t.languageCode=String(e.languageCode)),e.languageIdentification){if(!Array.isArray(e.languageIdentification))throw TypeError(".SdkTranscriptResult.languageIdentification: array expected");t.languageIdentification=[];for(i=0;i<e.languageIdentification.length;++i){if("object"!=typeof e.languageIdentification[i])throw TypeError(".SdkTranscriptResult.languageIdentification: object expected");t.languageIdentification[i]=$root.SdkTranscriptLanguageWithScore.fromObject(e.languageIdentification[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.alternatives=[],i.languageIdentification=[]),t.defaults){if(i.channelId="",$util.Long){var n=new $util.Long(0,0,!1);i.endTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.endTime=t.longs===String?"0":0;if(i.isPartial=!1,i.resultId="",$util.Long){n=new $util.Long(0,0,!1);i.startTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.startTime=t.longs===String?"0":0;i.languageCode=""}if(e.alternatives&&e.alternatives.length){i.alternatives=[];for(var r=0;r<e.alternatives.length;++r)i.alternatives[r]=$root.SdkTranscriptAlternative.toObject(e.alternatives[r],t)}if(null!=e.channelId&&e.hasOwnProperty("channelId")&&(i.channelId=e.channelId),null!=e.endTime&&e.hasOwnProperty("endTime")&&("number"==typeof e.endTime?i.endTime=t.longs===String?String(e.endTime):e.endTime:i.endTime=t.longs===String?$util.Long.prototype.toString.call(e.endTime):t.longs===Number?new $util.LongBits(e.endTime.low>>>0,e.endTime.high>>>0).toNumber():e.endTime),null!=e.isPartial&&e.hasOwnProperty("isPartial")&&(i.isPartial=e.isPartial),null!=e.resultId&&e.hasOwnProperty("resultId")&&(i.resultId=e.resultId),null!=e.startTime&&e.hasOwnProperty("startTime")&&("number"==typeof e.startTime?i.startTime=t.longs===String?String(e.startTime):e.startTime:i.startTime=t.longs===String?$util.Long.prototype.toString.call(e.startTime):t.longs===Number?new $util.LongBits(e.startTime.low>>>0,e.startTime.high>>>0).toNumber():e.startTime),null!=e.languageCode&&e.hasOwnProperty("languageCode")&&(i.languageCode=e.languageCode),e.languageIdentification&&e.languageIdentification.length){i.languageIdentification=[];for(r=0;r<e.languageIdentification.length;++r)i.languageIdentification[r]=$root.SdkTranscriptLanguageWithScore.toObject(e.languageIdentification[r],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscript=function(){function e(e){if(this.results=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.results=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.results&&e.results.length)for(var i=0;i<e.results.length;++i)$root.SdkTranscriptResult.encode(e.results[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscript;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.results&&n.results.length||(n.results=[]),n.results.push($root.SdkTranscriptResult.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.results&&e.hasOwnProperty("results")){if(!Array.isArray(e.results))return"results: array expected";for(var t=0;t<e.results.length;++t){var i=$root.SdkTranscriptResult.verify(e.results[t]);if(i)return"results."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkTranscript)return e;var t=new $root.SdkTranscript;if(e.results){if(!Array.isArray(e.results))throw TypeError(".SdkTranscript.results: array expected");t.results=[];for(var i=0;i<e.results.length;++i){if("object"!=typeof e.results[i])throw TypeError(".SdkTranscript.results: object expected");t.results[i]=$root.SdkTranscriptResult.fromObject(e.results[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.results=[]),e.results&&e.results.length){i.results=[];for(var n=0;n<e.results.length;++n)i.results[n]=$root.SdkTranscriptResult.toObject(e.results[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptionStatus=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.type=1,e.prototype.eventTime=$util.Long?$util.Long.fromBits(0,0,!1):0,e.prototype.transcriptionRegion="",e.prototype.transcriptionConfiguration="",e.prototype.message="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.type&&e.hasOwnProperty("type")&&t.uint32(8).int32(e.type),null!=e.eventTime&&e.hasOwnProperty("eventTime")&&t.uint32(16).int64(e.eventTime),null!=e.transcriptionRegion&&e.hasOwnProperty("transcriptionRegion")&&t.uint32(26).string(e.transcriptionRegion),null!=e.transcriptionConfiguration&&e.hasOwnProperty("transcriptionConfiguration")&&t.uint32(34).string(e.transcriptionConfiguration),null!=e.message&&e.hasOwnProperty("message")&&t.uint32(42).string(e.message),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptionStatus;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.type=e.int32();break;case 2:n.eventTime=e.int64();break;case 3:n.transcriptionRegion=e.string();break;case 4:n.transcriptionConfiguration=e.string();break;case 5:n.message=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 1:case 2:case 3:case 4:case 5:}return null!=e.eventTime&&e.hasOwnProperty("eventTime")&&!($util.isInteger(e.eventTime)||e.eventTime&&$util.isInteger(e.eventTime.low)&&$util.isInteger(e.eventTime.high))?"eventTime: integer|Long expected":null!=e.transcriptionRegion&&e.hasOwnProperty("transcriptionRegion")&&!$util.isString(e.transcriptionRegion)?"transcriptionRegion: string expected":null!=e.transcriptionConfiguration&&e.hasOwnProperty("transcriptionConfiguration")&&!$util.isString(e.transcriptionConfiguration)?"transcriptionConfiguration: string expected":null!=e.message&&e.hasOwnProperty("message")&&!$util.isString(e.message)?"message: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptionStatus)return e;var t=new $root.SdkTranscriptionStatus;switch(e.type){case"STARTED":case 1:t.type=1;break;case"INTERRUPTED":case 2:t.type=2;break;case"RESUMED":case 3:t.type=3;break;case"STOPPED":case 4:t.type=4;break;case"FAILED":case 5:t.type=5}return null!=e.eventTime&&($util.Long?(t.eventTime=$util.Long.fromValue(e.eventTime)).unsigned=!1:"string"==typeof e.eventTime?t.eventTime=parseInt(e.eventTime,10):"number"==typeof e.eventTime?t.eventTime=e.eventTime:"object"==typeof e.eventTime&&(t.eventTime=new $util.LongBits(e.eventTime.low>>>0,e.eventTime.high>>>0).toNumber())),null!=e.transcriptionRegion&&(t.transcriptionRegion=String(e.transcriptionRegion)),null!=e.transcriptionConfiguration&&(t.transcriptionConfiguration=String(e.transcriptionConfiguration)),null!=e.message&&(t.message=String(e.message)),t},e.toObject=function(e,t){t||(t={});var i={};if(t.defaults){if(i.type=t.enums===String?"STARTED":1,$util.Long){var n=new $util.Long(0,0,!1);i.eventTime=t.longs===String?n.toString():t.longs===Number?n.toNumber():n}else i.eventTime=t.longs===String?"0":0;i.transcriptionRegion="",i.transcriptionConfiguration="",i.message=""}return null!=e.type&&e.hasOwnProperty("type")&&(i.type=t.enums===String?$root.SdkTranscriptionStatus.Type[e.type]:e.type),null!=e.eventTime&&e.hasOwnProperty("eventTime")&&("number"==typeof e.eventTime?i.eventTime=t.longs===String?String(e.eventTime):e.eventTime:i.eventTime=t.longs===String?$util.Long.prototype.toString.call(e.eventTime):t.longs===Number?new $util.LongBits(e.eventTime.low>>>0,e.eventTime.high>>>0).toNumber():e.eventTime),null!=e.transcriptionRegion&&e.hasOwnProperty("transcriptionRegion")&&(i.transcriptionRegion=e.transcriptionRegion),null!=e.transcriptionConfiguration&&e.hasOwnProperty("transcriptionConfiguration")&&(i.transcriptionConfiguration=e.transcriptionConfiguration),null!=e.message&&e.hasOwnProperty("message")&&(i.message=e.message),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[1]="STARTED"]=1,t[e[2]="INTERRUPTED"]=2,t[e[3]="RESUMED"]=3,t[e[4]="STOPPED"]=4,t[e[5]="FAILED"]=5,t}(),e}(),$root.SdkTranscriptEvent=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}var t;return e.prototype.status=null,e.prototype.transcript=null,Object.defineProperty(e.prototype,"Event",{get:$util.oneOfGetter(t=["status","transcript"]),set:$util.oneOfSetter(t)}),e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.status&&e.hasOwnProperty("status")&&$root.SdkTranscriptionStatus.encode(e.status,t.uint32(10).fork()).ldelim(),null!=e.transcript&&e.hasOwnProperty("transcript")&&$root.SdkTranscript.encode(e.transcript,t.uint32(18).fork()).ldelim(),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptEvent;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.status=$root.SdkTranscriptionStatus.decode(e,e.uint32());break;case 2:n.transcript=$root.SdkTranscript.decode(e,e.uint32());break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";var t={};if(null!=e.status&&e.hasOwnProperty("status")&&(t.Event=1,i=$root.SdkTranscriptionStatus.verify(e.status)))return"status."+i;if(null!=e.transcript&&e.hasOwnProperty("transcript")){if(1===t.Event)return"Event: multiple values";var i;if(t.Event=1,i=$root.SdkTranscript.verify(e.transcript))return"transcript."+i}return null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptEvent)return e;var t=new $root.SdkTranscriptEvent;if(null!=e.status){if("object"!=typeof e.status)throw TypeError(".SdkTranscriptEvent.status: object expected");t.status=$root.SdkTranscriptionStatus.fromObject(e.status)}if(null!=e.transcript){if("object"!=typeof e.transcript)throw TypeError(".SdkTranscriptEvent.transcript: object expected");t.transcript=$root.SdkTranscript.fromObject(e.transcript)}return t},e.toObject=function(e,t){t||(t={});var i={};return null!=e.status&&e.hasOwnProperty("status")&&(i.status=$root.SdkTranscriptionStatus.toObject(e.status,t),t.oneofs&&(i.Event="status")),null!=e.transcript&&e.hasOwnProperty("transcript")&&(i.transcript=$root.SdkTranscript.toObject(e.transcript,t),t.oneofs&&(i.Event="transcript")),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkTranscriptFrame=function(){function e(e){if(this.events=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.events=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.events&&e.events.length)for(var i=0;i<e.events.length;++i)$root.SdkTranscriptEvent.encode(e.events[i],t.uint32(10).fork()).ldelim();return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkTranscriptFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.events&&n.events.length||(n.events=[]),n.events.push($root.SdkTranscriptEvent.decode(e,e.uint32()));else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.events&&e.hasOwnProperty("events")){if(!Array.isArray(e.events))return"events: array expected";for(var t=0;t<e.events.length;++t){var i=$root.SdkTranscriptEvent.verify(e.events[t]);if(i)return"events."+i}}return null},e.fromObject=function(e){if(e instanceof $root.SdkTranscriptFrame)return e;var t=new $root.SdkTranscriptFrame;if(e.events){if(!Array.isArray(e.events))throw TypeError(".SdkTranscriptFrame.events: array expected");t.events=[];for(var i=0;i<e.events.length;++i){if("object"!=typeof e.events[i])throw TypeError(".SdkTranscriptFrame.events: object expected");t.events[i]=$root.SdkTranscriptEvent.fromObject(e.events[i])}}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.events=[]),e.events&&e.events.length){i.events=[];for(var n=0;n<e.events.length;++n)i.events[n]=$root.SdkTranscriptEvent.toObject(e.events[n],t)}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkRemoteVideoUpdateFrame=function(){function e(e){if(this.addedOrUpdatedVideoSubscriptions=[],this.removedVideoSubscriptionMids=[],e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.addedOrUpdatedVideoSubscriptions=$util.emptyArray,e.prototype.removedVideoSubscriptionMids=$util.emptyArray,e.create=function(t){return new e(t)},e.encode=function(e,t){if(t||(t=$Writer.create()),null!=e.addedOrUpdatedVideoSubscriptions&&e.addedOrUpdatedVideoSubscriptions.length)for(var i=0;i<e.addedOrUpdatedVideoSubscriptions.length;++i)$root.SdkVideoSubscriptionConfiguration.encode(e.addedOrUpdatedVideoSubscriptions[i],t.uint32(10).fork()).ldelim();if(null!=e.removedVideoSubscriptionMids&&e.removedVideoSubscriptionMids.length)for(i=0;i<e.removedVideoSubscriptionMids.length;++i)t.uint32(18).string(e.removedVideoSubscriptionMids[i]);return t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkRemoteVideoUpdateFrame;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.addedOrUpdatedVideoSubscriptions&&n.addedOrUpdatedVideoSubscriptions.length||(n.addedOrUpdatedVideoSubscriptions=[]),n.addedOrUpdatedVideoSubscriptions.push($root.SdkVideoSubscriptionConfiguration.decode(e,e.uint32()));break;case 2:n.removedVideoSubscriptionMids&&n.removedVideoSubscriptionMids.length||(n.removedVideoSubscriptionMids=[]),n.removedVideoSubscriptionMids.push(e.string());break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.addedOrUpdatedVideoSubscriptions&&e.hasOwnProperty("addedOrUpdatedVideoSubscriptions")){if(!Array.isArray(e.addedOrUpdatedVideoSubscriptions))return"addedOrUpdatedVideoSubscriptions: array expected";for(var t=0;t<e.addedOrUpdatedVideoSubscriptions.length;++t){var i=$root.SdkVideoSubscriptionConfiguration.verify(e.addedOrUpdatedVideoSubscriptions[t]);if(i)return"addedOrUpdatedVideoSubscriptions."+i}}if(null!=e.removedVideoSubscriptionMids&&e.hasOwnProperty("removedVideoSubscriptionMids")){if(!Array.isArray(e.removedVideoSubscriptionMids))return"removedVideoSubscriptionMids: array expected";for(t=0;t<e.removedVideoSubscriptionMids.length;++t)if(!$util.isString(e.removedVideoSubscriptionMids[t]))return"removedVideoSubscriptionMids: string[] expected"}return null},e.fromObject=function(e){if(e instanceof $root.SdkRemoteVideoUpdateFrame)return e;var t=new $root.SdkRemoteVideoUpdateFrame;if(e.addedOrUpdatedVideoSubscriptions){if(!Array.isArray(e.addedOrUpdatedVideoSubscriptions))throw TypeError(".SdkRemoteVideoUpdateFrame.addedOrUpdatedVideoSubscriptions: array expected");t.addedOrUpdatedVideoSubscriptions=[];for(var i=0;i<e.addedOrUpdatedVideoSubscriptions.length;++i){if("object"!=typeof e.addedOrUpdatedVideoSubscriptions[i])throw TypeError(".SdkRemoteVideoUpdateFrame.addedOrUpdatedVideoSubscriptions: object expected");t.addedOrUpdatedVideoSubscriptions[i]=$root.SdkVideoSubscriptionConfiguration.fromObject(e.addedOrUpdatedVideoSubscriptions[i])}}if(e.removedVideoSubscriptionMids){if(!Array.isArray(e.removedVideoSubscriptionMids))throw TypeError(".SdkRemoteVideoUpdateFrame.removedVideoSubscriptionMids: array expected");t.removedVideoSubscriptionMids=[];for(i=0;i<e.removedVideoSubscriptionMids.length;++i)t.removedVideoSubscriptionMids[i]=String(e.removedVideoSubscriptionMids[i])}return t},e.toObject=function(e,t){t||(t={});var i={};if((t.arrays||t.defaults)&&(i.addedOrUpdatedVideoSubscriptions=[],i.removedVideoSubscriptionMids=[]),e.addedOrUpdatedVideoSubscriptions&&e.addedOrUpdatedVideoSubscriptions.length){i.addedOrUpdatedVideoSubscriptions=[];for(var n=0;n<e.addedOrUpdatedVideoSubscriptions.length;++n)i.addedOrUpdatedVideoSubscriptions[n]=$root.SdkVideoSubscriptionConfiguration.toObject(e.addedOrUpdatedVideoSubscriptions[n],t)}if(e.removedVideoSubscriptionMids&&e.removedVideoSubscriptionMids.length){i.removedVideoSubscriptionMids=[];for(n=0;n<e.removedVideoSubscriptionMids.length;++n)i.removedVideoSubscriptionMids[n]=e.removedVideoSubscriptionMids[n]}return i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkVideoSubscriptionConfiguration=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.mid="",e.prototype.attendeeId="",e.prototype.streamId=0,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t.uint32(10).string(e.mid),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&t.uint32(18).string(e.attendeeId),null!=e.streamId&&e.hasOwnProperty("streamId")&&t.uint32(24).uint32(e.streamId),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkVideoSubscriptionConfiguration;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.mid=e.string();break;case 2:n.attendeeId=e.string();break;case 3:n.streamId=e.uint32();break;default:e.skipType(7&r)}}if(!n.hasOwnProperty("mid"))throw $util.ProtocolError("missing required 'mid'",{instance:n});return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":$util.isString(e.mid)?null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!$util.isString(e.attendeeId)?"attendeeId: string expected":null!=e.streamId&&e.hasOwnProperty("streamId")&&!$util.isInteger(e.streamId)?"streamId: integer expected":null:"mid: string expected"},e.fromObject=function(e){if(e instanceof $root.SdkVideoSubscriptionConfiguration)return e;var t=new $root.SdkVideoSubscriptionConfiguration;return null!=e.mid&&(t.mid=String(e.mid)),null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.streamId&&(t.streamId=e.streamId>>>0),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.mid="",i.attendeeId="",i.streamId=0),null!=e.mid&&e.hasOwnProperty("mid")&&(i.mid=e.mid),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(i.attendeeId=e.attendeeId),null!=e.streamId&&e.hasOwnProperty("streamId")&&(i.streamId=e.streamId),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkPrimaryMeetingJoinFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.credentials=null,e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.credentials&&e.hasOwnProperty("credentials")&&$root.SdkMeetingSessionCredentials.encode(e.credentials,t.uint32(10).fork()).ldelim(),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkPrimaryMeetingJoinFrame;e.pos<i;){var r=e.uint32();if(r>>>3==1)n.credentials=$root.SdkMeetingSessionCredentials.decode(e,e.uint32());else e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.credentials&&e.hasOwnProperty("credentials")){var t=$root.SdkMeetingSessionCredentials.verify(e.credentials);if(t)return"credentials."+t}return null},e.fromObject=function(e){if(e instanceof $root.SdkPrimaryMeetingJoinFrame)return e;var t=new $root.SdkPrimaryMeetingJoinFrame;if(null!=e.credentials){if("object"!=typeof e.credentials)throw TypeError(".SdkPrimaryMeetingJoinFrame.credentials: object expected");t.credentials=$root.SdkMeetingSessionCredentials.fromObject(e.credentials)}return t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.credentials=null),null!=e.credentials&&e.hasOwnProperty("credentials")&&(i.credentials=$root.SdkMeetingSessionCredentials.toObject(e.credentials,t)),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkPrimaryMeetingJoinAckFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkPrimaryMeetingJoinAckFrame;e.pos<i;){var r=e.uint32();e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null},e.fromObject=function(e){return e instanceof $root.SdkPrimaryMeetingJoinAckFrame?e:new $root.SdkPrimaryMeetingJoinAckFrame},e.toObject=function(){return{}},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkPrimaryMeetingLeaveFrame=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkPrimaryMeetingLeaveFrame;e.pos<i;){var r=e.uint32();e.skipType(7&r)}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null},e.fromObject=function(e){return e instanceof $root.SdkPrimaryMeetingLeaveFrame?e:new $root.SdkPrimaryMeetingLeaveFrame},e.toObject=function(){return{}},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}(),$root.SdkMeetingSessionCredentials=function(){function e(e){if(e)for(var t=Object.keys(e),i=0;i<t.length;++i)null!=e[t[i]]&&(this[t[i]]=e[t[i]])}return e.prototype.attendeeId="",e.prototype.externalUserId="",e.prototype.joinToken="",e.create=function(t){return new e(t)},e.encode=function(e,t){return t||(t=$Writer.create()),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&t.uint32(10).string(e.attendeeId),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&t.uint32(18).string(e.externalUserId),null!=e.joinToken&&e.hasOwnProperty("joinToken")&&t.uint32(26).string(e.joinToken),t},e.encodeDelimited=function(e,t){return this.encode(e,t).ldelim()},e.decode=function(e,t){e instanceof $Reader||(e=$Reader.create(e));for(var i=void 0===t?e.len:e.pos+t,n=new $root.SdkMeetingSessionCredentials;e.pos<i;){var r=e.uint32();switch(r>>>3){case 1:n.attendeeId=e.string();break;case 2:n.externalUserId=e.string();break;case 3:n.joinToken=e.string();break;default:e.skipType(7&r)}}return n},e.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&!$util.isString(e.attendeeId)?"attendeeId: string expected":null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&!$util.isString(e.externalUserId)?"externalUserId: string expected":null!=e.joinToken&&e.hasOwnProperty("joinToken")&&!$util.isString(e.joinToken)?"joinToken: string expected":null},e.fromObject=function(e){if(e instanceof $root.SdkMeetingSessionCredentials)return e;var t=new $root.SdkMeetingSessionCredentials;return null!=e.attendeeId&&(t.attendeeId=String(e.attendeeId)),null!=e.externalUserId&&(t.externalUserId=String(e.externalUserId)),null!=e.joinToken&&(t.joinToken=String(e.joinToken)),t},e.toObject=function(e,t){t||(t={});var i={};return t.defaults&&(i.attendeeId="",i.externalUserId="",i.joinToken=""),null!=e.attendeeId&&e.hasOwnProperty("attendeeId")&&(i.attendeeId=e.attendeeId),null!=e.externalUserId&&e.hasOwnProperty("externalUserId")&&(i.externalUserId=e.externalUserId),null!=e.joinToken&&e.hasOwnProperty("joinToken")&&(i.joinToken=e.joinToken),i},e.prototype.toJSON=function(){return this.constructor.toObject(this,$protobuf.util.toJSONOptions)},e}();var SignalingProtocol=$root;$util.Long=void 0,$protobuf.configure();var SignalingProtocol_js_1=SignalingProtocol;class MeetingSessionStatus{constructor(e){this._statusCode=e}statusCode(){return this._statusCode}isFailure(){switch(this._statusCode){case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:case MeetingSessionStatusCode_1.default.AudioInternalServerError:case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:case MeetingSessionStatusCode_1.default.AudioDisconnected:case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:case MeetingSessionStatusCode_1.default.SignalingBadRequest:case MeetingSessionStatusCode_1.default.SignalingInternalServerError:case MeetingSessionStatusCode_1.default.SignalingRequestFailed:case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:case MeetingSessionStatusCode_1.default.ConnectionHealthReconnect:case MeetingSessionStatusCode_1.default.RealtimeApiFailed:case MeetingSessionStatusCode_1.default.TaskFailed:case MeetingSessionStatusCode_1.default.NoAttendeePresent:return!0;default:return!1}}isTerminal(){switch(this._statusCode){case MeetingSessionStatusCode_1.default.Left:case MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice:case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:case MeetingSessionStatusCode_1.default.MeetingEnded:case MeetingSessionStatusCode_1.default.AudioDisconnected:case MeetingSessionStatusCode_1.default.TURNCredentialsForbidden:case MeetingSessionStatusCode_1.default.SignalingBadRequest:case MeetingSessionStatusCode_1.default.SignalingRequestFailed:case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:case MeetingSessionStatusCode_1.default.RealtimeApiFailed:case MeetingSessionStatusCode_1.default.AudioAttendeeRemoved:return!0;default:return!1}}isAudioConnectionFailure(){switch(this._statusCode){case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:case MeetingSessionStatusCode_1.default.AudioInternalServerError:case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:case MeetingSessionStatusCode_1.default.SignalingBadRequest:case MeetingSessionStatusCode_1.default.SignalingInternalServerError:case MeetingSessionStatusCode_1.default.SignalingRequestFailed:case MeetingSessionStatusCode_1.default.RealtimeApiFailed:case MeetingSessionStatusCode_1.default.NoAttendeePresent:return!0;default:return!1}}toString(){switch(this._statusCode){case MeetingSessionStatusCode_1.default.OK:return"Everything is OK so far.";case MeetingSessionStatusCode_1.default.Left:return"The attendee left the meeting.";case MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice:return"The attendee joined from another device.";case MeetingSessionStatusCode_1.default.AudioDisconnectAudio:return"The audio connection failed.";case MeetingSessionStatusCode_1.default.AudioAuthenticationRejected:return"The meeting rejected the attendee.";case MeetingSessionStatusCode_1.default.AudioCallAtCapacity:return"The attendee couldn't join because the meeting was at capacity.";case MeetingSessionStatusCode_1.default.AudioCallEnded:case MeetingSessionStatusCode_1.default.TURNMeetingEnded:case MeetingSessionStatusCode_1.default.MeetingEnded:return"The meeting ended.";case MeetingSessionStatusCode_1.default.AudioInternalServerError:case MeetingSessionStatusCode_1.default.AudioServiceUnavailable:case MeetingSessionStatusCode_1.default.AudioDisconnected:return"The audio connection failed.";case MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly:return"The attendee couldn't start the local video because the maximum video capacity was reached.";case MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity:return"The connection failed due to an internal server error.";case MeetingSessionStatusCode_1.default.SignalingBadRequest:case MeetingSessionStatusCode_1.default.SignalingInternalServerError:case MeetingSessionStatusCode_1.default.SignalingRequestFailed:return"The signaling connection failed.";case MeetingSessionStatusCode_1.default.StateMachineTransitionFailed:return"The state transition failed.";case MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround:return"Gathering ICE candidates timed out. In Chrome, this might indicate that the browser is in a bad state after reconnecting to VPN.";case MeetingSessionStatusCode_1.default.ConnectionHealthReconnect:return"The meeting was reconnected.";case MeetingSessionStatusCode_1.default.RealtimeApiFailed:return"The real-time API failed. This status code might indicate that the callback you passed to the real-time API threw an exception.";case MeetingSessionStatusCode_1.default.TaskFailed:return"The connection failed. See the error message for more details.";case MeetingSessionStatusCode_1.default.AudioDeviceSwitched:return"The attendee chose another audio device.";case MeetingSessionStatusCode_1.default.IncompatibleSDP:return"The connection failed due to incompatible SDP.";case MeetingSessionStatusCode_1.default.TURNCredentialsForbidden:return"The meeting ended, or the attendee was removed.";case MeetingSessionStatusCode_1.default.NoAttendeePresent:return"The attendee was not present.";case MeetingSessionStatusCode_1.default.AudioAttendeeRemoved:return"The meeting ended because attendee removed.";case MeetingSessionStatusCode_1.default.AudioVideoWasRemovedFromPrimaryMeeting:return"The Primary meeting credentials provided are no longer valid. chime::DeleteAttendee may have been called on them.";default:{const e=this._statusCode;throw new Error(`Unhandled case: ${e}`)}}}static fromSignalFrame(e){return e.error&&e.error.status?this.fromSignalingStatus(e.error.status):e.type===SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_STATUS?e.audioStatus?this.fromAudioStatus(e.audioStatus.audioStatus):new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed):e.type===SignalingProtocol_js_1.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE?new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioVideoWasRemovedFromPrimaryMeeting):new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK)}static fromAudioStatus(e){switch(e){case 200:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);case 301:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioJoinedFromAnotherDevice);case 302:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnectAudio);case 403:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioAuthenticationRejected);case 409:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioCallAtCapacity);case 410:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.MeetingEnded);case 411:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioAttendeeRemoved);case 500:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioInternalServerError);case 503:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioServiceUnavailable);default:return 2===Math.floor(e/100)?new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK):new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioDisconnected)}}static fromSignalingStatus(e){switch(e){case 206:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly);case 509:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.VideoCallAtSourceCapacity);case 403:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioAuthenticationRejected);case 409:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.AudioCallAtCapacity);default:switch(Math.floor(e/100)){case 2:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.OK);case 4:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingBadRequest);case 5:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingInternalServerError);default:return new MeetingSessionStatus(MeetingSessionStatusCode_1.default.SignalingRequestFailed)}}}}var _default$1P=MeetingSessionStatus,MeetingSessionStatus_1$1=Object.defineProperty({default:_default$1P},"__esModule",{value:!0});class MeetingSessionVideoAvailability{constructor(){this.remoteVideoAvailable=!1,this.canStartLocalVideo=!1}equal(e){return this.remoteVideoAvailable===e.remoteVideoAvailable&&this.canStartLocalVideo===e.canStartLocalVideo}clone(){const e=new MeetingSessionVideoAvailability;return e.remoteVideoAvailable=this.remoteVideoAvailable,e.canStartLocalVideo=this.canStartLocalVideo,e}}var _default$1O=MeetingSessionVideoAvailability,MeetingSessionVideoAvailability_1$1=Object.defineProperty({default:_default$1O},"__esModule",{value:!0});class DefaultPingPong{constructor(e,t,i){this.signalingClient=e,this.intervalMs=t,this.logger=i,this.observerQueue=new Set,this.consecutivePongsUnaccountedFor=0,this.intervalScheduler=new IntervalScheduler_1.default(this.intervalMs),this.pingId=0}addObserver(e){this.logger.info("adding a ping-pong observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing a ping-pong observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)AsyncScheduler_1.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}start(){this.stop(),this.signalingClient.registerObserver(this),this.signalingClient.ready()&&this.startPingInterval()}stop(){this.stopPingInterval(),this.signalingClient.removeObserver(this)}startPingInterval(){this.intervalScheduler.start((()=>{this.ping()})),this.ping()}stopPingInterval(){this.intervalScheduler.stop(),this.pingId=0,this.consecutivePongsUnaccountedFor=0}ping(){this.consecutivePongsUnaccountedFor>0&&(this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`),this.forEachObserver((e=>{Types_1.Maybe.of(e.didMissPongs).map((t=>t.bind(e)(this.consecutivePongsUnaccountedFor)))}))),this.consecutivePongsUnaccountedFor+=1,this.pingId=this.pingId+1&4294967295;const e=SignalingProtocol_js_1.SdkPingPongFrame.create();e.pingId=this.pingId,e.type=SignalingProtocol_js_1.SdkPingPongType.PING,this.pingTimestampLocalMs=this.signalingClient.pingPong(e),this.logger.debug((()=>`sent ping ${this.pingId}`))}pong(e){const t=SignalingProtocol_js_1.SdkPingPongFrame.create();t.pingId=e,t.type=SignalingProtocol_js_1.SdkPingPongType.PONG,this.signalingClient.pingPong(t)}handleSignalingClientEvent(e){switch(e.type){case SignalingClientEventType_1.default.WebSocketOpen:this.startPingInterval();break;case SignalingClientEventType_1.default.WebSocketFailed:case SignalingClientEventType_1.default.WebSocketError:this.logger.warn(`stopped pinging (${SignalingClientEventType_1.default[e.type]})`),this.stopPingInterval();break;case SignalingClientEventType_1.default.WebSocketClosing:case SignalingClientEventType_1.default.WebSocketClosed:this.logger.info(`stopped pinging (${SignalingClientEventType_1.default[e.type]})`),this.stopPingInterval();break;case SignalingClientEventType_1.default.ReceivedSignalFrame:if(e.message.type!==SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG)break;if(e.message.pingPong.type===SignalingProtocol_js_1.SdkPingPongType.PONG){const t=e.message.pingPong.pingId;if(t!==this.pingId){this.logger.warn(`unexpected ping id ${t} (expected ${this.pingId})`);break}let i;if(this.consecutivePongsUnaccountedFor=0,"number"!=typeof e.message.timestampMs)break;i=e.message.timestampMs,this.logger.debug((()=>`received pong ${t} with timestamp ${i}`));const n=e.timestampMs-this.pingTimestampLocalMs,r=Math.round(i-n/2),o=this.pingTimestampLocalMs-r;this.logger.info(`local clock skew estimate=${o}ms from ping-pong time=${n}ms`),this.forEachObserver((e=>{Types_1.Maybe.of(e.didReceivePong).map((i=>i.bind(e)(t,o,n)))}))}else this.pong(e.message.pingPong.pingId)}}}var _default$1N=DefaultPingPong,DefaultPingPong_1$1=Object.defineProperty({default:_default$1N},"__esModule",{value:!0});class Transcript{}var _default$1M=Transcript,Transcript_1$1=Object.defineProperty({default:_default$1M},"__esModule",{value:!0});class TranscriptionStatus{}var _default$1L=TranscriptionStatus,TranscriptionStatus_1$1=Object.defineProperty({default:_default$1L},"__esModule",{value:!0}),TranscriptionStatusType;!function(e){e.STARTED="started",e.INTERRUPTED="interrupted",e.RESUMED="resumed",e.STOPPED="stopped",e.FAILED="failed"}(TranscriptionStatusType||(TranscriptionStatusType={}));var _default$1K=TranscriptionStatusType,TranscriptionStatusType_1$1=Object.defineProperty({default:_default$1K},"__esModule",{value:!0}),TranscriptItemType;!function(e){e.PRONUNCIATION="pronunciation",e.PUNCTUATION="punctuation"}(TranscriptItemType||(TranscriptItemType={}));var _default$1J=TranscriptItemType,TranscriptItemType_1$1=Object.defineProperty({default:_default$1J},"__esModule",{value:!0}),Transcript_1=Transcript_1$1,TranscriptionStatus_1=TranscriptionStatus_1$1,TranscriptionStatusType_1=TranscriptionStatusType_1$1,TranscriptItemType_1=TranscriptItemType_1$1,TranscriptEvent=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.TranscriptEventConverter=void 0;const i={[SignalingProtocol_js_1.SdkTranscriptionStatus.Type.STARTED]:TranscriptionStatusType_1.default.STARTED,[SignalingProtocol_js_1.SdkTranscriptionStatus.Type.INTERRUPTED]:TranscriptionStatusType_1.default.INTERRUPTED,[SignalingProtocol_js_1.SdkTranscriptionStatus.Type.RESUMED]:TranscriptionStatusType_1.default.RESUMED,[SignalingProtocol_js_1.SdkTranscriptionStatus.Type.STOPPED]:TranscriptionStatusType_1.default.STOPPED,[SignalingProtocol_js_1.SdkTranscriptionStatus.Type.FAILED]:TranscriptionStatusType_1.default.FAILED};t.TranscriptEventConverter=class{static from(e){let t;try{t=SignalingProtocol_js_1.SdkTranscriptFrame.decode(e.data)}catch(e){throw new Error("Cannot decode transcript data message: "+e)}const n=[];for(const e of t.events)if(e.status){const t=i[e.status.type];if(!t)continue;const r=new TranscriptionStatus_1.default;r.type=t,r.eventTimeMs=e.status.eventTime,r.transcriptionRegion=e.status.transcriptionRegion,r.transcriptionConfiguration=e.status.transcriptionConfiguration,e.status.message&&(r.message=e.status.message),n.push(r)}else if(e.transcript){const t=new Transcript_1.default;t.results=[];for(const i of e.transcript.results){const e={channelId:i.channelId,isPartial:i.isPartial,resultId:i.resultId,startTimeMs:i.startTime,endTimeMs:i.endTime,alternatives:[]};if(i.languageCode&&(e.languageCode=i.languageCode),i.languageIdentification&&i.languageIdentification.length>0){e.languageIdentification=[];for(const t of i.languageIdentification){const i={languageCode:t.languageCode,score:t.score};e.languageIdentification.push(i)}}for(const t of i.alternatives){const i={items:[],transcript:t.transcript};for(const e of t.items){const t={content:e.content,attendee:{attendeeId:e.speakerAttendeeId,externalUserId:e.speakerExternalUserId},startTimeMs:e.startTime,endTimeMs:e.endTime,type:null};switch(e.vocabularyFilterMatch&&(t.vocabularyFilterMatch=e.vocabularyFilterMatch),e.hasOwnProperty("stable")&&(t.stable=e.stable),e.hasOwnProperty("confidence")&&(t.confidence=e.confidence),e.type){case SignalingProtocol_js_1.SdkTranscriptItem.Type.PRONUNCIATION:t.type=TranscriptItemType_1.default.PRONUNCIATION;break;case SignalingProtocol_js_1.SdkTranscriptItem.Type.PUNCTUATION:t.type=TranscriptItemType_1.default.PUNCTUATION}i.items.push(t)}for(const e of t.entities){i.entities||(i.entities=[]);const t={category:e.category,confidence:e.confidence,content:e.content,startTimeMs:e.startTime,endTimeMs:e.endTime};e.type&&(t.type=e.type),i.entities.push(t)}e.alternatives.push(i)}t.results.push(e)}n.push(t)}return n}}})),TranscriptEvent_1=TranscriptEvent,DefaultTranscriptionController_1$1=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.TRANSCRIPTION_DATA_MESSAGE_TOPIC=void 0,t.TRANSCRIPTION_DATA_MESSAGE_TOPIC="aws:chime:transcription";t.default=class{constructor(e){this.realtimeController=e,this.transcriptEventCallbacks=new Set}subscribeToTranscriptEvent(e){0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeSubscribeToReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC,(e=>{for(const t of TranscriptEvent_1.TranscriptEventConverter.from(e))for(const e of this.transcriptEventCallbacks)e(t)})),this.transcriptEventCallbacks.add(e)}unsubscribeFromTranscriptEvent(e){this.transcriptEventCallbacks.delete(e),0===this.transcriptEventCallbacks.size&&this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(t.TRANSCRIPTION_DATA_MESSAGE_TOPIC)}}}));class RealtimeState{constructor(){this.localAttendeeId=null,this.localExternalUserId=null,this.attendeeIdChangesCallbacks=[],this.canUnmute=!0,this.setCanUnmuteLocalAudioCallbacks=[],this.muted=!1,this.muteAndUnmuteLocalAudioCallbacks=[],this.audioInput=null,this.volumeIndicatorState={},this.attendeeIdToExternalUserId={},this.volumeIndicatorCallbacks={},this.localSignalStrengthChangeCallbacks=[],this.fatalErrorCallbacks=[],this.sendDataMessageCallbacks=[],this.receiveDataMessageCallbacks=new Map}}var _default$1I=RealtimeState,RealtimeState_1$1=Object.defineProperty({default:_default$1I},"__esModule",{value:!0});class RealtimeVolumeIndicator{constructor(){this.volume=null,this.muted=null,this.signalStrength=null}}var _default$1H=RealtimeVolumeIndicator,RealtimeVolumeIndicator_1$1=Object.defineProperty({default:_default$1H},"__esModule",{value:!0}),DefaultTranscriptionController_1=DefaultTranscriptionController_1$1,RealtimeState_1=RealtimeState_1$1,RealtimeVolumeIndicator_1=RealtimeVolumeIndicator_1$1;class DefaultRealtimeController{constructor(e){this.state=new RealtimeState_1.default,this._transcriptionController=e||new DefaultTranscriptionController_1.default(this)}realtimeSetLocalAttendeeId(e,t){this.state.localAttendeeId=e,this.state.localExternalUserId=t}realtimeSetAttendeeIdPresence(e,t,i,n,r){try{t&&(this.state.attendeeIdToExternalUserId[e]=i);for(const o of this.state.attendeeIdChangesCallbacks)o(e,t,i,n,r)}catch(e){this.onError(e)}}realtimeSubscribeToAttendeeIdPresence(e){try{this.state.attendeeIdChangesCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToAttendeeIdPresence(e){try{const t=this.state.attendeeIdChangesCallbacks.indexOf(e);-1!==t&&this.state.attendeeIdChangesCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSetLocalAudioInput(e){try{if(this.state.audioInput===e)return;this.setAudioInputEnabled(!1),this.state.audioInput=e,this.setAudioInputEnabled(!this.state.muted)}catch(e){this.onError(e)}}realtimeSetCanUnmuteLocalAudio(e){try{if(this.state.canUnmute===e)return;this.state.canUnmute=e;for(const t of this.state.setCanUnmuteLocalAudioCallbacks)t(e)}catch(e){this.onError(e)}}realtimeSubscribeToSetCanUnmuteLocalAudio(e){try{this.state.setCanUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){try{const t=this.state.setCanUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.setCanUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeCanUnmuteLocalAudio(){return this.state.canUnmute}realtimeMuteLocalAudio(){if(!this.state.muted)try{this.setAudioInputEnabled(!1),this.state.muted=!0,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId);for(const e of this.state.muteAndUnmuteLocalAudioCallbacks)e(!0)}catch(e){this.onError(e)}}realtimeUnmuteLocalAudio(){if(!this.state.muted)return!0;if(!this.state.canUnmute)return!1;try{this.setAudioInputEnabled(!0),this.state.muted=!1,this.realtimeUpdateVolumeIndicator(this.state.localAttendeeId,null,null,null,this.state.localExternalUserId);for(const e of this.state.muteAndUnmuteLocalAudioCallbacks)e(!1);return!0}catch(e){return this.onError(e),!1}}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){try{this.state.muteAndUnmuteLocalAudioCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){try{const t=this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(e);-1!==t&&this.state.muteAndUnmuteLocalAudioCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeIsLocalAudioMuted(){return this.state.muted}realtimeSubscribeToVolumeIndicator(e,t){try{this.state.volumeIndicatorCallbacks.hasOwnProperty(e)||(this.state.volumeIndicatorCallbacks[e]=[]),this.state.volumeIndicatorCallbacks[e].push(t),this.sendVolumeIndicatorChange(e,!0,!0,!0,this.state.attendeeIdToExternalUserId[e])}catch(e){this.onError(e)}}realtimeUnsubscribeFromVolumeIndicator(e,t){try{if(t){const i=this.state.volumeIndicatorCallbacks[e].indexOf(t);-1!==i&&this.state.volumeIndicatorCallbacks[e].splice(i,1)}else delete this.state.volumeIndicatorCallbacks[e]}catch(e){this.onError(e)}}realtimeUpdateVolumeIndicator(e,t,i,n,r){try{i=this.applyLocalMuteOverride(e,i);const o=this.getVolumeIndicatorState(e);let a=!1,s=!1,c=!1;null!==i&&o.muted!==i&&(o.muted=i,s=!0,o.muted&&0!==o.volume&&(o.volume=0,a=!0)),o.muted||null===t||(o.volume!==t&&(o.volume=t,a=!0),null===o.muted&&(o.muted=!1,s=!0)),null!==n&&o.signalStrength!==n&&(o.signalStrength=n,c=!0),this.sendVolumeIndicatorChange(e,a,s,c,r)}catch(e){this.onError(e)}}realtimeSubscribeToLocalSignalStrengthChange(e){try{if(this.state.localSignalStrengthChangeCallbacks.push(e),null===this.state.localAttendeeId)return;this.sendLocalSignalStrengthChange(this.state.localAttendeeId,!0)}catch(e){this.onError(e)}}realtimeUnsubscribeToLocalSignalStrengthChange(e){try{const t=this.state.localSignalStrengthChangeCallbacks.indexOf(e);-1!==t&&this.state.localSignalStrengthChangeCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSubscribeToSendDataMessage(e){try{this.state.sendDataMessageCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeFromSendDataMessage(e){try{const t=this.state.sendDataMessageCallbacks.indexOf(e);-1!==t&&this.state.sendDataMessageCallbacks.splice(t,1)}catch(e){this.onError(e)}}realtimeSendDataMessage(e,t,i){try{for(const n of this.state.sendDataMessageCallbacks)n(e,t,i)}catch(e){this.onError(e)}}realtimeSubscribeToReceiveDataMessage(e,t){try{this.state.receiveDataMessageCallbacks.has(e)?this.state.receiveDataMessageCallbacks.get(e).push(t):this.state.receiveDataMessageCallbacks.set(e,[t])}catch(e){this.onError(e)}}realtimeUnsubscribeFromReceiveDataMessage(e){try{this.state.receiveDataMessageCallbacks.delete(e)}catch(e){this.onError(e)}}realtimeReceiveDataMessage(e){try{if(this.state.receiveDataMessageCallbacks.has(e.topic))for(const t of this.state.receiveDataMessageCallbacks.get(e.topic))t(e)}catch(e){this.onError(e)}}realtimeSubscribeToFatalError(e){try{this.state.fatalErrorCallbacks.push(e)}catch(e){this.onError(e)}}realtimeUnsubscribeToFatalError(e){try{const t=this.state.fatalErrorCallbacks.indexOf(e);-1!==t&&this.state.fatalErrorCallbacks.splice(t,1)}catch(e){this.onError(e)}}get transcriptionController(){return this._transcriptionController}setAudioInputEnabled(e){if(this.state.audioInput)for(const t of this.state.audioInput.getTracks())t.enabled!==e&&(t.enabled=e)}applyLocalMuteOverride(e,t){const i=this.state.localAttendeeId,n=this.state.muted;return e!==i||null===this.state.audioInput?t:n}sendVolumeIndicatorChange(e,t,i,n,r){if(this.sendLocalSignalStrengthChange(e,n),!this.state.volumeIndicatorCallbacks.hasOwnProperty(e))return;const o=this.getVolumeIndicatorState(e),a=new RealtimeVolumeIndicator_1.default;if(t&&(a.volume=o.volume),i&&(a.muted=o.muted),n&&(a.signalStrength=o.signalStrength),!this.stateIsEmpty(a))for(const t of this.state.volumeIndicatorCallbacks[e])t(e,a.volume,a.muted,a.signalStrength,r)}sendLocalSignalStrengthChange(e,t){if(!t)return;if(e!==this.state.localAttendeeId)return;const i=this.getVolumeIndicatorState(e).signalStrength;if(null!==i)for(const e of this.state.localSignalStrengthChangeCallbacks)e(i)}getVolumeIndicatorState(e){return this.state.volumeIndicatorState.hasOwnProperty(e)||(this.state.volumeIndicatorState[e]=new RealtimeVolumeIndicator_1.default),this.state.volumeIndicatorState[e]}stateIsEmpty(e){return null===e.volume&&null===e.muted&&null===e.signalStrength}onError(e){try{for(const t of this.state.fatalErrorCallbacks)t(e)}catch(t){try{console.error(e),console.error(t)}catch(e){}}}}var _default$1G=DefaultRealtimeController,DefaultRealtimeController_1$1=Object.defineProperty({default:_default$1G},"__esModule",{value:!0}),SessionStateControllerAction_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerAction=void 0,function(e){e[e.Connect=0]="Connect",e[e.FinishConnecting=1]="FinishConnecting",e[e.Update=2]="Update",e[e.FinishUpdating=3]="FinishUpdating",e[e.Reconnect=4]="Reconnect",e[e.Disconnect=5]="Disconnect",e[e.Fail=6]="Fail",e[e.FinishDisconnecting=7]="FinishDisconnecting"}(i=t.SessionStateControllerAction||(t.SessionStateControllerAction={})),t.default=i})),SessionStateControllerDeferPriority_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerDeferPriority=void 0,function(e){e[e.DoNotDefer=0]="DoNotDefer",e[e.Low=1]="Low",e[e.Medium=2]="Medium",e[e.High=3]="High",e[e.VeryHigh=4]="VeryHigh"}(i=t.SessionStateControllerDeferPriority||(t.SessionStateControllerDeferPriority={})),t.default=i})),SessionStateControllerState_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerState=void 0,function(e){e[e.NotConnected=0]="NotConnected",e[e.Connecting=1]="Connecting",e[e.Connected=2]="Connected",e[e.Updating=3]="Updating",e[e.Disconnecting=4]="Disconnecting"}(i=t.SessionStateControllerState||(t.SessionStateControllerState={})),t.default=i})),SessionStateControllerTransitionResult_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SessionStateControllerTransitionResult=void 0,function(e){e[e.Transitioned=0]="Transitioned",e[e.NoTransitionAvailable=1]="NoTransitionAvailable",e[e.DeferredTransition=2]="DeferredTransition",e[e.TransitionFailed=3]="TransitionFailed"}(i=t.SessionStateControllerTransitionResult||(t.SessionStateControllerTransitionResult={})),t.default=i})),SessionStateControllerAction_1=SessionStateControllerAction_1$1,SessionStateControllerDeferPriority_1=SessionStateControllerDeferPriority_1$1,SessionStateControllerState_1=SessionStateControllerState_1$1,SessionStateControllerTransitionResult_1=SessionStateControllerTransitionResult_1$1;class DefaultSessionStateController{constructor(e){this.logger=e,this.currentState=SessionStateControllerState_1.SessionStateControllerState.NotConnected,this.deferredAction=null,this.deferredWork=null}perform(e,t){const i=this.currentState;if(i===SessionStateControllerState_1.SessionStateControllerState.NotConnected&&e===SessionStateControllerAction_1.SessionStateControllerAction.Connect)this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connecting&&e===SessionStateControllerAction_1.SessionStateControllerAction.Fail)this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connecting&&e===SessionStateControllerAction_1.SessionStateControllerAction.FinishConnecting)this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connected&&e===SessionStateControllerAction_1.SessionStateControllerAction.Disconnect)this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connected&&e===SessionStateControllerAction_1.SessionStateControllerAction.Reconnect)this.transition(SessionStateControllerState_1.SessionStateControllerState.Connecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connected&&e===SessionStateControllerAction_1.SessionStateControllerAction.Fail)this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Connected&&e===SessionStateControllerAction_1.SessionStateControllerAction.Update)this.transition(SessionStateControllerState_1.SessionStateControllerState.Updating,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Updating&&e===SessionStateControllerAction_1.SessionStateControllerAction.Fail)this.transition(SessionStateControllerState_1.SessionStateControllerState.Disconnecting,e);else if(i===SessionStateControllerState_1.SessionStateControllerState.Updating&&e===SessionStateControllerAction_1.SessionStateControllerAction.FinishUpdating)this.transition(SessionStateControllerState_1.SessionStateControllerState.Connected,e);else{if(i!==SessionStateControllerState_1.SessionStateControllerState.Disconnecting||e!==SessionStateControllerAction_1.SessionStateControllerAction.FinishDisconnecting)return this.canDefer(e)?(this.logger.info(`deferring transition from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[e]}`),this.deferAction(e,t),SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.DeferredTransition):(this.logger.warn(`no transition found from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with ${SessionStateControllerAction_1.SessionStateControllerAction[e]}`),SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.NoTransitionAvailable);this.transition(SessionStateControllerState_1.SessionStateControllerState.NotConnected,e)}try{t()}catch(t){return this.logger.error(`error during state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} with action ${SessionStateControllerAction_1.SessionStateControllerAction[e]}: ${t}`),this.logger.info(`rolling back transition to ${SessionStateControllerState_1.SessionStateControllerState[i]}`),this.currentState=i,SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.TransitionFailed}return this.performDeferredAction(),SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned}state(){return this.currentState}transition(e,t){this.logger.info(`transitioning from ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]} to ${SessionStateControllerState_1.SessionStateControllerState[e]} with ${SessionStateControllerAction_1.SessionStateControllerAction[t]}`),this.currentState=e}deferPriority(e){switch(e){case SessionStateControllerAction_1.SessionStateControllerAction.Disconnect:return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.VeryHigh;case SessionStateControllerAction_1.SessionStateControllerAction.Fail:return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.High;case SessionStateControllerAction_1.SessionStateControllerAction.Reconnect:return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Medium;case SessionStateControllerAction_1.SessionStateControllerAction.Update:return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.Low;default:return SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer}}deferAction(e,t){null!==this.deferredAction&&this.deferPriority(this.deferredAction)>this.deferPriority(e)||(this.deferredAction=e,this.deferredWork=t)}canDefer(e){return this.deferPriority(e)!==SessionStateControllerDeferPriority_1.SessionStateControllerDeferPriority.DoNotDefer&&(this.currentState===SessionStateControllerState_1.SessionStateControllerState.Connecting||this.currentState===SessionStateControllerState_1.SessionStateControllerState.Updating)}performDeferredAction(){if(!this.deferredAction)return;const e=this.deferredAction,t=this.deferredWork;this.deferredAction=null,this.deferredWork=null,this.logger.info(`performing deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[e]}`),this.perform(e,t)!==SessionStateControllerTransitionResult_1.SessionStateControllerTransitionResult.Transitioned&&this.logger.info(`unable to perform deferred action ${SessionStateControllerAction_1.SessionStateControllerAction[e]} in state ${SessionStateControllerState_1.SessionStateControllerState[this.currentState]}`)}}var _default$1F=DefaultSessionStateController,DefaultSessionStateController_1$1=Object.defineProperty({default:_default$1F},"__esModule",{value:!0}),WebSocketReadyState_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.WebSocketReadyState=void 0,function(e){e[e.None=0]="None",e[e.Connecting=1]="Connecting",e[e.Open=2]="Open",e[e.Closing=3]="Closing",e[e.Closed=4]="Closed"}(i=t.WebSocketReadyState||(t.WebSocketReadyState={})),t.default=i}));class SignalingClientEvent{constructor(e,t,i,n,r){this.client=e,this.type=t,this.message=i,this.closeCode=n,this.closeReason=r,this.timestampMs=Date.now()}isConnectionTerminated(){switch(this.type){case SignalingClientEventType_1.default.WebSocketFailed:case SignalingClientEventType_1.default.WebSocketError:case SignalingClientEventType_1.default.WebSocketClosing:case SignalingClientEventType_1.default.WebSocketClosed:return!0;default:return!1}}}var _default$1E=SignalingClientEvent,SignalingClientEvent_1$1=Object.defineProperty({default:_default$1E},"__esModule",{value:!0}),WebSocketReadyState_1=WebSocketReadyState_1$1,SignalingClientEvent_1=SignalingClientEvent_1$1;class DefaultSignalingClient{constructor(e,t){this.webSocket=e,this.logger=t,this.unloadHandler=null,this.closeEventHandler=e=>{this.deactivatePageUnloadHandler(),this.resetConnection(),this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketClosed,null,e.code,e.reason)),this.serviceConnectionRequestQueue()},this.observerQueue=new Set,this.connectionRequestQueue=[],this.resetConnection(),this.logger.debug((()=>"signaling client init")),this.audioSessionId=this.generateNewAudioSessionId()}registerObserver(e){this.logger.debug((()=>"registering signaling client observer")),this.observerQueue.add(e)}removeObserver(e){this.logger.debug((()=>"removing signaling client observer")),this.observerQueue.delete(e)}openConnection(e){this.logger.info("adding connection request to queue: "+e.url()),this.connectionRequestQueue.push(e),this.closeConnection()}pingPong(e){this.logger.debug((()=>"sending ping"));const t=SignalingProtocol_js_1.SdkSignalFrame.create();return t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.PING_PONG,t.pingPong=e,this.sendMessage(t),t.timestampMs}join(e){this.logger.info("sending join");const t=SignalingProtocol_js_1.SdkJoinFrame.create();t.protocolVersion=2,t.flags=SignalingProtocol_js_1.SdkJoinFlags.HAS_STREAM_UPDATE;const i=new DefaultBrowserBehavior_1.default;i.supportsSenderSideBandwidthEstimation()&&(t.flags|=SignalingProtocol_js_1.SdkJoinFlags.USE_SEND_SIDE_BWE),t.flags|=e.sendBitrates?SignalingProtocol_js_1.SdkJoinFlags.SEND_BITRATES:0;const n={platformName:i.name(),platformVersion:i.version(),clientSource:Versioning_1.default.sdkName,chimeSdkVersion:Versioning_1.default.sdkVersion};if(e.applicationMetadata){const{appName:t,appVersion:i}=e.applicationMetadata;n.appName=t,n.appVersion=i}t.clientDetails=SignalingProtocol_js_1.SdkClientDetails.create(n),t.audioSessionId=this.audioSessionId,t.wantsCompressedSdp=DefaultSignalingClient.CLIENT_SUPPORTS_COMPRESSION;const r=SignalingProtocol_js_1.SdkSignalFrame.create();r.type=SignalingProtocol_js_1.SdkSignalFrame.Type.JOIN,r.join=t,this.sendMessage(r)}subscribe(e){const t=SignalingProtocol_js_1.SdkSubscribeFrame.create();if(t.sendStreams=[],t.sdpOffer=e.sdpOffer,e.connectionTypeHasVideo&&(t.receiveStreamIds=e.receiveStreamIds),e.audioHost&&(t.audioCheckin=e.audioCheckin,t.audioHost=e.audioHost,t.audioMuted=e.audioMuted,!e.audioCheckin)){const i=SignalingProtocol_js_1.SdkStreamDescriptor.create();i.mediaType=SignalingProtocol_js_1.SdkStreamMediaType.AUDIO,i.trackLabel="AmazonChimeExpressAudio",i.attendeeId=e.attendeeId,i.streamId=1,i.groupId=1,i.framerate=15,i.maxBitrateKbps=600,i.avgBitrateBps=4e5,t.sendStreams.push(i)}if(t.compressedSdpOffer=e.compressedSdpOffer,t.duplex=SignalingProtocol_js_1.SdkStreamServiceType.RX,e.localVideoEnabled){t.duplex=SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;for(let i=0;i<e.videoStreamDescriptions.length;i++){const n=e.videoStreamDescriptions[i].clone();n.attendeeId=e.attendeeId,t.sendStreams.push(n.toStreamDescriptor())}}const i=SignalingProtocol_js_1.SdkSignalFrame.create();i.type=SignalingProtocol_js_1.SdkSignalFrame.Type.SUBSCRIBE,i.sub=t,this.sendMessage(i)}remoteVideoUpdate(e,t){const i=SignalingProtocol_js_1.SdkRemoteVideoUpdateFrame.create();i.addedOrUpdatedVideoSubscriptions=e.map(this.convertVideoSubscriptionConfiguration),i.removedVideoSubscriptionMids=t;const n=SignalingProtocol_js_1.SdkSignalFrame.create();n.type=SignalingProtocol_js_1.SdkSignalFrame.Type.REMOTE_VIDEO_UPDATE,n.remoteVideoUpdate=i,this.sendMessage(n)}convertVideoSubscriptionConfiguration(e){const t=new SignalingProtocol_js_1.SdkVideoSubscriptionConfiguration;return t.mid=e.mid,t.attendeeId=e.attendeeId,t.streamId=e.streamId,t}leave(){const e=SignalingProtocol_js_1.SdkSignalFrame.create();e.type=SignalingProtocol_js_1.SdkSignalFrame.Type.LEAVE,e.leave=SignalingProtocol_js_1.SdkLeaveFrame.create(),this.sendMessage(e),this.logger.debug((()=>"sent leave"))}sendClientMetrics(e){const t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.CLIENT_METRIC,t.clientMetric=e,this.sendMessage(t)}sendDataMessage(e){const t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.DATA_MESSAGE,t.dataMessage=e,this.sendMessage(t)}closeConnection(){var e,t;if(this.webSocket.readyState()!==WebSocketReadyState_1.default.None&&this.webSocket.readyState()!==WebSocketReadyState_1.default.Closed){this.isClosing=!0,this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketClosing,null));const i=new TimeoutScheduler_1.default(DefaultSignalingClient.CLOSE_EVENT_TIMEOUT_MS),n=e=>{var t,r;null===(r=(t=this.webSocket).removeEventListener)||void 0===r||r.call(t,"close",n),i.stop(),this.closeEventHandler(e)};null===(t=(e=this.webSocket).removeEventListener)||void 0===t||t.call(e,"close",this.closeEventHandler),this.webSocket.addEventListener("close",n),i.start((()=>{n(new CloseEvent("close",{wasClean:!1,code:1006,reason:"",bubbles:!1}))})),this.webSocket.close(),this.deactivatePageUnloadHandler()}else this.logger.info("no existing signaling client connection needs closing"),this.serviceConnectionRequestQueue()}ready(){return this.webSocket.readyState()===WebSocketReadyState_1.default.Open&&!this.isClosing&&this.wasOpened}mute(e){const t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_CONTROL;const i=SignalingProtocol_js_1.SdkAudioControlFrame.create();i.muted=e,t.audioControl=i,this.sendMessage(t)}pause(e){const t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.PAUSE,t.pause=SignalingProtocol_js_1.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resume(e){const t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.RESUME,t.pause=SignalingProtocol_js_1.SdkPauseResumeFrame.create(),t.pause.streamIds=e,this.sendMessage(t)}resetConnection(){this.webSocket.destroy(),this.wasOpened=!1}sendMessage(e){e.timestampMs=Date.now(),this.logger.debug((()=>`sending: ${JSON.stringify(e)}`));const t=this.prependWithFrameTypeRTC(SignalingProtocol_js_1.SdkSignalFrame.encode(e).finish());if(this.ready()){if(!this.webSocket.send(t))return void this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketSendMessageFailure,null));this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketSentMessage,null))}else this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketSkippedMessage,null))}receiveMessage(e){let t;try{t=SignalingProtocol_js_1.SdkSignalFrame.decode(e)}catch(t){return this.logger.info(`failed to decode: ${e}`),void this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.ProtocolDecodeFailure,null))}this.logger.debug((()=>`received: ${JSON.stringify(t)}`)),this.webSocket.readyState()===WebSocketReadyState_1.default.Open?this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.ReceivedSignalFrame,t)):this.logger.info(`skipping notification of message since WebSocket is not open: ${JSON.stringify(t)}`)}stripFrameTypeRTC(e){const t=e[0];return t!==DefaultSignalingClient.FRAME_TYPE_RTC&&2!==t&&this.logger.warn(`expected FrameTypeRTC for message but got ${t}`),e.slice(1)}prependWithFrameTypeRTC(e){const t=new Uint8Array(e.length+1);return t[0]=DefaultSignalingClient.FRAME_TYPE_RTC,t.set(e,1),t}serviceConnectionRequestQueue(){if(0===this.connectionRequestQueue.length)return void this.logger.info("no connection requests to service");const e=this.connectionRequestQueue.shift();this.logger.info(`opening connection to ${e.url()}`),this.isClosing=!1,this.webSocket.create(e.url(),e.protocols()),this.setUpEventListeners(),this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketConnecting,null))}sendEvent(e){switch(e.type){case SignalingClientEventType_1.default.WebSocketMessage:case SignalingClientEventType_1.default.ReceivedSignalFrame:case SignalingClientEventType_1.default.WebSocketSentMessage:this.logger.debug((()=>`notifying event: ${SignalingClientEventType_1.default[e.type]}`));break;case SignalingClientEventType_1.default.WebSocketSkippedMessage:this.logger.debug((()=>`notifying event: ${SignalingClientEventType_1.default[e.type]}, websocket state=${WebSocketReadyState_1.default[this.webSocket.readyState()]}`));break;default:this.logger.info(`notifying event: ${SignalingClientEventType_1.default[e.type]}`)}for(const t of this.observerQueue)t.handleSignalingClientEvent(e)}setUpEventListeners(){this.webSocket.addEventListener("open",(()=>{this.activatePageUnloadHandler(),this.wasOpened=!0,this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketOpen,null))})),this.webSocket.addEventListener("message",(e=>{this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketMessage,null)),this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(e.data)))})),this.webSocket.addEventListener("close",this.closeEventHandler),this.webSocket.addEventListener("error",(()=>{!this.isClosing||this.wasOpened?this.wasOpened?(this.logger.error("received error while connected"),this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketError,null))):(this.logger.error("failed to connect"),this.sendEvent(new SignalingClientEvent_1.default(this,SignalingClientEventType_1.default.WebSocketFailed,null))):this.logger.info("ignoring error closing signaling while connecting")}))}activatePageUnloadHandler(){this.unloadHandler=()=>{this.leave()};const e=commonjsGlobal;e.window&&e.window.addEventListener&&window.addEventListener("unload",this.unloadHandler)}deactivatePageUnloadHandler(){const e=commonjsGlobal;e.window&&e.window.addEventListener&&window.removeEventListener("unload",this.unloadHandler),this.unloadHandler=null}generateNewAudioSessionId(){const e=new Uint32Array(1);return window.crypto.getRandomValues(e)[0]}promoteToPrimaryMeeting(e){const t=SignalingProtocol_js_1.SdkMeetingSessionCredentials.create();t.attendeeId=e.attendeeId,t.externalUserId=e.externalUserId,t.joinToken=e.joinToken;const i=SignalingProtocol_js_1.SdkPrimaryMeetingJoinFrame.create();i.credentials=t;const n=SignalingProtocol_js_1.SdkSignalFrame.create();n.type=SignalingProtocol_js_1.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN,n.primaryMeetingJoin=i,this.sendMessage(n)}demoteFromPrimaryMeeting(){const e=SignalingProtocol_js_1.SdkPrimaryMeetingLeaveFrame.create(),t=SignalingProtocol_js_1.SdkSignalFrame.create();t.type=SignalingProtocol_js_1.SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE,t.primaryMeetingLeave=e,this.sendMessage(t)}}var _default$1D=DefaultSignalingClient;DefaultSignalingClient.FRAME_TYPE_RTC=5,DefaultSignalingClient.CLOSE_EVENT_TIMEOUT_MS=2e3,DefaultSignalingClient.CLIENT_SUPPORTS_COMPRESSION=!0;var DefaultSignalingClient_1$1=Object.defineProperty({default:_default$1D},"__esModule",{value:!0});class SignalingClientVideoSubscriptionConfiguration{}var _default$1C=SignalingClientVideoSubscriptionConfiguration,SignalingClientVideoSubscriptionConfiguration_1$1=Object.defineProperty({default:_default$1C},"__esModule",{value:!0});class GlobalMetricReport{constructor(){this.previousMetrics={},this.currentMetrics={}}}var _default$1B=GlobalMetricReport,GlobalMetricReport_1$1=Object.defineProperty({default:_default$1B},"__esModule",{value:!0}),ClientMetricReportDirection_1=ClientMetricReportDirection_1$1,ClientMetricReportMediaType_1=ClientMetricReportMediaType_1$1,GlobalMetricReport_1=GlobalMetricReport_1$1;class DefaultClientMetricReport{constructor(e,t,i){this.logger=e,this.videoStreamIndex=t,this.selfAttendeeId=i,this.globalMetricReport=new GlobalMetricReport_1.default,this.streamMetricReports={},this.currentTimestampMs=0,this.previousTimestampMs=0,this.currentSsrcs={},this.identityValue=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport;return Number(i.currentMetrics[e])},this.decoderLossPercent=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport,n=i.currentMetrics.googDecodingNormal-(i.previousMetrics.googDecodingNormal||0),r=i.currentMetrics.googDecodingCTN-(i.previousMetrics.googDecodingCTN||0);if(r<=0)return 0;const o=r-n;return o<=0?0:100*o/r},this.packetLossPercent=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport,n=i.currentMetrics[e]-(i.previousMetrics[e]||0),r=i.currentMetrics.packetsLost-(i.previousMetrics.packetsLost||0),o=n+r;return o<=0||r<=0?0:100*r/o},this.countPerSecond=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport;let n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);const r=i.currentMetrics[e]-(i.previousMetrics[e]||0);return r<=0?0:Math.trunc(r/n)},this.bitsPerSecond=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport;let n=(this.currentTimestampMs-this.previousTimestampMs)/1e3;if(n<=0)return 0;this.previousTimestampMs<=0&&(n=1);const r=8*(i.currentMetrics[e]-(i.previousMetrics[e]||0));return r<=0?0:Math.trunc(r/n)},this.secondsToMilliseconds=(e,t)=>{const i=t?this.streamMetricReports[t]:this.globalMetricReport;return Number(1e3*i.currentMetrics[e])},this.globalMetricMap={googActualEncBitrate:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ACTUAL_ENCODER_BITRATE},googAvailableSendBandwidth:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH},googRetransmitBitrate:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE},googAvailableReceiveBandwidth:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH},googTargetEncBitrate:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE},googBucketDelay:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_BUCKET_DELAY_MS},googRtt:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS},packetsDiscardedOnSend:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.SOCKET_DISCARDED_PPS},availableIncomingBitrate:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH},availableOutgoingBitrate:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH},currentRoundTripTime:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.STUN_RTT_MS}},this.audioUpstreamMetricMap={googJitterReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS},jitter:{transform:this.secondsToMilliseconds,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_JITTER_MS},packetsSent:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_PPS},bytesSent:{transform:this.bitsPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_BITRATE},googRtt:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_RTT_MS},packetsLost:{transform:this.packetLossPercent,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"}},this.audioDownstreamMetricMap={packetsReceived:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_PPS},packetsLost:{transform:this.packetLossPercent,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},googJitterReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS},jitter:{transform:this.secondsToMilliseconds,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_MS},googDecodingCTN:{transform:this.countPerSecond},googDecodingNormal:{transform:this.decoderLossPercent,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT,source:"googDecodingCTN"},bytesReceived:{transform:this.bitsPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_BITRATE},googCurrentDelayMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_CURRENT_DELAY_MS},googJitterBufferMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS}},this.videoUpstreamMetricMap={googRtt:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_RTT_MS},googEncodeUsagePercent:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_USAGE_PERCENT},googNacksReceived:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED},nackCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_RECEIVED},googPlisReceived:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED},pliCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_RECEIVED},googFirsReceived:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED},firCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_RECEIVED},googAvgEncodeMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_AVERAGE_ENCODE_MS},googFrameRateInput:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_INPUT_FPS},framesEncoded:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_FPS},googFrameRateSent:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS},framerateMean:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FPS},packetsSent:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_PPS},packetsLost:{transform:this.packetLossPercent,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,source:"packetsSent"},bytesSent:{transform:this.bitsPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_BITRATE},droppedFrames:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DROPPED_FPS},qpSum:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_SENT_QP_SUM},googFrameHeightSent:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_HEIGHT},googFrameWidthSent:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_WIDTH},frameHeight:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_HEIGHT},frameWidth:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_ENCODE_WIDTH}},this.videoDownstreamMetricMap={googTargetDelayMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_TARGET_DELAY_MS},googDecodeMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_MS},googFrameRateOutput:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_OUTPUT_FPS},packetsReceived:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_PPS},packetsLost:{transform:this.packetLossPercent,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,source:"packetsReceived"},googRenderDelayMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RENDER_DELAY_MS},googFrameRateReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS},framerateMean:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_FPS},framesDecoded:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_FPS},googNacksSent:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT},nackCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_NACKS_SENT},googFirsSent:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT},firCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_FIRS_SENT},googPlisSent:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT},pliCount:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_PLIS_SENT},bytesReceived:{transform:this.bitsPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_BITRATE},googCurrentDelayMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_CURRENT_DELAY_MS},googJitterBufferMs:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_JITTER_BUFFER_MS},discardedPackets:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DISCARDED_PPS},googJitterReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS},jitter:{transform:this.secondsToMilliseconds,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS},qpSum:{transform:this.countPerSecond,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_RECEIVED_QP_SUM},googFrameHeightReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_HEIGHT},googFrameWidthReceived:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_WIDTH},frameHeight:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_HEIGHT},frameWidth:{transform:this.identityValue,type:SignalingProtocol_js_1.SdkMetric.Type.VIDEO_DECODE_WIDTH}},this.observableVideoMetricSpec={videoUpstreamBitrate:{source:"bytesSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamPacketsSent:{source:"packetsSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamPacketLossPercent:{source:"packetsLost",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamFramesEncodedPerSecond:{source:"framesEncoded",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamGoogFrameHeight:{source:"googFrameHeightSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamGoogFrameWidth:{source:"googFrameWidthSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamFrameHeight:{source:"frameHeight",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamFrameWidth:{source:"frameWidth",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoDownstreamBitrate:{source:"bytesReceived",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamPacketLossPercent:{source:"packetsLost",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamPacketsReceived:{source:"packetsReceived",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamFramesDecodedPerSecond:{source:"framesDecoded",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamGoogFrameHeight:{source:"googFrameHeightReceived",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamGoogFrameWidth:{source:"googFrameWidthReceived",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamFrameHeight:{source:"frameHeight",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},videoDownstreamFrameWidth:{source:"frameWidth",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM}},this.observableMetricSpec={audioPacketsReceived:{source:"packetsReceived",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},audioPacketsReceivedFractionLoss:{source:"packetsLost",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},audioDecoderLoss:{source:"googDecodingNormal",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},audioPacketsSent:{source:"packetsSent",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.UPSTREAM},audioPacketLossPercent:{source:"packetsLost",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoUpstreamBitrate:{source:"bytesSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},videoPacketSentPerSecond:{source:"packetsSent",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},availableSendBandwidth:{source:"googAvailableSendBandwidth"},availableReceiveBandwidth:{source:"googAvailableReceiveBandwidth"},audioSpeakerDelayMs:{source:"googCurrentDelayMs",media:ClientMetricReportMediaType_1.default.AUDIO,dir:ClientMetricReportDirection_1.default.DOWNSTREAM},availableIncomingBitrate:{source:"availableIncomingBitrate"},availableOutgoingBitrate:{source:"availableOutgoingBitrate"},nackCountReceivedPerSecond:{source:"nackCount",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM},googNackCountReceivedPerSecond:{source:"googNacksReceived",media:ClientMetricReportMediaType_1.default.VIDEO,dir:ClientMetricReportDirection_1.default.UPSTREAM}}}getMetricMap(e,t){switch(e){case ClientMetricReportMediaType_1.default.AUDIO:switch(t){case ClientMetricReportDirection_1.default.UPSTREAM:return this.audioUpstreamMetricMap;case ClientMetricReportDirection_1.default.DOWNSTREAM:return this.audioDownstreamMetricMap}case ClientMetricReportMediaType_1.default.VIDEO:switch(t){case ClientMetricReportDirection_1.default.UPSTREAM:return this.videoUpstreamMetricMap;case ClientMetricReportDirection_1.default.DOWNSTREAM:return this.videoDownstreamMetricMap}default:return this.globalMetricMap}}getObservableMetricValue(e){const t=this.observableMetricSpec[e],i=this.getMetricMap(t.media,t.dir)[t.source],n=i.transform,r=i.source;if(!t.hasOwnProperty("media"))return n(r||t.source);for(const e in this.streamMetricReports){const i=this.streamMetricReports[e];if(t.source in i.currentMetrics&&i.direction===t.dir&&i.mediaType===t.media)return n(r||t.source,Number(e))}return 0}getObservableVideoMetricValue(e,t){const i=this.observableVideoMetricSpec[e],n=this.getMetricMap(i.media,i.dir)[i.source],r=n.transform,o=n.source,a=this.streamMetricReports[t];return a&&i.source in a.currentMetrics?r(o||i.source,t):r(o||i.source)}getObservableMetrics(){const e={};for(const t in this.observableMetricSpec)e[t]=this.getObservableMetricValue(t);return e}getObservableVideoMetrics(){const e={};if(!this.videoStreamIndex||!this.selfAttendeeId)return this.logger.error("Need to define VideoStreamIndex and selfAttendeeId if using getObservableVideoMetrics API"),e;for(const t in this.streamMetricReports)if(this.streamMetricReports[t].mediaType===ClientMetricReportMediaType_1.default.VIDEO){const i={};for(const e in this.observableVideoMetricSpec)if(this.observableVideoMetricSpec[e].dir===this.streamMetricReports[t].direction){const n=this.getObservableVideoMetricValue(e,Number(t));isNaN(n)||(i[e]=n)}const n=this.streamMetricReports[t].streamId,r=n?this.videoStreamIndex.attendeeIdForStreamId(n):this.selfAttendeeId;e[r]=e[r]?e[r]:{},e[r][t]=i}return e}clone(){const e=new DefaultClientMetricReport(this.logger,this.videoStreamIndex,this.selfAttendeeId);return e.globalMetricReport=this.globalMetricReport,e.streamMetricReports=this.streamMetricReports,e.currentTimestampMs=this.currentTimestampMs,e.previousTimestampMs=this.previousTimestampMs,e}print(){const e={globalMetricReport:this.globalMetricReport,streamMetricReports:this.streamMetricReports,currentTimestampMs:this.currentTimestampMs,previousTimestampMs:this.previousTimestampMs};this.logger.debug((()=>`Client Metric Report: ${JSON.stringify(e)}`))}removeDestroyedSsrcs(){for(const e in this.streamMetricReports)this.currentSsrcs[e]||delete this.streamMetricReports[e]}}var _default$1A=DefaultClientMetricReport,DefaultClientMetricReport_1$1=Object.defineProperty({default:_default$1A},"__esModule",{value:!0});class StreamMetricReport{constructor(){this.previousMetrics={},this.currentMetrics={}}}var _default$1z=StreamMetricReport,StreamMetricReport_1$1=Object.defineProperty({default:_default$1z},"__esModule",{value:!0}),MeetingSessionLifecycleEvent_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEvent=void 0,function(e){e[e.Connecting=0]="Connecting",e[e.Started=1]="Started",e[e.Stopped=2]="Stopped"}(i=t.MeetingSessionLifecycleEvent||(t.MeetingSessionLifecycleEvent={})),t.default=i})),MeetingSessionLifecycleEventCondition_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.MeetingSessionLifecycleEventCondition=void 0,function(e){e[e.ConnectingNew=0]="ConnectingNew",e[e.ReconnectingExisting=1]="ReconnectingExisting",e[e.StartedNew=2]="StartedNew",e[e.StartedExisting=3]="StartedExisting",e[e.StartedAfterReconnect=4]="StartedAfterReconnect",e[e.StoppedCleanly=5]="StoppedCleanly",e[e.StoppedWithFailure=6]="StoppedWithFailure"}(i=t.MeetingSessionLifecycleEventCondition||(t.MeetingSessionLifecycleEventCondition={})),t.default=i})),DefaultClientMetricReport_1=DefaultClientMetricReport_1$1,StreamMetricReport_1=StreamMetricReport_1$1,MeetingSessionLifecycleEvent_1=MeetingSessionLifecycleEvent_1$1,MeetingSessionLifecycleEventCondition_1=MeetingSessionLifecycleEventCondition_1$1,AudioLogEvent_1=AudioLogEvent_1$1;class DefaultStatsCollector{constructor(e,t,i,n=DefaultStatsCollector.INTERVAL_MS){this.audioVideoController=e,this.logger=t,this.browserBehavior=i,this.interval=n,this.intervalScheduler=null,this.metricsAddTime=(e,t,i)=>{},this.metricsLogEvent=(e,t)=>{}}toAttribute(e){return this.toSuffix(e).substring(1)}toSuffix(e){return e.toLowerCase()===e?`_${e}`:e.toUpperCase()===e?`_${e.toLowerCase()}`:e.replace(/([A-Z][a-z]+)/g,(function(e){return`_${e}`})).replace(/([A-Z][A-Z]+)/g,(function(e){return`_${e}`})).toLowerCase()}logLatency(e,t,i){const n=this.toSuffix(e);this.logEventTime("meeting"+n,t,i)}logStateTimeout(e,t){const i=this.toSuffix(e);this.logEvent("meeting_session_state_timeout",Object.assign(Object.assign({},t),{state:`state${i}`}))}logAudioEvent(e,t){const i="audio"+this.toSuffix(AudioLogEvent_1.default[e]);this.logEvent(i,t)}logVideoEvent(e,t){const i="video"+this.toSuffix(VideoLogEvent_1.default[e]);this.logEvent(i,t)}logEventTime(e,t,i={}){const n=Object.assign(Object.assign({},i),{call_id:this.audioVideoController.configuration.meetingId,client_type:DefaultStatsCollector.CLIENT_TYPE,metric_type:"latency"});this.logger.debug((()=>`[DefaultStatsCollector] ${e}: ${JSON.stringify(n)}`)),this.metricsAddTime(e,t,n)}logMeetingSessionStatus(e){const t=`${e.statusCode()}`;this.logEvent(t);const i={status:t,status_code:`${e.statusCode()}`};this.logEvent("meeting_session_status",i),e.isTerminal()&&this.logEvent("meeting_session_stopped",i),e.isAudioConnectionFailure()&&this.logEvent("meeting_session_audio_failed",i),e.isFailure()&&this.logEvent("meeting_session_failed",i)}logLifecycleEvent(e,t){const i={lifecycle_event:`lifecycle${this.toSuffix(MeetingSessionLifecycleEvent_1.default[e])}`,lifecycle_event_code:`${e}`,lifecycle_event_condition:`condition${this.toSuffix(MeetingSessionLifecycleEventCondition_1.default[t])}`,lifecycle_event_condition_code:`${t}`};this.logEvent("meeting_session_lifecycle",i)}logEvent(e,t={}){const i=Object.assign(Object.assign({},t),{call_id:this.audioVideoController.configuration.meetingId,client_type:DefaultStatsCollector.CLIENT_TYPE});this.logger.debug((()=>`[DefaultStatsCollector] ${e}: ${JSON.stringify(i)}`)),this.metricsLogEvent(e,i)}start(e,t,i){return!this.intervalScheduler&&(this.logger.info("Starting DefaultStatsCollector"),this.signalingClient=e,this.videoStreamIndex=t,this.clientMetricReport=i||new DefaultClientMetricReport_1.default(this.logger,this.videoStreamIndex,this.audioVideoController.configuration.credentials.attendeeId),this.intervalScheduler=new IntervalScheduler_1.default(this.interval),this.intervalScheduler.start((()=>{this.getStatsWrapper()})),!0)}stop(){this.logger.info("Stopping DefaultStatsCollector"),this.intervalScheduler&&this.intervalScheduler.stop(),this.intervalScheduler=null}updateMetricValues(e,t){const i=t?this.clientMetricReport.streamMetricReports[Number(e.ssrc)]:this.clientMetricReport.globalMetricReport;let n;n=t?this.clientMetricReport.getMetricMap(i.mediaType,i.direction):this.clientMetricReport.getMetricMap();for(const t in e)t in n&&(i.previousMetrics[t]=i.currentMetrics[t],i.currentMetrics[t]=e[t])}processRawMetricReports(e){this.clientMetricReport.currentSsrcs={};const t=Date.now();for(const t of e){const e=this.isStreamRawMetricReport(t.type);if(e){const e=this.clientMetricReport.streamMetricReports[Number(t.ssrc)];if(e)e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc));else{const e=new StreamMetricReport_1.default;e.mediaType=this.getMediaType(t),e.direction=this.getDirectionType(t),this.videoStreamIndex.allStreams().empty()||(e.streamId=this.videoStreamIndex.streamIdForSSRC(Number(t.ssrc))),this.clientMetricReport.streamMetricReports[Number(t.ssrc)]=e}this.clientMetricReport.currentSsrcs[Number(t.ssrc)]=1}this.updateMetricValues(t,e)}this.clientMetricReport.removeDestroyedSsrcs(),this.clientMetricReport.previousTimestampMs=this.clientMetricReport.currentTimestampMs,this.clientMetricReport.currentTimestampMs=t,this.clientMetricReport.print()}addMetricFrame(e,t,i,n){const r=i.type,o=i.transform,a=i.source,s=t.streamMetricFrames.length,c=t.streamMetricFrames[s-1];if(r){const i=SignalingProtocol_js_1.SdkMetric.create();i.type=r,i.value=o(a||e,n),n?c.metrics.push(i):t.globalMetrics.push(i)}}addGlobalMetricsToProtobuf(e){const t=this.clientMetricReport.getMetricMap();for(const i in this.clientMetricReport.globalMetricReport.currentMetrics)this.addMetricFrame(i,e,t[i])}addStreamMetricsToProtobuf(e){for(const t in this.clientMetricReport.streamMetricReports){const i=this.clientMetricReport.streamMetricReports[t],n=SignalingProtocol_js_1.SdkStreamMetricFrame.create();n.streamId=i.streamId,n.metrics=[],e.streamMetricFrames.push(n);const r=this.clientMetricReport.getMetricMap(i.mediaType,i.direction);for(const n in i.currentMetrics)this.addMetricFrame(n,e,r[n],Number(t))}}makeClientMetricProtobuf(){const e=SignalingProtocol_js_1.SdkClientMetricFrame.create();return e.globalMetrics=[],e.streamMetricFrames=[],this.addGlobalMetricsToProtobuf(e),this.addStreamMetricsToProtobuf(e),e}sendClientMetricProtobuf(e){this.signalingClient.sendClientMetrics(e)}isStreamRawMetricReport(e){return"ssrc"===e||"inbound-rtp"===e||"outbound-rtp"===e}getMediaType(e){return"audio"===e.mediaType?ClientMetricReportMediaType_1.default.AUDIO:ClientMetricReportMediaType_1.default.VIDEO}getDirectionType(e){return-1!==e.id.toLowerCase().indexOf("send")||-1!==e.id.toLowerCase().indexOf("outbound")||"outbound-rtp"===e.type?ClientMetricReportDirection_1.default.UPSTREAM:ClientMetricReportDirection_1.default.DOWNSTREAM}isValidChromeRawMetric(e){return this.browserBehavior.hasChromiumWebRTC()&&("ssrc"===e.type||"VideoBwe"===e.type||"googCandidatePair"===e.type&&"true"===e.googWritable&&"true"===e.googReadable)}isValidStandardRawMetric(e){const t="inbound-rtp"===e.type||"outbound-rtp"===e.type||"candidate-pair"===e.type&&"succeeded"===e.state;return this.browserBehavior.hasFirefoxWebRTC()?-1===this.compareMajorVersion(DefaultStatsCollector.FIREFOX_UPDATED_GET_STATS_VERSION)?t:t&&!1===e.isRemote:t}isValidSsrc(e){let t=!0;return this.isStreamRawMetricReport(e.type)&&this.getDirectionType(e)===ClientMetricReportDirection_1.default.DOWNSTREAM&&this.getMediaType(e)===ClientMetricReportMediaType_1.default.VIDEO&&(t=this.videoStreamIndex.streamIdForSSRC(Number(e.ssrc))>0),t}isValidRawMetricReport(e){return(this.isValidChromeRawMetric(e)||this.isValidStandardRawMetric(e))&&this.isValidSsrc(e)}filterRawMetricReports(e){const t=[];for(const i of e)this.isValidRawMetricReport(i)&&t.push(i);return t}handleRawMetricReports(e){const t=this.filterRawMetricReports(e);this.logger.debug((()=>`Filtered raw metrics : ${JSON.stringify(t)}`)),this.processRawMetricReports(t);const i=this.makeClientMetricProtobuf();this.sendClientMetricProtobuf(i),this.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.metricsDidReceive).map((t=>t.bind(e)(this.clientMetricReport.clone())))}))}getStatsWrapper(){if(!this.audioVideoController.rtcPeerConnection)return;const e=[];this.browserBehavior.requiresPromiseBasedWebRTCGetStats()?this.audioVideoController.rtcPeerConnection.getStats().then((t=>{t.forEach((t=>{e.push(t)})),this.handleRawMetricReports(e)})).catch((e=>{this.logger.error(e.message)})):this.audioVideoController.rtcPeerConnection.getStats((t=>{t.result().forEach((t=>{const i={};t.names().forEach((e=>{i[e]=t.stat(e)})),i.id=t.id,i.type=t.type,i.timestamp=t.timestamp,e.push(i)})),this.handleRawMetricReports(e)}),(e=>{this.logger.error(e.message)}))}compareMajorVersion(e){const t=parseInt(this.browserBehavior.version().split(".")[0]),i=parseInt(e.split(".")[0]);return i===t?0:i>t?1:-1}}var _default$1y=DefaultStatsCollector;DefaultStatsCollector.INTERVAL_MS=1e3,DefaultStatsCollector.FIREFOX_UPDATED_GET_STATS_VERSION="66.0.0",DefaultStatsCollector.CLIENT_TYPE="amazon-chime-sdk-js";var DefaultStatsCollector_1$1=Object.defineProperty({default:_default$1y},"__esModule",{value:!0}),__awaiter$E=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class FinishGatheringICECandidatesTask extends BaseTask_1.default{constructor(e,t=FinishGatheringICECandidatesTask.CHROME_VPN_TIMEOUT_MS){super(e.logger),this.context=e,this.chromeVpnTimeoutMs=t,this.taskName="FinishGatheringICECandidatesTask"}removeEventListener(){this.context.peer&&(this.context.peer.removeEventListener("icecandidate",this.context.iceCandidateHandler),this.context.turnCredentials||this.context.peer.removeEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler))}cancel(){let e;if(this.context.browserBehavior.requiresIceCandidateGatheringTimeoutWorkaround()&&this.chromeVpnTimeoutMs<this.context.meetingSessionConfiguration.connectionTimeoutMs){Date.now()-this.startTimestampMs>this.chromeVpnTimeoutMs&&(e=new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.ICEGatheringTimeoutWorkaround}`))}this.cancelPromise&&(e=e||new Error(`canceling ${this.name()}`),this.cancelPromise(e),delete this.cancelPromise)}run(){return __awaiter$E(this,void 0,void 0,(function*(){if(this.context.peer||this.logAndThrow("session does not have peer connection; bypass ice gathering"),this.context.browserBehavior.requiresCheckForSdpConnectionAttributes()){if(new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidatesForAllMLines())return void this.context.logger.info(`ice gathering already complete; bypass gathering, current local description ${this.context.peer.localDescription.sdp}`)}else this.context.logger.info(`iOS device does not require checking for connection attributes in SDP, current local description ${this.context.peer.localDescription.sdp}`);if(!this.context.browserBehavior.hasFirefoxWebRTC()&&"complete"!==this.context.peer.iceGatheringState||!new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidates())try{yield new Promise(((e,t)=>{this.cancelPromise=e=>{this.removeEventListener(),t(e)},this.context.turnCredentials||(this.context.iceGatheringStateEventHandler=()=>{if("complete"===this.context.peer.iceGatheringState)return this.removeEventListener(),e(),void delete this.cancelPromise},this.context.peer.addEventListener("icegatheringstatechange",this.context.iceGatheringStateEventHandler)),this.context.iceCandidateHandler=i=>{if(this.context.logger.info(`ice candidate: ${i.candidate?i.candidate.candidate:"(null)"} state: ${this.context.peer.iceGatheringState}`),i.candidate&&(DefaultSDP_1.default.isRTPCandidate(i.candidate.candidate)&&this.context.iceCandidates.push(i.candidate),this.context.turnCredentials&&this.context.iceCandidates.length>=1))return this.context.logger.info("gathered at least one relay candidate"),this.removeEventListener(),e(),void delete this.cancelPromise;"complete"===this.context.peer.iceGatheringState&&(this.context.logger.info("done gathering ice candidates"),this.removeEventListener(),new DefaultSDP_1.default(this.context.peer.localDescription.sdp).hasCandidates()&&0!==this.context.iceCandidates.length?(e(),delete this.cancelPromise):(t(new Error("no ice candidates were gathered")),delete this.cancelPromise))},this.context.peer.addEventListener("icecandidate",this.context.iceCandidateHandler),this.startTimestampMs=Date.now()}))}catch(e){throw e}finally{this.startTimestampMs&&(this.context.iceGatheringDurationMs=Math.round(Date.now()-this.startTimestampMs))}else this.context.logger.info("ice gathering state is complete and candidates are in SDP; bypass gathering")}))}}var _default$1x=FinishGatheringICECandidatesTask;FinishGatheringICECandidatesTask.CHROME_VPN_TIMEOUT_MS=5e3;var FinishGatheringICECandidatesTask_1$1=Object.defineProperty({default:_default$1x},"__esModule",{value:!0});class MeetingSessionTURNCredentials{constructor(){this.username=null,this.password=null,this.ttl=null,this.uris=null}}var _default$1w=MeetingSessionTURNCredentials,MeetingSessionTURNCredentials_1$1=Object.defineProperty({default:_default$1w},"__esModule",{value:!0});class SignalingClientJoin{constructor(e,t,i){this.maxVideos=e,this.sendBitrates=t,this.applicationMetadata=i}}var _default$1v=SignalingClientJoin,SignalingClientJoin_1$1=Object.defineProperty({default:_default$1v},"__esModule",{value:!0}),MeetingSessionStatus_1=MeetingSessionStatus_1$1,MeetingSessionTURNCredentials_1=MeetingSessionTURNCredentials_1$1,SignalingClientJoin_1=SignalingClientJoin_1$1,__awaiter$D=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class JoinAndReceiveIndexTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="JoinAndReceiveIndexTask",this.taskCanceler=null,this.maxVideos=25}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$D(this,void 0,void 0,(function*(){const e=yield new Promise(((e,t)=>{const i=this.context;i.turnCredentials=null;const n=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("JoinAndReceiveIndexTask got canceled while waiting for SdkIndexFrame"))}handleSignalingClientEvent(t){if(t.type===SignalingClientEventType_1.default.WebSocketClosed){let e=`The signaling connection was closed with code ${t.closeCode} and reason: ${t.closeReason}`;i.logger.warn(e);let n=MeetingSessionStatusCode_1.default.SignalingBadRequest;return 4410===t.closeCode?(e="The meeting already ended.",i.logger.warn(e),n=MeetingSessionStatusCode_1.default.MeetingEnded):t.closeCode>=4500&&t.closeCode<4600&&(n=MeetingSessionStatusCode_1.default.SignalingInternalServerError),void i.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(n),new Error(e))}if(t.type!==SignalingClientEventType_1.default.ReceivedSignalFrame)return;if(t.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.JOIN_ACK){const e=t.message.joinack;return e&&e.videoSubscriptionLimit&&(i.videoSubscriptionLimit=e.videoSubscriptionLimit),i.serverSupportsCompression=null==e?void 0:e.wantsCompressedSdp,void(e&&e.turnCredentials?(i.turnCredentials=new MeetingSessionTURNCredentials_1.default,i.turnCredentials.username=e.turnCredentials.username,i.turnCredentials.password=e.turnCredentials.password,i.turnCredentials.ttl=e.turnCredentials.ttl,i.turnCredentials.uris=e.turnCredentials.uris.map((e=>i.meetingSessionConfiguration.urls.urlRewriter(e))).filter((e=>!!e))):i.logger.error("missing TURN credentials in JoinAckFrame"))}if(t.message.type!==SignalingProtocol_js_1.SdkSignalFrame.Type.INDEX)return;this.signalingClient.removeObserver(this);const n=t.message.index;e(n)}}(this.context.signalingClient);this.context.signalingClient.registerObserver(n),this.taskCanceler=n,this.context.previousSdpAnswerAsString="",this.context.previousSdpOffer=null,this.context.serverSupportsCompression=!1,this.context.signalingClient.join(new SignalingClientJoin_1.default(this.maxVideos,!0,this.context.meetingSessionConfiguration.applicationMetadata))}));this.context.logger.info(`received first index ${JSON.stringify(e)}`),this.context.indexFrame=e}))}}var _default$1u=JoinAndReceiveIndexTask,JoinAndReceiveIndexTask_1$1=Object.defineProperty({default:_default$1u},"__esModule",{value:!0}),__awaiter$C=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class LeaveAndReceiveLeaveAckTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="LeaveAndReceiveLeaveAckTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$C(this,void 0,void 0,(function*(){this.context.signalingClient.ready()&&(this.context.signalingClient.leave(),this.context.logger.info("sent leave"),yield this.receiveLeaveAck())}))}receiveLeaveAck(){return new Promise(((e,t)=>{const i=new class{constructor(e,t){this.signalingClient=e,this.logger=t}cancel(){this.signalingClient.removeObserver(this),t(new Error("LeaveAndReceiveLeaveAckTask got canceled while waiting for IndexFrame"))}handleSignalingClientEvent(t){if(t.isConnectionTerminated())return this.signalingClient.removeObserver(this),this.logger.info("LeaveAndReceiveLeaveAckTask connection terminated"),void e();t.type===SignalingClientEventType_1.default.ReceivedSignalFrame&&t.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.LEAVE_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("got leave ack"),e())}}(this.context.signalingClient,this.context.logger);this.taskCanceler=i,this.context.signalingClient.registerObserver(i)}))}}var _default$1t=LeaveAndReceiveLeaveAckTask,LeaveAndReceiveLeaveAckTask_1$1=Object.defineProperty({default:_default$1t},"__esModule",{value:!0}),__awaiter$B=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ListenForVolumeIndicatorsTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ListenForVolumeIndicatorsTask",this.realtimeMuteAndUnmuteHandler=e=>{this.context.signalingClient.mute(e)}}run(){return __awaiter$B(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler)}))}removeObserver(){this.context.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(this.realtimeMuteAndUnmuteHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===SignalingClientEventType_1.default.ReceivedSignalFrame)if(e.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_STREAM_ID_INFO){const t=e.message.audioStreamIdInfo;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioStreamIdInfo(t)}else if(e.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.AUDIO_METADATA){const t=e.message.audioMetadata;this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioMetadata(t)}}}var _default$1s=ListenForVolumeIndicatorsTask,ListenForVolumeIndicatorsTask_1$1=Object.defineProperty({default:_default$1s},"__esModule",{value:!0}),BaseConnectionHealthPolicy_1=BaseConnectionHealthPolicy_1$1;class ReconnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default{constructor(e,t,i){super(t,i),this.logger=e,this.audioDelayPointsOverMaximum=0,ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD=t.connectionUnhealthyThreshold,ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS=t.connectionWaitTimeMs,ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD=t.missedPongsUpperThreshold,ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS=t.maximumAudioDelayMs,ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS=t.maximumAudioDelayDataPoints}health(){if(this.currentData.isConnectionStartRecent(ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS))return 1;const e=this.currentData.consecutiveStatsWithNoPackets>=ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD,t=this.currentData.consecutiveMissedPongs>=ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD;this.currentData.audioSpeakerDelayMs>ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS?this.audioDelayPointsOverMaximum+=1:this.audioDelayPointsOverMaximum=0;const i=this.audioDelayPointsOverMaximum>ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS;i&&(this.audioDelayPointsOverMaximum=0);return e||t||i?(this.logger.warn(`reconnection recommended due to: no packets received: ${e}, missed pongs: ${t}, bad audio delay: ${i}`),0):1}}var _default$1r=ReconnectionHealthPolicy,ReconnectionHealthPolicy_1$1=Object.defineProperty({default:_default$1r},"__esModule",{value:!0});class UnusableAudioWarningConnectionHealthPolicy extends BaseConnectionHealthPolicy_1.default{constructor(e,t){super(e,t),this.coolDownTimeMs=e.cooldownTimeMs,this.pastSamplesToConsider=e.pastSamplesToConsider,this.fractionalLoss=e.fractionalLoss,this.packetsExpected=e.packetsExpected,this.maximumTimesToWarn=e.maximumTimesToWarn,this.lastWarnTimestampMs=0,this.warnCount=0}calculateFractionalLoss(){if(this.currentData.packetsReceivedInLastMinute.length<this.pastSamplesToConsider)return 0;const e=this.pastSamplesToConsider,t=e*this.packetsExpected;let i=0;for(let t=0;t<e;t++)i+=this.currentData.packetsReceivedInLastMinute[t];return Math.min(Math.max(1-i/t,0),1)}health(){if(Date.now()-this.lastWarnTimestampMs<this.coolDownTimeMs)return this.currentHealth;return this.calculateFractionalLoss()>=this.fractionalLoss?0!==this.currentHealth&&(this.lastWarnTimestampMs=Date.now(),this.warnCount++,this.warnCount>this.maximumTimesToWarn)?1:0:1}}var _default$1q=UnusableAudioWarningConnectionHealthPolicy,UnusableAudioWarningConnectionHealthPolicy_1$1=Object.defineProperty({default:_default$1q},"__esModule",{value:!0}),ClientVideoStreamReceivingReport_1=ClientVideoStreamReceivingReport_1$1,ReconnectionHealthPolicy_1=ReconnectionHealthPolicy_1$1,UnusableAudioWarningConnectionHealthPolicy_1=UnusableAudioWarningConnectionHealthPolicy_1$1,__awaiter$A=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class MonitorTask extends BaseTask_1.default{constructor(e,t,i){super(e.logger),this.context=e,this.initialConnectionHealthData=i,this.taskName="MonitorTask",this.prevSignalStrength=1,this.currentVideoDownlinkBandwidthEstimationKbps=1e4,this.currentAvailableStreamAvgBitrates=null,this.hasSignalingError=!1,this.presenceHandlerCalled=!1,this.isResubscribeCheckPaused=!1,this.pendingMetricsReport=void 0,this.checkAndSendWeakSignalEvent=e=>{const t=e<1,i=this.prevSignalStrength<1,n=t?i?null:AudioLogEvent_1.default.RedmicStartLoss:i?AudioLogEvent_1.default.RedmicEndLoss:null;n&&this.context.statsCollector.logAudioEvent(n),this.prevSignalStrength=e},this.realtimeFatalErrorCallback=e=>{this.logger.error(`realtime error: ${e}: ${e.stack}`),this.context.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.RealtimeApiFailed),e)},this.realtimeAttendeeIdPresenceHandler=(e,t)=>{const i=this.context.meetingSessionConfiguration.credentials.attendeeId;this.logger.info(`attendeePresenceReceived: ${i}`),i===e&&t&&!this.presenceHandlerCalled&&(this.presenceHandlerCalled=!0,this.context.attendeePresenceDurationMs=Date.now()-this.context.startAudioVideoTimestamp,this.context.eventController&&this.context.eventController.publishEvent("attendeePresenceReceived",{attendeePresenceDurationMs:this.context.attendeePresenceDurationMs}))},this.generateAudioVideoEventAttributes=()=>{const{signalingOpenDurationMs:e,poorConnectionCount:t,startTimeMs:i,iceGatheringDurationMs:n,attendeePresenceDurationMs:r,meetingStartDurationMs:o}=this.context;return{maxVideoTileCount:this.context.maxVideoTileCount,meetingDurationMs:null===i?0:Math.round(Date.now()-i),signalingOpenDurationMs:e,iceGatheringDurationMs:n,attendeePresenceDurationMs:r,poorConnectionCount:t,meetingStartDurationMs:o}},this.reconnectionHealthPolicy=new ReconnectionHealthPolicy_1.default(e.logger,Object.assign({},t),this.initialConnectionHealthData.clone()),this.unusableAudioWarningHealthPolicy=new UnusableAudioWarningConnectionHealthPolicy_1.default(Object.assign({},t),this.initialConnectionHealthData.clone())}removeObserver(){this.context.audioVideoController.removeObserver(this),this.context.realtimeController.realtimeUnsubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.signalingClient.removeObserver(this)}run(){return __awaiter$A(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.audioVideoController.addObserver(this),this.context.realtimeController.realtimeSubscribeToFatalError(this.realtimeFatalErrorCallback),this.context.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(this.checkAndSendWeakSignalEvent),this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(this.realtimeAttendeeIdPresenceHandler),this.context.connectionMonitor.start(),this.context.statsCollector.start(this.context.signalingClient,this.context.videoStreamIndex),this.context.signalingClient.registerObserver(this)}))}pauseResubscribeCheck(){this.isResubscribeCheckPaused=!0}resumeResubscribeCheck(){this.isResubscribeCheckPaused&&(this.isResubscribeCheckPaused=!1,this.pendingMetricsReport&&(this.context.logger.info("Resuming resubscribe check with pending metrics report"),this.checkResubscribe(this.pendingMetricsReport)&&this.context.audioVideoController.update({needsRenegotiation:!1})))}videoTileDidUpdate(e){this.context.maxVideoTileCount=Math.max(this.context.maxVideoTileCount,this.context.videoTileController.getAllVideoTiles().length)}videoSendHealthDidChange(e,t){if(0===this.context.videoInputAttachedTimestampMs||!this.context.videoTileController.hasStartedLocalVideoTile()||!this.context.lastKnownVideoAvailability.canStartLocalVideo)return;const i=null!==this.context.activeVideoInput?this.context.activeVideoInput.getTracks():null;if(!i||!i[0])return;const n=Date.now()-this.context.videoInputAttachedTimestampMs;t>0||e>0?(this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.SendingSuccess,this.context.videoDeviceInformation),this.context.statsCollector.logLatency("video_start_sending",n,this.context.videoDeviceInformation),this.context.videoInputAttachedTimestampMs=0):n>MonitorTask.DEFAULT_TIMEOUT_FOR_START_SENDING_VIDEO_MS&&(this.context.statsCollector.logVideoEvent(VideoLogEvent_1.default.SendingFailed,this.context.videoDeviceInformation),this.context.videoInputAttachedTimestampMs=0)}videoReceiveBandwidthDidChange(e,t){this.logger.debug((()=>`receiving bandwidth changed from prev=${t} Kbps to curr=${e} Kbps`)),this.currentVideoDownlinkBandwidthEstimationKbps=e}checkResubscribe(e){if(this.isResubscribeCheckPaused)return this.context.logger.info("Resubscribe check is paused, setting incoming client metric report as pending"),void(this.pendingMetricsReport=e);this.pendingMetricsReport=void 0;const t=e.getObservableMetrics();if(!t)return!1;const i=t.availableSendBandwidth||t.availableOutgoingBitrate,n=t.nackCountReceivedPerSecond||t.googNackCountReceivedPerSecond;let r=!1;this.context.videoDownlinkBandwidthPolicy.updateMetrics(e);const o=this.context.videoDownlinkBandwidthPolicy.wantsResubscribe();if(r=r||o,o&&(this.context.videosToReceive=this.context.videoDownlinkBandwidthPolicy.chooseSubscriptions(),this.logger.info(`trigger resubscribe for down=${o}; videosToReceive=[${this.context.videosToReceive.array()}]`)),this.context.videoTileController.hasStartedLocalVideoTile()){this.context.videoUplinkBandwidthPolicy.updateConnectionMetric({uplinkKbps:i/1e3,nackCountPerSecond:n});const e=this.context.videoUplinkBandwidthPolicy.wantsResubscribe();r=r||e,e&&(this.logger.info(`trigger resubscribe for up=${e}; videosToReceive=[${this.context.videosToReceive.array()}]`),this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters(),this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints())}return r}metricsDidReceive(e){const t=e;if(!t)return;if(this.checkResubscribe(e)&&this.context.audioVideoController.update({needsRenegotiation:!1}),!this.currentAvailableStreamAvgBitrates)return;const i=t.streamMetricReports;if(!i)return;const n=new Map,r=new Map;for(const e in i)i[e].mediaType===ClientMetricReportMediaType_1.default.VIDEO&&i[e].direction===ClientMetricReportDirection_1.default.DOWNSTREAM&&n.set(i[e].streamId,i[e]);let o=!1;for(const e of this.currentAvailableStreamAvgBitrates.bitrates)if(n.has(e.sourceStreamId)){const t=n.get(e.sourceStreamId),i=this.context.videoStreamIndex.attendeeIdForStreamId(e.sourceStreamId);if(!i)continue;const a=new ClientVideoStreamReceivingReport_1.default,s=t.previousMetrics.bytesReceived,c=t.currentMetrics.bytesReceived;if(!s||!c)continue;const l=8*(c-s)/1e3;a.expectedAverageBitrateKbps=e.avgBitrateBps/1e3,a.receivedAverageBitrateKbps=l,a.attendeeId=i,l<e.avgBitrateBps/1e3*MonitorTask.DEFAULT_DOWNLINK_CALLRATE_UNDERSHOOT_FACTOR&&(o=!0),r.set(i,a)}o&&(this.logger.debug((()=>"Downlink video streams are not receiving enough data")),this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.videoNotReceivingEnoughData).map((t=>t.bind(e)(Array.from(r.values()))))})))}connectionHealthDidChange(e){var t;0===e.consecutiveMissedPongs&&this.context.reconnectController&&this.context.reconnectController.setLastActiveTimestampMs(Date.now()),this.reconnectionHealthPolicy.update(e);const i=this.reconnectionHealthPolicy.healthIfChanged();null!==i&&(this.logger.info(`reconnection health is now: ${i}`),0===i&&this.context.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.ConnectionHealthReconnect),null)),this.unusableAudioWarningHealthPolicy.update(e);const n=this.unusableAudioWarningHealthPolicy.healthIfChanged();if(null!==n)if(this.logger.info(`unusable audio warning is now: ${n}`),0===n){this.context.poorConnectionCount+=1;const e=this.generateAudioVideoEventAttributes();null===(t=this.context.eventController)||void 0===t||t.publishEvent("receivingAudioDropped",e),this.context.videoTileController.haveVideoTilesWithStreams()?this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.connectionDidSuggestStopVideo).map((t=>t.bind(e)()))})):this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.connectionDidBecomePoor).map((t=>t.bind(e)()))}))}else this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.connectionDidBecomeGood).map((t=>t.bind(e)()))}))}handleBitrateFrame(e){let t=0;this.currentAvailableStreamAvgBitrates=e,this.logger.debug((()=>`simulcast: bitrates from server ${JSON.stringify(e)}`));for(const i of e.bitrates)this.context.videosToReceive.contain(i.sourceStreamId)&&(t+=i.avgBitrateBps);t/=1e3,this.currentVideoDownlinkBandwidthEstimationKbps*MonitorTask.DEFAULT_DOWNLINK_CALLRATE_OVERSHOOT_FACTOR<t&&(this.logger.info(`Downlink bandwidth pressure is high: estimated bandwidth ${this.currentVideoDownlinkBandwidthEstimationKbps}Kbps, required bandwidth ${t}Kbps`),this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.estimatedDownlinkBandwidthLessThanRequired).map((i=>i.bind(e)(this.currentVideoDownlinkBandwidthEstimationKbps,t)))})))}handleSignalingClientEvent(e){var t;if(e.type===SignalingClientEventType_1.default.WebSocketClosed&&(4410===e.closeCode||e.closeCode>=4500&&e.closeCode<4600)||e.type===SignalingClientEventType_1.default.WebSocketError||e.type===SignalingClientEventType_1.default.WebSocketFailed){if(!this.hasSignalingError){const e=this.generateAudioVideoEventAttributes();null===(t=this.context.eventController)||void 0===t||t.publishEvent("signalingDropped",e),this.hasSignalingError=!0}}else e.type===SignalingClientEventType_1.default.WebSocketOpen&&(this.hasSignalingError=!1);if(e.type===SignalingClientEventType_1.default.ReceivedSignalFrame){if(e.message.bitrates){const t=e.message.bitrates;this.context.videoStreamIndex.integrateBitratesFrame(t),this.context.videoDownlinkBandwidthPolicy.updateIndex(this.context.videoStreamIndex),this.handleBitrateFrame(e.message.bitrates)}const t=MeetingSessionStatus_1.default.fromSignalFrame(e.message);e.message.type!==SignalingProtocol_js_1.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&t.statusCode()!==MeetingSessionStatusCode_1.default.OK&&this.context.audioVideoController.handleMeetingSessionStatus(t,null)}}}var _default$1p=MonitorTask;MonitorTask.DEFAULT_TIMEOUT_FOR_START_SENDING_VIDEO_MS=3e4,MonitorTask.DEFAULT_DOWNLINK_CALLRATE_OVERSHOOT_FACTOR=1.5,MonitorTask.DEFAULT_DOWNLINK_CALLRATE_UNDERSHOOT_FACTOR=.5;var MonitorTask_1$1=Object.defineProperty({default:_default$1p},"__esModule",{value:!0});class SignalingClientConnectionRequest{constructor(e,t){this.signalingURL=e,this.joinToken=t}url(){return this.signalingURL+"?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1"}protocols(){return["_aws_wt_session",this.joinToken]}}var _default$1o=SignalingClientConnectionRequest,SignalingClientConnectionRequest_1$1=Object.defineProperty({default:_default$1o},"__esModule",{value:!0}),SignalingClientConnectionRequest_1=SignalingClientConnectionRequest_1$1,__awaiter$z=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class OpenSignalingConnectionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="OpenSignalingConnectionTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$z(this,void 0,void 0,(function*(){const e=this.context.meetingSessionConfiguration;this.context.signalingClient.openConnection(new SignalingClientConnectionRequest_1.default(e.urls.signalingURL,e.credentials.joinToken));const t=Date.now();try{yield new Promise(((e,t)=>{const i=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("OpenSignalingConnectionTask got canceled while waiting to open signaling connection"))}handleSignalingClientEvent(i){switch(i.type){case SignalingClientEventType_1.default.WebSocketOpen:this.signalingClient.removeObserver(this),e();break;case SignalingClientEventType_1.default.WebSocketFailed:this.signalingClient.removeObserver(this),t(new Error("WebSocket connection failed"))}}}(this.context.signalingClient);this.context.signalingClient.registerObserver(i),this.taskCanceler=i}))}catch(e){throw e}finally{this.context.signalingOpenDurationMs=Math.round(Date.now()-t),this.logger.info(`Opening signaling connection took ${this.context.signalingOpenDurationMs} ms`)}}))}}var _default$1n=OpenSignalingConnectionTask,OpenSignalingConnectionTask_1$1=Object.defineProperty({default:_default$1n},"__esModule",{value:!0}),__awaiter$y=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ParallelGroupTask extends BaseTask_1.default{constructor(e,t,i){super(e),this.taskName=t,this.tasksToRunParallel=i;for(const e of i)e.setParent(this)}cancel(){for(const e of this.tasksToRunParallel)this.logger.info(`canceling parallel group task ${this.name()} subtask ${e.name()}`),e.cancel()}run(){return __awaiter$y(this,void 0,void 0,(function*(){const e=[];for(const t of this.tasksToRunParallel)this.logger.info(`parallel group task ${this.name()} running subtask ${t.name()}`),e.push(t.run());const t=[];for(let i=0;i<e.length;i++){try{yield e[i]}catch(e){t.push(`task ${this.tasksToRunParallel[i].name()} failed: ${e.message}`)}this.logger.info(`parallel group task ${this.name()} completed subtask ${this.tasksToRunParallel[i].name()}`)}if(t.length>0){const e=t.join(", ");this.logAndThrow(`parallel group task ${this.name()} failed for tasks: ${e}`)}this.logger.info(`parallel group task ${this.name()} completed`)}))}}var _default$1m=ParallelGroupTask,ParallelGroupTask_1$1=Object.defineProperty({default:_default$1m},"__esModule",{value:!0}),__awaiter$x=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class PromoteToPrimaryMeetingTask extends BaseTask_1.default{constructor(e,t,i){super(e.logger),this.context=e,this.credentials=t,this.completionCallback=i,this.taskName="PromoteToPrimaryMeetingTask",this.taskCanceler=null}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$x(this,void 0,void 0,(function*(){this.context.signalingClient.ready()?(this.context.signalingClient.promoteToPrimaryMeeting(this.credentials),this.context.logger.info("Sent request to join primary meeting"),yield this.receivePrimaryMeetingJoinAck()):this.completionCallback(new build.MeetingSessionStatus(build.MeetingSessionStatusCode.SignalingRequestFailed))}))}receivePrimaryMeetingJoinAck(){return new Promise(((e,t)=>{const i=new class{constructor(e,t,i){this.signalingClient=e,this.completionCallback=t,this.logger=i}cancel(){this.signalingClient.removeObserver(this),this.completionCallback(new build.MeetingSessionStatus(build.MeetingSessionStatusCode.SignalingRequestFailed)),e()}handleSignalingClientEvent(t){t.isConnectionTerminated()&&(this.signalingClient.removeObserver(this),this.logger.info("PromoteToPrimaryMeetingTask connection terminated"),this.completionCallback(new build.MeetingSessionStatus(build.MeetingSessionStatusCode.SignalingRequestFailed)),e()),t.type===SignalingClientEventType_1.default.ReceivedSignalFrame&&t.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK&&(this.signalingClient.removeObserver(this),this.logger.info("Got a primary meeting join ACK"),this.completionCallback(build.MeetingSessionStatus.fromSignalFrame(t.message)),e())}}(this.context.signalingClient,this.completionCallback,this.context.logger);this.taskCanceler=i,this.context.signalingClient.registerObserver(i)}))}}var _default$1l=PromoteToPrimaryMeetingTask,PromoteToPrimaryMeetingTask_1$1=Object.defineProperty({default:_default$1l},"__esModule",{value:!0}),__awaiter$w=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ReceiveAudioInputTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveAudioInputTask"}run(){var e,t;return __awaiter$w(this,void 0,void 0,(function*(){if(!(null===(t=null===(e=this.context.meetingSessionConfiguration)||void 0===e?void 0:e.urls)||void 0===t?void 0:t.audioHostURL))return void this.context.logger.info("No audio connection: not acquiring audio input");if(this.context.activeAudioInput)return void this.context.logger.info("an active audio input exists");let i;try{i=yield this.context.mediaStreamBroker.acquireAudioInputStream()}catch(e){this.context.logger.warn("could not acquire audio input from current device")}i?(this.context.activeAudioInput=i,this.context.realtimeController.realtimeSetLocalAudioInput(i)):this.context.logger.warn("an audio input is not available")}))}}var _default$1k=ReceiveAudioInputTask,ReceiveAudioInputTask_1$1=Object.defineProperty({default:_default$1k},"__esModule",{value:!0}),__awaiter$v=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ReceiveTURNCredentialsTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveTURNCredentialsTask",this.url=e.meetingSessionConfiguration.urls.turnControlURL,this.meetingId=e.meetingSessionConfiguration.meetingId,this.joinToken=e.meetingSessionConfiguration.credentials.joinToken}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return __awaiter$v(this,void 0,void 0,(function*(){if(this.context.turnCredentials)return void this.context.logger.info("TURN credentials available, skipping credentials fetch");if(this.context.logger.error("missing TURN credentials - falling back to fetch"),!this.url)return void this.context.logger.info("TURN control url not supplied, skipping credentials fetch");const e={method:"POST",mode:"cors",cache:"no-cache",credentials:"omit",headers:{"Content-Type":"application/json","X-Chime-Auth-Token":"_aws_wt_session="+new DefaultModality_1.default(this.joinToken).base()},redirect:"follow",referrer:"no-referrer",body:JSON.stringify({meetingId:this.meetingId})};this.context.logger.info(`requesting TURN credentials from ${this.url}`);const t=yield new Promise(((t,i)=>__awaiter$v(this,void 0,void 0,(function*(){this.cancelPromise=e=>{i(e)};try{const n=yield fetch(Versioning_1.default.urlWithVersion(this.url),e);if(this.context.logger.info("received TURN credentials"),n.status&&403===n.status)return void i(new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.TURNCredentialsForbidden}`));if(n.status&&404===n.status)return void i(new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.MeetingEnded}`));t(yield n.json())}catch(e){i(e)}finally{delete this.cancelPromise}}))));this.context.turnCredentials=new MeetingSessionTURNCredentials_1.default,this.context.turnCredentials.password=t.password,this.context.turnCredentials.ttl=t.ttl,this.context.turnCredentials.uris=t.uris.map((e=>this.context.meetingSessionConfiguration.urls.urlRewriter(e))).filter((e=>!!e)),this.context.turnCredentials.username=t.username}))}}var _default$1j=ReceiveTURNCredentialsTask,ReceiveTURNCredentialsTask_1$1=Object.defineProperty({default:_default$1j},"__esModule",{value:!0}),__awaiter$u=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ReceiveVideoInputTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveVideoInputTask"}run(){return __awaiter$u(this,void 0,void 0,(function*(){const e=this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.RX||this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;if(this.context.videoTileController.hasStartedLocalVideoTile()?this.context.videoDuplexMode=e?SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX:SignalingProtocol_js_1.SdkStreamServiceType.TX:this.context.videoDuplexMode=e?SignalingProtocol_js_1.SdkStreamServiceType.RX:0,this.context.videoCaptureAndEncodeParameter=this.context.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters(),!this.context.videoTileController.hasStartedLocalVideoTile())return this.context.logger.info("has not started local video tile"),void(this.context.activeVideoInput&&(this.stopVideoInput(),this.context.videoStreamIndex.integrateUplinkPolicyDecision([])));const t=this.context.videoTileController.getLocalVideoTile();let i=null;try{i=yield this.context.mediaStreamBroker.acquireVideoInputStream()}catch(e){this.context.logger.warn("could not acquire video input from current device")}if(this.context.enableSimulcast){const e=this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();this.context.videoStreamIndex.integrateUplinkPolicyDecision(Array.from(e.values()))}if(this.context.activeVideoInput=i,i){const e=i.getVideoTracks();if(!e||0===e.length)return;const n=this.context.meetingSessionConfiguration.credentials.attendeeId,r=e[0].getSettings();if(this.context.enableSimulcast){const t=this.context.videoUplinkBandwidthPolicy.chooseMediaTrackConstraints();this.context.logger.info(`simulcast: choose constraint ${JSON.stringify(t)}`);try{yield e[0].applyConstraints(t)}catch(e){this.context.logger.info("simulcast: pass video without more constraint")}}const o=this.context.audioVideoController.configuration.credentials.externalUserId;t.bindVideoStream(n,!0,i,r.width,r.height,null,o);for(let t=0;t<e.length;t++){const i=e[t];this.logger.info(`using video device label=${i.label} id=${i.id}`),this.context.videoDeviceInformation.current_camera_name=i.label,this.context.videoDeviceInformation.current_camera_id=i.id}}}))}stopVideoInput(){this.context.mediaStreamBroker.releaseMediaStream(this.context.activeVideoInput),this.context.activeVideoInput=null}}var _default$1i=ReceiveVideoInputTask,ReceiveVideoInputTask_1$1=Object.defineProperty({default:_default$1i},"__esModule",{value:!0}),MeetingSessionVideoAvailability_1=MeetingSessionVideoAvailability_1$1,__awaiter$t=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ReceiveVideoStreamIndexTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReceiveVideoStreamIndexTask",this.isIngestionPaused=!1,this.pendingIndex=null}removeObserver(){this.context.signalingClient.removeObserver(this)}run(){return __awaiter$t(this,void 0,void 0,(function*(){this.handleIndexFrame(this.context.indexFrame),this.context.signalingClient.registerObserver(this),this.context.removableObservers.push(this)}))}handleSignalingClientEvent(e){if(e.type!==SignalingClientEventType_1.default.ReceivedSignalFrame||e.message.type!==SignalingProtocol_js_1.SdkSignalFrame.Type.INDEX)return;const t=e.message.index;this.context.logger.info(`received new index ${JSON.stringify(t)}`),this.handleIndexFrame(t)}pauseIngestion(){this.isIngestionPaused=!0}resumeIngestion(){this.isIngestionPaused&&(this.isIngestionPaused=!1,this.pendingIndex&&(this.context.logger.info("Resuming index ingestion with pending index"),this.handleIndexFrame(this.pendingIndex)))}handleIndexFrame(e){if(!e)return;if(this.isIngestionPaused)return this.context.logger.info("Index ingestion is paused, setting most recent index as pending"),void(this.pendingIndex=e);this.pendingIndex=null;const t=this.context.audioVideoController.configuration.credentials.attendeeId;e.sources=e.sources.filter((e=>{const i=new DefaultModality_1.default(e.attendeeId);return!(i.base()===t&&i.hasModality(DefaultModality_1.default.MODALITY_CONTENT))}));const{videoStreamIndex:i,videoDownlinkBandwidthPolicy:n,videoUplinkBandwidthPolicy:r}=this.context,o=i.allVideoSendingSourcesExcludingSelf(t);i.integrateIndexFrame(e),n.updateIndex(i),r.updateIndex(i),this.resubscribe(n,r),this.updateVideoAvailability(e),this.handleIndexVideosPausedAtSource();const a=i.allVideoSendingSourcesExcludingSelf(t);this.areVideoSourcesEqual(o,a)||this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.remoteVideoSourcesDidChange).map((t=>t.bind(e)(a)))}))}areVideoSourcesEqual(e,t){if(e.length!==t.length)return!1;const i=(e,t)=>e.attendee.attendeeId.localeCompare(t.attendee.attendeeId),n=[...e].sort(i),r=[...t].sort(i);for(let e=0;e<n.length;e++)if(n[e].attendee.attendeeId!==r[e].attendee.attendeeId)return!1;return!0}resubscribe(e,t){const i=e.wantsResubscribe(),n=(this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.TX||this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX)&&t.wantsResubscribe(),r=i||n;if(this.logger.info(`should resubscribe: ${r} (downlink: ${i} uplink: ${n})`),!r)return;const o=e.chooseSubscriptions();this.context.videosToReceive=o.truncate(this.context.videoSubscriptionLimit),o.size()>this.context.videosToReceive.size()&&this.logger.warn(`Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`),this.context.videoCaptureAndEncodeParameter=t.chooseCaptureAndEncodeParameters(),this.logger.info(`trigger resubscribe for up=${n} down=${i}; videosToReceive=[${this.context.videosToReceive.array()}] captureParams=${JSON.stringify(this.context.videoCaptureAndEncodeParameter)}`),this.context.audioVideoController.update({needsRenegotiation:!1})}updateVideoAvailability(e){if(!this.context.videosToReceive)return void this.logger.error("videosToReceive must be set in the meeting context.");const t=new MeetingSessionVideoAvailability_1.default;t.remoteVideoAvailable=!this.context.videosToReceive.empty(),t.canStartLocalVideo=!e.atCapacity,this.context.lastKnownVideoAvailability&&this.context.lastKnownVideoAvailability.equal(t)||(this.context.lastKnownVideoAvailability=t.clone(),this.context.audioVideoController.forEachObserver((e=>{Types_1.Maybe.of(e.videoAvailabilityDidChange).map((i=>i.bind(e)(t.clone())))})))}handleIndexVideosPausedAtSource(){const e=this.context.videoStreamIndex.streamsPausedAtSource();for(const t of this.context.videoTileController.getAllVideoTiles()){const i=t.state();e.contain(i.streamId)?t.markPoorConnection()&&this.logger.info(`marks the tile ${i.tileId} as having a poor connection`):t.unmarkPoorConnection()&&this.logger.info(`unmarks the tile ${i.tileId} as having a poor connection`)}}}var _default$1h=ReceiveVideoStreamIndexTask,ReceiveVideoStreamIndexTask_1$1=Object.defineProperty({default:_default$1h},"__esModule",{value:!0}),__awaiter$s=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class ReleaseMediaStreamsTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="ReleaseMediaStreamsTask"}run(){return __awaiter$s(this,void 0,void 0,(function*(){if(this.context.mediaStreamBroker)try{this.context.mediaStreamBroker.releaseMediaStream(this.context.activeAudioInput),this.context.activeAudioInput=null,this.context.mediaStreamBroker.releaseMediaStream(this.context.activeVideoInput),this.context.activeVideoInput=null,this.context.realtimeController.realtimeSetLocalAudioInput(null)}catch(e){this.context.logger.error(`Failed to release media streams: ${e}`)}}))}}var _default$1g=ReleaseMediaStreamsTask,ReleaseMediaStreamsTask_1$1=Object.defineProperty({default:_default$1g},"__esModule",{value:!0}),DataMessage_1=DataMessage_1$1,__awaiter$r=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SendAndReceiveDataMessagesTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="SendAndReceiveDataMessagesTask",this.sendDataMessageHandler=(e,t,i)=>{if(this.context.signalingClient.ready()){let n;n=t instanceof Uint8Array?t:"string"==typeof t?(new TextEncoder).encode(t):(new TextEncoder).encode(JSON.stringify(t)),this.validateDataMessage(e,n,i);const r=SignalingProtocol_js_1.SdkDataMessagePayload.create();r.topic=e,r.lifetimeMs=i,r.data=n;const o=SignalingProtocol_js_1.SdkDataMessageFrame.create();o.messages=[r],this.context.signalingClient.sendDataMessage(o)}else this.context.logger.error("Signaling client is not ready")}}run(){return __awaiter$r(this,void 0,void 0,(function*(){this.context.removableObservers.push(this),this.context.signalingClient.registerObserver(this),this.context.realtimeController.realtimeSubscribeToSendDataMessage(this.sendDataMessageHandler)}))}removeObserver(){this.context.realtimeController.realtimeUnsubscribeFromSendDataMessage(this.sendDataMessageHandler),this.context.signalingClient.removeObserver(this)}handleSignalingClientEvent(e){if(e.type===SignalingClientEventType_1.default.ReceivedSignalFrame&&e.message.type===SignalingProtocol_js_1.SdkSignalFrame.Type.DATA_MESSAGE)for(const t of e.message.dataMessage.messages){const e=new DataMessage_1.default(t.ingestTimeNs/1e6,t.topic,t.data,t.senderAttendeeId,t.senderExternalUserId,0===t.ingestTimeNs);this.context.realtimeController.realtimeReceiveDataMessage(e)}}validateDataMessage(e,t,i){if(!SendAndReceiveDataMessagesTask.TOPIC_REGEX.test(e))throw new Error("Invalid topic");if(t.length>SendAndReceiveDataMessagesTask.DATA_SIZE)throw new Error("Data size has to be less than 2048 bytes");if(i&&i<0)throw new Error("The life time of the message has to be non negative")}}var _default$1f=SendAndReceiveDataMessagesTask;SendAndReceiveDataMessagesTask.TOPIC_REGEX=new RegExp(/^[a-zA-Z0-9_-]{1,36}$/),SendAndReceiveDataMessagesTask.DATA_SIZE=2048;var SendAndReceiveDataMessagesTask_1$1=Object.defineProperty({default:_default$1f},"__esModule",{value:!0}),__awaiter$q=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SerialGroupTask extends BaseTask_1.default{constructor(e,t,i){super(e),this.taskName=t,this.tasksToRunSerially=i,this.currentTask=null;for(const e of i)e.setParent(this)}cancel(){this.currentTask&&(this.logger.info(`canceling serial group task ${this.name()} subtask ${this.currentTask.name()}`),this.currentTask.cancel())}run(){return __awaiter$q(this,void 0,void 0,(function*(){for(const e of this.tasksToRunSerially){this.getStatus()===TaskStatus_1.default.CANCELED&&this.logAndThrow(`serial group task ${this.name()} was canceled`);try{this.logger.info(`serial group task ${this.name()} running subtask ${e.name()}`),this.currentTask=e,yield e.run(),this.logger.info(`serial group task ${this.name()} completed subtask ${e.name()}`)}catch(e){this.logAndThrow(`serial group task ${this.name()} was canceled due to subtask ${this.currentTask.name()} error: ${e.message}`)}finally{this.currentTask=null}}this.logger.info(`serial group task ${this.name()} completed`)}))}}var _default$1e=SerialGroupTask,SerialGroupTask_1$1=Object.defineProperty({default:_default$1e},"__esModule",{value:!0}),__awaiter$p=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SetLocalDescriptionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetLocalDescriptionTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return __awaiter$p(this,void 0,void 0,(function*(){const e=this.context.peer;let t=this.context.sdpOfferInit.sdp;(new DefaultBrowserBehavior_1.default).requiresDisablingH264Encoding()&&(t=new DefaultSDP_1.default(t).removeH264SupportFromSendSection().sdp),this.context.audioProfile&&(t=new DefaultSDP_1.default(t).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(t=new DefaultSDP_1.default(t).withStereoAudio().sdp)),this.logger.debug((()=>`local description is >>>${t}<<<`));const i={type:"offer",sdp:t,toJSON:null};yield new Promise(((t,n)=>__awaiter$p(this,void 0,void 0,(function*(){this.cancelPromise=e=>{n(e)};try{yield e.setLocalDescription(i),t()}catch(e){n(e)}finally{delete this.cancelPromise}})))),this.context.logger.info("set local description")}))}}var _default$1d=SetLocalDescriptionTask,SetLocalDescriptionTask_1$1=Object.defineProperty({default:_default$1d},"__esModule",{value:!0}),__awaiter$o=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SetRemoteDescriptionTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="SetRemoteDescriptionTask"}cancel(){this.cancelICEPromise&&this.cancelICEPromise()}run(){return __awaiter$o(this,void 0,void 0,(function*(){this.context.peer||this.logAndThrow("session does not have peer connection; bypass set remote description");let e=this.context.sdpAnswer;if(e=new DefaultSDP_1.default(e).withoutServerReflexiveCandidates().sdp,this.context.audioProfile&&(e=new DefaultSDP_1.default(e).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp,this.context.audioProfile.isStereo()&&(e=new DefaultSDP_1.default(e).withStereoAudio().sdp)),!this.context.browserBehavior.requiresUnifiedPlan()&&(this.logger.info("checking for no videos (plan-b)"),this.context.videosToReceive.empty()&&this.context.peer.remoteDescription)){this.logger.info("have no videos and have remote description (plan-b)");const t=this.context.peer.localDescription.sdp,i=e;let n=i;const r=new DefaultSDP_1.default(t);if(r.hasVideo()){this.logger.info(`offer has video (plan-b): >>>${r.sdp}<<<`);const e=new DefaultSDP_1.default(i);this.logger.info(`existing answer (plan-b): >>>${e.sdp}<<<`),e.hasVideo()||(this.logger.info(`copying inactive video from offer into answer (plan-b); sdp answer before is >>>${i}<<<`),n=e.copyVideo(t).sdp)}e=n}(new DefaultBrowserBehavior_1.default).requiresSortCodecPreferencesForSdpAnswer()&&(e=new DefaultSDP_1.default(e).preferH264IfExists().sdp),this.logger.info(`processed remote description is >>>${e}<<<`);const t={type:"answer",sdp:e,toJSON:null};try{yield this.createICEConnectionCompletedPromise(t)}catch(e){throw e}}))}createICEConnectionCompletedPromise(e){return new Promise(((t,i)=>__awaiter$o(this,void 0,void 0,(function*(){const n=()=>{"connected"!==this.context.peer.iceConnectionState&&"completed"!==this.context.peer.iceConnectionState||(this.context.peer.removeEventListener("iceconnectionstatechange",n),t())};this.cancelICEPromise=()=>{this.context.peer&&this.context.peer.removeEventListener("iceconnectionstatechange",n),i(new Error(`${this.name()} got canceled while waiting for the ICE connection state`))},this.context.peer.addEventListener("iceconnectionstatechange",n);try{yield this.context.peer.setRemoteDescription(e),this.logger.info("set remote description, waiting for ICE connection"),n()}catch(e){i(e)}}))))}}var _default$1c=SetRemoteDescriptionTask,SetRemoteDescriptionTask_1$1=Object.defineProperty({default:_default$1c},"__esModule",{value:!0});const Z_FIXED$1=4,Z_BINARY=0,Z_TEXT=1,Z_UNKNOWN$1=2;function zero$1(e){let t=e.length;for(;--t>=0;)e[t]=0}const STORED_BLOCK=0,STATIC_TREES=1,DYN_TREES=2,MIN_MATCH$1=3,MAX_MATCH$1=258,LENGTH_CODES$1=29,LITERALS$1=256,L_CODES$1=LITERALS$1+1+LENGTH_CODES$1,D_CODES$1=30,BL_CODES$1=19,HEAP_SIZE$1=2*L_CODES$1+1,MAX_BITS$1=15,Buf_size=16,MAX_BL_BITS=7,END_BLOCK=256,REP_3_6=16,REPZ_3_10=17,REPZ_11_138=18,extra_lbits=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),extra_dbits=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),extra_blbits=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),bl_order=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),DIST_CODE_LEN=512,static_ltree=new Array(2*(L_CODES$1+2));zero$1(static_ltree);const static_dtree=new Array(2*D_CODES$1);zero$1(static_dtree);const _dist_code=new Array(DIST_CODE_LEN);zero$1(_dist_code);const _length_code=new Array(MAX_MATCH$1-MIN_MATCH$1+1);zero$1(_length_code);const base_length=new Array(LENGTH_CODES$1);zero$1(base_length);const base_dist=new Array(D_CODES$1);function StaticTreeDesc(e,t,i,n,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=r,this.has_stree=e&&e.length}let static_l_desc,static_d_desc,static_bl_desc;function TreeDesc(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}zero$1(base_dist);const d_code=e=>e<256?_dist_code[e]:_dist_code[256+(e>>>7)],put_short=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},send_bits=(e,t,i)=>{e.bi_valid>Buf_size-i?(e.bi_buf|=t<<e.bi_valid&65535,put_short(e,e.bi_buf),e.bi_buf=t>>Buf_size-e.bi_valid,e.bi_valid+=i-Buf_size):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},send_code=(e,t,i)=>{send_bits(e,i[2*t],i[2*t+1])},bi_reverse=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},bi_flush=e=>{16===e.bi_valid?(put_short(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)},gen_bitlen=(e,t)=>{const i=t.dyn_tree,n=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,u,h,p,f,m=0;for(h=0;h<=MAX_BITS$1;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<HEAP_SIZE$1;l++)d=e.heap[l],h=i[2*i[2*d+1]+1]+1,h>c&&(h=c,m++),i[2*d+1]=h,d>n||(e.bl_count[h]++,p=0,d>=s&&(p=a[d-s]),f=i[2*d],e.opt_len+=f*(h+p),o&&(e.static_len+=f*(r[2*d+1]+p)));if(0!==m){do{for(h=c-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[c]--,m-=2}while(m>0);for(h=c;0!==h;h--)for(d=e.bl_count[h];0!==d;)u=e.heap[--l],u>n||(i[2*u+1]!==h&&(e.opt_len+=(h-i[2*u+1])*i[2*u],i[2*u+1]=h),d--)}},gen_codes=(e,t,i)=>{const n=new Array(MAX_BITS$1+1);let r,o,a=0;for(r=1;r<=MAX_BITS$1;r++)n[r]=a=a+i[r-1]<<1;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=bi_reverse(n[t]++,t))}},tr_static_init=()=>{let e,t,i,n,r;const o=new Array(MAX_BITS$1+1);for(i=0,n=0;n<LENGTH_CODES$1-1;n++)for(base_length[n]=i,e=0;e<1<<extra_lbits[n];e++)_length_code[i++]=n;for(_length_code[i-1]=n,r=0,n=0;n<16;n++)for(base_dist[n]=r,e=0;e<1<<extra_dbits[n];e++)_dist_code[r++]=n;for(r>>=7;n<D_CODES$1;n++)for(base_dist[n]=r<<7,e=0;e<1<<extra_dbits[n]-7;e++)_dist_code[256+r++]=n;for(t=0;t<=MAX_BITS$1;t++)o[t]=0;for(e=0;e<=143;)static_ltree[2*e+1]=8,e++,o[8]++;for(;e<=255;)static_ltree[2*e+1]=9,e++,o[9]++;for(;e<=279;)static_ltree[2*e+1]=7,e++,o[7]++;for(;e<=287;)static_ltree[2*e+1]=8,e++,o[8]++;for(gen_codes(static_ltree,L_CODES$1+1,o),e=0;e<D_CODES$1;e++)static_dtree[2*e+1]=5,static_dtree[2*e]=bi_reverse(e,5);static_l_desc=new StaticTreeDesc(static_ltree,extra_lbits,LITERALS$1+1,L_CODES$1,MAX_BITS$1),static_d_desc=new StaticTreeDesc(static_dtree,extra_dbits,0,D_CODES$1,MAX_BITS$1),static_bl_desc=new StaticTreeDesc(new Array(0),extra_blbits,0,BL_CODES$1,MAX_BL_BITS)},init_block=e=>{let t;for(t=0;t<L_CODES$1;t++)e.dyn_ltree[2*t]=0;for(t=0;t<D_CODES$1;t++)e.dyn_dtree[2*t]=0;for(t=0;t<BL_CODES$1;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*END_BLOCK]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0},bi_windup=e=>{e.bi_valid>8?put_short(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},copy_block=(e,t,i,n)=>{bi_windup(e),n&&(put_short(e,i),put_short(e,~i)),e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i},smaller=(e,t,i,n)=>{const r=2*t,o=2*i;return e[r]<e[o]||e[r]===e[o]&&n[t]<=n[i]},pqdownheap=(e,t,i)=>{const n=e.heap[i];let r=i<<1;for(;r<=e.heap_len&&(r<e.heap_len&&smaller(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!smaller(t,n,e.heap[r],e.depth));)e.heap[i]=e.heap[r],i=r,r<<=1;e.heap[i]=n},compress_block=(e,t,i)=>{let n,r,o,a,s=0;if(0!==e.last_lit)do{n=e.pending_buf[e.d_buf+2*s]<<8|e.pending_buf[e.d_buf+2*s+1],r=e.pending_buf[e.l_buf+s],s++,0===n?send_code(e,r,t):(o=_length_code[r],send_code(e,o+LITERALS$1+1,t),a=extra_lbits[o],0!==a&&(r-=base_length[o],send_bits(e,r,a)),n--,o=d_code(n),send_code(e,o,i),a=extra_dbits[o],0!==a&&(n-=base_dist[o],send_bits(e,n,a)))}while(s<e.last_lit);send_code(e,END_BLOCK,t)},build_tree=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let a,s,c,l=-1;for(e.heap_len=0,e.heap_max=HEAP_SIZE$1,a=0;a<o;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,i[2*c]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=n[2*c+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)pqdownheap(e,i,a);c=o;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],pqdownheap(e,i,1),s=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=s,i[2*c]=i[2*a]+i[2*s],e.depth[c]=(e.depth[a]>=e.depth[s]?e.depth[a]:e.depth[s])+1,i[2*a+1]=i[2*s+1]=c,e.heap[1]=c++,pqdownheap(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],gen_bitlen(e,t),gen_codes(i,l,e.bl_count)},scan_tree=(e,t,i)=>{let n,r,o=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)r=a,a=t[2*(n+1)+1],++s<c&&r===a||(s<l?e.bl_tree[2*r]+=s:0!==r?(r!==o&&e.bl_tree[2*r]++,e.bl_tree[2*REP_3_6]++):s<=10?e.bl_tree[2*REPZ_3_10]++:e.bl_tree[2*REPZ_11_138]++,s=0,o=r,0===a?(c=138,l=3):r===a?(c=6,l=3):(c=7,l=4))},send_tree=(e,t,i)=>{let n,r,o=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),n=0;n<=i;n++)if(r=a,a=t[2*(n+1)+1],!(++s<c&&r===a)){if(s<l)do{send_code(e,r,e.bl_tree)}while(0!=--s);else 0!==r?(r!==o&&(send_code(e,r,e.bl_tree),s--),send_code(e,REP_3_6,e.bl_tree),send_bits(e,s-3,2)):s<=10?(send_code(e,REPZ_3_10,e.bl_tree),send_bits(e,s-3,3)):(send_code(e,REPZ_11_138,e.bl_tree),send_bits(e,s-11,7));s=0,o=r,0===a?(c=138,l=3):r===a?(c=6,l=3):(c=7,l=4)}},build_bl_tree=e=>{let t;for(scan_tree(e,e.dyn_ltree,e.l_desc.max_code),scan_tree(e,e.dyn_dtree,e.d_desc.max_code),build_tree(e,e.bl_desc),t=BL_CODES$1-1;t>=3&&0===e.bl_tree[2*bl_order[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t},send_all_trees=(e,t,i,n)=>{let r;for(send_bits(e,t-257,5),send_bits(e,i-1,5),send_bits(e,n-4,4),r=0;r<n;r++)send_bits(e,e.bl_tree[2*bl_order[r]+1],3);send_tree(e,e.dyn_ltree,t-1),send_tree(e,e.dyn_dtree,i-1)},detect_data_type=e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return Z_BINARY;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return Z_TEXT;for(t=32;t<LITERALS$1;t++)if(0!==e.dyn_ltree[2*t])return Z_TEXT;return Z_BINARY};let static_init_done=!1;const _tr_init$1=e=>{static_init_done||(tr_static_init(),static_init_done=!0),e.l_desc=new TreeDesc(e.dyn_ltree,static_l_desc),e.d_desc=new TreeDesc(e.dyn_dtree,static_d_desc),e.bl_desc=new TreeDesc(e.bl_tree,static_bl_desc),e.bi_buf=0,e.bi_valid=0,init_block(e)},_tr_stored_block$1=(e,t,i,n)=>{send_bits(e,(STORED_BLOCK<<1)+(n?1:0),3),copy_block(e,t,i,!0)},_tr_align$1=e=>{send_bits(e,STATIC_TREES<<1,3),send_code(e,END_BLOCK,static_ltree),bi_flush(e)},_tr_flush_block$1=(e,t,i,n)=>{let r,o,a=0;e.level>0?(e.strm.data_type===Z_UNKNOWN$1&&(e.strm.data_type=detect_data_type(e)),build_tree(e,e.l_desc),build_tree(e,e.d_desc),a=build_bl_tree(e),r=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=r&&(r=o)):r=o=i+5,i+4<=r&&-1!==t?_tr_stored_block$1(e,t,i,n):e.strategy===Z_FIXED$1||o===r?(send_bits(e,(STATIC_TREES<<1)+(n?1:0),3),compress_block(e,static_ltree,static_dtree)):(send_bits(e,(DYN_TREES<<1)+(n?1:0),3),send_all_trees(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),compress_block(e,e.dyn_ltree,e.dyn_dtree)),init_block(e),n&&bi_windup(e)},_tr_tally$1=(e,t,i)=>(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&i,e.last_lit++,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(_length_code[i]+LITERALS$1+1)]++,e.dyn_dtree[2*d_code(t)]++),e.last_lit===e.lit_bufsize-1);var _tr_init_1=_tr_init$1,_tr_stored_block_1=_tr_stored_block$1,_tr_flush_block_1=_tr_flush_block$1,_tr_tally_1=_tr_tally$1,_tr_align_1=_tr_align$1,trees={_tr_init:_tr_init_1,_tr_stored_block:_tr_stored_block_1,_tr_flush_block:_tr_flush_block_1,_tr_tally:_tr_tally_1,_tr_align:_tr_align_1};const adler32$1=(e,t,i,n)=>{let r=65535&e|0,o=e>>>16&65535|0,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{r=r+t[n++]|0,o=o+r|0}while(--a);r%=65521,o%=65521}return r|o<<16|0};var adler32_1=adler32$1;const makeTable=()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t},crcTable=new Uint32Array(makeTable()),crc32$1=(e,t,i,n)=>{const r=crcTable,o=n+i;e^=-1;for(let i=n;i<o;i++)e=e>>>8^r[255&(e^t[i])];return-1^e};var crc32_1=crc32$1,messages={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},constants$3={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},require$$0$2=trees,adler32=adler32_1,crc32=crc32_1,msg=messages,constants$2=constants$3;const{_tr_init:_tr_init,_tr_stored_block:_tr_stored_block,_tr_flush_block:_tr_flush_block,_tr_tally:_tr_tally,_tr_align:_tr_align}=require$$0$2,{Z_NO_FLUSH:Z_NO_FLUSH$2,Z_PARTIAL_FLUSH:Z_PARTIAL_FLUSH,Z_FULL_FLUSH:Z_FULL_FLUSH$1,Z_FINISH:Z_FINISH$3,Z_BLOCK:Z_BLOCK$1,Z_OK:Z_OK$3,Z_STREAM_END:Z_STREAM_END$3,Z_STREAM_ERROR:Z_STREAM_ERROR$2,Z_DATA_ERROR:Z_DATA_ERROR$2,Z_BUF_ERROR:Z_BUF_ERROR$1,Z_DEFAULT_COMPRESSION:Z_DEFAULT_COMPRESSION$1,Z_FILTERED:Z_FILTERED,Z_HUFFMAN_ONLY:Z_HUFFMAN_ONLY,Z_RLE:Z_RLE,Z_FIXED:Z_FIXED,Z_DEFAULT_STRATEGY:Z_DEFAULT_STRATEGY$1,Z_UNKNOWN:Z_UNKNOWN,Z_DEFLATED:Z_DEFLATED$2}=constants$2,MAX_MEM_LEVEL=9,MAX_WBITS$1=15,DEF_MEM_LEVEL=8,LENGTH_CODES=29,LITERALS=256,L_CODES=LITERALS+1+LENGTH_CODES,D_CODES=30,BL_CODES=19,HEAP_SIZE=2*L_CODES+1,MAX_BITS=15,MIN_MATCH=3,MAX_MATCH=258,MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1,PRESET_DICT=32,INIT_STATE=42,EXTRA_STATE=69,NAME_STATE=73,COMMENT_STATE=91,HCRC_STATE=103,BUSY_STATE=113,FINISH_STATE=666,BS_NEED_MORE=1,BS_BLOCK_DONE=2,BS_FINISH_STARTED=3,BS_FINISH_DONE=4,OS_CODE=3,err=(e,t)=>(e.msg=msg[t],t),rank=e=>(e<<1)-(e>4?9:0),zero=e=>{let t=e.length;for(;--t>=0;)e[t]=0};let HASH_ZLIB=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask,HASH=HASH_ZLIB;const flush_pending=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},flush_block_only=(e,t)=>{_tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,flush_pending(e.strm)},put_byte=(e,t)=>{e.pending_buf[e.pending++]=t},putShortMSB=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},read_buf=(e,t,i,n)=>{let r=e.avail_in;return r>n&&(r=n),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),i),1===e.state.wrap?e.adler=adler32(e.adler,t,r,i):2===e.state.wrap&&(e.adler=crc32(e.adler,t,r,i)),e.next_in+=r,e.total_in+=r,r)},longest_match=(e,t)=>{let i,n,r=e.max_chain_length,o=e.strstart,a=e.prev_length,s=e.nice_match;const c=e.strstart>e.w_size-MIN_LOOKAHEAD?e.strstart-(e.w_size-MIN_LOOKAHEAD):0,l=e.window,d=e.w_mask,u=e.prev,h=e.strstart+MAX_MATCH;let p=l[o+a-1],f=l[o+a];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(i=t,l[i+a]===f&&l[i+a-1]===p&&l[i]===l[o]&&l[++i]===l[o+1]){o+=2,i++;do{}while(l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&l[++o]===l[++i]&&o<h);if(n=MAX_MATCH-(h-o),o=h-MAX_MATCH,n>a){if(e.match_start=t,a=n,n>=s)break;p=l[o+a-1],f=l[o+a]}}}while((t=u[t&d])>c&&0!=--r);return a<=e.lookahead?a:e.lookahead},fill_window=e=>{const t=e.w_size;let i,n,r,o,a;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-MIN_LOOKAHEAD)){e.window.set(e.window.subarray(t,t+t),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,n=e.hash_size,i=n;do{r=e.head[--i],e.head[i]=r>=t?r-t:0}while(--n);n=t,i=n;do{r=e.prev[--i],e.prev[i]=r>=t?r-t:0}while(--n);o+=t}if(0===e.strm.avail_in)break;if(n=read_buf(e.strm,e.window,e.strstart+e.lookahead,o),e.lookahead+=n,e.lookahead+e.insert>=MIN_MATCH)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=HASH(e,e.ins_h,e.window[a+1]);e.insert&&(e.ins_h=HASH(e,e.ins_h,e.window[a+MIN_MATCH-1]),e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<MIN_MATCH)););}while(e.lookahead<MIN_LOOKAHEAD&&0!==e.strm.avail_in)},deflate_stored=(e,t)=>{let i=65535;for(i>e.pending_buf_size-5&&(i=e.pending_buf_size-5);;){if(e.lookahead<=1){if(fill_window(e),0===e.lookahead&&t===Z_NO_FLUSH$2)return BS_NEED_MORE;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;const n=e.block_start+i;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE;if(e.strstart-e.block_start>=e.w_size-MIN_LOOKAHEAD&&(flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE}return e.insert=0,t===Z_FINISH$3?(flush_block_only(e,!0),0===e.strm.avail_out?BS_FINISH_STARTED:BS_FINISH_DONE):(e.strstart>e.block_start&&(flush_block_only(e,!1),e.strm.avail_out),BS_NEED_MORE)},deflate_fast=(e,t)=>{let i,n;for(;;){if(e.lookahead<MIN_LOOKAHEAD){if(fill_window(e),e.lookahead<MIN_LOOKAHEAD&&t===Z_NO_FLUSH$2)return BS_NEED_MORE;if(0===e.lookahead)break}if(i=0,e.lookahead>=MIN_MATCH&&(e.ins_h=HASH(e,e.ins_h,e.window[e.strstart+MIN_MATCH-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-MIN_LOOKAHEAD&&(e.match_length=longest_match(e,i)),e.match_length>=MIN_MATCH)if(n=_tr_tally(e,e.strstart-e.match_start,e.match_length-MIN_MATCH),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=MIN_MATCH){e.match_length--;do{e.strstart++,e.ins_h=HASH(e,e.ins_h,e.window[e.strstart+MIN_MATCH-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=HASH(e,e.ins_h,e.window[e.strstart+1]);else n=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE}return e.insert=e.strstart<MIN_MATCH-1?e.strstart:MIN_MATCH-1,t===Z_FINISH$3?(flush_block_only(e,!0),0===e.strm.avail_out?BS_FINISH_STARTED:BS_FINISH_DONE):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?BS_NEED_MORE:BS_BLOCK_DONE},deflate_slow=(e,t)=>{let i,n,r;for(;;){if(e.lookahead<MIN_LOOKAHEAD){if(fill_window(e),e.lookahead<MIN_LOOKAHEAD&&t===Z_NO_FLUSH$2)return BS_NEED_MORE;if(0===e.lookahead)break}if(i=0,e.lookahead>=MIN_MATCH&&(e.ins_h=HASH(e,e.ins_h,e.window[e.strstart+MIN_MATCH-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=MIN_MATCH-1,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-MIN_LOOKAHEAD&&(e.match_length=longest_match(e,i),e.match_length<=5&&(e.strategy===Z_FILTERED||e.match_length===MIN_MATCH&&e.strstart-e.match_start>4096)&&(e.match_length=MIN_MATCH-1)),e.prev_length>=MIN_MATCH&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-MIN_MATCH,n=_tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-MIN_MATCH),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=HASH(e,e.ins_h,e.window[e.strstart+MIN_MATCH-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=MIN_MATCH-1,e.strstart++,n&&(flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE}else if(e.match_available){if(n=_tr_tally(e,0,e.window[e.strstart-1]),n&&flush_block_only(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return BS_NEED_MORE}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=_tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<MIN_MATCH-1?e.strstart:MIN_MATCH-1,t===Z_FINISH$3?(flush_block_only(e,!0),0===e.strm.avail_out?BS_FINISH_STARTED:BS_FINISH_DONE):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?BS_NEED_MORE:BS_BLOCK_DONE},deflate_rle=(e,t)=>{let i,n,r,o;const a=e.window;for(;;){if(e.lookahead<=MAX_MATCH){if(fill_window(e),e.lookahead<=MAX_MATCH&&t===Z_NO_FLUSH$2)return BS_NEED_MORE;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=MIN_MATCH&&e.strstart>0&&(r=e.strstart-1,n=a[r],n===a[++r]&&n===a[++r]&&n===a[++r])){o=e.strstart+MAX_MATCH;do{}while(n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&n===a[++r]&&r<o);e.match_length=MAX_MATCH-(o-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=MIN_MATCH?(i=_tr_tally(e,1,e.match_length-MIN_MATCH),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE}return e.insert=0,t===Z_FINISH$3?(flush_block_only(e,!0),0===e.strm.avail_out?BS_FINISH_STARTED:BS_FINISH_DONE):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?BS_NEED_MORE:BS_BLOCK_DONE},deflate_huff=(e,t)=>{let i;for(;;){if(0===e.lookahead&&(fill_window(e),0===e.lookahead)){if(t===Z_NO_FLUSH$2)return BS_NEED_MORE;break}if(e.match_length=0,i=_tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(flush_block_only(e,!1),0===e.strm.avail_out))return BS_NEED_MORE}return e.insert=0,t===Z_FINISH$3?(flush_block_only(e,!0),0===e.strm.avail_out?BS_FINISH_STARTED:BS_FINISH_DONE):e.last_lit&&(flush_block_only(e,!1),0===e.strm.avail_out)?BS_NEED_MORE:BS_BLOCK_DONE};function Config(e,t,i,n,r){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=r}const configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)],lm_init=e=>{e.window_size=2*e.w_size,zero(e.head),e.max_lazy_match=configuration_table[e.level].max_lazy,e.good_match=configuration_table[e.level].good_length,e.nice_match=configuration_table[e.level].nice_length,e.max_chain_length=configuration_table[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=MIN_MATCH-1,e.match_available=0,e.ins_h=0};function DeflateState(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Z_DEFLATED$2,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(2*HEAP_SIZE),this.dyn_dtree=new Uint16Array(2*(2*D_CODES+1)),this.bl_tree=new Uint16Array(2*(2*BL_CODES+1)),zero(this.dyn_ltree),zero(this.dyn_dtree),zero(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(MAX_BITS+1),this.heap=new Uint16Array(2*L_CODES+1),zero(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*L_CODES+1),zero(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const deflateResetKeep=e=>{if(!e||!e.state)return err(e,Z_STREAM_ERROR$2);e.total_in=e.total_out=0,e.data_type=Z_UNKNOWN;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?INIT_STATE:BUSY_STATE,e.adler=2===t.wrap?0:1,t.last_flush=Z_NO_FLUSH$2,_tr_init(t),Z_OK$3},deflateReset=e=>{const t=deflateResetKeep(e);return t===Z_OK$3&&lm_init(e.state),t},deflateSetHeader=(e,t)=>e&&e.state?2!==e.state.wrap?Z_STREAM_ERROR$2:(e.state.gzhead=t,Z_OK$3):Z_STREAM_ERROR$2,deflateInit2=(e,t,i,n,r,o)=>{if(!e)return Z_STREAM_ERROR$2;let a=1;if(t===Z_DEFAULT_COMPRESSION$1&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),r<1||r>MAX_MEM_LEVEL||i!==Z_DEFLATED$2||n<8||n>15||t<0||t>9||o<0||o>Z_FIXED)return err(e,Z_STREAM_ERROR$2);8===n&&(n=9);const s=new DeflateState;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=r+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+MIN_MATCH-1)/MIN_MATCH),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<r+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.d_buf=1*s.lit_bufsize,s.l_buf=3*s.lit_bufsize,s.level=t,s.strategy=o,s.method=i,deflateReset(e)},deflateInit=(e,t)=>deflateInit2(e,t,Z_DEFLATED$2,MAX_WBITS$1,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY$1),deflate$2=(e,t)=>{let i,n;if(!e||!e.state||t>Z_BLOCK$1||t<0)return e?err(e,Z_STREAM_ERROR$2):Z_STREAM_ERROR$2;const r=e.state;if(!e.output||!e.input&&0!==e.avail_in||r.status===FINISH_STATE&&t!==Z_FINISH$3)return err(e,0===e.avail_out?Z_BUF_ERROR$1:Z_STREAM_ERROR$2);r.strm=e;const o=r.last_flush;if(r.last_flush=t,r.status===INIT_STATE)if(2===r.wrap)e.adler=0,put_byte(r,31),put_byte(r,139),put_byte(r,8),r.gzhead?(put_byte(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),put_byte(r,255&r.gzhead.time),put_byte(r,r.gzhead.time>>8&255),put_byte(r,r.gzhead.time>>16&255),put_byte(r,r.gzhead.time>>24&255),put_byte(r,9===r.level?2:r.strategy>=Z_HUFFMAN_ONLY||r.level<2?4:0),put_byte(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(put_byte(r,255&r.gzhead.extra.length),put_byte(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=crc32(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=EXTRA_STATE):(put_byte(r,0),put_byte(r,0),put_byte(r,0),put_byte(r,0),put_byte(r,0),put_byte(r,9===r.level?2:r.strategy>=Z_HUFFMAN_ONLY||r.level<2?4:0),put_byte(r,OS_CODE),r.status=BUSY_STATE);else{let t=Z_DEFLATED$2+(r.w_bits-8<<4)<<8,i=-1;i=r.strategy>=Z_HUFFMAN_ONLY||r.level<2?0:r.level<6?1:6===r.level?2:3,t|=i<<6,0!==r.strstart&&(t|=PRESET_DICT),t+=31-t%31,r.status=BUSY_STATE,putShortMSB(r,t),0!==r.strstart&&(putShortMSB(r,e.adler>>>16),putShortMSB(r,65535&e.adler)),e.adler=1}if(r.status===EXTRA_STATE)if(r.gzhead.extra){for(i=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),flush_pending(e),i=r.pending,r.pending!==r.pending_buf_size));)put_byte(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=NAME_STATE)}else r.status=NAME_STATE;if(r.status===NAME_STATE)if(r.gzhead.name){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),flush_pending(e),i=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,put_byte(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),0===n&&(r.gzindex=0,r.status=COMMENT_STATE)}else r.status=COMMENT_STATE;if(r.status===COMMENT_STATE)if(r.gzhead.comment){i=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),flush_pending(e),i=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,put_byte(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>i&&(e.adler=crc32(e.adler,r.pending_buf,r.pending-i,i)),0===n&&(r.status=HCRC_STATE)}else r.status=HCRC_STATE;if(r.status===HCRC_STATE&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&flush_pending(e),r.pending+2<=r.pending_buf_size&&(put_byte(r,255&e.adler),put_byte(r,e.adler>>8&255),e.adler=0,r.status=BUSY_STATE)):r.status=BUSY_STATE),0!==r.pending){if(flush_pending(e),0===e.avail_out)return r.last_flush=-1,Z_OK$3}else if(0===e.avail_in&&rank(t)<=rank(o)&&t!==Z_FINISH$3)return err(e,Z_BUF_ERROR$1);if(r.status===FINISH_STATE&&0!==e.avail_in)return err(e,Z_BUF_ERROR$1);if(0!==e.avail_in||0!==r.lookahead||t!==Z_NO_FLUSH$2&&r.status!==FINISH_STATE){let i=r.strategy===Z_HUFFMAN_ONLY?deflate_huff(r,t):r.strategy===Z_RLE?deflate_rle(r,t):configuration_table[r.level].func(r,t);if(i!==BS_FINISH_STARTED&&i!==BS_FINISH_DONE||(r.status=FINISH_STATE),i===BS_NEED_MORE||i===BS_FINISH_STARTED)return 0===e.avail_out&&(r.last_flush=-1),Z_OK$3;if(i===BS_BLOCK_DONE&&(t===Z_PARTIAL_FLUSH?_tr_align(r):t!==Z_BLOCK$1&&(_tr_stored_block(r,0,0,!1),t===Z_FULL_FLUSH$1&&(zero(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),flush_pending(e),0===e.avail_out))return r.last_flush=-1,Z_OK$3}return t!==Z_FINISH$3?Z_OK$3:r.wrap<=0?Z_STREAM_END$3:(2===r.wrap?(put_byte(r,255&e.adler),put_byte(r,e.adler>>8&255),put_byte(r,e.adler>>16&255),put_byte(r,e.adler>>24&255),put_byte(r,255&e.total_in),put_byte(r,e.total_in>>8&255),put_byte(r,e.total_in>>16&255),put_byte(r,e.total_in>>24&255)):(putShortMSB(r,e.adler>>>16),putShortMSB(r,65535&e.adler)),flush_pending(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?Z_OK$3:Z_STREAM_END$3)},deflateEnd=e=>{if(!e||!e.state)return Z_STREAM_ERROR$2;const t=e.state.status;return t!==INIT_STATE&&t!==EXTRA_STATE&&t!==NAME_STATE&&t!==COMMENT_STATE&&t!==HCRC_STATE&&t!==BUSY_STATE&&t!==FINISH_STATE?err(e,Z_STREAM_ERROR$2):(e.state=null,t===BUSY_STATE?err(e,Z_DATA_ERROR$2):Z_OK$3)},deflateSetDictionary=(e,t)=>{let i=t.length;if(!e||!e.state)return Z_STREAM_ERROR$2;const n=e.state,r=n.wrap;if(2===r||1===r&&n.status!==INIT_STATE||n.lookahead)return Z_STREAM_ERROR$2;if(1===r&&(e.adler=adler32(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===r&&(zero(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const o=e.avail_in,a=e.next_in,s=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,fill_window(n);n.lookahead>=MIN_MATCH;){let e=n.strstart,t=n.lookahead-(MIN_MATCH-1);do{n.ins_h=HASH(n,n.ins_h,n.window[e+MIN_MATCH-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=MIN_MATCH-1,fill_window(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=MIN_MATCH-1,n.match_available=0,e.next_in=a,e.input=s,e.avail_in=o,n.wrap=r,Z_OK$3};var deflateInit_1=deflateInit,deflateInit2_1=deflateInit2,deflateReset_1=deflateReset,deflateResetKeep_1=deflateResetKeep,deflateSetHeader_1=deflateSetHeader,deflate_2$1=deflate$2,deflateEnd_1=deflateEnd,deflateSetDictionary_1=deflateSetDictionary,deflateInfo="pako deflate (from Nodeca project)",deflate_1$2={deflateInit:deflateInit_1,deflateInit2:deflateInit2_1,deflateReset:deflateReset_1,deflateResetKeep:deflateResetKeep_1,deflateSetHeader:deflateSetHeader_1,deflate:deflate_2$1,deflateEnd:deflateEnd_1,deflateSetDictionary:deflateSetDictionary_1,deflateInfo:deflateInfo};const _has=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var assign=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)_has(i,t)&&(e[t]=i[t])}}return e},flattenChunks=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,r=e.length;t<r;t++){let r=e[t];i.set(r,n),n+=r.length}return i},common={assign:assign,flattenChunks:flattenChunks};let STR_APPLY_UIA_OK=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){STR_APPLY_UIA_OK=!1}const _utf8len=new Uint8Array(256);for(let e=0;e<256;e++)_utf8len[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;_utf8len[254]=_utf8len[254]=1;var string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,r,o,a=e.length,s=0;for(r=0;r<a;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<a&&(n=e.charCodeAt(r+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),r++)),s+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(s),o=0,r=0;o<s;r++)i=e.charCodeAt(r),55296==(64512&i)&&r+1<a&&(n=e.charCodeAt(r+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),r++)),i<128?t[o++]=i:i<2048?(t[o++]=192|i>>>6,t[o++]=128|63&i):i<65536?(t[o++]=224|i>>>12,t[o++]=128|i>>>6&63,t[o++]=128|63&i):(t[o++]=240|i>>>18,t[o++]=128|i>>>12&63,t[o++]=128|i>>>6&63,t[o++]=128|63&i);return t};const buf2binstring=(e,t)=>{if(t<65534&&e.subarray&&STR_APPLY_UIA_OK)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let n=0;n<t;n++)i+=String.fromCharCode(e[n]);return i};var buf2string=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let n,r;const o=new Array(2*i);for(r=0,n=0;n<i;){let t=e[n++];if(t<128){o[r++]=t;continue}let a=_utf8len[t];if(a>4)o[r++]=65533,n+=a-1;else{for(t&=2===a?31:3===a?15:7;a>1&&n<i;)t=t<<6|63&e[n++],a--;a>1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return buf2binstring(o,r)},utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+_utf8len[e[i]]>t?i:t},strings$1={string2buf:string2buf,buf2string:buf2string,utf8border:utf8border};function ZStream$1(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var zstream=ZStream$1,zlib_deflate=deflate_1$2,utils=common,strings=strings$1,ZStream=zstream;const toString$1=Object.prototype.toString,{Z_NO_FLUSH:Z_NO_FLUSH$1,Z_SYNC_FLUSH:Z_SYNC_FLUSH,Z_FULL_FLUSH:Z_FULL_FLUSH,Z_FINISH:Z_FINISH$2,Z_OK:Z_OK$2,Z_STREAM_END:Z_STREAM_END$2,Z_DEFAULT_COMPRESSION:Z_DEFAULT_COMPRESSION,Z_DEFAULT_STRATEGY:Z_DEFAULT_STRATEGY,Z_DEFLATED:Z_DEFLATED$1}=constants$2;function Deflate$1(e){this.options=utils.assign({level:Z_DEFAULT_COMPRESSION,method:Z_DEFLATED$1,chunkSize:16384,windowBits:15,memLevel:8,strategy:Z_DEFAULT_STRATEGY},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ZStream,this.strm.avail_out=0;let i=zlib_deflate.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==Z_OK$2)throw new Error(msg[i]);if(t.header&&zlib_deflate.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?strings.string2buf(t.dictionary):"[object ArrayBuffer]"===toString$1.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=zlib_deflate.deflateSetDictionary(this.strm,e),i!==Z_OK$2)throw new Error(msg[i]);this._dict_set=!0}}function deflate$1(e,t){const i=new Deflate$1(t);if(i.push(e,!0),i.err)throw i.msg||msg[i.err];return i.result}function deflateRaw$1(e,t){return(t=t||{}).raw=!0,deflate$1(e,t)}function gzip$1(e,t){return(t=t||{}).gzip=!0,deflate$1(e,t)}Deflate$1.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?Z_FINISH$2:Z_NO_FLUSH$1,"string"==typeof e?i.input=strings.string2buf(e):"[object ArrayBuffer]"===toString$1.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(o===Z_SYNC_FLUSH||o===Z_FULL_FLUSH)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(r=zlib_deflate.deflate(i,o),r===Z_STREAM_END$2)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),r=zlib_deflate.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Z_OK$2;if(0!==i.avail_out){if(o>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},Deflate$1.prototype.onData=function(e){this.chunks.push(e)},Deflate$1.prototype.onEnd=function(e){e===Z_OK$2&&(this.result=utils.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Deflate_1$1=Deflate$1,deflate_2=deflate$1,deflateRaw_1$1=deflateRaw$1,gzip_1$1=gzip$1,constants$1=constants$2,deflate_1$1={Deflate:Deflate_1$1,deflate:deflate_2,deflateRaw:deflateRaw_1$1,gzip:gzip_1$1,constants:constants$1};const BAD$1=30,TYPE$1=12;var inffast=function(e,t){let i,n,r,o,a,s,c,l,d,u,h,p,f,m,g,v,_,S,y,b,k,T,C,w;const I=e.state;i=e.next_in,C=e.input,n=i+(e.avail_in-5),r=e.next_out,w=e.output,o=r-(t-e.avail_out),a=r+(e.avail_out-257),s=I.dmax,c=I.wsize,l=I.whave,d=I.wnext,u=I.window,h=I.hold,p=I.bits,f=I.lencode,m=I.distcode,g=(1<<I.lenbits)-1,v=(1<<I.distbits)-1;e:do{p<15&&(h+=C[i++]<<p,p+=8,h+=C[i++]<<p,p+=8),_=f[h&g];t:for(;;){if(S=_>>>24,h>>>=S,p-=S,S=_>>>16&255,0===S)w[r++]=65535&_;else{if(!(16&S)){if(0==(64&S)){_=f[(65535&_)+(h&(1<<S)-1)];continue t}if(32&S){I.mode=TYPE$1;break e}e.msg="invalid literal/length code",I.mode=BAD$1;break e}y=65535&_,S&=15,S&&(p<S&&(h+=C[i++]<<p,p+=8),y+=h&(1<<S)-1,h>>>=S,p-=S),p<15&&(h+=C[i++]<<p,p+=8,h+=C[i++]<<p,p+=8),_=m[h&v];i:for(;;){if(S=_>>>24,h>>>=S,p-=S,S=_>>>16&255,!(16&S)){if(0==(64&S)){_=m[(65535&_)+(h&(1<<S)-1)];continue i}e.msg="invalid distance code",I.mode=BAD$1;break e}if(b=65535&_,S&=15,p<S&&(h+=C[i++]<<p,p+=8,p<S&&(h+=C[i++]<<p,p+=8)),b+=h&(1<<S)-1,b>s){e.msg="invalid distance too far back",I.mode=BAD$1;break e}if(h>>>=S,p-=S,S=r-o,b>S){if(S=b-S,S>l&&I.sane){e.msg="invalid distance too far back",I.mode=BAD$1;break e}if(k=0,T=u,0===d){if(k+=c-S,S<y){y-=S;do{w[r++]=u[k++]}while(--S);k=r-b,T=w}}else if(d<S){if(k+=c+d-S,S-=d,S<y){y-=S;do{w[r++]=u[k++]}while(--S);if(k=0,d<y){S=d,y-=S;do{w[r++]=u[k++]}while(--S);k=r-b,T=w}}}else if(k+=d-S,S<y){y-=S;do{w[r++]=u[k++]}while(--S);k=r-b,T=w}for(;y>2;)w[r++]=T[k++],w[r++]=T[k++],w[r++]=T[k++],y-=3;y&&(w[r++]=T[k++],y>1&&(w[r++]=T[k++]))}else{k=r-b;do{w[r++]=w[k++],w[r++]=w[k++],w[r++]=w[k++],y-=3}while(y>2);y&&(w[r++]=w[k++],y>1&&(w[r++]=w[k++]))}break}}break}}while(i<n&&r<a);y=p>>3,i-=y,p-=y<<3,h&=(1<<p)-1,e.next_in=i,e.next_out=r,e.avail_in=i<n?n-i+5:5-(i-n),e.avail_out=r<a?a-r+257:257-(r-a),I.hold=h,I.bits=p};const MAXBITS=15,ENOUGH_LENS$1=852,ENOUGH_DISTS$1=592,CODES$1=0,LENS$1=1,DISTS$1=2,lbase=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),lext=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),dbase=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),dext=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),inflate_table$1=(e,t,i,n,r,o,a,s)=>{const c=s.bits;let l,d,u,h,p,f,m=0,g=0,v=0,_=0,S=0,y=0,b=0,k=0,T=0,C=0,w=null,I=0;const E=new Uint16Array(MAXBITS+1),R=new Uint16Array(MAXBITS+1);let M,P,A,D=null,O=0;for(m=0;m<=MAXBITS;m++)E[m]=0;for(g=0;g<n;g++)E[t[i+g]]++;for(S=c,_=MAXBITS;_>=1&&0===E[_];_--);if(S>_&&(S=_),0===_)return r[o++]=20971520,r[o++]=20971520,s.bits=1,0;for(v=1;v<_&&0===E[v];v++);for(S<v&&(S=v),k=1,m=1;m<=MAXBITS;m++)if(k<<=1,k-=E[m],k<0)return-1;if(k>0&&(e===CODES$1||1!==_))return-1;for(R[1]=0,m=1;m<MAXBITS;m++)R[m+1]=R[m]+E[m];for(g=0;g<n;g++)0!==t[i+g]&&(a[R[t[i+g]]++]=g);if(e===CODES$1?(w=D=a,f=19):e===LENS$1?(w=lbase,I-=257,D=lext,O-=257,f=256):(w=dbase,D=dext,f=-1),C=0,g=0,m=v,p=o,y=S,b=0,u=-1,T=1<<S,h=T-1,e===LENS$1&&T>ENOUGH_LENS$1||e===DISTS$1&&T>ENOUGH_DISTS$1)return 1;for(;;){M=m-b,a[g]<f?(P=0,A=a[g]):a[g]>f?(P=D[O+a[g]],A=w[I+a[g]]):(P=96,A=0),l=1<<m-b,d=1<<y,v=d;do{d-=l,r[p+(C>>b)+d]=M<<24|P<<16|A|0}while(0!==d);for(l=1<<m-1;C&l;)l>>=1;if(0!==l?(C&=l-1,C+=l):C=0,g++,0==--E[m]){if(m===_)break;m=t[i+a[g]]}if(m>S&&(C&h)!==u){for(0===b&&(b=S),p+=v,y=m-b,k=1<<y;y+b<_&&(k-=E[y+b],!(k<=0));)y++,k<<=1;if(T+=1<<y,e===LENS$1&&T>ENOUGH_LENS$1||e===DISTS$1&&T>ENOUGH_DISTS$1)return 1;u=C&h,r[u]=S<<24|y<<16|p-o|0}}return 0!==C&&(r[p+C]=m-b<<24|64<<16|0),s.bits=S,0};var inftrees=inflate_table$1,inflate_fast=inffast,inflate_table=inftrees;const CODES=0,LENS=1,DISTS=2,{Z_FINISH:Z_FINISH$1,Z_BLOCK:Z_BLOCK,Z_TREES:Z_TREES,Z_OK:Z_OK$1,Z_STREAM_END:Z_STREAM_END$1,Z_NEED_DICT:Z_NEED_DICT$1,Z_STREAM_ERROR:Z_STREAM_ERROR$1,Z_DATA_ERROR:Z_DATA_ERROR$1,Z_MEM_ERROR:Z_MEM_ERROR$1,Z_BUF_ERROR:Z_BUF_ERROR,Z_DEFLATED:Z_DEFLATED}=constants$2,HEAD=1,FLAGS=2,TIME=3,OS=4,EXLEN=5,EXTRA=6,NAME=7,COMMENT=8,HCRC=9,DICTID=10,DICT=11,TYPE=12,TYPEDO=13,STORED=14,COPY_=15,COPY=16,TABLE=17,LENLENS=18,CODELENS=19,LEN_=20,LEN=21,LENEXT=22,DIST=23,DISTEXT=24,MATCH=25,LIT=26,CHECK=27,LENGTH=28,DONE=29,BAD=30,MEM=31,SYNC=32,ENOUGH_LENS=852,ENOUGH_DISTS=592,MAX_WBITS=15,DEF_WBITS=MAX_WBITS,zswap32=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function InflateState(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const inflateResetKeep=e=>{if(!e||!e.state)return Z_STREAM_ERROR$1;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=HEAD,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(ENOUGH_LENS),t.distcode=t.distdyn=new Int32Array(ENOUGH_DISTS),t.sane=1,t.back=-1,Z_OK$1},inflateReset=e=>{if(!e||!e.state)return Z_STREAM_ERROR$1;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,inflateResetKeep(e)},inflateReset2=(e,t)=>{let i;if(!e||!e.state)return Z_STREAM_ERROR$1;const n=e.state;return t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Z_STREAM_ERROR$1:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,inflateReset(e))},inflateInit2=(e,t)=>{if(!e)return Z_STREAM_ERROR$1;const i=new InflateState;e.state=i,i.window=null;const n=inflateReset2(e,t);return n!==Z_OK$1&&(e.state=null),n},inflateInit=e=>inflateInit2(e,DEF_WBITS);let virgin=!0,lenfix,distfix;const fixedtables=e=>{if(virgin){lenfix=new Int32Array(512),distfix=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(inflate_table(LENS,e.lens,0,288,lenfix,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;inflate_table(DISTS,e.lens,0,32,distfix,0,e.work,{bits:5}),virgin=!1}e.lencode=lenfix,e.lenbits=9,e.distcode=distfix,e.distbits=5},updatewindow=(e,t,i,n)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(i-o.wsize,i),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>n&&(r=n),o.window.set(t.subarray(i-n,i-n+r),o.wnext),(n-=r)?(o.window.set(t.subarray(i-n,i),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=r))),0},inflate$2=(e,t)=>{let i,n,r,o,a,s,c,l,d,u,h,p,f,m,g,v,_,S,y,b,k,T,C=0;const w=new Uint8Array(4);let I,E;const R=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return Z_STREAM_ERROR$1;i=e.state,i.mode===TYPE&&(i.mode=TYPEDO),a=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=i.hold,d=i.bits,u=s,h=c,T=Z_OK$1;e:for(;;)switch(i.mode){case HEAD:if(0===i.wrap){i.mode=TYPEDO;break}for(;d<16;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(2&i.wrap&&35615===l){i.check=0,w[0]=255&l,w[1]=l>>>8&255,i.check=crc32(i.check,w,2,0),l=0,d=0,i.mode=FLAGS;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",i.mode=BAD;break}if((15&l)!==Z_DEFLATED){e.msg="unknown compression method",i.mode=BAD;break}if(l>>>=4,d-=4,k=8+(15&l),0===i.wbits)i.wbits=k;else if(k>i.wbits){e.msg="invalid window size",i.mode=BAD;break}i.dmax=1<<i.wbits,e.adler=i.check=1,i.mode=512&l?DICTID:TYPE,l=0,d=0;break;case FLAGS:for(;d<16;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(i.flags=l,(255&i.flags)!==Z_DEFLATED){e.msg="unknown compression method",i.mode=BAD;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=BAD;break}i.head&&(i.head.text=l>>8&1),512&i.flags&&(w[0]=255&l,w[1]=l>>>8&255,i.check=crc32(i.check,w,2,0)),l=0,d=0,i.mode=TIME;case TIME:for(;d<32;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.head&&(i.head.time=l),512&i.flags&&(w[0]=255&l,w[1]=l>>>8&255,w[2]=l>>>16&255,w[3]=l>>>24&255,i.check=crc32(i.check,w,4,0)),l=0,d=0,i.mode=OS;case OS:for(;d<16;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.head&&(i.head.xflags=255&l,i.head.os=l>>8),512&i.flags&&(w[0]=255&l,w[1]=l>>>8&255,i.check=crc32(i.check,w,2,0)),l=0,d=0,i.mode=EXLEN;case EXLEN:if(1024&i.flags){for(;d<16;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.length=l,i.head&&(i.head.extra_len=l),512&i.flags&&(w[0]=255&l,w[1]=l>>>8&255,i.check=crc32(i.check,w,2,0)),l=0,d=0}else i.head&&(i.head.extra=null);i.mode=EXTRA;case EXTRA:if(1024&i.flags&&(p=i.length,p>s&&(p=s),p&&(i.head&&(k=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(n.subarray(o,o+p),k)),512&i.flags&&(i.check=crc32(i.check,n,p,o)),s-=p,o+=p,i.length-=p),i.length))break e;i.length=0,i.mode=NAME;case NAME:if(2048&i.flags){if(0===s)break e;p=0;do{k=n[o+p++],i.head&&k&&i.length<65536&&(i.head.name+=String.fromCharCode(k))}while(k&&p<s);if(512&i.flags&&(i.check=crc32(i.check,n,p,o)),s-=p,o+=p,k)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=COMMENT;case COMMENT:if(4096&i.flags){if(0===s)break e;p=0;do{k=n[o+p++],i.head&&k&&i.length<65536&&(i.head.comment+=String.fromCharCode(k))}while(k&&p<s);if(512&i.flags&&(i.check=crc32(i.check,n,p,o)),s-=p,o+=p,k)break e}else i.head&&(i.head.comment=null);i.mode=HCRC;case HCRC:if(512&i.flags){for(;d<16;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(l!==(65535&i.check)){e.msg="header crc mismatch",i.mode=BAD;break}l=0,d=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=TYPE;break;case DICTID:for(;d<32;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}e.adler=i.check=zswap32(l),l=0,d=0,i.mode=DICT;case DICT:if(0===i.havedict)return e.next_out=a,e.avail_out=c,e.next_in=o,e.avail_in=s,i.hold=l,i.bits=d,Z_NEED_DICT$1;e.adler=i.check=1,i.mode=TYPE;case TYPE:if(t===Z_BLOCK||t===Z_TREES)break e;case TYPEDO:if(i.last){l>>>=7&d,d-=7&d,i.mode=CHECK;break}for(;d<3;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}switch(i.last=1&l,l>>>=1,d-=1,3&l){case 0:i.mode=STORED;break;case 1:if(fixedtables(i),i.mode=LEN_,t===Z_TREES){l>>>=2,d-=2;break e}break;case 2:i.mode=TABLE;break;case 3:e.msg="invalid block type",i.mode=BAD}l>>>=2,d-=2;break;case STORED:for(l>>>=7&d,d-=7&d;d<32;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if((65535&l)!=(l>>>16^65535)){e.msg="invalid stored block lengths",i.mode=BAD;break}if(i.length=65535&l,l=0,d=0,i.mode=COPY_,t===Z_TREES)break e;case COPY_:i.mode=COPY;case COPY:if(p=i.length,p){if(p>s&&(p=s),p>c&&(p=c),0===p)break e;r.set(n.subarray(o,o+p),a),s-=p,o+=p,c-=p,a+=p,i.length-=p;break}i.mode=TYPE;break;case TABLE:for(;d<14;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(i.nlen=257+(31&l),l>>>=5,d-=5,i.ndist=1+(31&l),l>>>=5,d-=5,i.ncode=4+(15&l),l>>>=4,d-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=BAD;break}i.have=0,i.mode=LENLENS;case LENLENS:for(;i.have<i.ncode;){for(;d<3;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.lens[R[i.have++]]=7&l,l>>>=3,d-=3}for(;i.have<19;)i.lens[R[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,I={bits:i.lenbits},T=inflate_table(CODES,i.lens,0,19,i.lencode,0,i.work,I),i.lenbits=I.bits,T){e.msg="invalid code lengths set",i.mode=BAD;break}i.have=0,i.mode=CODELENS;case CODELENS:for(;i.have<i.nlen+i.ndist;){for(;C=i.lencode[l&(1<<i.lenbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=d);){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(_<16)l>>>=g,d-=g,i.lens[i.have++]=_;else{if(16===_){for(E=g+2;d<E;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(l>>>=g,d-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=BAD;break}k=i.lens[i.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===_){for(E=g+3;d<E;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}l>>>=g,d-=g,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(E=g+7;d<E;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}l>>>=g,d-=g,k=0,p=11+(127&l),l>>>=7,d-=7}if(i.have+p>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=BAD;break}for(;p--;)i.lens[i.have++]=k}}if(i.mode===BAD)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=BAD;break}if(i.lenbits=9,I={bits:i.lenbits},T=inflate_table(LENS,i.lens,0,i.nlen,i.lencode,0,i.work,I),i.lenbits=I.bits,T){e.msg="invalid literal/lengths set",i.mode=BAD;break}if(i.distbits=6,i.distcode=i.distdyn,I={bits:i.distbits},T=inflate_table(DISTS,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,I),i.distbits=I.bits,T){e.msg="invalid distances set",i.mode=BAD;break}if(i.mode=LEN_,t===Z_TREES)break e;case LEN_:i.mode=LEN;case LEN:if(s>=6&&c>=258){e.next_out=a,e.avail_out=c,e.next_in=o,e.avail_in=s,i.hold=l,i.bits=d,inflate_fast(e,h),a=e.next_out,r=e.output,c=e.avail_out,o=e.next_in,n=e.input,s=e.avail_in,l=i.hold,d=i.bits,i.mode===TYPE&&(i.back=-1);break}for(i.back=0;C=i.lencode[l&(1<<i.lenbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=d);){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(v&&0==(240&v)){for(S=g,y=v,b=_;C=i.lencode[b+((l&(1<<S+y)-1)>>S)],g=C>>>24,v=C>>>16&255,_=65535&C,!(S+g<=d);){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}l>>>=S,d-=S,i.back+=S}if(l>>>=g,d-=g,i.back+=g,i.length=_,0===v){i.mode=LIT;break}if(32&v){i.back=-1,i.mode=TYPE;break}if(64&v){e.msg="invalid literal/length code",i.mode=BAD;break}i.extra=15&v,i.mode=LENEXT;case LENEXT:if(i.extra){for(E=i.extra;d<E;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.length+=l&(1<<i.extra)-1,l>>>=i.extra,d-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=DIST;case DIST:for(;C=i.distcode[l&(1<<i.distbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=d);){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(0==(240&v)){for(S=g,y=v,b=_;C=i.distcode[b+((l&(1<<S+y)-1)>>S)],g=C>>>24,v=C>>>16&255,_=65535&C,!(S+g<=d);){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}l>>>=S,d-=S,i.back+=S}if(l>>>=g,d-=g,i.back+=g,64&v){e.msg="invalid distance code",i.mode=BAD;break}i.offset=_,i.extra=15&v,i.mode=DISTEXT;case DISTEXT:if(i.extra){for(E=i.extra;d<E;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}i.offset+=l&(1<<i.extra)-1,l>>>=i.extra,d-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=BAD;break}i.mode=MATCH;case MATCH:if(0===c)break e;if(p=h-c,i.offset>p){if(p=i.offset-p,p>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=BAD;break}p>i.wnext?(p-=i.wnext,f=i.wsize-p):f=i.wnext-p,p>i.length&&(p=i.length),m=i.window}else m=r,f=a-i.offset,p=i.length;p>c&&(p=c),c-=p,i.length-=p;do{r[a++]=m[f++]}while(--p);0===i.length&&(i.mode=LEN);break;case LIT:if(0===c)break e;r[a++]=i.length,c--,i.mode=LEN;break;case CHECK:if(i.wrap){for(;d<32;){if(0===s)break e;s--,l|=n[o++]<<d,d+=8}if(h-=c,e.total_out+=h,i.total+=h,h&&(e.adler=i.check=i.flags?crc32(i.check,r,h,a-h):adler32(i.check,r,h,a-h)),h=c,(i.flags?l:zswap32(l))!==i.check){e.msg="incorrect data check",i.mode=BAD;break}l=0,d=0}i.mode=LENGTH;case LENGTH:if(i.wrap&&i.flags){for(;d<32;){if(0===s)break e;s--,l+=n[o++]<<d,d+=8}if(l!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=BAD;break}l=0,d=0}i.mode=DONE;case DONE:T=Z_STREAM_END$1;break e;case BAD:T=Z_DATA_ERROR$1;break e;case MEM:return Z_MEM_ERROR$1;default:return Z_STREAM_ERROR$1}return e.next_out=a,e.avail_out=c,e.next_in=o,e.avail_in=s,i.hold=l,i.bits=d,(i.wsize||h!==e.avail_out&&i.mode<BAD&&(i.mode<CHECK||t!==Z_FINISH$1))&&updatewindow(e,e.output,e.next_out,h-e.avail_out),u-=e.avail_in,h-=e.avail_out,e.total_in+=u,e.total_out+=h,i.total+=h,i.wrap&&h&&(e.adler=i.check=i.flags?crc32(i.check,r,h,e.next_out-h):adler32(i.check,r,h,e.next_out-h)),e.data_type=i.bits+(i.last?64:0)+(i.mode===TYPE?128:0)+(i.mode===LEN_||i.mode===COPY_?256:0),(0===u&&0===h||t===Z_FINISH$1)&&T===Z_OK$1&&(T=Z_BUF_ERROR),T},inflateEnd=e=>{if(!e||!e.state)return Z_STREAM_ERROR$1;let t=e.state;return t.window&&(t.window=null),e.state=null,Z_OK$1},inflateGetHeader=(e,t)=>{if(!e||!e.state)return Z_STREAM_ERROR$1;const i=e.state;return 0==(2&i.wrap)?Z_STREAM_ERROR$1:(i.head=t,t.done=!1,Z_OK$1)},inflateSetDictionary=(e,t)=>{const i=t.length;let n,r,o;return e&&e.state?(n=e.state,0!==n.wrap&&n.mode!==DICT?Z_STREAM_ERROR$1:n.mode===DICT&&(r=1,r=adler32(r,t,i,0),r!==n.check)?Z_DATA_ERROR$1:(o=updatewindow(e,t,i,i),o?(n.mode=MEM,Z_MEM_ERROR$1):(n.havedict=1,Z_OK$1))):Z_STREAM_ERROR$1};var inflateReset_1=inflateReset,inflateReset2_1=inflateReset2,inflateResetKeep_1=inflateResetKeep,inflateInit_1=inflateInit,inflateInit2_1=inflateInit2,inflate_2$1=inflate$2,inflateEnd_1=inflateEnd,inflateGetHeader_1=inflateGetHeader,inflateSetDictionary_1=inflateSetDictionary,inflateInfo="pako inflate (from Nodeca project)",inflate_1$2={inflateReset:inflateReset_1,inflateReset2:inflateReset2_1,inflateResetKeep:inflateResetKeep_1,inflateInit:inflateInit_1,inflateInit2:inflateInit2_1,inflate:inflate_2$1,inflateEnd:inflateEnd_1,inflateGetHeader:inflateGetHeader_1,inflateSetDictionary:inflateSetDictionary_1,inflateInfo:inflateInfo};function GZheader$1(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var gzheader=GZheader$1,zlib_inflate=inflate_1$2,GZheader=gzheader;const toString=Object.prototype.toString,{Z_NO_FLUSH:Z_NO_FLUSH,Z_FINISH:Z_FINISH,Z_OK:Z_OK,Z_STREAM_END:Z_STREAM_END,Z_NEED_DICT:Z_NEED_DICT,Z_STREAM_ERROR:Z_STREAM_ERROR,Z_DATA_ERROR:Z_DATA_ERROR,Z_MEM_ERROR:Z_MEM_ERROR}=constants$2;function Inflate$1(e){this.options=utils.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ZStream,this.strm.avail_out=0;let i=zlib_inflate.inflateInit2(this.strm,t.windowBits);if(i!==Z_OK)throw new Error(msg[i]);if(this.header=new GZheader,zlib_inflate.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=strings.string2buf(t.dictionary):"[object ArrayBuffer]"===toString.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=zlib_inflate.inflateSetDictionary(this.strm,t.dictionary),i!==Z_OK)))throw new Error(msg[i])}function inflate$1(e,t){const i=new Inflate$1(t);if(i.push(e),i.err)throw i.msg||msg[i.err];return i.result}function inflateRaw$1(e,t){return(t=t||{}).raw=!0,inflate$1(e,t)}Inflate$1.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize,r=this.options.dictionary;let o,a,s;if(this.ended)return!1;for(a=t===~~t?t:!0===t?Z_FINISH:Z_NO_FLUSH,"[object ArrayBuffer]"===toString.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),o=zlib_inflate.inflate(i,a),o===Z_NEED_DICT&&r&&(o=zlib_inflate.inflateSetDictionary(i,r),o===Z_OK?o=zlib_inflate.inflate(i,a):o===Z_DATA_ERROR&&(o=Z_NEED_DICT));i.avail_in>0&&o===Z_STREAM_END&&i.state.wrap>0&&0!==e[i.next_in];)zlib_inflate.inflateReset(i),o=zlib_inflate.inflate(i,a);switch(o){case Z_STREAM_ERROR:case Z_DATA_ERROR:case Z_NEED_DICT:case Z_MEM_ERROR:return this.onEnd(o),this.ended=!0,!1}if(s=i.avail_out,i.next_out&&(0===i.avail_out||o===Z_STREAM_END))if("string"===this.options.to){let e=strings.utf8border(i.output,i.next_out),t=i.next_out-e,r=strings.buf2string(i.output,e);i.next_out=t,i.avail_out=n-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(r)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(o!==Z_OK||0!==s){if(o===Z_STREAM_END)return o=zlib_inflate.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},Inflate$1.prototype.onData=function(e){this.chunks.push(e)},Inflate$1.prototype.onEnd=function(e){e===Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=utils.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Inflate_1$1=Inflate$1,inflate_2=inflate$1,inflateRaw_1$1=inflateRaw$1,ungzip$1=inflate$1,constants=constants$2,inflate_1$1={Inflate:Inflate_1$1,inflate:inflate_2,inflateRaw:inflateRaw_1$1,ungzip:ungzip$1,constants:constants},require$$0$1=deflate_1$1,require$$1=inflate_1$1;const{Deflate:Deflate,deflate:deflate,deflateRaw:deflateRaw,gzip:gzip}=require$$0$1,{Inflate:Inflate,inflate:inflate,inflateRaw:inflateRaw,ungzip:ungzip}=require$$1;var Deflate_1=Deflate,deflate_1=deflate,deflateRaw_1=deflateRaw,gzip_1=gzip,Inflate_1=Inflate,inflate_1=inflate,inflateRaw_1=inflateRaw,ungzip_1=ungzip,constants_1=constants$2,pako$1={Deflate:Deflate_1,deflate:deflate_1,deflateRaw:deflateRaw_1,gzip:gzip_1,Inflate:Inflate_1,inflate:inflate_1,inflateRaw:inflateRaw_1,ungzip:ungzip_1,constants:constants_1},pako=pako$1;class ZLIBTextCompressor{constructor(e){this.logger=e}compress(e,t){if(t.length>0){const e=Math.min(t.length,ZLIBTextCompressor.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}const i={memLevel:ZLIBTextCompressor.Z_MEM_LEVEL,dictionary:t};return pako.deflateRaw(e,i)}decompress(e,t){if(t.length>0){const e=Math.min(t.length,ZLIBTextCompressor.MAX_DICTIONARY_SIZE);t=t.slice(0,e)}const i={to:"string",dictionary:t,chunkSize:4096};let n="";try{n=pako.inflateRaw(e,i)}catch(e){this.logger.error(`failed to decompress the string with error: [${e}]`)}return n}}var _default$1b=ZLIBTextCompressor;ZLIBTextCompressor.Z_MEM_LEVEL=9,ZLIBTextCompressor.MAX_DICTIONARY_SIZE=31744;var ZLIBTextCompressor_1$1=Object.defineProperty({default:_default$1b},"__esModule",{value:!0});class SignalingClientSubscribe{constructor(e,t,i,n,r,o,a,s,c,l){this.attendeeId=e,this.sdpOffer=t,this.audioHost=i,this.audioMuted=n,this.audioCheckin=r,this.receiveStreamIds=o,this.localVideoEnabled=a,this.videoStreamDescriptions=s,this.connectionTypeHasVideo=c,this.compressedSdpOffer=l}}var _default$1a=SignalingClientSubscribe,SignalingClientSubscribe_1$1=Object.defineProperty({default:_default$1a},"__esModule",{value:!0}),ZLIBTextCompressor_1=ZLIBTextCompressor_1$1,SignalingClientSubscribe_1=SignalingClientSubscribe_1$1,__awaiter$n=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SubscribeAndReceiveSubscribeAckTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="SubscribeAndReceiveSubscribeAckTask",this.taskCanceler=null,this.textCompressor=new ZLIBTextCompressor_1.default(e.logger)}cancel(){this.taskCanceler&&(this.taskCanceler.cancel(),this.taskCanceler=null)}run(){return __awaiter$n(this,void 0,void 0,(function*(){let e="";if(this.context.peer&&this.context.peer.localDescription&&(e=this.context.browserBehavior.requiresUnifiedPlanMunging()?new DefaultSDP_1.default(this.context.peer.localDescription.sdp).withUnifiedPlanFormat().sdp:this.context.peer.localDescription.sdp),!this.context.enableSimulcast){let e=0,t=0;this.context.videoCaptureAndEncodeParameter&&(e=this.context.videoCaptureAndEncodeParameter.captureFrameRate(),t=this.context.videoCaptureAndEncodeParameter.encodeBitrates()[0]);const i={rid:"hi",maxBitrate:1e3*t,maxFramerate:e,active:!0};this.context.videoStreamIndex.integrateUplinkPolicyDecision([i])}this.context.videoStreamIndex.subscribeFrameSent();const t=this.context.browserBehavior.requiresUnifiedPlan()?this.fixUpSubscriptionOrder(e,this.context.videoSubscriptions):this.context.videoSubscriptions,i=this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.TX||this.context.videoDuplexMode===SignalingProtocol_js_1.SdkStreamServiceType.DUPLEX;let n;const r=e;if(this.context.serverSupportsCompression){const t=this.context.previousSdpOffer?this.context.previousSdpOffer.sdp:"";n=this.textCompressor.compress(r,t),this.context.logger.info(`Compressed the SDP message from ${r.length} to ${n.length} bytes.`),e=""}this.context.previousSdpOffer=new DefaultSDP_1.default(r);const o=new SignalingClientSubscribe_1.default(this.context.meetingSessionConfiguration.credentials.attendeeId,e,this.context.meetingSessionConfiguration.urls.audioHostURL,this.context.realtimeController.realtimeIsLocalAudioMuted(),!1,t,i,this.context.videoStreamIndex.localStreamDescriptions(),!0,n);this.context.logger.info(`sending subscribe: ${JSON.stringify(o)}`),this.context.signalingClient.subscribe(o);const a=yield this.receiveSubscribeAck();this.context.logger.info(`got subscribe ack: ${JSON.stringify(a)}`);let s="";a.compressedSdpAnswer&&a.compressedSdpAnswer.length?(s=this.textCompressor.decompress(a.compressedSdpAnswer,this.context.previousSdpAnswerAsString),0===s.length&&(this.context.sdpAnswer="",this.context.previousSdpAnswerAsString="",this.logAndThrow("Error occurred while trying to decompress the SDP answer.")),this.context.logger.info(`Decompressed the SDP message from ${a.compressedSdpAnswer.length} to ${s.length} bytes.`),this.context.sdpAnswer=s):this.context.sdpAnswer=a.sdpAnswer,this.context.previousSdpAnswerAsString=this.context.sdpAnswer,this.context.videoStreamIndex.integrateSubscribeAckFrame(a)}))}fixUpSubscriptionOrder(e,t){if(void 0===this.context.transceiverController.getMidForStreamId)return t;const i=new Map;for(const e of t){const t=this.context.transceiverController.getMidForStreamId(e);void 0!==t?i.set(t,e):0!==e&&this.context.logger.warn(`Could not find MID for stream ID: ${e}`)}const n=new DefaultSDP_1.default(e).mediaSections(),r=[];for(const e of n)if("video"===e.mediaType)if("recvonly"===e.direction){const t=i.get(e.mid);if(void 0===t){this.context.logger.warn(`Could not find stream ID for MID: ${e.mid}`);continue}r.push(t)}else r.push(0);return this.context.logger.info(`Fixed up ${JSON.stringify(t)} to ${JSON.stringify(r)} (may be same))}`),r}receiveSubscribeAck(){return new Promise(((e,t)=>{const i=this.context;const n=new class{constructor(e){this.signalingClient=e}cancel(){this.signalingClient.removeObserver(this),t(new Error("SubscribeAndReceiveSubscribeAckTask got canceled while waiting for SdkSubscribeAckFrame"))}handleSignalingClientEvent(t){if(t.isConnectionTerminated()){const e=`SubscribeAndReceiveSubscribeAckTask connection was terminated with code ${t.closeCode} and reason: ${t.closeReason}`;i.logger.warn(e);let n=MeetingSessionStatusCode_1.default.TaskFailed;return t.closeCode>=4500&&t.closeCode<4600&&(n=MeetingSessionStatusCode_1.default.SignalingInternalServerError),void i.audioVideoController.handleMeetingSessionStatus(new MeetingSessionStatus_1.default(n),new Error(e))}if(t.type!==SignalingClientEventType_1.default.ReceivedSignalFrame||t.message.type!==SignalingProtocol_js_1.SdkSignalFrame.Type.SUBSCRIBE_ACK)return;this.signalingClient.removeObserver(this);const n=t.message.suback;e(n)}}(this.context.signalingClient);this.context.signalingClient.registerObserver(n),this.taskCanceler=n}))}}var _default$19=SubscribeAndReceiveSubscribeAckTask,SubscribeAndReceiveSubscribeAckTask_1$1=Object.defineProperty({default:_default$19},"__esModule",{value:!0}),__awaiter$m=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class TimeoutTask extends BaseTask_1.default{constructor(e,t,i){super(e),this.taskToRunBeforeTimeout=t,this.timeoutMs=i,this.taskName=`Timeout${this.timeoutMs}ms`,t.setParent(this)}cancel(){this.logger.info(`canceling timeout task ${this.name()} subtask ${this.taskToRunBeforeTimeout}`),this.taskToRunBeforeTimeout.cancel()}run(){return __awaiter$m(this,void 0,void 0,(function*(){const e=new TimeoutScheduler_1.default(this.timeoutMs);e.start((()=>{this.logger.info(`timeout reached for task ${this.name()}`),this.taskToRunBeforeTimeout.cancel()}));try{yield this.taskToRunBeforeTimeout.run()}finally{e.stop()}this.logger.info(`timeout task ${this.name()} completed`)}))}}var _default$18=TimeoutTask,TimeoutTask_1$1=Object.defineProperty({default:_default$18},"__esModule",{value:!0}),__awaiter$l=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class WaitForAttendeePresenceTask extends BaseTask_1.default{constructor(e){super(e.logger),this.context=e,this.taskName="WaitForAttendeePresenceTask"}cancel(){if(this.cancelPromise){const e=new Error(`canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode_1.default.NoAttendeePresent}`);this.cancelPromise(e),delete this.cancelPromise}}run(){return __awaiter$l(this,void 0,void 0,(function*(){const e=this.context.meetingSessionConfiguration.credentials.attendeeId;return new Promise(((t,i)=>{const n=(i,r,o,a,s)=>{e===i&&r&&(this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(n),t(),delete this.cancelPromise)};this.cancelPromise=e=>{this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(n),i(e)},this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(n)}))}))}}var _default$17=WaitForAttendeePresenceTask,WaitForAttendeePresenceTask_1$1=Object.defineProperty({default:_default$17},"__esModule",{value:!0}),__awaiter$k=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultTransceiverController{constructor(e,t){this.logger=e,this.browserBehavior=t,this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer=null,this.streamIdToTransceiver=new Map}setEncodingParameters(e){return __awaiter$k(this,void 0,void 0,(function*(){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;const t=this._localCameraTransceiver.sender;if(!e||0===e.size)return;const i=Array.from(e.values()),n=t.getParameters();if(n.encodings&&0!==n.encodings.length)for(const e of n.encodings)for(const t of i){if((e.rid||t.rid)&&e.rid!==t.rid)continue;let i;for(i in t)"rid"!==i&&"codecPayloadType"!==i&&t.hasOwnProperty(i)&&(e[i]=t[i])}else n.encodings=i;yield t.setParameters(n)}))}static setVideoSendingBitrateKbpsForSender(e,t,i){return __awaiter$k(this,void 0,void 0,(function*(){if(!e||t<=0)return;const i=e.getParameters();i.encodings||(i.encodings=[{}]);for(const e of i.encodings)e.maxBitrate=1e3*t;yield e.setParameters(i)}))}static replaceAudioTrackForSender(e,t){return __awaiter$k(this,void 0,void 0,(function*(){return!!e&&(yield e.replaceTrack(t),!0)}))}localAudioTransceiver(){return this._localAudioTransceiver}localVideoTransceiver(){return this._localCameraTransceiver}setVideoSendingBitrateKbps(e){return __awaiter$k(this,void 0,void 0,(function*(){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;const t=this._localCameraTransceiver.sender;yield DefaultTransceiverController.setVideoSendingBitrateKbpsForSender(t,e,this.logger)}))}setPeer(e){this.peer=e}reset(){this._localCameraTransceiver=null,this._localAudioTransceiver=null,this.videoSubscriptions=[],this.defaultMediaStream=null,this.peer=null}useTransceivers(){return!(!this.peer||!this.browserBehavior.requiresUnifiedPlan())&&void 0!==this.peer.getTransceivers}hasVideoInput(){return!(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)}trackIsVideoInput(e){return!!this._localCameraTransceiver&&(e===this._localCameraTransceiver.sender.track||e===this._localCameraTransceiver.receiver.track)}setupLocalTransceivers(){this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localAudioTransceiver||(this._localAudioTransceiver=this.peer.addTransceiver("audio",{direction:"inactive",streams:[this.defaultMediaStream]})),this._localCameraTransceiver||(this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream]})))}replaceAudioTrack(e){return __awaiter$k(this,void 0,void 0,(function*(){return this._localAudioTransceiver&&"sendrecv"===this._localAudioTransceiver.direction?(yield this._localAudioTransceiver.sender.replaceTrack(e),!0):(this.logger.info("audio transceiver direction is not set up or not activated"),!1)}))}setAudioInput(e){return __awaiter$k(this,void 0,void 0,(function*(){yield this.setTransceiverInput(this._localAudioTransceiver,e)}))}setVideoInput(e){return __awaiter$k(this,void 0,void 0,(function*(){yield this.setTransceiverInput(this._localCameraTransceiver,e)}))}updateVideoTransceivers(e,t){if(!this.useTransceivers())return t.array();const i=this.peer.getTransceivers();return this.videoSubscriptions=[0],t=t.clone(),this.updateTransceivers(i,e,t),this.logger.debug((()=>this.debugDumpTransceivers())),this.videoSubscriptions}updateTransceivers(e,t,i){const n=i.array();0===e.length||e[0].stop?0!==e.length&&this.updateTransceiverWithStop(e,t,n):(this.logger.info("Updating transceivers without `stop` function"),this.updateTransceiverWithoutStop(e,t,n));for(const e of n){const t=this.peer.addTransceiver("video",{direction:"recvonly",streams:[new MediaStream]});this.streamIdToTransceiver.set(e,t),this.videoSubscriptions.push(e),this.logger.info(`adding transceiver mid: ${t.mid} subscription: ${e} direction: recvonly`)}}updateTransceiverWithStop(e,t,i){let n=1;this.videoSubscriptions=[0];for(const r of e){if(r===this._localCameraTransceiver||!this.transceiverIsVideo(r)||!r.mid)continue;let e=!1;const o=t.streamIdForTrack("v_"+r.mid);if("inactive"!==r.direction&&void 0!==o)for(const[a,s]of i.entries())if(t.StreamIdsInSameGroup(o,s)){r.direction="recvonly",this.videoSubscriptions[n]=s,e=!0,this.streamIdToTransceiver.delete(o),this.streamIdToTransceiver.set(s,r),i.splice(a,1);break}if(!e){this.videoSubscriptions[n]=0,this.logger.info(`Stopping MID: ${r.mid}, direction: ${r.direction}, current direction: ${r.currentDirection}`),r.stop();for(const[e,t]of this.streamIdToTransceiver.entries())r.mid===t.mid&&this.streamIdToTransceiver.delete(e)}n+=1}}updateTransceiverWithoutStop(e,t,i){let n=1;for(const r of e)if(r!==this._localCameraTransceiver&&this.transceiverIsVideo(r)){if(this.videoSubscriptions[n]=0,"inactive"!==r.direction){const e=t.streamIdForTrack("v_"+r.mid);if(void 0!==e)for(const[o,a]of i.entries())if(t.StreamIdsInSameGroup(e,a)){r.direction="recvonly",this.videoSubscriptions[n]=a,this.streamIdToTransceiver.delete(e),this.streamIdToTransceiver.set(a,r),i.splice(o,1);break}}n+=1}n=1;for(const t of e)if(t!==this._localCameraTransceiver&&this.transceiverIsVideo(t)){if("inactive"===t.direction&&i.length>0){t.direction="recvonly";const e=i.shift();this.videoSubscriptions[n]=e,this.streamIdToTransceiver.set(e,t)}else if(0===this.videoSubscriptions[n]){t.direction="inactive";for(const[e,i]of this.streamIdToTransceiver.entries())t===i&&this.streamIdToTransceiver.delete(e)}n+=1}}getMidForStreamId(e){var t;return null===(t=this.streamIdToTransceiver.get(e))||void 0===t?void 0:t.mid}setStreamIdForMid(e,t){for(const[i,n]of this.streamIdToTransceiver.entries())if(n.mid===e)return this.streamIdToTransceiver.delete(i),void this.streamIdToTransceiver.set(t,n)}transceiverIsVideo(e){return e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind||e.sender&&e.sender.track&&"video"===e.sender.track.kind}debugDumpTransceivers(){let e="",t=0;for(const i of this.peer.getTransceivers())this.transceiverIsVideo(i)&&(e+=`transceiver index=${t} mid=${i.mid} subscription=${this.videoSubscriptions[t]} direction=${i.direction}\n`,t+=1);return e}setTransceiverInput(e,t){return __awaiter$k(this,void 0,void 0,(function*(){e&&(e.direction=t?"sendrecv":"inactive",yield e.sender.replaceTrack(t))}))}}var _default$16=DefaultTransceiverController,DefaultTransceiverController_1$1=Object.defineProperty({default:_default$16},"__esModule",{value:!0}),DefaultTransceiverController_1=DefaultTransceiverController_1$1,__awaiter$j=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SimulcastTransceiverController extends DefaultTransceiverController_1.default{constructor(e,t){super(e,t),this.videoQualityControlParameterMap=new Map;let i=4;for(let e=0;e<SimulcastTransceiverController.NAME_ARR_ASCENDING.length;e++){const t=SimulcastTransceiverController.NAME_ARR_ASCENDING[e];this.videoQualityControlParameterMap.set(t,{rid:t,scaleResolutionDownBy:i,maxBitrate:1e3*SimulcastTransceiverController.BITRATE_ARR_ASCENDING[e]}),i/=2}}setEncodingParameters(e){return __awaiter$j(this,void 0,void 0,(function*(){if(!this._localCameraTransceiver||"sendrecv"!==this._localCameraTransceiver.direction)return;const t=this._localCameraTransceiver.sender,i=Array.from(e.values());if(i.length<=0)return;const n=t.getParameters();if(n.encodings)for(let t=0;t<n.encodings.length;t++)n.encodings[t].rid===SimulcastTransceiverController.LOW_LEVEL_NAME&&(n.encodings[t].maxBitrate=e.get(SimulcastTransceiverController.LOW_LEVEL_NAME).maxBitrate,n.encodings[t].active=e.get(SimulcastTransceiverController.LOW_LEVEL_NAME).active,n.encodings[t].scaleResolutionDownBy=e.get(SimulcastTransceiverController.LOW_LEVEL_NAME).scaleResolutionDownBy),n.encodings[t].rid===SimulcastTransceiverController.MID_LEVEL_NAME&&(n.encodings[t].maxBitrate=e.get(SimulcastTransceiverController.MID_LEVEL_NAME).maxBitrate,n.encodings[t].active=e.get(SimulcastTransceiverController.MID_LEVEL_NAME).active,n.encodings[t].scaleResolutionDownBy=e.get(SimulcastTransceiverController.MID_LEVEL_NAME).scaleResolutionDownBy),n.encodings[t].rid===SimulcastTransceiverController.HIGH_LEVEL_NAME&&(n.encodings[t].maxBitrate=e.get(SimulcastTransceiverController.HIGH_LEVEL_NAME).maxBitrate,n.encodings[t].active=e.get(SimulcastTransceiverController.HIGH_LEVEL_NAME).active,n.encodings[t].scaleResolutionDownBy=e.get(SimulcastTransceiverController.HIGH_LEVEL_NAME).scaleResolutionDownBy);else n.encodings=i;yield t.setParameters(n),this.logVideoTransceiverParameters()}))}static replaceAudioTrackForSender(e,t){return __awaiter$j(this,void 0,void 0,(function*(){return!!e&&(yield e.replaceTrack(t),!0)}))}setVideoSendingBitrateKbps(e){return __awaiter$j(this,void 0,void 0,(function*(){}))}setupLocalTransceivers(){if(this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localAudioTransceiver||(this._localAudioTransceiver=this.peer.addTransceiver("audio",{direction:"inactive",streams:[this.defaultMediaStream]})),!this._localCameraTransceiver)){const e=Array.from(this.videoQualityControlParameterMap.values());this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream],sendEncodings:e})}}logVideoTransceiverParameters(){const e=this._localCameraTransceiver.sender.getParameters().encodings;let t="simulcast: current encoding parameters \n";for(const i of e)t+=`rid=${i.rid} maxBitrate=${i.maxBitrate} active=${i.active} scaleDownBy=${i.scaleResolutionDownBy} \n`;this.logger.info(t)}}var _default$15=SimulcastTransceiverController;SimulcastTransceiverController.LOW_LEVEL_NAME="low",SimulcastTransceiverController.MID_LEVEL_NAME="mid",SimulcastTransceiverController.HIGH_LEVEL_NAME="hi",SimulcastTransceiverController.NAME_ARR_ASCENDING=["low","mid","hi"],SimulcastTransceiverController.BITRATE_ARR_ASCENDING=[200,400,1100];var SimulcastTransceiverController_1$1=Object.defineProperty({default:_default$15},"__esModule",{value:!0});class VideoOnlyTransceiverController extends DefaultTransceiverController_1.default{constructor(e,t){super(e,t)}setupLocalTransceivers(){this.useTransceivers()&&(this.defaultMediaStream||"undefined"==typeof MediaStream||(this.defaultMediaStream=new MediaStream),this._localCameraTransceiver||(this._localCameraTransceiver=this.peer.addTransceiver("video",{direction:"inactive",streams:[this.defaultMediaStream]})))}}var _default$14=VideoOnlyTransceiverController,VideoOnlyTransceiverController_1$1=Object.defineProperty({default:_default$14},"__esModule",{value:!0});class DefaultVideoCaptureAndEncodeParameter{constructor(e,t,i,n,r,o=1){this.cameraWidth=e,this.cameraHeight=t,this.cameraFrameRate=i,this.maxEncodeBitrateKbps=n,this.isSimulcast=r,this.scaleResolutionDownBy=o}equal(e){let t=e.captureWidth()===this.cameraWidth&&e.captureHeight()===this.cameraHeight&&e.captureFrameRate()===this.cameraFrameRate&&e.encodeBitrates().length===this.encodeBitrates().length&&e.encodeScaleResolutionDownBy().length===this.encodeScaleResolutionDownBy().length&&e.encodeWidths().length===this.encodeWidths().length&&e.encodeHeights().length===this.encodeHeights().length;if(t)for(let i=0;i<e.encodeWidths().length;i++)if(e.encodeWidths()[i]!==this.encodeWidths()[i]||e.encodeHeights()[i]!==this.encodeHeights()[i]||e.encodeBitrates()[i]!==this.encodeBitrates()[i]||e.encodeScaleResolutionDownBy()[i]!==this.encodeScaleResolutionDownBy()[i])return t=!1,t;return t}clone(){return new DefaultVideoCaptureAndEncodeParameter(this.cameraWidth,this.cameraHeight,this.cameraFrameRate,this.maxEncodeBitrateKbps,this.isSimulcast,this.scaleResolutionDownBy)}captureWidth(){return this.cameraWidth}captureHeight(){return this.cameraHeight}captureFrameRate(){return this.cameraFrameRate}encodeBitrates(){return[this.maxEncodeBitrateKbps]}encodeScaleResolutionDownBy(){return[this.scaleResolutionDownBy]}encodeWidths(){return[this.cameraWidth]}encodeHeights(){return[this.cameraHeight]}}var _default$13=DefaultVideoCaptureAndEncodeParameter,DefaultVideoCaptureAndEncodeParameter_1$1=Object.defineProperty({default:_default$13},"__esModule",{value:!0}),TargetDisplaySize_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.TargetDisplaySize=void 0,function(e){e[e.Low=0]="Low",e[e.Medium=1]="Medium",e[e.High=2]="High"}(i=t.TargetDisplaySize||(t.TargetDisplaySize={})),t.default=i})),TargetDisplaySize_1=TargetDisplaySize_1$1;class VideoPreference{constructor(e,t,i){this.attendeeId=e,this.priority=t,this.targetSize=void 0!==i?i:TargetDisplaySize_1.default.High}partialCompare(e){return this.priority-e.priority}equals(e){return this.attendeeId===e.attendeeId&&this.targetSize===e.targetSize&&this.priority===e.priority}clone(){return new VideoPreference(this.attendeeId,this.priority,this.targetSize)}targetSizeToBitrateKbps(e){switch(e){case TargetDisplaySize_1.default.High:return VideoPreference.HIGH_BITRATE_KBPS;case TargetDisplaySize_1.default.Medium:return VideoPreference.MID_BITRATE_KBPS;case TargetDisplaySize_1.default.Low:return VideoPreference.LOW_BITRATE_KBPS}}}var _default$12=VideoPreference;VideoPreference.LOW_BITRATE_KBPS=300,VideoPreference.MID_BITRATE_KBPS=600,VideoPreference.HIGH_BITRATE_KBPS=1200;var VideoPreference_1$1=Object.defineProperty({default:_default$12},"__esModule",{value:!0}),VideoPreferences_1$1=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VideoPreferences=t.MutableVideoPreferences=void 0;class i{constructor(e=[]){this.items=e}static default(){return new i([])}[Symbol.iterator](){let e=0;const t=this.items;return{next:()=>e<t.length?{done:!1,value:t[e++]}:{done:!0,value:null}}}first(){return this.items[0]}add(e){this.items.push(e)}replaceFirst(e,t){const i=this.items.findIndex(t);-1===i?this.items.push(e):this.has(e)?this.items.splice(i,1):this.items[i]=e}remove(e){this.items=this.items.filter((t=>!t.equals(e)))}clear(){this.items=[]}isEmpty(){return 0===this.items.length}equals(e){if(e===this)return!0;if(e.items.length!==this.items.length)return!1;for(const t of this.items)if(!e.items.some((e=>e.equals(t))))return!1;return!0}has(e){return this.items.some((t=>t.equals(e)))}some(e){return this.items.some(e)}clone(){return new i([...this.items])}sort(){this.items.sort(((e,t)=>e.partialCompare(t)))}modify(){return new n(this)}}class n{constructor(e=new i){this.items=e,this.copied=!1}cow(){this.copied||(this.items=this.items.clone(),this.copied=!0)}add(e){this.items.has(e)||(this.cow(),this.items.add(e))}replaceFirst(e,t){this.items.has(e)&&!this.items.some(t)||(this.cow(),this.items.replaceFirst(e,t))}remove(e){this.items.has(e)&&(this.cow(),this.items.remove(e))}some(e){return this.items.some(e)}clear(){this.items.isEmpty()||(this.cow(),this.items.clear())}build(){return this.copied&&this.items.sort(),this.copied=!1,this.items}}class r{constructor(e){this.builder=e}add(e){this.builder.add(e)}replaceFirst(e,t){this.builder.replaceFirst(e,t)}remove(e){this.builder.remove(e)}some(e){return this.builder.some(e)}clear(){this.builder.clear()}build(){return new o(this.builder.build())}}t.MutableVideoPreferences=r;class o{constructor(e){this.items=e}static prepare(){return new r(new n)}static default(){return new o(i.default())}[Symbol.iterator](){return this.items[Symbol.iterator]()}highestPriority(){var e;return null===(e=this.items.first())||void 0===e?void 0:e.priority}sorted(){return this.items[Symbol.iterator]()}equals(e){return e===this||this.items.equals(e.items)}modify(){return new r(this.items.modify())}some(e){return this.items.some(e)}isEmpty(){return this.items.isEmpty()}clone(){const e=o.prepare();for(const t of this.items)e.add(t.clone());return e.build()}}t.VideoPreferences=o,t.default=o}));class VideoPriorityBasedPolicyConfig{constructor(e=0,t=0){this.networkIssueResponseDelayFactor=e,this.networkIssueRecoveryDelayFactor=t,this.currentNetworkEvent=0,this.bandwidthDecreaseTimestamp=0,this.referenceBitrate=0,e<0?e=0:e>1&&(e=1),this.networkIssueResponseDelayFactor=e,t<0?t=0:t>1&&(t=1),this.networkIssueRecoveryDelayFactor=t}allowSubscribe(e,t){let i=0;const n=this.currentNetworkEvent;if(t>this.referenceBitrate)return this.currentNetworkEvent=2,this.referenceBitrate=t,!0;if(t<this.referenceBitrate){if(this.currentNetworkEvent=1,i=this.getSubscribeDelay(this.currentNetworkEvent,e),1!==n)this.bandwidthDecreaseTimestamp=Date.now();else if(Date.now()-this.bandwidthDecreaseTimestamp>i)return this.referenceBitrate=t,!0;return!1}return this.currentNetworkEvent=0,!1}getSubscribeDelay(e,t){let i=VideoPriorityBasedPolicyConfig.MINIMUM_DELAY_MS;const n=VideoPriorityBasedPolicyConfig.MAXIMUM_DELAY_MS-VideoPriorityBasedPolicyConfig.MINIMUM_DELAY_MS,r=this.networkIssueResponseDelayFactor;if(1===e)i+=n*r*(1+t/10),i=Math.min(VideoPriorityBasedPolicyConfig.MAXIMUM_DELAY_MS,i);return i}}var _default$11=VideoPriorityBasedPolicyConfig;VideoPriorityBasedPolicyConfig.MINIMUM_DELAY_MS=2e3,VideoPriorityBasedPolicyConfig.MAXIMUM_DELAY_MS=8e3,VideoPriorityBasedPolicyConfig.Default=new VideoPriorityBasedPolicyConfig(0,0),VideoPriorityBasedPolicyConfig.UnstableNetworkPreset=new VideoPriorityBasedPolicyConfig(0,1),VideoPriorityBasedPolicyConfig.StableNetworkPreset=new VideoPriorityBasedPolicyConfig(1,0);var VideoPriorityBasedPolicyConfig_1$1=Object.defineProperty({default:_default$11},"__esModule",{value:!0}),VideoPreference_1=VideoPreference_1$1,VideoPreferences_1=VideoPreferences_1$1,VideoPriorityBasedPolicyConfig_1=VideoPriorityBasedPolicyConfig_1$1;class LinkMediaStats{constructor(){this.bandwidthEstimateKbps=0,this.usedBandwidthKbps=0,this.packetsLost=0,this.nackCount=0,this.rttMs=0}}class VideoPriorityBasedPolicy{constructor(e,t=VideoPriorityBasedPolicyConfig_1.default.Default){this.logger=e,this.videoPriorityBasedPolicyConfig=t,this.shouldPauseTiles=!0,this.observerQueue=new Set,this.pausedBwAttendeeIds=new Set,this.reset()}reset(){this.optimalReceiveSet=new DefaultVideoStreamIdSet_1.default,this.optimalReceiveStreams=[],this.optimalNonPausedReceiveStreams=[],this.subscribedReceiveSet=new DefaultVideoStreamIdSet_1.default,this.subscribedReceiveStreams=[],this.videoPreferences=void 0,this.defaultVideoPreferences=void 0,this.shouldPauseTiles=!0,this.pausedStreamIds=new DefaultVideoStreamIdSet_1.default,this.pausedBwAttendeeIds=new Set,this.videoPreferencesUpdated=!1,this.logCount=0,this.startupPeriod=!0,this.usingPrevTargetRate=!1,this.rateProbeState="Not Probing",this.firstEstimateTimestamp=0,this.lastUpgradeRateKbps=0,this.timeBeforeAllowSubscribeMs=VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.lastProbeTimestamp=Date.now(),this.timeBeforeAllowProbeMs=VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS,this.downlinkStats=new LinkMediaStats,this.prevDownlinkStats=new LinkMediaStats,this.probeFailed=!1}bindToTileController(e){this.tileController=e,this.logger.info("tileController bound")}chooseRemoteVideoSources(e){var t;(null===(t=this.videoPreferences)||void 0===t?void 0:t.equals(e))||(this.videoPreferences=null==e?void 0:e.clone(),this.videoPreferencesUpdated=!0,this.logger.info(`bwe: setVideoPreferences bwe: new preferences: ${JSON.stringify(e)}`))}updateIndex(e){this.videoIndex=e,this.videoPreferences||this.updateDefaultVideoPreferences()}updateDefaultVideoPreferences(){const e=new Set;for(const t of this.videoIndex.remoteStreamDescriptions())e.add(t.attendeeId);const t=VideoPreferences_1.VideoPreferences.prepare(),i=e.size;let n=TargetDisplaySize_1.default.High;i>8?n=TargetDisplaySize_1.default.Low:i>4&&(n=TargetDisplaySize_1.default.Medium);for(const i of e)t.add(new VideoPreference_1.default(i,1,n));this.defaultVideoPreferences=t.build()}updateMetrics(e){if(!this.videoIndex||this.videoIndex.allStreams().empty())return;this.prevDownlinkStats=this.downlinkStats,this.downlinkStats=new LinkMediaStats;const t=e.getObservableMetrics();isNaN(t.availableIncomingBitrate)?this.downlinkStats.bandwidthEstimateKbps=t.availableReceiveBandwidth/1e3:this.downlinkStats.bandwidthEstimateKbps=t.availableIncomingBitrate/1e3;for(const t in e.streamMetricReports){const i=Number.parseInt(t,10),n=e.streamMetricReports[i];n.direction===ClientMetricReportDirection_1.default.DOWNSTREAM&&n.mediaType===ClientMetricReportMediaType_1.default.VIDEO&&(n.currentMetrics.hasOwnProperty("googNacksSent")?this.downlinkStats.nackCount+=e.countPerSecond("googNacksSent",i):n.currentMetrics.hasOwnProperty("nackCount")&&(this.downlinkStats.nackCount+=e.countPerSecond("nackCount",i)),n.currentMetrics.hasOwnProperty("packetsLost")&&(this.downlinkStats.packetsLost+=e.countPerSecond("packetsLost",i)),n.currentMetrics.hasOwnProperty("bytesReceived")&&(this.downlinkStats.usedBandwidthKbps+=e.bitsPerSecond("bytesReceived",i)/1e3))}}wantsResubscribe(){return this.calculateOptimalReceiveSet(),!this.subscribedReceiveSet.equal(this.optimalReceiveSet)}chooseSubscriptions(){return this.subscribedReceiveSet.equal(this.optimalReceiveSet)||(this.lastSubscribeTimestamp=Date.now()),this.subscribedReceiveSet=this.optimalReceiveSet.clone(),this.subscribedReceiveStreams=this.optimalReceiveStreams.slice(),this.subscribedReceiveSet.clone()}addObserver(e){this.observerQueue.add(e)}removeObserver(e){this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)e(t)}setVideoPriorityBasedPolicyConfigs(e){this.videoPriorityBasedPolicyConfig=e}calculateOptimalReceiveStreams(){var e;const t=[],i=this.videoIndex.remoteStreamDescriptions();if(0===i.length||(null===(e=this.videoPreferences)||void 0===e?void 0:e.isEmpty()))return void(this.optimalReceiveStreams=[]);const n=this.rateProbeState;this.cleanBwPausedTiles(i),this.handleAppPausedStreams(t,i);const r=this.availStreamsSameAsLast(i),o=!this.startupPeriod&&r;if(o&&Date.now()-this.lastSubscribeTimestamp<this.timeBeforeAllowSubscribeMs)return;i.sort(((e,t)=>e.maxBitrateKbps===t.maxBitrateKbps?e.streamId-t.streamId:e.maxBitrateKbps-t.maxBitrateKbps));for(const e of i)(0===e.avgBitrateKbps||e.avgBitrateKbps>e.maxBitrateKbps)&&(e.attendeeId.endsWith(ContentShareConstants_1.default.Modality)&&e.maxBitrateKbps<100?e.maxBitrateKbps=e.avgBitrateKbps:e.avgBitrateKbps=e.maxBitrateKbps);const a={targetDownlinkBitrate:0,chosenTotalBitrate:0,deltaToNextUpgrade:0};a.targetDownlinkBitrate=this.determineTargetRate();const s=this.subscribedReceiveSet.size(),c=this.downlinkStats.bandwidthEstimateKbps,l=!this.videoPriorityBasedPolicyConfig.allowSubscribe(s,c);if(this.probeFailed&&(this.probeFailed=!1,this.timeBeforeAllowSubscribeMs=VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS,o&&l))return;const d=this.priorityPolicy(a,i,t);let u=0;if(!this.startupPeriod&&r?"Probing"===this.rateProbeState?u=this.handleProbe(t,a.targetDownlinkBitrate):0!==a.deltaToNextUpgrade&&(u=this.maybeOverrideOrProbe(t,a,d)):(this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0),this.prevRemoteInfos=i,this.videoPreferencesUpdated=!1,1===u)return this.logger.info(`bwe: keepSameSubscriptions stats:${JSON.stringify(this.downlinkStats)}`),void(this.prevTargetRateKbps=a.targetDownlinkBitrate);if(2===u){const e=this.calculateSubscribeRate(this.preProbeNonPausedReceiveStreams);return this.optimalReceiveStreams=this.preProbeReceiveStreams.slice(),this.processBwPausedStreams(i,this.preProbeNonPausedReceiveStreams),void this.logger.info("bwe: Use Pre-Probe subscription subscribedRate:"+e)}this.optimalNonPausedReceiveStreams=t.slice();const h=this.pausedBwAttendeeIds.size;this.processBwPausedStreams(i,t),this.logger.getLogLevel()<=LogLevel_1.LogLevel.INFO&&(this.logCount%15==0||this.rateProbeState!==n||this.optimalReceiveStreams.length!==t.length||h!==this.pausedBwAttendeeIds.size)&&(this.logger.info(this.policyStateLogStr(i,a.targetDownlinkBitrate)),this.logCount=0),this.logCount++,this.prevTargetRateKbps=a.targetDownlinkBitrate,this.optimalReceiveStreams=t.slice()}calculateOptimalReceiveSet(){const e=new DefaultVideoStreamIdSet_1.default;this.calculateOptimalReceiveStreams();for(const t of this.optimalReceiveStreams)e.add(t.streamId);if(!this.optimalReceiveSet.equal(e)){const t=this.calculateSubscribeRate(this.optimalReceiveStreams);this.logger.info(`bwe: new streamSelection: ${JSON.stringify(e)} subscribedRate:${t}`)}this.optimalReceiveSet=e}determineTargetRate(){let e=0;const t=Date.now();return 0!==this.downlinkStats.bandwidthEstimateKbps?(0===this.firstEstimateTimestamp&&(this.firstEstimateTimestamp=t),this.startupPeriod&&(this.downlinkStats.bandwidthEstimateKbps>VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS||this.downlinkStats.packetsLost>0||t-this.firstEstimateTimestamp>VideoPriorityBasedPolicy.STARTUP_PERIOD_MS&&this.downlinkStats.bandwidthEstimateKbps<=this.prevDownlinkStats.bandwidthEstimateKbps)&&(this.startupPeriod=!1,this.prevTargetRateKbps=this.downlinkStats.bandwidthEstimateKbps),this.startupPeriod?e=VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS:"Probing"===this.rateProbeState&&this.downlinkStats.usedBandwidthKbps>this.downlinkStats.bandwidthEstimateKbps&&this.downlinkStats.packetsLost<VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD?(this.logger.info(`bwe: In probe state, overriding estimate ${this.downlinkStats.bandwidthEstimateKbps} with actual receive bitrate ${this.downlinkStats.usedBandwidthKbps}`),e=this.downlinkStats.usedBandwidthKbps+VideoPriorityBasedPolicy.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS):e=this.downlinkStats.bandwidthEstimateKbps):e=0===this.firstEstimateTimestamp?VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS:this.prevTargetRateKbps,!this.startupPeriod&&(this.usingPrevTargetRate&&this.downlinkStats.bandwidthEstimateKbps<this.prevTargetRateKbps||this.downlinkStats.bandwidthEstimateKbps<this.prevTargetRateKbps*(100-VideoPriorityBasedPolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT)/100||this.downlinkStats.bandwidthEstimateKbps<this.downlinkStats.usedBandwidthKbps*VideoPriorityBasedPolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT/100)&&0===this.downlinkStats.packetsLost?(this.logger.debug((()=>"bwe: ValidateRate: Using Previous rate "+this.prevTargetRateKbps)),this.usingPrevTargetRate=!0,e=this.prevTargetRateKbps):this.usingPrevTargetRate=!1,e}setProbeState(e){if(this.rateProbeState===e)return!1;const t=Date.now();switch(e){case"Not Probing":this.probePendingStartTimestamp=0;break;case"Probe Pending":if(!(0===this.lastProbeTimestamp||t-this.lastProbeTimestamp>VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS))return!1;this.probePendingStartTimestamp=t;break;case"Probing":if(!(t-this.probePendingStartTimestamp>this.timeBeforeAllowProbeMs))return!1;this.lastProbeTimestamp=t,this.preProbeReceiveStreams=this.subscribedReceiveStreams.slice(),this.preProbeNonPausedReceiveStreams=this.optimalNonPausedReceiveStreams,this.timeBeforeAllowProbeMs=Math.min(2*this.timeBeforeAllowProbeMs,VideoPriorityBasedPolicy.MAX_HOLD_BEFORE_PROBE_MS)}return this.logger.info("bwe: setProbeState to "+e+" from "+this.rateProbeState),this.rateProbeState=e,!0}upgradeToStream(e,t){for(let i=0;i<e.length;i++)if(e[i].groupId===t.groupId){const n=t.avgBitrateKbps-e[i].avgBitrateKbps;return this.logger.info("bwe: upgradeStream from "+JSON.stringify(e[i])+" to "+t),this.lastUpgradeRateKbps=n,e[i]=t,n}return e.push(t),this.lastUpgradeRateKbps=t.avgBitrateKbps,this.lastUpgradeRateKbps}handleProbe(e,t){if(Date.now()-this.lastProbeTimestamp>VideoPriorityBasedPolicy.MAX_ALLOWED_PROBE_TIME_MS)return this.logger.info("bwe: Canceling probe due to timeout"),this.setProbeState("Not Probing"),0;if(this.downlinkStats.packetsLost>0&&(this.logger.info(`bwe: Probe encountering packets lost:${this.downlinkStats.packetsLost}`),this.downlinkStats.packetsLost>VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD))return this.setProbeState("Not Probing"),this.logger.info(`bwe: Canceling probe due to packets lost:${this.downlinkStats.packetsLost}`),this.probeFailed=!0,this.timeBeforeAllowSubscribeMs=3*Math.max(VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS,this.timeBeforeAllowSubscribeMs),2;const i=this.calculateSubscribeRate(this.optimalReceiveStreams);return this.chosenStreamsSameAsLast(e)||t>i?(this.logger.info("bwe: Probe successful"),this.setProbeState("Not Probing"),this.timeBeforeAllowProbeMs=VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS,0):1}maybeOverrideOrProbe(e,t,i){const n=this.chosenStreamsSameAsLast(e);let r=0;const o=t.targetDownlinkBitrate>VideoPriorityBasedPolicy.LOW_BITRATE_THRESHOLD_KBPS?VideoPriorityBasedPolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT:2*VideoPriorityBasedPolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT,a=t.targetDownlinkBitrate*o/100;if(this.targetRateBaselineForDeltaCheckKbps=void 0!==this.targetRateBaselineForDeltaCheckKbps?this.targetRateBaselineForDeltaCheckKbps:this.prevTargetRateKbps,!n&&Math.abs(t.targetDownlinkBitrate-this.targetRateBaselineForDeltaCheckKbps)<a?(this.logger.info("bwe: MaybeOverrideOrProbe: Reuse last decision based on delta rate. {"+JSON.stringify(this.subscribedReceiveSet)+"}"),r=1):this.targetRateBaselineForDeltaCheckKbps=t.targetDownlinkBitrate,this.downlinkStats.packetsLost>this.prevDownlinkStats.packetsLost)return this.setProbeState("Not Probing"),this.lastUpgradeRateKbps=0,r;if(n||1===r)switch(this.rateProbeState){case"Not Probing":this.setProbeState("Probe Pending");break;case"Probe Pending":this.setProbeState("Probing")&&(this.upgradeToStream(e,i),r=0)}else this.setProbeState("Not Probing");return r}calculateSubscribeRate(e){let t=0;for(const i of e)this.pausedStreamIds.contain(i.streamId)||this.pausedBwAttendeeIds.has(i.attendeeId)||(t+=i.maxBitrateKbps);return t}handleAppPausedStreams(e,t){if(!this.tileController)return void this.logger.warn("tileController not found!");this.pausedStreamIds=new DefaultVideoStreamIdSet_1.default;const i=this.tileController.getAllRemoteVideoTiles();for(const n of i){const i=n.state();if(i.paused&&!this.pausedBwAttendeeIds.has(i.boundAttendeeId)){let n=t.length;for(;n--;)t[n].attendeeId===i.boundAttendeeId&&(this.logger.info("bwe: removed paused attendee "+i.boundAttendeeId+" streamId: "+t[n].streamId),this.pausedStreamIds.add(t[n].streamId),this.subscribedReceiveSet.contain(t[n].streamId)&&e.push(t[n]),t.splice(n,1))}}}processBwPausedStreams(e,t){if(!this.tileController)return void this.logger.warn("tileController not found!");const i=this.getCurrentVideoPreferences();if(i&&this.shouldPauseTiles){const n=this.tileController.getAllVideoTiles();for(const r of i){const i=this.getVideoTileForAttendeeId(r.attendeeId,n),o=(null==i?void 0:i.state().paused)||!1;if(t.some((e=>e.attendeeId===r.attendeeId)))o&&this.pausedBwAttendeeIds.has(r.attendeeId)&&(this.logger.info(`bwe: unpausing attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver((e=>{e.tileWillBeUnpausedByDownlinkPolicy(i.id())})),this.tileController.unpauseVideoTile(i.id()),this.pausedBwAttendeeIds.delete(r.attendeeId));else{const n=e.some((e=>e.attendeeId===r.attendeeId));if(i&&n){const e=this.optimalReceiveStreams.find((e=>e.attendeeId===r.attendeeId));void 0!==e&&(o||(this.logger.info(`bwe: pausing streamId ${e.streamId} attendee ${r.attendeeId} due to bandwidth`),this.forEachObserver((e=>{e.tileWillBePausedByDownlinkPolicy(i.id())})),this.tileController.pauseVideoTile(i.id())),t.push(e)),this.pausedBwAttendeeIds.add(r.attendeeId)}else if(n){const e=this.tileController.addVideoTile();e.bindVideoStream(r.attendeeId,!1,null,0,0,0,null),this.forEachObserver((t=>{t.tileWillBePausedByDownlinkPolicy(e.id())})),e.pause(),this.logger.info(`bwe: Created video tile ${e.id()} for bw paused attendee ${r.attendeeId}`),this.pausedBwAttendeeIds.add(r.attendeeId)}}}}}cleanBwPausedTiles(e){if(!this.tileController)return void this.logger.warn("tileController not found!");const t=this.tileController.getAllRemoteVideoTiles(),i=this.getCurrentVideoPreferences();for(const n of t){const t=n.state();t.boundVideoStream||(e.some((e=>e.attendeeId===t.boundAttendeeId))?void 0===i||i.some((e=>e.attendeeId===t.boundAttendeeId))||this.tileController.removeVideoTile(t.tileId):(this.tileController.removeVideoTile(t.tileId),this.logger.info(`bwe: Removed video tile ${t.tileId} for bw paused attendee ${t.boundAttendeeId}`)))}}priorityPolicy(e,t,i){let n;const r=this.getCurrentVideoPreferences(),o=r.highestPriority();let a,s=o;for(;-1!==s;){a=-1;for(const o of r)if(o.priority===s)for(const r of t)r.attendeeId===o.attendeeId&&(i.some((e=>e.groupId===r.groupId))||(e.chosenTotalBitrate+r.avgBitrateKbps<=e.targetDownlinkBitrate?(i.push(r),e.chosenTotalBitrate+=r.avgBitrateKbps):0===e.deltaToNextUpgrade&&(e.deltaToNextUpgrade=r.avgBitrateKbps,n=r)));else if(o.priority>s){a=o.priority;break}for(const o of r)if(o.priority===s){for(const r of t)if(r.attendeeId===o.attendeeId){const a=i.findIndex((e=>e.groupId===r.groupId&&e.maxBitrateKbps<r.maxBitrateKbps));if(-1!==a){const s=r.avgBitrateKbps-i[a].avgBitrateKbps;this.hasSimulcastStreams(t,r.attendeeId,r.groupId)&&this.canUpgrade(r.avgBitrateKbps,o.targetSizeToBitrateKbps(o.targetSize))?(this.logger.info(`bwe: attendee: ${r.attendeeId} group: ${r.groupId} has simulcast and can upgrade avgBitrate: ${r.avgBitrateKbps} target: ${o.targetSizeToBitrateKbps(o.targetSize)} targetTotalBitrate: ${e.targetDownlinkBitrate}`),e.chosenTotalBitrate+s<=e.targetDownlinkBitrate?(e.chosenTotalBitrate+=s,i[a]=r):0===e.deltaToNextUpgrade&&(e.deltaToNextUpgrade=s,n=r)):this.logger.info("bwe: cannot upgrade stream quality beyond target size")}}}else if(o.priority>s)break;if(s===o&&0!==e.deltaToNextUpgrade)break;s=a}return n}getVideoTileForAttendeeId(e,t){for(const i of t){if(i.state().boundAttendeeId===e)return i}return null}canUpgrade(e,t){return e<=t?(this.logger.info(`bwe: canUpgrade: bitrateKbp: ${e} targetBitrateKbp: ${t}`),!0):(this.logger.info(`bwe: cannot Upgrade: bitrateKbp: ${e} targetBitrateKbp: ${t}`),!1)}hasSimulcastStreams(e,t,i){let n=0;for(const r of e)r.attendeeId===t&&r.groupId===i&&n++;return this.logger.info(`bwe: attendeeId: ${t} groupId: ${i} hasSimulcastStreams: streamCount: ${n}`),n>1}availStreamsSameAsLast(e){if(void 0===this.prevRemoteInfos||e.length!==this.prevRemoteInfos.length||!0===this.videoPreferencesUpdated)return!1;for(const t of e){if(void 0===this.prevRemoteInfos.find((e=>e.groupId===t.groupId&&e.streamId===t.streamId&&e.maxBitrateKbps===t.maxBitrateKbps)))return!1}return!0}chosenStreamsSameAsLast(e){if(this.optimalNonPausedReceiveStreams.length!==e.length)return!1;for(const t of this.optimalNonPausedReceiveStreams)if(!e.some((e=>e.streamId===t.streamId)))return!1;return!0}policyStateLogStr(e,t){const i={targetBitrate:t,subscribedRate:this.calculateSubscribeRate(this.optimalReceiveStreams),probeState:this.rateProbeState,startupPeriod:this.startupPeriod};let n="remoteInfos: [";for(const t of e)n+=`{grpId:${t.groupId} strId:${t.streamId} maxBr:${t.maxBitrateKbps} avgBr:${t.avgBitrateKbps}}, `;n+="]";let r=`bwe: optimalReceiveSet ${JSON.stringify(i)}\nbwe: prev ${JSON.stringify(this.prevDownlinkStats)}\nbwe: now ${JSON.stringify(this.downlinkStats)}\nbwe: ${n}\n`;return(this.pausedStreamIds.size()>0||this.pausedBwAttendeeIds.size>0)&&(r+=`bwe: paused: app stream ids ${JSON.stringify(this.pausedStreamIds)} bw attendees { ${Array.from(this.pausedBwAttendeeIds).join(" ")} }\n`),this.videoPreferences?r+=`bwe: preferences: ${JSON.stringify(this.videoPreferences)}`:r+=`bwe: default preferences: ${JSON.stringify(this.defaultVideoPreferences)}`,r}getCurrentVideoPreferences(){return this.videoPreferences||this.defaultVideoPreferences}}var _default$10=VideoPriorityBasedPolicy;VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS=2800,VideoPriorityBasedPolicy.STARTUP_PERIOD_MS=6e3,VideoPriorityBasedPolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT=20,VideoPriorityBasedPolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT=15,VideoPriorityBasedPolicy.LOW_BITRATE_THRESHOLD_KBPS=300,VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS=5e3,VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS=2e3,VideoPriorityBasedPolicy.MAX_HOLD_BEFORE_PROBE_MS=3e4,VideoPriorityBasedPolicy.MAX_ALLOWED_PROBE_TIME_MS=6e4,VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD=2,VideoPriorityBasedPolicy.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS=100;var VideoPriorityBasedPolicy_1$1=Object.defineProperty({default:_default$10},"__esModule",{value:!0}),VideoPriorityBasedPolicy_1=VideoPriorityBasedPolicy_1$1;class VideoAdaptiveProbePolicy extends VideoPriorityBasedPolicy_1.default{constructor(e){super(e),this.logger=e,super.shouldPauseTiles=!1,this.videoPreferences=void 0}reset(){super.reset(),super.shouldPauseTiles=!1,this.videoPreferences=void 0}updateIndex(e){super.updateIndex(e);const t=VideoPreferences_1.VideoPreferences.prepare();let i=!1;const n=e.remoteStreamDescriptions();for(const e of n)t.some((t=>t.attendeeId===e.attendeeId))||(e.attendeeId.endsWith(ContentShareConstants_1.default.Modality)?(t.add(new VideoPreference_1.default(e.attendeeId,1)),i=!0):t.add(new VideoPreference_1.default(e.attendeeId,2)));i?(this.videoPreferences=t.build(),this.videoPreferencesUpdated=!0):this.videoPreferences=void 0}chooseRemoteVideoSources(e){this.logger.error("chooseRemoteVideoSources should not be called by VideoAdaptiveProbePolicy")}}var _default$$=VideoAdaptiveProbePolicy,VideoAdaptiveProbePolicy_1$1=Object.defineProperty({default:_default$$},"__esModule",{value:!0});class VideoStreamDescription{constructor(e,t,i,n,r){this.attendeeId="",this.groupId=0,this.streamId=0,this.ssrc=0,this.trackLabel="",this.maxBitrateKbps=0,this.avgBitrateKbps=0,this.maxFrameRate=0,this.timeEnabled=0,this.disabledByWebRTC=!1,this.disabledByUplinkPolicy=!1,this.attendeeId=e,this.groupId=t,this.streamId=i,this.maxBitrateKbps=n,this.avgBitrateKbps=r}clone(){const e=new VideoStreamDescription;return e.attendeeId=this.attendeeId,e.groupId=this.groupId,e.streamId=this.streamId,e.ssrc=this.ssrc,e.trackLabel=this.trackLabel,e.maxBitrateKbps=this.maxBitrateKbps,e.avgBitrateKbps=this.avgBitrateKbps,e.maxFrameRate=this.maxFrameRate,e.timeEnabled=this.timeEnabled,e.disabledByWebRTC=this.disabledByWebRTC,e.disabledByUplinkPolicy=this.disabledByUplinkPolicy,e}toStreamDescriptor(){const e=SignalingProtocol_js_1.SdkStreamDescriptor.create();return e.mediaType=SignalingProtocol_js_1.SdkStreamMediaType.VIDEO,e.trackLabel=this.trackLabel,e.attendeeId=this.attendeeId,e.streamId=this.streamId,e.groupId=this.groupId,e.framerate=this.maxFrameRate,e.maxBitrateKbps=this.disabledByUplinkPolicy||this.disabledByWebRTC?0:this.maxBitrateKbps,e.avgBitrateBps=this.avgBitrateKbps,e}}var _default$_=VideoStreamDescription,VideoStreamDescription_1$1=Object.defineProperty({default:_default$_},"__esModule",{value:!0}),VideoStreamDescription_1=VideoStreamDescription_1$1;class DefaultVideoStreamIndex{constructor(e){this.logger=e,this.currentIndex=null,this.indexForSubscribe=null,this.currentSubscribeAck=null,this.subscribeTrackToStreamMap=null,this.subscribeStreamToAttendeeMap=null,this.subscribeStreamToExternalUserIdMap=null,this.subscribeSsrcToStreamMap=null,this.streamToAttendeeMap=null,this.streamToExternalUserIdMap=null,this.videoStreamDescription=new VideoStreamDescription_1.default,this.videoStreamDescription.trackLabel="AmazonChimeExpressVideo",this.videoStreamDescription.streamId=2,this.videoStreamDescription.groupId=2}localStreamDescriptions(){return[this.videoStreamDescription.clone()]}convertBpsToKbps(e){return e>0&&e<1e3?1:Math.trunc(e/1e3)}remoteStreamDescriptions(){if(!this.currentIndex||!this.currentIndex.sources)return[];const e=[];return this.currentIndex.sources.forEach((t=>{const i=new VideoStreamDescription_1.default;i.attendeeId=t.attendeeId,i.groupId=t.groupId,i.streamId=t.streamId,i.maxBitrateKbps=t.maxBitrateKbps,i.avgBitrateKbps=this.convertBpsToKbps(t.avgBitrateBps),e.push(i)})),e}integrateUplinkPolicyDecision(e){if(e&&e.length){const t=e[0];this.videoStreamDescription.maxBitrateKbps=t.maxBitrate/1e3,this.videoStreamDescription.maxFrameRate=t.maxFramerate}}integrateIndexFrame(e){this.currentIndex=e;const t=new Map;let i=!1;for(const n of e.sources){if(!t.has(n.attendeeId)){t.set(n.attendeeId,n.groupId);continue}const e=t.get(n.attendeeId);e<n.groupId&&(this.logger.warn(`Old group ID ${e} found for attendee ID ${n.attendeeId}, replacing with newer group ID ${n.groupId}`),t.set(n.attendeeId,n.groupId)),i=!0}i&&(this.currentIndex.sources=this.currentIndex.sources.filter((e=>t.get(e.attendeeId)===e.groupId))),this.streamToAttendeeMap=null,this.streamToExternalUserIdMap=null}subscribeFrameSent(){this.indexForSubscribe=this.currentIndex}integrateSubscribeAckFrame(e){this.currentSubscribeAck=e,this.subscribeTrackToStreamMap=this.buildTrackToStreamMap(this.currentSubscribeAck),this.subscribeSsrcToStreamMap=this.buildSSRCToStreamMap(this.currentSubscribeAck),this.subscribeStreamToAttendeeMap=this.buildStreamToAttendeeMap(this.indexForSubscribe),this.subscribeStreamToExternalUserIdMap=this.buildStreamExternalUserIdMap(this.indexForSubscribe)}integrateBitratesFrame(e){if(this.currentIndex)for(const t of e.bitrates){const e=this.currentIndex.sources.find((e=>e.streamId===t.sourceStreamId));void 0!==e&&(e.avgBitrateBps=t.avgBitrateBps)}}allStreams(){const e=new DefaultVideoStreamIdSet_1.default;if(this.currentIndex)for(const t of this.currentIndex.sources)e.add(t.streamId);return e}allVideoSendingSourcesExcludingSelf(e){const t=[],i=new Set;if(this.currentIndex&&this.currentIndex.sources&&this.currentIndex.sources.length)for(const n of this.currentIndex.sources){const{attendeeId:r,externalUserId:o,mediaType:a}=n;r!==e&&a===SignalingProtocol_js_1.SdkStreamMediaType.VIDEO&&(i.has(r)||(t.push({attendee:{attendeeId:r,externalUserId:o}}),i.add(r)))}return t}streamSelectionUnderBandwidthConstraint(e,t,i,n){const r=new Set;if(this.currentIndex)for(const n of this.currentIndex.sources)n.attendeeId!==e&&n.mediaType===SignalingProtocol_js_1.SdkStreamMediaType.VIDEO&&(t.has(n.attendeeId)||i.has(n.attendeeId)||r.add(n.attendeeId));const o=this.buildAttendeeToSortedStreamDescriptorMapExcludingSelf(e),a=new Map;let s=0;o.forEach(((e,t)=>{a.set(t,e[0]),s+=e[0].maxBitrateKbps})),s=this.trySelectHighBitrateForAttendees(o,t,s,n,a),this.trySelectHighBitrateForAttendees(o,r,s,n,a);const c=new DefaultVideoStreamIdSet_1.default;for(const e of a.values())c.add(e.streamId);return c}highestQualityStreamFromEachGroupExcludingSelf(e){const t=new DefaultVideoStreamIdSet_1.default;if(this.currentIndex){const i=new Map;for(const t of this.currentIndex.sources)t.attendeeId!==e&&t.mediaType===SignalingProtocol_js_1.SdkStreamMediaType.VIDEO&&(!i.has(t.groupId)||t.maxBitrateKbps>i.get(t.groupId).maxBitrateKbps)&&i.set(t.groupId,t);for(const e of i.values())t.add(e.streamId)}return t}numberOfVideoPublishingParticipantsExcludingSelf(e){return this.highestQualityStreamFromEachGroupExcludingSelf(e).array().length}numberOfParticipants(){return this.currentIndex.numParticipants?this.currentIndex.numParticipants:-1}attendeeIdForTrack(e){const t=this.streamIdForTrack(e);if(void 0===t||!this.subscribeStreamToAttendeeMap)return this.logger.warn(`no attendee found for track ${e}`),"";const i=this.subscribeStreamToAttendeeMap.get(t);return i||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known attendee`),"")}externalUserIdForTrack(e){const t=this.streamIdForTrack(e);if(void 0===t||!this.subscribeStreamToExternalUserIdMap)return this.logger.warn(`no external user id found for track ${e}`),"";const i=this.subscribeStreamToExternalUserIdMap.get(t);return i||(this.logger.info(`track ${e} (stream ${t}) does not correspond to a known externalUserId`),"")}attendeeIdForStreamId(e){if(!this.streamToAttendeeMap){if(!this.currentIndex)return"";this.streamToAttendeeMap=this.buildStreamToAttendeeMap(this.currentIndex)}const t=this.streamToAttendeeMap.get(e);return t||(this.logger.info(`stream ${e}) does not correspond to a known attendee`),"")}groupIdForStreamId(e){for(const t of this.currentIndex.sources)if(t.streamId===e)return t.groupId;if(this.indexForSubscribe)for(const t of this.indexForSubscribe.sources)if(t.streamId===e)return t.groupId}StreamIdsInSameGroup(e,t){return this.groupIdForStreamId(e)===this.groupIdForStreamId(t)}streamIdForTrack(e){if(this.subscribeTrackToStreamMap)return this.subscribeTrackToStreamMap.get(e)}streamIdForSSRC(e){if(this.subscribeSsrcToStreamMap)return this.subscribeSsrcToStreamMap.get(e)}overrideStreamIdMappings(e,t){if(this.subscribeTrackToStreamMap)for(const[i,n]of this.subscribeTrackToStreamMap.entries())if(e===n){this.subscribeTrackToStreamMap.set(i,t);break}if(this.subscribeSsrcToStreamMap)for(const[i,n]of this.subscribeSsrcToStreamMap.entries())if(e===n){this.subscribeSsrcToStreamMap.set(i,t);break}}streamsPausedAtSource(){const e=new DefaultVideoStreamIdSet_1.default;if(this.currentIndex)for(const t of this.currentIndex.pausedAtSourceIds)e.add(t);return e}buildTrackToStreamMap(e){const t=new Map;this.logger.debug((()=>`trackMap ${JSON.stringify(e.tracks)}`));for(const i of e.tracks)i.trackLabel.length>0&&i.streamId>0&&t.set(i.trackLabel,i.streamId);return t}buildSSRCToStreamMap(e){const t=new Map;this.logger.debug((()=>`ssrcMap ${JSON.stringify(e.tracks)}`));for(const i of e.tracks)i.trackLabel.length>0&&i.streamId>0&&t.set(i.ssrc,i.streamId);return t}buildStreamToAttendeeMap(e){const t=new Map;if(e)for(const i of e.sources)t.set(i.streamId,i.attendeeId);return t}buildStreamExternalUserIdMap(e){const t=new Map;if(e)for(const i of e.sources)i.externalUserId&&t.set(i.streamId,i.externalUserId);return t}trySelectHighBitrateForAttendees(e,t,i,n,r){for(const o of t){if(i>=n)break;if(e.has(o)){const t=e.get(o);for(const e of t.reverse())if(i-r.get(o).maxBitrateKbps+e.maxBitrateKbps<n){i=i-r.get(o).maxBitrateKbps+e.maxBitrateKbps,r.set(o,e);break}}}return i}buildAttendeeToSortedStreamDescriptorMapExcludingSelf(e){const t=new Map;if(this.currentIndex)for(const i of this.currentIndex.sources)i.attendeeId!==e&&i.mediaType===SignalingProtocol_js_1.SdkStreamMediaType.VIDEO&&(t.has(i.attendeeId)?t.get(i.attendeeId).push(i):t.set(i.attendeeId,[i]));return t.forEach(((e,t)=>{e.sort(((e,t)=>e.maxBitrateKbps>t.maxBitrateKbps?1:e.maxBitrateKbps<t.maxBitrateKbps?-1:0))})),t}}var _default$Z=DefaultVideoStreamIndex,DefaultVideoStreamIndex_1$1=Object.defineProperty({default:_default$Z},"__esModule",{value:!0}),DefaultVideoStreamIndex_1=DefaultVideoStreamIndex_1$1;class SimulcastVideoStreamIndex extends DefaultVideoStreamIndex_1.default{constructor(e){super(e),this.streamIdToBitrateKbpsMap=new Map,this._localStreamInfos=[],this._lastBitRateMsgTime=Date.now()}localStreamDescriptions(){const e=[];return this._localStreamInfos.forEach((t=>{e.push(t.clone())})),e}integrateUplinkPolicyDecision(e){let t=!0,i=0;for(let n=0;n<e.length;n++){const r=e[n].maxBitrate/1e3,o=e[n].maxFramerate;if(t&&n!==this._localStreamInfos.length)0===this._localStreamInfos[i].maxBitrateKbps&&r>0&&(this._localStreamInfos[i].timeEnabled=Date.now()),this._localStreamInfos[i].maxBitrateKbps=r,this._localStreamInfos[i].maxFrameRate=o,this._localStreamInfos[i].disabledByUplinkPolicy=0===r,!0===this._localStreamInfos[i].disabledByUplinkPolicy&&(this._localStreamInfos[i].disabledByWebRTC=!1),i++;else{t=!1;const e=new VideoStreamDescription_1.default;e.maxBitrateKbps=r,e.maxFrameRate=o,e.disabledByUplinkPolicy=0===r,0!==r&&(e.timeEnabled=Date.now()),this._localStreamInfos.push(e),i++}}t&&this._localStreamInfos.splice(i)}integrateBitratesFrame(e){super.integrateBitratesFrame(e);const t=new Set,i=new Set(this.streamIdToBitrateKbpsMap.keys());for(const i of e.bitrates)t.add(i.sourceStreamId),this.streamIdToBitrateKbpsMap.set(i.sourceStreamId,this.convertBpsToKbps(i.avgBitrateBps));for(const e of i)if(!t.has(e)){this.streamIdToBitrateKbpsMap.get(e)===SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE?this.streamIdToBitrateKbpsMap.set(e,SimulcastVideoStreamIndex.RECENTLY_INACTIVE_STREAM_BITRATE):this.streamIdToBitrateKbpsMap.set(e,SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE)}for(let e=0;e<this._localStreamInfos.length;e++){this._localStreamInfos[e].disabledByWebRTC=!1;const t=this._localStreamInfos[e].streamId;if(!this._localStreamInfos[e].disabledByUplinkPolicy)if(this.streamIdToBitrateKbpsMap.has(t)){this.streamIdToBitrateKbpsMap.get(t)===SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE&&this._lastBitRateMsgTime-this._localStreamInfos[e].timeEnabled>SimulcastVideoStreamIndex.BitratesMsgFrequencyMs&&(this._localStreamInfos[e].disabledByWebRTC=!0)}else this._lastBitRateMsgTime-this._localStreamInfos[e].timeEnabled>SimulcastVideoStreamIndex.BitratesMsgFrequencyMs&&(this._localStreamInfos[e].disabledByWebRTC=!0)}this._lastBitRateMsgTime=Date.now(),this.logLocalStreamDescriptions()}logLocalStreamDescriptions(){let e="";for(const t of this._localStreamInfos)e+=`streamId=${t.streamId} maxBitrate=${t.maxBitrateKbps} disabledByWebRTC=${t.disabledByWebRTC} disabledByUplink=${t.disabledByUplinkPolicy}\n`;this.logger.debug((()=>e))}integrateIndexFrame(e){super.integrateIndexFrame(e);const t=new Set,i=new Set(this.streamIdToBitrateKbpsMap.keys());for(const e of this.currentIndex.sources)e.mediaType===SignalingProtocol_js_1.SdkStreamMediaType.VIDEO&&(t.add(e.streamId),this.streamIdToBitrateKbpsMap.has(e.streamId)||this.streamIdToBitrateKbpsMap.set(e.streamId,SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE));for(const e of i)t.has(e)||this.streamIdToBitrateKbpsMap.delete(e)}integrateSubscribeAckFrame(e){if(super.integrateSubscribeAckFrame(e),!e.allocations||void 0===e.allocations)return;let t=0;for(const i of e.allocations){if(this._localStreamInfos.length<t+1){this.logger.info("simulcast: allocation has more than number of local streams");break}this._localStreamInfos[t].groupId=i.groupId,this._localStreamInfos[t].streamId=i.streamId,this.streamIdToBitrateKbpsMap.has(i.streamId)||this.streamIdToBitrateKbpsMap.set(i.streamId,SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE),t++}}}var _default$Y=SimulcastVideoStreamIndex;SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE=-2,SimulcastVideoStreamIndex.RECENTLY_INACTIVE_STREAM_BITRATE=-1,SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE=0,SimulcastVideoStreamIndex.BitratesMsgFrequencyMs=4e3;var SimulcastVideoStreamIndex_1$1=Object.defineProperty({default:_default$Y},"__esModule",{value:!0}),__awaiter$i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultDevicePixelRatioMonitor{constructor(e,t){if(this.devicePixelRatioSource=e,this.observerQueue=new Set,this.mediaQueryListener=()=>{this.observerQueue.forEach((e=>{e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())}))},"undefined"==typeof window)return;const i=matchMedia(`(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`);"function"==typeof i.addEventListener?(i.addEventListener("change",this.mediaQueryListener),this.mediaQueryList=i):"function"==typeof i.addListener?(i.addListener(this.mediaQueryListener),this.mediaQueryList=i):t.warn("ignoring DefaultDevicePixelRatioMonitor")}destroy(){return __awaiter$i(this,void 0,void 0,(function*(){this.mediaQueryList&&("function"==typeof this.mediaQueryList.addEventListener?this.mediaQueryList.removeEventListener("change",this.mediaQueryListener):this.mediaQueryList.removeListener(this.mediaQueryListener)),delete this.mediaQueryListener,this.observerQueue.clear()}))}registerObserver(e){this.observerQueue.add(e),e.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio())}removeObserver(e){this.observerQueue.delete(e)}}var _default$X=DefaultDevicePixelRatioMonitor,DefaultDevicePixelRatioMonitor_1$1=Object.defineProperty({default:_default$X},"__esModule",{value:!0});class DevicePixelRatioWindowSource{devicePixelRatio(){return"undefined"!=typeof window&&window&&window.devicePixelRatio?window.devicePixelRatio:1}}var _default$W=DevicePixelRatioWindowSource,DevicePixelRatioWindowSource_1$1=Object.defineProperty({default:_default$W},"__esModule",{value:!0}),DefaultDevicePixelRatioMonitor_1=DefaultDevicePixelRatioMonitor_1$1,DevicePixelRatioWindowSource_1=DevicePixelRatioWindowSource_1$1,__awaiter$h=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultVideoTileController{constructor(e,t,i){this.tileFactory=e,this.audioVideoController=t,this.logger=i,this.tileMap=new Map,this.nextTileId=1,this.currentLocalTile=null,this.currentPausedTilesByIds=new Set,this.keepLastFrameWhenPaused=!1,this.keepLastFrameWhenPaused=t.configuration.keepLastFrameWhenPaused}createDevicePixelRatioMonitorIfNeeded(){this.devicePixelRatioMonitor||(this.devicePixelRatioMonitor=new DefaultDevicePixelRatioMonitor_1.default(new DevicePixelRatioWindowSource_1.default,this.logger))}discardDevicePixelRatioMonitorIfNotNeeded(){return __awaiter$h(this,void 0,void 0,(function*(){if(this.tileMap.size||!this.devicePixelRatioMonitor)return;const e=this.devicePixelRatioMonitor;return this.devicePixelRatioMonitor=void 0,e.destroy()}))}bindVideoElement(e,t){const i=this.getVideoTile(e);null!==i?i.bindVideoElement(t):this.logger.warn(`Ignoring video element binding for unknown tile id ${e}`)}unbindVideoElement(e){this.bindVideoElement(e,null)}startLocalVideoTile(){const e=this.findOrCreateLocalVideoTile();return this.currentLocalTile.stateRef().localTileStarted=!0,this.audioVideoController.update({needsRenegotiation:!0}),e.id()}stopLocalVideoTile(){this.currentLocalTile&&(this.currentLocalTile.stateRef().localTileStarted=!1,this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId),this.audioVideoController.update({needsRenegotiation:!0}))}hasStartedLocalVideoTile(){return!(!this.currentLocalTile||!this.currentLocalTile.stateRef().localTileStarted)}removeLocalVideoTile(){this.currentLocalTile&&this.removeVideoTile(this.currentLocalTile.id())}getLocalVideoTile(){return this.currentLocalTile}pauseVideoTile(e){const t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)||(this.audioVideoController.pauseReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.add(e)),t.pause())}unpauseVideoTile(e){const t=this.getVideoTile(e);t&&(this.currentPausedTilesByIds.has(e)&&(this.audioVideoController.resumeReceivingStream(t.stateRef().streamId),this.currentPausedTilesByIds.delete(e)),t.unpause())}getVideoTile(e){return this.tileMap.has(e)?this.tileMap.get(e):null}getVideoTileArea(e){const t=e.state();let i=0,n=0;return t.boundVideoElement&&(i=t.boundVideoElement.clientHeight*t.devicePixelRatio,n=t.boundVideoElement.clientWidth*t.devicePixelRatio),i*n}getAllRemoteVideoTiles(){const e=new Array;return this.tileMap.forEach(((t,i)=>{this.currentLocalTile&&i===this.currentLocalTile.id()||e.push(t)})),e}getAllVideoTiles(){return Array.from(this.tileMap.values())}addVideoTile(e=!1){const t=this.nextTileId;this.nextTileId+=1,this.createDevicePixelRatioMonitorIfNeeded();const i=this.tileFactory.makeTile(t,e,this,this.devicePixelRatioMonitor);return this.tileMap.set(t,i),i}removeVideoTile(e){if(!this.tileMap.has(e))return;const t=this.tileMap.get(e);this.currentLocalTile===t&&(this.currentLocalTile=null),t.destroy(),this.tileMap.delete(e),this.audioVideoController.forEachObserver((t=>{Types_1.Maybe.of(t.videoTileWasRemoved).map((i=>i.bind(t)(e)))})),this.discardDevicePixelRatioMonitorIfNotNeeded()}removeVideoTilesByAttendeeId(e){const t=[];for(const i of this.getAllVideoTiles()){const n=i.state();n.boundAttendeeId===e&&(this.removeVideoTile(n.tileId),t.push(n.tileId))}return t}removeAllVideoTiles(){const e=Array.from(this.tileMap.keys());for(const t of e)this.removeVideoTile(t)}sendTileStateUpdate(e){this.audioVideoController.forEachObserver((t=>{Types_1.Maybe.of(t.videoTileDidUpdate).map((i=>i.bind(t)(e)))}))}haveVideoTilesWithStreams(){for(const e of this.getAllVideoTiles())if(e.state().boundVideoStream)return!0;return!1}haveVideoTileForAttendeeId(e){return!!this.getVideoTileForAttendeeId(e)}getVideoTileForAttendeeId(e){for(const t of this.getAllVideoTiles()){if(t.state().boundAttendeeId===e)return t}}captureVideoTile(e){const t=this.getVideoTile(e);return t?t.capture():null}findOrCreateLocalVideoTile(){return this.currentLocalTile||(this.currentLocalTile=this.addVideoTile(!0),this.currentLocalTile.bindVideoStream(this.audioVideoController.configuration.credentials.attendeeId,!0,null,null,null,null,this.audioVideoController.configuration.credentials.externalUserId)),this.currentLocalTile}}var _default$V=DefaultVideoTileController,DefaultVideoTileController_1$1=Object.defineProperty({default:_default$V},"__esModule",{value:!0});class DefaultVideoTileFactory{makeTile(e,t,i,n){return new DefaultVideoTile_1.default(e,t,i,n)}}var _default$U=DefaultVideoTileFactory,DefaultVideoTileFactory_1$1=Object.defineProperty({default:_default$U},"__esModule",{value:!0}),SimulcastLayers_1$1=createCommonjsModule((function(e,t){var i;Object.defineProperty(t,"__esModule",{value:!0}),t.SimulcastLayers=void 0,function(e){e[e.Low=0]="Low",e[e.LowAndMedium=1]="LowAndMedium",e[e.LowAndHigh=2]="LowAndHigh",e[e.Medium=3]="Medium",e[e.MediumAndHigh=4]="MediumAndHigh",e[e.High=5]="High"}(i=t.SimulcastLayers||(t.SimulcastLayers={})),t.default=i})),SimulcastLayers_1=SimulcastLayers_1$1,SimulcastTransceiverController_1=SimulcastTransceiverController_1$1,DefaultVideoCaptureAndEncodeParameter_1=DefaultVideoCaptureAndEncodeParameter_1$1,BitrateParameters_1=BitrateParameters_1$1;class DefaultSimulcastUplinkPolicy{constructor(e,t){this.selfAttendeeId=e,this.logger=t,this.numSenders=0,this.shouldDisableSimulcast=!1,this.newQualityMap=new Map,this.currentQualityMap=new Map,this.newActiveStreams=1,this.currentActiveStreams=1,this.lastUplinkBandwidthKbps=DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps,this.startTimeMs=0,this.lastUpdatedMs=Date.now(),this.videoIndex=null,this.currLocalDescriptions=[],this.nextLocalDescriptions=[],this.observerQueue=new Set,this.optimalParameters=new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!0),this.parametersInEffect=new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!0),this.lastUplinkBandwidthKbps=DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps,this.currentQualityMap=this.fillEncodingParamWithBitrates([300,0,1200]),this.newQualityMap=this.fillEncodingParamWithBitrates([300,0,1200])}updateConnectionMetric({uplinkKbps:e=0}){if(isNaN(e))return;0===this.startTimeMs&&(this.startTimeMs=Date.now()),Date.now()-this.startTimeMs<DefaultSimulcastUplinkPolicy.startupDurationMs?this.lastUplinkBandwidthKbps=DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps:this.lastUplinkBandwidthKbps=e,this.logger.debug((()=>`simulcast: uplink policy update metrics ${this.lastUplinkBandwidthKbps}`));let t=DefaultSimulcastUplinkPolicy.holdDownDurationMs;3===this.currentActiveStreams?t=2*DefaultSimulcastUplinkPolicy.holdDownDurationMs:(2===this.currentActiveStreams&&e<=DefaultSimulcastUplinkPolicy.kMidDisabledRate||1===this.currentActiveStreams&&e<=DefaultSimulcastUplinkPolicy.kHiDisabledRate)&&(t=DefaultSimulcastUplinkPolicy.holdDownDurationMs/2),Date.now()<this.lastUpdatedMs+t||(this.newQualityMap=this.calculateEncodingParameters(!1))}calculateEncodingParameters(e){const t=[new BitrateParameters_1.default,new BitrateParameters_1.default,new BitrateParameters_1.default];let i=0,n=0;if(0===this.currentActiveStreams?(i=this.lastUplinkBandwidthKbps+1,n=0):1===this.currentActiveStreams?(i=2400,n=DefaultSimulcastUplinkPolicy.kHiDisabledRate):2===this.currentActiveStreams?(i=1e3,n=DefaultSimulcastUplinkPolicy.kMidDisabledRate):(i=300,n=0),e||this.lastUplinkBandwidthKbps>=i||this.lastUplinkBandwidthKbps<=n){this.shouldDisableSimulcast?(this.newActiveStreams=0,t[0].maxBitrateKbps=0,t[1].maxBitrateKbps=1200,t[2].maxBitrateKbps=0):this.numSenders<=4&&this.lastUplinkBandwidthKbps>=DefaultSimulcastUplinkPolicy.kHiDisabledRate?(this.newActiveStreams=1,t[0].maxBitrateKbps=300,t[1].maxBitrateKbps=0,t[2].maxBitrateKbps=1200):this.lastUplinkBandwidthKbps>=DefaultSimulcastUplinkPolicy.kMidDisabledRate?(this.newActiveStreams=2,t[0].maxBitrateKbps=this.lastUplinkBandwidthKbps>=350?200:150,t[1].maxBitrateKbps=this.numSenders<=6?600:350,t[2].maxBitrateKbps=0):(this.newActiveStreams=3,t[0].maxBitrateKbps=300,t[1].maxBitrateKbps=0,t[2].maxBitrateKbps=0);const e=t.map(((e,t,i)=>e.maxBitrateKbps));this.newQualityMap=this.fillEncodingParamWithBitrates(e),this.encodingParametersEqual()||this.logger.info(`simulcast: policy:calculateEncodingParameters bw:${this.lastUplinkBandwidthKbps} numSources:${this.numSenders} shouldDisableSimulcast:${this.shouldDisableSimulcast} newQualityMap: ${this.getQualityMapString(this.newQualityMap)}`)}return this.newQualityMap}chooseMediaTrackConstraints(){return{width:{ideal:1280},height:{ideal:768},frameRate:{ideal:15}}}chooseEncodingParameters(){return this.currentQualityMap=this.newQualityMap,this.currentActiveStreams=this.newActiveStreams,this.activeStreamsToPublish!==this.newActiveStreams&&(this.activeStreamsToPublish=this.newActiveStreams,this.publishEncodingSimulcastLayer()),this.currentQualityMap}updateIndex(e){const t=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+1,i=t!==this.numSenders,n=e.numberOfParticipants(),r=n>=0&&n<=2,o=this.shouldDisableSimulcast!==r;this.numSenders=t,this.shouldDisableSimulcast=r,this.optimalParameters=new DefaultVideoCaptureAndEncodeParameter_1.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1),this.videoIndex=e,this.newQualityMap=this.calculateEncodingParameters(i||o)}wantsResubscribe(){let e=!this.encodingParametersEqual();this.nextLocalDescriptions=this.videoIndex.localStreamDescriptions();for(let t=0;t<this.nextLocalDescriptions.length;t++){const i=this.nextLocalDescriptions[t].streamId;if(0!==i&&i){const n=this.currLocalDescriptions.findIndex((e=>e.streamId===i));-1!==n&&this.nextLocalDescriptions[t].disabledByWebRTC!==this.currLocalDescriptions[n].disabledByWebRTC&&(e=!0)}}return e&&(this.lastUpdatedMs=Date.now()),this.currLocalDescriptions=this.nextLocalDescriptions,e}compareEncodingParameter(e,t){return JSON.stringify(e)===JSON.stringify(t)}encodingParametersEqual(){let e=!1;for(const t of SimulcastTransceiverController_1.default.NAME_ARR_ASCENDING)if(e=e||!this.compareEncodingParameter(this.newQualityMap.get(t),this.currentQualityMap.get(t)),e)break;return!e}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}captureWidth(){return 1280}captureHeight(){return 768}captureFrameRate(){return 15}maxBandwidthKbps(){return 1400}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}fillEncodingParamWithBitrates(e){const t=new Map,i=SimulcastTransceiverController_1.default.NAME_ARR_ASCENDING,n=e;let r=this.shouldDisableSimulcast?1:4;for(let e=0;e<i.length;e++){const o=i[e];t.set(o,{rid:o,active:n[e]>0,scaleResolutionDownBy:Math.max(r,1),maxBitrate:1e3*n[e]}),r/=2}return t}getQualityMapString(e){let t="";const i=this.videoIndex.localStreamDescriptions();return 3===i.length&&e.forEach((e=>{let n=!1;n="low"===e.rid?i[0].disabledByWebRTC:"mid"===e.rid?i[1].disabledByWebRTC:i[2].disabledByWebRTC,t+=`{ rid: ${e.rid} active:${e.active} disabledByWebRTC: ${n} maxBitrate:${e.maxBitrate}}`})),t}getEncodingSimulcastLayer(e){switch(e){case 0:return SimulcastLayers_1.default.High;case 1:return SimulcastLayers_1.default.LowAndHigh;case 2:return SimulcastLayers_1.default.LowAndMedium;case 3:return SimulcastLayers_1.default.Low}}publishEncodingSimulcastLayer(){const e=this.getEncodingSimulcastLayer(this.activeStreamsToPublish);this.forEachObserver((t=>{Types_1.Maybe.of(t.encodingSimulcastLayersDidChange).map((i=>i.bind(t)(e)))}))}addObserver(e){this.logger.info("adding simulcast uplink observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing simulcast uplink observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)e(t)}}var _default$T=DefaultSimulcastUplinkPolicy;DefaultSimulcastUplinkPolicy.defaultUplinkBandwidthKbps=1200,DefaultSimulcastUplinkPolicy.startupDurationMs=6e3,DefaultSimulcastUplinkPolicy.holdDownDurationMs=4e3,DefaultSimulcastUplinkPolicy.defaultMaxFrameRate=15,DefaultSimulcastUplinkPolicy.kHiDisabledRate=700,DefaultSimulcastUplinkPolicy.kMidDisabledRate=240;var DefaultSimulcastUplinkPolicy_1$1=Object.defineProperty({default:_default$T},"__esModule",{value:!0}),__awaiter$g=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class NScaleVideoUplinkBandwidthPolicy{constructor(e,t=!0,i,n){this.selfAttendeeId=e,this.scaleResolution=t,this.logger=i,this.browserBehavior=n,this.numParticipants=0,this.idealMaxBandwidthKbps=1400,this.hasBandwidthPriority=!1,this.encodingParamMap=new Map,this.optimalParameters=new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!1),this.parametersInEffect=new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!1),this.encodingParamMap.set(NScaleVideoUplinkBandwidthPolicy.encodingMapKey,{maxBitrate:0})}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){let t=!0,i=1;if(this.transceiverController&&(t=this.transceiverController.hasVideoInput()),this.numParticipants=e.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId)+(t?1:0),this.transceiverController){const e=this.getStreamCaptureSetting();if(e){i=this.calculateEncodingParameters(e).scaleResolutionDownBy}}this.optimalParameters=new DefaultVideoCaptureAndEncodeParameter_1.default(this.captureWidth(),this.captureHeight(),this.captureFrameRate(),this.maxBandwidthKbps(),!1,i)}wantsResubscribe(){return!this.parametersInEffect.equal(this.optimalParameters)}chooseCaptureAndEncodeParameters(){return this.parametersInEffect=this.optimalParameters.clone(),this.parametersInEffect.clone()}captureWidth(){let e=640;return this.numParticipants>4&&(e=320),e}captureHeight(){let e=384;return this.numParticipants>4&&(e=192),e}captureFrameRate(){return 15}maxBandwidthKbps(){if(this.hasBandwidthPriority)return Math.trunc(this.idealMaxBandwidthKbps);let e=0;return e=this.numParticipants<=2?this.idealMaxBandwidthKbps:this.numParticipants<=4?2*this.idealMaxBandwidthKbps/3:(544/11+14880/(11*this.numParticipants))/600*this.idealMaxBandwidthKbps,Math.trunc(e)}setIdealMaxBandwidthKbps(e){this.idealMaxBandwidthKbps=e}setHasBandwidthPriority(e){this.hasBandwidthPriority=e}setTransceiverController(e){this.transceiverController=e}updateTransceiverController(){return __awaiter$g(this,void 0,void 0,(function*(){const e=this.getStreamCaptureSetting();if(!e)return;const t=this.calculateEncodingParameters(e);this.shouldUpdateEndcodingParameters(t)&&(this.encodingParamMap.set(NScaleVideoUplinkBandwidthPolicy.encodingMapKey,t),this.transceiverController.setEncodingParameters(this.encodingParamMap))}))}shouldUpdateEndcodingParameters(e){var t,i;const n=null===(i=null===(t=this.transceiverController.localVideoTransceiver().sender.getParameters())||void 0===t?void 0:t.encodings)||void 0===i?void 0:i[0];return e.maxBitrate!==(null==n?void 0:n.maxBitrate)||e.scaleResolutionDownBy!==(null==n?void 0:n.scaleResolutionDownBy)}calculateEncodingParameters(e){var t,i;const n=1e3*this.maxBandwidthKbps();let r=1;if(void 0!==e.height&&void 0!==e.width&&this.scaleResolution&&!this.hasBandwidthPriority&&this.numParticipants>2){let n=NScaleVideoUplinkBandwidthPolicy.targetHeightArray[Math.min(this.numParticipants,NScaleVideoUplinkBandwidthPolicy.targetHeightArray.length-1)];480===n&&(null===(t=this.browserBehavior)||void 0===t?void 0:t.disable480pResolutionScaleDown())&&(n=360),r=Math.max(Math.min(e.height,e.width)/n,1),null===(i=this.logger)||void 0===i||i.info(`Resolution scale factor is ${r} for capture resolution ${e.width}x${e.height}. New dimension is ${e.width/r}x${e.height/r}`)}return{scaleResolutionDownBy:r,maxBitrate:n}}getStreamCaptureSetting(){var e,t,i,n;return null===(n=null===(i=null===(t=null===(e=this.transceiverController)||void 0===e?void 0:e.localVideoTransceiver())||void 0===t?void 0:t.sender)||void 0===i?void 0:i.track)||void 0===n?void 0:n.getSettings()}}var _default$S=NScaleVideoUplinkBandwidthPolicy;NScaleVideoUplinkBandwidthPolicy.encodingMapKey="video",NScaleVideoUplinkBandwidthPolicy.targetHeightArray=[0,0,0,540,540,480,480,480,480,360,360,360,360,270,270,270,270,180,180,180,180,180,180,180,180,180];var NScaleVideoUplinkBandwidthPolicy_1$1=Object.defineProperty({default:_default$S},"__esModule",{value:!0});class DefaultVolumeIndicatorAdapter{constructor(e,t,i,n,r){this.logger=e,this.realtimeController=t,this.minVolumeDecibels=i,this.maxVolumeDecibels=n,this.selfAttendeeId=r,this.streamIdToAttendeeId={},this.streamIdToExternalUserId={},this.warnedAboutMissingStreamIdMapping={},this.attendeeIdToStreamId={},this.sessionReconnected=!1}onReconnect(){this.sessionReconnected=!0}sendRealtimeUpdatesForAudioStreamIdInfo(e){let t=0;for(const i of e.streams){const n=!!i.attendeeId,r=!!i.externalUserId,o=i.hasOwnProperty("muted"),a=!!i.dropped;if(n){this.attendeeIdToStreamId[i.attendeeId]&&this.attendeeIdToStreamId[i.attendeeId]<i.audioStreamId&&delete this.attendeeIdToStreamId[i.attendeeId],this.streamIdToAttendeeId[i.audioStreamId]=i.attendeeId;const n=r?i.externalUserId:i.attendeeId;this.streamIdToExternalUserId[i.audioStreamId]=n,this.attendeeIdToStreamId[i.attendeeId]=i.audioStreamId,this.realtimeController.realtimeSetAttendeeIdPresence(i.attendeeId,!0,n,!1,{attendeeIndex:t++,attendeesInFrame:e.streams.length})}if(o){const e=this.streamIdToAttendeeId[i.audioStreamId],t=this.streamIdToExternalUserId[i.audioStreamId];this.realtimeController.realtimeUpdateVolumeIndicator(e,null,i.muted,null,t)}if(!n&&!o){const n=this.streamIdToAttendeeId[i.audioStreamId];if(n){const r=this.streamIdToExternalUserId[i.audioStreamId];delete this.streamIdToAttendeeId[i.audioStreamId],delete this.streamIdToExternalUserId[i.audioStreamId],delete this.warnedAboutMissingStreamIdMapping[i.audioStreamId],this.attendeeIdToStreamId[n]===i.audioStreamId&&delete this.attendeeIdToStreamId[n];let o=!1;for(const e of Object.keys(this.streamIdToAttendeeId)){const t=parseInt(e);if(t>i.audioStreamId&&this.streamIdToAttendeeId[t]===n){o=!0;break}}o||this.realtimeController.realtimeSetAttendeeIdPresence(n,!1,r,a,{attendeeIndex:t++,attendeesInFrame:e.streams.length})}}}this.sessionReconnected&&(this.cleanUpState(e),this.sessionReconnected=!1)}cleanUpState(e){const t=Object.values(this.streamIdToAttendeeId),i=e.streams.map((e=>e.attendeeId)),n=t.filter((e=>!i.includes(e)));for(const[e,t]of n.entries()){const i=this.attendeeIdToStreamId[t],n=this.streamIdToExternalUserId[i];delete this.streamIdToAttendeeId[i],delete this.streamIdToExternalUserId[i],delete this.warnedAboutMissingStreamIdMapping[i],delete this.attendeeIdToStreamId[t],t!==this.selfAttendeeId?this.realtimeController.realtimeSetAttendeeIdPresence(t,!1,n,!1,{attendeeIndex:e,attendeesInFrame:t.length}):this.logger.warn("the volume indicator adapter cleans up the current attendee (presence = false) after reconnection")}}sendRealtimeUpdatesForAudioMetadata(e){let t=null,i=null;for(const n of e.attendeeStates){const e=this.attendeeIdForStreamId(n.audioStreamId);n.hasOwnProperty("volume")&&(null===t&&(t={}),null!==e&&(t[e]=this.normalizedVolume(n))),n.hasOwnProperty("signalStrength")&&(null===i&&(i={}),null!==e&&(i[e]=this.normalizedSignalStrength(n)))}this.applyRealtimeUpdatesForAudioMetadata(t,i)}normalizedVolume(e){const t=1-(-e.volume-this.maxVolumeDecibels)/(this.minVolumeDecibels-this.maxVolumeDecibels);return Math.min(Math.max(t,0),1)}normalizedSignalStrength(e){const t=e.signalStrength/DefaultVolumeIndicatorAdapter.MAX_SIGNAL_STRENGTH_LEVELS;return Math.min(Math.max(t,0),1)}applyRealtimeUpdatesForAudioMetadata(e,t){for(const i in this.streamIdToAttendeeId){const n=this.streamIdToAttendeeId[i],r=this.streamIdToExternalUserId[i];let o=null,a=null;null!==e&&(o=e.hasOwnProperty(n)?e[n]:DefaultVolumeIndicatorAdapter.IMPLICIT_VOLUME),null!==t&&(a=t.hasOwnProperty(n)?t[n]:DefaultVolumeIndicatorAdapter.IMPLICIT_SIGNAL_STRENGTH),null===o&&null===a||this.realtimeController.realtimeUpdateVolumeIndicator(n,o,null,a,r)}}attendeeIdForStreamId(e){if(0===e)return null;const t=this.streamIdToAttendeeId[e];return t||(this.warnedAboutMissingStreamIdMapping[e]||(this.warnedAboutMissingStreamIdMapping[e]=!0,this.logger.warn(`volume indicator stream id ${e} seen before being defined`)),null)}}var _default$R=DefaultVolumeIndicatorAdapter;DefaultVolumeIndicatorAdapter.MAX_SIGNAL_STRENGTH_LEVELS=2,DefaultVolumeIndicatorAdapter.IMPLICIT_VOLUME=0,DefaultVolumeIndicatorAdapter.IMPLICIT_SIGNAL_STRENGTH=1;var DefaultVolumeIndicatorAdapter_1$1=Object.defineProperty({default:_default$R},"__esModule",{value:!0}),DefaultActiveSpeakerDetector_1=DefaultActiveSpeakerDetector_1$1,DefaultAudioMixController_1=DefaultAudioMixController_1$1,AudioProfile_1=AudioProfile_1$1,ConnectionHealthData_1=ConnectionHealthData_1$1,SignalingAndMetricsConnectionMonitor_1=SignalingAndMetricsConnectionMonitor_1$1,DefaultEventController_1=DefaultEventController_1$1,DefaultPingPong_1=DefaultPingPong_1$1,DefaultRealtimeController_1=DefaultRealtimeController_1$1,DefaultSessionStateController_1=DefaultSessionStateController_1$1,DefaultSignalingClient_1=DefaultSignalingClient_1$1,SignalingClientVideoSubscriptionConfiguration_1=SignalingClientVideoSubscriptionConfiguration_1$1,DefaultStatsCollector_1=DefaultStatsCollector_1$1,AttachMediaInputTask_1=AttachMediaInputTask_1$1,CleanRestartedSessionTask_1=CleanRestartedSessionTask_1$1,CleanStoppedSessionTask_1=CleanStoppedSessionTask_1$1,CreatePeerConnectionTask_1=CreatePeerConnectionTask_1$1,CreateSDPTask_1=CreateSDPTask_1$1,FinishGatheringICECandidatesTask_1=FinishGatheringICECandidatesTask_1$1,JoinAndReceiveIndexTask_1=JoinAndReceiveIndexTask_1$1,LeaveAndReceiveLeaveAckTask_1=LeaveAndReceiveLeaveAckTask_1$1,ListenForVolumeIndicatorsTask_1=ListenForVolumeIndicatorsTask_1$1,MonitorTask_1=MonitorTask_1$1,OpenSignalingConnectionTask_1=OpenSignalingConnectionTask_1$1,ParallelGroupTask_1=ParallelGroupTask_1$1,PromoteToPrimaryMeetingTask_1=PromoteToPrimaryMeetingTask_1$1,ReceiveAudioInputTask_1=ReceiveAudioInputTask_1$1,ReceiveTURNCredentialsTask_1=ReceiveTURNCredentialsTask_1$1,ReceiveVideoInputTask_1=ReceiveVideoInputTask_1$1,ReceiveVideoStreamIndexTask_1=ReceiveVideoStreamIndexTask_1$1,ReleaseMediaStreamsTask_1=ReleaseMediaStreamsTask_1$1,SendAndReceiveDataMessagesTask_1=SendAndReceiveDataMessagesTask_1$1,SerialGroupTask_1=SerialGroupTask_1$1,SetLocalDescriptionTask_1=SetLocalDescriptionTask_1$1,SetRemoteDescriptionTask_1=SetRemoteDescriptionTask_1$1,SubscribeAndReceiveSubscribeAckTask_1=SubscribeAndReceiveSubscribeAckTask_1$1,TimeoutTask_1=TimeoutTask_1$1,WaitForAttendeePresenceTask_1=WaitForAttendeePresenceTask_1$1,VideoOnlyTransceiverController_1=VideoOnlyTransceiverController_1$1,AllHighestVideoBandwidthPolicy_1=AllHighestVideoBandwidthPolicy_1$1,VideoAdaptiveProbePolicy_1=VideoAdaptiveProbePolicy_1$1,SimulcastVideoStreamIndex_1=SimulcastVideoStreamIndex_1$1,DefaultVideoTileController_1=DefaultVideoTileController_1$1,DefaultVideoTileFactory_1=DefaultVideoTileFactory_1$1,DefaultSimulcastUplinkPolicy_1=DefaultSimulcastUplinkPolicy_1$1,NScaleVideoUplinkBandwidthPolicy_1=NScaleVideoUplinkBandwidthPolicy_1$1,DefaultVolumeIndicatorAdapter_1=DefaultVolumeIndicatorAdapter_1$1,AudioVideoControllerState_1=AudioVideoControllerState_1$1,__awaiter$f=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultAudioVideoController{constructor(e,t,i,n,r,o){this._audioProfile=new AudioProfile_1.default,this.connectionHealthData=new ConnectionHealthData_1.default,this.observerQueue=new Set,this.meetingSessionContext=new AudioVideoControllerState_1.default,this.enableSimulcast=!1,this.useUpdateTransceiverControllerForUplink=!1,this.totalRetryCount=0,this.startAudioVideoTimestamp=0,this.mayNeedRenegotiationForSimulcastLayerChange=!1,this.promotedToPrimaryMeeting=!1,this.receiveIndexTask=void 0,this.monitorTask=void 0,this.destroyed=!1,this.usePromises=!0,this._logger=t,this.sessionStateController=new DefaultSessionStateController_1.default(this._logger),this._configuration=e,this.enableSimulcast=e.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&(new DefaultBrowserBehavior_1.default).hasChromiumWebRTC(),this._webSocketAdapter=i,this._realtimeController=new DefaultRealtimeController_1.default,this._realtimeController.realtimeSetLocalAttendeeId(e.credentials.attendeeId,e.credentials.externalUserId),this._mediaStreamBroker=n,this._reconnectController=r,this._videoTileController=new DefaultVideoTileController_1.default(new DefaultVideoTileFactory_1.default,this,this._logger),this._audioMixController=new DefaultAudioMixController_1.default(this._logger),this.meetingSessionContext.logger=this._logger,this._eventController=new DefaultEventController_1.default(this,o)}destroy(){return __awaiter$f(this,void 0,void 0,(function*(){this.observerQueue.clear(),this.destroyed=!0}))}get configuration(){return this._configuration}get realtimeController(){return this._realtimeController}get activeSpeakerDetector(){return this._activeSpeakerDetector||(this._activeSpeakerDetector=new DefaultActiveSpeakerDetector_1.default(this._realtimeController,this._configuration.credentials.attendeeId,this.handleHasBandwidthPriority.bind(this))),this._activeSpeakerDetector}get videoTileController(){return this._videoTileController}get audioMixController(){return this._audioMixController}get eventController(){return this._eventController}get logger(){return this._logger}get rtcPeerConnection(){return this.meetingSessionContext&&this.meetingSessionContext.peer||null}get mediaStreamBroker(){return this._mediaStreamBroker}getRTCPeerConnectionStats(e){return this.rtcPeerConnection?this.rtcPeerConnection.getStats(e):null}setAudioProfile(e){this._audioProfile=e}addObserver(e){this.logger.info("adding meeting observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing meeting observer"),this.observerQueue.delete(e)}forEachObserver(e){for(const t of this.observerQueue)AsyncScheduler_1.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}initSignalingClient(){this.meetingSessionContext.signalingClient||(this.connectionHealthData.reset(),this.meetingSessionContext=new AudioVideoControllerState_1.default,this.meetingSessionContext.logger=this.logger,this.meetingSessionContext.eventController=this.eventController,this.meetingSessionContext.browserBehavior=new DefaultBrowserBehavior_1.default,this.meetingSessionContext.meetingSessionConfiguration=this.configuration,this.meetingSessionContext.signalingClient=new DefaultSignalingClient_1.default(this._webSocketAdapter,this.logger))}uninstallPreStartObserver(){this.meetingSessionContext.signalingClient.removeObserver(this.preStartObserver),this.preStartObserver=void 0}prestart(){return this.logger.info("Pre-connecting signaling connection."),this.createOrReuseSignalingTask().run().then((()=>{const e=()=>__awaiter$f(this,void 0,void 0,(function*(){this.logger.info("Early connection closed; discarding signaling task."),this.signalingTask=void 0,this.uninstallPreStartObserver()}));this.preStartObserver={handleSignalingClientEvent(t){t.type===SignalingClientEventType_1.default.WebSocketClosed&&e()}},this.meetingSessionContext.signalingClient.registerObserver(this.preStartObserver)})).catch((e=>{this.logger.error(`Signaling task pre-start failed: ${e}`),this.signalingTask=void 0}))}start(e){this.startReturningPromise(e).then((()=>{this.logger.info("start completed")})).catch((e=>{this.logger.error(`start failed: ${e}`)}))}startReturningPromise(e){return!0===(null==e?void 0:e.signalingOnly)?this.prestart():new Promise(((e,t)=>{this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect,(()=>{this.actionConnect(!1).then(e).catch(t)}))}))}connectWithPromises(e){const t=this.meetingSessionContext;this.monitorTask=new MonitorTask_1.default(t,this.configuration.connectionHealthPolicyConfiguration,this.connectionHealthData);const i=this.monitorTask.once(),n=new ReceiveAudioInputTask_1.default(t).once();this.receiveIndexTask=new ReceiveVideoStreamIndexTask_1.default(t),this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();const r=new SerialGroupTask_1.default(this.logger,"Signaling",[this.createOrReuseSignalingTask(),new ListenForVolumeIndicatorsTask_1.default(t),new SendAndReceiveDataMessagesTask_1.default(t),new JoinAndReceiveIndexTask_1.default(t),new ReceiveTURNCredentialsTask_1.default(t),this.receiveIndexTask]).once(),o=new CreatePeerConnectionTask_1.default(t).once(r),a=new AttachMediaInputTask_1.default(t).once(o,n),s=new CreateSDPTask_1.default(t).once(a),c=new SetLocalDescriptionTask_1.default(t).once(s),l=new FinishGatheringICECandidatesTask_1.default(t).once(c),d=new SubscribeAndReceiveSubscribeAckTask_1.default(t).once(l);return new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoStart"),[i,((e,t)=>new TimeoutTask_1.default(this.logger,t,e))(this.configuration.connectionTimeoutMs,new SerialGroupTask_1.default(this.logger,"Peer",[d,e?new TimeoutTask_1.default(this.logger,new ParallelGroupTask_1.default(this.logger,"FinalizeConnection",[new WaitForAttendeePresenceTask_1.default(t),new SetRemoteDescriptionTask_1.default(t)]),this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs):new SetRemoteDescriptionTask_1.default(t)]))])}connectWithTasks(e){return this.receiveIndexTask=new ReceiveVideoStreamIndexTask_1.default(this.meetingSessionContext),this.monitorTask=new MonitorTask_1.default(this.meetingSessionContext,this.configuration.connectionHealthPolicyConfiguration,this.connectionHealthData),this.receiveIndexTask.pauseIngestion(),this.monitorTask.pauseResubscribeCheck(),new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoStart"),[this.monitorTask,new ReceiveAudioInputTask_1.default(this.meetingSessionContext),new TimeoutTask_1.default(this.logger,new SerialGroupTask_1.default(this.logger,"Media",[new SerialGroupTask_1.default(this.logger,"Signaling",[new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),new ListenForVolumeIndicatorsTask_1.default(this.meetingSessionContext),new SendAndReceiveDataMessagesTask_1.default(this.meetingSessionContext),new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext),this.receiveIndexTask]),new SerialGroupTask_1.default(this.logger,"Peer",[new CreatePeerConnectionTask_1.default(this.meetingSessionContext),new AttachMediaInputTask_1.default(this.meetingSessionContext),new CreateSDPTask_1.default(this.meetingSessionContext),new SetLocalDescriptionTask_1.default(this.meetingSessionContext),new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),e?new TimeoutTask_1.default(this.logger,new ParallelGroupTask_1.default(this.logger,"FinalizeConnection",[new WaitForAttendeePresenceTask_1.default(this.meetingSessionContext),new SetRemoteDescriptionTask_1.default(this.meetingSessionContext)]),this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs):new SetRemoteDescriptionTask_1.default(this.meetingSessionContext)])]),this.configuration.connectionTimeoutMs)])}actionConnect(e){return __awaiter$f(this,void 0,void 0,(function*(){this.initSignalingClient(),this.uninstallPreStartObserver(),this.meetingSessionContext.mediaStreamBroker=this._mediaStreamBroker,this.meetingSessionContext.realtimeController=this._realtimeController,this.meetingSessionContext.audioMixController=this._audioMixController,this.meetingSessionContext.audioVideoController=this;const t=!!this.configuration.urls.audioHostURL;if(t?this.enableSimulcast?(this.logger.info("Using transceiver controller with simulcast support"),this.meetingSessionContext.transceiverController=new SimulcastTransceiverController_1.default(this.logger,this.meetingSessionContext.browserBehavior)):(this.logger.info("Using default transceiver controller"),this.meetingSessionContext.transceiverController=new DefaultTransceiverController_1.default(this.logger,this.meetingSessionContext.browserBehavior)):(this.logger.info("Using video only transceiver controller"),this.meetingSessionContext.transceiverController=new VideoOnlyTransceiverController_1.default(this.logger,this.meetingSessionContext.browserBehavior)),this.meetingSessionContext.volumeIndicatorAdapter=new DefaultVolumeIndicatorAdapter_1.default(this.logger,this._realtimeController,DefaultAudioVideoController.MIN_VOLUME_DECIBELS,DefaultAudioVideoController.MAX_VOLUME_DECIBELS,this.configuration.credentials.attendeeId),this.meetingSessionContext.videoTileController=this._videoTileController,this.meetingSessionContext.videoDownlinkBandwidthPolicy=this.configuration.videoDownlinkBandwidthPolicy,this.meetingSessionContext.videoUplinkBandwidthPolicy=this.configuration.videoUplinkBandwidthPolicy,this.meetingSessionContext.enableSimulcast=this.enableSimulcast,this.enableSimulcast){let e=this.meetingSessionContext.videoUplinkBandwidthPolicy;e||(e=new DefaultSimulcastUplinkPolicy_1.default(this.configuration.credentials.attendeeId,this.meetingSessionContext.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy=e),e.addObserver(this),this.meetingSessionContext.videoDownlinkBandwidthPolicy||(this.meetingSessionContext.videoDownlinkBandwidthPolicy=new VideoAdaptiveProbePolicy_1.default(this.meetingSessionContext.logger)),this.meetingSessionContext.videoStreamIndex=new SimulcastVideoStreamIndex_1.default(this.logger)}else this.meetingSessionContext.enableSimulcast=!1,this.meetingSessionContext.videoStreamIndex=new DefaultVideoStreamIndex_1.default(this.logger),this.meetingSessionContext.videoUplinkBandwidthPolicy||(this.meetingSessionContext.videoUplinkBandwidthPolicy=new NScaleVideoUplinkBandwidthPolicy_1.default(this.configuration.credentials.attendeeId,!this.meetingSessionContext.browserBehavior.disableResolutionScaleDown(),this.meetingSessionContext.logger,this.meetingSessionContext.browserBehavior)),this.meetingSessionContext.videoDownlinkBandwidthPolicy||(this.meetingSessionContext.videoDownlinkBandwidthPolicy=new AllHighestVideoBandwidthPolicy_1.default(this.configuration.credentials.attendeeId)),this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController&&this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController&&this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()&&(this.useUpdateTransceiverControllerForUplink=!0,this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController(this.meetingSessionContext.transceiverController)),this.meetingSessionContext.audioProfile=this._audioProfile;this.meetingSessionContext.videoUplinkBandwidthPolicy&&this.maxUplinkBandwidthKbps&&this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(this.maxUplinkBandwidthKbps),this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController&&this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController(this._videoTileController),this.meetingSessionContext.lastKnownVideoAvailability=new MeetingSessionVideoAvailability_1.default,this.meetingSessionContext.videoCaptureAndEncodeParameter=new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!1),this.meetingSessionContext.videosToReceive=new DefaultVideoStreamIdSet_1.default,this.meetingSessionContext.videosPaused=new DefaultVideoStreamIdSet_1.default,this.meetingSessionContext.statsCollector=new DefaultStatsCollector_1.default(this,this.logger,this.meetingSessionContext.browserBehavior),this.meetingSessionContext.connectionMonitor=new SignalingAndMetricsConnectionMonitor_1.default(this,this._realtimeController,this._videoTileController,this.connectionHealthData,new DefaultPingPong_1.default(this.meetingSessionContext.signalingClient,DefaultAudioVideoController.PING_PONG_INTERVAL_MS,this.logger),this.meetingSessionContext.statsCollector),this.meetingSessionContext.reconnectController=this._reconnectController,this.meetingSessionContext.videoDeviceInformation={},e||(this.totalRetryCount=0,this._reconnectController.reset(),this.startAudioVideoTimestamp=Date.now(),this.forEachObserver((e=>{Types_1.Maybe.of(e.audioVideoDidStartConnecting).map((t=>t.bind(e)(!1)))})),this.eventController&&this.eventController.publishEvent("meetingStartRequested")),this.meetingSessionContext.startAudioVideoTimestamp=this.startAudioVideoTimestamp,this._reconnectController.hasStartedConnectionAttempt()?this._reconnectController.startedConnectionAttempt(!1):this._reconnectController.startedConnectionAttempt(!0);const i=t&&this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs>0;let n;this.logger.info("Needs to wait for attendee presence? "+i),n=this.usePromises?this.connectWithPromises(i):this.connectWithTasks(i);try{yield n.run(),this.connectionHealthData.setConnectionStartTime(),this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting,(()=>{this.eventController&&(this.meetingSessionContext.meetingStartDurationMs=Date.now()-this.startAudioVideoTimestamp,this.eventController.publishEvent("meetingStartSucceeded",{maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,poorConnectionCount:this.meetingSessionContext.poorConnectionCount,retryCount:this.totalRetryCount,signalingOpenDurationMs:this.meetingSessionContext.signalingOpenDurationMs,iceGatheringDurationMs:this.meetingSessionContext.iceGatheringDurationMs,meetingStartDurationMs:this.meetingSessionContext.meetingStartDurationMs})),this.meetingSessionContext.startTimeMs=Date.now(),this.actionFinishConnecting()}))}catch(e){this.signalingTask=void 0;const t=new MeetingSessionStatus_1.default(this.getMeetingStatusCode(e)||MeetingSessionStatusCode_1.default.TaskFailed);if(this.logger.info(`Start failed: ${t} due to error ${e}.`),this.sessionStateController.state()===SessionStateControllerState_1.default.NotConnected)return void this.logger.info("Start failed and not connected. Not cleaning up.");this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail,(()=>__awaiter$f(this,void 0,void 0,(function*(){yield this.actionDisconnect(t,!0,e),this.handleMeetingSessionStatus(t,e)||this.notifyStop(t,e)}))))}}))}createOrReuseSignalingTask(){return this.signalingTask||(this.initSignalingClient(),this.signalingTask=new TimeoutTask_1.default(this.logger,new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs).once()),this.signalingTask}actionFinishConnecting(){this.signalingTask=void 0,this.meetingSessionContext.videoDuplexMode=SignalingProtocol_js_1.SdkStreamServiceType.RX,this.meetingSessionContext.enableSimulcast||(this.useUpdateTransceiverControllerForUplink?this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController():this.enforceBandwidthLimitationForSender(this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0])),this.forEachObserver((e=>{Types_1.Maybe.of(e.audioVideoDidStart).map((t=>t.bind(e)()))})),this._reconnectController.reset(),this.receiveIndexTask.resumeIngestion(),this.monitorTask.resumeResubscribeCheck()}stopReturningPromise(){var e;return this.sessionStateController.state()===SessionStateControllerState_1.default.NotConnected?(null===(e=this.meetingSessionContext.signalingClient)||void 0===e||e.closeConnection(),new ReleaseMediaStreamsTask_1.default(this.meetingSessionContext).run()):new Promise(((e,t)=>{this.sessionStateController.perform(SessionStateControllerAction_1.default.Disconnect,(()=>{this._reconnectController.disableReconnect(),this.logger.info("attendee left meeting, session will not be reconnected"),this.actionDisconnect(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.Left),!1,null).then(e).catch(t)}))}))}stop(){this.stopReturningPromise()}actionDisconnect(e,t,i){return __awaiter$f(this,void 0,void 0,(function*(){try{yield new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoStop"),[new TimeoutTask_1.default(this.logger,new LeaveAndReceiveLeaveAckTask_1.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)]).run()}catch(e){this.logger.info("fail to stop")}try{const e=[new TimeoutTask_1.default(this.logger,new CleanStoppedSessionTask_1.default(this.meetingSessionContext),this.configuration.connectionTimeoutMs)];t||e.push(new ReleaseMediaStreamsTask_1.default(this.meetingSessionContext)),yield new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoClean"),e).run()}catch(e){this.logger.info("fail to clean")}this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishDisconnecting,(()=>{t||this.notifyStop(e,i)}))}))}update(e={needsRenegotiation:!0}){let t=e.needsRenegotiation;if(t||(t=void 0===this.meetingSessionContext.peer),t||(t=!this.updateRemoteVideosFromLastVideosToReceive()),t||(t=!this.updateLocalVideoFromPolicy()),this.meetingSessionContext.lastVideosToReceive=this.meetingSessionContext.videosToReceive,!t)return this.logger.info("Update request does not require resubscribe"),this.actionFinishUpdating(),!0;this.logger.info("Update request requires resubscribe");const i=this.sessionStateController.perform(SessionStateControllerAction_1.default.Update,(()=>{this.actionUpdateWithRenegotiation(!0)}));return i===SessionStateControllerTransitionResult_1.default.Transitioned||i===SessionStateControllerTransitionResult_1.default.DeferredTransition}updateRemoteVideosFromLastVideosToReceive(){var e,t;const i=this.meetingSessionContext;if((null===(e=i.videosToReceive)||void 0===e?void 0:e.empty())||(null===(t=i.lastVideosToReceive)||void 0===t?void 0:t.empty()))return!1;if(!(i.transceiverController&&i.transceiverController.getMidForStreamId&&i.transceiverController.setStreamIdForMid&&i.videosToReceive.forEach&&i.signalingClient.remoteVideoUpdate&&i.videoStreamIndex.overrideStreamIdMappings))return!1;let n=[];const r=new Map;let o=[];if(null===i.lastVideosToReceive)n=i.videosToReceive.array();else{const e=i.videoStreamIndex;i.videosToReceive.forEach((t=>{if(i.lastVideosToReceive.contain(t))return;let o=!1;i.lastVideosToReceive.forEach((i=>{o||e.StreamIdsInSameGroup(i,t)&&(r.set(i,t),o=!0)})),o||n.push(t)})),o=i.lastVideosToReceive.array().filter((e=>{const t=i.videosToReceive.contain(e),n=r.has(e);return!t&&!n}))}this.logger.info(`Request to update remote videos with added: ${n}, updated: ${[...r.entries()]}, removed: ${o}`);const a=[];for(const[e,t]of r.entries()){const n=new SignalingClientVideoSubscriptionConfiguration_1.default;if(n.streamId=t,n.attendeeId=i.videoStreamIndex.attendeeIdForStreamId(t),n.mid=i.transceiverController.getMidForStreamId(e),void 0===n.mid)return this.logger.info(`No MID found for stream ID ${e}, cannot update stream without renegotiation`),!1;if(a.push(n),i.transceiverController.setStreamIdForMid(n.mid,t),i.videoStreamIndex.overrideStreamIdMappings(e,t),i.videoTileController.haveVideoTileForAttendeeId(n.attendeeId)){const e=i.videoTileController.getVideoTileForAttendeeId(n.attendeeId);if(!e.setStreamId)return!1;e.setStreamId(t)}}return 0!==a.length&&i.signalingClient.remoteVideoUpdate(a,[]),0===n.length&&0===o.length}updateLocalVideoFromPolicy(){if(this.meetingSessionContext.enableSimulcast){const e=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseEncodingParameters();if(this.mayNeedRenegotiationForSimulcastLayerChange&&!this.negotiatedBitrateLayersAllocationRtpHeaderExtension())return this.logger.info("Needs regenotiation for local video simulcast layer change"),this.mayNeedRenegotiationForSimulcastLayerChange=!1,!1;this.meetingSessionContext.transceiverController.setEncodingParameters(e)}else this.meetingSessionContext.videoCaptureAndEncodeParameter=this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();return this.logger.info("Updated local video from policy without renegotiation"),!0}negotiatedBitrateLayersAllocationRtpHeaderExtension(){if(!this.meetingSessionContext.transceiverController.localVideoTransceiver())return!1;const e=this.meetingSessionContext.transceiverController.localVideoTransceiver().sender.getParameters();return!(!e||!e.headerExtensions)&&e.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"===e.uri))}restartLocalVideo(e){const t=()=>__awaiter$f(this,void 0,void 0,(function*(){this._videoTileController.hasStartedLocalVideoTile()&&(this.logger.info("stopping local video tile prior to local video restart"),this._videoTileController.stopLocalVideoTile(),this.logger.info("preparing local video restart update"),yield this.actionUpdateWithRenegotiation(!1),this.logger.info("starting local video tile for local video restart"),this._videoTileController.startLocalVideoTile()),this.logger.info("finalizing local video restart update"),yield this.actionUpdateWithRenegotiation(!0),e()})),i=this.sessionStateController.perform(SessionStateControllerAction_1.default.Update,(()=>{t()}));return i===SessionStateControllerTransitionResult_1.default.Transitioned||i===SessionStateControllerTransitionResult_1.default.DeferredTransition}replaceLocalVideo(){return __awaiter$f(this,void 0,void 0,(function*(){let e=null;try{e=yield this.mediaStreamBroker.acquireVideoInputStream()}catch(e){throw new Error(`could not acquire video stream from mediaStreamBroker due to ${e.message}`)}if(!e||e.getVideoTracks().length<1)throw new Error("could not acquire video track");const t=e.getVideoTracks()[0];if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw new Error("no active meeting and peer connection");if(!this.meetingSessionContext.browserBehavior.requiresUnifiedPlan())throw new Error("cannot replace track on Plan B");yield this.meetingSessionContext.transceiverController.setVideoInput(t);const i=this.meetingSessionContext.videoTileController.getLocalVideoTile();if(i){const t=i.state(),n=e.getVideoTracks()[0].getSettings();i.bindVideoStream(t.boundAttendeeId,!0,e,n.width,n.height,t.streamId,t.boundExternalUserId)}this.meetingSessionContext.activeVideoInput=e}))}restartLocalAudio(e){return __awaiter$f(this,void 0,void 0,(function*(){let t=null;try{t=yield this.mediaStreamBroker.acquireAudioInputStream()}catch(e){this.logger.info("could not acquire audio stream from mediaStreamBroker")}if(!t||t.getAudioTracks().length<1)throw new Error("could not acquire audio track");this.connectionHealthData.reset(),this.connectionHealthData.setConnectionStartTime();const i=t.getAudioTracks()[0];if(!this.meetingSessionContext||!this.meetingSessionContext.peer)throw new Error("no active meeting and peer connection");let n=!1;return n=this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()?yield this.meetingSessionContext.transceiverController.replaceAudioTrack(i):yield DefaultTransceiverController_1.default.replaceAudioTrackForSender(this.meetingSessionContext.localAudioSender,i),this._realtimeController.realtimeSetLocalAudioInput(t),this.meetingSessionContext.activeAudioInput=t,e(),n?Promise.resolve():Promise.reject()}))}actionUpdateWithRenegotiation(e){return __awaiter$f(this,void 0,void 0,(function*(){this.monitorTask.pauseResubscribeCheck(),this.receiveIndexTask.pauseIngestion();try{yield new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoUpdate"),[new ReceiveVideoInputTask_1.default(this.meetingSessionContext),new TimeoutTask_1.default(this.logger,new SerialGroupTask_1.default(this.logger,"UpdateSession",[new AttachMediaInputTask_1.default(this.meetingSessionContext),new CreateSDPTask_1.default(this.meetingSessionContext),new SetLocalDescriptionTask_1.default(this.meetingSessionContext),new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),new SetRemoteDescriptionTask_1.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs)]).run(),e&&this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating,(()=>{this.actionFinishUpdating()}))}catch(e){this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishUpdating,(()=>{const t=new MeetingSessionStatus_1.default(this.getMeetingStatusCode(e)||MeetingSessionStatusCode_1.default.TaskFailed);t.statusCode()!==MeetingSessionStatusCode_1.default.IncompatibleSDP&&this.logger.info("failed to update audio-video session"),this.handleMeetingSessionStatus(t,e)}))}}))}notifyStop(e,t){var i;if(this.forEachObserver((t=>{Types_1.Maybe.of(t.audioVideoDidStop).map((i=>i.bind(t)(e)))})),this.promotedToPrimaryMeeting&&t&&this.forEachObserver((e=>{this.promotedToPrimaryMeeting=!1,Types_1.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map((t=>t.bind(e)(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.SignalingInternalServerError))))})),this.eventController){const{signalingOpenDurationMs:n,poorConnectionCount:r,startTimeMs:o,iceGatheringDurationMs:a,attendeePresenceDurationMs:s,meetingStartDurationMs:c}=this.meetingSessionContext,l={maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,meetingDurationMs:null===o?0:Math.round(Date.now()-o),meetingStatus:MeetingSessionStatusCode_1.default[e.statusCode()],signalingOpenDurationMs:n,iceGatheringDurationMs:a,attendeePresenceDurationMs:s,poorConnectionCount:r,meetingStartDurationMs:c,retryCount:this.totalRetryCount},d=t&&t.message||(null===(i=e.toString)||void 0===i?void 0:i.call(e))||"";0===l.meetingDurationMs?(l.meetingErrorMessage=d,delete l.meetingDurationMs,delete l.attendeePresenceDurationMs,delete l.meetingStartDurationMs,this.eventController.publishEvent("meetingStartFailed",l)):e.isFailure()||e.isAudioConnectionFailure()?(l.meetingErrorMessage=d,this.eventController.publishEvent("meetingFailed",l)):this.eventController.publishEvent("meetingEnded",l)}}actionFinishUpdating(){if(!this.meetingSessionContext.enableSimulcast)if(this.useUpdateTransceiverControllerForUplink)this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();else{const e=this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];this.enforceBandwidthLimitationForSender(e)}this.monitorTask.resumeResubscribeCheck(),this.receiveIndexTask.resumeIngestion(),this.logger.info("updated audio-video session")}reconnect(e,t){const i=this._reconnectController.retryWithBackoff((()=>__awaiter$f(this,void 0,void 0,(function*(){this.sessionStateController.state()===SessionStateControllerState_1.default.NotConnected?this.sessionStateController.perform(SessionStateControllerAction_1.default.Connect,(()=>{this.actionConnect(!0)})):this.sessionStateController.perform(SessionStateControllerAction_1.default.Reconnect,(()=>{this.actionReconnect(e)})),this.totalRetryCount+=1}))),(()=>{this.logger.info("canceled retry")}));return i||this.sessionStateController.perform(SessionStateControllerAction_1.default.Fail,(()=>{this.actionDisconnect(e,!1,t)})),i}actionReconnect(e){return __awaiter$f(this,void 0,void 0,(function*(){this._reconnectController.hasStartedConnectionAttempt()||(this._reconnectController.startedConnectionAttempt(!1),this.forEachObserver((e=>{Types_1.Maybe.of(e.audioVideoDidStartConnecting).map((t=>t.bind(e)(!0)))}))),this.meetingSessionContext.volumeIndicatorAdapter.onReconnect(),this.connectionHealthData.reset();try{yield new SerialGroupTask_1.default(this.logger,this.wrapTaskName("AudioVideoReconnect"),[new TimeoutTask_1.default(this.logger,new SerialGroupTask_1.default(this.logger,"Media",[new CleanRestartedSessionTask_1.default(this.meetingSessionContext),new SerialGroupTask_1.default(this.logger,"Signaling",[new OpenSignalingConnectionTask_1.default(this.meetingSessionContext),new JoinAndReceiveIndexTask_1.default(this.meetingSessionContext),new ReceiveTURNCredentialsTask_1.default(this.meetingSessionContext)]),new CreatePeerConnectionTask_1.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs),new ReceiveVideoInputTask_1.default(this.meetingSessionContext),new TimeoutTask_1.default(this.logger,new SerialGroupTask_1.default(this.logger,"UpdateSession",[new AttachMediaInputTask_1.default(this.meetingSessionContext),new CreateSDPTask_1.default(this.meetingSessionContext),new SetLocalDescriptionTask_1.default(this.meetingSessionContext),new FinishGatheringICECandidatesTask_1.default(this.meetingSessionContext),new SubscribeAndReceiveSubscribeAckTask_1.default(this.meetingSessionContext),new SetRemoteDescriptionTask_1.default(this.meetingSessionContext)]),this.configuration.connectionTimeoutMs)]).run(),this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting,(()=>{if(this.eventController){const{signalingOpenDurationMs:t,poorConnectionCount:i,startTimeMs:n,iceGatheringDurationMs:r,attendeePresenceDurationMs:o,meetingStartDurationMs:a}=this.meetingSessionContext,s={maxVideoTileCount:this.meetingSessionContext.maxVideoTileCount,meetingDurationMs:Math.round(Date.now()-n),meetingStatus:MeetingSessionStatusCode_1.default[e.statusCode()],signalingOpenDurationMs:t,iceGatheringDurationMs:r,attendeePresenceDurationMs:o,poorConnectionCount:i,meetingStartDurationMs:a,retryCount:this.totalRetryCount};this.eventController.publishEvent("meetingReconnected",s)}this.actionFinishConnecting()}))}catch(e){this.sessionStateController.perform(SessionStateControllerAction_1.default.FinishConnecting,(()=>{this.logger.info("failed to reconnect audio-video session");const t=new MeetingSessionStatus_1.default(this.getMeetingStatusCode(e)||MeetingSessionStatusCode_1.default.TaskFailed);this.handleMeetingSessionStatus(t,e)}))}this.connectionHealthData.setConnectionStartTime()}))}wrapTaskName(e){return`${e}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`}getMeetingStatusCode(e){const t=/the meeting status code: (\d+)/.exec(e&&e.message);return t&&t.length>1?Number.parseInt(t[1],10):null}enforceBandwidthLimitationForSender(e){return __awaiter$f(this,void 0,void 0,(function*(){this.meetingSessionContext.browserBehavior.requiresUnifiedPlan()?yield this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(e):yield DefaultTransceiverController_1.default.setVideoSendingBitrateKbpsForSender(this.meetingSessionContext.localVideoSender,e,this.meetingSessionContext.logger)}))}handleMeetingSessionStatus(e,t){if(this.logger.info(`handling status: ${MeetingSessionStatusCode_1.default[e.statusCode()]}`),e.isTerminal()||this.meetingSessionContext.statsCollector&&this.meetingSessionContext.statsCollector.logMeetingSessionStatus(e),e.statusCode()===MeetingSessionStatusCode_1.default.IncompatibleSDP)return this.restartLocalVideo((()=>{this.logger.info("handled incompatible SDP by attempting to restart video")})),!0;if(e.statusCode()===MeetingSessionStatusCode_1.default.VideoCallSwitchToViewOnly)return this._videoTileController.removeLocalVideoTile(),this.forEachObserver((e=>{Types_1.Maybe.of(e.videoSendDidBecomeUnavailable).map((t=>t.bind(e)()))})),!1;if(e.statusCode()===MeetingSessionStatusCode_1.default.AudioVideoWasRemovedFromPrimaryMeeting)return this.forEachObserver((t=>{Types_1.Maybe.of(t.audioVideoWasDemotedFromPrimaryMeeting).map((i=>i.bind(t)(e)))})),!1;if(e.isTerminal()&&(this.logger.error("session will not be reconnected"),this.meetingSessionContext.reconnectController&&this.meetingSessionContext.reconnectController.disableReconnect()),(e.isFailure()||e.isTerminal())&&this.meetingSessionContext.reconnectController){const i=this.reconnect(e,t);return i?this.logger.warn(`will retry due to status code ${MeetingSessionStatusCode_1.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`):this.logger.error(`failed with status code ${MeetingSessionStatusCode_1.default[e.statusCode()]}${t?` and error: ${t.message}`:""}`),i}return!1}setVideoMaxBandwidthKbps(e){this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&(this.logger.info(`video send has ideal max bandwidth ${e} kbps`),this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(e)),this.maxUplinkBandwidthKbps=e}handleHasBandwidthPriority(e){return __awaiter$f(this,void 0,void 0,(function*(){if(this.meetingSessionContext&&this.meetingSessionContext.videoUplinkBandwidthPolicy&&!this.meetingSessionContext.enableSimulcast){if(this.useUpdateTransceiverControllerForUplink)return this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e),void(yield this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController());const t=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(e);const i=this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();t!==i&&(this.logger.info(`video send bandwidth priority ${e} max has changed from ${t} kbps to ${i} kbps`),yield this.enforceBandwidthLimitationForSender(i))}}))}pauseReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.pause([e])}resumeReceivingStream(e){this.meetingSessionContext&&this.meetingSessionContext.signalingClient&&this.meetingSessionContext.signalingClient.resume([e])}getRemoteVideoSources(){const{videoStreamIndex:e}=this.meetingSessionContext;if(!e)return this.logger.info("meeting has not started"),[];const t=this.configuration.credentials.attendeeId;return e.allVideoSendingSourcesExcludingSelf(t)}encodingSimulcastLayersDidChange(e){this.mayNeedRenegotiationForSimulcastLayerChange=!0,this.forEachObserver((t=>{Types_1.Maybe.of(t.encodingSimulcastLayersDidChange).map((i=>i.bind(t)(e)))}))}promoteToPrimaryMeeting(e){return this.actionPromoteToPrimaryMeeting(e)}actionPromoteToPrimaryMeeting(e){return __awaiter$f(this,void 0,void 0,(function*(){let t=new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.SignalingRequestFailed);return yield new SerialGroupTask_1.default(this.logger,this.wrapTaskName("PromoteToPrimaryMeeting"),[new TimeoutTask_1.default(this.logger,new PromoteToPrimaryMeetingTask_1.default(this.meetingSessionContext,e,(e=>{t=e})),this.configuration.connectionTimeoutMs)]).run(),this.promotedToPrimaryMeeting=t.statusCode()===MeetingSessionStatusCode_1.default.OK,t}))}demoteFromPrimaryMeeting(){this.meetingSessionContext.signalingClient.demoteFromPrimaryMeeting(),this.forEachObserver((e=>{Types_1.Maybe.of(e.audioVideoWasDemotedFromPrimaryMeeting).map((t=>t.bind(e)(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.OK))))}))}}var _default$Q=DefaultAudioVideoController;DefaultAudioVideoController.MIN_VOLUME_DECIBELS=-42,DefaultAudioVideoController.MAX_VOLUME_DECIBELS=-14,DefaultAudioVideoController.PING_PONG_INTERVAL_MS=1e4;var DefaultAudioVideoController_1$1=Object.defineProperty({default:_default$Q},"__esModule",{value:!0}),__awaiter$e=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultAudioVideoFacade{constructor(e,t,i,n,r,o){this.audioVideoController=e,this.videoTileController=t,this.realtimeController=i,this.audioMixController=n,this.deviceController=r,this.contentShareController=o}addObserver(e){this.audioVideoController.addObserver(e),this.trace("addObserver")}removeObserver(e){this.audioVideoController.removeObserver(e),this.trace("removeObserver")}setAudioProfile(e){this.trace("setAudioProfile",e),this.audioVideoController.setAudioProfile(e)}start(e){this.audioVideoController.start(e),this.trace("start")}stop(){this.audioVideoController.stop(),this.trace("stop")}getRTCPeerConnectionStats(e){return this.trace("getRTCPeerConnectionStats",e?e.id:null),this.audioVideoController.getRTCPeerConnectionStats(e)}bindAudioElement(e){const t=this.audioMixController.bindAudioElement(e);return this.trace("bindAudioElement",e.id,t),t}unbindAudioElement(){this.audioMixController.unbindAudioElement(),this.trace("unbindAudioElement")}getCurrentMeetingAudioStream(){return this.trace("getCurrentConferenceStream"),this.audioMixController.getCurrentMeetingAudioStream()}addAudioMixObserver(e){this.trace("addAudioMixObserver"),this.audioMixController.addAudioMixObserver(e)}removeAudioMixObserver(e){this.trace("removeAudioMixObserver"),this.audioMixController.removeAudioMixObserver(e)}bindVideoElement(e,t){this.videoTileController.bindVideoElement(e,t),this.trace("bindVideoElement",{tileId:e,videoElementId:t.id})}unbindVideoElement(e){this.videoTileController.unbindVideoElement(e),this.trace("unbindVideoElement",e)}startLocalVideoTile(){const e=this.videoTileController.startLocalVideoTile();return this.trace("startLocalVideoTile",null,e),e}stopLocalVideoTile(){this.videoTileController.stopLocalVideoTile(),this.trace("stopLocalVideoTile")}hasStartedLocalVideoTile(){const e=this.videoTileController.hasStartedLocalVideoTile();return this.trace("hasStartedLocalVideoTile",null,e),e}removeLocalVideoTile(){this.videoTileController.removeLocalVideoTile(),this.trace("removeLocalVideoTile")}getLocalVideoTile(){const e=this.videoTileController.getLocalVideoTile();return this.trace("getLocalVideoTile"),e}pauseVideoTile(e){this.videoTileController.pauseVideoTile(e),this.trace("pauseVideoTile",e)}unpauseVideoTile(e){this.videoTileController.unpauseVideoTile(e),this.trace("unpauseVideoTile",e)}getVideoTile(e){const t=this.videoTileController.getVideoTile(e);return this.trace("getVideoTile",e),t}getAllRemoteVideoTiles(){const e=this.videoTileController.getAllRemoteVideoTiles();return this.trace("getAllRemoteVideoTiles"),e}getAllVideoTiles(){const e=this.videoTileController.getAllVideoTiles();return this.trace("getAllVideoTiles"),e}addVideoTile(){const e=this.videoTileController.addVideoTile();return this.trace("addVideoTile",null,e.state()),e}removeVideoTile(e){this.videoTileController.removeVideoTile(e),this.trace("removeVideoTile",e)}removeVideoTilesByAttendeeId(e){const t=this.videoTileController.removeVideoTilesByAttendeeId(e);return this.trace("removeVideoTilesByAttendeeId",e,t),t}removeAllVideoTiles(){this.videoTileController.removeAllVideoTiles(),this.trace("removeAllVideoTiles")}captureVideoTile(e){const t=this.videoTileController.captureVideoTile(e);return this.trace("captureVideoTile",e),t}realtimeSubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeSubscribeToAttendeeIdPresence(e),this.trace("realtimeSubscribeToAttendeeIdPresence")}realtimeUnsubscribeToAttendeeIdPresence(e){this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(e),this.trace("realtimeUnsubscribeToAttendeeIdPresence")}realtimeSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSetCanUnmuteLocalAudio(e),this.trace("realtimeSetCanUnmuteLocalAudio",e)}realtimeSubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(e),this.trace("realtimeSubscribeToSetCanUnmuteLocalAudio")}realtimeUnsubscribeToSetCanUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(e)}realtimeCanUnmuteLocalAudio(){const e=this.realtimeController.realtimeCanUnmuteLocalAudio();return this.trace("realtimeCanUnmuteLocalAudio",null,e),e}realtimeMuteLocalAudio(){this.realtimeController.realtimeMuteLocalAudio(),this.trace("realtimeMuteLocalAudio")}realtimeUnmuteLocalAudio(){const e=this.realtimeController.realtimeUnmuteLocalAudio();return this.trace("realtimeUnmuteLocalAudio"),e}realtimeSubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(e),this.trace("realtimeSubscribeToMuteAndUnmuteLocalAudio")}realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e){this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(e)}realtimeIsLocalAudioMuted(){const e=this.realtimeController.realtimeIsLocalAudioMuted();return this.trace("realtimeIsLocalAudioMuted"),e}realtimeSubscribeToVolumeIndicator(e,t){this.realtimeController.realtimeSubscribeToVolumeIndicator(e,t),this.trace("realtimeSubscribeToVolumeIndicator",e)}realtimeUnsubscribeFromVolumeIndicator(e,t){this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(e,t),this.trace("realtimeUnsubscribeFromVolumeIndicator",e,t)}realtimeSubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(e),this.trace("realtimeSubscribeToLocalSignalStrengthChange")}realtimeUnsubscribeToLocalSignalStrengthChange(e){this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(e),this.trace("realtimeUnsubscribeToLocalSignalStrengthChange")}realtimeSendDataMessage(e,t,i){this.realtimeController.realtimeSendDataMessage(e,t,i),this.trace("realtimeSendDataMessage")}realtimeSubscribeToReceiveDataMessage(e,t){this.realtimeController.realtimeSubscribeToReceiveDataMessage(e,t),this.trace("realtimeSubscribeToReceiveDataMessage")}realtimeUnsubscribeFromReceiveDataMessage(e){this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(e),this.trace("realtimeUnsubscribeFromReceiveDataMessage")}realtimeSubscribeToFatalError(e){this.realtimeController.realtimeSubscribeToFatalError(e)}realtimeUnsubscribeToFatalError(e){this.realtimeController.realtimeUnsubscribeToFatalError(e)}subscribeToActiveSpeakerDetector(e,t,i,n){this.audioVideoController.activeSpeakerDetector.subscribe(e,t,i,n),this.trace("subscribeToActiveSpeakerDetector")}unsubscribeFromActiveSpeakerDetector(e){this.audioVideoController.activeSpeakerDetector.unsubscribe(e),this.trace("unsubscribeFromActiveSpeakerDetector")}listAudioInputDevices(e=!1){return __awaiter$e(this,void 0,void 0,(function*(){const t=yield this.deviceController.listAudioInputDevices(e);return this.trace("listAudioInputDevices",e,t),t}))}listVideoInputDevices(e=!1){return __awaiter$e(this,void 0,void 0,(function*(){const t=yield this.deviceController.listVideoInputDevices(e);return this.trace("listVideoInputDevices",e,t),t}))}listAudioOutputDevices(e=!1){return __awaiter$e(this,void 0,void 0,(function*(){const t=yield this.deviceController.listAudioOutputDevices(e);return this.trace("listAudioOutputDevices",e,t),t}))}chooseAudioInputDevice(e){return this.trace("chooseAudioInputDevice",e),this.deviceController.chooseAudioInputDevice(e)}chooseVideoInputDevice(e){return VideoTransformDevice_1.isVideoTransformDevice(e)?this.trace("chooseVideoInputDevice with transform device"):this.trace("chooseVideoInputDevice",e),this.deviceController.chooseVideoInputDevice(e)}chooseAudioOutputDevice(e){const t=this.deviceController.chooseAudioOutputDevice(e);return this.trace("chooseAudioOutputDevice",e),t}addDeviceChangeObserver(e){this.deviceController.addDeviceChangeObserver(e),this.trace("addDeviceChangeObserver")}removeDeviceChangeObserver(e){this.deviceController.removeDeviceChangeObserver(e),this.trace("removeDeviceChangeObserver")}createAnalyserNodeForAudioInput(){const e=this.deviceController.createAnalyserNodeForAudioInput();return this.trace("createAnalyserNodeForAudioInput"),e}startVideoPreviewForVideoInput(e){this.deviceController.startVideoPreviewForVideoInput(e),this.trace("startVideoPreviewForVideoInput",e.id)}stopVideoPreviewForVideoInput(e){this.deviceController.stopVideoPreviewForVideoInput(e),this.trace("stopVideoPreviewForVideoInput",e.id)}setDeviceLabelTrigger(e){this.deviceController.setDeviceLabelTrigger(e),this.trace("setDeviceLabelTrigger")}mixIntoAudioInput(e){const t=this.deviceController.mixIntoAudioInput(e);return this.trace("mixIntoAudioInput",e.id),t}chooseVideoInputQuality(e,t,i,n){this.deviceController.chooseVideoInputQuality(e,t,i,n),this.trace("chooseVideoInputQuality",{width:e,height:t,frameRate:i,maxBandwidthKbps:n})}getVideoInputQualitySettings(){const e=this.deviceController.getVideoInputQualitySettings();return this.trace("getVideoInputQualitySettings"),e}setContentAudioProfile(e){this.trace("setContentAudioProfile",e),this.contentShareController.setContentAudioProfile(e)}startContentShare(e){const t=this.contentShareController.startContentShare(e);return this.trace("startContentShare"),t}startContentShareFromScreenCapture(e,t){const i=this.contentShareController.startContentShareFromScreenCapture(e,t);return this.trace("startContentShareFromScreenCapture"),i}pauseContentShare(){this.contentShareController.pauseContentShare(),this.trace("pauseContentShare")}unpauseContentShare(){this.contentShareController.unpauseContentShare(),this.trace("unpauseContentShare")}stopContentShare(){this.contentShareController.stopContentShare(),this.trace("stopContentShare")}addContentShareObserver(e){this.contentShareController.addContentShareObserver(e),this.trace("addContentShareObserver")}removeContentShareObserver(e){this.contentShareController.removeContentShareObserver(e),this.trace("removeContentShareObserver")}trace(e,t,i){let n=`API/DefaultAudioVideoFacade/${this.audioVideoController.configuration.meetingId}/${this.audioVideoController.configuration.credentials.attendeeId}/${e}`;void 0!==t&&(n+=` ${JSON.stringify(t)}`),void 0!==i&&(n+=` -> ${JSON.stringify(i)}`),this.audioVideoController.logger.info(n)}getRemoteVideoSources(){const e=this.audioVideoController.getRemoteVideoSources();return this.trace("getRemoteVideoSources",null,e),e}get transcriptionController(){return this.realtimeController.transcriptionController}promoteToPrimaryMeeting(e){this.audioVideoController.removeObserver(this),this.audioVideoController.addObserver(this);const t=this.audioVideoController.promoteToPrimaryMeeting(e);return this.trace("promoteToPrimaryMeeting",null,t),t}demoteFromPrimaryMeeting(){this.trace("demoteFromPrimaryMeeting"),this.audioVideoController.demoteFromPrimaryMeeting()}audioVideoWasDemotedFromPrimaryMeeting(e){this.contentShareController.stopContentShare(),this.audioVideoController.removeObserver(this)}}var _default$P=DefaultAudioVideoFacade,DefaultAudioVideoFacade_1$1=Object.defineProperty({default:_default$P},"__esModule",{value:!0}),Utils=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.toLowerCasePropertyNames=t.isIFramed=t.wait=void 0,t.wait=function(e){return new Promise((t=>setTimeout(t,e)))},t.isIFramed=function(){var e;try{return"IFRAME"===(null===(e=window.frameElement)||void 0===e?void 0:e.nodeName)||parent!==top}catch(e){return!0}},t.toLowerCasePropertyNames=function e(t){return null===t?null:"object"!=typeof t?t:Array.isArray(t)?t.map(e):Object.keys(t).reduce(((i,n)=>{const r=t[n],o="object"==typeof r?e(r):r;return i[n.toLowerCase()]=o,i}),{})}}));class MeetingSessionCredentials{constructor(){this.attendeeId=null,this.externalUserId=null,this.joinToken=null}toJSON(){return{attendeeId:this.attendeeId,joinToken:null===this.joinToken?null:"<redacted>"}}}var _default$O=MeetingSessionCredentials,MeetingSessionCredentials_1$1=Object.defineProperty({default:_default$O},"__esModule",{value:!0});class MeetingSessionURLs{constructor(){this._audioHostURL=null,this._screenDataURL=null,this._screenSharingURL=null,this._screenViewingURL=null,this._signalingURL=null,this._turnControlURL=null,this._eventIngestionURL=null,this.urlRewriter=e=>e}get audioHostURL(){return this.urlRewriter(this._audioHostURL)}set audioHostURL(e){this._audioHostURL=e}get screenDataURL(){return this.urlRewriter(this._screenDataURL)}set screenDataURL(e){this._screenDataURL=e}get screenSharingURL(){return this.urlRewriter(this._screenSharingURL)}set screenSharingURL(e){this._screenSharingURL=e}get screenViewingURL(){return this.urlRewriter(this._screenViewingURL)}set screenViewingURL(e){this._screenViewingURL=e}get signalingURL(){return this.urlRewriter(this._signalingURL)}set signalingURL(e){this._signalingURL=e}get turnControlURL(){return this.urlRewriter(this._turnControlURL)}set turnControlURL(e){this._turnControlURL=e}get eventIngestionURL(){return this.urlRewriter(this._eventIngestionURL)}set eventIngestionURL(e){this._eventIngestionURL=e}}var _default$N=MeetingSessionURLs,MeetingSessionURLs_1$1=Object.defineProperty({default:_default$N},"__esModule",{value:!0}),ConnectionHealthPolicyConfiguration_1=ConnectionHealthPolicyConfiguration_1$1,Utils_1=Utils,MeetingSessionCredentials_1=MeetingSessionCredentials_1$1,MeetingSessionURLs_1=MeetingSessionURLs_1$1;class MeetingSessionConfiguration{constructor(e,t){this.meetingId=null,this.externalMeetingId=null,this.credentials=null,this.urls=null,this.connectionTimeoutMs=15e3,this.screenSharingTimeoutMs=5e3,this.screenViewingTimeoutMs=5e3,this.attendeePresenceTimeoutMs=0,this.connectionHealthPolicyConfiguration=new ConnectionHealthPolicyConfiguration_1.default,this.reconnectTimeoutMs=12e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackOffMs=1e3,this.reconnectLongBackOffMs=5e3,this.enableUnifiedPlanForChromiumBasedBrowsers=!0,this.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.videoDownlinkBandwidthPolicy=null,this.videoUplinkBandwidthPolicy=null,this.keepLastFrameWhenPaused=!1,e&&((e=Utils_1.toLowerCasePropertyNames(e)).meeting&&(e=e.meeting),this.meetingId=e.meetingid,this.externalMeetingId=e.externalmeetingid,this.urls=new MeetingSessionURLs_1.default,this.urls.audioHostURL=e.mediaplacement.audiohosturl,this.urls.screenDataURL=e.mediaplacement.screendataurl,this.urls.screenSharingURL=e.mediaplacement.screensharingurl,this.urls.screenViewingURL=e.mediaplacement.screenviewingurl,this.urls.signalingURL=e.mediaplacement.signalingurl,this.urls.turnControlURL=e.mediaplacement.turncontrolurl,e.mediaplacement.eventingestionurl&&(this.urls.eventIngestionURL=e.mediaplacement.eventingestionurl)),t&&((t=Utils_1.toLowerCasePropertyNames(t)).attendee&&(t=t.attendee),this.credentials=new MeetingSessionCredentials_1.default,this.credentials.attendeeId=t.attendeeid,this.credentials.externalUserId=t.externaluserid,this.credentials.joinToken=t.jointoken)}}var _default$M=MeetingSessionConfiguration,MeetingSessionConfiguration_1$1=Object.defineProperty({default:_default$M},"__esModule",{value:!0}),MeetingSessionConfiguration_1=MeetingSessionConfiguration_1$1,__awaiter$d=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultContentShareController{constructor(e,t,i){this.mediaStreamBroker=e,this.contentAudioVideo=t,this.attendeeAudioVideo=i,this.observerQueue=new Set,this.destroyed=!1,this.contentAudioVideo.addObserver(this),this.setupContentShareEvents()}static createContentShareMeetingSessionConfigure(e){const t=new MeetingSessionConfiguration_1.default;return t.meetingId=e.meetingId,t.externalMeetingId=e.externalMeetingId,t.urls=e.urls,t.credentials=new MeetingSessionCredentials_1.default,t.credentials.attendeeId=e.credentials.attendeeId+ContentShareConstants_1.default.Modality,t.credentials.externalUserId=e.credentials.externalUserId,t.credentials.joinToken=e.credentials.joinToken+ContentShareConstants_1.default.Modality,t}setContentAudioProfile(e){this.contentAudioVideo.setAudioProfile(e)}startContentShare(e){return __awaiter$d(this,void 0,void 0,(function*(){if(e){this.mediaStreamBroker.mediaStream=e;for(let e=0;e<this.mediaStreamBroker.mediaStream.getTracks().length;e++)this.mediaStreamBroker.mediaStream.getTracks()[e].addEventListener("ended",(()=>{this.stopContentShare()}));this.contentAudioVideo.start(),this.mediaStreamBroker.mediaStream.getVideoTracks().length>0&&this.contentAudioVideo.videoTileController.startLocalVideoTile()}}))}startContentShareFromScreenCapture(e,t){return __awaiter$d(this,void 0,void 0,(function*(){const i=yield this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(e,t);return yield this.startContentShare(i),i}))}pauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!1)&&this.forEachContentShareObserver((e=>{Types_1.Maybe.of(e.contentShareDidPause).map((t=>t.call(e)))}))}unpauseContentShare(){this.mediaStreamBroker.toggleMediaStream(!0)&&this.forEachContentShareObserver((e=>{Types_1.Maybe.of(e.contentShareDidUnpause).map((t=>t.call(e)))}))}destroy(){return __awaiter$d(this,void 0,void 0,(function*(){this.contentAudioVideo&&(this.destroyed=!0,this.contentAudioVideo.removeObserver(this),this.stopContentShare(),this.observerQueue.clear(),this.contentAudioVideo=void 0,this.attendeeAudioVideo=void 0,this.mediaStreamBroker=void 0)}))}stopContentShare(){this.contentAudioVideo.stop(),this.mediaStreamBroker.cleanup()}addContentShareObserver(e){this.observerQueue.add(e)}removeContentShareObserver(e){this.observerQueue.delete(e)}forEachContentShareObserver(e){for(const t of this.observerQueue)AsyncScheduler_1.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}audioVideoDidStop(e){this.mediaStreamBroker.cleanup(),this.contentShareTile&&(this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id()),this.contentShareTile=null),this.forEachContentShareObserver((e=>{Types_1.Maybe.of(e.contentShareDidStop).map((t=>t.call(e)))}))}setupContentShareEvents(){this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence(((e,t,i,n)=>{const r=new DefaultModality_1.default(e).hasModality(DefaultModality_1.default.MODALITY_CONTENT),o=new DefaultModality_1.default(e).base()===this.attendeeAudioVideo.configuration.credentials.attendeeId;if(!r||!o||!t||this.contentShareTile)return;const a=this.mediaStreamBroker.mediaStream;if(null==a?void 0:a.getVideoTracks().length){this.contentShareTile=this.attendeeAudioVideo.videoTileController.addVideoTile();const e=a.getVideoTracks()[0];let t,i;if(e.getSettings){const n=e.getSettings();t=n.width,i=n.height}else{const n=e.getCapabilities();t=n.width,i=n.height}this.contentShareTile.bindVideoStream(this.contentAudioVideo.configuration.credentials.attendeeId,!1,a,t,i,null,this.contentAudioVideo.configuration.credentials.externalUserId)}this.forEachContentShareObserver((e=>{Types_1.Maybe.of(e.contentShareDidStart).map((t=>t.call(e)))}))}))}}var _default$L=DefaultContentShareController,DefaultContentShareController_1$1=Object.defineProperty({default:_default$L},"__esModule",{value:!0}),Destroyable=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isDestroyable=void 0,t.isDestroyable=function(e){return e&&"destroy"in e}}));class FullJitterBackoff{constructor(e,t,i){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=i,this.currentRetry=0,this.fixedWaitMs<0&&(this.fixedWaitMs=0),this.shortBackoffMs<0&&(this.shortBackoffMs=0),this.longBackoffMs<0&&(this.longBackoffMs=0),this.reset()}reset(){this.currentRetry=0}nextBackoffAmountMs(){const e=Math.random()*Math.min(this.longBackoffMs,this.shortBackoffMs*Math.pow(2,this.currentRetry))+this.fixedWaitMs;return this.currentRetry+=1,e}}var _default$K=FullJitterBackoff,FullJitterBackoff_1$1=Object.defineProperty({default:_default$K},"__esModule",{value:!0});class DefaultUserAgentParser{constructor(e){var t,i,n,r,o,a,s;try{this.parserResult=navigator&&navigator.userAgent?new ua_parser_js_1.UAParser(navigator.userAgent).getResult():void 0}catch(t){e.error(t.message)}this.browserMajorVersion=(null===(n=null===(i=null===(t=this.parserResult)||void 0===t?void 0:t.browser)||void 0===i?void 0:i.version)||void 0===n?void 0:n.split(".")[0])||DefaultUserAgentParser.UNAVAILABLE,this.browserName=(null===(r=this.parserResult)||void 0===r?void 0:r.browser.name)||DefaultUserAgentParser.UNAVAILABLE,this.browserVersion=(null===(o=this.parserResult)||void 0===o?void 0:o.browser.version)||DefaultUserAgentParser.UNAVAILABLE,this.deviceName=[(null===(a=this.parserResult)||void 0===a?void 0:a.device.vendor)||"",(null===(s=this.parserResult)||void 0===s?void 0:s.device.model)||""].join(" ").trim()||DefaultUserAgentParser.UNAVAILABLE}getParserResult(){var e,t;return{browserMajorVersion:this.browserMajorVersion,browserName:this.browserName,browserVersion:this.browserVersion,deviceName:this.deviceName,osName:(null===(e=this.parserResult)||void 0===e?void 0:e.os.name)||DefaultUserAgentParser.UNAVAILABLE,osVersion:(null===(t=this.parserResult)||void 0===t?void 0:t.os.version)||DefaultUserAgentParser.UNAVAILABLE,sdkVersion:Versioning_1.default.sdkVersion,sdkName:Versioning_1.default.sdkName}}}var _default$J=DefaultUserAgentParser;DefaultUserAgentParser.UNAVAILABLE="Unavailable";var DefaultUserAgentParser_1$1=Object.defineProperty({default:_default$J},"__esModule",{value:!0}),FullJitterBackoff_1=FullJitterBackoff_1$1,DefaultUserAgentParser_1=DefaultUserAgentParser_1$1,__awaiter$c=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))},__rest=commonjsGlobal&&commonjsGlobal.__rest||function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]])}return i};class InMemoryJSONEventBuffer{constructor(e,t,i,n,r){this.buffer=[],this.bufferSize=0,this.maxBufferItemCapacityBytes=0,this.ingestionEventSize=0,this.flushIntervalMs=0,this.flushSize=0,this.failedIngestionEvents=[],this.retryCountLimit=15,this.lock=!1,this.cancellableEvents=new Map,this.attributesToFilter=["externalUserId","externalMeetingId","timestampMs"],this.deepCopyCurrentIngestionEvent=e=>({type:e.type,v:e.v,payloads:[...e.payloads]}),this.sendEvents=()=>__awaiter$c(this,void 0,void 0,(function*(){if(this.lock)return;const e=this.getItems(this.flushSize);if(0===e.length)return;this.lock=!0;const t=this.makeRequestBody(e);let i=!1;const n=Date.now();"firefox"===this.metadata.browserName.toLowerCase()&&this.cancellableEvents.set(n,e);try{this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - sending body ${t}`);const e=yield this.send(t);if(this.cancellableEvents.delete(n),e.ok)try{const i=yield e.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - send successful events: ${t} message: ${JSON.stringify(i)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents error reading OK response ${e} for events ${t}`)}else this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Failed to send events ${t} with response status ${e.status}`),i=!0}catch(e){i=!0,this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEvents - Error in sending events ${t} to the ingestion endpoint ${e}`)}finally{this.lock=!1}i&&(this.cancellableEvents.delete(n),this.failedIngestionEvents.push(...e))}));const o=new DefaultUserAgentParser_1.default(r).getParserResult(),a=__rest(o,["browserMajorVersion"]),s=t.toJSON(),{type:c,v:l}=s,d=__rest(s,["type","v"]);this.authenticationToken=t.getAuthenticationToken(),this.metadata=Object.assign(Object.assign({},a),d),Object.keys(this.metadata).forEach((e=>this.attributesToFilter.push(e))),this.type=c,this.v=l,this.ingestionURL=i,this.logger=r,this.importantEvents=new Set(n);const{maxBufferCapacityKb:u,totalBufferItems:h,flushSize:p,flushIntervalMs:f,retryCountLimit:m}=e;this.maxBufferCapacityBytes=1024*u,this.totalBufferItems=h,this.maxBufferItemCapacityBytes=Math.round(this.maxBufferCapacityBytes/h),this.flushIntervalMs=f,this.flushSize=p,this.retryCountLimit=m,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.beaconEventListener=e=>this.beaconEventHandler(e),this.addEventListeners()}addEventListeners(){this.beaconEventListener&&"window"in commonjsGlobal&&window.addEventListener&&"document"in commonjsGlobal&&document.addEventListener&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - addEventListeners - adding pagehide and visibility change event listeners"),window.addEventListener("pagehide",this.beaconEventListener),document.addEventListener("visibilitychange",this.beaconEventListener))}beaconEventHandler(e){("visibilitychange"===e.type&&"hidden"===document.visibilityState||"pagehide"===e.type)&&(this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - beaconEventHandler is triggered calling sendBeacon"),this.sendBeacon())}removeEventListeners(){this.beaconEventListener&&"window"in commonjsGlobal&&window.removeEventListener&&"document"in commonjsGlobal&&document.removeEventListener&&(window.removeEventListener("pagehide",this.beaconEventListener),document.removeEventListener("visibilitychange",this.beaconEventListener),this.logger.debug("Event Reporting - InMemoryJSONEventBuffer - removeEventListeners - removing pagehide and visibility change event listeners"))}start(){var e;this.removeEventListeners(),this.addEventListeners(),null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=new IntervalScheduler_1.default(this.flushIntervalMs),this.intervalScheduler.start((()=>this.sendEvents()))}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.sendBeacon(),this.removeEventListeners()}addItem(e){return __awaiter$c(this,void 0,void 0,(function*(){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - received event ${JSON.stringify(e)}`);const{name:t,ts:i,attributes:n}=e,r=n&&this.filterAttributes(n,this.attributesToFilter),o=Object.assign({name:t,ts:i},r);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - event after filtering attributes ${JSON.stringify(o)}`);const a=this.getSize(o);if(a>InMemoryJSONEventBuffer.MAX_ITEM_SIZE_BYTES_ALLOWED)throw new Error(`Event Reporting - Item to be added has size ${a} bytes. Item cannot exceed max item size allowed of ${InMemoryJSONEventBuffer.MAX_ITEM_SIZE_BYTES_ALLOWED} bytes.`);if(this.importantEvents.has(t))return this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - sending important event ${JSON.stringify(o)}`),void this.sendEventImmediately({name:t,ts:i,attributes:r});if(this.isFull())throw this.logger.warn("Event Reporting - Event buffer is full"),new Error("Buffer full");if(this.currentIngestionEvent.payloads.push(o),this.ingestionEventSize+=a,this.bufferItemThresholdReached(a)){const e=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);this.buffer.push(e),this.bufferSize+=this.ingestionEventSize,this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent(),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - addItem - buffer item threshold reached updated buffer ${JSON.stringify(this.buffer)}`)}}))}filterAttributes(e,t){const i=new Set(t);return Object.keys(e).filter((e=>i.has(e))).forEach((t=>delete e[t])),e}initializeAndGetCurrentIngestionEvent(){const e={type:this.type,v:this.v,payloads:[]};return this.ingestionEventSize=this.getSize(e),e}bufferItemThresholdReached(e){return e+this.ingestionEventSize>=this.maxBufferItemCapacityBytes||this.currentIngestionEvent.payloads.length===InMemoryJSONEventBuffer.MAX_PAYLOAD_ITEMS}getSize(e){let t=0;if("object"==typeof e)for(const[i,n]of Object.entries(e))t+=this.getPrimitiveSize(i),t+=this.getSize(n);else t+=this.getPrimitiveSize(e);return t}getPrimitiveSize(e){let t=0;return"string"==typeof e?t+=2*e.length:"number"==typeof e&&(t+=8),t}isFull(){return this.bufferSize===this.maxBufferCapacityBytes||this.buffer.length===this.totalBufferItems}isEmpty(){return 0===this.buffer.length||0===this.bufferSize}getItems(e,t=0){if(this.isEmpty())return[];e=Math.min(this.buffer.length,e+1);return this.buffer.splice(t,e)}makeBeaconRequestBody(e){const t={metadata:this.metadata,events:e,authorization:this.authenticationToken};return JSON.stringify(t)}makeRequestBody(e){const t={metadata:this.metadata,events:e};return JSON.stringify(t)}sendEventImmediately(e){return __awaiter$c(this,void 0,void 0,(function*(){this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - important event received ${JSON.stringify(e)}`);const{name:t,ts:i,attributes:n}=e,r={type:this.type,v:this.v,payloads:[Object.assign({name:t,ts:i},n)]};let o=!1,a=null;const s=this.makeRequestBody([r]);try{if(a=yield this.send(s),a.ok){try{const e=yield a.json();this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - send successful event: ${s}, message: ${JSON.stringify(e)}`)}catch(e){this.logger.warn(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Error reading OK response ${e} for event ${s}`)}return}this.logger.error(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Failed to send an important event ${s} with response status ${a.status}`),o=!0}catch(e){this.logger.warn(`Event Reporting - There may be a failure in sending an important event ${s} to the ingestion endpoint ${e}.`),o=!0;try{if("firefox"===this.metadata.browserName.toLowerCase()){const e=this.makeBeaconRequestBody([r]);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - beaconing data out ${e}`),o=!navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,e)}}catch(e){this.logger.warn(`Event Reporting - Error sending beacon for an important event ${s}`),o=!0}}o&&(this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - pushing to failed events ${s}`),this.failedIngestionEvents.push(r))}))}send(e){return __awaiter$c(this,void 0,void 0,(function*(){const t=new FullJitterBackoff_1.default(InMemoryJSONEventBuffer.RETRY_FIXED_BACKOFF_WAIT_MS,InMemoryJSONEventBuffer.RETRY_SHORT_BACKOFF_MS,InMemoryJSONEventBuffer.RETRY_LONG_BACKOFF_MS);try{let i=0;for(;i<this.retryCountLimit;){const n=yield fetch(this.ingestionURL,{method:"POST",headers:{Authorization:`Bearer ${this.authenticationToken}`},body:e});if(n.ok||!InMemoryJSONEventBuffer.SENDING_FAILURE_CODES.has(n.status))return n;if(this.logger.warn(`Will retry sending failure for ${e} due to status code ${n.status}.`),i++,i<this.retryCountLimit){const e=t.nextBackoffAmountMs();yield Utils_1.wait(e)}}if(i===this.retryCountLimit)throw new Error(`Retry count limit reached for ${e}`)}catch(e){throw e}}))}sendBeacon(){return __awaiter$c(this,void 0,void 0,(function*(){const e=this.buffer;if(this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out buffer events ${JSON.stringify(e)}`),this.buffer=[],this.currentIngestionEvent.payloads.length>0){const t=this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);e.push(t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out current ingestion event ${JSON.stringify(t)}`),this.currentIngestionEvent=this.initializeAndGetCurrentIngestionEvent()}if(this.failedIngestionEvents.length>0){const t=this.failedIngestionEvents.map((e=>this.deepCopyCurrentIngestionEvent(e)));e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out any failed ingestion event ${JSON.stringify(t)}`),this.failedIngestionEvents=[]}if(this.cancellableEvents.size>0&&(this.cancellableEvents.forEach((t=>{e.push(...t),this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out each cancellable event ${JSON.stringify(t)}`)})),this.cancellableEvents.clear()),0===e.length)return;const t=this.makeBeaconRequestBody(e);this.logger.debug(`Event Reporting - InMemoryJSONEventBuffer - sendBeacon - beacon data to send ${t}`);try{navigator.sendBeacon(`${this.ingestionURL}?beacon=1`,t)||this.logger.warn(`Event Reporting - Browser failed to queue beacon data ${t}`)}catch(e){this.logger.warn(`Event Reporting - Sending beacon data ${t} failed with error ${e}`)}}))}reset(){this.maxBufferCapacityBytes=0,this.totalBufferItems=0,this.buffer=[],this.bufferSize=0,this.maxBufferItemCapacityBytes=0,this.ingestionEventSize=0,this.flushIntervalMs=0,this.flushSize=0,this.failedIngestionEvents=[],this.lock=!1,this.beaconEventListener=void 0,this.cancellableEvents.clear()}destroy(){return __awaiter$c(this,void 0,void 0,(function*(){this.stop(),this.reset()}))}}var _default$I=InMemoryJSONEventBuffer;InMemoryJSONEventBuffer.SENDING_FAILURE_CODES=new Set([408,429,500,502,503,504]),InMemoryJSONEventBuffer.RETRY_FIXED_BACKOFF_WAIT_MS=0,InMemoryJSONEventBuffer.RETRY_SHORT_BACKOFF_MS=1e3,InMemoryJSONEventBuffer.RETRY_LONG_BACKOFF_MS=15e3,InMemoryJSONEventBuffer.MAX_PAYLOAD_ITEMS=2,InMemoryJSONEventBuffer.MAX_ITEM_SIZE_BYTES_ALLOWED=3e3;var InMemoryJSONEventBuffer_1$1=Object.defineProperty({default:_default$I},"__esModule",{value:!0}),Destroyable_1=Destroyable,InMemoryJSONEventBuffer_1=InMemoryJSONEventBuffer_1$1,__awaiter$b=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultMeetingEventReporter{constructor(e,t){this.reportingEvents=!1,this.importantEvents=["meetingEnded","meetingFailed","meetingStartFailed","audioInputFailed","videoInputFailed","meetingStartSucceeded"],this.destroyed=!1;const{eventsClientConfiguration:i,ingestionURL:n,eventBufferConfiguration:r}=e,{eventsToIgnore:o}=i;this.eventBuffer=new InMemoryJSONEventBuffer_1.default(r,i,n,this.importantEvents,t),this.logger=t,this.eventsToIgnore=o,this.start()}start(){if(!this.reportingEvents)try{this.eventBuffer.start(),this.logger.info("Event reporting started"),this.reportingEvents=!0}catch(e){this.logger.error(`Event Reporting - Error starting the event buffer ${e}`)}}stop(){if(this.reportingEvents)try{this.eventBuffer.stop(),this.logger.info("Event reporting stopped"),this.reportingEvents=!1}catch(e){this.logger.error(`Event Reporting - Error stopping the event buffer ${e}`)}}reportEvent(e,t,i){return __awaiter$b(this,void 0,void 0,(function*(){if(this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - event received in reportEvent ${e}, ${t}, ${JSON.stringify(i)}`),this.eventsToIgnore.includes(t))this.logger.debug(`Event Reporting - DefaultMeetingEventReporter - ${t} event will be ignored as it is in events to ignore`);else try{this.logger.debug("Event Reporting - DefaultMeetingEventReporter - adding item to event buffer"),yield this.eventBuffer.addItem({ts:e,name:t,attributes:i})}catch(e){this.logger.error(`Event Reporting - Error adding event to buffer ${e}`)}}))}destroy(){return __awaiter$b(this,void 0,void 0,(function*(){this.destroyed=!0,this.stop(),Destroyable_1.isDestroyable(this.eventBuffer)&&this.eventBuffer.destroy(),this.eventBuffer=void 0}))}}var _default$H=DefaultMeetingEventReporter,DefaultMeetingEventReporter_1$1=Object.defineProperty({default:_default$H},"__esModule",{value:!0});class MeetingReadinessCheckerConfiguration{constructor(){this.timeoutMs=1e4,this.waitDurationMs=3e3}}var _default$G=MeetingReadinessCheckerConfiguration,MeetingReadinessCheckerConfiguration_1$1=Object.defineProperty({default:_default$G},"__esModule",{value:!0}),CheckAudioConnectivityFeedback_1=CheckAudioConnectivityFeedback_1$1,CheckAudioInputFeedback_1=CheckAudioInputFeedback_1$1,CheckAudioOutputFeedback_1=CheckAudioOutputFeedback_1$1,CheckCameraResolutionFeedback_1=CheckCameraResolutionFeedback_1$1,CheckContentShareConnectivityFeedback_1=CheckContentShareConnectivityFeedback_1$1,CheckNetworkTCPConnectivityFeedback_1=CheckNetworkTCPConnectivityFeedback_1$1,CheckNetworkUDPConnectivityFeedback_1=CheckNetworkUDPConnectivityFeedback_1$1,CheckVideoConnectivityFeedback_1=CheckVideoConnectivityFeedback_1$1,CheckVideoInputFeedback_1=CheckVideoInputFeedback_1$1,MeetingReadinessCheckerConfiguration_1=MeetingReadinessCheckerConfiguration_1$1,__awaiter$a=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultMeetingReadinessChecker{constructor(e,t,i=new MeetingReadinessCheckerConfiguration_1.default){this.logger=e,this.meetingSession=t,this.configuration=i,this.browserBehavior=new DefaultBrowserBehavior_1.default}static delay(e){return __awaiter$a(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}checkAudioInput(e){return __awaiter$a(this,void 0,void 0,(function*(){try{return yield this.meetingSession.audioVideo.chooseAudioInputDevice(e),yield this.meetingSession.audioVideo.chooseAudioInputDevice(null),CheckAudioInputFeedback_1.default.Succeeded}catch(e){return this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${e}`),e instanceof PermissionDeniedError_1.default?CheckAudioInputFeedback_1.default.PermissionDenied:CheckAudioInputFeedback_1.default.Failed}}))}checkAudioOutput(e,t,i=null){return __awaiter$a(this,void 0,void 0,(function*(){try{const n=e?DefaultDeviceController_1.default.getIntrinsicDeviceId(e):"";yield this.playTone(n,440,i);return(yield t())?CheckAudioOutputFeedback_1.default.Succeeded:CheckAudioOutputFeedback_1.default.Failed}catch(e){return this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${e}`),CheckAudioOutputFeedback_1.default.Failed}finally{this.stopTone()}}))}playTone(e,t,i){return __awaiter$a(this,void 0,void 0,(function*(){this.oscillatorNode&&this.stopTone(),this.audioContext=DefaultDeviceController_1.default.getAudioContext(),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=0,this.oscillatorNode=this.audioContext.createOscillator(),this.oscillatorNode.frequency.value=t,this.oscillatorNode.connect(this.gainNode),this.destinationStream=this.audioContext.createMediaStreamDestination(),this.gainNode.connect(this.destinationStream);const n=this.audioContext.currentTime+.1;this.gainNode.gain.linearRampToValueAtTime(0,n),this.gainNode.gain.linearRampToValueAtTime(.1,n+.1),this.oscillatorNode.start();const r=new DefaultAudioMixController_1.default(this.logger);try{this.browserBehavior.supportsSetSinkId()&&(yield r.bindAudioDevice({deviceId:e}))}catch(e){this.logger.error(`Failed to bind audio device: ${e}`)}try{yield r.bindAudioElement(i||new Audio)}catch(e){this.logger.error(`Failed to bind audio element: ${e}`)}yield r.bindAudioStream(this.destinationStream.stream)}))}stopTone(){if(!(this.audioContext&&this.gainNode&&this.oscillatorNode&&this.destinationStream))return;const e=this.audioContext.currentTime;this.gainNode.gain.linearRampToValueAtTime(.1,e+.1+1),this.gainNode.gain.linearRampToValueAtTime(0,e+.2+1),this.oscillatorNode.stop(),this.oscillatorNode.disconnect(this.gainNode),this.gainNode.disconnect(this.destinationStream),this.oscillatorNode=null,this.gainNode=null,this.destinationStream=null}checkVideoInput(e){return __awaiter$a(this,void 0,void 0,(function*(){try{return yield this.meetingSession.audioVideo.chooseVideoInputDevice(e),yield this.meetingSession.audioVideo.chooseVideoInputDevice(null),CheckVideoInputFeedback_1.default.Succeeded}catch(e){return this.logger.error(`MeetingReadinessChecker: Video check failed with error ${e}`),e instanceof PermissionDeniedError_1.default?CheckVideoInputFeedback_1.default.PermissionDenied:CheckVideoInputFeedback_1.default.Failed}}))}checkCameraResolution(e,t,i){return __awaiter$a(this,void 0,void 0,(function*(){let n;try{const r=DefaultDeviceController_1.default.getIntrinsicDeviceId(e),o={video:this.calculateVideoConstraint(r,t,i)};n=yield navigator.mediaDevices.getUserMedia(o)}catch(e){return this.logger.error(`MeetingReadinessChecker: Camera resolution check with width: ${t} height ${i} failed with error ${e}`),e&&"OverconstrainedError"===e.name?CheckCameraResolutionFeedback_1.default.ResolutionNotSupported:e&&"NotAllowedError"===e.name?CheckCameraResolutionFeedback_1.default.PermissionDenied:CheckCameraResolutionFeedback_1.default.Failed}finally{n&&n.getTracks().forEach((function(e){e.stop()}))}return CheckCameraResolutionFeedback_1.default.Succeeded}))}calculateVideoConstraint(e,t,i){const n=this.browserBehavior.requiresResolutionAlignment(t,i),r={};return this.browserBehavior.requiresNoExactMediaStreamConstraints()?(r.deviceId=e,r.width=t,r.height=i):(r.deviceId={exact:e},r.width={exact:n[0]},r.height={exact:n[1]}),r}checkContentShareConnectivity(e){return __awaiter$a(this,void 0,void 0,(function*(){let t=!1,i=!1;const n={contentShareDidStart:()=>{t=!0}},r={audioVideoDidStart:()=>{i=!0}};try{return this.meetingSession.audioVideo.addObserver(r),this.meetingSession.audioVideo.start(),this.meetingSession.audioVideo.addContentShareObserver(n),yield this.meetingSession.audioVideo.startContentShareFromScreenCapture(e),yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){return i&&t})))),i?(yield this.stopMeeting(),t?CheckContentShareConnectivityFeedback_1.default.Succeeded:CheckContentShareConnectivityFeedback_1.default.TimedOut):CheckContentShareConnectivityFeedback_1.default.ConnectionFailed}catch(e){return this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${e}`),"NotAllowedError"===e.name?CheckContentShareConnectivityFeedback_1.default.PermissionDenied:CheckContentShareConnectivityFeedback_1.default.Failed}finally{this.meetingSession.audioVideo.removeObserver(r),this.meetingSession.audioVideo.stopContentShare(),this.meetingSession.audioVideo.removeContentShareObserver(n)}}))}checkAudioConnectivity(e){return __awaiter$a(this,void 0,void 0,(function*(){let t=!1;const i=this.meetingSession.audioVideo,n=(e,i,n,r)=>{e===this.meetingSession.configuration.credentials.attendeeId&&i&&(t=!0)};try{yield i.chooseAudioInputDevice(e)}catch(e){return this.logger.error(`MeetingReadinessChecker: Failed to get audio input device with error ${e}`),e instanceof PermissionDeniedError_1.default?CheckAudioConnectivityFeedback_1.default.AudioInputPermissionDenied:CheckAudioConnectivityFeedback_1.default.AudioInputRequestFailed}if(i.realtimeSubscribeToAttendeeIdPresence(n),!(yield this.startMeeting())){i.realtimeUnsubscribeToAttendeeIdPresence(n);try{yield this.meetingSession.audioVideo.chooseAudioInputDevice(null)}catch(e){this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`)}return CheckAudioConnectivityFeedback_1.default.ConnectionFailed}yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){return t})))),i.realtimeUnsubscribeToAttendeeIdPresence(n),yield this.stopMeeting();try{yield this.meetingSession.audioVideo.chooseAudioInputDevice(null)}catch(e){this.logger.error(`MeetingReadinessChecker: Failed to choose null device with error ${e}`)}return t?CheckAudioConnectivityFeedback_1.default.Succeeded:CheckAudioConnectivityFeedback_1.default.AudioNotReceived}))}checkVideoConnectivity(e){return __awaiter$a(this,void 0,void 0,(function*(){const t=this.meetingSession.audioVideo;try{yield t.chooseVideoInputDevice(e)}catch(e){return this.logger.error(`MeetingReadinessChecker: Failed to get video input device with error ${e}`),e instanceof PermissionDeniedError_1.default?CheckVideoConnectivityFeedback_1.default.VideoInputPermissionDenied:CheckVideoConnectivityFeedback_1.default.VideoInputRequestFailed}if(!(yield this.startMeeting()))return CheckVideoConnectivityFeedback_1.default.ConnectionFailed;let i=0;return t.startLocalVideoTile(),yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){const e=yield t.getRTCPeerConnectionStats();return e&&e.forEach((e=>{"outbound-rtp"===e.type&&"video"===e.mediaType&&(i=e.packetsSent)})),i>0})))),t.stopLocalVideoTile(),yield this.stopMeeting(),i<=0?CheckVideoConnectivityFeedback_1.default.VideoNotSent:CheckVideoConnectivityFeedback_1.default.Succeeded}))}checkNetworkUDPConnectivity(){return __awaiter$a(this,void 0,void 0,(function*(){try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),CheckNetworkUDPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{const t=this.originalURLRewriter(e);return t.includes("transport=tcp")?"":t};const e=this.meetingSession.audioVideo;if(!(yield this.startMeeting()))return this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,CheckNetworkUDPConnectivityFeedback_1.default.ConnectionFailed;let t=!1;return yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){const i=yield e.getRTCPeerConnectionStats();return i&&i.forEach((e=>{"candidate-pair"===e.type&&"succeeded"===e.state&&(t=!0)})),t})))),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,yield this.stopMeeting(),t?CheckNetworkUDPConnectivityFeedback_1.default.Succeeded:CheckNetworkUDPConnectivityFeedback_1.default.ICENegotiationFailed}))}checkNetworkTCPConnectivity(){return __awaiter$a(this,void 0,void 0,(function*(){try{this.originalURLRewriter=this.meetingSession.configuration.urls.urlRewriter}catch(e){return this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${e}`),CheckNetworkTCPConnectivityFeedback_1.default.MeetingSessionURLsNotInitialized}this.meetingSession.configuration.urls.urlRewriter=e=>{const t=this.originalURLRewriter(e);return t.includes("transport=udp")?"":t};const e=this.meetingSession.audioVideo;if(!(yield this.startMeeting()))return this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,CheckNetworkTCPConnectivityFeedback_1.default.ConnectionFailed;let t=!1;return yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){const i=yield e.getRTCPeerConnectionStats();return i&&i.forEach((e=>{"candidate-pair"===e.type&&"succeeded"===e.state&&(t=!0)})),t})))),this.meetingSession.configuration.urls.urlRewriter=this.originalURLRewriter,yield this.stopMeeting(),t?CheckNetworkTCPConnectivityFeedback_1.default.Succeeded:CheckNetworkTCPConnectivityFeedback_1.default.ICENegotiationFailed}))}startMeeting(){return __awaiter$a(this,void 0,void 0,(function*(){let e=!1;const t={audioVideoDidStart:()=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.start(),yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){return e})))),this.meetingSession.audioVideo.removeObserver(t),e}))}stopMeeting(){return __awaiter$a(this,void 0,void 0,(function*(){let e=!1;const t={audioVideoDidStop:t=>{e=!0}};return this.meetingSession.audioVideo.addObserver(t),this.meetingSession.audioVideo.stop(),yield this.executeTimeoutTask((()=>__awaiter$a(this,void 0,void 0,(function*(){return e})))),this.meetingSession.audioVideo.removeObserver(t),e}))}executeTimeoutTask(e){return __awaiter$a(this,void 0,void 0,(function*(){let t=!1;class i extends BaseTask_1.default{constructor(e,t){super(e),this.waitDurationMs=t,this.isCancelled=!1}cancel(){this.isCancelled=!0}run(){return __awaiter$a(this,void 0,void 0,(function*(){for(;!this.isCancelled;){if(yield e()){t=!0;break}yield DefaultMeetingReadinessChecker.delay(this.waitDurationMs)}}))}}const n=new TimeoutTask_1.default(this.logger,new i(this.logger,this.configuration.waitDurationMs),this.configuration.timeoutMs);return yield n.run(),t}))}}var _default$F=DefaultMeetingReadinessChecker,DefaultMeetingReadinessChecker_1$1=Object.defineProperty({default:_default$F},"__esModule",{value:!0});class EventBufferConfiguration{constructor(e=5e3,t=2,i=64,n=100,r=15){this.flushIntervalMs=e,this.flushSize=t,this.maxBufferCapacityKb=i,this.totalBufferItems=n,this.retryCountLimit=r}}var _default$E=EventBufferConfiguration,EventBufferConfiguration_1$1=Object.defineProperty({default:_default$E},"__esModule",{value:!0}),EventBufferConfiguration_1=EventBufferConfiguration_1$1;class EventIngestionConfiguration{constructor(e,t,i=new EventBufferConfiguration_1.default){this.eventsClientConfiguration=e,this.ingestionURL=t,this.eventBufferConfiguration=i}}var _default$D=EventIngestionConfiguration,EventIngestionConfiguration_1$1=Object.defineProperty({default:_default$D},"__esModule",{value:!0});class MeetingEventsClientConfiguration{constructor(e,t,i,n=[]){this.type="Meet",this.v=1,this.meetingId=e,this.attendeeId=t,this.eventsToIgnore=n,this.authenticationToken=i}getAuthenticationToken(){return this.authenticationToken}toJSON(){const e={};return e.type=this.type,e.v=this.v,e.meetingId=this.meetingId,e.attendeeId=this.attendeeId,e}}var _default$C=MeetingEventsClientConfiguration,MeetingEventsClientConfiguration_1$1=Object.defineProperty({default:_default$C},"__esModule",{value:!0});class DefaultReconnectController{constructor(e,t){this.reconnectTimeoutMs=e,this.backoffPolicy=t,this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this._isFirstConnection=!0,this.backoffTimer=null,this.backoffCancel=null,this.reset()}timeSpentReconnectingMs(){return this.firstConnectionAttempted?Date.now()-this.firstConnectionAttemptTimestampMs:0}hasPastReconnectDeadline(){return Date.now()-this.lastActiveTimestampMs>=this.reconnectTimeoutMs||this.timeSpentReconnectingMs()>=this.reconnectTimeoutMs}reset(){this.cancel(),this.shouldReconnect=!0,this.onlyRestartPeerConnection=!1,this.firstConnectionAttempted=!1,this.firstConnectionAttemptTimestampMs=0,this.lastActiveTimestampMs=1/0,this.backoffPolicy.reset()}startedConnectionAttempt(e){this._isFirstConnection=e,this.firstConnectionAttempted||(this.firstConnectionAttempted=!0,this.firstConnectionAttemptTimestampMs=Date.now())}hasStartedConnectionAttempt(){return this.firstConnectionAttempted}isFirstConnection(){return this._isFirstConnection}disableReconnect(){this.shouldReconnect=!1}enableRestartPeerConnection(){this.onlyRestartPeerConnection=!0}cancel(){this.disableReconnect(),this.backoffTimer&&(this.backoffTimer.stop(),this.backoffCancel&&(this.backoffCancel(),this.backoffCancel=null))}retryWithBackoff(e,t){const i=this.shouldReconnect&&!this.hasPastReconnectDeadline();return i&&(this.backoffCancel=t,this.backoffTimer=new TimeoutScheduler_1.default(this.backoffPolicy.nextBackoffAmountMs()),this.backoffTimer.start((()=>{this.backoffCancel=null,e()}))),i}shouldOnlyRestartPeerConnection(){return this.onlyRestartPeerConnection}clone(){return new DefaultReconnectController(this.reconnectTimeoutMs,this.backoffPolicy)}setLastActiveTimestampMs(e){this.lastActiveTimestampMs=e}}var _default$B=DefaultReconnectController,DefaultReconnectController_1$1=Object.defineProperty({default:_default$B},"__esModule",{value:!0});class DefaultWebSocketAdapter{constructor(e){this.logger=e}create(e,t,i){this.connection=new WebSocket(i?e:Versioning_1.default.urlWithVersion(e),t),this.connection.binaryType="arraybuffer"}send(e){if(!this.connection)return this.logger.error("WebSocket not yet created or already destroyed."),!1;try{return e instanceof Uint8Array?this.connection.send(e.buffer):this.connection.send(e),!0}catch(e){return this.logger.debug((()=>`send error: ${e.message}, websocket state=${WebSocketReadyState_1.default[this.readyState()]}`)),!1}}close(e,t){var i;null===(i=this.connection)||void 0===i||i.close(e,t)}destroy(){this.connection=void 0}addEventListener(e,t){this.connection?this.connection.addEventListener(e,t):this.logger.warn("Cannot add event listener with no WebSocket connection.")}removeEventListener(e,t){var i;null===(i=this.connection)||void 0===i||i.removeEventListener(e,t)}readyState(){if(!this.connection)return WebSocketReadyState_1.default.None;switch(this.connection.readyState){case WebSocket.CONNECTING:return WebSocketReadyState_1.default.Connecting;case WebSocket.OPEN:return WebSocketReadyState_1.default.Open;case WebSocket.CLOSING:return WebSocketReadyState_1.default.Closing;case WebSocket.CLOSED:return WebSocketReadyState_1.default.Closed}}}var _default$A=DefaultWebSocketAdapter,DefaultWebSocketAdapter_1$1=Object.defineProperty({default:_default$A},"__esModule",{value:!0}),DefaultAudioVideoController_1=DefaultAudioVideoController_1$1,DefaultAudioVideoFacade_1=DefaultAudioVideoFacade_1$1,ContentShareMediaStreamBroker_1=ContentShareMediaStreamBroker_1$1,DefaultContentShareController_1=DefaultContentShareController_1$1,CSPMonitor_1=CSPMonitor_1$1,EventIngestionConfiguration_1=EventIngestionConfiguration_1$1,DefaultMeetingEventReporter_1=DefaultMeetingEventReporter_1$1,MeetingEventsClientConfiguration_1=MeetingEventsClientConfiguration_1$1,DefaultReconnectController_1=DefaultReconnectController_1$1,DefaultWebSocketAdapter_1=DefaultWebSocketAdapter_1$1,__awaiter$9=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultMeetingSession{constructor(e,t,i,n){this._configuration=e,this._logger=t,this.checkBrowserSupportAndFeatureConfiguration(),CSPMonitor_1.default.addLogger(this._logger),CSPMonitor_1.default.register(),this.setupEventReporter(e,t,n),this._deviceController=i,this.audioVideoController=new DefaultAudioVideoController_1.default(this._configuration,this._logger,new DefaultWebSocketAdapter_1.default(this._logger),i,new DefaultReconnectController_1.default(this._configuration.reconnectTimeoutMs,new FullJitterBackoff_1.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs)),this._eventReporter),i.bindToAudioVideoController(this.audioVideoController);const r=new ContentShareMediaStreamBroker_1.default(this._logger);this.contentShareController=new DefaultContentShareController_1.default(r,new DefaultAudioVideoController_1.default(DefaultContentShareController_1.default.createContentShareMeetingSessionConfigure(this._configuration),this._logger,new DefaultWebSocketAdapter_1.default(this._logger),r,new DefaultReconnectController_1.default(this._configuration.reconnectTimeoutMs,new FullJitterBackoff_1.default(this._configuration.reconnectFixedWaitMs,this._configuration.reconnectShortBackOffMs,this._configuration.reconnectLongBackOffMs))),this.audioVideoController),this.audioVideoFacade=new DefaultAudioVideoFacade_1.default(this.audioVideoController,this.audioVideoController.videoTileController,this.audioVideoController.realtimeController,this.audioVideoController.audioMixController,this._deviceController,this.contentShareController)}get configuration(){return this._configuration}get logger(){return this._logger}get audioVideo(){return this.audioVideoFacade}get contentShare(){return this.contentShareController}get deviceController(){return this._deviceController}get eventReporter(){return this._eventReporter}destroy(){return __awaiter$9(this,void 0,void 0,(function*(){Destroyable_1.isDestroyable(this.contentShareController)&&(yield this.contentShareController.destroy()),Destroyable_1.isDestroyable(this.audioVideoController)&&(yield this.audioVideoController.destroy()),Destroyable_1.isDestroyable(this.eventReporter)&&(yield this.eventReporter.destroy()),CSPMonitor_1.default.removeLogger(this._logger),this._logger=void 0,this._configuration=void 0,this._deviceController=void 0,this.audioVideoFacade=void 0,this.audioVideoController=void 0,this.contentShareController=void 0,this._eventReporter=void 0}))}setupEventReporter(e,t,i){if(i)this._eventReporter=i;else{const i=e.urls.eventIngestionURL;if(i){this.logger.info("Event ingestion URL is present in the configuration");const{meetingId:n,credentials:{attendeeId:r,joinToken:o}}=e,a=new MeetingEventsClientConfiguration_1.default(n,r,o),s=new EventIngestionConfiguration_1.default(a,i);this._eventReporter=new DefaultMeetingEventReporter_1.default(s,t)}}}checkBrowserSupportAndFeatureConfiguration(){const e=new DefaultBrowserBehavior_1.default,t=`${e.name()} ${e.majorVersion()} (${e.version()})`;if(this.logger.info(`browser is ${t}`),e.isSupported()||this.logger.warn(`this browser is not currently supported. Stability may suffer. Supported browsers are: ${e.supportString()}.`),e.hasChromiumWebRTC()&&!this._configuration.enableUnifiedPlanForChromiumBasedBrowsers&&this.logger.error("Plan B SDP has been deprecated on Chromium-based browsers. Overriding configured value of 'enableUnifiedPlanForChromiumBasedBrowsers' to be true"),this._configuration.videoUplinkBandwidthPolicy)if(this.isSimulcastUplinkPolicy(this._configuration.videoUplinkBandwidthPolicy)){if(!e.hasChromiumWebRTC())throw new Error("Simulcast is only supported on Chromium-based browsers");this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!0}else this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1;this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers&&(e.hasChromiumWebRTC()?this.logger.info(`Simulcast is enabled for ${e.name()}`):(this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers=!1,this.logger.info("Simulcast is only supported on Chromium-based browsers")))}isSimulcastUplinkPolicy(e){return!(!e||!e.addObserver)}}var _default$z=DefaultMeetingSession,DefaultMeetingSession_1$1=Object.defineProperty({default:_default$z},"__esModule",{value:!0});class Message{constructor(e,t,i){this.type=e,this.headers=t,this.payload=i}}var _default$y=Message,Message_1$1=Object.defineProperty({default:_default$y},"__esModule",{value:!0});class DefaultSigV4{constructor(e,t){this.chimeClient=e,this.awsClient=t}makeTwoDigits(e){return e>9?e.toString():"0"+e.toString()}getDateTimeString(){const e=new Date;return e.getUTCFullYear()+this.makeTwoDigits(e.getUTCMonth()+1)+this.makeTwoDigits(e.getUTCDate())+"T"+this.makeTwoDigits(e.getUTCHours())+this.makeTwoDigits(e.getUTCMinutes())+this.makeTwoDigits(e.getUTCSeconds())+"Z"}getDateString(e){return e.substring(0,e.indexOf("T"))}getSignatureKey(e,t,i,n){const r=this.awsClient.util.crypto.hmac("AWS4"+e,t,"buffer"),o=this.awsClient.util.crypto.hmac(r,i,"buffer"),a=this.awsClient.util.crypto.hmac(o,n,"buffer");return this.awsClient.util.crypto.hmac(a,"aws4_request","buffer")}signURL(e,t,i,n,r,o,a){const s=this.getDateTimeString(),c=this.getDateString(s),l=this.chimeClient.config.region,d="host:"+n.toLowerCase()+"\n",u=c+"/"+l+"/"+i+"/aws4_request",h=this.chimeClient.config.credentials;let p=new Map;p.set("X-Amz-Algorithm",["AWS4-HMAC-SHA256"]),p.set("X-Amz-Credential",[encodeURIComponent(h.accessKeyId+"/"+u)]),p.set("X-Amz-Date",[s]),p.set("X-Amz-Expires",["10"]),p.set("X-Amz-SignedHeaders",["host"]),h.sessionToken&&p.set("X-Amz-Security-Token",[encodeURIComponent(h.sessionToken)]),p.set(Versioning_1.default.X_AMZN_VERSION,[encodeURIComponent(Versioning_1.default.sdkVersion)]),p.set(Versioning_1.default.X_AMZN_USER_AGENT,[encodeURIComponent(Versioning_1.default.sdkUserAgentLowResolution)]),null==a||a.forEach(((e,t)=>{const i=encodeURIComponent(t);e.sort().forEach((e=>{p.has(i)||p.set(i,[]),p.get(i).push(encodeURIComponent(e))}))}));let f="";p=new Map([...p.entries()].sort()),p.forEach(((e,t)=>{e.forEach((e=>{f.length&&(f+="&"),f+=t+"="+e}))}));const m=e+"\n"+r+"\n"+f+"\n"+d+"\nhost\n"+this.awsClient.util.crypto.sha256(o,"hex"),g="AWS4-HMAC-SHA256\n"+s+"\n"+c+"/"+l+"/"+i+"/aws4_request\n"+this.awsClient.util.crypto.sha256(m,"hex"),v=this.getSignatureKey(h.secretAccessKey,c,l,i),_=this.awsClient.util.crypto.hmac(v,g,"hex");return t+"://"+n+r+"?"+(f+"&X-Amz-Signature="+_)}}var _default$x=DefaultSigV4,DefaultSigV4_1$1=Object.defineProperty({default:_default$x},"__esModule",{value:!0}),Message_1=Message_1$1,DefaultSigV4_1=DefaultSigV4_1$1,__awaiter$8=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultMessagingSession{constructor(e,t,i,n,r){this.configuration=e,this.logger=t,this.webSocket=i,this.reconnectController=n,this.sigV4=r,this.observerQueue=new Set,this.isConnecting=!1,this.webSocket||(this.webSocket=new DefaultWebSocketAdapter_1.default(this.logger)),this.reconnectController||(this.reconnectController=new DefaultReconnectController_1.default(e.reconnectTimeoutMs,new FullJitterBackoff_1.default(e.reconnectFixedWaitMs,e.reconnectShortBackoffMs,e.reconnectLongBackoffMs))),this.sigV4||(this.sigV4=new DefaultSigV4_1.default(this.configuration.chimeClient,this.configuration.awsClient)),CSPMonitor_1.default.addLogger(this.logger),CSPMonitor_1.default.register()}addObserver(e){this.logger.info("adding messaging observer"),this.observerQueue.add(e)}removeObserver(e){this.logger.info("removing messaging observer"),this.observerQueue.delete(e)}start(){this.isClosed()&&!this.isConnecting?this.startConnecting(!1):this.logger.info("messaging session already started")}stop(){this.isClosed()?this.logger.info("no existing messaging session needs closing"):(this.isClosing=!0,this.webSocket.close(),CSPMonitor_1.default.removeLogger(this.logger))}forEachObserver(e){for(const t of this.observerQueue)AsyncScheduler_1.default.nextTick((()=>{this.observerQueue.has(t)&&e(t)}))}setUpEventListeners(){this.webSocket.addEventListener("open",(()=>{this.openEventHandler()})),this.webSocket.addEventListener("message",(e=>{this.receiveMessageHandler(e.data)})),this.webSocket.addEventListener("close",(e=>{this.closeEventHandler(e)})),this.webSocket.addEventListener("error",(()=>{this.logger.error("WebSocket error")}))}startConnecting(e){return __awaiter$8(this,void 0,void 0,(function*(){this.isConnecting=!0;try{e||this.reconnectController.reset(),this.reconnectController.hasStartedConnectionAttempt()?this.reconnectController.startedConnectionAttempt(!1):this.reconnectController.startedConnectionAttempt(!0);let t=e?void 0:this.configuration.endpointUrl;if(void 0===t)try{t=(yield this.configuration.chimeClient.getMessagingSessionEndpoint().promise()).Endpoint.Url}catch(e){const t=new CloseEvent("close",{wasClean:!1,code:4999,reason:"Failed to getMessagingSessionEndpoint",bubbles:!1});return void this.closeEventHandler(t)}const i=this.prepareWebSocketUrl(t);this.logger.info(`opening connection to ${i}`),this.webSocket.create(i,[],!0),this.forEachObserver((t=>{t.messagingSessionDidStartConnecting&&t.messagingSessionDidStartConnecting(e)})),this.setUpEventListeners()}finally{this.isConnecting=!1}}))}prepareWebSocketUrl(e){const t=new Map;return t.set("userArn",[this.configuration.userArn]),t.set("sessionId",[this.configuration.messagingSessionId]),this.sigV4.signURL("GET","wss","chime",e,"/connect","",t)}isClosed(){return this.webSocket.readyState()===WebSocketReadyState_1.default.None||this.webSocket.readyState()===WebSocketReadyState_1.default.Closed}openEventHandler(){this.reconnectController.reset(),this.isSessionEstablished=!1}receiveMessageHandler(e){try{const t=JSON.parse(e),i=t.Headers["x-amz-chime-event-type"],n=new Message_1.default(i,t.Headers,t.Payload||null);if(this.isSessionEstablished||"SESSION_ESTABLISHED"!==i){if(!this.isSessionEstablished)return}else this.forEachObserver((e=>{e.messagingSessionDidStart&&e.messagingSessionDidStart()})),this.isSessionEstablished=!0;this.forEachObserver((e=>{e.messagingSessionDidReceiveMessage&&e.messagingSessionDidReceiveMessage(n)}))}catch(e){this.logger.error(`Messaging parsing failed: ${e}`)}}retryConnection(){return this.reconnectController.retryWithBackoff((()=>__awaiter$8(this,void 0,void 0,(function*(){yield this.startConnecting(!0)}))),null)}closeEventHandler(e){this.logger.info(`WebSocket close: ${e.code} ${e.reason}`),4999!==e.code&&this.webSocket.destroy(),!this.isClosing&&this.canReconnect(e.code)&&this.retryConnection()||(this.isClosing=!1,this.isSessionEstablished&&this.forEachObserver((t=>{t.messagingSessionDidStop&&t.messagingSessionDidStop(e)})))}canReconnect(e){return 1001===e||1006===e||e>=1011&&e<=1014||e>4e3&&4002!==e&&4003!==e&&4401!==e}}var _default$w=DefaultMessagingSession,DefaultMessagingSession_1$1=Object.defineProperty({default:_default$w},"__esModule",{value:!0}),__awaiter$7=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};const DEFAULT_FRAMERATE=15;class DefaultVideoFrameProcessorPipeline{constructor(e,t){this.logger=e,this.stages=t,this.fr=DEFAULT_FRAMERATE,this.outputMediaStream=new MediaStream,this.videoInput=document.createElement("video"),this.canvasOutput=document.createElement("canvas"),this.outputCtx=this.canvasOutput.getContext("2d"),this.canvasInput=document.createElement("canvas"),this.inputCtx=this.canvasInput.getContext("2d"),this.inputVideoStream=null,this.sourceBuffers=[],this.destBuffers=[],this.observers=new Set,this.hasStarted=!1,this.process=e=>__awaiter$7(this,void 0,void 0,(function*(){if(!this.inputVideoStream)return;const e=performance.now();this.videoInput.videoWidth&&(this.canvasInput.width!==this.videoInput.videoWidth&&(this.canvasInput.width=this.videoInput.videoWidth,this.canvasInput.height=this.videoInput.videoHeight,this.sourceBuffers[0].height=this.canvasInput.height,this.sourceBuffers[0].width=this.canvasInput.width,this.sourceBuffers[0].framerate=this.framerate),this.inputCtx.drawImage(this.videoInput,0,0));let t,i=[];i.push(this.sourceBuffers[0]);try{for(const e of this.processors)i=yield e.process(i)}catch(e){return void this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))}this.destBuffers=i;try{t=yield this.destBuffers[0].asCanvasImageSource()}catch(e){return void(this.inputVideoStream&&(this.logger.info("buffers are destroyed and pipeline could not start"),this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))))}const n=t.width,r=t.height;0!==n&&0!==r&&(this.canvasOutput.width!==n&&this.canvasOutput.height!==r&&(this.canvasOutput.width=n,this.canvasOutput.height=r),this.outputCtx.drawImage(t,0,0,n,r,0,0,n,r),this.hasStarted||(this.hasStarted=!0,this.forEachObserver((e=>{e.processingDidStart&&e.processingDidStart()}))));const o=performance.now()-e,a=2e3/this.framerate-o,s=Math.max(0,1e3/this.framerate-o);a<=0&&this.forEachObserver((e=>{e.processingLatencyTooHigh&&e.processingLatencyTooHigh(o)})),this.lastTimeOut=setTimeout(this.process,s)}))}destroy(){if(this.stop(),this.stages)for(const e of this.stages)e.destroy()}get framerate(){return this.fr}set framerate(e){this.fr=e<0?DEFAULT_FRAMERATE:e}stop(){if(this.videoInput.removeEventListener("loadedmetadata",this.process),this.videoInput.srcObject=null,this.destroyInputMediaStreamAndBuffers(),this.outputMediaStream)for(const e of this.outputMediaStream.getVideoTracks())e.stop();this.lastTimeOut&&(clearTimeout(this.lastTimeOut),this.lastTimeOut=void 0),this.hasStarted&&(this.hasStarted=!1,this.forEachObserver((e=>{e.processingDidStop&&e.processingDidStop()})))}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}getInputMediaStream(){return __awaiter$7(this,void 0,void 0,(function*(){return this.inputVideoStream}))}getActiveOutputMediaStream(){return this.outputMediaStream&&this.outputMediaStream.active?this.outputMediaStream:this.outputMediaStream=this.canvasOutput.captureStream(this.framerate)}setInputMediaStream(e){return __awaiter$7(this,void 0,void 0,(function*(){if(!e)return void this.stop();if(0===e.getVideoTracks().length)return void this.logger.error("No video tracks in input media stream, ignoring");this.inputVideoStream=e;const t=this.inputVideoStream.getVideoTracks()[0].getSettings();this.logger.info(`processing pipeline input stream settings ${JSON.stringify(t)}`),this.canvasOutput.width=t.width,this.canvasOutput.height=t.height,this.videoInput.addEventListener("loadedmetadata",this.process),this.videoInput.srcObject=this.inputVideoStream,this.videoInput.setAttribute("playsinline","true");const i=new CanvasVideoFrameBuffer_1.default(this.canvasInput);this.sourceBuffers.push(i),this.videoInput.load();try{yield this.videoInput.play()}catch(e){this.logger.warn("Video element play() overrided by another load().")}}))}set processors(e){this.stages=e}get processors(){return this.stages}forEachObserver(e){for(const t of this.observers)setTimeout((()=>{e(t)}),0)}destroyInputMediaStreamAndBuffers(){if(this.inputVideoStream)for(const e of this.inputVideoStream.getTracks())e.stop();this.inputVideoStream=null;for(const e of this.sourceBuffers)e.destroy();this.sourceBuffers=[]}}var _default$v=DefaultVideoFrameProcessorPipeline,DefaultVideoFrameProcessorPipeline_1$1=Object.defineProperty({default:_default$v},"__esModule",{value:!0}),DefaultVideoFrameProcessorPipeline_1=DefaultVideoFrameProcessorPipeline_1$1,__awaiter$6=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class DefaultVideoTransformDevice{constructor(e,t,i,n=new DefaultBrowserBehavior_1.default){this.logger=e,this.device=t,this.processors=i,this.browserBehavior=n,this.observers=new Set,this.pipe=new DefaultVideoFrameProcessorPipeline_1.default(this.logger,this.processors),this.pipe.addObserver(this)}get outputMediaStream(){return this.pipe.outputMediaStream}chooseNewInnerDevice(e){const t=new DefaultVideoTransformDevice(this.logger,e,this.processors,this.browserBehavior);return t.pipe=this.pipe,t}getInnerDevice(){return this.device}intrinsicDevice(){return __awaiter$6(this,void 0,void 0,(function*(){const e={};return this.device?"string"==typeof this.device?(this.browserBehavior.requiresNoExactMediaStreamConstraints()?e.deviceId=this.device:e.deviceId={exact:this.device},e):this.device.id?this.device:Object.assign(Object.assign({},this.device),e):e}))}transformStream(e){return __awaiter$6(this,void 0,void 0,(function*(){return yield this.pipe.setInputMediaStream(e),this.inputMediaStream=e,this.pipe.getActiveOutputMediaStream()}))}onOutputStreamDisconnect(){this.logger.info("DefaultVideoTransformDevice: detach stopping input media stream");const e=this.device&&this.device.id;if(this.pipe.stop(),!e&&this.inputMediaStream)for(const e of this.inputMediaStream.getVideoTracks())e.stop()}stop(){return __awaiter$6(this,void 0,void 0,(function*(){if(this.inputMediaStream)for(const e of this.inputMediaStream.getVideoTracks())e.stop();this.pipe.destroy(),this.inputMediaStream=null}))}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}processingDidStart(){this.logger.info("video transform device processing started"),this.forEachObserver((e=>{e.processingDidStart&&e.processingDidStart()}))}processingLatencyTooHigh(e){this.forEachObserver((t=>{t.processingLatencyTooHigh&&t.processingLatencyTooHigh(e)}))}processingDidFailToStart(){this.logger.info("video transform device processing failed to start"),this.forEachObserver((e=>{e.processingDidFailToStart&&e.processingDidFailToStart()}))}processingDidStop(){this.logger.info("video transform device processing stopped"),this.forEachObserver((e=>{e.processingDidStop&&e.processingDidStop()}))}forEachObserver(e){for(const t of this.observers)setTimeout((()=>{e(t)}),0)}}var _default$u=DefaultVideoTransformDevice,DefaultVideoTransformDevice_1$1=Object.defineProperty({default:_default$u},"__esModule",{value:!0});class FullJitterLimitedBackoff extends FullJitterBackoff_1.default{constructor(e,t,i,n){super(e,t,i),this.limit=n,this.attempts=0}nextBackoffAmountMs(){if(this.attempts++,this.attempts>this.limit)throw new Error("retry limit exceeded");return super.nextBackoffAmountMs()}}var _default$t=FullJitterLimitedBackoff,FullJitterLimitedBackoff_1$1=Object.defineProperty({default:_default$t},"__esModule",{value:!0}),FullJitterLimitedBackoff_1=FullJitterLimitedBackoff_1$1;class FullJitterBackoffFactory{constructor(e,t,i){this.fixedWaitMs=e,this.shortBackoffMs=t,this.longBackoffMs=i}create(){return new FullJitterBackoff_1.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs)}createWithLimit(e){return new FullJitterLimitedBackoff_1.default(this.fixedWaitMs,this.shortBackoffMs,this.longBackoffMs,e)}}var _default$s=FullJitterBackoffFactory,FullJitterBackoffFactory_1$1=Object.defineProperty({default:_default$s},"__esModule",{value:!0});class Log{constructor(e,t,i,n){this.sequenceNumber=e,this.message=t,this.timestampMs=i,this.logLevel=n}}var _default$r=Log,Log_1$1=Object.defineProperty({default:_default$r},"__esModule",{value:!0}),Log_1=Log_1$1,__awaiter$5=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class MeetingSessionPOSTLogger{constructor(e,t,i,n,r,o=LogLevel_1.default.WARN,a){this.name=e,this.configuration=t,this.batchSize=i,this.intervalMs=n,this.url=r,this.level=o,this.headers=a,this.logCapture=[],this.sequenceNumber=0,this.lock=!1,this.startLogPublishScheduler(this.batchSize),this.eventListener=()=>{this.stop()},this.addEventListener()}addEventListener(){this.eventListener&&"window"in commonjsGlobal&&window.addEventListener&&window.addEventListener("unload",this.eventListener)}removeEventListener(){this.eventListener&&"window"in commonjsGlobal&&window.removeEventListener&&window.removeEventListener("unload",this.eventListener)}debug(e){LogLevel_1.default.DEBUG<this.level||("string"==typeof e?this.log(LogLevel_1.default.DEBUG,e):e?this.log(LogLevel_1.default.DEBUG,e()):this.log(LogLevel_1.default.DEBUG,""+e))}info(e){this.log(LogLevel_1.default.INFO,e)}warn(e){this.log(LogLevel_1.default.WARN,e)}error(e){this.log(LogLevel_1.default.ERROR,e)}setLogLevel(e){this.level=e}getLogLevel(){return this.level}getLogCaptureSize(){return this.logCapture.length}startLogPublishScheduler(e){var t;this.addEventListener(),null===(t=this.intervalScheduler)||void 0===t||t.stop(),this.intervalScheduler=new IntervalScheduler_1.default(this.intervalMs),this.intervalScheduler.start((()=>__awaiter$5(this,void 0,void 0,(function*(){if(!0===this.lock||0===this.getLogCaptureSize())return;this.lock=!0;const t=this.logCapture.slice(0,e),i=this.makeRequestBody(t);try{200===(yield fetch(this.url,Object.assign({method:"POST",body:i},this.headers?{headers:this.headers}:{}))).status&&(this.logCapture=this.logCapture.slice(t.length))}catch(e){console.warn("[MeetingSessionPOSTLogger] "+e.message)}finally{this.lock=!1}}))))}stop(){var e;null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.removeEventListener();const t=this.makeRequestBody(this.logCapture);navigator.sendBeacon(this.url,t)}destroy(){var e;return __awaiter$5(this,void 0,void 0,(function*(){null===(e=this.intervalScheduler)||void 0===e||e.stop(),this.intervalScheduler=void 0,this.removeEventListener(),this.configuration=void 0,this.logCapture=[]}))}makeRequestBody(e){return JSON.stringify({meetingId:this.configuration.meetingId,attendeeId:this.configuration.credentials.attendeeId,appName:this.name,logs:e})}log(e,t){if(e<this.level)return;const i=Date.now();this.logCapture.push(new Log_1.default(this.sequenceNumber,t,i,LogLevel_1.default[e])),this.sequenceNumber+=1}}var _default$q=MeetingSessionPOSTLogger,MeetingSessionPOSTLogger_1$1=Object.defineProperty({default:_default$q},"__esModule",{value:!0});class MessagingSessionConfiguration{constructor(e,t,i,n,r){this.userArn=e,this.messagingSessionId=t,this.endpointUrl=i,this.chimeClient=n,this.awsClient=r,this.reconnectTimeoutMs=1e4,this.reconnectFixedWaitMs=0,this.reconnectShortBackoffMs=1e3,this.reconnectLongBackoffMs=5e3,this.messagingSessionId||(this.messagingSessionId=this.generateSessionId())}generateSessionId(){const e=new Uint32Array(1);return window.crypto.getRandomValues(e)[0].toString()}}var _default$p=MessagingSessionConfiguration,MessagingSessionConfiguration_1$1=Object.defineProperty({default:_default$p},"__esModule",{value:!0});class MultiLogger{constructor(...e){this._loggers=e}info(e){for(const t of this._loggers)t.info(e)}warn(e){for(const t of this._loggers)t.warn(e)}error(e){for(const t of this._loggers)t.error(e)}debug(e){let t,i;i="string"==typeof e?e:e?()=>(t||(t=e()),t):""+e;for(const e of this._loggers)e.debug(i)}setLogLevel(e){for(const t of this._loggers)t.setLogLevel(e)}getLogLevel(){for(const e of this._loggers)return e.getLogLevel();return LogLevel_1.default.OFF}}var _default$o=MultiLogger,MultiLogger_1$1=Object.defineProperty({default:_default$o},"__esModule",{value:!0});class NoOpLogger{constructor(e=LogLevel_1.default.OFF){this.level=e}info(e){}warn(e){}error(e){}debug(e){LogLevel_1.default.DEBUG<this.level||"string"!=typeof e&&e()}setLogLevel(e){this.level=e}getLogLevel(){return this.level}}var _default$n=NoOpLogger,NoOpLogger_1$1=Object.defineProperty({default:_default$n},"__esModule",{value:!0}),NoOpLogger_1=NoOpLogger_1$1;class NoOpDebugLogger extends NoOpLogger_1.default{constructor(){super(LogLevel_1.default.DEBUG)}}var _default$m=NoOpDebugLogger,NoOpDebugLogger_1$1=Object.defineProperty({default:_default$m},"__esModule",{value:!0});class NoOpMediaStreamBroker{acquireAudioInputStream(){return Promise.reject()}acquireVideoInputStream(){return Promise.reject()}acquireDisplayInputStream(e){return Promise.reject()}releaseMediaStream(e){}bindToAudioVideoController(e){}}var _default$l=NoOpMediaStreamBroker,NoOpMediaStreamBroker_1$1=Object.defineProperty({default:_default$l},"__esModule",{value:!0}),NoOpDebugLogger_1=NoOpDebugLogger_1$1,NoOpMediaStreamBroker_1=NoOpMediaStreamBroker_1$1;class NoOpAudioVideoController extends DefaultAudioVideoController_1.default{constructor(e){const t=new MeetingSessionConfiguration_1.default;t.meetingId="",t.externalMeetingId="",t.credentials=new MeetingSessionCredentials_1.default,t.credentials.attendeeId="",t.credentials.joinToken="",t.urls=new MeetingSessionURLs_1.default,t.urls.turnControlURL="",t.urls.audioHostURL="",t.urls.screenViewingURL="",t.urls.screenDataURL="",t.urls.screenSharingURL="wss://localhost/",t.urls.signalingURL="wss://localhost/",super(e||t,new NoOpDebugLogger_1.default,new DefaultWebSocketAdapter_1.default(new NoOpDebugLogger_1.default),new NoOpMediaStreamBroker_1.default,new DefaultReconnectController_1.default(0,new FullJitterBackoff_1.default(0,0,0)))}setAudioProfile(e){}start(){}stop(){}promoteToPrimaryMeeting(e){return Promise.resolve(new MeetingSessionStatus_1.default(MeetingSessionStatusCode_1.default.OK))}demoteFromPrimaryMeeting(){}}var _default$k=NoOpAudioVideoController,NoOpAudioVideoController_1$1=Object.defineProperty({default:_default$k},"__esModule",{value:!0}),NoOpDeviceController_1$1=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DestroyableNoOpDeviceController=void 0;class n extends NoOpMediaStreamBroker_1.default{constructor(e){super()}listAudioInputDevices(){return Promise.resolve([])}listVideoInputDevices(){return Promise.resolve([])}listAudioOutputDevices(){return Promise.resolve([])}chooseAudioInputDevice(e){return Promise.reject()}chooseVideoInputDevice(e){return Promise.reject()}chooseAudioOutputDevice(e){return Promise.reject()}addDeviceChangeObserver(e){}removeDeviceChangeObserver(e){}createAnalyserNodeForAudioInput(){return null}startVideoPreviewForVideoInput(e){}stopVideoPreviewForVideoInput(e){}setDeviceLabelTrigger(e){}mixIntoAudioInput(e){return null}chooseVideoInputQuality(e,t,i,n){}getVideoInputQualitySettings(){return null}}t.default=n;t.DestroyableNoOpDeviceController=class extends n{constructor(){super(...arguments),this.destroyed=!1}destroy(){return i(this,void 0,void 0,(function*(){this.destroyed=!0}))}}}));class NoOpEventReporter{constructor(){}reportEvent(e,t,i){}start(){}stop(){}}var _default$j=NoOpEventReporter,NoOpEventReporter_1$1=Object.defineProperty({default:_default$j},"__esModule",{value:!0});class NoOpTask{cancel(){}name(){return"NoOpTask"}run(){return Promise.resolve()}setParent(e){}}var _default$i=NoOpTask,NoOpTask_1$1=Object.defineProperty({default:_default$i},"__esModule",{value:!0});class NoOpVideoElementFactory{create(){return{clientWidth:400,clientHeight:300,width:400,height:300,videoWidth:400,videoHeight:300,style:{transform:""},hasAttribute:()=>!1,removeAttribute:()=>{},setAttribute:()=>{},srcObject:!1,pause:()=>{},play:()=>Promise.resolve()}}}var _default$h=NoOpVideoElementFactory,NoOpVideoElementFactory_1$1=Object.defineProperty({default:_default$h},"__esModule",{value:!0});class NoVideoDownlinkBandwidthPolicy{reset(){}updateIndex(e){}updateMetrics(e){}wantsResubscribe(){return!1}chooseSubscriptions(){return new DefaultVideoStreamIdSet_1.default}}var _default$g=NoVideoDownlinkBandwidthPolicy,NoVideoDownlinkBandwidthPolicy_1$1=Object.defineProperty({default:_default$g},"__esModule",{value:!0});class NoVideoUplinkBandwidthPolicy{constructor(){}updateConnectionMetric(e){}chooseMediaTrackConstraints(){return{}}chooseEncodingParameters(){return new Map}updateIndex(e){}wantsResubscribe(){return!1}chooseCaptureAndEncodeParameters(){return new DefaultVideoCaptureAndEncodeParameter_1.default(0,0,0,0,!1)}maxBandwidthKbps(){return 0}setIdealMaxBandwidthKbps(e){}setHasBandwidthPriority(e){}}var _default$f=NoVideoUplinkBandwidthPolicy,NoVideoUplinkBandwidthPolicy_1$1=Object.defineProperty({default:_default$f},"__esModule",{value:!0});class RealtimeAttendeePositionInFrame{constructor(){this.attendeeIndex=null,this.attendeesInFrame=null}}var _default$e=RealtimeAttendeePositionInFrame,RealtimeAttendeePositionInFrame_1$1=Object.defineProperty({default:_default$e},"__esModule",{value:!0});class RunnableTask extends BaseTask_1.default{constructor(e,t,i="RunnableTask"){super(e),this.fn=t,this.taskName=i}run(){return this.fn().then((()=>{}))}}var _default$d=RunnableTask,RunnableTask_1$1=Object.defineProperty({default:_default$d},"__esModule",{value:!0}),__awaiter$4=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class SingleNodeAudioTransformDevice{constructor(e){this.inner=e}mute(e){return __awaiter$4(this,void 0,void 0,(function*(){}))}stop(){var e;return __awaiter$4(this,void 0,void 0,(function*(){null===(e=this.node)||void 0===e||e.disconnect()}))}intrinsicDevice(){return __awaiter$4(this,void 0,void 0,(function*(){return this.inner}))}createAudioNode(e){var t;return __awaiter$4(this,void 0,void 0,(function*(){return null===(t=this.node)||void 0===t||t.disconnect(),this.node=yield this.createSingleAudioNode(e),{start:this.node,end:this.node}}))}}var _default$c=SingleNodeAudioTransformDevice,SingleNodeAudioTransformDevice_1$1=Object.defineProperty({default:_default$c},"__esModule",{value:!0});class TranscriptAlternative{}var _default$b=TranscriptAlternative,TranscriptAlternative_1$1=Object.defineProperty({default:_default$b},"__esModule",{value:!0});class TranscriptEntity{}var _default$a=TranscriptEntity,TranscriptEntity_1$1=Object.defineProperty({default:_default$a},"__esModule",{value:!0});class TranscriptItem{}var _default$9=TranscriptItem,TranscriptItem_1$1=Object.defineProperty({default:_default$9},"__esModule",{value:!0});class TranscriptLanguageWithScore{}var _default$8=TranscriptLanguageWithScore,TranscriptLanguageWithScore_1$1=Object.defineProperty({default:_default$8},"__esModule",{value:!0});class TranscriptResult{}var _default$7=TranscriptResult,TranscriptResult_1$1=Object.defineProperty({default:_default$7},"__esModule",{value:!0});class VideoSource{}var _default$6=VideoSource,VideoSource_1$1=Object.defineProperty({default:_default$6},"__esModule",{value:!0}),decider=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.decideModel=t.measureAndDecideExecutionApproach=void 0;const n={wasm:{noSupport:.07,inline:{c100:1,c50:.36,c20:.16,c10:.07},worker:{c100:.5,c50:.18,c20:.08,c10:.06}},simd:{noSupport:.1,inline:{c100:1,c50:.43,c20:.3,c10:.2},worker:{c100:.5,c50:.21,c20:.15,c10:.1}}};class r{constructor(e,t){this.fetchConfig=e,this.logger=t;const i=`${e.paths.workers}estimator-v1.js`;this.fetchBehavior={headers:e.headers,escapedQueryString:e.escapedQueryString},this.worker=loader_js_1.loadWorker(i,"VoiceFocusEstimator",this.fetchBehavior,t)}roundtrip(e,t,i){return new Promise(((n,r)=>{this.worker.then((r=>{let o;o=e=>{const{message:a,key:s}=e.data;a===t&&s===i&&(r.removeEventListener("message",o),n(e.data))},r.addEventListener("message",o),r.postMessage(e)})).catch((e=>{var t;null===(t=this.logger)||void 0===t||t.error("Failed to load worker.",e),r(e)}))}))}supportsSIMD(e){const t="simd",i=e||`${this.fetchConfig.paths.wasm}simd-v1.wasm`,n={message:"supports-simd",fetchBehavior:this.fetchBehavior,path:i,key:t};return this.roundtrip(n,"simd-support",t).then((e=>e.supports))}measure(e,t){const i=`${this.fetchConfig.paths.wasm}bench-v1.wasm`,n=`${this.fetchConfig.paths.wasm}bench-v1_simd.wasm`,r=e?n:i,o=`bench:${e}`,a={message:"measure",fetchBehavior:this.fetchBehavior,budget:t,path:r,key:o};return this.roundtrip(a,"measurement",o).then((e=>{if(e.measurement)return e.measurement;throw new Error("Failed to measure.")}))}stop(){this.worker.then((e=>{var t;null===(t=this.logger)||void 0===t||t.debug("Stopping estimator worker."),e.terminate()})).catch((e=>{}))}}const o=(e,t,n,o)=>i(void 0,void 0,void 0,(function*(){const i={supportsSIMD:e,supportsSAB:support_js_1.supportsSharedArrayBuffer(globalThis,window,n),duration:-1};if(e)return null==n||n.info("Supports SIMD: true (force)"),i;const a=!o,s=o||new r(t,n);try{const t=!support_js_1.isOldChrome(window,n)&&(yield s.supportsSIMD());return null==n||n.info(`Supports SIMD: ${t} (force: ${e})`),i.supportsSIMD=t,i}finally{a&&s.stop()}}));t.measureAndDecideExecutionApproach=(e,t,a,s=n)=>i(void 0,void 0,void 0,(function*(){let c=e.executionPreference;const{usagePreference:l,variantPreference:d,namePreference:u,simdPreference:h,estimatorBudget:p,executionQuantaPreference:f}=e;"interactivity"===l&&"inline"!==c&&(null==a||a.debug(`Overriding execution preference ${c} to reflect interactivity preference.`),c="inline");const m="force"===h,g="auto"!==d,v="auto"!==c;let _;try{_=g&&v?yield o(m,t,a):yield((e,t,n,a)=>i(void 0,void 0,void 0,(function*(){const i=new r(t,a);try{const r=yield o(e,t,a,i);if(r.supportsSIMD)try{return r.duration=yield i.measure(!0,n),null==a||a.info("SIMD timing:",r.duration),r}catch(e){null==a||a.warn("Failed SIMD estimation; falling back to non-SIMD."),r.supportsSIMD=!1}return r.duration=yield i.measure(!1,n),null==a||a.info("No-SIMD timing:",r.duration),r}catch(e){throw null==a||a.error("Could not feature check.",e),e}finally{i.stop()}})))(m,t,p,a)}catch(e){throw null==a||a.error("Could not load estimator.",e),new Error("Could not load Voice Focus estimator.")}return(({supportsSIMD:e,supportsSAB:t,duration:i,executionPreference:r="auto",simdPreference:o,variantPreference:a="auto",namePreference:s="default",usagePreference:c,executionQuantaPreference:l=3},d=n,u)=>{const h="force"===o||"disable"!==o&&e,p=-1!==i,f=p?(h?2.5:2.63)/i:0,m=h?d.simd:d.wasm,g=p?((e,t)=>1===e?.6:"quality"===t?.65*e:.5*e)(l,c)*f:0,v=p?.7*f:0,_=s,S=e=>({supported:!1,reason:e});if(p){if(f<m.noSupport)return S(`Performance score ${f} worse than threshold ${m.noSupport}.`)}else if("auto"===r||"auto"===a)return S(`Missing explicit execution (${r}) or variant (${a}) preference, but no scoring performed.`);null==u||u.debug(`Bench duration ${i} yields inline score ${g} and worker score ${v}.`);const y=(e,t,i)=>({supported:!0,useSIMD:h,processor:e,executionApproach:t,variant:i,executionQuanta:"inline"===t?l:void 0,name:_}),b=(e,t,i)=>"auto"!==t?!p||e>i[t]?t:"failed":e>i.c100?"c100":e>i.c50?"c50":e>i.c20?"c20":e>i.c10?"c10":"failed",k=e=>{switch(e||"auto"){case"auto":{let e=k("inline"),t=k("worker");return null==u||u.debug(`Reducing auto preference: ${JSON.stringify(e)} vs ${JSON.stringify(t)}`),!1===e.supported||!1===t.supported?t:e.variant===t.variant||"c50"===e.variant?e:t}case"worker":return support_js_1.supportsSharedArrayBuffer(globalThis,window,u)?k("worker-sab"):k("worker-postMessage");case"inline":{const e=b(g,a,m.inline);return"failed"===e?S(`Performance score ${g} not sufficient for inline use with variant preference ${a}.`):y("voicefocus-inline-processor","inline",e)}case"worker-sab":{if(!t){const e="Requested worker-sab but no SharedArrayBuffer support.";return null==u||u.warn(e),{supported:!1,reason:e}}const e=b(v,a,m.worker);return"failed"===e?S(`Performance score ${v} not sufficient for worker use with variant preference ${a}.`):y("voicefocus-worker-sab-processor","worker-sab",e)}case"worker-postMessage":{const e=b(v,a,m.worker);if("failed"===e)return S(`Performance score ${v} not sufficient for worker use.`);if("ns_es"===_){const e="Requested echo suppression but postMessage executor does not support it.";return null==u||u.warn(e),{supported:!1,reason:e}}return y("voicefocus-worker-postMessage-processor","worker-postMessage",e)}}};return k(r)})(Object.assign(Object.assign({},_),{simdPreference:h,executionPreference:c,variantPreference:d,namePreference:u,usagePreference:l,executionQuantaPreference:f}),s,a)}));t.decideModel=({category:e,name:t,variant:i,simd:n,url:r})=>`${e}-${t}-${i}-v1${n?"_simd":""}`})),types=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusAudioWorkletNode=void 0;class i extends("undefined"!=typeof globalThis&&globalThis.AudioWorkletNode||class{}){}t.VoiceFocusAudioWorkletNode=i})),types_js_1=types,__awaiter$3=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class VoiceFocusInlineNode extends types_js_1.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.channelCountMode="explicit",this.channelCount=1;const{modelURL:i,worker:n,fetchBehavior:r,logger:o,delegate:a}=t;this.logger=o,this.port.onmessage=this.onProcessorMessage.bind(this),this.delegate=a,o&&o.debug("VoiceFocusInlineNode:",i),this.worker=n,this.worker.onmessage=this.onWorkerMessage.bind(this);const s=support_js_1.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:s,key:"model",fetchBehavior:r,path:i})}onModuleBufferLoaded(e,t){this.port.postMessage({message:"module-buffer",buffer:e,key:t})}onModuleLoaded(e,t){this.port.postMessage({message:"module",module:e,key:t})}enable(){return __awaiter$3(this,void 0,void 0,(function*(){this.port.postMessage({message:"enable"})}))}disable(){return __awaiter$3(this,void 0,void 0,(function*(){this.port.postMessage({message:"disable"})}))}stop(){return __awaiter$3(this,void 0,void 0,(function*(){this.port.postMessage({message:"stop"}),this.disconnect()}))}onProcessorMessage(e){var t,i,n;const r=e.data;if("cpu"===r.message)null===(t=this.logger)||void 0===t||t.warn("CPU warning:",r.message),null===(i=this.delegate)||void 0===i||i.onCPUWarning();else null===(n=this.logger)||void 0===n||n.debug("Ignoring processor message.")}onWorkerMessage(e){const t=e.data;switch(t.message){case"module-buffer":if(!t.buffer||!t.key)return;this.onModuleBufferLoaded(t.buffer,t.key);break;case"module":if(!t.module||!t.key)return;this.onModuleLoaded(t.module,t.key);break;case"stopped":this.worker&&this.worker.terminate();break;default:return}}}var _default$5=VoiceFocusInlineNode,workletInlineNode=Object.defineProperty({default:_default$5},"__esModule",{value:!0}),__awaiter$2=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};const INDICES={ready:0,enabled:1},STATES={disabled:0,enabled:1,stopped:2};class VoiceFocusWorkerBufferNode extends types_js_1.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.channelCountMode="explicit",this.channelCount=1;const{modelURL:i,resamplerURL:n,worker:r,fetchBehavior:o,delegate:a}=t;this.delegate=a,this.worker=r,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);const{enabled:s,supportFarendStream:c}=t.processorOptions;this.worker.postMessage({message:"init",approach:"sab",frames:16e3===e.sampleRate?160:480,enabled:s,model:i,supportFarendStream:c});const l=support_js_1.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:l,key:"resampler",fetchBehavior:o,path:n})}enable(){return __awaiter$2(this,void 0,void 0,(function*(){this.state?(Atomics.store(this.state,INDICES.enabled,STATES.enabled),Atomics.notify(this.state,INDICES.ready,1)):this.worker.postMessage({message:"enable"})}))}disable(){return __awaiter$2(this,void 0,void 0,(function*(){this.state?(Atomics.store(this.state,INDICES.enabled,STATES.disabled),Atomics.notify(this.state,INDICES.ready,1)):this.worker.postMessage({message:"disable"})}))}stop(){return __awaiter$2(this,void 0,void 0,(function*(){if(this.state)Atomics.store(this.state,INDICES.enabled,STATES.stopped),Atomics.notify(this.state,INDICES.ready,1);else try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect()}))}onWorkerMessage(e){var t;const i=e.data;switch(i.message){case"ready":if(!i.shared)throw new Error("No shared state.");this.state=new Int32Array(i.shared.state),this.port.postMessage(i);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(i);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;const i=e.data;switch(i.message){case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(i)}}}var _default$4=VoiceFocusWorkerBufferNode,workletWorkerSabNode=Object.defineProperty({default:_default$4},"__esModule",{value:!0}),__awaiter$1=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class VoiceFocusWorkerPostMessageNode extends types_js_1.VoiceFocusAudioWorkletNode{constructor(e,t){super(e,t.processor,t),this.channelCountMode="explicit",this.channelCount=1;const{modelURL:i,audioBufferURL:n,worker:r,fetchBehavior:o,delegate:a}=t;this.delegate=a,this.worker=r,this.worker.onmessage=this.onWorkerMessage.bind(this),this.port.onmessage=this.onProcessorMessage.bind(this);const{enabled:s,agc:c,supportFarendStream:l}=t.processorOptions;this.worker.postMessage({message:"init",approach:"postMessage",frames:16e3===e.sampleRate?160:480,enabled:s,agc:c,fetchBehavior:o,model:i,supportFarendStream:l});const d=support_js_1.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";this.worker.postMessage({message:d,key:"buffer",fetchBehavior:o,path:n})}enable(){return __awaiter$1(this,void 0,void 0,(function*(){this.worker.postMessage({message:"enable"})}))}disable(){return __awaiter$1(this,void 0,void 0,(function*(){this.worker.postMessage({message:"disable"})}))}stop(){return __awaiter$1(this,void 0,void 0,(function*(){try{this.worker.postMessage({message:"stop"})}catch(e){}this.disconnect()}))}onWorkerMessage(e){var t;const i=e.data;switch(i.message){case"ready":this.port.postMessage({message:"ready",shared:i.shared},i.shared?Object.values(i.shared):[]);break;case"data":if(!i.buffer)return;this.port.postMessage({message:"data",buffer:i.buffer},[i.buffer]);break;case"stopped":this.worker.terminate();break;case"module-buffer":case"module":case"processing":this.port.postMessage(i);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;default:return}}onProcessorMessage(e){var t;const i=e.data;switch(i.message){case"data":if(!i.buffer)return;this.worker.postMessage({message:"data",buffer:i.buffer},[i.buffer]);break;case"cpu":null===(t=this.delegate)||void 0===t||t.onCPUWarning();break;case"prepare-for-frames":this.worker.postMessage(i);break;default:return}}}var _default$3=VoiceFocusWorkerPostMessageNode,workletWorkerPostMessageNode=Object.defineProperty({default:_default$3},"__esModule",{value:!0}),decider_js_1=decider,worklet_inline_node_js_1=workletInlineNode,worklet_worker_sab_node_js_1=workletWorkerSabNode,worklet_worker_postMessage_node_js_1=workletWorkerPostMessageNode,voicefocus=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getAudioInput=t.createAudioContext=t.VoiceFocus=void 0;const n={useVoiceFocusAGC:!1,useBuiltInAGC:!0},r="stable-v1",o="https://static.sdkassets.chime.aws/",a={processors:`${o}processors/`,workers:`${o}workers/`,wasm:`${o}wasm/`,models:`${o}wasm/`},s={latencyHint:0},c={channelCount:1,echoCancellation:!0,googEchoCancellation:!0,noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googTypingNoiseDetection:!1},l=Object.assign(Object.assign({},c),{autoGainControl:!0,googAutoGainControl:!0,googAutoGainControl2:!0}),d=Object.assign(Object.assign({},c),{autoGainControl:!1,googAutoGainControl:!1,googAutoGainControl2:!1}),u={"voicefocus-worker-sab-processor":{file:"worklet-worker-sab-processor-v1.js",node:worklet_worker_sab_node_js_1.default},"voicefocus-worker-postMessage-processor":{file:"worklet-worker-postMessage-processor-v1.js",node:worklet_worker_postMessage_node_js_1.default},"voicefocus-inline-processor":{file:"worklet-inline-processor-v1.js",node:worklet_inline_node_js_1.default}},h=(e,t)=>{if(void 0!==e&&!fetch_js_1.isValidAssetGroup(e))throw new Error(`Invalid asset group ${e}`);if(void 0!==t&&!fetch_js_1.isValidRevisionID(t))throw new Error(`Invalid revision ID ${t}`)},p=(e,t)=>`${t.models}${decider_js_1.decideModel(e)}.wasm`;class f{constructor(e,t,i,n,r){this.processorURL=t,this.nodeConstructor=i,this.nodeOptions=n,this.executionQuanta=r,this.internal={worker:e,nodeOptions:n}}static isSupported(e,t){const{fetchBehavior:i,logger:n}=t||{};if("undefined"==typeof globalThis)return null==n||n.debug("Browser does not have globalThis."),Promise.resolve(!1);if(!support_js_1.supportsAudioWorklet(globalThis,n))return null==n||n.debug("Browser does not support Audio Worklet."),Promise.resolve(!1);if(!support_js_1.supportsWASM(globalThis,n))return null==n||n.debug("Browser does not support WASM."),Promise.resolve(!1);support_js_1.supportsWASMStreaming(globalThis,n)||null==n||n.debug("Browser does not support streaming WASM compilation.");const{assetGroup:o=r,revisionID:s,paths:c=a}=e||{};h(o,s);const l=s?{revisionID:s}:{assetGroup:o},d=fetch_js_1.addQueryParams(i,l),u=Object.assign(Object.assign({},d),{paths:c});return support_js_1.supportsVoiceFocusWorker(globalThis,u,n)}static mungeExecutionPreference(e,t){const i=void 0===e||"auto"===e;if(support_js_1.isSafari(globalThis)){if(i||"inline"===e)return"inline";if(!i)throw new Error(`Unsupported execution preference ${e}`)}if("worker-sab"===e&&!support_js_1.supportsSharedArrayBuffer(globalThis,globalThis,t))throw new Error(`Unsupported execution preference ${e}`);return e||"auto"}static configure(e,t){return i(this,void 0,void 0,(function*(){const{fetchBehavior:i,preResolve:n,logger:o}=t||{},{category:s="voicefocus",name:c="default",variant:l="auto",assetGroup:d=r,revisionID:u,simd:f="detect",executionPreference:m="auto",executionQuantaPreference:g,usagePreference:v="interactivity",estimatorBudget:_=100,paths:S=a,thresholds:y}=e||{};if(null==o||o.debug("Configuring Voice Focus with spec",e),void 0!==s&&"voicefocus"!==s)throw new Error(`Unrecognized category ${s}`);if(void 0!==c&&"default"!==c&&"ns_es"!==c)throw new Error(`Unrecognized feature name ${c}`);if(void 0!==l&&!["auto","c100","c50","c20","c10"].includes(l))throw new Error(`Unrecognized feature variant ${l}`);if(void 0!==g&&![1,2,3].includes(g))throw new Error(`Unrecognized execution quanta preference ${g}`);if(h(d,u),void 0!==f&&!["detect","force","disable"].includes(f))throw new Error(`Unrecognized SIMD option ${f}`);if(void 0!==m&&!["auto","inline","worker","worker-sab","worker-postMessage"].includes(m))throw new Error(`Unrecognized execution preference ${m}`);if(void 0!==v&&!["quality","interactivity"].includes(v))throw new Error(`Unrecognized usage preference ${v}`);const b={executionPreference:this.mungeExecutionPreference(m,o),usagePreference:v,executionQuantaPreference:g,variantPreference:l,namePreference:c,simdPreference:f,estimatorBudget:_},k=u?{revisionID:u}:{assetGroup:d},T=fetch_js_1.addQueryParams(i,k),C=Object.assign({paths:S},T),w=yield decider_js_1.measureAndDecideExecutionApproach(b,C,o,y);if(!1===w.supported)return{supported:!1,reason:w.reason};null==o||o.info("Decided execution approach",w);const{useSIMD:I,processor:E,variant:R,executionQuanta:M}=w,P={category:s||"voicefocus",name:c||"default",variant:R,simd:I};if(n){const e=p(P,S);P.url=yield fetch_js_1.resolveURL(e,T)}return{fetchConfig:C,model:P,processor:E,executionQuanta:M,supported:!0}}))}static init(e,{delegate:t,preload:n=!0,logger:r}){return i(this,void 0,void 0,(function*(){if(!1===e.supported)throw new Error("Voice Focus not supported. Reason: "+e.reason);const{model:i,processor:o,fetchConfig:a,executionQuanta:s}=e,{simd:c,name:l}=i,{paths:d}=a;if("voicefocus-inline-processor"!==o&&"voicefocus-worker-postMessage-processor"!==o&&"voicefocus-worker-sab-processor"!==o)throw new Error(`Unknown processor ${o}`);const h=i.url||p(i,d);null==r||r.debug(`Using model URL ${h}.`);const m=`${d.wasm}audio_buffer-v1${c?"_simd":""}.wasm`,g=`${d.wasm}resampler-v1${c?"_simd":""}.wasm`,v=`${d.workers}worker-v1.js`,{file:_,node:S}=u[o],y=`${d.processors}${_}`,b=yield loader_js_1.loadWorker(v,"VoiceFocusWorker",a,r);if(n){null==r||r.debug("Preloading",h);let e=support_js_1.supportsWASMPostMessage(globalThis)?"get-module":"get-module-buffer";b.postMessage({message:e,preload:!0,key:"model",fetchBehavior:a,path:h})}const k=new f(b,y,S,{processor:o,worker:b,audioBufferURL:m,resamplerURL:g,fetchBehavior:a,modelURL:h,delegate:t,logger:r,numberOfInputs:"ns_es"===l?2:1},s);return Promise.resolve(k)}))}createNode(e,t){var i;const{voiceFocusSampleRate:r=(16e3===e.sampleRate?16e3:48e3),enabled:o=!0,agc:a=n}=t||{},s=null==t?void 0:t.es,c={voiceFocusSampleRate:r,enabled:o,sendBufferCount:10,prefill:6,agc:a,executionQuanta:this.executionQuanta,supportFarendStream:s},l=fetch_js_1.withQueryString(this.processorURL,null===(i=this.nodeOptions)||void 0===i?void 0:i.fetchBehavior);return e.audioWorklet.addModule(l).then((()=>new this.nodeConstructor(e,Object.assign(Object.assign({},this.nodeOptions),{processorOptions:c}))))}applyToStream(e,t,n){return i(this,void 0,void 0,(function*(){const i=t.createMediaStreamSource(e),r=yield this.applyToSourceNode(i,t,n),o=t.createMediaStreamDestination();return r.connect(o),{node:r,source:i,destination:o,stream:o.stream}}))}applyToSourceNode(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.createNode(t,n);return e.connect(i),i}))}}t.VoiceFocus=f;t.createAudioContext=(e=s)=>new(window.AudioContext||window.webkitAudioContext)(e);t.getAudioInput=(e,t,r)=>i(void 0,void 0,void 0,(function*(){var i,o;const{constraints:a,spec:s,delegate:c,preload:u=!0,options:h}=t,{logger:p}=r,m=yield f.configure(s,r);if(!m.supported)return null===(i=r.logger)||void 0===i||i.warn("Voice Focus not supported; returning standard stream."),window.navigator.mediaDevices.getUserMedia(a);const g=yield f.init(m,{delegate:c,preload:u,logger:p}),v=(null===(o=t.options)||void 0===o?void 0:o.agc)||n,_=yield window.navigator.mediaDevices.getUserMedia(((e,t)=>{let i;if(i=t.useBuiltInAGC?l:d,!e)return{audio:i};if(!e.audio)return e;if(e.video)throw new Error("Not adding Voice Focus to multi-device getUserMedia call.");return Object.assign(Object.assign({},e),{audio:!0===e.audio?i:Object.assign(Object.assign({},e.audio),i)})})(a,v));return g.applyToStream(_,e,h).then((e=>e.stream))}))}));function stringify(e){return e.map((e=>"object"==typeof e?JSON.stringify(e):`${e}`)).join(" ")}class LoggerAdapter{constructor(e){this.base=e}debug(...e){this.base.debug(stringify(e))}info(...e){this.base.info(stringify(e))}warn(...e){this.base.warn(stringify(e))}error(...e){this.base.error(stringify(e))}}var _default$2=LoggerAdapter,LoggerAdapter_1$1=Object.defineProperty({default:_default$2},"__esModule",{value:!0}),__awaiter=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};class VoiceFocusTransformDevice{constructor(e,t,i,n,r=!1,o,a=new DefaultBrowserBehavior_1.default,s=new Map,c,l){this.device=e,this.voiceFocus=t,this.delegate=i,this.nodeOptions=n,this.failed=r,this.node=o,this.browserBehavior=a,this.farEndStreamToAudioSourceNode=s,this.mixDestNode=c,this.mixSourceNode=l}getInnerDevice(){return this.device}mute(e){return __awaiter(this,void 0,void 0,(function*(){this.node&&(e?yield this.node.disable():yield this.node.enable())}))}stop(){return __awaiter(this,void 0,void 0,(function*(){this.node&&(this.node.disconnect(),yield this.node.stop())}))}chooseNewInnerDevice(e){return __awaiter(this,void 0,void 0,(function*(){return this.device!==e||isDefaultDevice(e)?new VoiceFocusTransformDevice(e,this.voiceFocus,this.delegate,this.nodeOptions,this.failed,this.node,this.browserBehavior,this.farEndStreamToAudioSourceNode,this.mixDestNode,this.mixSourceNode):this}))}intrinsicDevice(){return __awaiter(this,void 0,void 0,(function*(){if(this.failed)return this.device;const e=this.nodeOptions.es,t={echoCancellation:!e,googEchoCancellation:!e,googEchoCancellation2:!e,noiseSuppression:!1,googNoiseSuppression:!1,googHighpassFilter:!1,googNoiseSuppression2:!1};let i;return i=!this.nodeOptions||void 0===this.nodeOptions.agc||this.nodeOptions.agc.useBuiltInAGC,t.autoGainControl=i,t.googAutoGainControl=i,t.googAutoGainControl2=i,this.device?"string"==typeof this.device?(this.browserBehavior.requiresNoExactMediaStreamConstraints()?t.deviceId=this.device:t.deviceId={exact:this.device},t):this.device.id?this.device:Object.assign(Object.assign({},this.device),t):t}))}createAudioNode(e){var t,i;return __awaiter(this,void 0,void 0,(function*(){if((null===(t=this.node)||void 0===t?void 0:t.context)===e)return{start:this.node,end:this.node};const n=Object.assign({enabled:!0,agc:{useVoiceFocusAGC:!1}},this.nodeOptions);try{if(null===(i=this.node)||void 0===i||i.disconnect(),this.node=yield this.voiceFocus.createNode(e,n),this.nodeOptions.es){this.mixDestNode=new MediaStreamAudioDestinationNode(e,{channelCount:1,channelCountMode:"explicit"});for(const e of this.farEndStreamToAudioSourceNode.keys())this.assignFarEndStreamToAudioSourceNode(e);this.createMixSourceNode()}const t=this.node;return{start:t,end:this.node}}catch(e){throw this.failed=!0,this.delegate.onFallback(this,e),e}}))}observeMeetingAudio(e){return __awaiter(this,void 0,void 0,(function*(){if(!this.nodeOptions.es)return;e.addAudioMixObserver(this);const t=yield e.getCurrentMeetingAudioStream();t&&this.addFarEndStream(t)}))}unObserveMeetingAudio(e){return __awaiter(this,void 0,void 0,(function*(){if(!this.nodeOptions.es)return;e.removeAudioMixObserver(this);const t=yield e.getCurrentMeetingAudioStream();t&&this.removeFarendStream(t)}))}addObserver(e){this.delegate.addObserver(e)}removeObserver(e){this.delegate.removeObserver(e)}addFarEndStream(e){return __awaiter(this,void 0,void 0,(function*(){this.nodeOptions.es&&e&&!this.farEndStreamToAudioSourceNode.has(e)&&(this.node?this.assignFarEndStreamToAudioSourceNode(e):this.farEndStreamToAudioSourceNode.set(e,null))}))}removeFarendStream(e){var t;return __awaiter(this,void 0,void 0,(function*(){null===(t=this.farEndStreamToAudioSourceNode.get(e))||void 0===t||t.disconnect(),this.farEndStreamToAudioSourceNode.delete(e)}))}meetingAudioStreamBecameActive(e){return __awaiter(this,void 0,void 0,(function*(){this.addFarEndStream(e)}))}meetingAudioStreamBecameInactive(e){return __awaiter(this,void 0,void 0,(function*(){this.removeFarendStream(e)}))}assignFarEndStreamToAudioSourceNode(e){const t=this.node.context.createMediaStreamSource(e);t.channelCount=1,t.channelCountMode="explicit",this.farEndStreamToAudioSourceNode.set(e,t),t.connect(this.mixDestNode,0)}createMixSourceNode(){this.mixSourceNode=this.node.context.createMediaStreamSource(this.mixDestNode.stream),this.mixSourceNode.channelCount=1,this.mixSourceNode.channelCountMode="explicit",this.mixSourceNode.connect(this.node,0,1)}}function isDefaultDevice(e){return"default"===e||!(!e||"object"!=typeof e)&&("deviceId"in e&&"default"===e.deviceId||"id"in e&&"default"===e.id)}var _default$1=VoiceFocusTransformDevice,VoiceFocusTransformDevice_1$1=Object.defineProperty({default:_default$1},"__esModule",{value:!0});class VoiceFocusTransformDeviceDelegate{constructor(){this.observers=new Set}addObserver(e){this.observers.add(e)}removeObserver(e){this.observers.delete(e)}onFallback(e,t){var i;for(const n of this.observers)null===(i=n.voiceFocusFellBackToInnerStream)||void 0===i||i.call(n,e,t)}onCPUWarning(){var e;for(const t of this.observers)null===(e=t.voiceFocusInsufficientResources)||void 0===e||e.call(t)}}var _default=VoiceFocusTransformDeviceDelegate,VoiceFocusTransformDeviceDelegate_1$1=Object.defineProperty({default:_default},"__esModule",{value:!0}),voicefocus_1=voicefocus,LoggerAdapter_1=LoggerAdapter_1$1,VoiceFocusTransformDevice_1=VoiceFocusTransformDevice_1$1,VoiceFocusTransformDeviceDelegate_1=VoiceFocusTransformDeviceDelegate_1$1,VoiceFocusDeviceTransformer_1$1=createCommonjsModule((function(e,t){var i=commonjsGlobal&&commonjsGlobal.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?r(e.value):function(e){return e instanceof i?e:new i((function(t){t(e)}))}(e.value).then(a,s)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VoiceFocusDeviceTransformer=void 0;class n{constructor(e,{preload:t=!0,logger:i,fetchBehavior:r=n.defaultFetchBehavior()},o){this.spec=e,this.supported=!0,this.logger=i,this.vfLogger=i?new LoggerAdapter_1.default(i):void 0,this.preload=t,this.fetchBehavior=r,this.spec=n.augmentSpec(this.spec),o&&(this.configuration=Promise.resolve(o))}static isSupported(e,t){var i,r;const o={fetchBehavior:n.defaultFetchBehavior(),logger:(null==t?void 0:t.logger)?new LoggerAdapter_1.default(t.logger):void 0};if(Utils_1.isIFramed()){if(!1===(null==t?void 0:t.allowIFrame))return null===(i=null==t?void 0:t.logger)||void 0===i||i.error("Amazon Voice Focus support check inside iframe: not supported."),Promise.resolve(!1);null===(r=null==t?void 0:t.logger)||void 0===r||r.warn("Amazon Voice Focus support check inside iframe: not recommended.")}return voicefocus_1.VoiceFocus.isSupported(n.augmentSpec(e),o)}static create(e={},t={},r,o,a){var s,c,l;return i(this,void 0,void 0,(function*(){o&&o.Meeting.Meeting&&(o=o.Meeting);const i="AVAILABLE"===(null===(l=null===(c=null===(s=null==o?void 0:o.Meeting)||void 0===s?void 0:s.MeetingFeatures)||void 0===c?void 0:c.Audio)||void 0===l?void 0:l.EchoReduction),a=r&&!0===r.supported&&"ns_es"===r.model.name&&!i,d="ns_es"===e.name&&!i;if(a||d)throw new Error("Echo Reduction requested but not enabled.");const u=new n(e,t,r);return yield u.init(),u}))}static configure(e={},t={}){return i(this,void 0,void 0,(function*(){return new n(e,t,void 0).configure(!0)}))}getConfiguration(){return this.configuration}isSupported(){return this.supported}createTransformDevice(e,t){return i(this,void 0,void 0,(function*(){if(this.supported)try{const i=!0,[n,r]=yield this.allocateVoiceFocus(i),o=Object.assign(Object.assign({},t),{es:"ns_es"===this.spec.name});return new VoiceFocusTransformDevice_1.default(e,n,r,o)}catch(e){return}}))}static augmentSpec(e){return e&&(e.assetGroup||e.revisionID)?e:Object.assign(Object.assign({},e),{assetGroup:n.currentSDKAssetGroup()})}configure(e=!1){return i(this,void 0,void 0,(function*(){const t={fetchBehavior:this.fetchBehavior,preResolve:e,logger:this.vfLogger};return voicefocus_1.VoiceFocus.configure(this.spec,t)}))}init(){var e;return i(this,void 0,void 0,(function*(){this.configuration||(this.configuration=this.configure());const t=yield this.configuration;if(t.supported){this.pendingVoiceFocus=this.createVoiceFocus(t,this.preload);try{yield this.pendingVoiceFocus}catch(t){null===(e=this.logger)||void 0===e||e.error(`Unable to initialize Amazon Voice Focus: ${t}`),this.supported=!1}}else this.supported=!1}))}createVoiceFocus(e,t){return i(this,void 0,void 0,(function*(){const i=new VoiceFocusTransformDeviceDelegate_1.default;return[yield voicefocus_1.VoiceFocus.init(e,{delegate:i,preload:t,logger:this.vfLogger}),i]}))}allocateVoiceFocus(e){return i(this,void 0,void 0,(function*(){if(!this.supported)throw new Error("Not supported.");if(this.pendingVoiceFocus){const e=this.pendingVoiceFocus;return this.pendingVoiceFocus=void 0,e}return this.createVoiceFocus(yield this.configuration,e)}))}static majorVersion(){return Versioning_1.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|[1-9][0-9]*)/)[0]}static majorMinorVersion(){return Versioning_1.default.sdkVersion.match(/^[1-9][0-9]*\.(?:0|(?:[1-9][0-9]*))\.(?:0|[1-9][0-9]*)/)[0]}static currentSDKAssetGroup(){const e=this.majorVersion();return e?`sdk-${e}`:"stable-v1"}static defaultFetchBehavior(){const e=n.majorMinorVersion()||"unknown",t=Versioning_1.default.sdkUserAgentLowResolution;return{escapedQueryString:`sdk=${encodeURIComponent(e)}&ua=${encodeURIComponent(t)}`}}}t.VoiceFocusDeviceTransformer=n,t.default=n})),ApplicationMetadata_1=ApplicationMetadata_1$1,Attendee_1=Attendee_1$1,BackgroundBlurVideoFrameProcessor_1=BackgroundBlurVideoFrameProcessor_1$1,BackgroundReplacementVideoFrameProcessor_1=BackgroundReplacementVideoFrameProcessor_1$1,DefaultActiveSpeakerPolicy_1=DefaultActiveSpeakerPolicy_1$1,DefaultMeetingReadinessChecker_1=DefaultMeetingReadinessChecker_1$1,DefaultMeetingSession_1=DefaultMeetingSession_1$1,DefaultMessagingSession_1=DefaultMessagingSession_1$1,DefaultVideoTransformDevice_1=DefaultVideoTransformDevice_1$1,FullJitterBackoffFactory_1=FullJitterBackoffFactory_1$1,MeetingSessionPOSTLogger_1=MeetingSessionPOSTLogger_1$1,MessagingSessionConfiguration_1=MessagingSessionConfiguration_1$1,MultiLogger_1=MultiLogger_1$1,NoOpAudioVideoController_1=NoOpAudioVideoController_1$1,NoOpDeviceController_1=NoOpDeviceController_1$1,NoOpEventReporter_1=NoOpEventReporter_1$1,NoOpTask_1=NoOpTask_1$1,NoOpVideoElementFactory_1=NoOpVideoElementFactory_1$1,NoVideoDownlinkBandwidthPolicy_1=NoVideoDownlinkBandwidthPolicy_1$1,NoVideoUplinkBandwidthPolicy_1=NoVideoUplinkBandwidthPolicy_1$1,RealtimeAttendeePositionInFrame_1=RealtimeAttendeePositionInFrame_1$1,RunnableTask_1=RunnableTask_1$1,SingleNodeAudioTransformDevice_1=SingleNodeAudioTransformDevice_1$1,TranscriptAlternative_1=TranscriptAlternative_1$1,TranscriptEntity_1=TranscriptEntity_1$1,TranscriptItem_1=TranscriptItem_1$1,TranscriptLanguageWithScore_1=TranscriptLanguageWithScore_1$1,TranscriptResult_1=TranscriptResult_1$1,VideoSource_1=VideoSource_1$1,VoiceFocusDeviceTransformer_1=VoiceFocusDeviceTransformer_1$1,build=createCommonjsModule((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultEventController=t.DefaultDevicePixelRatioMonitor=t.DefaultDeviceController=t.DefaultContentShareController=t.DefaultClientMetricReport=t.DefaultBrowserBehavior=t.DefaultAudioVideoFacade=t.DefaultAudioVideoController=t.DefaultAudioMixController=t.DefaultActiveSpeakerPolicy=t.DefaultActiveSpeakerDetector=t.DataMessage=t.CreateSDPTask=t.CreatePeerConnectionTask=t.ContentShareMediaStreamBroker=t.ContentShareConstants=t.ConsoleLogger=t.ConnectionHealthPolicyConfiguration=t.ConnectionHealthData=t.ClientVideoStreamReceivingReport=t.ClientMetricReportMediaType=t.ClientMetricReportDirection=t.CleanStoppedSessionTask=t.CleanRestartedSessionTask=t.CheckVideoInputFeedback=t.CheckVideoConnectivityFeedback=t.CheckNetworkUDPConnectivityFeedback=t.CheckNetworkTCPConnectivityFeedback=t.CheckContentShareConnectivityFeedback=t.CheckCameraResolutionFeedback=t.CheckAudioOutputFeedback=t.CheckAudioInputFeedback=t.CheckAudioConnectivityFeedback=t.CanvasVideoFrameBuffer=t.CSPMonitor=t.BitrateParameters=t.BaseTask=t.BaseConnectionHealthPolicy=t.BackgroundReplacementVideoFrameProcessor=t.BackgroundFilterVideoFrameProcessor=t.BackgroundBlurVideoFrameProcessor=t.BackgroundBlurStrength=t.AudioVideoControllerState=t.AudioProfile=t.AudioLogEvent=t.Attendee=t.AttachMediaInputTask=t.AsyncScheduler=t.ApplicationMetadata=t.AllHighestVideoBandwidthPolicy=void 0,t.MeetingSessionConfiguration=t.MeetingReadinessCheckerConfiguration=t.MeetingEventsClientConfiguration=t.MediaDeviceProxyHandler=t.Maybe=t.LogLevel=t.Log=t.ListenForVolumeIndicatorsTask=t.LeaveAndReceiveLeaveAckTask=t.JoinAndReceiveIndexTask=t.IntervalScheduler=t.InMemoryJSONEventBuffer=t.GlobalMetricReport=t.GetUserMediaError=t.FullJitterLimitedBackoff=t.FullJitterBackoffFactory=t.FullJitterBackoff=t.FinishGatheringICECandidatesTask=t.EventIngestionConfiguration=t.EventBufferConfiguration=t.DeviceSelection=t.DevicePixelRatioWindowSource=t.DefaultWebSocketAdapter=t.DefaultVolumeIndicatorAdapter=t.DefaultVideoTransformDevice=t.DefaultVideoTileFactory=t.DefaultVideoTileController=t.DefaultVideoTile=t.DefaultVideoStreamIndex=t.DefaultVideoStreamIdSet=t.DefaultVideoFrameProcessorPipeline=t.DefaultVideoCaptureAndEncodeParameter=t.DefaultUserAgentParser=t.DefaultTranscriptionController=t.DefaultTransceiverController=t.DefaultStatsCollector=t.DefaultSimulcastUplinkPolicy=t.DefaultSignalingClient=t.DefaultSigV4=t.DefaultSessionStateController=t.DefaultSDP=t.DefaultReconnectController=t.DefaultRealtimeController=t.DefaultPingPong=t.DefaultModality=t.DefaultMessagingSession=t.DefaultMeetingSession=t.DefaultMeetingReadinessChecker=t.DefaultMeetingEventReporter=t.DefaultMediaDeviceFactory=void 0,t.SerialGroupTask=t.SendAndReceiveDataMessagesTask=t.SDPMediaSection=t.SDPCandidateType=t.RunnableTask=t.ReleaseMediaStreamsTask=t.ReconnectionHealthPolicy=t.ReceiveVideoStreamIndexTask=t.ReceiveVideoInputTask=t.ReceiveTURNCredentialsTask=t.ReceiveAudioInputTask=t.RealtimeVolumeIndicator=t.RealtimeState=t.RealtimeAttendeePositionInFrame=t.PromoteToPrimaryMeetingTask=t.PermissionDeniedError=t.ParallelGroupTask=t.OverconstrainedError=t.OpenSignalingConnectionTask=t.OnceTask=t.NotReadableError=t.NotFoundError=t.None=t.NoVideoUplinkBandwidthPolicy=t.NoVideoDownlinkBandwidthPolicy=t.NoOpVideoFrameProcessor=t.NoOpVideoElementFactory=t.NoOpTask=t.NoOpMediaStreamBroker=t.NoOpLogger=t.NoOpEventReporter=t.NoOpDeviceController=t.NoOpDebugLogger=t.NoOpAudioVideoController=t.NScaleVideoUplinkBandwidthPolicy=t.MutableVideoPreferences=t.MultiLogger=t.MonitorTask=t.ModelSpecBuilder=t.MessagingSessionConfiguration=t.Message=t.MeetingSessionVideoAvailability=t.MeetingSessionURLs=t.MeetingSessionTURNCredentials=t.MeetingSessionStatusCode=t.MeetingSessionStatus=t.MeetingSessionPOSTLogger=t.MeetingSessionLifecycleEventCondition=t.MeetingSessionLifecycleEvent=t.MeetingSessionCredentials=void 0,t.WaitForAttendeePresenceTask=t.VoiceFocusTransformDevice=t.VoiceFocusDeviceTransformer=t.VideoTileState=t.VideoStreamDescription=t.VideoSource=t.VideoQualitySettings=t.VideoPriorityBasedPolicyConfig=t.VideoPriorityBasedPolicy=t.VideoPreferences=t.VideoPreference=t.VideoOnlyTransceiverController=t.VideoLogEvent=t.VideoAdaptiveProbePolicy=t.Versioning=t.UnusableAudioWarningConnectionHealthPolicy=t.TypeError=t.TranscriptionStatusType=t.TranscriptionStatus=t.TranscriptResult=t.TranscriptLanguageWithScore=t.TranscriptItemType=t.TranscriptItem=t.TranscriptEntity=t.TranscriptAlternative=t.Transcript=t.TimeoutTask=t.TimeoutScheduler=t.TaskStatus=t.TargetDisplaySize=t.SubscribeAndReceiveSubscribeAckTask=t.StreamMetricReport=t.Some=t.SingleNodeAudioTransformDevice=t.SimulcastVideoStreamIndex=t.SimulcastTransceiverController=t.SimulcastLayers=t.SignalingClientVideoSubscriptionConfiguration=t.SignalingClientSubscribe=t.SignalingClientJoin=t.SignalingClientEventType=t.SignalingClientEvent=t.SignalingClientConnectionRequest=t.SignalingAndMetricsConnectionMonitor=t.SetRemoteDescriptionTask=t.SetLocalDescriptionTask=t.SessionStateControllerTransitionResult=t.SessionStateControllerState=t.SessionStateControllerDeferPriority=t.SessionStateControllerAction=void 0,t.isVideoTransformDevice=t.isDestroyable=t.isAudioTransformDevice=t.ZLIBTextCompressor=t.WebSocketReadyState=void 0,t.AllHighestVideoBandwidthPolicy=AllHighestVideoBandwidthPolicy_1.default,t.ApplicationMetadata=ApplicationMetadata_1.default,t.AsyncScheduler=AsyncScheduler_1.default,t.AttachMediaInputTask=AttachMediaInputTask_1.default,t.Attendee=Attendee_1.default,t.AudioLogEvent=AudioLogEvent_1.default,t.AudioProfile=AudioProfile_1.default,t.AudioVideoControllerState=AudioVideoControllerState_1.default,t.BackgroundBlurStrength=BackgroundBlurStrength_1.default,t.BackgroundBlurVideoFrameProcessor=BackgroundBlurVideoFrameProcessor_1.default,t.BackgroundFilterVideoFrameProcessor=BackgroundFilterVideoFrameProcessor_1.default,t.BackgroundReplacementVideoFrameProcessor=BackgroundReplacementVideoFrameProcessor_1.default,t.BaseConnectionHealthPolicy=BaseConnectionHealthPolicy_1.default,t.BaseTask=BaseTask_1.default,t.BitrateParameters=BitrateParameters_1.default,t.CSPMonitor=CSPMonitor_1.default,t.CanvasVideoFrameBuffer=CanvasVideoFrameBuffer_1.default,t.CheckAudioConnectivityFeedback=CheckAudioConnectivityFeedback_1.default,t.CheckAudioInputFeedback=CheckAudioInputFeedback_1.default,t.CheckAudioOutputFeedback=CheckAudioOutputFeedback_1.default,t.CheckCameraResolutionFeedback=CheckCameraResolutionFeedback_1.default,t.CheckContentShareConnectivityFeedback=CheckContentShareConnectivityFeedback_1.default,t.CheckNetworkTCPConnectivityFeedback=CheckNetworkTCPConnectivityFeedback_1.default,t.CheckNetworkUDPConnectivityFeedback=CheckNetworkUDPConnectivityFeedback_1.default,t.CheckVideoConnectivityFeedback=CheckVideoConnectivityFeedback_1.default,t.CheckVideoInputFeedback=CheckVideoInputFeedback_1.default,t.CleanRestartedSessionTask=CleanRestartedSessionTask_1.default,t.CleanStoppedSessionTask=CleanStoppedSessionTask_1.default,t.ClientMetricReportDirection=ClientMetricReportDirection_1.default,t.ClientMetricReportMediaType=ClientMetricReportMediaType_1.default,t.ClientVideoStreamReceivingReport=ClientVideoStreamReceivingReport_1.default,t.ConnectionHealthData=ConnectionHealthData_1.default,t.ConnectionHealthPolicyConfiguration=ConnectionHealthPolicyConfiguration_1.default,t.ConsoleLogger=ConsoleLogger_1.default,t.ContentShareConstants=ContentShareConstants_1.default,t.ContentShareMediaStreamBroker=ContentShareMediaStreamBroker_1.default,t.CreatePeerConnectionTask=CreatePeerConnectionTask_1.default,t.CreateSDPTask=CreateSDPTask_1.default,t.DataMessage=DataMessage_1.default,t.DefaultActiveSpeakerDetector=DefaultActiveSpeakerDetector_1.default,t.DefaultActiveSpeakerPolicy=DefaultActiveSpeakerPolicy_1.default,t.DefaultAudioMixController=DefaultAudioMixController_1.default,t.DefaultAudioVideoController=DefaultAudioVideoController_1.default,t.DefaultAudioVideoFacade=DefaultAudioVideoFacade_1.default,t.DefaultBrowserBehavior=DefaultBrowserBehavior_1.default,t.DefaultClientMetricReport=DefaultClientMetricReport_1.default,t.DefaultContentShareController=DefaultContentShareController_1.default,t.DefaultDeviceController=DefaultDeviceController_1.default,t.DefaultDevicePixelRatioMonitor=DefaultDevicePixelRatioMonitor_1.default,t.DefaultEventController=DefaultEventController_1.default,t.DefaultMediaDeviceFactory=DefaultMediaDeviceFactory_1.default,t.DefaultMeetingEventReporter=DefaultMeetingEventReporter_1.default,t.DefaultMeetingReadinessChecker=DefaultMeetingReadinessChecker_1.default,t.DefaultMeetingSession=DefaultMeetingSession_1.default,t.DefaultMessagingSession=DefaultMessagingSession_1.default,t.DefaultModality=DefaultModality_1.default,t.DefaultPingPong=DefaultPingPong_1.default,t.DefaultRealtimeController=DefaultRealtimeController_1.default,t.DefaultReconnectController=DefaultReconnectController_1.default,t.DefaultSDP=DefaultSDP_1.default,t.DefaultSessionStateController=DefaultSessionStateController_1.default,t.DefaultSigV4=DefaultSigV4_1.default,t.DefaultSignalingClient=DefaultSignalingClient_1.default,t.DefaultSimulcastUplinkPolicy=DefaultSimulcastUplinkPolicy_1.default,t.DefaultStatsCollector=DefaultStatsCollector_1.default,t.DefaultTransceiverController=DefaultTransceiverController_1.default,t.DefaultTranscriptionController=DefaultTranscriptionController_1.default,t.DefaultUserAgentParser=DefaultUserAgentParser_1.default,t.DefaultVideoCaptureAndEncodeParameter=DefaultVideoCaptureAndEncodeParameter_1.default,t.DefaultVideoFrameProcessorPipeline=DefaultVideoFrameProcessorPipeline_1.default,t.DefaultVideoStreamIdSet=DefaultVideoStreamIdSet_1.default,t.DefaultVideoStreamIndex=DefaultVideoStreamIndex_1.default,t.DefaultVideoTile=DefaultVideoTile_1.default,t.DefaultVideoTileController=DefaultVideoTileController_1.default,t.DefaultVideoTileFactory=DefaultVideoTileFactory_1.default,t.DefaultVideoTransformDevice=DefaultVideoTransformDevice_1.default,t.DefaultVolumeIndicatorAdapter=DefaultVolumeIndicatorAdapter_1.default,t.DefaultWebSocketAdapter=DefaultWebSocketAdapter_1.default,t.DevicePixelRatioWindowSource=DevicePixelRatioWindowSource_1.default,t.DeviceSelection=DeviceSelection_1.default,t.EventBufferConfiguration=EventBufferConfiguration_1.default,t.EventIngestionConfiguration=EventIngestionConfiguration_1.default,t.FinishGatheringICECandidatesTask=FinishGatheringICECandidatesTask_1.default,t.FullJitterBackoff=FullJitterBackoff_1.default,t.FullJitterBackoffFactory=FullJitterBackoffFactory_1.default,t.FullJitterLimitedBackoff=FullJitterLimitedBackoff_1.default,t.GetUserMediaError=GetUserMediaError_1.default,t.GlobalMetricReport=GlobalMetricReport_1.default,t.InMemoryJSONEventBuffer=InMemoryJSONEventBuffer_1.default,t.IntervalScheduler=IntervalScheduler_1.default,t.JoinAndReceiveIndexTask=JoinAndReceiveIndexTask_1.default,t.LeaveAndReceiveLeaveAckTask=LeaveAndReceiveLeaveAckTask_1.default,t.ListenForVolumeIndicatorsTask=ListenForVolumeIndicatorsTask_1.default,t.Log=Log_1.default,t.LogLevel=LogLevel_1.default,t.MediaDeviceProxyHandler=MediaDeviceProxyHandler_1.default,t.MeetingEventsClientConfiguration=MeetingEventsClientConfiguration_1.default,t.MeetingReadinessCheckerConfiguration=MeetingReadinessCheckerConfiguration_1.default,t.MeetingSessionConfiguration=MeetingSessionConfiguration_1.default,t.MeetingSessionCredentials=MeetingSessionCredentials_1.default,t.MeetingSessionLifecycleEvent=MeetingSessionLifecycleEvent_1.default,t.MeetingSessionLifecycleEventCondition=MeetingSessionLifecycleEventCondition_1.default,t.MeetingSessionPOSTLogger=MeetingSessionPOSTLogger_1.default,t.MeetingSessionStatus=MeetingSessionStatus_1.default,t.MeetingSessionStatusCode=MeetingSessionStatusCode_1.default,t.MeetingSessionTURNCredentials=MeetingSessionTURNCredentials_1.default,t.MeetingSessionURLs=MeetingSessionURLs_1.default,t.MeetingSessionVideoAvailability=MeetingSessionVideoAvailability_1.default,t.Message=Message_1.default,t.MessagingSessionConfiguration=MessagingSessionConfiguration_1.default,t.ModelSpecBuilder=ModelSpecBuilder_1.default,t.MonitorTask=MonitorTask_1.default,t.MultiLogger=MultiLogger_1.default,t.NScaleVideoUplinkBandwidthPolicy=NScaleVideoUplinkBandwidthPolicy_1.default,t.NoOpAudioVideoController=NoOpAudioVideoController_1.default,t.NoOpDebugLogger=NoOpDebugLogger_1.default,t.NoOpDeviceController=NoOpDeviceController_1.default,t.NoOpEventReporter=NoOpEventReporter_1.default,t.NoOpLogger=NoOpLogger_1.default,t.NoOpMediaStreamBroker=NoOpMediaStreamBroker_1.default,t.NoOpTask=NoOpTask_1.default,t.NoOpVideoElementFactory=NoOpVideoElementFactory_1.default,t.NoOpVideoFrameProcessor=NoOpVideoFrameProcessor_1.default,t.NoVideoDownlinkBandwidthPolicy=NoVideoDownlinkBandwidthPolicy_1.default,t.NoVideoUplinkBandwidthPolicy=NoVideoUplinkBandwidthPolicy_1.default,t.NotFoundError=NotFoundError_1.default,t.NotReadableError=NotReadableError_1.default,t.OnceTask=OnceTask_1.default,t.OpenSignalingConnectionTask=OpenSignalingConnectionTask_1.default,t.OverconstrainedError=OverconstrainedError_1.default,t.ParallelGroupTask=ParallelGroupTask_1.default,t.PermissionDeniedError=PermissionDeniedError_1.default,t.PromoteToPrimaryMeetingTask=PromoteToPrimaryMeetingTask_1.default,t.RealtimeAttendeePositionInFrame=RealtimeAttendeePositionInFrame_1.default,t.RealtimeState=RealtimeState_1.default,t.RealtimeVolumeIndicator=RealtimeVolumeIndicator_1.default,t.ReceiveAudioInputTask=ReceiveAudioInputTask_1.default,t.ReceiveTURNCredentialsTask=ReceiveTURNCredentialsTask_1.default,t.ReceiveVideoInputTask=ReceiveVideoInputTask_1.default,t.ReceiveVideoStreamIndexTask=ReceiveVideoStreamIndexTask_1.default,t.ReconnectionHealthPolicy=ReconnectionHealthPolicy_1.default,t.ReleaseMediaStreamsTask=ReleaseMediaStreamsTask_1.default,t.RunnableTask=RunnableTask_1.default,t.SDPCandidateType=SDPCandidateType_1.default,t.SDPMediaSection=SDPMediaSection_1.default,t.SendAndReceiveDataMessagesTask=SendAndReceiveDataMessagesTask_1.default,t.SerialGroupTask=SerialGroupTask_1.default,t.SessionStateControllerAction=SessionStateControllerAction_1.default,t.SessionStateControllerDeferPriority=SessionStateControllerDeferPriority_1.default,t.SessionStateControllerState=SessionStateControllerState_1.default,t.SessionStateControllerTransitionResult=SessionStateControllerTransitionResult_1.default,t.SetLocalDescriptionTask=SetLocalDescriptionTask_1.default,t.SetRemoteDescriptionTask=SetRemoteDescriptionTask_1.default,t.SignalingAndMetricsConnectionMonitor=SignalingAndMetricsConnectionMonitor_1.default,t.SignalingClientConnectionRequest=SignalingClientConnectionRequest_1.default,t.SignalingClientEvent=SignalingClientEvent_1.default,t.SignalingClientEventType=SignalingClientEventType_1.default,t.SignalingClientJoin=SignalingClientJoin_1.default,t.SignalingClientSubscribe=SignalingClientSubscribe_1.default,t.SignalingClientVideoSubscriptionConfiguration=SignalingClientVideoSubscriptionConfiguration_1.default,t.SimulcastLayers=SimulcastLayers_1.default,t.SimulcastTransceiverController=SimulcastTransceiverController_1.default,t.SimulcastVideoStreamIndex=SimulcastVideoStreamIndex_1.default,t.SingleNodeAudioTransformDevice=SingleNodeAudioTransformDevice_1.default,t.StreamMetricReport=StreamMetricReport_1.default,t.SubscribeAndReceiveSubscribeAckTask=SubscribeAndReceiveSubscribeAckTask_1.default,t.TargetDisplaySize=TargetDisplaySize_1.default,t.TaskStatus=TaskStatus_1.default,t.TimeoutScheduler=TimeoutScheduler_1.default,t.TimeoutTask=TimeoutTask_1.default,t.Transcript=Transcript_1.default,t.TranscriptAlternative=TranscriptAlternative_1.default,t.TranscriptEntity=TranscriptEntity_1.default,t.TranscriptItem=TranscriptItem_1.default,t.TranscriptItemType=TranscriptItemType_1.default,t.TranscriptLanguageWithScore=TranscriptLanguageWithScore_1.default,t.TranscriptResult=TranscriptResult_1.default,t.TranscriptionStatus=TranscriptionStatus_1.default,t.TranscriptionStatusType=TranscriptionStatusType_1.default,t.TypeError=TypeError_1.default,t.UnusableAudioWarningConnectionHealthPolicy=UnusableAudioWarningConnectionHealthPolicy_1.default,t.Versioning=Versioning_1.default,t.VideoAdaptiveProbePolicy=VideoAdaptiveProbePolicy_1.default,t.VideoLogEvent=VideoLogEvent_1.default,t.VideoOnlyTransceiverController=VideoOnlyTransceiverController_1.default,t.VideoPreference=VideoPreference_1.default,t.VideoPreferences=VideoPreferences_1.default,t.VideoPriorityBasedPolicy=VideoPriorityBasedPolicy_1.default,t.VideoPriorityBasedPolicyConfig=VideoPriorityBasedPolicyConfig_1.default,t.VideoQualitySettings=VideoQualitySettings_1.default,t.VideoSource=VideoSource_1.default,t.VideoStreamDescription=VideoStreamDescription_1.default,t.VideoTileState=VideoTileState_1.default,t.VoiceFocusDeviceTransformer=VoiceFocusDeviceTransformer_1.default,t.VoiceFocusTransformDevice=VoiceFocusTransformDevice_1.default,t.WaitForAttendeePresenceTask=WaitForAttendeePresenceTask_1.default,t.WebSocketReadyState=WebSocketReadyState_1.default,t.ZLIBTextCompressor=ZLIBTextCompressor_1.default;const i=VideoPreferences_1;Object.defineProperty(t,"MutableVideoPreferences",{enumerable:!0,get:function(){return i.MutableVideoPreferences}}),Object.defineProperty(t,"Some",{enumerable:!0,get:function(){return Types_1.Some}}),Object.defineProperty(t,"None",{enumerable:!0,get:function(){return Types_1.None}}),Object.defineProperty(t,"Maybe",{enumerable:!0,get:function(){return Types_1.Maybe}}),Object.defineProperty(t,"isAudioTransformDevice",{enumerable:!0,get:function(){return AudioTransformDevice_1.isAudioTransformDevice}}),Object.defineProperty(t,"isDestroyable",{enumerable:!0,get:function(){return Destroyable_1.isDestroyable}}),Object.defineProperty(t,"isVideoTransformDevice",{enumerable:!0,get:function(){return VideoTransformDevice_1.isVideoTransformDevice}})})),RTCJoinedInfoCodeEnum,Command,BuiltinEventType,BuiltinActionType,MicroStatus,UserStatus,MemUserStatus,WebSocketState,WebSocketErrorType,WebSocketCloseError;class BrowserRTC4Chime extends CoreRTC{constructor(e){super(),this.type=exports.RTCType.RealseeBrowserChimeRTC,this.joined=!1,this.micro=!1,this.voiceId="",this.userId="",this.deviceChangeObserver={},this.audioVideoObserver={},this._getVoiceSign=()=>{throw new Error("方法 getVoiceSign 未实现")},this.$dom=document.createElement("div"),this.$audio=document.createElement("audio"),this._initDom=()=>{this.$audio.id=`rs-rtc-${uuid()}`,this.$dom.id=`rs-rtc-${uuid()}`,this.$dom.appendChild(this.$audio),document.body.appendChild(this.$dom)},this.initObservers=()=>{this.deviceChangeObserver={audioInputsChanged:e=>{null==e||e.forEach((e=>{this.logger.info(`Device ID: ${e.deviceId} Microphone: ${e.label}`)}))},audioOutputsChanged:e=>{this.logger.info(`Audio outputs updated: ${e}`)},videoInputsChanged:e=>{this.logger.info(`Video inputs updated: ${e}`)},audioInputMuteStateChanged:(e,t)=>{this.logger.info(`Device ${e.toString()} ${t?"is muted in hardware":"is not muted"}`)}},this.audioVideoObserver={audioVideoDidStart:()=>{this.logger.info("Started")},audioVideoDidStop:e=>{this.logger.info(`Stopped with a session status code: ${e.statusCode()}`)},audioVideoDidStartConnecting:e=>{e&&this.logger.info("Attempting to reconnect")}}},this._registerRtcEvent=()=>{var e,t,i,n,r,o;const a=(null===(i=null===(t=null===(e=this.meetingSession)||void 0===e?void 0:e.configuration)||void 0===t?void 0:t.credentials)||void 0===i?void 0:i.attendeeId)||"";if(a){const e=new Map,t=()=>{const t=[];return e.forEach(((e,i)=>{t.push({userId:e.userId,volume:e.muted||0===e.signalStrength||!Boolean(e.volume)?0:e.volume})})),t};null===(n=this.meetingSession)||void 0===n||n.audioVideo.realtimeSubscribeToAttendeeIdPresence(((i,n,r)=>{var o;if(!n)return e.delete(i),void this.emit("userVolumes",t());null===(o=this.meetingSession)||void 0===o||o.audioVideo.realtimeSubscribeToVolumeIndicator(i,((i,n,o,a)=>{new build.DefaultModality(i).base()===i&&(e.set(i,{userId:r||i,volume:n,muted:o,signalStrength:a}),this.emit("userVolumes",t()))}))})),null===(r=this.meetingSession)||void 0===r||r.audioVideo.realtimeSubscribeToVolumeIndicator(a,((e,t,i,n)=>{new build.DefaultModality(e).base()===e&&null!==n&&1!==n&&this.emit("weakNetwork")})),null===(o=this.meetingSession)||void 0===o||o.audioVideo.realtimeSubscribeToFatalError((e=>this.emit("error",e)))}},this._getVoiceSign=e.getVoiceSign,this._initDom(),this.logger=new build.ConsoleLogger("WebRTCLogger",e.logLevel||build.LogLevel.OFF),this.deviceController=new build.DefaultDeviceController(this.logger),this.initObservers()}async join(e){return new Promise((async(t,i)=>{var n;this.emit("joinWillStart");try{const{sdkAppId:i,userId:r,roomId:o,userSig:a}=await this._getVoiceSign({...e,roomId:e.roomId||0});this.userId=r;const{attendence:s,vendor_wrapper:c}=JSON.parse(decodeURIComponent(a)),l=new build.MeetingSessionConfiguration({Meeting:c},{Attendee:{ExternalUserId:s.external_user_id,AttendeeId:s.attendee_id,JoinToken:s.join_token}});this.meetingSession=new build.DefaultMeetingSession(l,this.logger,this.deviceController),this._registerRtcEvent(),this.meetingSession.audioVideo.addDeviceChangeObserver(this.deviceChangeObserver),this.meetingSession.audioVideo.addObserver(this.audioVideoObserver),this.meetingSession.audioVideo.bindAudioElement(this.$audio);const d={audioVideoDidStart:()=>{var e;null===(e=this.meetingSession)||void 0===e||e.audioVideo.realtimeMuteLocalAudio(),this.joined=!0,this.emit("joined"),t(!0)},audioVideoDidStop:()=>{this.joined=!1,t(!1)}};this.meetingSession.audioVideo.addObserver(d);const u=await this.deviceController.listAudioInputDevices(!0),h=u.find((e=>"default"===e.deviceId)),p=u.find((e=>""!==e.deviceId));this.audioInput=h||p,await this.meetingSession.audioVideo.chooseVideoInputDevice(null),await this.meetingSession.audioVideo.chooseAudioInputDevice((null===(n=this.audioInput)||void 0===n?void 0:n.deviceId)||"default"),this.meetingSession.audioVideo.start()}catch(e){this.emit("error",e),this.logger.error(e.message),t(!1)}}))}quit(){return new Promise(((e,t)=>{var i,n;this.joined=!1;const r={audioVideoDidStop:t=>{const i=t.statusCode();i===build.MeetingSessionStatusCode.Left?(this.logger.info("You left the session"),e(!0)):(this.logger.info(`Stopped with a session status code: ${i}`),e(!0))}};null===(i=this.meetingSession)||void 0===i||i.audioVideo.addObserver(r),null===(n=this.meetingSession)||void 0===n||n.audioVideo.stop()}))}async detectMicro(){return new Promise((e=>{const t={audio:!0,video:!1};try{navigator.mediaDevices.getUserMedia(t).then((()=>e(!0))).catch((()=>e(!1)))}catch(t){this.logger.error(t.message),e(!1)}}))}async toggleMicro(e){var t,i,n;e?null===(t=this.meetingSession)||void 0===t||t.audioVideo.realtimeUnmuteLocalAudio():null===(i=this.meetingSession)||void 0===i||i.audioVideo.realtimeMuteLocalAudio();const r=null===(n=this.meetingSession)||void 0===n?void 0:n.audioVideo.realtimeIsLocalAudioMuted();return void 0!==r&&e!==r}shock(){throw new Error("Method not implemented.")}}exports.RTCJoinedInfoCodeEnum=void 0,RTCJoinedInfoCodeEnum=exports.RTCJoinedInfoCodeEnum||(exports.RTCJoinedInfoCodeEnum={}),RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum.Success=0]="Success",RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum.Failure=1]="Failure",RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum.ReJoin=2]="ReJoin",RTCJoinedInfoCodeEnum[RTCJoinedInfoCodeEnum.NoMicroPermission=3]="NoMicroPermission";class VRWebViewRTC extends CoreRTC{constructor({jsBridge:e,getVoiceSign:t}){super(),this.type=exports.RTCType.RealseeVRWebViewRTC,this.joined=!1,this.micro=!1,this.voiceId="",this.options={jsBridge:e,getVoiceSign:t},this.jsBridge.callAndListen("live/userVolumes",(e=>{this.emit("userVolumes",e)})),this.jsBridge.callAndListen("live/weakNetwork",(e=>{e&&this.emit("weakNetwork")}))}get jsBridge(){return this.options.jsBridge}async join(e){this.emit("joinWillStart");const{sdkAppId:t,userId:i,userSig:n}=await this.options.getVoiceSign(e);this.type=e.type;const[r,o]=await this.jsBridge.callAndBackfeed(`live/join?sdkAppID=${t}&userID=${i}&roomID=${Number(e.voiceId)}&userSig=${n}`);return r?r.code===exports.RTCJoinedInfoCodeEnum.Success?(this.emit("joined"),this.joined=!0):(this.emit("error",r),this.joined=!1):(this.emit("error",o||new Error("加入房间失败:未知异常。")),this.joined=!1),this.joined}async quit(){const[e,t]=await this.jsBridge.callAndBackfeed("live/quit");return null===e&&this.emit("error",t||new Error("退出房间失败:未知异常。")),this.joined=!1,!!e}async detectMicro(){const[e,t]=await this.jsBridge.detectMicro();return null===e?(this.emit("error",t||new Error("麦克风监测异常!")),!1):e}async toggleMicro(e){const[t,i]=await this.jsBridge.callAndBackfeed("live/toggleMicro?flag="+(e?1:0));return null===t?(this.emit("error",i||new Error("麦克风监测异常!")),!1):(this.micro=t,t)}shock(){this.jsBridge.shock(1)}}function parseLiveMsg(e){try{const t=JSON.parse(e),i={code:t.code,message:t.message,command:t.command,roomCode:t.room_code,appID:t.app_id,requestId:t.request_id,frontRequestId:t.front_request_id,triggerUserID:t.trigger_user_id,data:t.data||{}},n=Object.keys(i).filter((e=>void 0===i[e]));return n.length>0&&console.warn(`推送数据格式异常:${n.join(" ")} 值不存在!`),i}catch(e){return!1}}function parseWSClsErr(e){switch(e){case 1001:return exports.WebSocketCloseError.Err_1001;case 1002:return exports.WebSocketCloseError.Err_1002;case 1003:return exports.WebSocketCloseError.Err_1003;case 1006:return exports.WebSocketCloseError.Err_1006;case 1007:return exports.WebSocketCloseError.Err_1007;case 1008:return exports.WebSocketCloseError.Err_1008;case 1009:return exports.WebSocketCloseError.Err_1009}return exports.WebSocketCloseError.Err_unknown}function appendUri(e,t){const i=-1!==e.indexOf("?");return e+Object.keys(t).reduce(((e,n,r)=>`${e}${0!==r||i?"&":"?"}${n}=${t[n]}`),"")}function isTrulyObject(e){return"[object Object]"===Object.prototype.toString.call(e)}function baseIsEqual(e,t){return e===t||typeof e==typeof t&&!(!Number.isNaN(e)||!Number.isNaN(t))}function objEqualShallow(e,t){const i=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(i.length!==n.length)return!1;for(let n=0,r=i.length;n<r;n++){const r=i[n];if(!baseIsEqual(e[r],t[r]))return!1}return!0}function arrayEqualShallow(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(!baseIsEqual(e[i],t[i]))return!1;return!0}function isShallowEqual(e,t){return!!baseIsEqual(e,t)||(isTrulyObject(e)&&isTrulyObject(t)?objEqualShallow(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&arrayEqualShallow(e,t))}function isDeepEqual(e,t){return!!baseIsEqual(e,t)||(isTrulyObject(e)&&isTrulyObject(t)?objEqualDeep(e,t):!(!Array.isArray(e)||!Array.isArray(t))&&arrayEqualDeep(e,t))}function arrayEqualDeep(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(!isDeepEqual(e[i],t[i]))return!1;return!0}function objEqualDeep(e,t){const i=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(i.length!==n.length)return!1;for(let n=0,r=i.length;n<r;n++){const r=i[n];if(!isDeepEqual(e[r],t[r]))return!1}return!0}function equal(e,t,i){return i.deep?isDeepEqual(e,t):isShallowEqual(e,t)}exports.Command=void 0,Command=exports.Command||(exports.Command={}),Command.SelfUserInfo="SELF_USER_INFO",Command.RoomInfo="ROOM_INFO",Command.RTCInfo="RTC_INFO",Command.UserList="USER_LIST",Command.BuiltinMsg="BUILTIN_MSG",Command.CustomEvent="CUSTOM_EVENT",Command.KeyframeSync="KEYFRAME_SYNC",Command.UserKickOut="USER_KICK_OUT",exports.BuiltinEventType=void 0,BuiltinEventType=exports.BuiltinEventType||(exports.BuiltinEventType={}),BuiltinEventType.UserChange="user_change",BuiltinEventType.RoomChange="room_change",exports.BuiltinActionType=void 0,BuiltinActionType=exports.BuiltinActionType||(exports.BuiltinActionType={}),BuiltinActionType.UserMicroStatus="change_micro_status",BuiltinActionType.UserMicroStatusSync="sync_micro_status",BuiltinActionType.UserPermission="change_permission",BuiltinActionType.UserStatus="change_status",BuiltinActionType.UserInfo="change_info",BuiltinActionType.RoomClose="close",exports.MicroStatus=void 0,MicroStatus=exports.MicroStatus||(exports.MicroStatus={}),MicroStatus.OPEN="OPEN",MicroStatus.CLOSE="CLOSE",exports.UserStatus=void 0,UserStatus=exports.UserStatus||(exports.UserStatus={}),UserStatus[UserStatus.Normal=0]="Normal",UserStatus[UserStatus.Removed=1]="Removed",UserStatus[UserStatus.Replaced=2]="Replaced",exports.MemUserStatus=void 0,MemUserStatus=exports.MemUserStatus||(exports.MemUserStatus={}),MemUserStatus.WAIT_ENTER="WAIT_ENTER",MemUserStatus.ONLINE="ONLINE",MemUserStatus.LEAVE="LEAVE",MemUserStatus.KICK_OUT="KICK_OUT",MemUserStatus.BE_REPLACE="BE_REPLACE",MemUserStatus.EXCEPTION="EXCEPTION",exports.WebSocketState=void 0,WebSocketState=exports.WebSocketState||(exports.WebSocketState={}),WebSocketState[WebSocketState.NOTINITIALIZED=-1]="NOTINITIALIZED",WebSocketState[WebSocketState.CONNECTING=0]="CONNECTING",WebSocketState[WebSocketState.OPEN=1]="OPEN",WebSocketState[WebSocketState.CLOSING=2]="CLOSING",WebSocketState[WebSocketState.CLOSED=3]="CLOSED",exports.WebSocketErrorType=void 0,WebSocketErrorType=exports.WebSocketErrorType||(exports.WebSocketErrorType={}),WebSocketErrorType.Error="Error",WebSocketErrorType.Close="Close",WebSocketErrorType.MicroAuth="MicroAuth",WebSocketErrorType.DuplicateConnect="DuplicateConnect",WebSocketErrorType.IllegalURL="IllegalURL",WebSocketErrorType.Unknown="Unknown",WebSocketErrorType.IllegalArgs="IllegalArgs",exports.WebSocketCloseError=void 0,WebSocketCloseError=exports.WebSocketCloseError||(exports.WebSocketCloseError={}),WebSocketCloseError.Err_1001="CLOSE_GOING_AWAY",WebSocketCloseError.Err_1002="CLOSE_PROTOCOL_ERROR",WebSocketCloseError.Err_1003="CLOSE_UNSUPPORTED",WebSocketCloseError.Err_1006="CLOSE_ABNORMAL",WebSocketCloseError.Err_1007="Unsupported Data",WebSocketCloseError.Err_1008="Policy Violation",WebSocketCloseError.Err_1009="CLOSE_TOO_LARGE",WebSocketCloseError.Err_unknown="unknown";class LiveController{constructor(e){this.readyState=exports.WebSocketState.NOTINITIALIZED,this.canSync=!0,this.connecting=!1,this.keyframes={},this.checkReadyState=e=>{do{if(!this.webSocket){this.readyState!==exports.WebSocketState.NOTINITIALIZED&&(this.readyState=exports.WebSocketState.NOTINITIALIZED,e.emit("ws.readyStateUpdate",this.readyState));break}const t=this.webSocket.readyState;t!==this.readyState&&(this.readyState=t,e.emit("ws.readyStateUpdate",this.readyState))}while(0);return this.readyState},this.dispose=()=>{this.disposeWebSocket(),this.connecting=!1,this.healthCheckId&&(clearInterval(this.healthCheckId),this.healthCheckId=void 0)},this.disposeWebSocket=()=>{this.webSocket&&(this.onEvtOpnListener&&(this.webSocket.removeEventListener("open",this.onEvtOpnListener),this.onEvtOpnListener=void 0),this.onEvtMsgListener&&(this.webSocket.removeEventListener("message",this.onEvtMsgListener),this.onEvtMsgListener=void 0),this.onEvtErrListener&&(this.webSocket.removeEventListener("error",this.onEvtErrListener),this.onEvtErrListener=void 0),this.onEvtCLEListener&&(this.webSocket.removeEventListener("close",this.onEvtCLEListener),this.onEvtCLEListener=void 0),this.webSocket.close(),this.webSocket=void 0)},this.options=Object.assign({autoConnect:!0,healthCheck:3e3},e)}handleMessage(e,t){var i,n,r;const{command:o,data:a,frontRequestId:s,code:c,message:l}=e;if("SUCCESS"===c)switch(o){case exports.Command.SelfUserInfo:{const e=a;if(equal(this.selfUserInfo,e,{deep:!0}))return;this.selfUserInfo=e,t.emit("selfInfoUpdate",this.selfUserInfo,s);break}case exports.Command.RoomInfo:{const e=a;this.roomInfo=Object.assign({},e),t.emit("readyKeyframeSync",e.last_frame||{});break}case exports.Command.RTCInfo:{const{voice_id:e,type:r}=a;if(t.$RTC.joined)break;t.$RTC.join({voiceId:e,userId:(null===(i=this.selfUserInfo)||void 0===i?void 0:i.id)||"",roomId:null===(n=this.roomInfo)||void 0===n?void 0:n.info.room_code,type:r}),t.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:exports.MicroStatus.OPEN});break}case exports.Command.UserList:{const e=a;this.userList=e,t.emit("userListUpdate",this.userList,s);break}case exports.Command.CustomEvent:{const e=a;t.emit("broadcast",e,s);break}case exports.Command.KeyframeSync:{const e=a,i=Object.keys(e).reduce(((i,n)=>{if(equal(e[n],this.keyframes[n],{deep:!0}))return i;const r=[e[n],this.keyframes[n],s],o=n;return t.keyframes.emit(o,...r),this.keyframes[n]=e[n],i[n]=e[n],i}),{});t.emit("keyframes",i,s);break}case exports.Command.BuiltinMsg:{const e=a;t.emit("builtinEvent",e),e.event_type===exports.BuiltinEventType.UserChange&&t.emit("userChange",e),e.event_type===exports.BuiltinEventType.RoomChange&&t.emit("roomChange",e),e.event_type===exports.BuiltinEventType.UserChange&&e.action===exports.BuiltinActionType.UserMicroStatus&&t.toggleMicro(e.data.status===exports.MicroStatus.OPEN),e.event_type===exports.BuiltinEventType.RoomChange&&e.action===exports.BuiltinActionType.RoomClose&&(null===(r=this.options.rtc)||void 0===r||r.quit(),this.disposeWebSocket());break}case exports.Command.UserKickOut:t.emit("kickOut");break;default:console.warn("unknown command: ",o)}else t.emit("error",e)}sendMessage(e){return this.webSocket?e?void this.webSocket.send(JSON.stringify(e)):console.warn("WebSocket messages is empty!"):console.warn("WebSocket has not yet been initialized!")}}const unimplementedGetVoiceSign=e=>Promise.reject("unimplemented method GetVoiceSign");function createLive(e){const t=new LiveController(e),i=(e,t={},i)=>((i=i?Array.isArray(i)?i:[i]:[])&&(t.to_user_ids=i),{command:e,front_request_id:uuid(),data:t});const n=new class extends Subscribe{constructor(){var i;if(super(),this.keyframes=new Subscribe,!e.rtc&&e.rtcType){if(!e.getVoiceSign)throw new Error("GetVoiceSign method must be passed when using built-in RTC instances");const n=null!==(i=e.getVoiceSign)&&void 0!==i?i:unimplementedGetVoiceSign;switch(e.rtcType){case exports.RTCType.RealseeVRWebViewRTC:if(!e.jsBridge)throw new Error("JsBridge instance must be passed when using built-in VRWebViewRTC instances");t.options.rtc=new VRWebViewRTC({jsBridge:e.jsBridge,getVoiceSign:n});break;case exports.RTCType.RealseeBrowserChimeRTC:t.options.rtc=new BrowserRTC4Chime({getVoiceSign:n,logLevel:e.__debug__?build.LogLevel.DEBUG:build.LogLevel.ERROR});break;case exports.RTCType.RealseeBrowserRTC:t.options.rtc=new BrowserRTC({getVoiceSign:n});break;default:throw new Error("unknown built-in RTC type")}}t.options.rtc||console.warn("unused rtc"),t.options.url&&t.options.getTicket&&this.connect();const n=(e=>{if(!e)return 0;if(!0===e)return 3e3;const t=Number(e);return t>0?t:3e3})(t.options.healthCheck);n&&(t.healthCheckId=setInterval((()=>t.checkReadyState(this)),n))}get options(){return Object.freeze(Object.assign({},t.options))}get readyState(){return t.checkReadyState(this),t.readyState}get url(){var e;return(null===(e=t.webSocket)||void 0===e?void 0:e.url)||""}get selfInfo(){return t.selfUserInfo}get userList(){return t.userList||[]}get snapshot(){return t.keyframes||{}}get $RTC(){return t.options.rtc}async setSelfInfo(e){if(this.readyState!==exports.WebSocketState.OPEN)return new Error("The connection is not open and ready to communicate.");try{return await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserInfo,e)}catch(e){return e}}getFramesByKey(e){return t.keyframes[e]}sendKeyframe(e,n){if(this.readyState!==exports.WebSocketState.OPEN)return new Error("The connection is not open and ready to communicate.");t.keyframes[e]=n;const r=i(exports.Command.KeyframeSync,this.snapshot);return t.sendMessage(r),!0}broadcast(e,n,r){return this.readyState!==exports.WebSocketState.OPEN?new Error("The connection is not open and ready to communicate."):new Promise(((o,a)=>{const s=i(exports.Command.CustomEvent,e,n),c=s.front_request_id;t.sendMessage(s);const l=r?setTimeout((()=>{a(new Error("RESPONSE TIMEOUT")),this.off("broadcast",d)}),r):void 0,d=(e,t)=>{t===c&&(this.off("broadcast",d),o(e),l&&clearInterval(l))};this.on("broadcast",d)}))}async updateStatus(e,n,r,o){if(this.readyState!==exports.WebSocketState.OPEN)return!1;const a=Object.assign({event_type:e,action:n},{data:r}),s=i(exports.Command.BuiltinMsg,a,o);return t.sendMessage(s),!0}async toggleMicro(e){var t,i;return!!(null===(i=null===(t=this.selfInfo)||void 0===t?void 0:t.permission)||void 0===i?void 0:i.control_own_micro)&&(await this.$RTC.toggleMicro(e),await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e?exports.MicroStatus.OPEN:exports.MicroStatus.CLOSE},[]))}async forbidMicro(e,i){var n,r;return!(t.options.canForbidUserMicro&&!t.options.canForbidUserMicro(i))&&(!!(null===(r=null===(n=this.selfInfo)||void 0===n?void 0:n.permission)||void 0===r?void 0:r.control_other_micro)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserMicroStatus,{status:e},i))}async forbidSync(e,i){var n,r;return!(t.options.canForbidUserSync&&!t.options.canForbidUserSync(i))&&(!!(null===(r=null===(n=this.selfInfo)||void 0===n?void 0:n.permission)||void 0===r?void 0:r.control_other_sync)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserPermission,{sync_frame:e},i))}async kick(e){var i,n;return!(t.options.canForbidUserKick&&!t.options.canForbidUserKick(e))&&(!!(null===(n=null===(i=this.selfInfo)||void 0===i?void 0:i.permission)||void 0===n?void 0:n.change_other_status)&&await this.updateStatus(exports.BuiltinEventType.UserChange,exports.BuiltinActionType.UserStatus,{status:"KICK_OUT"},e))}async exit(){return await this.$RTC.quit(),await this.updateStatus(exports.BuiltinEventType.RoomChange,exports.BuiltinActionType.RoomClose,{})}async connect(e={}){if(!await this.$RTC.detectMicro()){const e=new Error("系统监测麦克风未授权~");return this.emit("ws.error",{type:exports.WebSocketErrorType.MicroAuth,error:e}),e}if(t.connecting){const e=new Error("WebSocket 正在连接中,请勿重复连接 ...");return this.emit("ws.error",{type:exports.WebSocketErrorType.DuplicateConnect,error:e}),e}const{force:i}=e;if(!i&&(this.readyState===exports.WebSocketState.CONNECTING||this.readyState===exports.WebSocketState.OPEN))return!0;if(e.url&&(t.options.url=e.url),e.getTicket&&(t.options.getTicket=e.getTicket),!t.options.url||!t.options.url.startsWith("ws")){const e=new Error(`WebSocket URL 未配置或格式不合法:"${t.options.url}"`);return this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalURL,error:e}),e}if(!t.options.getTicket){const e=new Error("getTicket() 未配置!");return this.emit("ws.error",{type:exports.WebSocketErrorType.IllegalArgs,error:e}),e}t.connecting=!0,t.disposeWebSocket(),this.emit("ws.beforeConnect");const r=i||e.url||!this.url?appendUri(t.options.url,{ticket:await t.options.getTicket(),force:Number(!!i)}):this.url;return t.webSocket=new WebSocket(r),t.onEvtOpnListener=()=>{t.checkReadyState(this),this.emit("ws.afterConnect")},t.onEvtMsgListener=e=>{t.checkReadyState(this);try{const i=parseLiveMsg(e.data);if(!1===i)return;t.handleMessage(i,this)}catch(t){this.emit("ws.error",{type:exports.WebSocketErrorType.Unknown,error:t,target:e})}},t.onEvtErrListener=e=>{n.emit("ws.error",{type:exports.WebSocketErrorType.Error,target:e}),t.checkReadyState(this)},t.onEvtCLEListener=e=>{t.checkReadyState(this);const i=Number(e.code);if(1e3===i)return;const r=parseWSClsErr(i);n.emit("ws.error",{target:e,type:exports.WebSocketErrorType.Close,closeError:r})},t.webSocket.addEventListener("open",t.onEvtOpnListener),t.webSocket.addEventListener("message",t.onEvtMsgListener),t.webSocket.addEventListener("error",t.onEvtErrListener),t.webSocket.addEventListener("close",t.onEvtCLEListener),await new Promise(((e,i)=>{const n=()=>{e(!0),t.connecting=!1,this.off("ws.error",r)},r=e=>{i(e.error?e.error:new Error("WebSocket connection failed!")),t.connecting=!1,this.off("ws.afterConnect",n)};this.once("ws.afterConnect",n),this.once("ws.error",r)}))}async revoke(){return!0}};return e.__debug__&&(Object.assign(n,{__controller__:t}),Object.assign(window,{$live:n})),n}var l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=z&&e[z]||e["@@iterator"])?e:null}var B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(e,t,i){this.props=e,this.context=t,this.refs=D,this.updater=i||B}function F(){}function G(e,t,i){this.props=e,this.context=t,this.refs=D,this.updater=i||B}E.prototype.isReactComponent={},E.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},F.prototype=E.prototype;var H=G.prototype=new F;H.constructor=G,C(H,E.prototype),H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};function M(e,t,i){var n,r={},o=null,a=null;if(null!=t)for(n in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(o=""+t.key),t)J.call(t,n)&&!L.hasOwnProperty(n)&&(r[n]=t[n]);var s=arguments.length-2;if(1===s)r.children=i;else if(1<s){for(var c=Array(s),d=0;d<s;d++)c[d]=arguments[d+2];r.children=c}if(e&&e.defaultProps)for(n in s=e.defaultProps)void 0===r[n]&&(r[n]=s[n]);return{$$typeof:l,type:e,key:o,ref:a,props:r,_owner:K.current}}function N(e,t){return{$$typeof:l,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function O(e){return"object"==typeof e&&null!==e&&e.$$typeof===l}function escape(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}var P=/\/+/g;function Q(e,t){return"object"==typeof e&&null!==e&&null!=e.key?escape(""+e.key):t.toString(36)}function R(e,t,i,r,o){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=null);var s=!1;if(null===e)s=!0;else switch(a){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case l:case n:s=!0}}if(s)return o=o(s=e),e=""===r?"."+Q(s,0):r,I(o)?(i="",null!=e&&(i=e.replace(P,"$&/")+"/"),R(o,t,i,"",(function(e){return e}))):null!=o&&(O(o)&&(o=N(o,i+(!o.key||s&&s.key===o.key?"":(""+o.key).replace(P,"$&/")+"/")+e)),t.push(o)),1;if(s=0,r=""===r?".":r+":",I(e))for(var c=0;c<e.length;c++){var d=r+Q(a=e[c],c);s+=R(a,t,i,d,o)}else if("function"==typeof(d=A(e)))for(e=d.call(e),c=0;!(a=e.next()).done;)s+=R(a=a.value,t,i,d=r+Q(a,c++),o);else if("object"===a)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function S(e,t,i){if(null==e)return e;var n=[],r=0;return R(e,n,"","",(function(e){return t.call(i,e,r++)})),n}function T(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K},Children={map:S,forEach:function(e,t,i){S(e,(function(){t.apply(this,arguments)}),i)},count:function(e){var t=0;return S(e,(function(){t++})),t},toArray:function(e){return S(e,(function(e){return e}))||[]},only:function(e){if(!O(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},Component=E,Fragment=p,Profiler=r,PureComponent=G,StrictMode=q,Suspense=w,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W,cloneElement=function(e,t,i){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=C({},e.props),r=e.key,o=e.ref,a=e._owner;if(null!=t){if(void 0!==t.ref&&(o=t.ref,a=K.current),void 0!==t.key&&(r=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(c in t)J.call(t,c)&&!L.hasOwnProperty(c)&&(n[c]=void 0===t[c]&&void 0!==s?s[c]:t[c])}var c=arguments.length-2;if(1===c)n.children=i;else if(1<c){s=Array(c);for(var d=0;d<c;d++)s[d]=arguments[d+2];n.children=s}return{$$typeof:l,type:e.type,key:r,ref:o,props:n,_owner:a}},createContext=function(e){return(e={$$typeof:u,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:t,_context:e},e.Consumer=e},createElement=M,createFactory=function(e){var t=M.bind(null,e);return t.type=e,t},createRef=function(){return{current:null}},forwardRef=function(e){return{$$typeof:v,render:e}},isValidElement=O,lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:T}},memo=function(e,t){return{$$typeof:x,type:e,compare:void 0===t?null:t}},startTransition=function(e){var t=V.transition;V.transition={};try{e()}finally{V.transition=t}},unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},useCallback=function(e,t){return U.current.useCallback(e,t)},useContext=function(e){return U.current.useContext(e)},useDebugValue=function(){},useDeferredValue=function(e){return U.current.useDeferredValue(e)},useEffect=function(e,t){return U.current.useEffect(e,t)},useId=function(){return U.current.useId()},useImperativeHandle=function(e,t,i){return U.current.useImperativeHandle(e,t,i)},useInsertionEffect=function(e,t){return U.current.useInsertionEffect(e,t)},useLayoutEffect=function(e,t){return U.current.useLayoutEffect(e,t)},useMemo=function(e,t){return U.current.useMemo(e,t)},useReducer=function(e,t,i){return U.current.useReducer(e,t,i)},useRef=function(e){return U.current.useRef(e)},useState=function(e){return U.current.useState(e)},useSyncExternalStore=function(e,t,i){return U.current.useSyncExternalStore(e,t,i)},useTransition=function(){return U.current.useTransition()},version="18.1.0",react_production_min={Children:Children,Component:Component,Fragment:Fragment,Profiler:Profiler,PureComponent:PureComponent,StrictMode:StrictMode,Suspense:Suspense,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,cloneElement:cloneElement,createContext:createContext,createElement:createElement,createFactory:createFactory,createRef:createRef,forwardRef:forwardRef,isValidElement:isValidElement,lazy:lazy,memo:memo,startTransition:startTransition,unstable_act:unstable_act,useCallback:useCallback,useContext:useContext,useDebugValue:useDebugValue,useDeferredValue:useDeferredValue,useEffect:useEffect,useId:useId,useImperativeHandle:useImperativeHandle,useInsertionEffect:useInsertionEffect,useLayoutEffect:useLayoutEffect,useMemo:useMemo,useReducer:useReducer,useRef:useRef,useState:useState,useSyncExternalStore:useSyncExternalStore,useTransition:useTransition,version:version},require$$0=react_production_min,react=createCommonjsModule((function(e){e.exports=require$$0})),React=react;function createLiveReact(e){const t=React.createContext(null),i=createLive(e);function n(){const e=React.useContext(t);if(!e)throw new Error("LiveProvider never found.");return e}return{live:i,LiveProvider:function(e){return React.createElement(t.Provider,{value:e.live||i},e.children)},unsafe__useLiveInstance:function(){return n()},unsafe__useRTCInstance:function(){return n().$RTC},useCurrentWebSocketUrl:function(){const e=n(),[t,i]=React.useState(void 0);return React.useEffect((()=>{const t=()=>i(e.url);return e.on("ws.beforeConnect",t),()=>e.off("ws.beforeConnect",t)}),[e]),t},useConnect:function(){const e=n();return async t=>await e.connect(t)},useKeyframe:function(e){const t=n(),[i,r]=React.useState(t.getFramesByKey(e));return React.useEffect((()=>{const i=e,n=e=>r(e);return t.keyframes.on(i,n),()=>t.keyframes.off(i,n)}),[t]),[i,React.useCallback((i=>t.sendKeyframe(e,i)),[t])]},useKeyframeUpdateCallback:function(e,t,i=[]){const r=n(),o=[r,e,...i],a=()=>r.keyframes.off(e,t);return React.useEffect((()=>(r.keyframes.on(e,t),a)),o),a},useLiveAction:function(){const e=n(),t=React.useCallback((t=>e.toggleMicro(t)),[e]),i=React.useCallback(((t,i,n=0)=>e.broadcast(t,i,n)),[e]),r=React.useCallback((()=>e.exit()),[e]),o=React.useCallback((t=>e.kick(t)),[e]),a=React.useCallback(((t,i)=>e.forbidMicro(t,i)),[e]),s=React.useCallback((t=>e.getFramesByKey(t)),[e]);return{broadcast:i,exit:r,kick:o,toggleMicro:t,forbidMicro:a,sendKeyframe:React.useCallback(((t,i)=>e.sendKeyframe(t,i)),[e]),getFramesByKey:s,setSelfInfo:React.useCallback((t=>e.setSelfInfo(t)),[e]),updateStatus:React.useCallback(((t,i,n,r)=>e.updateStatus(t,i,n,r)),[e])}},useLiveEventCallback:function(e,t,i=[]){const r=n(),o=()=>r.off(e,t),a=[r,e,...i];return React.useEffect((()=>(r.on(e,t),o)),a),o},useReadyState:function(){const e=n(),[t,i]=React.useState(e.readyState);return React.useEffect((()=>{const t=e=>i(e);return e.on("ws.readyStateUpdate",t),()=>e.off("ws.readyStateUpdate",t)}),[e]),t},useRTCAction:function(){const e=n(),t=React.useCallback((t=>e.$RTC.join(t)),[e]);return{join:t,quit:React.useCallback((()=>e.$RTC.quit()),[e]),shock:React.useCallback((()=>{var t,i;return null===(i=(t=e.$RTC).shock)||void 0===i?void 0:i.call(t)}),[e]),toggleMicro:React.useCallback((t=>e.$RTC.toggleMicro(t)),[e]),detectMicro:React.useCallback((()=>e.$RTC.detectMicro()),[e])}},useRTCEventCallback:function(e,t,i=[]){const r=n(),o=()=>r.$RTC.off(e,t),a=[r,e,...i];return React.useEffect((()=>(r.$RTC.on(e,t),o)),a),o},useSelfInfo:function(){const e=n(),[t,i]=React.useState(e.selfInfo||{}),r=e=>i(e);return React.useEffect((()=>(e.on("selfInfoUpdate",r),()=>e.off("selfInfoUpdate",r))),[e]),[t,React.useCallback((async t=>await e.setSelfInfo(t)),[e])]},useSnapshot:function(){const e=n(),[t,i]=React.useState(e.snapshot);return React.useEffect((()=>{const t=e=>i(e);return e.on("keyframes",t),()=>e.off("keyframes",t)})),t},useUserList:function(){const e=n(),[t,i]=React.useState(e.userList),r=e=>i(e);return React.useEffect((()=>(e.on("userListUpdate",r),()=>e.off("userListUpdate",r))),[e]),t},useWebSocketEventCallback:function(e,t,i=[]){const r=n(),o=()=>r.off(e,t),a=[r,e,...i];return React.useEffect((()=>(r.on(e,t),o)),a),o}}}exports.BrowserRTC=BrowserRTC,exports.BrowserRTC4Chime=BrowserRTC4Chime,exports.CoreRTC=CoreRTC,exports.VRWebViewRTC=VRWebViewRTC,exports.createLive=createLive,exports.createLiveReact=createLiveReact,exports.parseLiveMsg=parseLiveMsg,exports.parseWSClsErr=parseWSClsErr,Object.defineProperty(exports,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=realsee-live.umd.production.js.map