/* Metro module 12502; source: modules/gateway/GatewaySocketAnalytics.tsx; dependencies: [29, 1878, 661, 20, 14, 683, 2] */ function _fun95253(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#95253, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:6, offset: 0x02136c26, size: 304 bytes, params: 8, frame: 19 const env0_2 = ['guilds', 'merged_presences', 'merged_members', 'read_state', 'private_channels', 'user_guild_settings', 'user_settings', 'user_settings_proto', 'experiments', 'guild_experiments', 'relationships', 'users']; const env0_3 = ['features']; const env0_4 = ['threads', 'guild_scheduled_events']; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_5 = importDefault(29) /* metro dependency 29 */; const userStore = importDefault(1878) /* metro dependency 1878: UserStore */; const constantsModule = require(661) /* metro dependency 661: Constants */; const env0_7 = constantsModule.AnalyticEvents; const env0_8 = constantsModule.ChannelTypes; (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/gateway/GatewaySocketAnalytics.tsx'); exports.reportDevtoolsEvent = function() { }; exports.logReadyPayloadReceived = logReadyPayloadReceived; exports.getConnectionPath = getConnectionPath; exports.getReadyPayloadByteSizeAnalytics = getReadyPayloadByteSizeAnalytics; exports.createResumeAnalytics = function(a0) { var value = a0; var object = {'connectTime': null, 'numEvents': 0, 'largestWaitTime': 0, 'dispatchTime': 0, 'totalWaitTime': 0, 'initialWaitTime': 0}; object.connectTime = value ?? 0; object.startTime = global.performance.now(); object.lastUpdateTime = global.performance.now(); return object; }; exports.logResumeAnalytics = logResumeAnalytics; } function prettyPrintTrace_(a0, a1) { // fn#95254, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:424, offset: 0x02136d56, size: 173 bytes, params: 3, frame: 29 var r2; var r12; var r0; var property; var micros; var value4; var HermesInternal; var concat; var value5; var prettyPrintTrace_Binding; var calls; var value6; if (a0 == null) { return ''; } let length = a0.length; let value = 0; const value2 = ''; if (value < length) { r2 = value2; r12 = value; reducibleLoop2: while (true) { property = a0[r12]; value = r12 + 1; micros = a0[value].micros; value4 = micros / 1000; HermesInternal = global.HermesInternal; concat = HermesInternal.concat; value5 = r2 + ('\n' + a1 + property + ': ' + value4); prettyPrintTrace_Binding = prettyPrintTrace_; calls = a0[value].calls; value = value5 + prettyPrintTrace_Binding(calls, a1 + '| '); value6 = r12 + 2; length = a0.length; if (value6 < length) { r2 = value; r12 = value6; continue reducibleLoop2; } r0 = value; break reducibleLoop2; } } else { r0 = value2; } return r0; } function eachTraceCall(a0, a1) { // fn#95255, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:602, offset: 0x02136e03, size: 105 bytes, params: 3, frame: 19 var r5; var length; var value; var value2; var property; var property2; var micros; var eachTraceCallBinding; var calls; reducibleJoin4: while (true) { if (a0 == null) { break reducibleJoin4; } length = a0.length; value = 0; if (!(length > value)) { break reducibleJoin4; } length = a0.length; value2 = environment; if (!(value < length)) { break reducibleJoin4; } r5 = value; reducibleLoop3: while (true) { property = a0[r5]; property2 = a0[r5 + 1]; micros = property2.micros; a1(property, micros); eachTraceCallBinding = eachTraceCall; calls = property2.calls; eachTraceCallBinding(calls, a1); value = r5 + 2; length = a0.length; if (value < length) { r5 = value; continue reducibleLoop3; } break reducibleJoin4; } } } function getReadyPayloadSizeAnalytics({guilds}) { // fn#95256, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:742, offset: 0x02136e6c, size: 72 bytes, params: 2, frame: 12 guilds.forEach(function(a0) { var r2; if (!a0.unavailable) { r2 = a0.data_mode === 'partial' ? a0.partial_updates.channels : a0.channels; if (r2 != null && r2.forEach != null) { r2.forEach(_fun95258); } } }); return {num_guilds: guilds.length, num_guild_channels: 0, num_guild_category_channels: 0}; } function logReadyPayloadReceived(a0, a1, a2, a3, a4) { // fn#95260, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1228, offset: 0x02136f44, size: 503 bytes, params: 6, frame: 23 var defaultImport; var addDetail; var Math; let value = getReadyPayloadTraceAnalytics(a1); if (a3 != null) { defaultImport = importDefault(20) /* metro dependency 20: AppStartPerformance */; addDetail = defaultImport.addDetail; Math = global.Math; Reflect.apply(addDetail, defaultImport, ['payload_size(kb)', Math.round(a3.uncompressed_byte_size / 1024)]); } const defaultImport2 = importDefault(20) /* metro dependency 20: AppStartPerformance */; defaultImport2.addDetail('server_time(ms)', value.identify_total_server_duration_ms ?? 0); const object2 = {}; copyDataProperties(object2, a3, undefined); copyDataProperties(object2, value, undefined); copyDataProperties(object2, getReadyPayloadSizeAnalytics(a1), undefined); copyDataProperties(object2, a4, undefined); object2['duration_ms_since_identify_start'] = a2 - a0.identifyStartTime; object2['duration_ms_since_connection_start'] = a2 - a0.connectionStartTime; const Date = global.Date; object2['duration_ms_since_emit_start'] = Date.now() - a2; object2['is_reconnect'] = a0.hasConnectedOnce; object2['is_fast_connect'] = a0.isFastConnect; object2['did_force_clear_guild_hashes'] = a0.didForceClearGuildHashes; object2['identify_uncompressed_byte_size'] = a0.identifyUncompressedByteSize; object2['identify_compressed_byte_size'] = a0.identifyCompressedByteSize; const hadCacheAtStartup = a0.analytics.hadCacheAtStartup; object2['had_cache_at_startup'] = hadCacheAtStartup != null && hadCacheAtStartup; const usedCacheAtStartup = a0.analytics.usedCacheAtStartup; object2['used_cache_at_startup'] = usedCacheAtStartup != null && usedCacheAtStartup; (importDefault(14) /* metro dependency 14: TTITracker */).attachReadyPayloadProperties(object2); value = importDefault(683) /* metro dependency 683: AnalyticsUtils */; const track = value.track; const READY_PAYLOAD_RECEIVED = AnalyticEvents.READY_PAYLOAD_RECEIVED; Reflect.apply(track, value, [READY_PAYLOAD_RECEIVED, object2, {logEventProperties: true}]); } function getConnectionPath(a0) { // fn#95263, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:2632, offset: 0x021372ad, size: 147 bytes, params: 2, frame: 18 var r8; var r2; var r0; var _trace; var value3; var property; var value4; var value5; var prettyPrintTrace_Binding; var JSON; var parse; var value6; var error; var join; let value = undefined; reducibleJoin3: while (true) { reduciblePort22: while (true) { exceptionLanding21: while (true) { try { _trace = a0._trace; } catch (error) { break exceptionLanding21; } break reducibleJoin3; } break reduciblePort22; } _trace = a0._trace; value = '???'; reducibleJoin24: while (true) { if (_trace != null) { _trace = a0._trace; join = _trace.join; value = Reflect.apply(join, _trace, [' -> ']); r0 = value; break reducibleJoin24; } r0 = value; break reducibleJoin24; } return r0; } const value2 = null; try { value3 = value2 == _trace; } catch (error) { break exceptionLanding21; } reducibleJoin8: while (true) { if (value3) { r8 = value; break reducibleJoin8; } try { property = _trace[0]; } catch (error) { break exceptionLanding21; } r8 = property; break reducibleJoin8; } try { value4 = value2 == r8; } catch (error) { break exceptionLanding21; } reducibleJoin18: while (true) { if (value4) { r2 = value2; break reducibleJoin18; } value5 = environment; try { prettyPrintTrace_Binding = prettyPrintTrace_; } catch (error) { break exceptionLanding21; } try { JSON = global.JSON; } catch (error) { break exceptionLanding21; } try { parse = JSON.parse; } catch (error) { break exceptionLanding21; } try { value6 = Reflect.apply(parse, JSON, [r8]); } catch (error) { break exceptionLanding21; } try { value = prettyPrintTrace_Binding(value6, ''); } catch (error) { break exceptionLanding21; } r2 = value; break reducibleJoin18; } try { value = value2 != r2; } catch (error) { break exceptionLanding21; } if (value) { return r2; } _trace = a0._trace; value = '???'; reducibleJoin24: while (true) { if (_trace != null) { _trace = a0._trace; join = _trace.join; value = Reflect.apply(join, _trace, [' -> ']); r0 = value; break reducibleJoin24; } r0 = value; break reducibleJoin24; } return r0; } function getReadyPayloadByteSizeAnalytics(a0) { // fn#95264, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:2909, offset: 0x02137340, size: 914 bytes, params: 2, frame: 38 const Math = global.Math; if (Math.random() > 0.01) { return undefined; } let Date = global.Date; value = Date.now(); const guilds = a0.guilds; const merged_presences = a0.merged_presences; const merged_members = a0.merged_members; const read_state = a0.read_state; const private_channels = a0.private_channels; const user_guild_settings = a0.user_guild_settings; const user_settings = a0.user_settings; const user_settings_proto = a0.user_settings_proto; const experiments = a0.experiments; const guild_experiments = a0.guild_experiments; const relationships = a0.relationships; const users = a0.users; const binding = env0_5; const value3 = undefined; const value4 = binding(a0, env0_2); guilds.forEach(_fun95265); const object2 = {}; let JSON = global.JSON; let stringify = JSON.stringify; let length = Reflect.apply(stringify, JSON, [(merged_presences == null ? value3 : merged_presences.friends) ?? []]).length; object2.presences_size = length; JSON = global.JSON; object2.users_size = JSON.stringify(users).length; JSON = global.JSON; object2.read_states_size = JSON.stringify(read_state).length; JSON = global.JSON; object2.private_channels_size = JSON.stringify(private_channels).length; JSON = global.JSON; stringify = JSON.stringify; const value5 = ''; object2.user_settings_size = Reflect.apply(stringify, JSON, [user_settings ?? value5]).length + (user_settings_proto ?? value5).length; JSON = global.JSON; length = JSON.stringify(experiments ?? []).length; JSON = global.JSON; object2.experiments_size = length + JSON.stringify(guild_experiments ?? []).length; JSON = global.JSON; object2.user_guild_settings_size = JSON.stringify(user_guild_settings).length; JSON = global.JSON; object2.relationships_size = JSON.stringify(relationships).length; JSON = global.JSON; object2.remaining_data_size = JSON.stringify(value4 ?? ({})).length; JSON = global.JSON; object2.guild_channels_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_members_size = JSON.stringify(merged_members ?? []).length; JSON = global.JSON; object2.guild_presences_size = JSON.stringify((merged_presences == null ? value3 : merged_presences.guilds) ?? []).length; JSON = global.JSON; object2.guild_roles_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_emojis_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_threads_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_stickers_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_events_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_features_size = JSON.stringify([]).length; JSON = global.JSON; object2.guild_remaining_data_size = JSON.stringify([]).length; Date = global.Date; object2.size_metrics_duration_ms = Date.now() - value; return object2; } function logResumeAnalytics(a0) { // fn#95267, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:5050, offset: 0x02137863, size: 338 bytes, params: 2, frame: 20 var Math; var defaultImport; var track; var CONNECTION_RESUMED; var object2; const currentUser = UserStore.getCurrentUser(); if (!((currentUser == null || !currentUser.isStaff()) && global.Math.random() < 0.5)) { defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */; track = defaultImport.track; CONNECTION_RESUMED = AnalyticEvents.CONNECTION_RESUMED; object2 = {}; object2.connect_time_ms = a0.connectTime; Math = global.Math; object2.resume_time_ms = Math.floor(global.performance.now() - a0.startTime); object2.num_events = a0.numEvents; Math = global.Math; object2.largest_wait_time_ms = Math.floor(a0.largestWaitTime); Math = global.Math; object2.initial_wait_time_ms = Math.floor(a0.initialWaitTime); Math = global.Math; object2.total_wait_time_ms = Math.floor(a0.totalWaitTime); Math = global.Math; object2.total_dispatch_time_ms = Math.floor(a0.dispatchTime); Reflect.apply(track, defaultImport, [CONNECTION_RESUMED, object2, {logEventProperties: true}]); } } function _fun95257(a0) { // fn#95257, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:822, offset: 0x02136eb4, size: 90 bytes, params: 2, frame: 12 var channels; if (!a0.unavailable) { channels = a0.data_mode === 'partial' ? a0.partial_updates.channels : a0.channels; if (channels != null && channels.forEach != null) { channels.forEach(_fun95258); } } } function getReadyPayloadTraceAnalytics({_trace}) { // fn#95261, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1284, owner: logReadyPayloadReceived.getReadyPayloadTraceAnalytics, offset: 0x0213713b, size: 254 bytes, params: 2, frame: 20 var environment; var r7; var r5; var r3; var JSON; var value; var value2; var property; var value3; var value4; var value5; var value6; var value7; var value8; var Math; var floor; var micros; var value9; var value10; var value11; var eachTraceCallBinding; var closure; var error; const object2 = {}; try { JSON = global.JSON; value = JSON.parse(_trace); value2 = 0; property = value[value2]; value3 = property != null; if (value3) { property = value[value2]; value4 = property !== ''; r7 = value4; } else { r7 = value3; } if (r7) { property = value[value2]; value5 = typeof property === 'string'; r5 = value5; } else { r5 = r7; } if (r5) { property = value[value2]; value6 = property.startsWith('gateway-'); r3 = value6; } else { r3 = r5; } if (r3) { property = value[1]; value7 = typeof property !== 'object'; if (value7) { r3 = value2; } else { property = value[1]; value8 = 'micros' in property; if (value8) { Math = global.Math; floor = Math.floor; property = value[1]; micros = property.micros; value9 = micros / 1000; value10 = Reflect.apply(floor, Math, [value9]); r3 = value10; } else { r3 = value2; } } object2.identify_total_server_duration_ms = r3; } value11 = environment.__proto__; eachTraceCallBinding = eachTraceCall; closure = _fun95262; eachTraceCallBinding(value, closure); } catch (error) { } return object2; } function _fun95265(a0) { // fn#95265, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:3290, offset: 0x021376d2, size: 320 bytes, params: 2, frame: 21 var r4; var features; var value; var binding; var value2; var threads; var guild_scheduled_events; var push; var data_mode; if (!a0.unavailable) { r4 = a0.properties ?? ({}); features = r4.features; value = environment.__proto__; binding = env1_5; value2 = binding(r4, env1_3); threads = a0.threads; guild_scheduled_events = a0.guild_scheduled_events; value = binding(a0, env1_4); binding = env0_0; push = binding.push; data_mode = a0.data_mode; Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.channels : a0.channels]); binding = env0_1; push = binding.push; data_mode = a0.data_mode; Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.roles : a0.roles]); binding = env0_2; push = binding.push; data_mode = a0.data_mode; Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.emojis : a0.emojis]); binding = env0_3; binding.push(threads); binding = env0_4; push = binding.push; data_mode = a0.data_mode; Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.stickers : a0.stickers]); binding = env0_5; binding.push(features); binding = env0_6; binding.push(guild_scheduled_events); binding = env0_7; binding.push(value, value2); } } function _fun95258({type}) { // fn#95258, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:950, offset: 0x02136f0e, size: 54 bytes, params: 2, frame: 3 let binding = env1_1; env1_1 = typeof binding === 'bigint' ? binding + 1n : +binding + 1; const GUILD_CATEGORY = ChannelTypes.GUILD_CATEGORY; if (type === GUILD_CATEGORY) { binding = env1_0; env1_0 = typeof binding === 'bigint' ? binding + 1n : +binding + 1; } } function _fun95262(a0, a1) { // fn#95262, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1567, offset: 0x02137239, size: 116 bytes, params: 3, frame: 13 if (a0 === 'start_session') { env0_0.identify_api_duration_ms = global.Math.floor(a1 / 1000); } else if (a0 === 'guilds_connect') { env0_0.identify_guilds_duration_ms = global.Math.floor(a1 / 1000); } }