/* Metro module 4740; source: unknown; dependencies: [4741, 4734, 4731] */ function _fun40908(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#40908, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:6, offset: 0x0110fd49, size: 161 bytes, params: 8, frame: 17 let env0_0 = require; const closure = parseBox; const findIlocItem = function(a0, a1) { var env0_0 = a1; var property = a0.subBoxes; property = property.find(_fun40913).items; return property.find(_fun40914); }; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); exports.ITEM_INFO_TYPE_EXIF = 1165519206; exports.ITEM_INFO_TYPE_MIME = 1835625829; exports.parseBox = closure; exports.findOffsets = findOffsets; } function parseBox(a0, a1) { // fn#40909, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:135, offset: 0x0110fdea, size: 1046 bytes, params: 3, frame: 29 var environment; var r12; var r9; var r1; var object2; var value7; var parseSubBoxesBinding; let value = getBoxLength(a0, a1); let length = value.length; const contentOffset = value.contentOffset; if (length < 8) { return undefined; } value = a0.getUint32(a1 + 4); if (value === 1718909296) { value = require(4731) /* metro dependency 4731 */; value = value.getStringFromDataView(a0, contentOffset, 4); return {type: 'ftyp', majorBrand: value, length: length}; } if (value === 1768977008) { object2 = {type: 'iprp'}; value = environment; object2.subBoxes = parseSubBoxes(a0, contentOffset, length - (contentOffset - a1)); object2.length = length; return object2; } if (value === 1768973167) { object2 = {type: 'ipco'}; value = environment; object2.properties = parseSubBoxes(a0, contentOffset, length - (contentOffset - a1)); object2.length = length; return object2; } if (value === 1668246642) { object2 = {type: 'colr'}; value = environment; object2.icc = parseIcc(a0, contentOffset); object2.length = length; return object2; } const uint8 = a0.getUint8(contentOffset); if (value === 1835365473) { value = contentOffset + 1; object2 = {type: 'meta'}; parseSubBoxesBinding = parseSubBoxes; value += 3; object2.subBoxes = parseSubBoxesBinding(a0, value, length - (value - a1)); object2.length = length; r1 = object2; } else if (value === 1768714083) { value = require(4741) /* metro dependency 4741 */; value = value.parseItemLocationBox(a0, uint8, contentOffset + 1, length); r1 = value; } else if (value === 1768517222) { value = contentOffset + 1; value = parseItemInformationBox(a0, a1, uint8, value, length); r1 = value; } else if (value === 1768842853) { value = contentOffset + 1 + 3; object2 = {type: 'infe', length: length}; if (uint8 !== 0 && uint8 !== 1) { r12 = value; } else { object2.itemId = a0.getUint16(value); value += 2; object2.itemProtectionIndex = a0.getUint16(value); value += 2; object2.itemName = (require(4731) /* metro dependency 4731 */).getNullTerminatedStringFromDataView(a0, value); value += object2.itemName.length + 1; r12 = value; } if (uint8 >= 2) { if (uint8 === 2) { object2.itemId = a0.getUint16(r12); r9 = r12 + 2; } else if (uint8 !== 3) { r9 = r12; } else { object2.itemId = a0.getUint32(r12); r9 = r12 + 4; } object2.itemProtectionIndex = a0.getUint16(r9); value = r9 + 2; object2.itemType = a0.getUint32(value); value += 4; object2.itemName = (require(4731) /* metro dependency 4731 */).getNullTerminatedStringFromDataView(a0, value); value += object2.itemName.length + 1; if (object2.itemType === env0_4) { object2.contentType = (require(4731) /* metro dependency 4731 */).getNullTerminatedStringFromDataView(a0, value); value7 = a1 + length; length = object2.contentType.length; value += length + 1; if (value7 > value) { object2.contentEncoding = (require(4731) /* metro dependency 4731 */).getNullTerminatedStringFromDataView(a0, value); object2.contentEncoding.length + 1; r1 = object2; } else { r1 = object2; } } else if (object2.itemType !== env0_5) { r1 = object2; } else { object2.itemUri = (require(4731) /* metro dependency 4731 */).getNullTerminatedStringFromDataView(a0, value); object2.itemUri.length + 1; r1 = object2; } } else { r1 = object2; } } else { r1 = {type: undefined, length: length}; } return r1; } function findIlocItem({subBoxes}, a1) { // fn#40912, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:2607, offset: 0x0111032b, size: 58 bytes, params: 3, frame: 12 const env0_0 = a1; return subBoxes.find(function(a0) { return a0.type === 'iloc'; }).items.find(function({itemId}) { return itemId === require; }); } function parseIcc(a0, a1) { // fn#40915, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:2742, offset: 0x0111038f, size: 114 bytes, params: 3, frame: 16 var object2; let value = require(4731) /* metro dependency 4731 */; value = value.getStringFromDataView(a0, a1, 4); if (value === 'prof') { object2 = {offset: a1 + 4}; object2.length = a0.getUint32(a1 + 4); object2.chunkNumber = 1; object2.chunksTotal = 1; return object2; } if (value === 'rICC') { object2 = {offset: a1 + 4}; object2.length = a0.getUint32(a1 + 4); object2.chunkNumber = 1; object2.chunksTotal = 1; return object2; } } function parseSubBoxes(a0, a1, a2) { // fn#40916, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:2905, offset: 0x01110401, size: 153 bytes, params: 4, frame: 24 var r2; var r12; var r11; var box; var type; var value3; var itemType; var value4; var indexOf; var value5; var length; var value6; const value = a1; const items3 = [env0_3, env0_4]; const items2 = []; if (value < value + a2) { r2 = value; while (true) { box = parseBox(a0, r2); if (box === undefined) { break; } type = box.type; value3 = type === undefined; if (value3) { r11 = value3; continue; } itemType = box.itemType; value4 = itemType !== undefined; if (!value4) { r12 = value4; continue; } indexOf = items3.indexOf; itemType = box.itemType; value5 = Reflect.apply(indexOf, items3, [itemType]) === -1; r12 = value5; r11 = r12; if (r11) { continue; } items2.push(box); length = box.length; value6 = r2 + length; if (value6 < value + a2) { r2 = value6; continue; } break; } } return items2; } function findOffsets(a0) { // fn#40917, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3187, offset: 0x0111049a, size: 378 bytes, params: 2, frame: 22 var r10; var r3; var r2; var r0; var USE_ICC; var box; var type; var length; var value4; var value5; var xmpChunks; var iccChunks; var value; const value2 = undefined; const USE_EXIF = (importDefault(4734) /* metro dependency 4734 */).USE_EXIF; if (!USE_EXIF) { reducibleJoin4: while (true) { if ((importDefault(4734) /* metro dependency 4734 */).USE_XMP) { break reducibleJoin4; } USE_ICC = (importDefault(4734) /* metro dependency 4734 */).USE_ICC; if (!USE_ICC) { return {}; } break reducibleJoin4; } } const object2 = {}; let byteLength = a0.byteLength; if (8 <= byteLength) { r10 = 0; reducibleLoop5: while (true) { box = parseBox(a0, r10); if (value2 === box) { r3 = value2; break reducibleLoop5; } type = box.type; if (type === 'meta') { r3 = box; break reducibleLoop5; } length = box.length; value4 = r10 + length; value5 = value4 + 4; byteLength = a0.byteLength; if (value5 + 4 <= byteLength) { r10 = value4; continue reducibleLoop5; } r3 = value2; break reducibleLoop5; } } else { r3 = value2; } if (r3) { reducibleJoin12: while (true) { if ((importDefault(4734) /* metro dependency 4734 */).USE_EXIF) { object2.tiffHeaderOffset = findExifOffset(a0, r3); break reducibleJoin12; } break reducibleJoin12; } reducibleJoin14: while (true) { if ((importDefault(4734) /* metro dependency 4734 */).USE_XMP) { object2.xmpChunks = findXmpChunks(r3); break reducibleJoin14; } break reducibleJoin14; } reducibleJoin16: while (true) { if ((importDefault(4734) /* metro dependency 4734 */).USE_ICC) { object2.iccChunks = ((a0) => { var property; var find; var closure; var value; var find2; var find3; var items; var error; reducibleJoin2: while (true) { reduciblePort20: while (true) { exceptionLanding19: while (true) { try { property = a0.subBoxes; } catch (error) { break exceptionLanding19; } break reducibleJoin2; } break reduciblePort20; } return undefined; } try { find = property.find; } catch (error) { break exceptionLanding19; } try { closure = _fun40927; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find, property, [closure]); } catch (error) { break exceptionLanding19; } try { property = value.subBoxes; } catch (error) { break exceptionLanding19; } try { find2 = property.find; } catch (error) { break exceptionLanding19; } try { closure = _fun40928; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find2, property, [closure]); } catch (error) { break exceptionLanding19; } try { property = value.properties; } catch (error) { break exceptionLanding19; } try { find3 = property.find; } catch (error) { break exceptionLanding19; } try { closure = _fun40929; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find3, property, [closure]); } catch (error) { break exceptionLanding19; } try { property = value.icc; } catch (error) { break exceptionLanding19; } if (property) { try { items = []; } catch (error) { break exceptionLanding19; } try { items[0] = property; } catch (error) { break exceptionLanding19; } return items; } })(r3); break reducibleJoin16; } break reducibleJoin16; } value = value2 !== object2.tiffHeaderOffset; reducibleJoin18: while (true) { if (value) { r2 = value; break reducibleJoin18; } xmpChunks = object2.xmpChunks; value = value2 !== xmpChunks; r2 = value; break reducibleJoin18; } reducibleJoin20: while (true) { if (r2) { break reducibleJoin20; } iccChunks = object2.iccChunks; value = value2 !== iccChunks; r2 = value; break reducibleJoin20; } object2.hasAppMarkers = r2; r0 = object2; } else { r0 = {hasAppMarkers: false}; } return r0; } function getBoxLength(a0, a1) { // fn#40910, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:164, owner: parseBox.getBoxLength, offset: 0x01110200, size: 156 bytes, params: 3, frame: 15 var object2; const uint32 = a0.getUint32(a1); if (uint32 === 0) { return {length: a0.byteLength - a1, contentOffset: a1 + 4 + 4}; } if (uint32 === 1) { if (a0.getUint32(a1 + 8) === 0) { object2 = {}; object2.length = a0.getUint32(a1 + 12); object2.contentOffset = a1 + 4 + 4 + 8; return object2; } } return {length: uint32, contentOffset: a1 + 4 + 4}; } function parseItemInformationBox(a0, a1, a2, a3, a4) { // fn#40911, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:1415, owner: parseBox.parseItemInformationBox, offset: 0x0111029c, size: 143 bytes, params: 6, frame: 17 let object2 = {entryCount: a3 + 3}; object2.itemInfos = object2.entryCount + ({entryCount: a2 !== 0 ? 4 : 2}).entryCount; const offsets = ({offsets: object2}).offsets; object2 = {type: 'iinf'}; value = environment.__proto__; object2.itemInfos = parseSubBoxes(a0, offsets.itemInfos, a4 - (offsets.itemInfos - a1)); object2.length = a4; return object2; } function findExifOffset(a0, a1) { // fn#40918, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3483, owner: findOffsets.findExifOffset, offset: 0x01110614, size: 103 bytes, params: 3, frame: 14 var environment; var closure; var value; var itemId; var baseOffset; var extents; var property; var extentOffset; var value2; var error; try { closure = function({subBoxes}) { subBoxes = subBoxes.find(_fun40920).itemInfos; return subBoxes.find(_fun40921); }; value = closure(a1); itemId = value.itemId; value = environment.__proto__; value = findIlocItem(a1, itemId); baseOffset = value.baseOffset; extents = value.extents; property = extents[0]; extentOffset = property.extentOffset; value = baseOffset + extentOffset; value2 = value + 4; value = a0.getUint32(value); value = value2 + value; } catch (error) { return undefined; } return value; } function findXmpChunks(a0) { // fn#40922, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3862, owner: findOffsets.findXmpChunks, offset: 0x011106d8, size: 106 bytes, params: 2, frame: 14 var environment; var closure; var value; var itemId; var findIlocItemBinding; var ilocItem; var extents; var property; var baseOffset; var extentOffset; var extentLength; var items2; var error; try { closure = function({subBoxes}) { subBoxes = subBoxes.find(_fun40924).itemInfos; return subBoxes.find(_fun40925); }; value = closure(a0); itemId = value.itemId; value = environment.__proto__; findIlocItemBinding = findIlocItem; value = findIlocItemBinding(a0, itemId); ilocItem = findIlocItemBinding(a0, itemId); extents = ilocItem.extents; property = extents[0]; baseOffset = value.baseOffset; extentOffset = property.extentOffset; value = baseOffset + extentOffset; extentLength = property.extentLength; items2 = [{dataOffset: value, length: extentLength}]; } catch (error) { return undefined; } return items2; } function findIccChunks(a0) { // fn#40926, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:4266, owner: findOffsets.findIccChunks, offset: 0x0111079e, size: 106 bytes, params: 2, frame: 14 var subBoxes; var find; var closure; var value; var properties; var icc; var items2; var error; reducibleJoin2: while (true) { reduciblePort20: while (true) { exceptionLanding19: while (true) { try { subBoxes = a0.subBoxes; } catch (error) { break exceptionLanding19; } break reducibleJoin2; } break reduciblePort20; } return undefined; } try { find = subBoxes.find; } catch (error) { break exceptionLanding19; } try { closure = function(a0) { return a0.type === 'iprp'; }; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find, subBoxes, [closure]); } catch (error) { break exceptionLanding19; } try { subBoxes = value.subBoxes; } catch (error) { break exceptionLanding19; } try { find = subBoxes.find; } catch (error) { break exceptionLanding19; } try { closure = function(a0) { return a0.type === 'ipco'; }; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find, subBoxes, [closure]); } catch (error) { break exceptionLanding19; } try { properties = value.properties; } catch (error) { break exceptionLanding19; } try { find = properties.find; } catch (error) { break exceptionLanding19; } try { closure = function(a0) { return a0.type === 'colr'; }; } catch (error) { break exceptionLanding19; } try { value = Reflect.apply(find, properties, [closure]); } catch (error) { break exceptionLanding19; } try { icc = value.icc; } catch (error) { break exceptionLanding19; } if (icc) { try { items2 = []; } catch (error) { break exceptionLanding19; } try { items2[0] = icc; } catch (error) { break exceptionLanding19; } return items2; } } function findIinfExifItemId({subBoxes}) { // fn#40919, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3522, owner: findOffsets.findExifOffset.findIinfExifItemId, offset: 0x0111067b, size: 51 bytes, params: 2, frame: 12 return subBoxes.find(function(a0) { return a0.type === 'iinf'; }).itemInfos.find(_fun40921); } function findIinfXmpItemId({subBoxes}) { // fn#40923, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3898, owner: findOffsets.findXmpChunks.findIinfXmpItemId, offset: 0x01110742, size: 51 bytes, params: 2, frame: 12 return subBoxes.find(function(a0) { return a0.type === 'iinf'; }).itemInfos.find(_fun40925); } function _fun40921({itemType}) { // fn#40921, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:3630, offset: 0x011106c2, size: 22 bytes, params: 2, frame: 2 return itemType === env3_3; } function _fun40925(a0) { // fn#40925, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4918:4005, offset: 0x01110775, size: 41 bytes, params: 2, frame: 3 const itemType = a0.itemType; const value = environment.__proto__.__proto__.__proto__; return itemType === env3_4 && a0.contentType === 'application/rdf+xml'; }