/* Metro module 10865; source: stores/RTCDebugStore.tsx; dependencies: [15, 17, 18, 57, 6, 7, 4259, 1878, 661, 4291, 10866, 4406, 694, 566, 2] */ import ClassCallCheck from '../by-id/module-00006-ClassCallCheck.js'; /* Metro dependency 6 */ import CreateClass from '../by-id/module-00007-CreateClass.js'; /* Metro dependency 7 */ import PossibleConstructorReturn from '../by-id/module-00015-PossibleConstructorReturn.js'; /* Metro dependency 15 */ import Module00017 from '../by-id/module-00017.js'; /* Metro dependency 17 */ import Inherits from '../by-id/module-00018-Inherits.js'; /* Metro dependency 18 */ import Module00057 from '../by-id/module-00057.js'; /* Metro dependency 57 */ import Flux from '../external/discord_common/js/packages/flux/index.tsx'; /* Metro dependency 566 */ import UserStore from './UserStore.tsx'; /* Metro dependency 1878 */ import MediaEngineStore from './MediaEngineStore.tsx'; /* Metro dependency 4259 */ import * as FileImportTrackerModule from '../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as ConstantsModule from '../Constants.tsx'; /* Metro dependency 661 */ import * as ConstantsModule2 from '../external/discord_common/js/packages/media-engine/Constants.tsx'; /* Metro dependency 4291 */ import * as RTCDebugActionCreatorsModule from '../actions/RTCDebugActionCreators.tsx'; /* Metro dependency 10866 */ function _fun83225(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#83225, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6, offset: 0x01f11d41, size: 817 bytes, params: 8, frame: 25 const env0_0 = require; const makeStreamKey = function(a0, a1, a2) { return '' + a0 + ':' + a1 + ':' + a2; }; const makeSimulcastKey = function(a0, a1) { return '' + a0 + ':' + a1; }; const closure = function(a0, a1, a2) { return '' + a0 + ':' + a1 + ':' + a2; }; const closure2 = function(a0) { var r0; var value = a0; if (global.Array.isArray(value)) { value = value.at(-1); r0 = value?.value; } else { r0 = value; } return r0; }; const setDefaultStats2 = setDefaultStats; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const RTCDebugSections = (ConstantsModule).RTCDebugSections; let value = ConstantsModule2; const MediaEngineContextTypes = value.MediaEngineContextTypes; const env0_13 = value.Features; const env0_14 = value.SimulcastOverrideQuality; const DEFAULT = MediaEngineContextTypes.DEFAULT; const TRANSPORT = RTCDebugSections.TRANSPORT; value = closure(DEFAULT, TRANSPORT, 0); const env0_17 = {}; let Map = global.Map; let map = new Map(); const value4 = _fun83238(); const env0_20 = value4.empty(); Map = global.Map; map = new Map(); setDefaultStats2(); const Store = (Flux).Store; const value7 = _fun83243(Store); value7.displayName = 'RTCDebugStore'; const value10 = new value7(importDefault(694) /* metro dependency 694: Dispatcher */, {RTC_DEBUG_MODAL_OPEN: RTC_DEBUG_MODAL_OPEN, RTC_DEBUG_MODAL_CLOSE: function() { destroyReplayConnection(); }, RTC_DEBUG_MODAL_SET_SECTION: function(a0) { env0_16 = a0.section; }, RTC_DEBUG_MODAL_OPEN_REPLAY: RTC_DEBUG_MODAL_OPEN_REPLAY, RTC_DEBUG_MODAL_OPEN_REPLAY_AT_PATH: RTC_DEBUG_MODAL_OPEN_REPLAY_AT_PATH, RTC_DEBUG_MODAL_UPDATE_VIDEO_OUTPUT: RTC_DEBUG_MODAL_UPDATE_VIDEO_OUTPUT, RTC_DEBUG_SET_RECORDING_FLAG: function(a0) { env0_21 = a0.value; }, RTC_DEBUG_SET_SIMULCAST_OVERRIDE: RTC_DEBUG_SET_SIMULCAST_OVERRIDE_83264, VOICE_CHANNEL_SELECT: VOICE_CHANNEL_SELECT_83265, RTC_CONNECTION_VIDEO: RTC_CONNECTION_VIDEO_83266, MEDIA_ENGINE_CONNECTION_STATS: MEDIA_ENGINE_CONNECTION_STATS_83267}); (FileImportTrackerModule).fileFinishedImporting('stores/RTCDebugStore.tsx'); exports.default = value10; exports.DEFAULT_SECTION = value; exports.graphs = {'availableOutgoingBitrate': true, 'bitrate': true, 'bitrateTarget': true, 'bytesReceived': true, 'bytesSent': true, 'encoderQualityPsnr': true, 'encoderQualityVmaf': true, 'encodeUsage': true, 'frameRateDecode': true, 'frameRateEncode': true, 'frameRateInput': true, 'frameRateNetwork': true, 'frameRateRender': true, 'keyFramesEncoded': true, 'keyFramesDecoded': true, 'inboundBitrateEstimate': true, 'packetsLost': true, 'packetsReceived': true, 'packetsSent': true, 'ping': true, 'qpSum': true, 'videoEntropy': true, 'audioLevel': true, 'screenshareCapturedFps': true, 'screenshareCapturedFpsUnique': true}; exports.RTCDebugVideoOutputMap = value4; exports.keySection = closure; exports.parseSection = parseSection; exports.getLastGraphValue = closure2; function _isNativeReflectConstruct_83226() { // fn#83226, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:303, offset: 0x01f12072, size: 98 bytes, params: 1, frame: 18 var Boolean; var prototype; var valueOf; var call; var Reflect; var construct; var closure; var value; var error; try { Boolean = global.Boolean; prototype = Boolean.prototype; valueOf = prototype.valueOf; call = valueOf.call; Reflect = global.Reflect; construct = Reflect.construct; Boolean = global.Boolean; closure = function() { }; value = Reflect.apply(construct, Reflect, [Boolean, [], closure]); value = Reflect.apply(call, valueOf, [value]); var result = !value; } catch (error) { } return (_isNativeReflectConstruct_83226_isNativeReflectConstruct = function() { return !!result; })(); } function setDefaultStats() { // fn#83233, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1819, offset: 0x01f12115, size: 48 bytes, params: 1, frame: 11 const Object = global.Object; Object.values(MediaEngineContextTypes).forEach(_fun83234); function _fun83234(a0) { // fn#83234, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1872, offset: 0x01f12145, size: 20 bytes, params: 2, frame: 3 env1_17[a0] = {}; } } function destroyReplayConnection() { // fn#83235, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1887, offset: 0x01f12159, size: 35 bytes, params: 1, frame: 11 if (env0_22 != null) { env0_22.destroy(); } } function updateStats(a0) { // fn#83237, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:3144, offset: 0x01f123cb, size: 570 bytes, params: 2, frame: 44 var r20; var r19; var r7; var r26; var r28; var r33; var Date; var now; var property; var value5; var property2; var property3; var Array; var isArray; var value6; var push; var shift; var items3; var value7; var value8; let value = a1; const value2 = a2; reducibleJoin2: while (true) { if (value !== undefined) { r20 = value; break reducibleJoin2; } r20 = {}; break reducibleJoin2; } reducibleJoin4: while (true) { if (value2 !== undefined) { r19 = value2; break reducibleJoin4; } Date = global.Date; now = Date.now; value = Reflect.apply(now, Date, []); r19 = value; break reducibleJoin4; } const object = {}; const Object = global.Object; value = Object.entries(a0); let length = value.length; const value3 = 0; if (value3 < length) { r7 = value3; reducibleLoop5: while (true) { property = value[r7]; value5 = Module00057(property, 2); property = value5[value3]; property2 = value5[1]; property3 = r20[property]; Array = global.Array; isArray = Array.isArray; if (Reflect.apply(isArray, Array, [property2])) { if (typeof property2[value3] === 'object') { Array = global.Array; isArray = Array.isArray; reducibleJoin23: while (true) { if (Reflect.apply(isArray, Array, [property3])) { r28 = property3; break reducibleJoin23; } r28 = []; break reducibleJoin23; } items3 = []; object[property] = items3; length = property2.length; if (value3 < length) { r26 = value3; reducibleLoop24: while (true) { property = r28[r26]; reducibleJoin26: while (true) { if (typeof property === 'object') { r33 = property; break reducibleJoin26; } r33 = {}; break reducibleJoin26; } push = items3.push; Reflect.apply(push, items3, [updateStats(property2[r26], r33, r19)]); value7 = typeof r26 === 'bigint' ? r26 + 1n : +r26 + 1; length = property2.length; if (value7 < length) { r26 = value7; continue reducibleLoop24; } break reducibleLoop24; } } } else { object[property] = property2; } } else { value6 = typeof property2; reducibleJoin27: while (true) { reducibleJoin10: while (true) { if (value6 !== 'object') { if (property in env0_19) { if (value6 === 'number') { Array = global.Array; isArray = Array.isArray; reducibleJoin13: while (true) { if (Reflect.apply(isArray, Array, [property3])) { r26 = property3; break reducibleJoin13; } r26 = []; break reducibleJoin13; } object[property] = r26; push = r26.push; Reflect.apply(push, r26, [{value: property2, time: r19}]); length = r26.length; if (length > 600) { shift = r26.shift; Reflect.apply(shift, r26, []); break reducibleJoin27; } break reducibleJoin27; } break reducibleJoin10; } break reducibleJoin10; } if (property2 !== null) { reducibleJoin18: while (true) { reducibleJoin17: while (true) { if (typeof property3 !== 'object') { break reducibleJoin17; } if (property3 !== null) { r28 = property3; break reducibleJoin18; } break reducibleJoin17; } r28 = {}; break reducibleJoin18; } object[property] = updateStats(property2, r28, r19); break reducibleJoin27; } if (property in env0_19) { if (value6 === 'number') { Array = global.Array; isArray = Array.isArray; reducibleJoin13: while (true) { if (Reflect.apply(isArray, Array, [property3])) { r26 = property3; break reducibleJoin13; } r26 = []; break reducibleJoin13; } object[property] = r26; push = r26.push; Reflect.apply(push, r26, [{value: property2, time: r19}]); length = r26.length; if (length > 600) { shift = r26.shift; Reflect.apply(shift, r26, []); break reducibleJoin27; } break reducibleJoin27; } break reducibleJoin10; } break reducibleJoin10; } object[property] = property2; break reducibleJoin27; } } value8 = typeof r7 === 'bigint' ? r7 + 1n : +r7 + 1; length = value.length; if (value8 < length) { r7 = value8; continue reducibleLoop5; } break reducibleLoop5; } } return object; } function _fun83238() { // fn#83238, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1129, offset: 0x01f12605, size: 114 bytes, params: 1, frame: 16 return CreateClass(RTCDebugVideoOutputMap, [{key: 'put', value: value_83240}, {key: 'get', value: value_83241}], [{key: 'empty', value: value_83242}]); function RTCDebugVideoOutputMap(a0) { // fn#83239, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1140, offset: 0x01f12677, size: 36 bytes, params: 2, frame: 13 env1_8(this, RTCDebugVideoOutputMap); this.state = a0; } function value_83240(a0, a1, a2, a3) { // fn#83240, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1269, offset: 0x01f1269b, size: 156 bytes, params: 5, frame: 19 var value; var object; if (a3 === '') { object = {}; copyDataProperties(object, this.state, undefined); value = environment.__proto__; delete object[makeStreamKey(a0, a1, a2)]; } else { object = {}; value = environment.__proto__; object[makeStreamKey(a0, a1, a2)] = a3; copyDataProperties(object, this.state, undefined); } value = Object.create(RTCDebugVideoOutputMap.prototype, {constructor: {value: RTCDebugVideoOutputMap}}); const rTCDebugVideoOutputMap = new RTCDebugVideoOutputMap(); return rTCDebugVideoOutputMap instanceof Object ? rTCDebugVideoOutputMap : value; } function value_83241(a0, a1, a2) { // fn#83241, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1483, offset: 0x01f12737, size: 51 bytes, params: 4, frame: 16 const state = this.state; let value = environment.__proto__; const property = state[makeStreamKey(a0, a1, a2)]; value = null; return value != property ? property : value; } function value_83242() { // fn#83242, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1583, offset: 0x01f1276a, size: 31 bytes, params: 1, frame: 11 const value = Object.create(RTCDebugVideoOutputMap.prototype, {constructor: {value: RTCDebugVideoOutputMap}}); const rTCDebugVideoOutputMap = new RTCDebugVideoOutputMap({}); return rTCDebugVideoOutputMap instanceof Object ? rTCDebugVideoOutputMap : value; } } function _fun83243(a0) { // fn#83243, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:3731, offset: 0x01f12789, size: 251 bytes, params: 2, frame: 16 const RTCDebugStore2 = RTCDebugStore; Inherits(RTCDebugStore2, a0); return CreateClass(RTCDebugStore2, [{key: 'initialize', value: function() { this.waitFor(MediaEngineStore, UserStore); }}, {key: 'getSection', value: value_83246}, {key: 'getInboundStats', value: value_83247}, {key: 'getOutboundStats', value: value_83249}, {key: 'getAllStats', value: value_83251}, {key: 'getVideoStreams', value: value_83252}, {key: 'shouldRecordNextConnection', value: value_83253}, {key: 'getSimulcastDebugOverride', value: value_83254}]); function RTCDebugStore() { // fn#83244, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:3743, offset: 0x01f12884, size: 113 bytes, params: 1, frame: 20 const value = environment.__proto__; env1_8(this, RTCDebugStore); const value3 = env1_5(RTCDebugStore); return env1_4(this, _isNativeReflectConstruct_83226() ? global.Reflect.construct(value3, arguments, env1_5(this).constructor) : value3.apply(this, arguments)); } function value_83246() { // fn#83246, offset: 0x00df0e94, size: 9 bytes, params: 1, frame: 1 return env1_16; } function value_83247(a0, a1) { // fn#83247, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:4132, offset: 0x01f12913, size: 179 bytes, params: 3, frame: 14 const property = this.getAllStats(a1)[0]; value = undefined; const r5 = property == null || property.rtp == null ? value : property.rtp.inbound[a0]; const r4 = r5 == null ? value : r5.find(function(a0) { return a0.type === 'video'; }); const object = {}; object.codec = r4 == null ? value : r4.codec.name; object.resolution = r4 == null ? value : r4.resolution; object.bitrateEstimate = value; object.fps = getLastGraphValue(r4 == null ? value : r4.frameRateRender); return object; } function value_83249(a0) { // fn#83249, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:4463, offset: 0x01f129c6, size: 215 bytes, params: 2, frame: 17 var environment; let value = this.getAllStats(a0); let property = value[0]; const value2 = undefined; const transport = property == null ? value2 : property.transport; property = value[0]; const outbound = property == null || property.rtp == null ? value2 : property.rtp.outbound; const r4 = outbound == null ? value2 : outbound.find(function(a0) { return a0.type === 'video'; }); const object = {}; object.codec = r4 == null ? value2 : r4.codec.name; object.resolution = r4 == null ? value2 : r4.resolution; value = environment.__proto__; object.bitrateEstimate = getLastGraphValue(transport == null ? value2 : transport.availableOutgoingBitrate); object.fps = getLastGraphValue(r4 == null ? value2 : r4.frameRateEncode); return object; } function value_83251() { // fn#83251, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:4881, offset: 0x01f12a9d, size: 53 bytes, params: 1, frame: 12 let value = a0; const r3 = value !== undefined ? value : MediaEngineContextTypes.DEFAULT; const Object = global.Object; const values = Object.values; value = environment.__proto__; return Reflect.apply(values, Object, [env1_17[r3]]); } function value_83252() { // fn#83252, offset: 0x00e4253a, size: 9 bytes, params: 1, frame: 1 return env1_20; } function value_83253() { // fn#83253, offset: 0x00f854d6, size: 9 bytes, params: 1, frame: 1 return env1_21; } function value_83254(a0, a1) { // fn#83254, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:5084, offset: 0x01f12ad2, size: 66 bytes, params: 3, frame: 14 const value = environment.__proto__; const simulcastKey = makeSimulcastKey(a0, a1); const binding = env1_18; return binding.has(simulcastKey) ? env1_18.get(simulcastKey) : SimulcastOverrideQuality.NO_OVERRIDE; } } function RTC_DEBUG_MODAL_OPEN({section}) { // fn#83255, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:5263, offset: 0x01f12b14, size: 33 bytes, params: 2, frame: 2 env0_16 = section ?? env0_15; } function RTC_DEBUG_MODAL_OPEN_REPLAY() { // fn#83258, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:5493, offset: 0x01f12b58, size: 37 bytes, params: 1, frame: 11 (RTCDebugActionCreatorsModule).chooseReplayPath(); } function RTC_DEBUG_MODAL_OPEN_REPLAY_AT_PATH({path}) { // fn#83259, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:5586, offset: 0x01f12b7d, size: 206 bytes, params: 2, frame: 17 var replayConnection; const mediaEngine = MediaEngineStore.getMediaEngine(); destroyReplayConnection(); const supports = mediaEngine.supports; const CONNECTION_REPLAY = Features.CONNECTION_REPLAY; if (Reflect.apply(supports, mediaEngine, [CONNECTION_REPLAY])) { if (path.length !== 0) { replayConnection = mediaEngine.createReplayConnection(MediaEngineContextTypes.DEFAULT, path); if (replayConnection != null) { replayConnection.on((require(4406) /* metro dependency 4406: mediaEngine */).BaseConnectionEvent.Video, _fun83260); (importDefault(694) /* metro dependency 694: Dispatcher */).wait(_fun83261); } } } function _fun83260(a0, a1, a2, a3) { // fn#83260, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:5828, offset: 0x01f12c4b, size: 118 bytes, params: 5, frame: 17 (importDefault(694) /* metro dependency 694: Dispatcher */).dispatch({type: 'RTC_DEBUG_MODAL_UPDATE_VIDEO_OUTPUT', mediaEngineConnectionId: env0_0.mediaEngineConnectionId, userId: a0, videoSsrc: a3 ?? 0, streamId: a1 ?? ''}); } function _fun83261() { // fn#83261, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6029, offset: 0x01f12cc1, size: 37 bytes, params: 1, frame: 11 const value = environment.__proto__; return (RTCDebugActionCreatorsModule).open(); } } function RTC_DEBUG_MODAL_UPDATE_VIDEO_OUTPUT({mediaEngineConnectionId, userId, videoSsrc, streamId}) { // fn#83262, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6090, offset: 0x01f12ce6, size: 54 bytes, params: 2, frame: 18 env0_20 = env0_20.put(mediaEngineConnectionId, userId, videoSsrc, streamId); } function RTC_DEBUG_SET_SIMULCAST_OVERRIDE_83264({userId, context, quality}) { // fn#83264, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6304, offset: 0x01f12d2f, size: 51 bytes, params: 2, frame: 16 const binding = env0_18; binding.set(makeSimulcastKey(userId, context), quality); } function VOICE_CHANNEL_SELECT_83265({channelId}) { // fn#83265, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6430, offset: 0x01f12d62, size: 59 bytes, params: 2, frame: 10 var binding; if (channelId != null) { setDefaultStats(); binding = env0_18; binding.clear(); binding = env0_23; binding.clear(); } } function RTC_CONNECTION_VIDEO_83266(a0) { // fn#83266, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6548, offset: 0x01f12d9d, size: 69 bytes, params: 2, frame: 14 var simulcastKey; var binding; if (a0.streamId === null) { simulcastKey = makeSimulcastKey(a0.userId, a0.context); binding = env0_18; binding.set(simulcastKey, SimulcastOverrideQuality.NO_OVERRIDE); } } function MEDIA_ENGINE_CONNECTION_STATS_83267({connectionStats}) { // fn#83267, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6692, offset: 0x01f12de2, size: 61 bytes, params: 2, frame: 12 const Object = global.Object; Object.values(MediaEngineContextTypes).forEach(_fun83268); function _fun83268(a0) { // fn#83268, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6781, offset: 0x01f12e1f, size: 54 bytes, params: 2, frame: 12 const env0_0 = a0; connectionStats.filter(_fun83269).forEach(_fun83270); function _fun83269({context}) { // fn#83269, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6795, offset: 0x01f12e55, size: 21 bytes, params: 2, frame: 2 return context === env0_0; } function _fun83270({stats}, a1) { // fn#83270, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:6827, offset: 0x01f12e6a, size: 442 bytes, params: 3, frame: 24 var screenshare; var r4; var binding; var value2; var value3; var value4; var property2; var property3; var userStoreBinding; var value5; var value6; var value7; var value8; var property5; var value9; var object; let object2 = {}; object2.context = env0_0; object2.stats = stats; object2.index = a1; const context = object2.context; stats = object2.stats; const index = object2.index; const property = env2_17[context]; if (stats != null) { binding = env2_16; value2 = binding.split(':'); value3 = undefined; value4 = env2_7(value2, 3); property2 = value4[0]; property3 = value4[1]; if (property2 === context) { if (global.parseInt(value4[2]) === index) { userStoreBinding = UserStore; if (userStoreBinding.getUser(property3) != null) { value5 = global.Object.keys(stats.rtp.inbound); if (value5.includes(property3)) { } } } } value6 = global.Date.now(); screenshare = stats.screenshare; if (screenshare == null) { r4 = stats; } else { value7 = '' + context + ':' + index; binding = env2_23; value8 = binding.get(value7); property5 = property[index]; screenshare = property5 == null ? value3 : property5.screenshare; binding = env2_23; binding.set(value7, value6); if (value8 == null) { r4 = stats; } else if (screenshare == null) { r4 = stats; } else { value9 = (value6 - value8) / 1000; if (value9 > 0) { object2 = {}; copyDataProperties(object2, stats, undefined); object = {}; copyDataProperties(object, stats.screenshare, undefined); copyDataProperties(object, computeScreenshareFps(stats.screenshare, screenshare, value9), undefined); object2['screenshare'] = object; r4 = object2; } else { r4 = stats; } } } property[index] = updateStats(r4, property[index], value6); } else { delete property[index]; } } } } function parseSection(a0) { // fn#83271, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:7584, offset: 0x01f13024, size: 61 bytes, params: 2, frame: 13 let value = a0.split(':'); value = Module00057(value, 2); return {context: value[0], section: value[1]}; } } function computeScreenshareFps({videohookFrames, hybridDxgiFrames, hybridGdiFrames, hybridVideohookFrames, hybridGraphicsCaptureFrames, quartzFrames, screenCaptureKitFrames, hybridDxgiFramesUnique, hybridGdiBitBltFramesUnique, hybridGdiPrintWindowFramesUnique, hybridVideohookFramesUnique, hybridGraphicsCaptureFramesUnique}, {videohookFrames, hybridDxgiFrames, hybridGdiFrames, hybridVideohookFrames, hybridGraphicsCaptureFrames, quartzFrames, screenCaptureKitFrames, hybridDxgiFramesUnique, hybridGdiBitBltFramesUnique, hybridGdiPrintWindowFramesUnique, hybridVideohookFramesUnique, hybridGraphicsCaptureFramesUnique}, a2) { // fn#83236, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11051:1952, offset: 0x01f1217c, size: 591 bytes, params: 4, frame: 20 const value7 = (videohookFrames ?? 0) + (hybridDxgiFrames ?? 0) + (hybridGdiFrames ?? 0) + (hybridVideohookFrames ?? 0) + (hybridGraphicsCaptureFrames ?? 0) + (quartzFrames ?? 0) + (screenCaptureKitFrames ?? 0); const value13 = (videohookFrames ?? 0) + (hybridDxgiFrames ?? 0) + (hybridGdiFrames ?? 0) + (hybridVideohookFrames ?? 0) + (hybridGraphicsCaptureFrames ?? 0) + (quartzFrames ?? 0) + (screenCaptureKitFrames ?? 0); const value17 = (hybridDxgiFramesUnique ?? 0) + (hybridGdiBitBltFramesUnique ?? 0) + (hybridGdiPrintWindowFramesUnique ?? 0) + (hybridVideohookFramesUnique ?? 0) + (hybridGraphicsCaptureFramesUnique ?? 0); const value21 = (hybridDxgiFramesUnique ?? 0) + (hybridGdiBitBltFramesUnique ?? 0) + (hybridGdiPrintWindowFramesUnique ?? 0) + (hybridVideohookFramesUnique ?? 0) + (hybridGraphicsCaptureFramesUnique ?? 0); const object = {}; let Math = global.Math; object.screenshareCapturedFps = Math.max(0, (value7 - value13) / a2); Math = global.Math; object.screenshareCapturedFpsUnique = Math.max(0, (value17 - value21) / a2); return object; } global.__d(_fun83225, 10865, [15, 17, 18, 57, 6, 7, 4259, 1878, 661, 4291, 10866, 4406, 694, 566, 2]) /* metro module 10865, dependencies: [15, 17, 18, 57, 6, 7, 4259, 1878, 661, 4291, 10866, 4406, 694, 566, 2] */;