@webex/plugin-meetings 3.3.1-next.1 → 3.3.1-next.11

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.
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
5
5
  _Object$defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getVideoSenderStreamMqa = exports.getVideoSenderMqa = exports.getVideoReceiverStreamMqa = exports.getVideoReceiverMqa = exports.getAudioSenderStreamMqa = exports.getAudioSenderMqa = exports.getAudioReceiverStreamMqa = exports.getAudioReceiverMqa = void 0;
8
+ exports.isStreamRequested = exports.getVideoSenderStreamMqa = exports.getVideoSenderMqa = exports.getVideoReceiverStreamMqa = exports.getVideoReceiverMqa = exports.getAudioSenderStreamMqa = exports.getAudioSenderMqa = exports.getAudioReceiverStreamMqa = exports.getAudioReceiverMqa = void 0;
9
9
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
10
10
  var _lodash = require("lodash");
11
11
  var _constants = require("../constants");
@@ -33,7 +33,8 @@ var getAudioReceiverMqa = exports.getAudioReceiverMqa = function getAudioReceive
33
33
  var audioReceiver = _ref.audioReceiver,
34
34
  statsResults = _ref.statsResults,
35
35
  lastMqaDataSent = _ref.lastMqaDataSent,
36
- baseMediaType = _ref.baseMediaType;
36
+ baseMediaType = _ref.baseMediaType,
37
+ isMultistream = _ref.isMultistream;
37
38
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
38
39
  var getLastTotalValue = function getLastTotalValue(value) {
39
40
  return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
@@ -55,6 +56,7 @@ var getAudioReceiverMqa = exports.getAudioReceiverMqa = function getAudioReceive
55
56
  return mediaType.includes(baseMediaType);
56
57
  })]) === null || _statsResults$Object$ === void 0 ? void 0 : _statsResults$Object$.direction) || 'inactive';
57
58
  audioReceiver.common.common.isMain = !baseMediaType.includes('-share');
59
+ audioReceiver.common.common.multistreamEnabled = isMultistream;
58
60
  audioReceiver.common.transportType = statsResults.connectionType.local.transport;
59
61
 
60
62
  // add rtpPacket info inside common as also for call analyzer
@@ -66,7 +68,8 @@ var getAudioReceiverMqa = exports.getAudioReceiverMqa = function getAudioReceive
66
68
  audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
67
69
  audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
68
70
  var fecRecovered = totalFecPacketsReceived - lastFecPacketsReceived - (totalFecPacketsDiscarded - lastFecPacketsDiscarded);
69
- audioReceiver.common.fecPackets = fecRecovered;
71
+ audioReceiver.common.fecPackets = totalFecPacketsReceived - lastFecPacketsReceived;
72
+ audioReceiver.common.rtpRecovered = fecRecovered;
70
73
  audioReceiver.common.rtpBitrate = (totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
71
74
  };
72
75
  var getAudioReceiverStreamMqa = exports.getAudioReceiverStreamMqa = function getAudioReceiverStreamMqa(_ref2) {
@@ -109,7 +112,8 @@ var getAudioSenderMqa = exports.getAudioSenderMqa = function getAudioSenderMqa(_
109
112
  var audioSender = _ref3.audioSender,
110
113
  statsResults = _ref3.statsResults,
111
114
  lastMqaDataSent = _ref3.lastMqaDataSent,
112
- baseMediaType = _ref3.baseMediaType;
115
+ baseMediaType = _ref3.baseMediaType,
116
+ isMultistream = _ref3.isMultistream;
113
117
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
114
118
  var getLastTotalValue = function getLastTotalValue(value) {
115
119
  return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
@@ -135,6 +139,7 @@ var getAudioSenderMqa = exports.getAudioSenderMqa = function getAudioSenderMqa(_
135
139
  return mediaType.includes(baseMediaType);
136
140
  })]) === null || _statsResults$Object$2 === void 0 ? void 0 : _statsResults$Object$2.direction) || 'inactive';
137
141
  audioSender.common.common.isMain = !baseMediaType.includes('-share');
142
+ audioSender.common.common.multistreamEnabled = isMultistream;
138
143
  audioSender.common.transportType = statsResults.connectionType.local.transport;
139
144
  audioSender.common.maxRemoteJitter = (0, _lodash.max)(meanRemoteJitter) * 1000 || 0;
140
145
  audioSender.common.meanRemoteJitter = (0, _lodash.mean)(meanRemoteJitter) * 1000 || 0;
@@ -142,8 +147,8 @@ var getAudioSenderMqa = exports.getAudioSenderMqa = function getAudioSenderMqa(_
142
147
  // audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;
143
148
  // From candidate-pair
144
149
  audioSender.common.availableBitrate = getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'availableOutgoingBitrate');
145
- // Calculate based on how much packets lost of received compated to how to the client sent
146
150
 
151
+ // Calculate based on how much packets lost of received compated to how to the client sent
147
152
  var totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
148
153
  audioSender.common.remoteLossRate = totalPacketsSent - lastPacketsSent > 0 ? totalPacketsLostForaMin * 100 / (totalPacketsSent - lastPacketsSent) : 0; // This is the packets sent with in last min
149
154
 
@@ -182,7 +187,8 @@ var getVideoReceiverMqa = exports.getVideoReceiverMqa = function getVideoReceive
182
187
  var videoReceiver = _ref5.videoReceiver,
183
188
  statsResults = _ref5.statsResults,
184
189
  lastMqaDataSent = _ref5.lastMqaDataSent,
185
- baseMediaType = _ref5.baseMediaType;
190
+ baseMediaType = _ref5.baseMediaType,
191
+ isMultistream = _ref5.isMultistream;
186
192
  var sendrecvType = _constants.STATS.RECEIVE_DIRECTION;
187
193
  var getLastTotalValue = function getLastTotalValue(value) {
188
194
  return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
@@ -208,6 +214,7 @@ var getVideoReceiverMqa = exports.getVideoReceiverMqa = function getVideoReceive
208
214
  videoReceiver.common.common.direction = ((_statsResults$Object$3 = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
209
215
  return mediaType.includes(baseMediaType);
210
216
  })]) === null || _statsResults$Object$3 === void 0 ? void 0 : _statsResults$Object$3.direction) || 'inactive';
217
+ videoReceiver.common.common.multistreamEnabled = isMultistream;
211
218
  videoReceiver.common.common.isMain = !baseMediaType.includes('-share');
212
219
  videoReceiver.common.transportType = statsResults.connectionType.local.transport;
213
220
 
@@ -232,7 +239,7 @@ var getVideoReceiverMqa = exports.getVideoReceiverMqa = function getVideoReceive
232
239
  videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin ? totalRtxBytesReceivedInaMin * 8 / 60 : 0;
233
240
  };
234
241
  var getVideoReceiverStreamMqa = exports.getVideoReceiverStreamMqa = function getVideoReceiverStreamMqa(_ref6) {
235
- var _lastMqaDataSent$medi13, _lastMqaDataSent$medi14, _lastMqaDataSent$medi15, _lastMqaDataSent$medi16, _lastMqaDataSent$medi17, _lastMqaDataSent$medi18, _lastMqaDataSent$medi19, _lastMqaDataSent$medi20;
242
+ var _lastMqaDataSent$medi13, _lastMqaDataSent$medi14, _lastMqaDataSent$medi15, _lastMqaDataSent$medi16, _lastMqaDataSent$medi17, _lastMqaDataSent$medi18, _lastMqaDataSent$medi19, _lastMqaDataSent$medi20, _statsResults$mediaTy, _statsResults$mediaTy2;
236
243
  var videoReceiverStream = _ref6.videoReceiverStream,
237
244
  statsResults = _ref6.statsResults,
238
245
  lastMqaDataSent = _ref6.lastMqaDataSent,
@@ -270,13 +277,15 @@ var getVideoReceiverStreamMqa = exports.getVideoReceiverStreamMqa = function get
270
277
  videoReceiverStream.receivedFrameSize = videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth / 256;
271
278
  videoReceiverStream.receivedKeyFrames = statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
272
279
  videoReceiverStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;
280
+ videoReceiverStream.isActiveSpeaker = statsResults[mediaType][sendrecvType].isActiveSpeaker || ((_statsResults$mediaTy = statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp) !== null && _statsResults$mediaTy !== void 0 ? _statsResults$mediaTy : 0) > 0 && performance.now() + performance.timeOrigin - ((_statsResults$mediaTy2 = statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp) !== null && _statsResults$mediaTy2 !== void 0 ? _statsResults$mediaTy2 : 0) < _constants.MQA_INTERVAL;
273
281
  };
274
282
  var getVideoSenderMqa = exports.getVideoSenderMqa = function getVideoSenderMqa(_ref7) {
275
283
  var _statsResults$Object$4;
276
284
  var videoSender = _ref7.videoSender,
277
285
  statsResults = _ref7.statsResults,
278
286
  lastMqaDataSent = _ref7.lastMqaDataSent,
279
- baseMediaType = _ref7.baseMediaType;
287
+ baseMediaType = _ref7.baseMediaType,
288
+ isMultistream = _ref7.isMultistream;
280
289
  var sendrecvType = _constants.STATS.SEND_DIRECTION;
281
290
  var getLastTotalValue = function getLastTotalValue(value) {
282
291
  return getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
@@ -298,6 +307,7 @@ var getVideoSenderMqa = exports.getVideoSenderMqa = function getVideoSenderMqa(_
298
307
  videoSender.common.common.direction = ((_statsResults$Object$4 = statsResults[(0, _keys.default)(statsResults).find(function (mediaType) {
299
308
  return mediaType.includes(baseMediaType);
300
309
  })]) === null || _statsResults$Object$4 === void 0 ? void 0 : _statsResults$Object$4.direction) || 'inactive';
310
+ videoSender.common.common.multistreamEnabled = isMultistream;
301
311
  videoSender.common.common.isMain = !baseMediaType.includes('-share');
302
312
  videoSender.common.transportType = statsResults.connectionType.local.transport;
303
313
  var meanRemoteJitter = (0, _keys.default)(statsResults).filter(function (mt) {
@@ -365,4 +375,20 @@ var getVideoSenderStreamMqa = exports.getVideoSenderStreamMqa = function getVide
365
375
  videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;
366
376
  videoSenderStream.requestedFrameSize = statsResults[mediaType][sendrecvType].requestedFrameSize || 0;
367
377
  };
378
+
379
+ /**
380
+ * Checks if stream stats should be updated based on request status and elapsed time.
381
+ *
382
+ * @param {Object} statsResults - Stats results object.
383
+ * @param {string} mediaType - Media type (e.g., 'audio', 'video').
384
+ * @param {string} direction - Stats direction (e.g., 'send', 'receive').
385
+ * @returns {boolean} Whether stats should be updated.
386
+ */
387
+ var isStreamRequested = exports.isStreamRequested = function isStreamRequested(statsResults, mediaType, direction) {
388
+ var _statsResults$mediaTy3, _statsResults$mediaTy4;
389
+ var now = performance.timeOrigin + performance.now();
390
+ var lastUpdateTimestamp = (_statsResults$mediaTy3 = statsResults[mediaType][direction]) === null || _statsResults$mediaTy3 === void 0 ? void 0 : _statsResults$mediaTy3.lastRequestedUpdateTimestamp;
391
+ var isRequested = (_statsResults$mediaTy4 = statsResults[mediaType][direction]) === null || _statsResults$mediaTy4 === void 0 ? void 0 : _statsResults$mediaTy4.isRequested;
392
+ return isRequested || lastUpdateTimestamp && now - lastUpdateTimestamp < _constants.MQA_INTERVAL;
393
+ };
368
394
  //# sourceMappingURL=mqaUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_constants","getTotalValueFromBaseType","stats","sendrecvType","baseMediaType","value","_keys","default","filter","mt","includes","reduce","acc","_stats$mt","_stats$mt$sendrecvTyp","getAudioReceiverMqa","exports","_ref","_statsResults$Object$","audioReceiver","statsResults","lastMqaDataSent","STATS","RECEIVE_DIRECTION","getLastTotalValue","getTotalValue","lastPacketsReceived","lastPacketsLost","lastBytesReceived","lastFecPacketsReceived","lastFecPacketsDiscarded","totalPacketsReceived","packetsLost","totalBytesReceived","totalFecPacketsReceived","totalFecPacketsDiscarded","common","direction","find","mediaType","isMain","transportType","connectionType","local","transport","rtpPackets","totalPacketsLost","mediaHopByHopLost","rtpHopByHopLost","fecRecovered","fecPackets","rtpBitrate","getAudioReceiverStreamMqa","_ref2","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiverStream","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","fecPacketsReceived","fecPacketsDiscarded","csi","push","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","getAudioSenderMqa","_ref3","_statsResults$Object$2","audioSender","SEND_DIRECTION","lastPacketsSent","lastPacketsLostTotal","totalPacketsLostOnReceiver","totalPacketsSent","meanRemoteJitter","concat","meanRoundTripTime","maxRemoteJitter","availableBitrate","totalPacketsLostForaMin","remoteLossRate","maxRoundTripTime","roundTripTime","totalBytesSentInaMin","getAudioSenderStreamMqa","_ref4","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","audioSenderStream","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","requestedBitrate","getVideoReceiverMqa","_ref5","_statsResults$Object$3","videoReceiver","lastRtxPacketsReceived","lastRtxBytesReceived","totalRtxPacketsReceived","totalRtxBytesReceived","totalBytesReceivedInaMin","totalRtxBytesReceivedInaMin","rtxPackets","rtxBitrate","getVideoReceiverStreamMqa","_ref6","_lastMqaDataSent$medi13","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","videoReceiverStream","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","getVideoSenderMqa","_ref7","_statsResults$Object$4","videoSender","lastRtxPacketsSent","lastRtxBytesSent","availableOutgoingBitrate","totalRtxPacketsSent","totalRtxBytesSent","totalRtxBytesSentInaMin","getVideoSenderStreamMqa","_ref8","_lastMqaDataSent$medi21","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","videoSenderStream","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize","requestedFrameSize"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {STATS} from '../constants';\n\n/**\n * Get the totals of a certain value from a certain media type.\n *\n * @param {object} stats - The large stats object.\n * @param {string} sendrecvType - \"send\" or \"recv\".\n * @param {string} baseMediaType - audio or video _and_ share or non-share.\n * @param {string} value - The value we want to get the totals of.\n * @returns {number}\n */\nconst getTotalValueFromBaseType = (\n stats: object,\n sendrecvType: string,\n baseMediaType: string,\n value: string\n): number =>\n Object.keys(stats)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc + (stats[mt]?.[sendrecvType]?.[value] || 0), 0);\n\nexport const getAudioReceiverMqa = ({\n audioReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n const lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');\n const lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');\n\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n const totalFecPacketsReceived = getTotalValue('fecPacketsReceived');\n const totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');\n\n audioReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioReceiver.common.common.isMain = !baseMediaType.includes('-share');\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n const totalPacketsLost = packetsLost - lastPacketsLost;\n audioReceiver.common.mediaHopByHopLost = totalPacketsLost;\n audioReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n const fecRecovered =\n totalFecPacketsReceived -\n lastFecPacketsReceived -\n (totalFecPacketsDiscarded - lastFecPacketsDiscarded);\n audioReceiver.common.fecPackets = fecRecovered;\n\n audioReceiver.common.rtpBitrate = ((totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioReceiverStreamMqa = ({\n audioReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiverStream.common.csi.includes(csi)) {\n audioReceiverStream.common.csi.push(csi);\n }\n\n audioReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n audioReceiverStream.common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.rtpJitter = audioReceiverStream.common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n\n audioReceiverStream.common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiverStream.common.renderedFrameRate =\n (audioReceiverStream.common.framesDropped * 100) / 60 || 0;\n\n audioReceiverStream.common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiverStream.common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiverStream.common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, baseMediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n audioSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioSender.common.common.isMain = !baseMediaType.includes('-share');\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\n audioSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;\n // audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate = getTotalValueFromBaseType(\n statsResults,\n sendrecvType,\n baseMediaType,\n 'availableOutgoingBitrate'\n );\n // Calculate based on how much packets lost of received compated to how to the client sent\n\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n audioSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min\n\n audioSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') -\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');\n\n audioSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getAudioSenderStreamMqa = ({\n audioSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSenderStream.common.csi.includes(csi)) {\n audioSenderStream.common.csi.push(csi);\n }\n\n audioSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n audioSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;\n audioSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n audioSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n\n const lastRtxPacketsReceived = getLastTotalValue('totalRtxPacketsReceived');\n const lastRtxBytesReceived = getLastTotalValue('totalRtxBytesReceived');\n\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n\n const totalRtxPacketsReceived = getTotalValue('totalRtxPacketsReceived');\n const totalRtxBytesReceived = getTotalValue('totalRtxBytesReceived');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n\n videoReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoReceiver.common.common.isMain = !baseMediaType.includes('-share');\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n const totalPacketsLost = packetsLost - lastPacketsLost;\n videoReceiver.common.mediaHopByHopLost = totalPacketsLost;\n videoReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n // calculate this values\n videoReceiver.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;\n const totalRtxBytesReceivedInaMin = totalRtxBytesReceived - lastRtxBytesReceived;\n\n videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtxPackets = totalRtxPacketsReceived - lastRtxPacketsReceived;\n videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin\n ? (totalRtxBytesReceivedInaMin * 8) / 60\n : 0;\n};\n\nexport const getVideoReceiverStreamMqa = ({\n videoReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiverStream.common.csi.includes(csi)) {\n videoReceiverStream.common.csi.push(csi);\n }\n\n videoReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n // End to end packetloss is after recovery\n videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;\n\n videoReceiverStream.common.rtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\n videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n\n const totalFrameReceivedInaMin =\n statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiverStream.common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiverStream.common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;\n videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoReceiverStream.receivedFrameSize =\n (videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth) / 256;\n\n videoReceiverStream.receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiverStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n};\n\nexport const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, baseMediaType}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastBytesSent = getLastTotalValue('totalBytesSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n const lastRtxPacketsSent = getLastTotalValue('totalRtxPacketsSent');\n const lastRtxBytesSent = getLastTotalValue('totalRtxBytesSent');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n const totalBytesSent = getTotalValue('totalBytesSent');\n const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');\n const totalRtxPacketsSent = getTotalValue('totalRtxPacketsSent');\n const totalRtxBytesSent = getTotalValue('totalRtxBytesSent');\n\n videoSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoSender.common.common.isMain = !baseMediaType.includes('-share');\n videoSender.common.transportType = statsResults.connectionType.local.transport;\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;\n videoSender.common.availableBitrate = availableOutgoingBitrate;\n\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n\n videoSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min || 0;\n\n videoSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = totalBytesSent - lastBytesSent;\n const totalRtxBytesSentInaMin = totalRtxBytesSent - lastRtxBytesSent;\n\n videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n videoSender.common.rtxPackets = totalRtxPacketsSent - lastRtxPacketsSent;\n videoSender.common.rtxBitrate = totalRtxBytesSentInaMin ? (totalRtxBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getVideoSenderStreamMqa = ({\n videoSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoSenderStream.common.csi.includes(csi)) {\n videoSenderStream.common.csi.push(csi);\n }\n\n videoSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;\n videoSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSenderStream.common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoSenderStream.transmittedFrameSize =\n (videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth) / 256;\n videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n videoSenderStream.requestedFrameSize =\n statsResults[mediaType][sendrecvType].requestedFrameSize || 0;\n};\n"],"mappings":";;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAJA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC7BC,KAAa,EACbC,YAAoB,EACpBC,aAAqB,EACrBC,KAAa;EAAA,OAEb,IAAAC,KAAA,CAAAC,OAAA,EAAYL,KAAK,CAAC,CACfM,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,IAAAI,SAAA,EAAAC,qBAAA;IAAA,OAAKF,GAAG,IAAI,EAAAC,SAAA,GAAAX,KAAK,CAACO,EAAE,CAAC,cAAAI,SAAA,wBAAAC,qBAAA,GAATD,SAAA,CAAYV,YAAY,CAAC,cAAAW,qBAAA,uBAAzBA,qBAAA,CAA4BT,KAAK,CAAC,KAAI,CAAC,CAAC;EAAA,GAAE,CAAC,CAAC;AAAA;AAErE,IAAMU,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAAE,IAAA,EAK1B;EAAA,IAAAC,qBAAA;EAAA,IAJJC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACZC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IACfjB,aAAa,GAAAa,IAAA,CAAbb,aAAa;EAEb,IAAMD,YAAY,GAAGmB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMoB,aAAa,GAAG,SAAhBA,aAAaA,CAAIpB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMqB,mBAAmB,GAAGF,iBAAiB,CAAC,sBAAsB,CAAC;EACrE,IAAMG,eAAe,GAAGH,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMI,iBAAiB,GAAGJ,iBAAiB,CAAC,oBAAoB,CAAC;EACjE,IAAMK,sBAAsB,GAAGL,iBAAiB,CAAC,oBAAoB,CAAC;EACtE,IAAMM,uBAAuB,GAAGN,iBAAiB,CAAC,qBAAqB,CAAC;EAExE,IAAMO,oBAAoB,GAAGN,aAAa,CAAC,sBAAsB,CAAC;EAClE,IAAMO,WAAW,GAAGP,aAAa,CAAC,kBAAkB,CAAC;EACrD,IAAMQ,kBAAkB,GAAGR,aAAa,CAAC,oBAAoB,CAAC;EAC9D,IAAMS,uBAAuB,GAAGT,aAAa,CAAC,oBAAoB,CAAC;EACnE,IAAMU,wBAAwB,GAAGV,aAAa,CAAC,qBAAqB,CAAC;EAErEN,aAAa,CAACiB,MAAM,CAACA,MAAM,CAACC,SAAS,GACnC,EAAAnB,qBAAA,GAAAE,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACkB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC7B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAc,qBAAA,uBAA9FA,qBAAA,CACImB,SAAS,KAAI,UAAU;EAC7BlB,aAAa,CAACiB,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACpC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACtES,aAAa,CAACiB,MAAM,CAACK,aAAa,GAAGrB,YAAY,CAACsB,cAAc,CAACC,KAAK,CAACC,SAAS;;EAEhF;EACAzB,aAAa,CAACiB,MAAM,CAACS,UAAU,GAAGd,oBAAoB,GAAGL,mBAAmB;;EAE5E;EACA;EACA,IAAMoB,gBAAgB,GAAGd,WAAW,GAAGL,eAAe;EACtDR,aAAa,CAACiB,MAAM,CAACW,iBAAiB,GAAGD,gBAAgB;EACzD3B,aAAa,CAACiB,MAAM,CAACY,eAAe,GAAGF,gBAAgB;EAEvD,IAAMG,YAAY,GAChBf,uBAAuB,GACvBL,sBAAsB,IACrBM,wBAAwB,GAAGL,uBAAuB,CAAC;EACtDX,aAAa,CAACiB,MAAM,CAACc,UAAU,GAAGD,YAAY;EAE9C9B,aAAa,CAACiB,MAAM,CAACe,UAAU,GAAI,CAAClB,kBAAkB,GAAGL,iBAAiB,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC;AAC5F,CAAC;AAEM,IAAMwB,yBAAyB,GAAApC,OAAA,CAAAoC,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAKhC;EAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAAA,IAJJC,mBAAmB,GAAAT,KAAA,CAAnBS,mBAAmB;IACnB1C,YAAY,GAAAiC,KAAA,CAAZjC,YAAY;IACZC,eAAe,GAAAgC,KAAA,CAAfhC,eAAe;IACfkB,SAAS,GAAAc,KAAA,CAATd,SAAS;EAET,IAAMpC,YAAY,GAAGmB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMwC,kBAAkB,GAAG,EAAAT,qBAAA,GAAAjC,eAAe,CAACkB,SAAS,CAAC,cAAAe,qBAAA,uBAA1BA,qBAAA,CAA6BnD,YAAY,CAAC,CAAC6D,mBAAmB,KAAI,CAAC;EAC9F,IAAMC,mBAAmB,GAAG,EAAAV,sBAAA,GAAAlC,eAAe,CAACkB,SAAS,CAAC,cAAAgB,sBAAA,uBAA1BA,sBAAA,CAA6BpD,YAAY,CAAC,CAAC+D,oBAAoB,KAAI,CAAC;EAChG,IAAMC,oBAAoB,GAAG,EAAAX,sBAAA,GAAAnC,eAAe,CAACkB,SAAS,CAAC,cAAAiB,sBAAA,uBAA1BA,sBAAA,CAA6BrD,YAAY,CAAC,CAACiE,gBAAgB,KAAI,CAAC;EAC7F,IAAMxC,iBAAiB,GAAG,EAAA6B,sBAAA,GAAApC,eAAe,CAACkB,SAAS,CAAC,cAAAkB,sBAAA,uBAA1BA,sBAAA,CAA6BtD,YAAY,CAAC,CAAC8B,kBAAkB,KAAI,CAAC;EAC5F,IAAMJ,sBAAsB,GAAG,EAAA6B,sBAAA,GAAArC,eAAe,CAACkB,SAAS,CAAC,cAAAmB,sBAAA,uBAA1BA,sBAAA,CAA6BvD,YAAY,CAAC,CAACkE,kBAAkB,KAAI,CAAC;EACjG,IAAMvC,uBAAuB,GAC3B,EAAA6B,sBAAA,GAAAtC,eAAe,CAACkB,SAAS,CAAC,cAAAoB,sBAAA,uBAA1BA,sBAAA,CAA6BxD,YAAY,CAAC,CAACmE,mBAAmB,KAAI,CAAC;EACrE,IAAM5C,mBAAmB,GAAG,EAAAkC,sBAAA,GAAAvC,eAAe,CAACkB,SAAS,CAAC,cAAAqB,sBAAA,uBAA1BA,sBAAA,CAA6BzD,YAAY,CAAC,CAAC4B,oBAAoB,KAAI,CAAC;EAChG,IAAMJ,eAAe,GAAG,EAAAkC,sBAAA,GAAAxC,eAAe,CAACkB,SAAS,CAAC,cAAAsB,sBAAA,uBAA1BA,sBAAA,CAA6B1D,YAAY,CAAC,CAAC2C,gBAAgB,KAAI,CAAC;EAExF,IAAOyB,GAAG,GAAInD,YAAY,CAACmB,SAAS,CAAC,CAA9BgC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACT,mBAAmB,CAAC1B,MAAM,CAACmC,GAAG,CAAC7D,QAAQ,CAAC6D,GAAG,CAAC,EAAE;IACxDT,mBAAmB,CAAC1B,MAAM,CAACmC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EAC1C;EAEAT,mBAAmB,CAAC1B,MAAM,CAACS,UAAU,GACnCzB,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC4B,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;EAEvFoC,mBAAmB,CAAC1B,MAAM,CAACqC,YAAY;EACrC;EACA,IAAAC,WAAG,EAACtD,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACwE,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEb,mBAAmB,CAAC1B,MAAM,CAACuC,aAAa,GACtC,IAAAC,YAAI,EAACxD,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACwE,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC;EACvEb,mBAAmB,CAAC1B,MAAM,CAACyC,SAAS,GAAGf,mBAAmB,CAAC1B,MAAM,CAACqC,YAAY;;EAE9E;EACA,IAAMxB,YAAY,GAChB7B,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACkE,kBAAkB,GACxDxC,sBAAsB,IACrBT,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACmE,mBAAmB,GAAGxC,uBAAuB,CAAC;EAEvFgC,mBAAmB,CAAC1B,MAAM,CAAC0C,eAAe,GACxC1D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC2C,gBAAgB,GAAGnB,eAAe,GAAGsB,YAAY,IAAI,CAAC;EAE9Fa,mBAAmB,CAAC1B,MAAM,CAAC2C,aAAa,GACtC3D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC6D,mBAAmB,GAAGD,kBAAkB,IAAI,CAAC;EACrFD,mBAAmB,CAAC1B,MAAM,CAAC4C,iBAAiB,GACzClB,mBAAmB,CAAC1B,MAAM,CAAC2C,aAAa,GAAG,GAAG,GAAI,EAAE,IAAI,CAAC;EAE5DjB,mBAAmB,CAAC1B,MAAM,CAAC6C,cAAc,GACvC7D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC+D,oBAAoB,GAAGD,mBAAmB,IAAI,CAAC;EACvFH,mBAAmB,CAAC1B,MAAM,CAAC8C,eAAe,GACxC9D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACiE,gBAAgB,GAAGD,oBAAoB,IAAI,CAAC;EACpFL,mBAAmB,CAAC1B,MAAM,CAAC+C,eAAe,GACvC,CAAC/D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8B,kBAAkB,GAAGL,iBAAiB,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC;AAClG,CAAC;AAEM,IAAMwD,iBAAiB,GAAApE,OAAA,CAAAoE,iBAAA,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAAoE;EAAA,IAAAC,sBAAA;EAAA,IAA/DC,WAAW,GAAAF,KAAA,CAAXE,WAAW;IAAEnE,YAAY,GAAAiE,KAAA,CAAZjE,YAAY;IAAEC,eAAe,GAAAgE,KAAA,CAAfhE,eAAe;IAAEjB,aAAa,GAAAiF,KAAA,CAAbjF,aAAa;EAC1F,IAAMD,YAAY,GAAGmB,gBAAK,CAACkE,cAAc;EAEzC,IAAMhE,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMoB,aAAa,GAAG,SAAhBA,aAAaA,CAAIpB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMoF,eAAe,GAAGjE,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMkE,oBAAoB,GAAGlE,iBAAiB,CAAC,4BAA4B,CAAC;EAE5E,IAAMmE,0BAA0B,GAAGlE,aAAa,CAAC,4BAA4B,CAAC;EAC9E,IAAMmE,gBAAgB,GAAGnE,aAAa,CAAC,kBAAkB,CAAC;EAE1D,IAAMoE,gBAAgB,GAAG,IAAAvF,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACkF,MAAM,CAAC1E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC0F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EACvF,IAAME,iBAAiB,GAAG,IAAAzF,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAChDZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACkF,MAAM,CAAC1E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC4F,iBAAiB,CAAC;EAAA,GAAE,EAAE,CAAC;EAExFR,WAAW,CAACnD,MAAM,CAACA,MAAM,CAACC,SAAS,GACjC,EAAAiD,sBAAA,GAAAlE,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACkB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC7B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAkF,sBAAA,uBAA9FA,sBAAA,CACIjD,SAAS,KAAI,UAAU;EAC7BkD,WAAW,CAACnD,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACpC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACpE6E,WAAW,CAACnD,MAAM,CAACK,aAAa,GAAGrB,YAAY,CAACsB,cAAc,CAACC,KAAK,CAACC,SAAS;EAE9E2C,WAAW,CAACnD,MAAM,CAAC4D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEN,WAAW,CAACnD,MAAM,CAACyD,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAExEN,WAAW,CAACnD,MAAM,CAACS,UAAU,GAAG+C,gBAAgB,GAAGH,eAAe,IAAI,CAAC;EACvE;EACA;EACAF,WAAW,CAACnD,MAAM,CAAC6D,gBAAgB,GAAGhG,yBAAyB,CAC7DmB,YAAY,EACZjB,YAAY,EACZC,aAAa,EACb,0BACF,CAAC;EACD;;EAEA,IAAM8F,uBAAuB,GAAGP,0BAA0B,GAAGD,oBAAoB;EACjFH,WAAW,CAACnD,MAAM,CAAC+D,cAAc,GAC/BP,gBAAgB,GAAGH,eAAe,GAAG,CAAC,GACjCS,uBAAuB,GAAG,GAAG,IAAKN,gBAAgB,GAAGH,eAAe,CAAC,GACtE,CAAC,CAAC,CAAC;;EAETF,WAAW,CAACnD,MAAM,CAACgE,gBAAgB,GAAG,IAAA1B,WAAG,EAACqB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxER,WAAW,CAACnD,MAAM,CAAC2D,iBAAiB,GAAG,IAAAnB,YAAI,EAACmB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EAC1ER,WAAW,CAACnD,MAAM,CAACiE,aAAa,GAAGd,WAAW,CAACnD,MAAM,CAACgE,gBAAgB;;EAEtE;EACA,IAAME,oBAAoB,GACxBrG,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAE,gBAAgB,CAAC,GACtFH,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAE,gBAAgB,CAAC;EAE3FmF,WAAW,CAACnD,MAAM,CAACe,UAAU,GAAGmD,oBAAoB,GAAIA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;AAC5F,CAAC;AAEM,IAAMC,uBAAuB,GAAAvF,OAAA,CAAAuF,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAAC,KAAA,EAK9B;EAAA,IAAAC,sBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA;EAAA,IAJJC,iBAAiB,GAAAL,KAAA,CAAjBK,iBAAiB;IACjBzF,YAAY,GAAAoF,KAAA,CAAZpF,YAAY;IACZC,eAAe,GAAAmF,KAAA,CAAfnF,eAAe;IACfkB,SAAS,GAAAiE,KAAA,CAATjE,SAAS;EAET,IAAMpC,YAAY,GAAGmB,gBAAK,CAACkE,cAAc;EAEzC,IAAMsB,aAAa,GAAG,EAAAL,sBAAA,GAAApF,eAAe,CAACkB,SAAS,CAAC,cAAAkE,sBAAA,uBAA1BA,sBAAA,CAA6BtG,YAAY,CAAC,CAAC4G,cAAc,KAAI,CAAC;EACpF,IAAMC,iBAAiB,GAAG,EAAAN,uBAAA,GAAArF,eAAe,CAACkB,SAAS,CAAC,cAAAmE,uBAAA,uBAA1BA,uBAAA,CAA6BvG,YAAY,CAAC,CAAC8G,qBAAqB,KAAI,CAAC;EAC/F,IAAMC,YAAY,GAAG,EAAAP,uBAAA,GAAAtF,eAAe,CAACkB,SAAS,CAAC,cAAAoE,uBAAA,uBAA1BA,uBAAA,CAA6BxG,YAAY,CAAC,CAACgH,aAAa,KAAI,CAAC;EAClF,IAAM1B,eAAe,GAAG,EAAAmB,uBAAA,GAAAvF,eAAe,CAACkB,SAAS,CAAC,cAAAqE,uBAAA,uBAA1BA,uBAAA,CAA6BzG,YAAY,CAAC,CAACyF,gBAAgB,KAAI,CAAC;EAExF,IAAOrB,GAAG,GAAInD,YAAY,CAACmB,SAAS,CAAC,CAA9BgC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACsC,iBAAiB,CAACzE,MAAM,CAACmC,GAAG,CAAC7D,QAAQ,CAAC6D,GAAG,CAAC,EAAE;IACtDsC,iBAAiB,CAACzE,MAAM,CAACmC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EACxC;EAEAsC,iBAAiB,CAACzE,MAAM,CAACS,UAAU,GACjCzB,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACyF,gBAAgB,GAAGH,eAAe,IAAI,CAAC;EAE/E,IAAMa,oBAAoB,GAAGlF,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC4G,cAAc,GAAGD,aAAa;EACjGD,iBAAiB,CAACzE,MAAM,CAACgF,kBAAkB,GAAGd,oBAAoB,GAC7DA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAC/B,CAAC;EAELO,iBAAiB,CAACQ,oBAAoB,GACpCjG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8G,qBAAqB,GAAGD,iBAAiB,IAAI,CAAC;EACtFH,iBAAiB,CAACS,kBAAkB,GAClClG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACgH,aAAa,GAAGD,YAAY,IAAI,CAAC;EAEzEL,iBAAiB,CAACU,gBAAgB,GAAGnG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACoH,gBAAgB,IAAI,CAAC;AAClG,CAAC;AAEM,IAAMC,mBAAmB,GAAAxG,OAAA,CAAAwG,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAAC,KAAA,EAK1B;EAAA,IAAAC,sBAAA;EAAA,IAJJC,aAAa,GAAAF,KAAA,CAAbE,aAAa;IACbvG,YAAY,GAAAqG,KAAA,CAAZrG,YAAY;IACZC,eAAe,GAAAoG,KAAA,CAAfpG,eAAe;IACfjB,aAAa,GAAAqH,KAAA,CAAbrH,aAAa;EAEb,IAAMD,YAAY,GAAGmB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMoB,aAAa,GAAG,SAAhBA,aAAaA,CAAIpB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMqB,mBAAmB,GAAGF,iBAAiB,CAAC,sBAAsB,CAAC;EACrE,IAAMG,eAAe,GAAGH,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMI,iBAAiB,GAAGJ,iBAAiB,CAAC,oBAAoB,CAAC;EAEjE,IAAMoG,sBAAsB,GAAGpG,iBAAiB,CAAC,yBAAyB,CAAC;EAC3E,IAAMqG,oBAAoB,GAAGrG,iBAAiB,CAAC,uBAAuB,CAAC;EAEvE,IAAMQ,WAAW,GAAGP,aAAa,CAAC,kBAAkB,CAAC;EACrD,IAAMM,oBAAoB,GAAGN,aAAa,CAAC,sBAAsB,CAAC;EAClE,IAAMQ,kBAAkB,GAAGR,aAAa,CAAC,oBAAoB,CAAC;EAE9D,IAAMqG,uBAAuB,GAAGrG,aAAa,CAAC,yBAAyB,CAAC;EACxE,IAAMsG,qBAAqB,GAAGtG,aAAa,CAAC,uBAAuB,CAAC;EAEpE,IAAMoE,gBAAgB,GAAG,IAAAvF,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACkF,MAAM,CAAC1E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC0F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EAEvF8B,aAAa,CAACvF,MAAM,CAACA,MAAM,CAACC,SAAS,GACnC,EAAAqF,sBAAA,GAAAtG,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACkB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC7B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAsH,sBAAA,uBAA9FA,sBAAA,CACIrF,SAAS,KAAI,UAAU;EAC7BsF,aAAa,CAACvF,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACpC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACtEiH,aAAa,CAACvF,MAAM,CAACK,aAAa,GAAGrB,YAAY,CAACsB,cAAc,CAACC,KAAK,CAACC,SAAS;;EAEhF;EACA+E,aAAa,CAACvF,MAAM,CAACS,UAAU,GAAGd,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;;EAEjF;EACA;EACA,IAAMoB,gBAAgB,GAAGd,WAAW,GAAGL,eAAe;EACtDgG,aAAa,CAACvF,MAAM,CAACW,iBAAiB,GAAGD,gBAAgB;EACzD6E,aAAa,CAACvF,MAAM,CAACY,eAAe,GAAGF,gBAAgB;;EAEvD;EACA6E,aAAa,CAACvF,MAAM,CAAC4D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxE8B,aAAa,CAACvF,MAAM,CAACyD,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;;EAE1E;EACA,IAAMmC,wBAAwB,GAAG/F,kBAAkB,GAAGL,iBAAiB;EACvE,IAAMqG,2BAA2B,GAAGF,qBAAqB,GAAGF,oBAAoB;EAEhFF,aAAa,CAACvF,MAAM,CAACe,UAAU,GAAG6E,wBAAwB,GACrDA,wBAAwB,GAAG,CAAC,GAAI,EAAE,GACnC,CAAC;EACLL,aAAa,CAACvF,MAAM,CAAC8F,UAAU,GAAGJ,uBAAuB,GAAGF,sBAAsB;EAClFD,aAAa,CAACvF,MAAM,CAAC+F,UAAU,GAAGF,2BAA2B,GACxDA,2BAA2B,GAAG,CAAC,GAAI,EAAE,GACtC,CAAC;AACP,CAAC;AAEM,IAAMG,yBAAyB,GAAApH,OAAA,CAAAoH,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAKhC;EAAA,IAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA;EAAA,IAJJC,mBAAmB,GAAAT,KAAA,CAAnBS,mBAAmB;IACnB1H,YAAY,GAAAiH,KAAA,CAAZjH,YAAY;IACZC,eAAe,GAAAgH,KAAA,CAAfhH,eAAe;IACfkB,SAAS,GAAA8F,KAAA,CAAT9F,SAAS;EAET,IAAMpC,YAAY,GAAGmB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMG,mBAAmB,GAAG,EAAA4G,uBAAA,GAAAjH,eAAe,CAACkB,SAAS,CAAC,cAAA+F,uBAAA,uBAA1BA,uBAAA,CAA6BnI,YAAY,CAAC,CAAC4B,oBAAoB,KAAI,CAAC;EAChG,IAAMJ,eAAe,GAAG,EAAA4G,uBAAA,GAAAlH,eAAe,CAACkB,SAAS,CAAC,cAAAgG,uBAAA,uBAA1BA,uBAAA,CAA6BpI,YAAY,CAAC,CAAC2C,gBAAgB,KAAI,CAAC;EACxF,IAAMlB,iBAAiB,GAAG,EAAA4G,uBAAA,GAAAnH,eAAe,CAACkB,SAAS,CAAC,cAAAiG,uBAAA,uBAA1BA,uBAAA,CAA6BrI,YAAY,CAAC,CAAC8B,kBAAkB,KAAI,CAAC;EAC5F,IAAM8G,kBAAkB,GAAG,EAAAN,uBAAA,GAAApH,eAAe,CAACkB,SAAS,CAAC,cAAAkG,uBAAA,uBAA1BA,uBAAA,CAA6BtI,YAAY,CAAC,CAAC8E,cAAc,KAAI,CAAC;EACzF,IAAM+D,iBAAiB,GAAG,EAAAN,uBAAA,GAAArH,eAAe,CAACkB,SAAS,CAAC,cAAAmG,uBAAA,uBAA1BA,uBAAA,CAA6BvI,YAAY,CAAC,CAAC8I,aAAa,KAAI,CAAC;EACvF,IAAMC,iBAAiB,GAAG,EAAAP,uBAAA,GAAAtH,eAAe,CAACkB,SAAS,CAAC,cAAAoG,uBAAA,uBAA1BA,uBAAA,CAA6BxI,YAAY,CAAC,CAAC4E,aAAa,KAAI,CAAC;EACvF,IAAMoE,oBAAoB,GAAG,EAAAP,uBAAA,GAAAvH,eAAe,CAACkB,SAAS,CAAC,cAAAqG,uBAAA,uBAA1BA,uBAAA,CAA6BzI,YAAY,CAAC,CAACiJ,gBAAgB,KAAI,CAAC;EAC7F,IAAMC,YAAY,GAAG,EAAAR,uBAAA,GAAAxH,eAAe,CAACkB,SAAS,CAAC,cAAAsG,uBAAA,uBAA1BA,uBAAA,CAA6B1I,YAAY,CAAC,CAACmJ,aAAa,KAAI,CAAC;EAElF,IAAO/E,GAAG,GAAInD,YAAY,CAACmB,SAAS,CAAC,CAA9BgC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACuE,mBAAmB,CAAC1G,MAAM,CAACmC,GAAG,CAAC7D,QAAQ,CAAC6D,GAAG,CAAC,EAAE;IACxDuE,mBAAmB,CAAC1G,MAAM,CAACmC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EAC1C;EAEAuE,mBAAmB,CAAC1G,MAAM,CAACS,UAAU,GACnCzB,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC4B,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;EAEvF,IAAM6H,eAAe,GACnBnI,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC2C,gBAAgB,GAAGnB,eAAe,IAAI,CAAC;;EAE/E;EACAmH,mBAAmB,CAAC1G,MAAM,CAAC0C,eAAe,GAAGyE,eAAe;EAE5DT,mBAAmB,CAAC1G,MAAM,CAACyC,SAAS;EAClC;EACA,IAAAH,WAAG,EAACtD,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC0F,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAEzE,IAAMmC,wBAAwB,GAC5B5G,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8B,kBAAkB,GAAGL,iBAAiB;EAC9EkH,mBAAmB,CAAC1G,MAAM,CAAC+C,eAAe,GAAG6C,wBAAwB,GAChEA,wBAAwB,GAAG,CAAC,GAAI,EAAE,GACnC,CAAC;EAEL,IAAMwB,wBAAwB,GAC5BpI,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8E,cAAc,GAAG8D,kBAAkB;EAC3E,IAAMU,uBAAuB,GAC3BrI,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8I,aAAa,GAAGD,iBAAiB;EAEzEF,mBAAmB,CAAC1G,MAAM,CAACsH,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CACvDJ,wBAAwB,GAAGA,wBAAwB,GAAG,EAAE,GAAG,CAC7D,CAAC;EACDV,mBAAmB,CAAC1G,MAAM,CAAC4C,iBAAiB,GAAG2E,IAAI,CAACC,KAAK,CACvDH,uBAAuB,GAAGA,uBAAuB,GAAG,EAAE,GAAG,CAC3D,CAAC;EAEDX,mBAAmB,CAAC1G,MAAM,CAAC2C,aAAa,GACtC3D,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC4E,aAAa,GAAGmE,iBAAiB,IAAI,CAAC;EAC9EJ,mBAAmB,CAACe,cAAc,GAAGzI,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC2J,MAAM,IAAI,CAAC;EACtFhB,mBAAmB,CAACiB,aAAa,GAAG3I,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC6J,KAAK,IAAI,CAAC;EACpFlB,mBAAmB,CAACmB,iBAAiB,GAClCnB,mBAAmB,CAACe,cAAc,GAAGf,mBAAmB,CAACiB,aAAa,GAAI,GAAG;EAEhFjB,mBAAmB,CAACoB,iBAAiB,GACnC9I,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACiJ,gBAAgB,GAAGD,oBAAoB,IAAI,CAAC;EACpFL,mBAAmB,CAACxB,kBAAkB,GACpClG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACmJ,aAAa,GAAGD,YAAY,IAAI,CAAC;AAC3E,CAAC;AAEM,IAAMc,iBAAiB,GAAAnJ,OAAA,CAAAmJ,iBAAA,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAAoE;EAAA,IAAAC,sBAAA;EAAA,IAA/DC,WAAW,GAAAF,KAAA,CAAXE,WAAW;IAAElJ,YAAY,GAAAgJ,KAAA,CAAZhJ,YAAY;IAAEC,eAAe,GAAA+I,KAAA,CAAf/I,eAAe;IAAEjB,aAAa,GAAAgK,KAAA,CAAbhK,aAAa;EAC1F,IAAMD,YAAY,GAAGmB,gBAAK,CAACkE,cAAc;EAEzC,IAAMhE,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMoB,aAAa,GAAG,SAAhBA,aAAaA,CAAIpB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMoF,eAAe,GAAGjE,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMsF,aAAa,GAAGtF,iBAAiB,CAAC,gBAAgB,CAAC;EACzD,IAAMkE,oBAAoB,GAAGlE,iBAAiB,CAAC,4BAA4B,CAAC;EAC5E,IAAM+I,kBAAkB,GAAG/I,iBAAiB,CAAC,qBAAqB,CAAC;EACnE,IAAMgJ,gBAAgB,GAAGhJ,iBAAiB,CAAC,mBAAmB,CAAC;EAE/D,IAAMmE,0BAA0B,GAAGlE,aAAa,CAAC,4BAA4B,CAAC;EAC9E,IAAMmE,gBAAgB,GAAGnE,aAAa,CAAC,kBAAkB,CAAC;EAC1D,IAAMsF,cAAc,GAAGtF,aAAa,CAAC,gBAAgB,CAAC;EACtD,IAAMgJ,wBAAwB,GAAGhJ,aAAa,CAAC,0BAA0B,CAAC;EAC1E,IAAMiJ,mBAAmB,GAAGjJ,aAAa,CAAC,qBAAqB,CAAC;EAChE,IAAMkJ,iBAAiB,GAAGlJ,aAAa,CAAC,mBAAmB,CAAC;EAE5D6I,WAAW,CAAClI,MAAM,CAACA,MAAM,CAACC,SAAS,GACjC,EAAAgI,sBAAA,GAAAjJ,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACkB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC7B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAiK,sBAAA,uBAA9FA,sBAAA,CACIhI,SAAS,KAAI,UAAU;EAC7BiI,WAAW,CAAClI,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACpC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACpE4J,WAAW,CAAClI,MAAM,CAACK,aAAa,GAAGrB,YAAY,CAACsB,cAAc,CAACC,KAAK,CAACC,SAAS;EAE9E,IAAMiD,gBAAgB,GAAG,IAAAvF,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACkF,MAAM,CAAC1E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC0F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EACvF,IAAME,iBAAiB,GAAG,IAAAzF,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAChDZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACkF,MAAM,CAAC1E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC4F,iBAAiB,CAAC;EAAA,GAAE,EAAE,CAAC;;EAExF;EACAuE,WAAW,CAAClI,MAAM,CAAC4D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEyE,WAAW,CAAClI,MAAM,CAACyD,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAExEyE,WAAW,CAAClI,MAAM,CAACS,UAAU,GAAG+C,gBAAgB,GAAGH,eAAe;EAClE6E,WAAW,CAAClI,MAAM,CAAC6D,gBAAgB,GAAGwE,wBAAwB;;EAE9D;EACA,IAAMvE,uBAAuB,GAAGP,0BAA0B,GAAGD,oBAAoB;EAEjF4E,WAAW,CAAClI,MAAM,CAAC+D,cAAc,GAC/BP,gBAAgB,GAAGH,eAAe,GAAG,CAAC,GACjCS,uBAAuB,GAAG,GAAG,IAAKN,gBAAgB,GAAGH,eAAe,CAAC,GACtE,CAAC,CAAC,CAAC;;EAET6E,WAAW,CAAClI,MAAM,CAACgE,gBAAgB,GAAG,IAAA1B,WAAG,EAACqB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxEuE,WAAW,CAAClI,MAAM,CAAC2D,iBAAiB,GAAG,IAAAnB,YAAI,EAACmB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EAC1EuE,WAAW,CAAClI,MAAM,CAACiE,aAAa,GAAGiE,WAAW,CAAClI,MAAM,CAACgE,gBAAgB;;EAEtE;EACA,IAAME,oBAAoB,GAAGS,cAAc,GAAGD,aAAa;EAC3D,IAAM8D,uBAAuB,GAAGD,iBAAiB,GAAGH,gBAAgB;EAEpEF,WAAW,CAAClI,MAAM,CAACe,UAAU,GAAGmD,oBAAoB,GAAIA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;EAC1FgE,WAAW,CAAClI,MAAM,CAAC8F,UAAU,GAAGwC,mBAAmB,GAAGH,kBAAkB;EACxED,WAAW,CAAClI,MAAM,CAAC+F,UAAU,GAAGyC,uBAAuB,GAAIA,uBAAuB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;AAClG,CAAC;AAEM,IAAMC,uBAAuB,GAAA7J,OAAA,CAAA6J,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAAC,KAAA,EAK9B;EAAA,IAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA;EAAA,IAJJC,iBAAiB,GAAAN,KAAA,CAAjBM,iBAAiB;IACjBhK,YAAY,GAAA0J,KAAA,CAAZ1J,YAAY;IACZC,eAAe,GAAAyJ,KAAA,CAAfzJ,eAAe;IACfkB,SAAS,GAAAuI,KAAA,CAATvI,SAAS;EAET,IAAMpC,YAAY,GAAGmB,gBAAK,CAACkE,cAAc;EAEzC,IAAMC,eAAe,GAAG,EAAAsF,uBAAA,GAAA1J,eAAe,CAACkB,SAAS,CAAC,cAAAwI,uBAAA,uBAA1BA,uBAAA,CAA6B5K,YAAY,CAAC,CAACyF,gBAAgB,KAAI,CAAC;EACxF,IAAMkB,aAAa,GAAG,EAAAkE,uBAAA,GAAA3J,eAAe,CAACkB,SAAS,CAAC,cAAAyI,uBAAA,uBAA1BA,uBAAA,CAA6B7K,YAAY,CAAC,CAAC4G,cAAc,KAAI,CAAC;EACpF,IAAMsE,oBAAoB,GACxB,EAAAJ,uBAAA,GAAA5J,eAAe,CAACkB,SAAS,CAAC,cAAA0I,uBAAA,uBAA1BA,uBAAA,CAA6B9K,YAAY,CAAC,CAAC8G,qBAAqB,KAAI,CAAC;EACvE,IAAMC,YAAY,GAAG,EAAAgE,uBAAA,GAAA7J,eAAe,CAACkB,SAAS,CAAC,cAAA2I,uBAAA,uBAA1BA,uBAAA,CAA6B/K,YAAY,CAAC,CAACgH,aAAa,KAAI,CAAC;EAClF,IAAMmE,cAAc,GAAG,EAAAH,uBAAA,GAAA9J,eAAe,CAACkB,SAAS,CAAC,cAAA4I,uBAAA,uBAA1BA,uBAAA,CAA6BhL,YAAY,CAAC,CAACoL,UAAU,KAAI,CAAC;EAEjF,IAAOhH,GAAG,GAAInD,YAAY,CAACmB,SAAS,CAAC,CAA9BgC,GAAG;EACV,IAAIA,GAAG,IAAI,CAAC6G,iBAAiB,CAAChJ,MAAM,CAACmC,GAAG,CAAC7D,QAAQ,CAAC6D,GAAG,CAAC,EAAE;IACtD6G,iBAAiB,CAAChJ,MAAM,CAACmC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EACxC;EAEA6G,iBAAiB,CAAChJ,MAAM,CAACS,UAAU,GACjCzB,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACyF,gBAAgB,GAAGH,eAAe,IAAI,CAAC;;EAE/E;EACA,IAAMa,oBAAoB,GAAGlF,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC4G,cAAc,GAAGD,aAAa;EAEjGsE,iBAAiB,CAAChJ,MAAM,CAACgF,kBAAkB,GAAGd,oBAAoB,GAC7DA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAC/B,CAAC;EAEL8E,iBAAiB,CAAC/D,oBAAoB,GACpCjG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC8G,qBAAqB,GAAGoE,oBAAoB,IAAI,CAAC;EACzFD,iBAAiB,CAAC9D,kBAAkB,GAClClG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACgH,aAAa,GAAGD,YAAY,IAAI,CAAC;;EAEzE;EACA,IAAMsE,oBAAoB,GACxBpK,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACoL,UAAU,IAAID,cAAc,IAAI,CAAC,CAAC;EAE1EF,iBAAiB,CAAChJ,MAAM,CAACqJ,oBAAoB,GAAG9B,IAAI,CAACC,KAAK,CACxD4B,oBAAoB,GAAGA,oBAAoB,GAAG,EAAE,GAAG,CACrD,CAAC;EACDJ,iBAAiB,CAACM,iBAAiB,GAAGtK,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC2J,MAAM,IAAI,CAAC;EACvFsB,iBAAiB,CAACO,gBAAgB,GAAGvK,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC6J,KAAK,IAAI,CAAC;EACrFoB,iBAAiB,CAACQ,oBAAoB,GACnCR,iBAAiB,CAACM,iBAAiB,GAAGN,iBAAiB,CAACO,gBAAgB,GAAI,GAAG;EAClFP,iBAAiB,CAAC7D,gBAAgB,GAAGnG,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAACoH,gBAAgB,IAAI,CAAC;EAChG6D,iBAAiB,CAACS,kBAAkB,GAClCzK,YAAY,CAACmB,SAAS,CAAC,CAACpC,YAAY,CAAC,CAAC0L,kBAAkB,IAAI,CAAC;AACjE,CAAC"}
1
+ {"version":3,"names":["_lodash","require","_constants","getTotalValueFromBaseType","stats","sendrecvType","baseMediaType","value","_keys","default","filter","mt","includes","reduce","acc","_stats$mt","_stats$mt$sendrecvTyp","getAudioReceiverMqa","exports","_ref","_statsResults$Object$","audioReceiver","statsResults","lastMqaDataSent","isMultistream","STATS","RECEIVE_DIRECTION","getLastTotalValue","getTotalValue","lastPacketsReceived","lastPacketsLost","lastBytesReceived","lastFecPacketsReceived","lastFecPacketsDiscarded","totalPacketsReceived","packetsLost","totalBytesReceived","totalFecPacketsReceived","totalFecPacketsDiscarded","common","direction","find","mediaType","isMain","multistreamEnabled","transportType","connectionType","local","transport","rtpPackets","totalPacketsLost","mediaHopByHopLost","rtpHopByHopLost","fecRecovered","fecPackets","rtpRecovered","rtpBitrate","getAudioReceiverStreamMqa","_ref2","_lastMqaDataSent$medi","_lastMqaDataSent$medi2","_lastMqaDataSent$medi3","_lastMqaDataSent$medi4","_lastMqaDataSent$medi5","_lastMqaDataSent$medi6","_lastMqaDataSent$medi7","_lastMqaDataSent$medi8","audioReceiverStream","lastPacketsDecoded","totalSamplesDecoded","lastSamplesReceived","totalSamplesReceived","lastConcealedSamples","concealedSamples","fecPacketsReceived","fecPacketsDiscarded","csi","push","maxRtpJitter","max","meanRtpJitter","mean","rtpJitter","rtpEndToEndLost","framesDropped","renderedFrameRate","framesReceived","concealedFrames","receivedBitrate","getAudioSenderMqa","_ref3","_statsResults$Object$2","audioSender","SEND_DIRECTION","lastPacketsSent","lastPacketsLostTotal","totalPacketsLostOnReceiver","totalPacketsSent","meanRemoteJitter","concat","meanRoundTripTime","maxRemoteJitter","availableBitrate","totalPacketsLostForaMin","remoteLossRate","maxRoundTripTime","roundTripTime","totalBytesSentInaMin","getAudioSenderStreamMqa","_ref4","_lastMqaDataSent$medi9","_lastMqaDataSent$medi10","_lastMqaDataSent$medi11","_lastMqaDataSent$medi12","audioSenderStream","lastBytesSent","totalBytesSent","lastFramesEncoded","totalKeyFramesEncoded","lastFirCount","totalFirCount","transmittedBitrate","transmittedKeyFrames","requestedKeyFrames","requestedBitrate","getVideoReceiverMqa","_ref5","_statsResults$Object$3","videoReceiver","lastRtxPacketsReceived","lastRtxBytesReceived","totalRtxPacketsReceived","totalRtxBytesReceived","totalBytesReceivedInaMin","totalRtxBytesReceivedInaMin","rtxPackets","rtxBitrate","getVideoReceiverStreamMqa","_ref6","_lastMqaDataSent$medi13","_lastMqaDataSent$medi14","_lastMqaDataSent$medi15","_lastMqaDataSent$medi16","_lastMqaDataSent$medi17","_lastMqaDataSent$medi18","_lastMqaDataSent$medi19","_lastMqaDataSent$medi20","_statsResults$mediaTy","_statsResults$mediaTy2","videoReceiverStream","lastFramesReceived","lastFramesDecoded","framesDecoded","lastFramesDropped","lastKeyFramesDecoded","keyFramesDecoded","lastPliCount","totalPliCount","totalPacketLoss","totalFrameReceivedInaMin","totalFrameDecodedInaMin","receivedFrameRate","Math","round","receivedHeight","height","receivedWidth","width","receivedFrameSize","receivedKeyFrames","isActiveSpeaker","lastActiveSpeakerTimestamp","performance","now","timeOrigin","MQA_INTERVAL","getVideoSenderMqa","_ref7","_statsResults$Object$4","videoSender","lastRtxPacketsSent","lastRtxBytesSent","availableOutgoingBitrate","totalRtxPacketsSent","totalRtxBytesSent","totalRtxBytesSentInaMin","getVideoSenderStreamMqa","_ref8","_lastMqaDataSent$medi21","_lastMqaDataSent$medi22","_lastMqaDataSent$medi23","_lastMqaDataSent$medi24","_lastMqaDataSent$medi25","videoSenderStream","lastKeyFramesEncoded","lastFramesSent","framesSent","totalFrameSentInaMin","transmittedFrameRate","transmittedHeight","transmittedWidth","transmittedFrameSize","requestedFrameSize","isStreamRequested","_statsResults$mediaTy3","_statsResults$mediaTy4","lastUpdateTimestamp","lastRequestedUpdateTimestamp","isRequested"],"sources":["mqaUtil.ts"],"sourcesContent":["/* eslint-disable no-param-reassign, prefer-destructuring */\n\nimport {mean, max} from 'lodash';\n\nimport {MQA_INTERVAL, STATS} from '../constants';\n\n/**\n * Get the totals of a certain value from a certain media type.\n *\n * @param {object} stats - The large stats object.\n * @param {string} sendrecvType - \"send\" or \"recv\".\n * @param {string} baseMediaType - audio or video _and_ share or non-share.\n * @param {string} value - The value we want to get the totals of.\n * @returns {number}\n */\nconst getTotalValueFromBaseType = (\n stats: object,\n sendrecvType: string,\n baseMediaType: string,\n value: string\n): number =>\n Object.keys(stats)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc + (stats[mt]?.[sendrecvType]?.[value] || 0), 0);\n\nexport const getAudioReceiverMqa = ({\n audioReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n const lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');\n const lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');\n\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n const totalFecPacketsReceived = getTotalValue('fecPacketsReceived');\n const totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');\n\n audioReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioReceiver.common.common.isMain = !baseMediaType.includes('-share');\n audioReceiver.common.common.multistreamEnabled = isMultistream;\n audioReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // add rtpPacket info inside common as also for call analyzer\n audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // collect the packets received for the last min\n const totalPacketsLost = packetsLost - lastPacketsLost;\n audioReceiver.common.mediaHopByHopLost = totalPacketsLost;\n audioReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n const fecRecovered =\n totalFecPacketsReceived -\n lastFecPacketsReceived -\n (totalFecPacketsDiscarded - lastFecPacketsDiscarded);\n audioReceiver.common.fecPackets = totalFecPacketsReceived - lastFecPacketsReceived;\n\n audioReceiver.common.rtpRecovered = fecRecovered;\n\n audioReceiver.common.rtpBitrate = ((totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioReceiverStreamMqa = ({\n audioReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesDecoded || 0;\n const lastSamplesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalSamplesReceived || 0;\n const lastConcealedSamples = lastMqaDataSent[mediaType]?.[sendrecvType].concealedSamples || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFecPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsReceived || 0;\n const lastFecPacketsDiscarded =\n lastMqaDataSent[mediaType]?.[sendrecvType].fecPacketsDiscarded || 0;\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioReceiverStream.common.csi.includes(csi)) {\n audioReceiverStream.common.csi.push(csi);\n }\n\n audioReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n audioReceiverStream.common.maxRtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.meanRtpJitter =\n mean(statsResults[mediaType][sendrecvType].meanRtpJitter) * 1000 || 0;\n audioReceiverStream.common.rtpJitter = audioReceiverStream.common.maxRtpJitter;\n\n // Fec packets do come in as part of the FEC only for audio\n const fecRecovered =\n statsResults[mediaType][sendrecvType].fecPacketsReceived -\n lastFecPacketsReceived -\n (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);\n\n audioReceiverStream.common.rtpEndToEndLost =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;\n\n audioReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;\n audioReceiverStream.common.renderedFrameRate =\n (audioReceiverStream.common.framesDropped * 100) / 60 || 0;\n\n audioReceiverStream.common.framesReceived =\n statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;\n audioReceiverStream.common.concealedFrames =\n statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;\n audioReceiverStream.common.receivedBitrate =\n ((statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8) / 60 || 0;\n};\n\nexport const getAudioSenderMqa = ({\n audioSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n audioSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n audioSender.common.common.isMain = !baseMediaType.includes('-share');\n audioSender.common.common.multistreamEnabled = isMultistream;\n audioSender.common.transportType = statsResults.connectionType.local.transport;\n\n audioSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n audioSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;\n // audioSender.streams[0].common.rtpPackets = audioSender.common.rtpPackets;\n // From candidate-pair\n audioSender.common.availableBitrate = getTotalValueFromBaseType(\n statsResults,\n sendrecvType,\n baseMediaType,\n 'availableOutgoingBitrate'\n );\n\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n audioSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min\n\n audioSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n audioSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin =\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') -\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');\n\n audioSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getAudioSenderStreamMqa = ({\n audioSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastFramesEncoded = lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !audioSenderStream.common.csi.includes(csi)) {\n audioSenderStream.common.csi.push(csi);\n }\n\n audioSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n audioSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;\n audioSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n audioSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n};\n\nexport const getVideoReceiverMqa = ({\n videoReceiver,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsReceived = getLastTotalValue('totalPacketsReceived');\n const lastPacketsLost = getLastTotalValue('totalPacketsLost');\n const lastBytesReceived = getLastTotalValue('totalBytesReceived');\n\n const lastRtxPacketsReceived = getLastTotalValue('totalRtxPacketsReceived');\n const lastRtxBytesReceived = getLastTotalValue('totalRtxBytesReceived');\n\n const packetsLost = getTotalValue('totalPacketsLost');\n const totalPacketsReceived = getTotalValue('totalPacketsReceived');\n const totalBytesReceived = getTotalValue('totalBytesReceived');\n\n const totalRtxPacketsReceived = getTotalValue('totalRtxPacketsReceived');\n const totalRtxBytesReceived = getTotalValue('totalRtxBytesReceived');\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n\n videoReceiver.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoReceiver.common.common.multistreamEnabled = isMultistream;\n videoReceiver.common.common.isMain = !baseMediaType.includes('-share');\n videoReceiver.common.transportType = statsResults.connectionType.local.transport;\n\n // collect the packets received for the last min\n videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;\n\n // Hop by hop are numbers and not percentage so we compare on what we sent the last min\n // this is including packet lost\n const totalPacketsLost = packetsLost - lastPacketsLost;\n videoReceiver.common.mediaHopByHopLost = totalPacketsLost;\n videoReceiver.common.rtpHopByHopLost = totalPacketsLost;\n\n // calculate this values\n videoReceiver.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoReceiver.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;\n const totalRtxBytesReceivedInaMin = totalRtxBytesReceived - lastRtxBytesReceived;\n\n videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n videoReceiver.common.rtxPackets = totalRtxPacketsReceived - lastRtxPacketsReceived;\n videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin\n ? (totalRtxBytesReceivedInaMin * 8) / 60\n : 0;\n};\n\nexport const getVideoReceiverStreamMqa = ({\n videoReceiverStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n const lastPacketsReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsReceived || 0;\n const lastPacketsLost = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsLost || 0;\n const lastBytesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesReceived || 0;\n const lastFramesReceived = lastMqaDataSent[mediaType]?.[sendrecvType].framesReceived || 0;\n const lastFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].framesDecoded || 0;\n const lastFramesDropped = lastMqaDataSent[mediaType]?.[sendrecvType].framesDropped || 0;\n const lastKeyFramesDecoded = lastMqaDataSent[mediaType]?.[sendrecvType].keyFramesDecoded || 0;\n const lastPliCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalPliCount || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoReceiverStream.common.csi.includes(csi)) {\n videoReceiverStream.common.csi.push(csi);\n }\n\n videoReceiverStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;\n\n const totalPacketLoss =\n statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;\n\n // End to end packetloss is after recovery\n videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;\n\n videoReceiverStream.common.rtpJitter =\n // @ts-ignore\n max(statsResults[mediaType][sendrecvType].meanRemoteJitter) * 1000 || 0;\n\n const totalBytesReceivedInaMin =\n statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;\n videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin\n ? (totalBytesReceivedInaMin * 8) / 60\n : 0;\n\n const totalFrameReceivedInaMin =\n statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;\n const totalFrameDecodedInaMin =\n statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;\n\n videoReceiverStream.common.receivedFrameRate = Math.round(\n totalFrameReceivedInaMin ? totalFrameReceivedInaMin / 60 : 0\n );\n videoReceiverStream.common.renderedFrameRate = Math.round(\n totalFrameDecodedInaMin ? totalFrameDecodedInaMin / 60 : 0\n );\n\n videoReceiverStream.common.framesDropped =\n statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;\n videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoReceiverStream.receivedFrameSize =\n (videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth) / 256;\n\n videoReceiverStream.receivedKeyFrames =\n statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;\n videoReceiverStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;\n\n videoReceiverStream.isActiveSpeaker =\n statsResults[mediaType][sendrecvType].isActiveSpeaker ||\n ((statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) > 0 &&\n performance.now() +\n performance.timeOrigin -\n (statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp ?? 0) <\n MQA_INTERVAL);\n};\n\nexport const getVideoSenderMqa = ({\n videoSender,\n statsResults,\n lastMqaDataSent,\n baseMediaType,\n isMultistream,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const getLastTotalValue = (value: string) =>\n getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);\n const getTotalValue = (value: string) =>\n getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);\n\n const lastPacketsSent = getLastTotalValue('totalPacketsSent');\n const lastBytesSent = getLastTotalValue('totalBytesSent');\n const lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');\n const lastRtxPacketsSent = getLastTotalValue('totalRtxPacketsSent');\n const lastRtxBytesSent = getLastTotalValue('totalRtxBytesSent');\n\n const totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');\n const totalPacketsSent = getTotalValue('totalPacketsSent');\n const totalBytesSent = getTotalValue('totalBytesSent');\n const availableOutgoingBitrate = getTotalValue('availableOutgoingBitrate');\n const totalRtxPacketsSent = getTotalValue('totalRtxPacketsSent');\n const totalRtxBytesSent = getTotalValue('totalRtxBytesSent');\n\n videoSender.common.common.direction =\n statsResults[Object.keys(statsResults).find((mediaType) => mediaType.includes(baseMediaType))]\n ?.direction || 'inactive';\n videoSender.common.common.multistreamEnabled = isMultistream;\n videoSender.common.common.isMain = !baseMediaType.includes('-share');\n videoSender.common.transportType = statsResults.connectionType.local.transport;\n\n const meanRemoteJitter = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);\n const meanRoundTripTime = Object.keys(statsResults)\n .filter((mt) => mt.includes(baseMediaType))\n .reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);\n\n // @ts-ignore\n videoSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000 || 0;\n videoSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000 || 0;\n\n videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;\n videoSender.common.availableBitrate = availableOutgoingBitrate;\n\n // Calculate based on how much packets lost of received compated to how to the client sent\n const totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;\n\n videoSender.common.remoteLossRate =\n totalPacketsSent - lastPacketsSent > 0\n ? (totalPacketsLostForaMin * 100) / (totalPacketsSent - lastPacketsSent)\n : 0; // This is the packets sent with in last min || 0;\n\n videoSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000 || 0;\n videoSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000 || 0;\n videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = totalBytesSent - lastBytesSent;\n const totalRtxBytesSentInaMin = totalRtxBytesSent - lastRtxBytesSent;\n\n videoSender.common.rtpBitrate = totalBytesSentInaMin ? (totalBytesSentInaMin * 8) / 60 : 0;\n videoSender.common.rtxPackets = totalRtxPacketsSent - lastRtxPacketsSent;\n videoSender.common.rtxBitrate = totalRtxBytesSentInaMin ? (totalRtxBytesSentInaMin * 8) / 60 : 0;\n};\n\nexport const getVideoSenderStreamMqa = ({\n videoSenderStream,\n statsResults,\n lastMqaDataSent,\n mediaType,\n}) => {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n const lastPacketsSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalPacketsSent || 0;\n const lastBytesSent = lastMqaDataSent[mediaType]?.[sendrecvType].totalBytesSent || 0;\n const lastKeyFramesEncoded =\n lastMqaDataSent[mediaType]?.[sendrecvType].totalKeyFramesEncoded || 0;\n const lastFirCount = lastMqaDataSent[mediaType]?.[sendrecvType].totalFirCount || 0;\n const lastFramesSent = lastMqaDataSent[mediaType]?.[sendrecvType].framesSent || 0;\n\n const {csi} = statsResults[mediaType];\n if (csi && !videoSenderStream.common.csi.includes(csi)) {\n videoSenderStream.common.csi.push(csi);\n }\n\n videoSenderStream.common.rtpPackets =\n statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;\n\n // Calculate the outgoing bitrate\n const totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;\n\n videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin\n ? (totalBytesSentInaMin * 8) / 60\n : 0;\n\n videoSenderStream.transmittedKeyFrames =\n statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;\n videoSenderStream.requestedKeyFrames =\n statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;\n\n // From tracks //TODO: calculate a proper one\n const totalFrameSentInaMin =\n statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);\n\n videoSenderStream.common.transmittedFrameRate = Math.round(\n totalFrameSentInaMin ? totalFrameSentInaMin / 60 : 0\n );\n videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;\n videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;\n videoSenderStream.transmittedFrameSize =\n (videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth) / 256;\n videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;\n videoSenderStream.requestedFrameSize =\n statsResults[mediaType][sendrecvType].requestedFrameSize || 0;\n};\n\n/**\n * Checks if stream stats should be updated based on request status and elapsed time.\n *\n * @param {Object} statsResults - Stats results object.\n * @param {string} mediaType - Media type (e.g., 'audio', 'video').\n * @param {string} direction - Stats direction (e.g., 'send', 'receive').\n * @returns {boolean} Whether stats should be updated.\n */\nexport const isStreamRequested = (\n statsResults: any,\n mediaType: string,\n direction: string\n): boolean => {\n const now = performance.timeOrigin + performance.now();\n const lastUpdateTimestamp = statsResults[mediaType][direction]?.lastRequestedUpdateTimestamp;\n const isRequested = statsResults[mediaType][direction]?.isRequested;\n\n return isRequested || (lastUpdateTimestamp && now - lastUpdateTimestamp < MQA_INTERVAL);\n};\n"],"mappings":";;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAJA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC7BC,KAAa,EACbC,YAAoB,EACpBC,aAAqB,EACrBC,KAAa;EAAA,OAEb,IAAAC,KAAA,CAAAC,OAAA,EAAYL,KAAK,CAAC,CACfM,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,IAAAI,SAAA,EAAAC,qBAAA;IAAA,OAAKF,GAAG,IAAI,EAAAC,SAAA,GAAAX,KAAK,CAACO,EAAE,CAAC,cAAAI,SAAA,wBAAAC,qBAAA,GAATD,SAAA,CAAYV,YAAY,CAAC,cAAAW,qBAAA,uBAAzBA,qBAAA,CAA4BT,KAAK,CAAC,KAAI,CAAC,CAAC;EAAA,GAAE,CAAC,CAAC;AAAA;AAErE,IAAMU,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAAE,IAAA,EAM1B;EAAA,IAAAC,qBAAA;EAAA,IALJC,aAAa,GAAAF,IAAA,CAAbE,aAAa;IACbC,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACZC,eAAe,GAAAJ,IAAA,CAAfI,eAAe;IACfjB,aAAa,GAAAa,IAAA,CAAbb,aAAa;IACbkB,aAAa,GAAAL,IAAA,CAAbK,aAAa;EAEb,IAAMnB,YAAY,GAAGoB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIpB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMqB,aAAa,GAAG,SAAhBA,aAAaA,CAAIrB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMsB,mBAAmB,GAAGF,iBAAiB,CAAC,sBAAsB,CAAC;EACrE,IAAMG,eAAe,GAAGH,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMI,iBAAiB,GAAGJ,iBAAiB,CAAC,oBAAoB,CAAC;EACjE,IAAMK,sBAAsB,GAAGL,iBAAiB,CAAC,oBAAoB,CAAC;EACtE,IAAMM,uBAAuB,GAAGN,iBAAiB,CAAC,qBAAqB,CAAC;EAExE,IAAMO,oBAAoB,GAAGN,aAAa,CAAC,sBAAsB,CAAC;EAClE,IAAMO,WAAW,GAAGP,aAAa,CAAC,kBAAkB,CAAC;EACrD,IAAMQ,kBAAkB,GAAGR,aAAa,CAAC,oBAAoB,CAAC;EAC9D,IAAMS,uBAAuB,GAAGT,aAAa,CAAC,oBAAoB,CAAC;EACnE,IAAMU,wBAAwB,GAAGV,aAAa,CAAC,qBAAqB,CAAC;EAErEP,aAAa,CAACkB,MAAM,CAACA,MAAM,CAACC,SAAS,GACnC,EAAApB,qBAAA,GAAAE,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACmB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC9B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAc,qBAAA,uBAA9FA,qBAAA,CACIoB,SAAS,KAAI,UAAU;EAC7BnB,aAAa,CAACkB,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACrC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACtES,aAAa,CAACkB,MAAM,CAACA,MAAM,CAACK,kBAAkB,GAAGpB,aAAa;EAC9DH,aAAa,CAACkB,MAAM,CAACM,aAAa,GAAGvB,YAAY,CAACwB,cAAc,CAACC,KAAK,CAACC,SAAS;;EAEhF;EACA3B,aAAa,CAACkB,MAAM,CAACU,UAAU,GAAGf,oBAAoB,GAAGL,mBAAmB;;EAE5E;EACA;EACA,IAAMqB,gBAAgB,GAAGf,WAAW,GAAGL,eAAe;EACtDT,aAAa,CAACkB,MAAM,CAACY,iBAAiB,GAAGD,gBAAgB;EACzD7B,aAAa,CAACkB,MAAM,CAACa,eAAe,GAAGF,gBAAgB;EAEvD,IAAMG,YAAY,GAChBhB,uBAAuB,GACvBL,sBAAsB,IACrBM,wBAAwB,GAAGL,uBAAuB,CAAC;EACtDZ,aAAa,CAACkB,MAAM,CAACe,UAAU,GAAGjB,uBAAuB,GAAGL,sBAAsB;EAElFX,aAAa,CAACkB,MAAM,CAACgB,YAAY,GAAGF,YAAY;EAEhDhC,aAAa,CAACkB,MAAM,CAACiB,UAAU,GAAI,CAACpB,kBAAkB,GAAGL,iBAAiB,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC;AAC5F,CAAC;AAEM,IAAM0B,yBAAyB,GAAAvC,OAAA,CAAAuC,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAKhC;EAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAAA,IAJJC,mBAAmB,GAAAT,KAAA,CAAnBS,mBAAmB;IACnB7C,YAAY,GAAAoC,KAAA,CAAZpC,YAAY;IACZC,eAAe,GAAAmC,KAAA,CAAfnC,eAAe;IACfmB,SAAS,GAAAgB,KAAA,CAAThB,SAAS;EAET,IAAMrC,YAAY,GAAGoB,gBAAK,CAACC,iBAAiB;EAE5C,IAAM0C,kBAAkB,GAAG,EAAAT,qBAAA,GAAApC,eAAe,CAACmB,SAAS,CAAC,cAAAiB,qBAAA,uBAA1BA,qBAAA,CAA6BtD,YAAY,CAAC,CAACgE,mBAAmB,KAAI,CAAC;EAC9F,IAAMC,mBAAmB,GAAG,EAAAV,sBAAA,GAAArC,eAAe,CAACmB,SAAS,CAAC,cAAAkB,sBAAA,uBAA1BA,sBAAA,CAA6BvD,YAAY,CAAC,CAACkE,oBAAoB,KAAI,CAAC;EAChG,IAAMC,oBAAoB,GAAG,EAAAX,sBAAA,GAAAtC,eAAe,CAACmB,SAAS,CAAC,cAAAmB,sBAAA,uBAA1BA,sBAAA,CAA6BxD,YAAY,CAAC,CAACoE,gBAAgB,KAAI,CAAC;EAC7F,IAAM1C,iBAAiB,GAAG,EAAA+B,sBAAA,GAAAvC,eAAe,CAACmB,SAAS,CAAC,cAAAoB,sBAAA,uBAA1BA,sBAAA,CAA6BzD,YAAY,CAAC,CAAC+B,kBAAkB,KAAI,CAAC;EAC5F,IAAMJ,sBAAsB,GAAG,EAAA+B,sBAAA,GAAAxC,eAAe,CAACmB,SAAS,CAAC,cAAAqB,sBAAA,uBAA1BA,sBAAA,CAA6B1D,YAAY,CAAC,CAACqE,kBAAkB,KAAI,CAAC;EACjG,IAAMzC,uBAAuB,GAC3B,EAAA+B,sBAAA,GAAAzC,eAAe,CAACmB,SAAS,CAAC,cAAAsB,sBAAA,uBAA1BA,sBAAA,CAA6B3D,YAAY,CAAC,CAACsE,mBAAmB,KAAI,CAAC;EACrE,IAAM9C,mBAAmB,GAAG,EAAAoC,sBAAA,GAAA1C,eAAe,CAACmB,SAAS,CAAC,cAAAuB,sBAAA,uBAA1BA,sBAAA,CAA6B5D,YAAY,CAAC,CAAC6B,oBAAoB,KAAI,CAAC;EAChG,IAAMJ,eAAe,GAAG,EAAAoC,sBAAA,GAAA3C,eAAe,CAACmB,SAAS,CAAC,cAAAwB,sBAAA,uBAA1BA,sBAAA,CAA6B7D,YAAY,CAAC,CAAC6C,gBAAgB,KAAI,CAAC;EAExF,IAAO0B,GAAG,GAAItD,YAAY,CAACoB,SAAS,CAAC,CAA9BkC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACT,mBAAmB,CAAC5B,MAAM,CAACqC,GAAG,CAAChE,QAAQ,CAACgE,GAAG,CAAC,EAAE;IACxDT,mBAAmB,CAAC5B,MAAM,CAACqC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EAC1C;EAEAT,mBAAmB,CAAC5B,MAAM,CAACU,UAAU,GACnC3B,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC6B,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;EAEvFsC,mBAAmB,CAAC5B,MAAM,CAACuC,YAAY;EACrC;EACA,IAAAC,WAAG,EAACzD,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC2E,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEb,mBAAmB,CAAC5B,MAAM,CAACyC,aAAa,GACtC,IAAAC,YAAI,EAAC3D,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC2E,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC;EACvEb,mBAAmB,CAAC5B,MAAM,CAAC2C,SAAS,GAAGf,mBAAmB,CAAC5B,MAAM,CAACuC,YAAY;;EAE9E;EACA,IAAMzB,YAAY,GAChB/B,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACqE,kBAAkB,GACxD1C,sBAAsB,IACrBV,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACsE,mBAAmB,GAAG1C,uBAAuB,CAAC;EAEvFkC,mBAAmB,CAAC5B,MAAM,CAAC4C,eAAe,GACxC7D,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC6C,gBAAgB,GAAGpB,eAAe,GAAGuB,YAAY,IAAI,CAAC;EAE9Fc,mBAAmB,CAAC5B,MAAM,CAAC6C,aAAa,GACtC9D,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACgE,mBAAmB,GAAGD,kBAAkB,IAAI,CAAC;EACrFD,mBAAmB,CAAC5B,MAAM,CAAC8C,iBAAiB,GACzClB,mBAAmB,CAAC5B,MAAM,CAAC6C,aAAa,GAAG,GAAG,GAAI,EAAE,IAAI,CAAC;EAE5DjB,mBAAmB,CAAC5B,MAAM,CAAC+C,cAAc,GACvChE,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACkE,oBAAoB,GAAGD,mBAAmB,IAAI,CAAC;EACvFH,mBAAmB,CAAC5B,MAAM,CAACgD,eAAe,GACxCjE,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACoE,gBAAgB,GAAGD,oBAAoB,IAAI,CAAC;EACpFL,mBAAmB,CAAC5B,MAAM,CAACiD,eAAe,GACvC,CAAClE,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+B,kBAAkB,GAAGL,iBAAiB,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC;AAClG,CAAC;AAEM,IAAM0D,iBAAiB,GAAAvE,OAAA,CAAAuE,iBAAA,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAMxB;EAAA,IAAAC,sBAAA;EAAA,IALJC,WAAW,GAAAF,KAAA,CAAXE,WAAW;IACXtE,YAAY,GAAAoE,KAAA,CAAZpE,YAAY;IACZC,eAAe,GAAAmE,KAAA,CAAfnE,eAAe;IACfjB,aAAa,GAAAoF,KAAA,CAAbpF,aAAa;IACbkB,aAAa,GAAAkE,KAAA,CAAblE,aAAa;EAEb,IAAMnB,YAAY,GAAGoB,gBAAK,CAACoE,cAAc;EAEzC,IAAMlE,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIpB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMqB,aAAa,GAAG,SAAhBA,aAAaA,CAAIrB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMuF,eAAe,GAAGnE,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMoE,oBAAoB,GAAGpE,iBAAiB,CAAC,4BAA4B,CAAC;EAE5E,IAAMqE,0BAA0B,GAAGpE,aAAa,CAAC,4BAA4B,CAAC;EAC9E,IAAMqE,gBAAgB,GAAGrE,aAAa,CAAC,kBAAkB,CAAC;EAE1D,IAAMsE,gBAAgB,GAAG,IAAA1F,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACqF,MAAM,CAAC7E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC6F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EACvF,IAAME,iBAAiB,GAAG,IAAA5F,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAChDZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACqF,MAAM,CAAC7E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC+F,iBAAiB,CAAC;EAAA,GAAE,EAAE,CAAC;EAExFR,WAAW,CAACrD,MAAM,CAACA,MAAM,CAACC,SAAS,GACjC,EAAAmD,sBAAA,GAAArE,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACmB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC9B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAqF,sBAAA,uBAA9FA,sBAAA,CACInD,SAAS,KAAI,UAAU;EAC7BoD,WAAW,CAACrD,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACrC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACpEgF,WAAW,CAACrD,MAAM,CAACA,MAAM,CAACK,kBAAkB,GAAGpB,aAAa;EAC5DoE,WAAW,CAACrD,MAAM,CAACM,aAAa,GAAGvB,YAAY,CAACwB,cAAc,CAACC,KAAK,CAACC,SAAS;EAE9E4C,WAAW,CAACrD,MAAM,CAAC8D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEN,WAAW,CAACrD,MAAM,CAAC2D,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAExEN,WAAW,CAACrD,MAAM,CAACU,UAAU,GAAGgD,gBAAgB,GAAGH,eAAe,IAAI,CAAC;EACvE;EACA;EACAF,WAAW,CAACrD,MAAM,CAAC+D,gBAAgB,GAAGnG,yBAAyB,CAC7DmB,YAAY,EACZjB,YAAY,EACZC,aAAa,EACb,0BACF,CAAC;;EAED;EACA,IAAMiG,uBAAuB,GAAGP,0BAA0B,GAAGD,oBAAoB;EACjFH,WAAW,CAACrD,MAAM,CAACiE,cAAc,GAC/BP,gBAAgB,GAAGH,eAAe,GAAG,CAAC,GACjCS,uBAAuB,GAAG,GAAG,IAAKN,gBAAgB,GAAGH,eAAe,CAAC,GACtE,CAAC,CAAC,CAAC;;EAETF,WAAW,CAACrD,MAAM,CAACkE,gBAAgB,GAAG,IAAA1B,WAAG,EAACqB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxER,WAAW,CAACrD,MAAM,CAAC6D,iBAAiB,GAAG,IAAAnB,YAAI,EAACmB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EAC1ER,WAAW,CAACrD,MAAM,CAACmE,aAAa,GAAGd,WAAW,CAACrD,MAAM,CAACkE,gBAAgB;;EAEtE;EACA,IAAME,oBAAoB,GACxBxG,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAE,gBAAgB,CAAC,GACtFH,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAE,gBAAgB,CAAC;EAE3FsF,WAAW,CAACrD,MAAM,CAACiB,UAAU,GAAGmD,oBAAoB,GAAIA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;AAC5F,CAAC;AAEM,IAAMC,uBAAuB,GAAA1F,OAAA,CAAA0F,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAAC,KAAA,EAK9B;EAAA,IAAAC,sBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA;EAAA,IAJJC,iBAAiB,GAAAL,KAAA,CAAjBK,iBAAiB;IACjB5F,YAAY,GAAAuF,KAAA,CAAZvF,YAAY;IACZC,eAAe,GAAAsF,KAAA,CAAftF,eAAe;IACfmB,SAAS,GAAAmE,KAAA,CAATnE,SAAS;EAET,IAAMrC,YAAY,GAAGoB,gBAAK,CAACoE,cAAc;EAEzC,IAAMsB,aAAa,GAAG,EAAAL,sBAAA,GAAAvF,eAAe,CAACmB,SAAS,CAAC,cAAAoE,sBAAA,uBAA1BA,sBAAA,CAA6BzG,YAAY,CAAC,CAAC+G,cAAc,KAAI,CAAC;EACpF,IAAMC,iBAAiB,GAAG,EAAAN,uBAAA,GAAAxF,eAAe,CAACmB,SAAS,CAAC,cAAAqE,uBAAA,uBAA1BA,uBAAA,CAA6B1G,YAAY,CAAC,CAACiH,qBAAqB,KAAI,CAAC;EAC/F,IAAMC,YAAY,GAAG,EAAAP,uBAAA,GAAAzF,eAAe,CAACmB,SAAS,CAAC,cAAAsE,uBAAA,uBAA1BA,uBAAA,CAA6B3G,YAAY,CAAC,CAACmH,aAAa,KAAI,CAAC;EAClF,IAAM1B,eAAe,GAAG,EAAAmB,uBAAA,GAAA1F,eAAe,CAACmB,SAAS,CAAC,cAAAuE,uBAAA,uBAA1BA,uBAAA,CAA6B5G,YAAY,CAAC,CAAC4F,gBAAgB,KAAI,CAAC;EAExF,IAAOrB,GAAG,GAAItD,YAAY,CAACoB,SAAS,CAAC,CAA9BkC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACsC,iBAAiB,CAAC3E,MAAM,CAACqC,GAAG,CAAChE,QAAQ,CAACgE,GAAG,CAAC,EAAE;IACtDsC,iBAAiB,CAAC3E,MAAM,CAACqC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EACxC;EAEAsC,iBAAiB,CAAC3E,MAAM,CAACU,UAAU,GACjC3B,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC4F,gBAAgB,GAAGH,eAAe,IAAI,CAAC;EAE/E,IAAMa,oBAAoB,GAAGrF,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+G,cAAc,GAAGD,aAAa;EACjGD,iBAAiB,CAAC3E,MAAM,CAACkF,kBAAkB,GAAGd,oBAAoB,GAC7DA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAC/B,CAAC;EAELO,iBAAiB,CAACQ,oBAAoB,GACpCpG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACiH,qBAAqB,GAAGD,iBAAiB,IAAI,CAAC;EACtFH,iBAAiB,CAACS,kBAAkB,GAClCrG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACmH,aAAa,GAAGD,YAAY,IAAI,CAAC;EAEzEL,iBAAiB,CAACU,gBAAgB,GAAGtG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACuH,gBAAgB,IAAI,CAAC;AAClG,CAAC;AAEM,IAAMC,mBAAmB,GAAA3G,OAAA,CAAA2G,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAAC,KAAA,EAM1B;EAAA,IAAAC,sBAAA;EAAA,IALJC,aAAa,GAAAF,KAAA,CAAbE,aAAa;IACb1G,YAAY,GAAAwG,KAAA,CAAZxG,YAAY;IACZC,eAAe,GAAAuG,KAAA,CAAfvG,eAAe;IACfjB,aAAa,GAAAwH,KAAA,CAAbxH,aAAa;IACbkB,aAAa,GAAAsG,KAAA,CAAbtG,aAAa;EAEb,IAAMnB,YAAY,GAAGoB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIpB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMqB,aAAa,GAAG,SAAhBA,aAAaA,CAAIrB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMsB,mBAAmB,GAAGF,iBAAiB,CAAC,sBAAsB,CAAC;EACrE,IAAMG,eAAe,GAAGH,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMI,iBAAiB,GAAGJ,iBAAiB,CAAC,oBAAoB,CAAC;EAEjE,IAAMsG,sBAAsB,GAAGtG,iBAAiB,CAAC,yBAAyB,CAAC;EAC3E,IAAMuG,oBAAoB,GAAGvG,iBAAiB,CAAC,uBAAuB,CAAC;EAEvE,IAAMQ,WAAW,GAAGP,aAAa,CAAC,kBAAkB,CAAC;EACrD,IAAMM,oBAAoB,GAAGN,aAAa,CAAC,sBAAsB,CAAC;EAClE,IAAMQ,kBAAkB,GAAGR,aAAa,CAAC,oBAAoB,CAAC;EAE9D,IAAMuG,uBAAuB,GAAGvG,aAAa,CAAC,yBAAyB,CAAC;EACxE,IAAMwG,qBAAqB,GAAGxG,aAAa,CAAC,uBAAuB,CAAC;EAEpE,IAAMsE,gBAAgB,GAAG,IAAA1F,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACqF,MAAM,CAAC7E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC6F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EAEvF8B,aAAa,CAACzF,MAAM,CAACA,MAAM,CAACC,SAAS,GACnC,EAAAuF,sBAAA,GAAAzG,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACmB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC9B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAAyH,sBAAA,uBAA9FA,sBAAA,CACIvF,SAAS,KAAI,UAAU;EAC7BwF,aAAa,CAACzF,MAAM,CAACA,MAAM,CAACK,kBAAkB,GAAGpB,aAAa;EAC9DwG,aAAa,CAACzF,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACrC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACtEoH,aAAa,CAACzF,MAAM,CAACM,aAAa,GAAGvB,YAAY,CAACwB,cAAc,CAACC,KAAK,CAACC,SAAS;;EAEhF;EACAgF,aAAa,CAACzF,MAAM,CAACU,UAAU,GAAGf,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;;EAEjF;EACA;EACA,IAAMqB,gBAAgB,GAAGf,WAAW,GAAGL,eAAe;EACtDkG,aAAa,CAACzF,MAAM,CAACY,iBAAiB,GAAGD,gBAAgB;EACzD8E,aAAa,CAACzF,MAAM,CAACa,eAAe,GAAGF,gBAAgB;;EAEvD;EACA8E,aAAa,CAACzF,MAAM,CAAC8D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxE8B,aAAa,CAACzF,MAAM,CAAC2D,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;;EAE1E;EACA,IAAMmC,wBAAwB,GAAGjG,kBAAkB,GAAGL,iBAAiB;EACvE,IAAMuG,2BAA2B,GAAGF,qBAAqB,GAAGF,oBAAoB;EAEhFF,aAAa,CAACzF,MAAM,CAACiB,UAAU,GAAG6E,wBAAwB,GACrDA,wBAAwB,GAAG,CAAC,GAAI,EAAE,GACnC,CAAC;EACLL,aAAa,CAACzF,MAAM,CAACgG,UAAU,GAAGJ,uBAAuB,GAAGF,sBAAsB;EAClFD,aAAa,CAACzF,MAAM,CAACiG,UAAU,GAAGF,2BAA2B,GACxDA,2BAA2B,GAAG,CAAC,GAAI,EAAE,GACtC,CAAC;AACP,CAAC;AAEM,IAAMG,yBAAyB,GAAAvH,OAAA,CAAAuH,yBAAA,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAKhC;EAAA,IAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAAA,IAJJC,mBAAmB,GAAAX,KAAA,CAAnBW,mBAAmB;IACnB/H,YAAY,GAAAoH,KAAA,CAAZpH,YAAY;IACZC,eAAe,GAAAmH,KAAA,CAAfnH,eAAe;IACfmB,SAAS,GAAAgG,KAAA,CAAThG,SAAS;EAET,IAAMrC,YAAY,GAAGoB,gBAAK,CAACC,iBAAiB;EAE5C,IAAMG,mBAAmB,GAAG,EAAA8G,uBAAA,GAAApH,eAAe,CAACmB,SAAS,CAAC,cAAAiG,uBAAA,uBAA1BA,uBAAA,CAA6BtI,YAAY,CAAC,CAAC6B,oBAAoB,KAAI,CAAC;EAChG,IAAMJ,eAAe,GAAG,EAAA8G,uBAAA,GAAArH,eAAe,CAACmB,SAAS,CAAC,cAAAkG,uBAAA,uBAA1BA,uBAAA,CAA6BvI,YAAY,CAAC,CAAC6C,gBAAgB,KAAI,CAAC;EACxF,IAAMnB,iBAAiB,GAAG,EAAA8G,uBAAA,GAAAtH,eAAe,CAACmB,SAAS,CAAC,cAAAmG,uBAAA,uBAA1BA,uBAAA,CAA6BxI,YAAY,CAAC,CAAC+B,kBAAkB,KAAI,CAAC;EAC5F,IAAMkH,kBAAkB,GAAG,EAAAR,uBAAA,GAAAvH,eAAe,CAACmB,SAAS,CAAC,cAAAoG,uBAAA,uBAA1BA,uBAAA,CAA6BzI,YAAY,CAAC,CAACiF,cAAc,KAAI,CAAC;EACzF,IAAMiE,iBAAiB,GAAG,EAAAR,uBAAA,GAAAxH,eAAe,CAACmB,SAAS,CAAC,cAAAqG,uBAAA,uBAA1BA,uBAAA,CAA6B1I,YAAY,CAAC,CAACmJ,aAAa,KAAI,CAAC;EACvF,IAAMC,iBAAiB,GAAG,EAAAT,uBAAA,GAAAzH,eAAe,CAACmB,SAAS,CAAC,cAAAsG,uBAAA,uBAA1BA,uBAAA,CAA6B3I,YAAY,CAAC,CAAC+E,aAAa,KAAI,CAAC;EACvF,IAAMsE,oBAAoB,GAAG,EAAAT,uBAAA,GAAA1H,eAAe,CAACmB,SAAS,CAAC,cAAAuG,uBAAA,uBAA1BA,uBAAA,CAA6B5I,YAAY,CAAC,CAACsJ,gBAAgB,KAAI,CAAC;EAC7F,IAAMC,YAAY,GAAG,EAAAV,uBAAA,GAAA3H,eAAe,CAACmB,SAAS,CAAC,cAAAwG,uBAAA,uBAA1BA,uBAAA,CAA6B7I,YAAY,CAAC,CAACwJ,aAAa,KAAI,CAAC;EAElF,IAAOjF,GAAG,GAAItD,YAAY,CAACoB,SAAS,CAAC,CAA9BkC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACyE,mBAAmB,CAAC9G,MAAM,CAACqC,GAAG,CAAChE,QAAQ,CAACgE,GAAG,CAAC,EAAE;IACxDyE,mBAAmB,CAAC9G,MAAM,CAACqC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EAC1C;EAEAyE,mBAAmB,CAAC9G,MAAM,CAACU,UAAU,GACnC3B,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC6B,oBAAoB,GAAGL,mBAAmB,IAAI,CAAC;EAEvF,IAAMiI,eAAe,GACnBxI,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC6C,gBAAgB,GAAGpB,eAAe,IAAI,CAAC;;EAE/E;EACAuH,mBAAmB,CAAC9G,MAAM,CAAC4C,eAAe,GAAG2E,eAAe;EAE5DT,mBAAmB,CAAC9G,MAAM,CAAC2C,SAAS;EAClC;EACA,IAAAH,WAAG,EAACzD,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC6F,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAEzE,IAAMmC,wBAAwB,GAC5B/G,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+B,kBAAkB,GAAGL,iBAAiB;EAC9EsH,mBAAmB,CAAC9G,MAAM,CAACiD,eAAe,GAAG6C,wBAAwB,GAChEA,wBAAwB,GAAG,CAAC,GAAI,EAAE,GACnC,CAAC;EAEL,IAAM0B,wBAAwB,GAC5BzI,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACiF,cAAc,GAAGgE,kBAAkB;EAC3E,IAAMU,uBAAuB,GAC3B1I,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACmJ,aAAa,GAAGD,iBAAiB;EAEzEF,mBAAmB,CAAC9G,MAAM,CAAC0H,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CACvDJ,wBAAwB,GAAGA,wBAAwB,GAAG,EAAE,GAAG,CAC7D,CAAC;EACDV,mBAAmB,CAAC9G,MAAM,CAAC8C,iBAAiB,GAAG6E,IAAI,CAACC,KAAK,CACvDH,uBAAuB,GAAGA,uBAAuB,GAAG,EAAE,GAAG,CAC3D,CAAC;EAEDX,mBAAmB,CAAC9G,MAAM,CAAC6C,aAAa,GACtC9D,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+E,aAAa,GAAGqE,iBAAiB,IAAI,CAAC;EAC9EJ,mBAAmB,CAACe,cAAc,GAAG9I,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACgK,MAAM,IAAI,CAAC;EACtFhB,mBAAmB,CAACiB,aAAa,GAAGhJ,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACkK,KAAK,IAAI,CAAC;EACpFlB,mBAAmB,CAACmB,iBAAiB,GAClCnB,mBAAmB,CAACe,cAAc,GAAGf,mBAAmB,CAACiB,aAAa,GAAI,GAAG;EAEhFjB,mBAAmB,CAACoB,iBAAiB,GACnCnJ,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACsJ,gBAAgB,GAAGD,oBAAoB,IAAI,CAAC;EACpFL,mBAAmB,CAAC1B,kBAAkB,GACpCrG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACwJ,aAAa,GAAGD,YAAY,IAAI,CAAC;EAEzEP,mBAAmB,CAACqB,eAAe,GACjCpJ,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACqK,eAAe,IACpD,EAAAvB,qBAAA,GAAC7H,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACsK,0BAA0B,cAAAxB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,IAAI,CAAC,IAC1EyB,WAAW,CAACC,GAAG,CAAC,CAAC,GACfD,WAAW,CAACE,UAAU,KAAA1B,sBAAA,GACrB9H,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACsK,0BAA0B,cAAAvB,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,GACvE2B,uBAAa;AACrB,CAAC;AAEM,IAAMC,iBAAiB,GAAA9J,OAAA,CAAA8J,iBAAA,GAAG,SAApBA,iBAAiBA,CAAAC,KAAA,EAMxB;EAAA,IAAAC,sBAAA;EAAA,IALJC,WAAW,GAAAF,KAAA,CAAXE,WAAW;IACX7J,YAAY,GAAA2J,KAAA,CAAZ3J,YAAY;IACZC,eAAe,GAAA0J,KAAA,CAAf1J,eAAe;IACfjB,aAAa,GAAA2K,KAAA,CAAb3K,aAAa;IACbkB,aAAa,GAAAyJ,KAAA,CAAbzJ,aAAa;EAEb,IAAMnB,YAAY,GAAGoB,gBAAK,CAACoE,cAAc;EAEzC,IAAMlE,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIpB,KAAa;IAAA,OACtCJ,yBAAyB,CAACoB,eAAe,EAAElB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAChF,IAAMqB,aAAa,GAAG,SAAhBA,aAAaA,CAAIrB,KAAa;IAAA,OAClCJ,yBAAyB,CAACmB,YAAY,EAAEjB,YAAY,EAAEC,aAAa,EAAEC,KAAK,CAAC;EAAA;EAE7E,IAAMuF,eAAe,GAAGnE,iBAAiB,CAAC,kBAAkB,CAAC;EAC7D,IAAMwF,aAAa,GAAGxF,iBAAiB,CAAC,gBAAgB,CAAC;EACzD,IAAMoE,oBAAoB,GAAGpE,iBAAiB,CAAC,4BAA4B,CAAC;EAC5E,IAAMyJ,kBAAkB,GAAGzJ,iBAAiB,CAAC,qBAAqB,CAAC;EACnE,IAAM0J,gBAAgB,GAAG1J,iBAAiB,CAAC,mBAAmB,CAAC;EAE/D,IAAMqE,0BAA0B,GAAGpE,aAAa,CAAC,4BAA4B,CAAC;EAC9E,IAAMqE,gBAAgB,GAAGrE,aAAa,CAAC,kBAAkB,CAAC;EAC1D,IAAMwF,cAAc,GAAGxF,aAAa,CAAC,gBAAgB,CAAC;EACtD,IAAM0J,wBAAwB,GAAG1J,aAAa,CAAC,0BAA0B,CAAC;EAC1E,IAAM2J,mBAAmB,GAAG3J,aAAa,CAAC,qBAAqB,CAAC;EAChE,IAAM4J,iBAAiB,GAAG5J,aAAa,CAAC,mBAAmB,CAAC;EAE5DuJ,WAAW,CAAC5I,MAAM,CAACA,MAAM,CAACC,SAAS,GACjC,EAAA0I,sBAAA,GAAA5J,YAAY,CAAC,IAAAd,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAACmB,IAAI,CAAC,UAACC,SAAS;IAAA,OAAKA,SAAS,CAAC9B,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAAC,cAAA4K,sBAAA,uBAA9FA,sBAAA,CACI1I,SAAS,KAAI,UAAU;EAC7B2I,WAAW,CAAC5I,MAAM,CAACA,MAAM,CAACK,kBAAkB,GAAGpB,aAAa;EAC5D2J,WAAW,CAAC5I,MAAM,CAACA,MAAM,CAACI,MAAM,GAAG,CAACrC,aAAa,CAACM,QAAQ,CAAC,QAAQ,CAAC;EACpEuK,WAAW,CAAC5I,MAAM,CAACM,aAAa,GAAGvB,YAAY,CAACwB,cAAc,CAACC,KAAK,CAACC,SAAS;EAE9E,IAAMkD,gBAAgB,GAAG,IAAA1F,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAC/CZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACqF,MAAM,CAAC7E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC6F,gBAAgB,CAAC;EAAA,GAAE,EAAE,CAAC;EACvF,IAAME,iBAAiB,GAAG,IAAA5F,KAAA,CAAAC,OAAA,EAAYa,YAAY,CAAC,CAChDZ,MAAM,CAAC,UAACC,EAAE;IAAA,OAAKA,EAAE,CAACC,QAAQ,CAACN,aAAa,CAAC;EAAA,EAAC,CAC1CO,MAAM,CAAC,UAACC,GAAG,EAAEH,EAAE;IAAA,OAAKG,GAAG,CAACqF,MAAM,CAAC7E,YAAY,CAACX,EAAE,CAAC,CAACN,YAAY,CAAC,CAAC+F,iBAAiB,CAAC;EAAA,GAAE,EAAE,CAAC;;EAExF;EACA+E,WAAW,CAAC5I,MAAM,CAAC8D,eAAe,GAAG,IAAAtB,WAAG,EAACmB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EACtEiF,WAAW,CAAC5I,MAAM,CAAC2D,gBAAgB,GAAG,IAAAjB,YAAI,EAACiB,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC;EAExEiF,WAAW,CAAC5I,MAAM,CAACU,UAAU,GAAGgD,gBAAgB,GAAGH,eAAe;EAClEqF,WAAW,CAAC5I,MAAM,CAAC+D,gBAAgB,GAAGgF,wBAAwB;;EAE9D;EACA,IAAM/E,uBAAuB,GAAGP,0BAA0B,GAAGD,oBAAoB;EAEjFoF,WAAW,CAAC5I,MAAM,CAACiE,cAAc,GAC/BP,gBAAgB,GAAGH,eAAe,GAAG,CAAC,GACjCS,uBAAuB,GAAG,GAAG,IAAKN,gBAAgB,GAAGH,eAAe,CAAC,GACtE,CAAC,CAAC,CAAC;;EAETqF,WAAW,CAAC5I,MAAM,CAACkE,gBAAgB,GAAG,IAAA1B,WAAG,EAACqB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EACxE+E,WAAW,CAAC5I,MAAM,CAAC6D,iBAAiB,GAAG,IAAAnB,YAAI,EAACmB,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC;EAC1E+E,WAAW,CAAC5I,MAAM,CAACmE,aAAa,GAAGyE,WAAW,CAAC5I,MAAM,CAACkE,gBAAgB;;EAEtE;EACA,IAAME,oBAAoB,GAAGS,cAAc,GAAGD,aAAa;EAC3D,IAAMsE,uBAAuB,GAAGD,iBAAiB,GAAGH,gBAAgB;EAEpEF,WAAW,CAAC5I,MAAM,CAACiB,UAAU,GAAGmD,oBAAoB,GAAIA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;EAC1FwE,WAAW,CAAC5I,MAAM,CAACgG,UAAU,GAAGgD,mBAAmB,GAAGH,kBAAkB;EACxED,WAAW,CAAC5I,MAAM,CAACiG,UAAU,GAAGiD,uBAAuB,GAAIA,uBAAuB,GAAG,CAAC,GAAI,EAAE,GAAG,CAAC;AAClG,CAAC;AAEM,IAAMC,uBAAuB,GAAAxK,OAAA,CAAAwK,uBAAA,GAAG,SAA1BA,uBAAuBA,CAAAC,KAAA,EAK9B;EAAA,IAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,uBAAA;EAAA,IAJJC,iBAAiB,GAAAN,KAAA,CAAjBM,iBAAiB;IACjB3K,YAAY,GAAAqK,KAAA,CAAZrK,YAAY;IACZC,eAAe,GAAAoK,KAAA,CAAfpK,eAAe;IACfmB,SAAS,GAAAiJ,KAAA,CAATjJ,SAAS;EAET,IAAMrC,YAAY,GAAGoB,gBAAK,CAACoE,cAAc;EAEzC,IAAMC,eAAe,GAAG,EAAA8F,uBAAA,GAAArK,eAAe,CAACmB,SAAS,CAAC,cAAAkJ,uBAAA,uBAA1BA,uBAAA,CAA6BvL,YAAY,CAAC,CAAC4F,gBAAgB,KAAI,CAAC;EACxF,IAAMkB,aAAa,GAAG,EAAA0E,uBAAA,GAAAtK,eAAe,CAACmB,SAAS,CAAC,cAAAmJ,uBAAA,uBAA1BA,uBAAA,CAA6BxL,YAAY,CAAC,CAAC+G,cAAc,KAAI,CAAC;EACpF,IAAM8E,oBAAoB,GACxB,EAAAJ,uBAAA,GAAAvK,eAAe,CAACmB,SAAS,CAAC,cAAAoJ,uBAAA,uBAA1BA,uBAAA,CAA6BzL,YAAY,CAAC,CAACiH,qBAAqB,KAAI,CAAC;EACvE,IAAMC,YAAY,GAAG,EAAAwE,uBAAA,GAAAxK,eAAe,CAACmB,SAAS,CAAC,cAAAqJ,uBAAA,uBAA1BA,uBAAA,CAA6B1L,YAAY,CAAC,CAACmH,aAAa,KAAI,CAAC;EAClF,IAAM2E,cAAc,GAAG,EAAAH,uBAAA,GAAAzK,eAAe,CAACmB,SAAS,CAAC,cAAAsJ,uBAAA,uBAA1BA,uBAAA,CAA6B3L,YAAY,CAAC,CAAC+L,UAAU,KAAI,CAAC;EAEjF,IAAOxH,GAAG,GAAItD,YAAY,CAACoB,SAAS,CAAC,CAA9BkC,GAAG;EACV,IAAIA,GAAG,IAAI,CAACqH,iBAAiB,CAAC1J,MAAM,CAACqC,GAAG,CAAChE,QAAQ,CAACgE,GAAG,CAAC,EAAE;IACtDqH,iBAAiB,CAAC1J,MAAM,CAACqC,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EACxC;EAEAqH,iBAAiB,CAAC1J,MAAM,CAACU,UAAU,GACjC3B,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC4F,gBAAgB,GAAGH,eAAe,IAAI,CAAC;;EAE/E;EACA,IAAMa,oBAAoB,GAAGrF,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+G,cAAc,GAAGD,aAAa;EAEjG8E,iBAAiB,CAAC1J,MAAM,CAACkF,kBAAkB,GAAGd,oBAAoB,GAC7DA,oBAAoB,GAAG,CAAC,GAAI,EAAE,GAC/B,CAAC;EAELsF,iBAAiB,CAACvE,oBAAoB,GACpCpG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACiH,qBAAqB,GAAG4E,oBAAoB,IAAI,CAAC;EACzFD,iBAAiB,CAACtE,kBAAkB,GAClCrG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACmH,aAAa,GAAGD,YAAY,IAAI,CAAC;;EAEzE;EACA,IAAM8E,oBAAoB,GACxB/K,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAAC+L,UAAU,IAAID,cAAc,IAAI,CAAC,CAAC;EAE1EF,iBAAiB,CAAC1J,MAAM,CAAC+J,oBAAoB,GAAGpC,IAAI,CAACC,KAAK,CACxDkC,oBAAoB,GAAGA,oBAAoB,GAAG,EAAE,GAAG,CACrD,CAAC;EACDJ,iBAAiB,CAACM,iBAAiB,GAAGjL,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACgK,MAAM,IAAI,CAAC;EACvF4B,iBAAiB,CAACO,gBAAgB,GAAGlL,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACkK,KAAK,IAAI,CAAC;EACrF0B,iBAAiB,CAACQ,oBAAoB,GACnCR,iBAAiB,CAACM,iBAAiB,GAAGN,iBAAiB,CAACO,gBAAgB,GAAI,GAAG;EAClFP,iBAAiB,CAACrE,gBAAgB,GAAGtG,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACuH,gBAAgB,IAAI,CAAC;EAChGqE,iBAAiB,CAACS,kBAAkB,GAClCpL,YAAY,CAACoB,SAAS,CAAC,CAACrC,YAAY,CAAC,CAACqM,kBAAkB,IAAI,CAAC;AACjE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,iBAAiB,GAAAzL,OAAA,CAAAyL,iBAAA,GAAG,SAApBA,iBAAiBA,CAC5BrL,YAAiB,EACjBoB,SAAiB,EACjBF,SAAiB,EACL;EAAA,IAAAoK,sBAAA,EAAAC,sBAAA;EACZ,IAAMhC,GAAG,GAAGD,WAAW,CAACE,UAAU,GAAGF,WAAW,CAACC,GAAG,CAAC,CAAC;EACtD,IAAMiC,mBAAmB,IAAAF,sBAAA,GAAGtL,YAAY,CAACoB,SAAS,CAAC,CAACF,SAAS,CAAC,cAAAoK,sBAAA,uBAAlCA,sBAAA,CAAoCG,4BAA4B;EAC5F,IAAMC,WAAW,IAAAH,sBAAA,GAAGvL,YAAY,CAACoB,SAAS,CAAC,CAACF,SAAS,CAAC,cAAAqK,sBAAA,uBAAlCA,sBAAA,CAAoCG,WAAW;EAEnE,OAAOA,WAAW,IAAKF,mBAAmB,IAAIjC,GAAG,GAAGiC,mBAAmB,GAAG/B,uBAAa;AACzF,CAAC"}
@@ -8,6 +8,12 @@ export declare const emptyMqaInterval: {
8
8
  processMaximumCPU: number;
9
9
  systemAverageCPU: number;
10
10
  systemMaximumCPU: number;
11
+ screenWidth: number;
12
+ screenHeight: number;
13
+ screenResolution: number;
14
+ appWindowWidth: number;
15
+ appWindowHeight: number;
16
+ appWindowSize: number;
11
17
  };
12
18
  networkType: string;
13
19
  intervalNumber: number;
@@ -37,16 +37,24 @@ export declare class StatsAnalyzer extends EventsScope {
37
37
  successfulCandidatePair: any;
38
38
  localIpAddress: string;
39
39
  receiveSlotCallback: ReceiveSlotCallback;
40
+ isMultistream: boolean;
40
41
  /**
41
42
  * Creates a new instance of StatsAnalyzer
42
43
  * @constructor
43
44
  * @public
44
- * @param {Object} config SDK Configuration Object
45
- * @param {Function} receiveSlotCallback Callback used to access receive slots.
46
- * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
47
- * @param {Object} statsResults Default properties for stats
48
- */
49
- constructor(config: any, receiveSlotCallback?: ReceiveSlotCallback, networkQualityMonitor?: object, statsResults?: object);
45
+ * @param {Object} config - SDK Configuration Object
46
+ * @param {Function} receiveSlotCallback - Callback used to access receive slots.
47
+ * @param {Object} networkQualityMonitor - Class for assessing network characteristics (jitter, packetLoss, latency)
48
+ * @param {Object} statsResults - Default properties for stats
49
+ * @param {boolean | undefined} isMultistream - Param indicating if the media connection is multistream or not
50
+ */
51
+ constructor({ config, receiveSlotCallback, networkQualityMonitor, statsResults, isMultistream, }: {
52
+ config: any;
53
+ receiveSlotCallback: ReceiveSlotCallback;
54
+ networkQualityMonitor: any;
55
+ statsResults?: any;
56
+ isMultistream?: boolean;
57
+ });
50
58
  /**
51
59
  * Resets cumulative stats arrays.
52
60
  *
@@ -1,8 +1,9 @@
1
- export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
1
+ export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, baseMediaType, isMultistream, }: {
2
2
  audioReceiver: any;
3
3
  statsResults: any;
4
4
  lastMqaDataSent: any;
5
5
  baseMediaType: any;
6
+ isMultistream: any;
6
7
  }) => void;
7
8
  export declare const getAudioReceiverStreamMqa: ({ audioReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
8
9
  audioReceiverStream: any;
@@ -10,11 +11,12 @@ export declare const getAudioReceiverStreamMqa: ({ audioReceiverStream, statsRes
10
11
  lastMqaDataSent: any;
11
12
  mediaType: any;
12
13
  }) => void;
13
- export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, baseMediaType }: {
14
+ export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, baseMediaType, isMultistream, }: {
14
15
  audioSender: any;
15
16
  statsResults: any;
16
17
  lastMqaDataSent: any;
17
18
  baseMediaType: any;
19
+ isMultistream: any;
18
20
  }) => void;
19
21
  export declare const getAudioSenderStreamMqa: ({ audioSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
20
22
  audioSenderStream: any;
@@ -22,11 +24,12 @@ export declare const getAudioSenderStreamMqa: ({ audioSenderStream, statsResults
22
24
  lastMqaDataSent: any;
23
25
  mediaType: any;
24
26
  }) => void;
25
- export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, baseMediaType, }: {
27
+ export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, baseMediaType, isMultistream, }: {
26
28
  videoReceiver: any;
27
29
  statsResults: any;
28
30
  lastMqaDataSent: any;
29
31
  baseMediaType: any;
32
+ isMultistream: any;
30
33
  }) => void;
31
34
  export declare const getVideoReceiverStreamMqa: ({ videoReceiverStream, statsResults, lastMqaDataSent, mediaType, }: {
32
35
  videoReceiverStream: any;
@@ -34,11 +37,12 @@ export declare const getVideoReceiverStreamMqa: ({ videoReceiverStream, statsRes
34
37
  lastMqaDataSent: any;
35
38
  mediaType: any;
36
39
  }) => void;
37
- export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, baseMediaType }: {
40
+ export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, baseMediaType, isMultistream, }: {
38
41
  videoSender: any;
39
42
  statsResults: any;
40
43
  lastMqaDataSent: any;
41
44
  baseMediaType: any;
45
+ isMultistream: any;
42
46
  }) => void;
43
47
  export declare const getVideoSenderStreamMqa: ({ videoSenderStream, statsResults, lastMqaDataSent, mediaType, }: {
44
48
  videoSenderStream: any;
@@ -46,3 +50,12 @@ export declare const getVideoSenderStreamMqa: ({ videoSenderStream, statsResults
46
50
  lastMqaDataSent: any;
47
51
  mediaType: any;
48
52
  }) => void;
53
+ /**
54
+ * Checks if stream stats should be updated based on request status and elapsed time.
55
+ *
56
+ * @param {Object} statsResults - Stats results object.
57
+ * @param {string} mediaType - Media type (e.g., 'audio', 'video').
58
+ * @param {string} direction - Stats direction (e.g., 'send', 'receive').
59
+ * @returns {boolean} Whether stats should be updated.
60
+ */
61
+ export declare const isStreamRequested: (statsResults: any, mediaType: string, direction: string) => boolean;
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "3.3.1-next.1"
65
+ version: "3.3.1-next.11"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,13 +43,13 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.3.1-next.1",
47
- "@webex/plugin-rooms": "3.3.1-next.1",
48
- "@webex/test-helper-chai": "3.1.0-next.3",
49
- "@webex/test-helper-mocha": "3.1.0-next.3",
50
- "@webex/test-helper-mock-webex": "3.1.0-next.3",
51
- "@webex/test-helper-retry": "3.1.0-next.3",
52
- "@webex/test-helper-test-users": "3.1.0-next.3",
46
+ "@webex/plugin-meetings": "3.3.1-next.11",
47
+ "@webex/plugin-rooms": "3.3.1-next.3",
48
+ "@webex/test-helper-chai": "3.3.1-next.2",
49
+ "@webex/test-helper-mocha": "3.3.1-next.2",
50
+ "@webex/test-helper-mock-webex": "3.3.1-next.2",
51
+ "@webex/test-helper-retry": "3.3.1-next.2",
52
+ "@webex/test-helper-test-users": "3.3.1-next.2",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,20 +61,20 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.1.0-next.3",
65
- "@webex/internal-media-core": "2.5.1",
66
- "@webex/internal-plugin-conversation": "3.3.1-next.1",
67
- "@webex/internal-plugin-device": "3.1.0-next.3",
68
- "@webex/internal-plugin-llm": "3.3.1-next.1",
69
- "@webex/internal-plugin-mercury": "3.3.1-next.1",
70
- "@webex/internal-plugin-metrics": "3.1.0-next.3",
71
- "@webex/internal-plugin-support": "3.3.1-next.1",
72
- "@webex/internal-plugin-user": "3.1.0-next.3",
73
- "@webex/internal-plugin-voicea": "3.3.1-next.1",
74
- "@webex/media-helpers": "3.1.0-next.4",
75
- "@webex/plugin-people": "3.3.1-next.1",
76
- "@webex/plugin-rooms": "3.3.1-next.1",
77
- "@webex/webex-core": "3.1.0-next.3",
64
+ "@webex/common": "3.3.1-next.2",
65
+ "@webex/internal-media-core": "2.5.3",
66
+ "@webex/internal-plugin-conversation": "3.3.1-next.3",
67
+ "@webex/internal-plugin-device": "3.3.1-next.2",
68
+ "@webex/internal-plugin-llm": "3.3.1-next.3",
69
+ "@webex/internal-plugin-mercury": "3.3.1-next.3",
70
+ "@webex/internal-plugin-metrics": "3.3.1-next.2",
71
+ "@webex/internal-plugin-support": "3.3.1-next.3",
72
+ "@webex/internal-plugin-user": "3.3.1-next.2",
73
+ "@webex/internal-plugin-voicea": "3.3.1-next.11",
74
+ "@webex/media-helpers": "3.3.1-next.4",
75
+ "@webex/plugin-people": "3.3.1-next.3",
76
+ "@webex/plugin-rooms": "3.3.1-next.3",
77
+ "@webex/webex-core": "3.3.1-next.2",
78
78
  "ampersand-collection": "^2.0.2",
79
79
  "bowser": "^2.11.0",
80
80
  "btoa": "^1.2.1",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.3.1-next.1"
94
+ "version": "3.3.1-next.11"
95
95
  }
@@ -8,6 +8,12 @@ export const emptyMqaInterval = {
8
8
  processMaximumCPU: 0,
9
9
  systemAverageCPU: 0,
10
10
  systemMaximumCPU: 0,
11
+ screenWidth: 0,
12
+ screenHeight: 0,
13
+ screenResolution: 0,
14
+ appWindowWidth: 0,
15
+ appWindowHeight: 0,
16
+ appWindowSize: 0,
11
17
  },
12
18
  networkType: '',
13
19
  intervalNumber: 0,
@@ -126,7 +132,7 @@ export const emptyVideoReceive = {
126
132
  mariRtxEnabled: false,
127
133
  mariQosEnabled: false,
128
134
  mariLiteEnabled: false,
129
- multistreamEnabled: true, // Not avaliable
135
+ multistreamEnabled: false,
130
136
  },
131
137
  dtlsBitrate: 0, // Not avaliable
132
138
  dtlsPackets: 0, // Not avaliable
@@ -170,7 +176,7 @@ export const emptyVideoReceiveStream = {
170
176
  ssci: 0, // Not avaliable
171
177
  },
172
178
  h264CodecProfile: 'BP',
173
- isActiveSpeaker: true,
179
+ isActiveSpeaker: false,
174
180
  optimalFrameSize: 0, // Not avaliable
175
181
  receivedFrameSize: 0,
176
182
  receivedHeight: 0,
@@ -193,7 +199,7 @@ export const emptyVideoTransmit = {
193
199
  mariRtxEnabled: false,
194
200
  mariQosEnabled: false,
195
201
  mariLiteEnabled: false,
196
- multistreamEnabled: false, // Not avaliable
202
+ multistreamEnabled: false,
197
203
  },
198
204
  dtlsBitrate: 0, // Not avaliable
199
205
  dtlsPackets: 0, // Not avaliable
@@ -6317,12 +6317,13 @@ export default class Meeting extends StatelessWebexPlugin {
6317
6317
  if (this.config.stats.enableStatsAnalyzer) {
6318
6318
  // @ts-ignore - config coming from registerPlugin
6319
6319
  this.networkQualityMonitor = new NetworkQualityMonitor(this.config.stats);
6320
- this.statsAnalyzer = new StatsAnalyzer(
6320
+ this.statsAnalyzer = new StatsAnalyzer({
6321
6321
  // @ts-ignore - config coming from registerPlugin
6322
- this.config.stats,
6323
- (ssrc: number) => this.receiveSlotManager.findReceiveSlotBySsrc(ssrc),
6324
- this.networkQualityMonitor
6325
- );
6322
+ config: this.config.stats,
6323
+ receiveSlotCallback: (ssrc: number) => this.receiveSlotManager.findReceiveSlotBySsrc(ssrc),
6324
+ networkQualityMonitor: this.networkQualityMonitor,
6325
+ isMultistream: this.isMultistream,
6326
+ });
6326
6327
  this.setupStatsAnalyzerEventHandlers();
6327
6328
  this.networkQualityMonitor.on(
6328
6329
  EVENT_TRIGGERS.NETWORK_QUALITY,