/* Metro module 969; source: unknown; dependencies: [] */ function _fun10174(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#10174, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:6, offset: 0x00d802c7, size: 210 bytes, params: 8, frame: 17 const getPartText = function(a0) { var value = a0; return typeof value === 'string' ? value : 'text' in value ? value.text : ''; }; const withPartText = function(a0, a1) { var r0; var value = a1; if (typeof a0 === 'string') { r0 = value; } else { value = global.Object.assign({}, a0, {text: value}); r0 = value; } return r0; }; const hasInlineData = function(a0) { var r0; r0 = 'inlineData' in a0 && !!a0.inlineData && typeof a0.inlineData === 'object'; r0 = r0 && 'data' in a0.inlineData && typeof a0.inlineData.data === 'string'; return r0; }; const isPartsMessage = function(a0) { var r0; r0 = a0 !== null && typeof a0 === 'object' && 'parts' in a0; r0 = r0 && global.Array.isArray(a0.parts) && a0.parts.length > 0; return r0; }; const stripInlineMediaFromMessages = function(a0) { return a0.map(_fun10186); }; const Object = global.Object; const defineProperty = Object.defineProperty; const Symbol = global.Symbol; Reflect.apply(defineProperty, Object, [exports, Symbol.toStringTag, {value: 'Module'}]); const utf8Bytes = function(a0) { var TextEncoder = global.TextEncoder; return new TextEncoder().encode(a0).length; }; const env0_3 = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri']; exports.DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000; exports.truncateGenAiMessages = truncateGenAiMessages; exports.truncateGenAiStringInput = function(a0) { return truncateTextByBytes(a0, 20000); }; } function truncateTextByBytes(a0, a1) { // fn#10175, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:221, offset: 0x00d80399, size: 134 bytes, params: 3, frame: 25 var r2; var r3; var r8; var r12; var r1; var Math; var value4; var value5; var value6; var value7; if (utf8Bytes(a0) <= a1) { return a0; } const length = a0.length; const value2 = 0; const value3 = ''; if (value2 <= length) { r2 = value3; r3 = value2; r8 = length; while (true) { Math = global.Math; value4 = Math.floor((r3 + r8) / 2); value5 = a0.slice(value2, value4); if (utf8Bytes(value5) <= a1) { value7 = value4 + 1; r2 = value5; r3 = value7; r12 = r8; } else { value6 = value4 - 1; r12 = value6; } if (r3 <= r12) { r8 = r12; continue; } r1 = r2; break; } } else { r1 = value3; } return r1; } function isContentMedia(a0) { // fn#10178, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:541, offset: 0x00d8047b, size: 375 bytes, params: 2, frame: 16 var r4; var r2; var r0; let r1 = a0 ? typeof a0 !== 'object' : !a0; if (r1) { r0 = !r1; } else { r1 = 'type' in a0 && typeof a0.type === 'string'; r1 = r1 && 'source' in a0; r1 = r1 && isContentMedia(a0.source); r1 = !r1 ? hasInlineData(a0) : r1; if (!r1) { r4 = 'media_type' in a0 && typeof a0.media_type === 'string'; r4 = r4 && 'data' in a0; r1 = r4; } if (!r1) { r4 = 'image_url' in a0 && typeof a0.image_url === 'string'; r4 = r4 && a0.image_url.startsWith('data:'); r1 = r4; } r1 = !r1 ? 'type' in a0 && (a0.type === 'blob' || a0.type === 'base64') : r1; r1 = !r1 ? 'b64_json' in a0 : r1; if (!r1) { r2 = 'type' in a0 && 'result' in a0; r2 = r2 && a0.type === 'image_generation'; r1 = r2; } if (!r1) { r2 = 'uri' in a0 && typeof a0.uri === 'string'; r2 = r2 && a0.uri.startsWith('data:'); r1 = r2; } r0 = r1; } return r0; } function truncateSingleMessage(a0, a1) { // fn#10181, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:1337, offset: 0x00d8069f, size: 243 bytes, params: 3, frame: 18 var r1; var items; var r0; var value; if (a0) { value = typeof a0 === 'object'; if (value) { r1 = a0 !== null && value; r1 = r1 && 'content' in a0; r1 = r1 && typeof a0.content === 'string'; if (r1) { value = global.Object.assign({}, a0, {content: ''}); value = jsonBytes(value); value = 20000 - value; if (value <= 0) { items = []; } else { value = truncateTextByBytes(a0.content, value); value = global.Object.assign({}, a0, {content: value}); items = [value]; } r1 = items; } else { r1 = isPartsMessage(a0) ? truncatePartsMessage(a0, 20000) : []; } r0 = r1; } else { r0 = []; } } else { r0 = []; } return r0; } function stripInlineMediaFromSingleMessage(a0) { // fn#10184, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:2185, offset: 0x00d808f4, size: 200 bytes, params: 2, frame: 20 var stripInlineMediaFromSingleMessageBinding; var inlineData; var property; var value3; var binding; var error; let Object = global.Object; let assign = Object.assign; const value = Reflect.apply(assign, Object, [{}, a0]); const isContentMediaBinding = isContentMedia; let source = value.source; reducibleJoin2: while (true) { if (isContentMediaBinding(source)) { stripInlineMediaFromSingleMessageBinding = stripInlineMediaFromSingleMessage; source = value.source; value.source = stripInlineMediaFromSingleMessageBinding(source); break reducibleJoin2; } break reducibleJoin2; } reducibleJoin4: while (true) { if (hasInlineData(a0)) { Object = global.Object; assign = Object.assign; inlineData = a0.inlineData; value.inlineData = Reflect.apply(assign, Object, [{}, inlineData, {data: env0_2}]); break reducibleJoin4; } break reducibleJoin4; } const iterator = env0_3[Symbol.iterator](); const iterator2 = iterator.next; let r2 = iterator; let item2 = Reflect.apply(iterator2, r2, []); let item = item2.value; item2 = item2.done ? undefined : r2; reducibleJoin6: while (true) { if (item2 === undefined) { return value; } break reducibleJoin6; } reducibleLoop6: while (true) { try { property = value[item]; } catch (error) { try { item2.return(); } catch { } throw error; } try { value3 = typeof property !== 'string'; } catch (error) { try { item2.return(); } catch { } throw error; } reducibleJoin5: while (true) { if (value3) { r2 = item2; break reducibleJoin5; } try { binding = env0_2; } catch (error) { try { item2.return(); } catch { } throw error; } try { value[item] = binding; } catch (error) { try { item2.return(); } catch { } throw error; } r2 = item2; break reducibleJoin5; } item2 = Reflect.apply(iterator2, r2, []); item = item2.value; item2 = item2.done ? undefined : r2; if (item2 === undefined) { break reducibleLoop6; } continue reducibleLoop6; } return value; } function stripInlineMediaFromMessages(a0) { // fn#10185, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:2468, offset: 0x00d809bc, size: 22 bytes, params: 2, frame: 11 return a0.map(_fun10186); } function jsonBytes(a0) { // fn#10188, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:170, offset: 0x00d80b5f, size: 38 bytes, params: 2, frame: 12 const utf8BytesBinding = utf8Bytes; const JSON = global.JSON; return utf8BytesBinding(JSON.stringify(a0)); } function truncateGenAiMessages(a0) { // fn#10189, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:3183, offset: 0x00d80b85, size: 222 bytes, params: 2, frame: 24 var r1; var r8; var r9; var r13; var r3; var r0; var length; var value2; var value3; var value4; var map; var value5; var length2; var value6; var property; var value7; var value8; var slice; var truncateSingleMessageBinding; let value = a0; const Array = global.Array; reducibleJoin13: while (true) { if (Array.isArray(value)) { length = value.length; value2 = 0; if (value2 === length) { r0 = value; break reducibleJoin13; } value3 = environment; value = stripInlineMediaFromMessages(value); value4 = jsonBytes(value); if (value4 <= 20000) { r0 = value; break reducibleJoin13; } map = value.map; value5 = Reflect.apply(map, value, [jsonBytes]); length = value.length; length2 = value.length; value6 = length2 - 1; if (value6 >= value2) { r1 = value2; r8 = length; r9 = value6; reducibleLoop4: while (true) { property = value5[r9]; if (property) { reducibleJoin6: while (true) { if (r1 + property > 20000) { r3 = r8; break reducibleLoop4; } break reducibleJoin6; } } reducibleJoin8: while (true) { if (property) { value7 = r1 + property; r13 = value7; break reducibleJoin8; } r13 = r1; break reducibleJoin8; } value8 = typeof r9 === 'bigint' ? r9 - 1n : +r9 - 1; if (value8 >= value2) { r1 = r13; r8 = r9; r9 = value8; continue reducibleLoop4; } r3 = r9; break reducibleLoop4; } } else { r3 = length; } length = value.length; if (r3 === length) { truncateSingleMessageBinding = truncateSingleMessage; length = value.length; value = truncateSingleMessageBinding(value[length - 1], 20000); r1 = value; } else { slice = value.slice; value = Reflect.apply(slice, value, [r3]); r1 = value; } r0 = r1; break reducibleJoin13; } r0 = value; break reducibleJoin13; } return r0; } function truncatePartsMessage(a0, a1) { // fn#10182, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:1719, owner: truncateSingleMessage.truncatePartsMessage, offset: 0x00d80792, size: 330 bytes, params: 3, frame: 28 var r0; var getPartTextBinding; var utf8BytesBinding; var value3; var value4; var length; var value5; var truncateTextByBytesBinding; var push; var withPartTextBinding; var error; const parts = a0.parts; let value = parts.map(function(a0) { return withPartText(a0, ''); }); const jsonBytesBinding = jsonBytes; let Object = global.Object; value = jsonBytesBinding(Object.assign({}, a0, {parts: value})); value = a1 - value; if (value <= 0) { return []; } items = []; const iterator = parts[Symbol.iterator](); const iterator2 = iterator.next; let r5 = iterator; let r8 = value; let item2 = Reflect.apply(iterator2, r5, []); let item = item2.value; item2 = item2.done ? undefined : r5; reducibleJoin3: while (true) { if (item2 === undefined) { if (items.length <= 0) { r0 = []; } else { Object = global.Object; items = [Object.assign({}, a0, {parts: items})]; r0 = items; } return r0; } break reducibleJoin3; } reducibleLoop3: while (true) { try { getPartTextBinding = getPartText; } catch (error) { try { item2.return(); } catch { } throw error; } try { value = getPartTextBinding(item); } catch (error) { try { item2.return(); } catch { } throw error; } try { utf8BytesBinding = utf8Bytes; } catch (error) { try { item2.return(); } catch { } throw error; } try { value3 = utf8BytesBinding(value); } catch (error) { try { item2.return(); } catch { } throw error; } try { value4 = value3 <= r8; } catch (error) { try { item2.return(); } catch { } throw error; } if (value4) { try { push = items.push; } catch (error) { try { item2.return(); } catch { } throw error; } try { Reflect.apply(push, items, [item]); } catch (error) { try { item2.return(); } catch { } throw error; } try { value = r8 - value3; } catch (error) { try { item2.return(); } catch { } throw error; } r5 = item2; r8 = value; item2 = Reflect.apply(iterator2, r5, []); item = item2.value; item2 = item2.done ? undefined : r5; if (item2 === undefined) { break reducibleLoop3; } continue reducibleLoop3; } try { length = items.length; } catch (error) { try { item2.return(); } catch { } throw error; } try { value5 = length === 0; } catch (error) { try { item2.return(); } catch { } throw error; } if (value5) { try { truncateTextByBytesBinding = truncateTextByBytes; } catch (error) { try { item2.return(); } catch { } throw error; } try { value = truncateTextByBytesBinding(value, r8); } catch (error) { try { item2.return(); } catch { } throw error; } reducibleJoin25: while (true) { if (value) { try { push = items.push; } catch (error) { try { item2.return(); } catch { } throw error; } try { withPartTextBinding = withPartText; } catch (error) { try { item2.return(); } catch { } throw error; } try { value = withPartTextBinding(item, value); } catch (error) { try { item2.return(); } catch { } throw error; } try { Reflect.apply(push, items, [value]); } catch (error) { try { item2.return(); } catch { } throw error; } break reducibleJoin25; } break reducibleJoin25; } item2.return(); } else { item2.return(); } break reducibleLoop3; } return items.length <= 0 ? [] : [global.Object.assign({}, a0, {parts: items})]; } function _fun10186(a0) { // fn#10186, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:1096:2523, offset: 0x00d809d2, size: 348 bytes, params: 2, frame: 21 var r7; var r4; var r1; var Object; var assign; var object2; var value9; var value11; var value13; const value = a0; let r2 = value && typeof value === 'object'; const value3 = undefined; if (r2) { r2 = value !== null && typeof value === 'object'; r2 = r2 && 'content' in value; r2 = r2 && global.Array.isArray(value.content); if (r2) { Object = global.Object; assign = Object.assign; object2 = {}; value11 = environment.__proto__; object2.content = stripInlineMediaFromMessages(value.content); r2 = Reflect.apply(assign, Object, [{}, value, object2]); } else if ('content' in value && isContentMedia(value.content)) { Object = global.Object; assign = Object.assign; object2 = {}; value9 = environment.__proto__; object2.content = stripInlineMediaFromSingleMessage(value.content); r2 = Reflect.apply(assign, Object, [{}, value, object2]); } else { r2 = value3; } value13 = environment.__proto__; if (isPartsMessage(value)) { Object = global.Object; assign = Object.assign; r7 = r2 ?? value; object2 = {}; object2.parts = stripInlineMediaFromMessages(value.parts); r4 = Reflect.apply(assign, Object, [{}, r7, object2]); } else { r4 = r2; } r2 = isContentMedia(r4) ? stripInlineMediaFromSingleMessage(r4) : isContentMedia(value) ? stripInlineMediaFromSingleMessage(value) : r4; r1 = r2; } else { r1 = value3; } return r1 ?? value; }