/* Metro module 8140; source: lib/native/FastList.tsx; dependencies: [29, 15, 17, 18, 57, 6, 7, 31, 27, 33, 22, 628, 6821, 4573, 477, 4017, 8141, 8142, 6277, 8143, 5321, 4020, 2] */ function _fun65151(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#65151, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:6, offset: 0x01bc4d69, size: 816 bytes, params: 8, frame: 23 const env0_0 = require; const _arrayLikeToArray_65157 = function(a0, a1) { var r0; var r1; var r2; var value3; var length; var value5; var value = undefined; var value2 = value == null; reducibleJoin2: while (true) { if (value2) { r0 = value2; break reducibleJoin2; } value3 = value > a0.length; r0 = value3; break reducibleJoin2; } reducibleJoin4: while (true) { if (r0) { length = a0.length; r1 = length; break reducibleJoin4; } r1 = value; break reducibleJoin4; } value = (0, global.Array)(r1); var value4 = 0; if (value4 < r1) { r2 = value4; reducibleLoop5: while (true) { value[r2] = a0[r2]; value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; if (value5 < r1) { r2 = value5; continue reducibleLoop5; } break reducibleLoop5; } } return value; }; const renderDefaultEmpty = function() { return null; }; const defaultRecyclerKey = function() { }; const getBatchSize = function(a0) { var Math = global.Math; return Math.ceil(a0 / 4); }; const env0_3 = ['manualRef', 'onScroll', 'onScrollEnd', 'onLayout', 'renderHeader', 'renderFooter', 'renderSection', 'renderItem', 'renderSectionFooter', 'getRecyclerKey', 'onEndReached', 'endReachedThreshold', 'headerSize', 'footerSize', 'sectionSize', 'sectionFooterSize', 'itemSize', 'sections', 'scrollPosValue', 'batchesToRender', 'optimizeListItemRender', 'initialScrollSection', 'initialScrollItem', 'initialScrollOrientation', 'initialScrollStart', 'getAnchorIdFromIndex', 'getAnchorIndexFromId', 'EXPERIMENTAL_enableAnchorWhileScrolling', 'chunkBase', 'disableContentWrappers', 'childrenWrapper', 'stickyHeaderFooter', 'stickySectionsVariant', 'persistantKeys', 'disableRecyclingOnFullCompute', 'disableLegacyGestureHandling', 'viewabilityConfig', 'onViewableItemsChanged', 'debugLayout', 'renderAccessory', 'removeClippedSubviews', 'inActionSheet']; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_4 = importDefault(29) /* metro dependency 29 */; const env0_5 = importDefault(15) /* metro dependency 15 */; const env0_6 = importDefault(17) /* metro dependency 17 */; const env0_7 = importDefault(18) /* metro dependency 18 */; const env0_8 = importDefault(57) /* metro dependency 57 */; const env0_9 = importDefault(6) /* metro dependency 6 */; const env0_10 = importDefault(7) /* metro dependency 7 */; let value = importAll(31) /* metro dependency 31 */; let value2 = require(27) /* metro dependency 27 */; const env0_12 = value2.PixelRatio; const env0_13 = value2.ScrollView; value2.StyleSheet; const env0_14 = value2.findNodeHandle; let value3 = require(33) /* metro dependency 33 */; const env0_15 = value3.jsxs; const env0_16 = value3.jsx; const env0_17 = value3.Fragment; const Map = global.Map; const map = new Map(); _fun65164()._LAST_KEY = 0; const value7 = _fun65174(); const env0_22 = {code: 'function FastListTsx1(){const{scrollPosValue,interpolate,inputRange,outputRange,horizontal}=this.__closure;const interpolatedValue=scrollPosValue!=null?interpolate(scrollPosValue.get(),inputRange,outputRange):null;return{transform:interpolatedValue!=null?[horizontal?{translateX:interpolatedValue}:{translateY:interpolatedValue}]:undefined};}'}; const env0_23 = value.memo(FastListStickySectionRendererComponent); const env0_24 = value.memo(_FastListSectionRenderer); const env0_25 = value.memo(_FastListSectionFooterRenderer); const env0_26 = value.memo(_FastListItemRenderer); const env0_27 = value.memo(_FastListHeaderFooterRenderer); const env0_28 = value.memo(_FastListSpacer); const env0_29 = _fun65203(); const env0_30 = {code: 'function FastListTsx2(event){const{horizontal,workletMounted,scrollPosValue}=this.__closure;const scrollPosition=!horizontal?event.contentOffset.y:event.contentOffset.x;const contentSize=!horizontal?event.contentSize.height:event.contentSize.width;if(contentSize===0&&!workletMounted.get())return;workletMounted.set(true);scrollPosValue.set(Math.min(scrollPosition,contentSize));}'}; const PureComponent = value.PureComponent; value = _fun65211(PureComponent); value.defaultProps = {'batchesToRender': 12, 'contentInset': null, 'disableLegacyGestureHandling': false, 'disableRecyclingOnFullCompute': false, 'stickyHeaderFooter': false, contentInset: {'top': 0, 'right': 0, 'left': 0, 'bottom': 0}}; const animatedComponent = (importDefault(4017) /* metro dependency 4017: ReanimatedRexport */).createAnimatedComponent(value); (require(2) /* metro dependency 2 */).fileFinishedImporting('lib/native/FastList.tsx'); exports.default = value; exports.DEFAULT_BATCHES_TO_RENDER = 12; exports.MINIMUM_BATCHES_TO_RENDER = 5; exports.getItemSizeOverrideKey = function(a0, a1, a2) { return '' + a0 + ':' + a1 + ':' + a2; }; exports.FastListItemTypes = {SPACER: 'SPACER', HEADER: 'HEADER', FOOTER: 'FOOTER', SECTION: 'SECTION', ITEM: 'ITEM', SECTION_FOOTER: 'SECTION_FOOTER'}; exports.FastListComputer = value7; exports.AnimatedFastList = animatedComponent; } function _isNativeReflectConstruct_65152() { // fn#65152, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:1114, offset: 0x01bc5099, size: 94 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_65152_isNativeReflectConstruct = function() { return !!result; })(); } function _createForOfIteratorHelperLoose_65155(a0, a1) { // fn#65155, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:1307, offset: 0x01bc50f7, size: 370 bytes, params: 3, frame: 20 var r6; var r9; var r5; var value3; var regexp; const env0_0 = a0; const Symbol = global.Symbol; let value = typeof Symbol !== 'undefined'; let r1 = value && a0[global.Symbol.iterator]; r1 = !r1 ? a0['@@iterator'] : r1; if (r1) { value = r1.call(a0); return value.next.bind(value); } const Array = global.Array; if (Array.isArray(a0)) { if (r1) { } return _fun65156; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_65157(a0, value); r5 = value; } else { value3 = ({}).toString.call(a0).slice(8, -1); r6 = value3 === 'Object' && a0.constructor; r9 = r6 ? a0.constructor.name : value3; if (r9 === 'Map') { r6 = global.Array.from(a0); } else if (r9 === 'Set') { r6 = global.Array.from(a0); } else if (r9 === 'Arguments') { value = _arrayLikeToArray_65157(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_65157(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun65156; } const TypeError = global.TypeError; throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'); } function computeBlock(a0, a1, a2) { // fn#65161, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:17171, offset: 0x01bc5288, size: 171 bytes, params: 4, frame: 19 if (a0 === 0) { return {'batchSize': 0, 'blockStart': 0, 'blockEnd': 0}; } let Math = global.Math; let value = Math.ceil(a0); Math = global.Math; const value2 = Math.floor(a1); const batchSize = getBatchSize(value); Math = global.Math; const max = Math.max; const Math2 = global.Math; value = Math2.round((value2 + value / 2) / batchSize); value = Reflect.apply(max, Math, [0, value - a2 / 2]) * batchSize; return {batchSize: batchSize, blockStart: value, blockEnd: value + batchSize * a2}; } function FastListIosFabricGestureWorkaround({inActionSheet, children}) { // fn#65162, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:34177, offset: 0x01bc5333, size: 139 bytes, params: 2, frame: 17 var r0; var moduleValue; if (inActionSheet === true) { r0 = children; } else { moduleValue = require(4020) /* metro dependency 4020: FabricUtils */; if (moduleValue.isIosFabric()) { const GestureDetector = (require(5321) /* metro dependency 5321 */).GestureDetector; r0 = {children}; } else { r0 = children; } } return r0; } function _fun65164() { // fn#65164, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:2464, offset: 0x01bc53e9, size: 149 bytes, params: 1, frame: 15 return env0_10(FastListItemRecycler, [{key: '_itemsForType', value: function(a0) { var r1; var object; var items; var property = this._items[a0]; if (property != null) { r1 = property; } else { property = this._items; object = {}; property[a0] = object; r1 = object; } object = [r1]; property = this._pendingItems[a0]; if (property != null) { r1 = property; } else { property = this._pendingItems; items = []; property[a0] = items; r1 = items; } object[1] = r1; return object; }}, {key: 'get', value: value_65168}, {key: '_get', value: value_65169}, {key: 'fill', value: value_65170}, {key: '_fill', value: value_65172}]); } function _fun65174() { // fn#65174, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3746, offset: 0x01bc57eb, size: 435 bytes, params: 1, frame: 15 return env0_10(FastListComputer, [{key: 'updateProps', value: value_65176}, {key: 'setInfo', value: function(a0) { var property = global.Math; var value = property.ceil(a0 / 4); property = this.dirty; this.dirty = property ? !!property : value !== this.chunkSize; this.chunkSize = value; }}, {key: 'getSizeForHeader', value: function() { var headerSize = this.props.headerSize; var r2 = headerSize === undefined ? 0 : headerSize; return typeof r2 === 'number' ? r2 : r2(); }}, {key: 'getSizeForFooter', value: function() { var footerSize = this.props.footerSize; var r2 = footerSize === undefined ? 0 : footerSize; return typeof r2 === 'number' ? r2 : r2(); }}, {key: 'getSizeForSection', value: function(a0) { var sectionSize = this.props.sectionSize; var r3 = sectionSize === undefined ? 0 : sectionSize; return typeof r3 === 'number' ? r3 : r3(a0); }}, {key: 'getSizeForItem', value: function(a0, a1) { var itemSize = this.props.itemSize; return typeof itemSize === 'number' ? itemSize : itemSize(a0, a1); }}, {key: 'getSizeForSectionFooter', value: function(a0) { var sectionFooterSize = this.props.sectionFooterSize; var r3 = sectionFooterSize === undefined ? 0 : sectionFooterSize; return typeof r3 === 'number' ? r3 : r3(a0); }}, {key: 'getChunk', value: value_65183}, {key: 'compute', value: value_65184}, {key: 'fullCompute', value: value_65187}, {key: 'getChunkDataFromSectionItem', value: value_65189}, {key: 'getChunkIndexFromSectionItem', value: value_65190}, {key: 'computeScrollPosition', value: value_65191}, {key: 'getSectionItemFromPosition', value: value_65192}, {key: 'setDisableRecycling', value: function(a0) { this.disableRecycling = a0; }}, {key: 'getSize', value: function() { if (this.dirty) { this.fullCompute(); } return this.size; }}, {key: 'isDirty', value: function() { return this.dirty; }}]); } function FastListStickySectionRendererComponent(a0) { // fn#65196, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:14863, offset: 0x01bc7656, size: 615 bytes, params: 2, frame: 31 var r5; var moduleValue; const layoutStart = a0.layoutStart; const layoutSize = a0.layoutSize; const horizontal = a0.horizontal; const nextSectionLayoutPosition = a0.nextSectionLayoutPosition; const scrollPosValue = a0.scrollPosValue; const fastListInstance = a0.fastListInstance; const section = a0.section; const children = a0.children; a0.debug; a0.recyclerKey; const items2 = []; let value = -1; items2[0] = value; const value2 = 0; items2[1] = value2; const items3 = [0, 0]; items2.push(layoutStart); items3.push(value2); const value3 = (nextSectionLayoutPosition ?? value2) - layoutSize; if (value3 >= layoutStart) { moduleValue = require(477) /* metro dependency 477: PlatformUtils */; r5 = moduleValue.isAndroid() ? value : value2; items2.push(value3, value3 + 1); push = items3.push; value = value3 - layoutStart + r5; Reflect.apply(push, items3, [value, value3 - layoutStart + r5]); } else { items2.push(layoutStart + 1); items3.push(1); } const value5 = undefined; const reanimatedRexportModule = require(4017) /* metro dependency 4017: ReanimatedRexport */; const useAnimatedStyle = reanimatedRexportModule.useAnimatedStyle; const closure = FastListStickySectionRendererComponentV; const object3 = {scrollPosValue: scrollPosValue}; object3.interpolate = reanimatedRexportModule.interpolate; object3.inputRange = items2; object3.outputRange = items3; object3.horizontal = horizontal; closure.__closure = object3; closure.__workletHash = 699810682881; closure.__initData = env0_22; const value6 = Reflect.apply(useAnimatedStyle, reanimatedRexportModule, [closure]); const Children = env0_11.Children; const value7 = Children.only(children(section, fastListInstance, scrollPosValue, layoutStart)); return ((Component) => {value7 != null ? env0_11.cloneElement(value7, {style: {flex: 1}}) : value5}{false})(importDefault(8141) /* metro dependency 8141: ReanimatedNativeView */); } function _FastListSectionRenderer(a0) { // fn#65198, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:15837, offset: 0x01bc7941, size: 191 bytes, params: 2, frame: 22 var r0; var value; var object; const layoutSize = a0.layoutSize; const horizontal = a0.horizontal; const disableWrapper = a0.disableWrapper; const children = a0.children; const fastListInstance = a0.fastListInstance; const section = a0.section; const debug = a0.debug; a0.recyclerKey; if (disableWrapper) { if (debug) { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(section, fastListInstance)}{false})(value); r0 = value; } else { r0 = <>{children(section, fastListInstance)}; } } else { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(section, fastListInstance)}{false})(value); r0 = value; } return r0; } function _FastListSectionFooterRenderer(a0) { // fn#65199, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:16130, offset: 0x01bc7a00, size: 182 bytes, params: 2, frame: 22 var r0; var value; var object; const layoutSize = a0.layoutSize; const horizontal = a0.horizontal; const disableWrapper = a0.disableWrapper; const fastListInstance = a0.fastListInstance; const children = a0.children; const section = a0.section; const debug = a0.debug; a0.recyclerKey; if (disableWrapper) { if (debug) { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(section, fastListInstance)}{false})(value); r0 = value; } else { r0 = <>{children(section, fastListInstance)}; } } else { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(section, fastListInstance)}{false})(value); r0 = value; } return r0; } function _FastListItemRenderer(a0) { // fn#65200, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:16410, offset: 0x01bc7ab6, size: 188 bytes, params: 2, frame: 24 var r0; var value; var defaultImport; var object; const layoutSize = a0.layoutSize; const horizontal = a0.horizontal; const disableWrapper = a0.disableWrapper; const children = a0.children; const section = a0.section; const fastListInstance = a0.fastListInstance; const item = a0.item; const debug = a0.debug; a0.recyclerKey; if (disableWrapper) { if (debug) { value = undefined; defaultImport = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children == null ? value : children(section, item, fastListInstance)}{false})(defaultImport); r0 = value; } else { r0 = children?.(section, item, fastListInstance); } } else { value = undefined; defaultImport = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children == null ? value : children(section, item, fastListInstance)}{false})(defaultImport); r0 = value; } return r0; } function _FastListHeaderFooterRenderer(a0) { // fn#65201, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:16706, offset: 0x01bc7b72, size: 183 bytes, params: 2, frame: 21 var r0; var value; var object; const layoutSize = a0.layoutSize; const horizontal = a0.horizontal; const disableWrapper = a0.disableWrapper; const children = a0.children; const fastListInstance = a0.fastListInstance; const debug = a0.debug; a0.recyclerKey; if (disableWrapper) { if (debug) { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(fastListInstance)}{false})(value); r0 = value; } else { r0 = <>{children(fastListInstance)}; } } else { value = importDefault(6821) /* metro dependency 6821: NativeView */; object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } value = ((Component) => {children(fastListInstance)}{false})(value); r0 = value; } return r0; } function _FastListSpacer({layoutSize, horizontal}) { // fn#65202, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:16990, offset: 0x01bc7c29, size: 86 bytes, params: 2, frame: 17 const nativeView = importDefault(6821) /* metro dependency 6821: NativeView */; const object = {}; if (horizontal) { object.width = layoutSize; } else { object.height = layoutSize; } return ((Component) => )(nativeView); } function _fun65203() { // fn#65203, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:17402, offset: 0x01bc7c7f, size: 180 bytes, params: 1, frame: 15 return env0_10(FastListScrollAnchor, [{key: 'hasAnchor', value: function() { return this.anchorId != null; }}, {key: 'cleanAnchor', value: function() { var r2; var value = a0; r2 = value !== undefined ? value : false; r2 = !r2 && this.isCustomAnchor; if (!r2) { this.isCustomAnchor = false; this.anchorId = undefined; this.anchorOffset = undefined; } }}, {key: 'handleUserScroll', value: function() { this.cleanAnchor(true); }}, {key: 'setCustomAnchor', value: function(a0, a1, a2, a3) { this.isCustomAnchor = true; this.anchorOffset = a1; this.anchorId = a0(a2, a3); if (this.anchorId == null) { this.cleanAnchor(true); } }}, {key: 'findOrUpdateAnchor', value: value_65209}, {key: 'getAnchorIndex', value: function(a0) { var value; if (this.anchorId != null) { value = a0(this.anchorId); this.cleanAnchor(); return value; } }}]); } function _fun65211(a0) { // fn#65211, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:18936, offset: 0x01bc7f39, size: 495 bytes, params: 2, frame: 17 const closure = FastList; env0_7(closure, a0); return env0_10(closure, [{key: 'computeScrollPosition', value: function(a0, a1) { return this.state.fastListComputer.computeScrollPosition(false, a0, a1); }}, {key: 'getInitialState', value: value_65229}, {key: 'componentDidMount', value: value_65230}, {key: 'getSnapshotBeforeUpdate', value: value_65232}, {key: 'componentDidUpdate', value: value_65233}, {key: 'getViewabilityConfig', value: function() { var property = this.props.viewabilityConfig; var value = undefined; return {minimumViewTime: (property == null ? value : property.minimumViewTime) ?? 1000, visibilityThreshold: (property == null ? value : property.visibilityThreshold) ?? 0.5}; }}, {key: 'queueViewabilityChange', value: function() { var minimumViewTime; if (this.props.onViewableItemsChanged != null) { minimumViewTime = this.getViewabilityConfig().minimumViewTime; global.clearTimeout(this.viewabilityDebounce); this.viewabilityDebounce = global.setTimeout(this.handleViewabilityChange, minimumViewTime); } }}, {key: 'reset', value: function() { var chunkBase = this.props.chunkBase; var state = this.state; if (!state.isFirstLayout) { this.setState(this.getInitialState(chunkBase ?? 0, state.fastListComputer, false, state.items)); } }}, {key: 'componentWillUnmount', value: function() { var property = this.worklet; if (property != null) { property.unregisterFromEvents(this.viewTag); } if (this.deferredCompute !== -1) { global.cancelAnimationFrame(this.deferredCompute); } if (this.viewabilityDebounce !== -1) { global.clearTimeout(this.viewabilityDebounce); } }}, {key: 'anchorScroll', value: value_65239}, {key: 'getSectionItemFromPosition', value: function(a0, a1) { return this.state.fastListComputer.getSectionItemFromPosition(a0, a1); }}, {key: 'getScrollPositionFromEvent', value: function(a0) { var property = this.props.horizontal; var contentOffset = a0.nativeEvent.contentOffset; return property ? contentOffset.x : contentOffset.y; }}, {key: 'restoreScrollPosition', value: value_65242}, {key: 'computeBlocks', value: value_65244}, {key: 'renderItems', value: value_65245}, {key: 'isEmpty', value: function() { return this.props.sections.reduce(_fun65254, 0) === 0; }}, {key: 'setDisableRecycling', value: function(a0) { this.state.fastListComputer.setDisableRecycling(a0); }}, {key: 'render', value: value_65256}], [{key: 'getDerivedStateFromProps', value: value_65257}]); } function FastListItemRecycler(a0) { // fn#65165, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:2475, offset: 0x01bc547e, size: 67 bytes, params: 2, frame: 15 env1_9(this, FastListItemRecycler); this._items = {}; this._pendingItems = {}; a0.forEach(_fun65166); } function value_65168(a0, a1, a2, a3) { // fn#65168, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:2869, offset: 0x01bc5551, size: 132 bytes, params: 5, frame: 17 let value = a4; const value2 = a5; const r6 = value !== undefined ? value : 0; const r5 = value2 !== undefined ? value2 : -1; value = this._itemsForType(a0); value = env1_8(value, 2); return this._get({type: a0, layoutStart: a1, layoutSize: a2, customKey: a3, section: r6, item: r5, items: value[0], pendingItems: value[1]}); } function value_65169({type, layoutStart, layoutSize, customKey, section, item, items, pendingItems}) { // fn#65169, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3073, offset: 0x01bc55d5, size: 200 bytes, params: 2, frame: 24 var r14; var r2; var r0; var object2; if (customKey != null) { r2 = customKey; } else { r2 = '' + type + ':' + section + ':' + item; r14 = section; } const property = items[r2]; if (property == null) { object2 = {type: type, key: -1, layoutStart: layoutStart, layoutSize: layoutSize, section: section, item: item, recyclerKey: r2}; pendingItems.push(object2); r0 = object2; } else { object2 = {}; copyDataProperties(object2, property, r14); object2.layoutStart = layoutStart; object2.layoutSize = layoutSize; object2.section = section; object2.item = item; delete items[r2]; r0 = object2; } return r0; } function value_65170(a0) { // fn#65170, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3411, offset: 0x01bc569d, size: 63 bytes, params: 2, frame: 14 const env0_1 = a0; const defaultImport = importDefault(22) /* metro dependency 22 */; defaultImport.forEach(env1_19, _fun65171); } function value_65172(a0, a1, a2) { // fn#65172, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3541, offset: 0x01bc5725, size: 144 bytes, params: 4, frame: 16 var environment; var value; var forEach; var property; var _LAST_KEY; var value2; var value3; const env0_0 = a1; let env0_1 = 0; reducibleJoin2: while (true) { if (a2) { break reducibleJoin2; } value = environment.__proto__; value = importDefault(22) /* metro dependency 22 */; forEach = value.forEach; Reflect.apply(forEach, value, [a0, _fun65173]); break reducibleJoin2; } let binding = env0_1; let length = a1.length; if (binding < length) { reducibleLoop3: while (true) { property = a1[env0_1]; _LAST_KEY = FastListItemRecycler._LAST_KEY; value2 = typeof _LAST_KEY === 'bigint' ? _LAST_KEY + 1n : +_LAST_KEY + 1; FastListItemRecycler._LAST_KEY = value2; property.key = value2; binding = env0_1; value3 = typeof binding === 'bigint' ? binding + 1n : +binding + 1; env0_1 = value3; length = a1.length; if (value3 < length) { continue reducibleLoop3; } break reducibleLoop3; } } a1.length = 0; } function FastListComputer(a0) { // fn#65175, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3767, offset: 0x01bc599e, size: 131 bytes, params: 2, frame: 15 env1_9(this, FastListComputer); this.chunkSize = 0; this.uniform = false; this.dataCache = []; this.size = 0; this.dirty = true; this.lastStartChunk = -1; this.lastEndChunk = -1; this.items = []; this.persistantItemData = []; this.disableRecycling = false; this.props = a0; this.updateProps(a0); } function value_65176(a0) { // fn#65176, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:4069, offset: 0x01bc5a21, size: 99 bytes, params: 2, frame: 15 var r2; const dirty = this.dirty; let value = !!dirty; if (dirty) { r2 = value; } else { value = environment.__proto__; value = importDefault(628) /* metro dependency 628: shallowEqual */; value = !value(a0, this.props); r2 = value; } this.dirty = r2; this.props = a0; this.uniform = typeof a0.itemSize === 'number'; } function value_65183(a0) { // fn#65183, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:4926, offset: 0x01bc5bb5, size: 176 bytes, params: 2, frame: 12 var r3; var r5; var r9; var start; var end; var property; const dataCache = this.dataCache; let value = dataCache.length - 1; let chunkCache = this.chunkCache; if (chunkCache != null) { chunkCache = this.chunkCache; start = chunkCache.start; reducibleJoin3: while (true) { if (a0 >= start) { chunkCache = this.chunkCache; end = chunkCache.end; if (a0 <= end) { return this.chunkCache; } break reducibleJoin3; } break reducibleJoin3; } } const value2 = 0; if (value2 <= value) { r3 = value2; r5 = value; reducibleLoop4: while (true) { value = r3 + ((r5 - r3) / 2 | 0); property = dataCache[value]; if (property == null) { return undefined; } start = property.start; if (a0 >= start) { end = property.end; reducibleJoin7: while (true) { if (a0 <= end) { this.chunkCache = property; return property; } break reducibleJoin7; } } start = property.start; if (a0 < start) { value -= 1; r5 = value; r9 = r3; } else { end = property.end; reducibleJoin11: while (true) { reducibleJoin13: while (true) { if (a0 > end) { value += 1; r9 = value; break reducibleJoin11; } break reducibleJoin13; } return undefined; } } if (!(r9 <= r5)) { return undefined; } r3 = r9; continue reducibleLoop4; } } } function value_65184(a0, a1, a2) { // fn#65184, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:5256, offset: 0x01bc5c65, size: 3570 bytes, params: 4, frame: 69 var environment; var r0; var r6; var r25; var r1; var item; var r19; var r23; var r38; var r39; var r50; var r48; var r49; var r51; var r47; var r34; var r16; var r18; var r24; var r22; var r5; var r17; var r12; var r13; var r3; var lastStartChunk; var lastEndChunk; var items5; var value6; var type; var section; var type2; var ITEM; var value7; var set; var value8; var getChunk; var value18; var add; var value19; var value22; var data; var value23; var value24; var value25; var layoutStart; var layoutSize; var HEADER; var SECTION; var SECTION_FOOTER; var FOOTER; var push; var get; var value26; var length; var sectionData; var layoutStart2; var SECTION_FOOTER2; var value27; var value28; var uniform; var value29; var itemSize; var value30; var value31; var initialSection; var initialItem; var value32; var value33; var has; var value34; var value35; var value36; var layoutStart3; var value37; var value38; var value39; var value40; var value41; var value42; var value43; var value44; var value45; var value46; var value47; var value49; var value50; var property; var property2; var lastSection; var value51; var value52; var value53; var value54; var value55; var headerDataCache; var layoutStart4; var unshift; var SPACER; var layoutStart5; var layoutStart6; var value56; var value57; var value58; var value59; var value60; var property3; var type3; var value61; var footerDataCache; var value62; var value63; var value64; var property4; var type4; var value65; var disableRecyclingOnFullCompute; let value = a3; const env0_0 = a0; const env0_1 = a1; const value2 = undefined; reducibleJoin2: while (true) { if (value !== value2) { r0 = value; break reducibleJoin2; } value = false; r0 = value; break reducibleJoin2; } const closure = addInitialSection; const closure2 = value_65184IsVisible; if (this.dirty) { this.fullCompute(); r6 = true; } else { lastStartChunk = this.lastStartChunk; value = false; reducibleJoin7: while (true) { if (a0 !== lastStartChunk) { r6 = value; break reducibleJoin7; } lastEndChunk = this.lastEndChunk; if (a1 === lastEndChunk) { return {size: this.size, items: this.items}; } r6 = value; break reducibleJoin7; } } let props = this.props; const stickyHeaderFooter = props.stickyHeaderFooter; const getRecyclerKey = props.getRecyclerKey; reducibleJoin9: while (true) { if (value2 !== getRecyclerKey) { r25 = getRecyclerKey; break reducibleJoin9; } value = environment.__proto__; r25 = defaultRecyclerKey; break reducibleJoin9; } this.lastStartChunk = a0; this.lastEndChunk = a1; const Map = global.Map; let map = new Map(); const value4 = _createForOfIteratorHelperLoose_65155(this.persistantItemData); const value5 = value4(); let done = value5.done; if (!done) { r1 = value5; reducibleLoop10: while (true) { value6 = r1.value; type = value6.type; section = value6.section; type2 = value6.type; ITEM = env1_19.ITEM; reducibleJoin12: while (true) { if (type2 !== ITEM) { item = value2; break reducibleJoin12; } item = value6.item; break reducibleJoin12; } value7 = r25(type, section, item); reducibleJoin14: while (true) { if (value7 == null) { break reducibleJoin14; } set = map.set; Reflect.apply(set, map, [value7, value6]); break reducibleJoin14; } value8 = value4(); done = value8.done; if (done) { break reducibleLoop10; } r1 = value8; continue reducibleLoop10; } } let Math = global.Math; let floor = Math.floor; let chunkSize = this.chunkSize; const value9 = Reflect.apply(floor, Math, [a0 / chunkSize]); Math = global.Math; let max = Math.max; const Math2 = global.Math; const value10 = Reflect.apply(max, Math, [Math2.ceil(a1 / this.chunkSize), value9]); const value11 = value9 * this.chunkSize; const items4 = []; this.items = items4; let binding = env1_20; const binding2 = new binding(a2); const object3 = {'initialSection': -1, 'initialItem': -1, 'lastSection': -1, 'lastItem': -1}; const value15 = 0; const Set = global.Set; set = new Set(); if (value9 <= value10) { r0 = value9; reducibleLoop16: while (true) { getChunk = this.getChunk; value18 = Reflect.apply(getChunk, this, [r0]); reducibleJoin18: while (true) { if (value18 == null) { break reducibleJoin18; } add = set.add; Reflect.apply(add, set, [value18]); break reducibleJoin18; } value19 = typeof r0 === 'bigint' ? r0 + 1n : +r0 + 1; if (value19 <= value10) { r0 = value19; continue reducibleLoop16; } break reducibleLoop16; } } const value20 = _createForOfIteratorHelperLoose_65155(set); const value21 = value20(); done = value21.done; if (!done) { r19 = value21; r23 = value11; reducibleLoop20: while (true) { value22 = r19.value; reducibleJoin82: while (true) { if (value22 == null) { r34 = r23; break reducibleJoin82; } _createForOfIteratorHelperLoose_65155Binding = _createForOfIteratorHelperLoose_65155; data = value22.data; value23 = _createForOfIteratorHelperLoose_65155Binding(data); value24 = value23(); done = value24.done; if (done) { r34 = r23; break reducibleJoin82; } r38 = value24; r39 = r23; reducibleLoop22: while (true) { value25 = r38.value; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin81: while (true) { if (layoutStart + layoutSize < r39) { r47 = r39; break reducibleJoin81; } type = value25.type; HEADER = env1_19.HEADER; if (HEADER === type) { layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin80: while (true) { if (closure2(layoutStart, layoutSize)) { push = items4.push; get = binding2.get; HEADER = env1_19.HEADER; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [HEADER, layoutStart, layoutSize, value2])]); break reducibleJoin80; } break reducibleJoin80; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; value45 = layoutStart + layoutSize; r47 = value45; break reducibleJoin81; } SECTION = env1_19.SECTION; if (SECTION === type) { layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin77: while (true) { if (closure2(layoutStart, layoutSize)) { initialSection = object3.initialSection; if (initialSection === -1) { section = value25.section; object3.initialSection = section; section = value25.section; object3.lastSection = section; } else { object3.lastSection = value25.section; } SECTION = env1_19.SECTION; section = value25.section; value41 = r25(SECTION, section); value42 = value41 != null; reducibleJoin74: while (true) { if (value42) { has = map.has; value43 = Reflect.apply(has, map, [value41]); r48 = value43; break reducibleJoin74; } r48 = value42; break reducibleJoin74; } reducibleJoin76: while (true) { if (r48) { map.delete(value41); break reducibleJoin76; } break reducibleJoin76; } push = items4.push; get = binding2.get; SECTION = env1_19.SECTION; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; section = value25.section; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [SECTION, layoutStart, layoutSize, value41, section])]); break reducibleJoin77; } break reducibleJoin77; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; value44 = layoutStart + layoutSize; r47 = value44; break reducibleJoin81; } ITEM = env1_19.ITEM; if (ITEM !== type) { SECTION_FOOTER = env1_19.SECTION_FOOTER; if (SECTION_FOOTER === type) { layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin35: while (true) { if (closure2(layoutStart, layoutSize)) { length = items4.length; reducibleJoin34: while (true) { if (value15 !== length) { break reducibleJoin34; } section = value25.section; sectionData = value25.sectionData; layoutStart = sectionData.layoutStart; sectionData = value25.sectionData; layoutSize = sectionData.layoutSize; layoutStart2 = value25.layoutStart; closure(section, layoutStart, layoutSize, layoutStart2); break reducibleJoin34; } push = items4.push; get = binding2.get; binding = env1_19; SECTION_FOOTER = binding.SECTION_FOOTER; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; SECTION_FOOTER2 = binding.SECTION_FOOTER; section = value25.section; value27 = r25(SECTION_FOOTER2, section); section = value25.section; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [SECTION_FOOTER, layoutStart, layoutSize, value27, section])]); break reducibleJoin35; } break reducibleJoin35; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; value28 = layoutStart + layoutSize; r47 = value28; break reducibleJoin81; } FOOTER = env1_19.FOOTER; if (FOOTER !== type) { r47 = r39; break reducibleJoin81; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin30: while (true) { if (closure2(layoutStart, layoutSize)) { push = items4.push; get = binding2.get; FOOTER = env1_19.FOOTER; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [FOOTER, layoutStart, layoutSize, value2])]); break reducibleJoin30; } break reducibleJoin30; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; value26 = layoutStart + layoutSize; r47 = value26; break reducibleJoin81; } uniform = value25.uniform; if (uniform == null) { layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; reducibleJoin67: while (true) { if (closure2(layoutStart, layoutSize)) { length = items4.length; reducibleJoin58: while (true) { if (value15 !== length) { break reducibleJoin58; } section = value25.section; sectionData = value25.sectionData; layoutStart = sectionData.layoutStart; sectionData = value25.sectionData; layoutSize = sectionData.layoutSize; layoutStart3 = value25.layoutStart; closure(section, layoutStart, layoutSize, layoutStart3); break reducibleJoin58; } initialSection = object3.initialSection; reducibleJoin60: while (true) { if (initialSection !== -1) { break reducibleJoin60; } section = value25.section; object3.initialSection = section; break reducibleJoin60; } initialItem = object3.initialItem; reducibleJoin62: while (true) { if (initialItem !== -1) { break reducibleJoin62; } item = value25.item; object3.initialItem = item; break reducibleJoin62; } section = value25.section; object3.lastSection = section; item = value25.item; object3.lastItem = item; ITEM = env1_19.ITEM; section = value25.section; item = value25.item; value37 = r25(ITEM, section, item); value38 = value37 != null; reducibleJoin64: while (true) { if (value38) { has = map.has; value39 = Reflect.apply(has, map, [value37]); r48 = value39; break reducibleJoin64; } r48 = value38; break reducibleJoin64; } reducibleJoin66: while (true) { if (r48) { map.delete(value37); break reducibleJoin66; } break reducibleJoin66; } push = items4.push; get = binding2.get; ITEM = env1_19.ITEM; layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; section = value25.section; item = value25.item; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [ITEM, layoutStart, layoutSize, value37, section, item])]); break reducibleJoin67; } break reducibleJoin67; } layoutStart = value25.layoutStart; layoutSize = value25.layoutSize; value40 = layoutStart + layoutSize; r47 = value40; break reducibleJoin81; } layoutStart = value25.layoutStart; reducibleJoin39: while (true) { if (r39 > layoutStart) { Math = global.Math; floor = Math.floor; layoutStart = value25.layoutStart; value29 = r39 - layoutStart; itemSize = value25.itemSize; value30 = Reflect.apply(floor, Math, [value29 / itemSize]); r50 = value30; break reducibleJoin39; } r50 = value15; break reducibleJoin39; } layoutStart = value25.layoutStart; itemSize = value25.itemSize; value31 = layoutStart + itemSize * r50; chunkSize = this.chunkSize; if (!(value31 < value10 * chunkSize)) { r47 = value31; break reducibleJoin81; } items5 = value25.items; if (!(r50 < items5)) { r47 = value31; break reducibleJoin81; } r48 = r50; r49 = value31; reducibleLoop41: while (true) { itemSize = value25.itemSize; reducibleJoin53: while (true) { if (closure2(r49, itemSize)) { length = items4.length; reducibleJoin44: while (true) { if (value15 !== length) { break reducibleJoin44; } section = value25.section; sectionData = value25.sectionData; layoutStart = sectionData.layoutStart; sectionData = value25.sectionData; layoutSize = sectionData.layoutSize; closure(section, layoutStart, layoutSize, r49); break reducibleJoin44; } initialSection = object3.initialSection; reducibleJoin46: while (true) { if (initialSection !== -1) { break reducibleJoin46; } section = value25.section; object3.initialSection = section; break reducibleJoin46; } initialItem = object3.initialItem; reducibleJoin48: while (true) { if (initialItem !== -1) { break reducibleJoin48; } object3.initialItem = r48; break reducibleJoin48; } section = value25.section; object3.lastSection = section; object3.lastItem = r48; ITEM = env1_19.ITEM; section = value25.section; value32 = r25(ITEM, section, r48); value33 = value32 != null; reducibleJoin50: while (true) { if (value33) { has = map.has; value34 = Reflect.apply(has, map, [value32]); r51 = value34; break reducibleJoin50; } r51 = value33; break reducibleJoin50; } reducibleJoin52: while (true) { if (r51) { map.delete(value32); break reducibleJoin52; } break reducibleJoin52; } push = items4.push; get = binding2.get; ITEM = env1_19.ITEM; itemSize = value25.itemSize; section = value25.section; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [ITEM, r49, itemSize, value32, section, r48])]); break reducibleJoin53; } break reducibleJoin53; } itemSize = value25.itemSize; value35 = r49 + itemSize; value36 = typeof r48 === 'bigint' ? r48 + 1n : +r48 + 1; chunkSize = this.chunkSize; if (value35 < value10 * chunkSize) { items5 = value25.items; if (value36 < items5) { r48 = value36; r49 = value35; continue reducibleLoop41; } r47 = value35; break reducibleJoin81; } r47 = value35; break reducibleJoin81; } } value46 = value23(); done = value46.done; if (done) { r34 = r47; break reducibleJoin82; } r38 = value46; r39 = r47; continue reducibleLoop22; } } value47 = value20(); done = value47.done; if (done) { break reducibleLoop20; } r19 = value47; r23 = r34; continue reducibleLoop20; } } const items2 = []; const items3 = []; map = _createForOfIteratorHelperLoose_65155(map); const value48 = map(); done = value48.done; if (done) { r5 = value15; r17 = value15; } else { r16 = value15; r18 = value15; r19 = value48; reducibleLoop84: while (true) { value49 = r19.value; value50 = env1_8(value49, 2); property = value50[value15]; property2 = value50[1]; section = property2.section; initialSection = object3.initialSection; if (section < initialSection) { layoutSize = property2.layoutSize; value54 = r18 + layoutSize; push = items2.push; Reflect.apply(push, items2, [[property, property2]]); r22 = r16; r23 = value54; } else { section = property2.section; lastSection = object3.lastSection; if (section > lastSection) { layoutSize = property2.layoutSize; value53 = r16 + layoutSize; push = items3.push; Reflect.apply(push, items3, [[property, property2]]); r22 = value53; r23 = r18; } else { type = property2.type; ITEM = env1_19.ITEM; reducibleJoin94: while (true) { if (type !== ITEM) { r22 = r16; r23 = r18; break reducibleJoin94; } section = property2.section; initialSection = object3.initialSection; reducibleJoin91: while (true) { reducibleJoin89: while (true) { if (section !== initialSection) { break reducibleJoin89; } item = property2.item; initialItem = object3.initialItem; if (item < initialItem) { layoutSize = property2.layoutSize; value52 = r18 + layoutSize; push = items2.push; Reflect.apply(push, items2, [[property, property2]]); r0 = r16; r24 = value52; break reducibleJoin91; } break reducibleJoin89; } layoutSize = property2.layoutSize; value51 = r16 + layoutSize; push = items3.push; Reflect.apply(push, items3, [[property, property2]]); r0 = value51; r24 = r18; break reducibleJoin91; } r22 = r0; r23 = r24; break reducibleJoin94; } } } value55 = map(); done = value55.done; if (done) { r5 = r22; r17 = r23; break reducibleLoop84; } r16 = r22; r18 = r23; r19 = value55; continue reducibleLoop84; } } property = items4[value15]; reducibleJoin111: while (true) { if (property == null) { break reducibleJoin111; } layoutStart = property.layoutStart; if (layoutStart > value15) { headerDataCache = this.headerDataCache; layoutStart = property.layoutStart; reducibleJoin99: while (true) { if (stickyHeaderFooter) { map = headerDataCache != null; r18 = map; break reducibleJoin99; } r18 = stickyHeaderFooter; break reducibleJoin99; } reducibleJoin101: while (true) { if (r18) { type = property.type; map = type !== 'HEADER'; r18 = map; break reducibleJoin101; } break reducibleJoin101; } reducibleJoin105: while (true) { if (r18) { layoutStart4 = headerDataCache.layoutStart; map = layoutStart - layoutStart4; layoutSize = headerDataCache.layoutSize; reducibleJoin104: while (true) { if (map - layoutSize > value15) { unshift = items4.unshift; get = binding2.get; SPACER = env1_19.SPACER; layoutStart5 = headerDataCache.layoutStart; layoutSize = headerDataCache.layoutSize; map = layoutStart5 + layoutSize; layoutStart6 = headerDataCache.layoutStart; value56 = layoutStart - layoutStart6; layoutSize = headerDataCache.layoutSize; Reflect.apply(unshift, items4, [Reflect.apply(get, binding2, [SPACER, map, value56 - layoutSize, value2, value15, value15])]); break reducibleJoin104; } break reducibleJoin104; } unshift = items4.unshift; get = binding2.get; HEADER = env1_19.HEADER; layoutStart = headerDataCache.layoutStart; layoutSize = headerDataCache.layoutSize; Reflect.apply(unshift, items4, [Reflect.apply(get, binding2, [HEADER, layoutStart, layoutSize, value2])]); layoutStart = headerDataCache.layoutStart; r0 = layoutStart; break reducibleJoin105; } r0 = layoutStart; break reducibleJoin105; } Math = global.Math; max = Math.max; map = Reflect.apply(max, Math, [r0 - r17, value15]); value57 = _createForOfIteratorHelperLoose_65155(items2); value58 = value57(); done = value58.done; if (!done) { r12 = value58; reducibleLoop106: while (true) { value59 = r12.value; value60 = env1_8(value59, 2); property = value60[value15]; property3 = value60[1]; unshift = items4.unshift; get = binding2.get; type = property3.type; layoutStart = property3.layoutStart; layoutSize = property3.layoutSize; section = property3.section; type3 = property3.type; ITEM = env1_19.ITEM; reducibleJoin108: while (true) { if (type3 !== ITEM) { item = value2; break reducibleJoin108; } item = property3.item; break reducibleJoin108; } Reflect.apply(unshift, items4, [Reflect.apply(get, binding2, [type, layoutStart, layoutSize, property, section, item])]); value61 = value57(); done = value61.done; if (done) { break reducibleLoop106; } r12 = value61; continue reducibleLoop106; } } if (map > value15) { unshift = items4.unshift; get = binding2.get; SPACER = env1_19.SPACER; Reflect.apply(unshift, items4, [Reflect.apply(get, binding2, [SPACER, value15, map, value2, value15, 1])]); break reducibleJoin111; } break reducibleJoin111; } break reducibleJoin111; } property = items4[items4.length - 1]; if (property != null) { layoutStart = property.layoutStart; layoutSize = property.layoutSize; map = layoutStart + layoutSize; r17 = map; } else { r17 = this.size; } let size = this.size; reducibleJoin129: while (true) { if (!(r17 < size)) { break reducibleJoin129; } footerDataCache = this.footerDataCache; reducibleJoin117: while (true) { if (stickyHeaderFooter) { map = footerDataCache != null; r13 = map; break reducibleJoin117; } r13 = stickyHeaderFooter; break reducibleJoin117; } reducibleJoin119: while (true) { if (r13) { type = property.type; map = type !== 'FOOTER'; r13 = map; break reducibleJoin119; } break reducibleJoin119; } reducibleJoin123: while (true) { if (r13) { layoutStart = footerDataCache.layoutStart; reducibleJoin122: while (true) { if (r17 < layoutStart) { push = items4.push; get = binding2.get; SPACER = env1_19.SPACER; layoutStart = footerDataCache.layoutStart; layoutSize = footerDataCache.layoutSize; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [SPACER, r17, layoutStart + layoutSize - r17, value2, 1, value15])]); break reducibleJoin122; } break reducibleJoin122; } push = items4.push; get = binding2.get; FOOTER = env1_19.FOOTER; layoutStart = footerDataCache.layoutStart; layoutSize = footerDataCache.layoutSize; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [FOOTER, layoutStart, layoutSize, value2])]); layoutStart = footerDataCache.layoutStart; layoutSize = footerDataCache.layoutSize; map = layoutStart + layoutSize; r0 = map; break reducibleJoin123; } r0 = r17; break reducibleJoin123; } map = r0 + r5; size = this.size; reducibleJoin125: while (true) { if (map < size) { push = items4.push; get = binding2.get; SPACER = env1_19.SPACER; size = this.size; Reflect.apply(push, items4, [Reflect.apply(get, binding2, [SPACER, map, size - map, value2, 1, 1])]); break reducibleJoin125; } break reducibleJoin125; } map = _createForOfIteratorHelperLoose_65155(items3); value62 = map(); done = value62.done; if (done) { break reducibleJoin129; } r3 = value62; reducibleLoop126: while (true) { value63 = r3.value; value64 = env1_8(value63, 2); property = value64[value15]; property4 = value64[1]; push = items4.push; get = binding2.get; type = property4.type; layoutStart = property4.layoutStart; layoutSize = property4.layoutSize; section = property4.section; type4 = property4.type; ITEM = env1_19.ITEM; reducibleJoin128: while (true) { if (type4 !== ITEM) { item = value2; break reducibleJoin128; } item = property4.item; break reducibleJoin128; } Reflect.apply(push, items4, [Reflect.apply(get, binding2, [type, layoutStart, layoutSize, property, section, item])]); value65 = map(); done = value65.done; if (done) { break reducibleJoin129; } r3 = value65; continue reducibleLoop126; } } const fill = binding2.fill; const disableRecycling = this.disableRecycling; reducibleJoin132: while (true) { if (disableRecycling) { r0 = disableRecycling; break reducibleJoin132; } props = this.props; disableRecyclingOnFullCompute = props.disableRecyclingOnFullCompute; r5 = disableRecyclingOnFullCompute && r6; r0 = r5; break reducibleJoin132; } Reflect.apply(fill, binding2, [r0]); return {size: this.size, items: items4}; } function value_65187() { // fn#65187, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:10025, offset: 0x01bc6b2a, size: 991 bytes, params: 1, frame: 50 var environment; var r15; var r27; var r32; var r38; var binding; var value6; var value7; var property; var sizeForSection; var SECTION; var size; var value10; var value11; var value12; var persistantItemData; var uniform; var sizeForItem; var object3; var ITEM; var value14; var value15; var value16; var value17; var sizeForItem2; var value19; var sizeForSectionFooter; var value21; var SECTION_FOOTER; var value22; const props = this.props; const sections = props.sections; const insetStart = props.insetStart; const value = 0; const r3 = insetStart === undefined ? value : insetStart; const insetEnd = props.insetEnd; const r5 = insetEnd === undefined ? value : insetEnd; const getRecyclerKey = props.getRecyclerKey; const r20 = getRecyclerKey !== undefined ? getRecyclerKey : defaultRecyclerKey; const Set = global.Set; const set = new Set(this.props.persistantKeys); this.persistantItemData = []; let object = []; this.dataCache = object; this.chunkCache = undefined; const env0_2 = this.chunkSize; const env0_3 = r3; this.headerDataCache = undefined; this.footerDataCache = undefined; const closure = pushData; const sizeForHeader = this.getSizeForHeader(); if (sizeForHeader > value) { binding = env0_3; value6 = binding + sizeForHeader; value7 = environment.__proto__; closure(binding, value6, {type: env1_19.HEADER, layoutStart: binding, layoutSize: sizeForHeader}); } let length = sections.length; if (value < length) { r15 = value; while (true) { property = sections[r15]; if (value !== property) { binding = env0_3; sizeForSection = this.getSizeForSection(r15); object = {}; SECTION = env1_19.SECTION; object.type = SECTION; object.layoutStart = binding; object.layoutSize = sizeForSection; object.section = r15; size = set.size; if (!(size > value)) { continue; } SECTION = env1_19.SECTION; value10 = r20(SECTION, r15); value11 = value10 != null; if (!value11) { r27 = value11; continue; } value12 = set.has(value10); r27 = value12; if (!r27) { continue; } persistantItemData = this.persistantItemData; persistantItemData.push(object); set.delete(value10); closure(binding, binding + sizeForSection, object); uniform = this.uniform; if (uniform) { sizeForItem2 = this.getSizeForItem(r15, value); binding = env0_3; value19 = binding + sizeForItem2 * property; ITEM = env1_19.ITEM; closure(binding, value19, {type: ITEM, uniform: true, layoutStart: binding, itemSize: sizeForItem2, layoutSize: sizeForItem2 * property, section: r15, items: property, sectionData: object}); } else { if (!(value < property)) { continue; } r32 = value; while (true) { sizeForItem = this.getSizeForItem(r15, r32); binding = env0_3; object3 = {}; ITEM = env1_19.ITEM; object3.type = ITEM; object3.layoutStart = binding; object3.layoutSize = sizeForItem; object3.section = r15; object3.item = r32; object3.sectionData = object; closure(binding, binding + sizeForItem, object3); size = set.size; if (size > value) { ITEM = env1_19.ITEM; value14 = r20(ITEM, r15, r32); value15 = value14 != null; if (!value15) { r38 = value15; continue; } value16 = set.has(value14); r38 = value16; if (r38) { persistantItemData = this.persistantItemData; persistantItemData.push(object3); set.delete(value14); break; } break; } value17 = typeof r32 === 'bigint' ? r32 + 1n : +r32 + 1; if (value17 < property) { r32 = value17; continue; } break; } } sizeForSectionFooter = this.getSizeForSectionFooter(r15); if (sizeForSectionFooter > value) { binding = env0_3; value21 = binding + sizeForSectionFooter; SECTION_FOOTER = env1_19.SECTION_FOOTER; closure(binding, value21, {type: SECTION_FOOTER, layoutStart: binding, layoutSize: sizeForSectionFooter, section: r15, sectionData: object}); break; } break; } value22 = typeof r15 === 'bigint' ? r15 + 1n : +r15 + 1; length = sections.length; if (value22 < length) { r15 = value22; continue; } break; } } const sizeForFooter = this.getSizeForFooter(); if (sizeForFooter > value) { binding = env0_3; closure(binding, binding + sizeForFooter, {type: env1_19.FOOTER, layoutStart: binding, layoutSize: sizeForFooter}); } this.size = PixelRatio.roundToNearestPixel(env0_3 + r5); this.dirty = false; } function value_65189(a0, a1) { // fn#65189, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:11747, offset: 0x01bc7014, size: 272 bytes, params: 3, frame: 23 var r3; var r10; var fullCompute; var value4; var data; var value5; var value6; var value7; var type; var ITEM; var SECTION; var section; var uniform; var item; var value8; var value9; reducibleJoin2: while (true) { if (this.dirty) { fullCompute = this.fullCompute; Reflect.apply(fullCompute, this, []); break reducibleJoin2; } break reducibleJoin2; } const value2 = _createForOfIteratorHelperLoose_65155(this.dataCache); const value3 = value2(); let done = value3.done; if (!done) { r3 = value3; reducibleLoop3: while (true) { value4 = r3.value; _createForOfIteratorHelperLoose_65155Binding = _createForOfIteratorHelperLoose_65155; data = value4.data; value5 = _createForOfIteratorHelperLoose_65155Binding(data); value6 = value5(); done = value6.done; if (!done) { r10 = value6; reducibleLoop4: while (true) { value7 = r10.value; type = value7.type; ITEM = env1_19.ITEM; if (ITEM === type) { reducibleJoin20: while (true) { if (a1 == null) { break reducibleJoin20; } uniform = value7.uniform; if (uniform === true) { reducibleJoin13: while (true) { if (value7.section === a0) { break reducibleLoop3; } break reducibleJoin13; } } uniform = value7.uniform; if (uniform != null) { break reducibleJoin20; } section = value7.section; if (section !== a0) { break reducibleJoin20; } item = value7.item; if (item === a1) { return value4; } break reducibleJoin20; } } else { SECTION = env1_19.SECTION; reducibleJoin20: while (true) { if (SECTION !== type) { break reducibleJoin20; } section = value7.section; if (section > a0) { return undefined; } if (a1 == null) { return value4; } break reducibleJoin20; } } value8 = value5(); done = value8.done; if (done) { value9 = value2(); done = value9.done; if (done) { return undefined; } r3 = value9; continue reducibleLoop3; } r10 = value8; continue reducibleLoop4; } } value9 = value2(); done = value9.done; if (done) { return undefined; } r3 = value9; continue reducibleLoop3; } return a1 > value7.items ? undefined : value4; } } function value_65190({chunk, targetSection, targetItem, padBottom}) { // fn#65190, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:12239, offset: 0x01bc7124, size: 571 bytes, params: 2, frame: 24 var r2; var value; var value4; var type; var ITEM; var SECTION; var section; var object2; var Math; var floor; var layoutStart; var chunkSize; var layoutSize; var uniform; var item; var itemSize; var value5; reducibleJoin2: while (true) { if (padBottom !== undefined) { break reducibleJoin2; } value = 16; padBottom = value; break reducibleJoin2; } value = environment.__proto__; const value2 = _createForOfIteratorHelperLoose_65155(chunk.data); const value3 = value2(); let done = value3.done; if (!done) { r2 = value3; reducibleLoop3: while (true) { value4 = r2.value; type = value4.type; ITEM = env1_19.ITEM; if (ITEM === type) { section = value4.section; reducibleJoin20: while (true) { if (section !== targetSection) { break reducibleJoin20; } if (targetItem == null) { break reducibleJoin20; } uniform = value4.uniform; if (uniform) { break reducibleLoop3; } item = value4.item; if (item >= targetItem) { return undefined; } item = value4.item; if (item === targetItem) { object2 = {}; Math = global.Math; floor = Math.floor; layoutStart = value4.layoutStart; layoutSize = value4.sectionData.layoutSize; value = layoutStart - layoutSize; chunkSize = this.chunkSize; object2.startIndex = Reflect.apply(floor, Math, [value / chunkSize]); Math = global.Math; floor = Math.floor; layoutStart = value4.layoutStart; layoutSize = value4.layoutSize; value = layoutStart + layoutSize + padBottom; chunkSize = this.chunkSize; object2.endIndex = Reflect.apply(floor, Math, [value / chunkSize]); return object2; } break reducibleJoin20; } } else { SECTION = env1_19.SECTION; reducibleJoin20: while (true) { if (SECTION !== type) { break reducibleJoin20; } if (targetItem != null) { break reducibleJoin20; } section = value4.section; if (targetSection < section) { return undefined; } section = value4.section; if (targetSection === section) { object2 = {}; Math = global.Math; floor = Math.floor; layoutStart = value4.layoutStart; chunkSize = this.chunkSize; object2.startIndex = Reflect.apply(floor, Math, [layoutStart / chunkSize]); Math = global.Math; floor = Math.floor; layoutStart = value4.layoutStart; value = layoutStart + value4.layoutSize + padBottom; chunkSize = this.chunkSize; object2.endIndex = Reflect.apply(floor, Math, [value / chunkSize]); return object2; } break reducibleJoin20; } } value5 = value2(); done = value5.done; if (done) { return undefined; } r2 = value5; continue reducibleLoop3; } if (targetItem >= value4.items) { return undefined; } layoutStart = value4.layoutStart; layoutSize = value4.sectionData.layoutSize; value = layoutStart + layoutSize; itemSize = value4.itemSize; value += itemSize * targetItem; object2 = {}; Math = global.Math; floor = Math.floor; chunkSize = this.chunkSize; object2.startIndex = Reflect.apply(floor, Math, [value / chunkSize]); Math = global.Math; floor = Math.floor; itemSize = value4.itemSize; value = value + itemSize + padBottom; chunkSize = this.chunkSize; object2.endIndex = Reflect.apply(floor, Math, [value / chunkSize]); return object2; } } function value_65191(a0, a1, a2) { // fn#65191, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:13089, offset: 0x01bc735f, size: 502 bytes, params: 4, frame: 25 var r2; var r12; var layoutSize; var fullCompute; var value5; var data; var value6; var value7; var value8; var type; var ITEM; var SECTION; var section; var object2; var layoutStart; var uniform; var item; var sectionData; var items2; var value9; var itemSize; var value10; var value11; if (a2 != null) { reducibleJoin2: while (true) { if (a2 < 0) { return undefined; } break reducibleJoin2; } } reducibleJoin4: while (true) { if (this.dirty) { fullCompute = this.fullCompute; Reflect.apply(fullCompute, this, []); break reducibleJoin4; } break reducibleJoin4; } const dataCache = this.dataCache; const value = 0; if (a1 < value) { return {'scrollPosition': 0, 'size': 0, 'sectionOffset': 0}; } const value3 = _createForOfIteratorHelperLoose_65155(dataCache); const value4 = value3(); let done = value4.done; if (!done) { r2 = value4; reducibleLoop6: while (true) { _createForOfIteratorHelperLoose_65155Binding = _createForOfIteratorHelperLoose_65155; value5 = r2.value; data = value5.data; value6 = _createForOfIteratorHelperLoose_65155Binding(data); value7 = value6(); done = value7.done; if (!done) { r12 = value7; reducibleLoop7: while (true) { value8 = r12.value; type = value8.type; ITEM = env1_19.ITEM; if (ITEM === type) { reducibleJoin28: while (true) { if (a2 == null) { break reducibleJoin28; } uniform = value8.uniform; if (uniform === true) { reducibleJoin17: while (true) { if (value8.section === a1) { items2 = value8.items; if (a2 > items2) { return undefined; } object2 = {}; sectionData = value8.sectionData; layoutStart = sectionData.layoutStart; sectionData = value8.sectionData; layoutSize = sectionData.layoutSize; value9 = layoutStart + layoutSize; itemSize = value8.itemSize; object2.scrollPosition = value9 + itemSize * a2; itemSize = value8.itemSize; object2.size = itemSize; reducibleJoin26: while (true) { if (a0) { sectionData = value8.sectionData; layoutSize = sectionData.layoutSize; break reducibleJoin26; } layoutSize = value; break reducibleJoin26; } object2.sectionOffset = layoutSize; return object2; } break reducibleJoin17; } } uniform = value8.uniform; if (uniform != null) { break reducibleJoin28; } section = value8.section; if (section !== a1) { break reducibleJoin28; } item = value8.item; if (item === a2) { object2 = {}; object2.scrollPosition = value8.layoutStart; layoutSize = value8.layoutSize; object2.size = layoutSize; if (a0) { object2.sectionOffset = value8.sectionData.layoutSize; return object2; } layoutSize = value; object2.sectionOffset = layoutSize; return object2; } break reducibleJoin28; } } else { SECTION = env1_19.SECTION; reducibleJoin28: while (true) { if (SECTION !== type) { break reducibleJoin28; } section = value8.section; if (section > a1) { return undefined; } if (a2 != null) { break reducibleJoin28; } section = value8.section; if (section === a1) { return {scrollPosition: value8.layoutStart, size: value8.layoutSize, sectionOffset: value}; } break reducibleJoin28; } } value10 = value6(); done = value10.done; if (done) { value11 = value3(); done = value11.done; if (done) { return undefined; } r2 = value11; continue reducibleLoop6; } r12 = value10; continue reducibleLoop7; } } value11 = value3(); done = value11.done; if (done) { return undefined; } r2 = value11; continue reducibleLoop6; } } } function value_65192(a0) { // fn#65192, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:13964, offset: 0x01bc7555, size: 212 bytes, params: 2, frame: 24 var r13; var r7; var r8; var r4; var r6; var r1; var r2; var binding; var fullCompute; var value5; var layoutStart; var value6; var get; var recyclerKey; var value7; var layoutSize; var value8; var value9; var value10; let value = a1; const value2 = undefined; reducibleJoin2: while (true) { if (value !== value2) { r13 = value; break reducibleJoin2; } value = environment.__proto__; binding = env1_18; r13 = binding; break reducibleJoin2; } reducibleJoin4: while (true) { if (this.dirty) { fullCompute = this.fullCompute; Reflect.apply(fullCompute, this, []); break reducibleJoin4; } break reducibleJoin4; } value = environment.__proto__; const value3 = _createForOfIteratorHelperLoose_65155(this.items)(); let done = value3.done; const value4 = 0; if (done) { r1 = value4; r2 = value2; } else { r7 = value4; r8 = value3; reducibleLoop5: while (true) { value5 = r8.value; layoutStart = value5.layoutStart; value6 = layoutStart + r7; get = r13.get; recyclerKey = value5.recyclerKey; value7 = Reflect.apply(get, r13, [recyclerKey]); reducibleJoin7: while (true) { if (value7 != null) { r4 = value7; break reducibleJoin7; } layoutSize = value5.layoutSize; r4 = layoutSize; break reducibleJoin7; } if (r4 > value4) { reducibleJoin10: while (true) { if (a0 >= value6) { if (a0 <= value6 + r4) { value = (a0 - value6) / r4; r1 = value; r2 = value5; break reducibleLoop5; } break reducibleJoin10; } break reducibleJoin10; } } reducibleJoin12: while (true) { if (value7 != null) { layoutSize = value5.layoutSize; value8 = value7 - layoutSize; r6 = value8; break reducibleJoin12; } r6 = value4; break reducibleJoin12; } value9 = r7 + r6; value10 = value(); done = value10.done; if (done) { r1 = value4; r2 = value2; break reducibleLoop5; } r7 = value9; r8 = value10; continue reducibleLoop5; } } return {item: r2, positionPercentage: r1}; } function FastListStickySectionRendererComponentV() { // fn#65197, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:15266, owner: FastListStickySectionRendererComponent.v, offset: 0x01bc78bd, size: 132 bytes, params: 1, frame: 18 var r4; var r1; var value3; var moduleValue; var horizontalBinding; var object; const scrollPosValueBinding = scrollPosValue; const value2 = null; if (value2 != scrollPosValueBinding) { value3 = environment.__proto__; moduleValue = require(4017) /* metro dependency 4017: ReanimatedRexport */; r4 = moduleValue.interpolate(scrollPosValue.get(), env0_2, env0_3); } else { r4 = value2; } if (value2 != r4) { horizontalBinding = horizontal; object = {}; if (horizontalBinding) { object.translateX = r4; } else { object.translateY = r4; } r1 = [object]; } else { r1 = undefined; } return {transform: r1}; } function FastListScrollAnchor(a0) { // fn#65204, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:17423, offset: 0x01bc7d33, size: 44 bytes, params: 2, frame: 13 env1_9(this, FastListScrollAnchor); this.getScrollPosition = a0; this.isCustomAnchor = false; } function value_65209(a0, a1) { // fn#65209, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:17988, offset: 0x01bc7dfb, size: 271 bytes, params: 3, frame: 26 var r6; var r4; var value5; var type; var ITEM; var isCustomAnchor; var anchorId; var section; var item; var value6; var layoutStart; var value7; let value = this.getScrollPosition(); this.cleanAnchor(); const value3 = _createForOfIteratorHelperLoose_65155(a1); const value4 = value3(); let done = value4.done; if (!done) { r6 = value4; reducibleLoop1: while (true) { value5 = r6.value; type = value5.type; ITEM = env1_19.ITEM; if (type === ITEM) { isCustomAnchor = this.isCustomAnchor; reducibleJoin9: while (true) { reducibleJoin5: while (true) { if (isCustomAnchor) { anchorId = this.anchorId; section = value5.section; item = value5.item; value6 = 0; r4 = item ?? value6; if (anchorId === a0(section, r4)) { this.anchorOffset = value5.layoutStart - value; return undefined; } break reducibleJoin5; } break reducibleJoin5; } isCustomAnchor = this.isCustomAnchor; if (isCustomAnchor) { break reducibleJoin9; } layoutStart = value5.layoutStart; if (layoutStart >= value) { break reducibleLoop1; } break reducibleJoin9; } } value7 = value3(); done = value7.done; if (done) { return undefined; } r6 = value7; continue reducibleLoop1; } layoutStart = value5.layoutStart; this.anchorOffset = layoutStart - value; section = value5.section; item = value5.item; value = 0; this.anchorId = a0(section, item ?? value); } } function FastList(a0) { // fn#65212, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:18948, offset: 0x01bc8128, size: 914 bytes, params: 2, frame: 29 var environment; var visibilityThreshold; const value = environment.__proto__; let binding = env1_9; binding(this, FastList); const items = [a0]; const value3 = env1_6(FastList); const value6 = env1_5(this, _isNativeReflectConstruct_65152() ? global.Reflect.construct(value3, items, env1_6(this).constructor) : value3.apply(this, items)); const value7 = 0; value6.containerSize = value7; value6.scrollPos = value7; value6.scrollPosValue = (require(8142) /* metro dependency 8142: ReanimatedHelperTypes */).createFakeSharedValue(value7); let props = value6.props; value6.scrollView = props.manualRef ?? env1_11.createRef(); value6.getItems = getItems_65213; value6.getScrollPosition = getScrollPosition_65214; value6.disableAnchoringTimeout = undefined; value6.viewTag = null; value6.workletMounted = (require(4017) /* metro dependency 4017: ReanimatedRexport */).makeMutable(false); value6.deferredCompute = -1; value6.deferNextCompute = false; binding = env1_29; const getScrollPosition = value6.getScrollPosition; const value8 = Object.create(binding.prototype, {constructor: {value: binding}}); const binding2 = new binding(getScrollPosition); value6.scrollAnchor = binding2 instanceof Object ? binding2 : value8; value6.viewabilityDebounce = -1; value6.previouslyViewableItems = []; value6._scrollPositionToPoint = _scrollPositionToPoint; value6._calculateScrollPosition = _calculateScrollPosition; props = value6.props; const chunkBase = props.chunkBase; const headerSize = props.headerSize; const footerSize = props.footerSize; const sectionSize = props.sectionSize; const itemSize = props.itemSize; const sectionFooterSize = props.sectionFooterSize; const sections = props.sections; const insetStart = props.insetStart; const insetEnd = props.insetEnd; const stickyHeaderFooter = props.stickyHeaderFooter; const getRecyclerKey = props.getRecyclerKey; let value11 = new env1_21({headerSize: headerSize, footerSize: footerSize, sectionSize: sectionSize, itemSize: itemSize, sectionFooterSize: sectionFooterSize, sections: sections, insetStart: insetStart, insetEnd: insetEnd, stickyHeaderFooter: stickyHeaderFooter, getRecyclerKey: getRecyclerKey, persistantKeys: props.persistantKeys, disableRecyclingOnFullCompute: props.disableRecyclingOnFullCompute}); value6.state = value6.getInitialState(chunkBase ?? value7, value11, true); value6.handleViewabilityChange = handleViewabilityChange; value6.isVisible = isVisible_65218; value6.scrollToTop = scrollToTop_65219; value6.scrollToLocation = scrollToLocation_65220; value6.scrollTo = scrollTo_65221; value6.handleScroll = handleScroll_65222; value6.handleLayout = handleLayout_65225; value6.handleMomentumScrollEnd = handleMomentumScrollEnd; value6.handleScrollBeginDrag = handleScrollBeginDrag; props = value6.props; const batchesToRender = props.batchesToRender; const getAnchorIdFromIndex = props.getAnchorIdFromIndex; const getAnchorIndexFromId = props.getAnchorIndexFromId; if (batchesToRender < 5) { throw new global.Error('FastList: `batchesToRender` must be >= 6'); } if (getAnchorIdFromIndex != null) { if (getAnchorIdFromIndex == null) { throw new global.Error('FastList: You must define BOTH `getAnchorIndexFromId` and `getAnchorIdFromIndex`, or neither'); } if (getAnchorIndexFromId != null) { value11 = value6.getViewabilityConfig(); if (value11.minimumViewTime <= value7) { throw new global.Error('FastList: `viewabilityConfig.minimumViewTime` must be greater than 0'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold <= value7) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold > 1) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } return value6; } throw new global.Error('FastList: You must define BOTH `getAnchorIndexFromId` and `getAnchorIdFromIndex`, or neither'); } if (getAnchorIndexFromId == null) { value11 = value6.getViewabilityConfig(); if (value11.minimumViewTime <= value7) { throw new global.Error('FastList: `viewabilityConfig.minimumViewTime` must be greater than 0'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold <= value7) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold > 1) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } return value6; } if (getAnchorIdFromIndex == null) { throw new global.Error('FastList: You must define BOTH `getAnchorIndexFromId` and `getAnchorIdFromIndex`, or neither'); } if (getAnchorIndexFromId != null) { value11 = value6.getViewabilityConfig(); if (value11.minimumViewTime <= value7) { throw new global.Error('FastList: `viewabilityConfig.minimumViewTime` must be greater than 0'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold <= value7) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } visibilityThreshold = value11.visibilityThreshold; if (visibilityThreshold > 1) { throw new global.Error('FastList: `viewabilityConfig.visibilityThreshold` must be floating point value greater than 0 and less than 1'); } return value6; } const Error = global.Error; throw new Error('FastList: You must define BOTH `getAnchorIndexFromId` and `getAnchorIdFromIndex`, or neither'); } function value_65229(a0, a1, a2) { // fn#65229, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:24976, offset: 0x01bc8ee9, size: 613 bytes, params: 4, frame: 32 var r22; var r13; var r2; var r15; var r7; var r1; var object2; var scrollPosition; var _calculateScrollPosition; var value6; var value10; var batchSize2; var value13; var block; var batchSize; var blockStart; var value14; var moduleValue; let value = a3; const value2 = undefined; const r10 = value !== value2 ? value : []; const props = this.props; const batchesToRender = props.batchesToRender; const initialScrollSection = props.initialScrollSection; value = 0; const r19 = value2 === initialScrollSection ? value : initialScrollSection; const initialScrollItem = props.initialScrollItem; const initialScrollOrientation = props.initialScrollOrientation; const r18 = value2 === initialScrollOrientation ? 'visible' : initialScrollOrientation; const initialScrollStart = props.initialScrollStart; const stickySectionsVariant = props.stickySectionsVariant; const value4 = 'default'; let r5 = value2 === stickySectionsVariant ? value4 : stickySectionsVariant; const horizontal = props.horizontal; let r12 = value2 !== horizontal && horizontal; const scrollPosValue = props.scrollPosValue; a1.setInfo(a0); let r6 = initialScrollStart ?? value; if (initialScrollStart != null) { r2 = this._scrollPositionToPoint(initialScrollStart); r15 = r6; } else if (r19 > value) { if (a0 > value) { scrollPosition = a1.computeScrollPosition(value4 === r5, r19, initialScrollItem); if (scrollPosition != null) { _calculateScrollPosition = this._calculateScrollPosition; object2 = {itemCoords: scrollPosition}; object2.fullSize = a1.getSize(); object2.orientation = r18; object2.paddingEnd = 16; value6 = Reflect.apply(_calculateScrollPosition, this, [object2]); r13 = value6 ?? scrollPosition.scrollPosition - scrollPosition.sectionOffset; if (value6 != null) { r2 = this._scrollPositionToPoint(value6); r15 = r13; } else { r2 = value2; r15 = r13; } } else { r2 = value2; r15 = r6; } } else { r2 = value2; r15 = r6; } } else if (initialScrollItem != null) { if (a0 > value) { scrollPosition = a1.computeScrollPosition(value4 === r5, r19, initialScrollItem); if (scrollPosition != null) { _calculateScrollPosition = this._calculateScrollPosition; object2 = {itemCoords: scrollPosition}; object2.fullSize = a1.getSize(); object2.orientation = r18; object2.paddingEnd = 16; value6 = Reflect.apply(_calculateScrollPosition, this, [object2]); r13 = value6 ?? scrollPosition.scrollPosition - scrollPosition.sectionOffset; if (value6 != null) { r2 = this._scrollPositionToPoint(value6); r15 = r13; } else { r2 = value2; r15 = r13; } } else { r2 = value2; r15 = r6; } } else { r2 = value2; r15 = r6; } } else { r2 = value2; r15 = r6; } if (a2) { if (a0 > value) { value13 = environment.__proto__; block = computeBlock(a0, r15, batchesToRender); batchSize = block.batchSize; blockStart = block.blockStart; r5 = block.blockEnd; r6 = blockStart; r7 = batchSize; } else { value10 = environment.__proto__; batchSize2 = getBatchSize(a0); r5 = r15 + a0; r6 = r15; r7 = batchSize2; } } else { value10 = environment.__proto__; batchSize2 = getBatchSize(a0); r5 = r15 + a0; r6 = r15; r7 = batchSize2; } r2 = r2 ?? ({'x': 0, 'y': 0}); r12 = r12 ? r2.x : r2.y; this.scrollPos = r12; if (scrollPosValue != null) { scrollPosValue.set(r12); this.scrollPosValue = scrollPosValue; } else { value14 = environment.__proto__; moduleValue = require(4017) /* metro dependency 4017: ReanimatedRexport */; this.scrollPosValue = moduleValue.makeMutable(r12); } object2 = {}; if (a0 > value) { r1 = a1.compute(r6, r5, r10, true); r22 = r10; } else { r1 = {size: value, items: []}; } copyDataProperties(object2, r1, r22); object2['batchSize'] = r7; object2['blockStart'] = r6; object2['blockEnd'] = r5; object2['isFirstLayout'] = a2; object2['fastListComputer'] = a1; object2['initialContentOffset'] = r2; object2['hasReachedEndBefore'] = false; return object2; } function value_65230() { // fn#65230, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:26104, offset: 0x01bc914e, size: 235 bytes, params: 1, frame: 19 var environment; const scrollPosValue = this.scrollPosValue; const workletMounted = this.workletMounted; const horizontal = this.props.horizontal; const r8 = horizontal !== undefined && horizontal; value = environment.__proto__; const WorkletEventHandler = (require(4017) /* metro dependency 4017: ReanimatedRexport */).WorkletEventHandler; const closure = value_65230T; closure.__closure = {horizontal: r8, workletMounted: workletMounted, scrollPosValue: scrollPosValue}; closure.__workletHash = 13353994165730; closure.__initData = env1_30; const value2 = Object.create(WorkletEventHandler.prototype, {constructor: {value: WorkletEventHandler}}); const workletEventHandler = new WorkletEventHandler(closure, ['onScroll']); this.worklet = workletEventHandler instanceof Object ? workletEventHandler : value2; this.viewTag = findNodeHandle(this.scrollView.current); const worklet = this.worklet; worklet.registerForEvents(this.viewTag); this.queueViewabilityChange(); } function value_65232({getAnchorIdFromIndex}, a1) { // fn#65232, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:26686, offset: 0x01bc92bf, size: 149 bytes, params: 3, frame: 17 var r4; var disableAnchoringTimeout; var scrollAnchor; const EXPERIMENTAL_enableAnchorWhileScrolling = this.props.EXPERIMENTAL_enableAnchorWhileScrolling; let value = EXPERIMENTAL_enableAnchorWhileScrolling !== undefined; let r0 = value && EXPERIMENTAL_enableAnchorWhileScrolling; const isFirstLayout = this.state.isFirstLayout; if (r0) { value = null; r4 = value == getAnchorIdFromIndex || isFirstLayout; r4 = !r4 ? isFirstLayout !== a1.isFirstLayout : r4; if (!r4) { scrollAnchor = this.scrollAnchor; scrollAnchor.findOrUpdateAnchor(getAnchorIdFromIndex, a1.items); } scrollAnchor = this.scrollAnchor; r0 = scrollAnchor.hasAnchor() || value; } else { disableAnchoringTimeout = this.disableAnchoringTimeout; value = null; if (value == disableAnchoringTimeout) { value = null; r4 = value == getAnchorIdFromIndex || isFirstLayout; r4 = !r4 ? isFirstLayout !== a1.isFirstLayout : r4; if (!r4) { scrollAnchor = this.scrollAnchor; scrollAnchor.findOrUpdateAnchor(getAnchorIdFromIndex, a1.items); } scrollAnchor = this.scrollAnchor; r0 = scrollAnchor.hasAnchor() || value; } else { r0 = value; } } return r0; } function value_65233({scrollPosValue}, a1, a2) { // fn#65233, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:27026, offset: 0x01bc9354, size: 201 bytes, params: 4, frame: 13 var current; if (scrollPosValue !== this.props.scrollPosValue) { throw new global.Error('FastList: scrollPosValue cannot changed after mounting'); } if (this.state.isFirstLayout) { if (a2) { this.anchorScroll(); } } else if (a1.isFirstLayout) { if (this.props.chunkBase == null) { current = this.scrollView.current; if (current != null) { current.measure(_fun65234); } } } else if (a2) { this.anchorScroll(); } if (this.state.items !== a1.items) { this.queueViewabilityChange(); } } function value_65239() { // fn#65239, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:28342, offset: 0x01bc95ac, size: 173 bytes, params: 1, frame: 20 var anchorOffset; var anchorIndex; const {getAnchorIndexFromId, stickySectionsVariant} = this.props; let value = 'default'; const r1 = stickySectionsVariant === undefined ? value : stickySectionsVariant; const fastListComputer = this.state.fastListComputer; if (getAnchorIndexFromId != null) { anchorOffset = this.scrollAnchor.anchorOffset; if (anchorOffset != null) { anchorIndex = this.scrollAnchor.getAnchorIndex(getAnchorIndexFromId); if (anchorIndex != null) { value = fastListComputer.computeScrollPosition(value === r1, anchorIndex.section, anchorIndex.item); if (value != null && this.scrollPos !== value.scrollPosition - anchorOffset) { this.scrollTo(value.scrollPosition - anchorOffset); } } } } } function value_65242() { // fn#65242, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:29039, offset: 0x01bc96a9, size: 257 bytes, params: 1, frame: 21 var scrollToLocation; var object2; var value3; const props = this.props; const initialScrollItem = props.initialScrollItem; const initialScrollSection = props.initialScrollSection; const value = 0; let r9 = initialScrollSection === undefined ? value : initialScrollSection; const initialScrollOrientation = props.initialScrollOrientation; const r1 = initialScrollOrientation === undefined ? 'visible' : initialScrollOrientation; const initialScrollStart = props.initialScrollStart; if (initialScrollItem != null) { if (initialScrollStart != null) { this.scrollTo(initialScrollStart, false); } else { scrollToLocation = this.scrollToLocation; object2 = {section: r9}; value3 = -1; r9 = initialScrollItem ?? value3; object2.item = r9; object2.orientation = r1; object2.paddingEnd = 16; object2.setAnchor = true; if (Reflect.apply(scrollToLocation, this, [object2])) { this.deferNextCompute = true; } else { this.scrollPosValue.set(value); if (value3 !== this.deferredCompute) { global.cancelAnimationFrame(this.deferredCompute); } this.deferredCompute = global.requestAnimationFrame(_fun65243); } } } else if (r9 <= value) { if (initialScrollStart == null) { this.computeBlocks(); } else if (initialScrollStart != null) { this.scrollTo(initialScrollStart, false); } else { scrollToLocation = this.scrollToLocation; object2 = {section: r9}; value3 = -1; r9 = initialScrollItem ?? value3; object2.item = r9; object2.orientation = r1; object2.paddingEnd = 16; object2.setAnchor = true; if (Reflect.apply(scrollToLocation, this, [object2])) { this.deferNextCompute = true; } else { this.scrollPosValue.set(value); if (value3 !== this.deferredCompute) { global.cancelAnimationFrame(this.deferredCompute); } this.deferredCompute = global.requestAnimationFrame(_fun65243); } } } else if (initialScrollStart != null) { this.scrollTo(initialScrollStart, false); } else { scrollToLocation = this.scrollToLocation; object2 = {section: r9}; value3 = -1; r9 = initialScrollItem ?? value3; object2.item = r9; object2.orientation = r1; object2.paddingEnd = 16; object2.setAnchor = true; if (Reflect.apply(scrollToLocation, this, [object2])) { this.deferNextCompute = true; } else { this.scrollPosValue.set(value); if (value3 !== this.deferredCompute) { global.cancelAnimationFrame(this.deferredCompute); } this.deferredCompute = global.requestAnimationFrame(_fun65243); } } } function value_65244() { // fn#65244, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:29598, offset: 0x01bc97bd, size: 233 bytes, params: 1, frame: 19 var setState; var object2; const {batchesToRender, chunkBase} = this.props; const {isFirstLayout, fastListComputer, items} = this.state; let value = environment.__proto__; value = computeBlock(chunkBase ?? this.containerSize, this.scrollPos, batchesToRender); if (value.batchSize !== this.state.batchSize) { setState = this.setState; object2 = {}; copyDataProperties(object2, value, undefined); copyDataProperties(object2, fastListComputer.compute(value.blockStart, value.blockEnd, items), undefined); object2['isFirstLayout'] = false; Reflect.apply(setState, this, [object2]); } else if (value.blockStart !== this.state.blockStart) { setState = this.setState; object2 = {}; copyDataProperties(object2, value, undefined); copyDataProperties(object2, fastListComputer.compute(value.blockStart, value.blockEnd, items), undefined); object2['isFirstLayout'] = false; Reflect.apply(setState, this, [object2]); } else if (value.blockEnd !== this.state.blockEnd) { setState = this.setState; object2 = {}; copyDataProperties(object2, value, undefined); copyDataProperties(object2, fastListComputer.compute(value.blockStart, value.blockEnd, items), undefined); object2['isFirstLayout'] = false; Reflect.apply(setState, this, [object2]); } else if (isFirstLayout) { this.setState({isFirstLayout: false}); } } function value_65245() { // fn#65245, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:30034, offset: 0x01bc98a6, size: 1111 bytes, params: 1, frame: 44 var r2; var r26; var r25; var r24; var r23; var value12; var type; var key; var layoutStart; var recyclerKey; var layoutSize; var section; var item; var SPACER; var HEADER; var FOOTER; var SECTION; var ITEM; var SECTION_FOOTER; var push; var jsxRuntimeEnv1_16Binding; var binding; var closure; var scrollPosValue; var value13; const props = this.props; const stickySectionsVariant = props.stickySectionsVariant; let value = 'default'; const r18 = stickySectionsVariant === undefined ? value : stickySectionsVariant; const renderHeader = props.renderHeader; const r17 = renderHeader !== undefined ? renderHeader : renderDefaultEmpty; const renderFooter = props.renderFooter; const r16 = renderFooter !== undefined ? renderFooter : renderDefaultEmpty; const renderSection = props.renderSection; const r15 = renderSection !== undefined ? renderSection : renderDefaultEmpty; const renderItem = props.renderItem; const renderSectionFooter = props.renderSectionFooter; const r13 = renderSectionFooter !== undefined ? renderSectionFooter : renderDefaultEmpty; const optimizeListItemRender = props.optimizeListItemRender; const r12 = optimizeListItemRender !== undefined && optimizeListItemRender; const disableContentWrappers = props.disableContentWrappers; const r11 = disableContentWrappers !== undefined && disableContentWrappers; props.debugLayout; const items4 = this.state.items; const horizontal = this.props.horizontal; const r10 = horizontal != null && horizontal; const items2 = []; items4.forEach(_fun65246); const items3 = []; const value10 = _createForOfIteratorHelperLoose_65155(items4); const value11 = value10(); let done = value11.done; if (!done) { r2 = value11; while (true) { value12 = r2.value; type = value12.type; key = value12.key; layoutStart = value12.layoutStart; recyclerKey = value12.recyclerKey; layoutSize = value12.layoutSize; section = value12.section; item = value12.item; if (layoutSize !== 0) { SPACER = env1_19.SPACER; if (SPACER === type) { push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; Reflect.apply(push, items3, [((Component) => )(env1_28)]); break; } HEADER = env1_19.HEADER; if (HEADER === type) { push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_27; if (r12) { r23 = r17; continue; } r23 = _fun65247; Reflect.apply(push, items3, [((Component) => {r23})(binding)]); break; } FOOTER = env1_19.FOOTER; if (FOOTER === type) { push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_27; if (r12) { r24 = r16; continue; } r24 = _fun65248; Reflect.apply(push, items3, [((Component) => {r24})(binding)]); break; } SECTION = env1_19.SECTION; if (SECTION === type) { items2.shift(); if (value !== r18) { push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_24; if (r12) { r24 = r15; continue; } r24 = _fun65249; Reflect.apply(push, items3, [((Component) => {r24})(binding)]); break; } push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_23; scrollPosValue = this.scrollPosValue; if (r12) { r25 = r15; continue; } r25 = _fun65250; Reflect.apply(push, items3, [((Component) => {r25})(binding)]); break; } ITEM = env1_19.ITEM; if (ITEM === type) { push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_26; if (r12) { r25 = renderItem; continue; } r25 = function(a0) { var r3; var r5; var value = copyRestArgs(0, r5); var renderItemBinding = renderItem; var items = []; arraySpread(items, value, 0, r3); return apply(renderItemBinding, items, undefined, r3); }; Reflect.apply(push, items3, [((Component) => {r25})(binding)]); break; } SECTION_FOOTER = env1_19.SECTION_FOOTER; if (SECTION_FOOTER !== type) { break; } push = items3.push; jsxRuntimeEnv1_16Binding = jsxRuntimeEnv1_16; binding = env1_25; if (r12) { r26 = r13; continue; } closure = _fun65252; r26 = closure; Reflect.apply(push, items3, [((Component) => {r26})(binding)]); break; } value13 = value10(); done = value13.done; if (done) { break; } r2 = value13; continue; } } return items3; } function value_65253() { // fn#65253, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:31946, offset: 0x01bc9df9, size: 41 bytes, params: 1, frame: 13 const sections = this.props.sections; return sections.reduce(function(a0, a1) { return a0 + a1; }, 0) === 0; } function value_65256() { // fn#65256, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:32131, offset: 0x01bc9e42, size: 625 bytes, params: 1, frame: 21 var r8; var value; const props = this.props; props.manualRef; props.onScroll; props.onScrollEnd; props.onLayout; props.renderHeader; props.renderFooter; props.renderSection; props.renderItem; props.renderSectionFooter; props.getRecyclerKey; props.onEndReached; props.endReachedThreshold; props.headerSize; props.footerSize; props.sectionSize; props.sectionFooterSize; props.itemSize; props.sections; props.scrollPosValue; props.batchesToRender; props.optimizeListItemRender; props.initialScrollSection; props.initialScrollItem; props.initialScrollOrientation; props.initialScrollStart; props.getAnchorIdFromIndex; props.getAnchorIndexFromId; props.EXPERIMENTAL_enableAnchorWhileScrolling; props.chunkBase; props.disableContentWrappers; props.childrenWrapper; props.stickyHeaderFooter; props.stickySectionsVariant; props.persistantKeys; props.disableRecyclingOnFullCompute; props.disableLegacyGestureHandling; props.viewabilityConfig; props.onViewableItemsChanged; props.debugLayout; const renderAccessory = props.renderAccessory; const removeClippedSubviews = props.removeClippedSubviews; if (removeClippedSubviews !== undefined) { r8 = removeClippedSubviews; } else { value = environment.__proto__; value = require(477) /* metro dependency 477: PlatformUtils */; value = value.isAndroid(); r8 = value; } const inActionSheet = props.inActionSheet; value = environment.__proto__; const value2 = env1_4(props, env1_3); const r2 = inActionSheet ? (require(6277) /* metro dependency 6277 */).BottomSheetScrollView : ScrollView; const r2Props = {...value2}; r2Props['accessibilityRole'] = 'list'; r2Props['ref'] = (importDefault(8143) /* metro dependency 8143: refObjectUnionAsProp */)(this.scrollView); r2Props['scrollEventThrottle'] = 16; r2Props['contentOffset'] = this.state.initialContentOffset; r2Props['onScroll'] = this.handleScroll; r2Props['onLayout'] = this.handleLayout; r2Props['onMomentumScrollEnd'] = this.handleMomentumScrollEnd; r2Props['onScrollBeginDrag'] = this.handleScrollBeginDrag; r2Props['removeClippedSubviews'] = r8; const value5 = ((Component) => {this.renderItems()})(r2); const jsxRuntimeEnv1_17Binding = jsxRuntimeEnv1_17; const items2 = [{value5}]; value = null; items2[1] = value != renderAccessory ? renderAccessory(this) : value; return ( <> {items2} ); } function value_65257(a0, a1) { // fn#65257, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:33546, offset: 0x01bca0b3, size: 330 bytes, params: 3, frame: 21 var r0; var value2; var compute; var blockStart; var blockEnd; var items2; const fastListComputer = a1.fastListComputer; const updateProps = fastListComputer.updateProps; let object2 = {}; object2.headerSize = a0.headerSize; object2.footerSize = a0.footerSize; object2.sectionSize = a0.sectionSize; object2.itemSize = a0.itemSize; object2.sectionFooterSize = a0.sectionFooterSize; object2.sections = a0.sections; object2.insetStart = a0.insetStart; object2.insetEnd = a0.insetEnd; object2.stickyHeaderFooter = a0.stickyHeaderFooter; const getRecyclerKey = a0.getRecyclerKey; object2.getRecyclerKey = getRecyclerKey; object2.persistantKeys = a0.persistantKeys; object2.disableRecyclingOnFullCompute = a0.disableRecyclingOnFullCompute; Reflect.apply(updateProps, fastListComputer, [object2]); const batchSize = a1.batchSize; let value = 0; if (value === batchSize) { object2 = {}; copyDataProperties(object2, a1, undefined); object2['size'] = (a0.insetStart ?? value) + (a0.insetEnd ?? value); object2['items'] = []; r0 = object2; } else { value = fastListComputer.isDirty(); value2 = null; if (value) { object2 = {}; copyDataProperties(object2, a1, undefined); compute = fastListComputer.compute; blockStart = a1.blockStart; blockEnd = a1.blockEnd; items2 = a1.items; copyDataProperties(object2, Reflect.apply(compute, fastListComputer, [blockStart, blockEnd, value2 != items2 ? items2 : []]), undefined); r0 = object2; } else { r0 = value2; } } return r0; } function _fun65166(a0) { // fn#65166, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:2585, offset: 0x01bc54c1, size: 62 bytes, params: 2, frame: 15 const type = a0.type; const recyclerKey = a0.recyclerKey; let value = env0_0._itemsForType(type); value = env2_8(value, 1); value[0][recyclerKey] = a0; } function _fun65171(a0) { // fn#65171, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3444, offset: 0x01bc56dc, size: 73 bytes, params: 2, frame: 16 const binding = env0_0; const value4 = env2_8(binding._itemsForType(a0), 2); binding._fill(value4[0], value4[1], env0_1); } function _fun65173({key}) { // fn#65173, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:3593, offset: 0x01bc57b5, size: 54 bytes, params: 2, frame: 4 const property = require[env0_1]; if (property == null) { return false; } property.key = key; const binding = env0_1; env0_1 = typeof binding === 'bigint' ? binding + 1n : +binding + 1; } function addInitialSection(a0, a1, a2, a3) { // fn#65185, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:5926, owner: value_65184.addInitialSection, offset: 0x01bc6a57, size: 164 bytes, params: 5, frame: 27 var value4; var binding5; let binding = env0_4; let push = binding.push; const binding2 = env0_5; const get = binding2.get; const binding3 = env2_19; const SECTION = binding3.SECTION; const binding4 = env0_3; const SECTION2 = binding3.SECTION; Reflect.apply(push, binding, [Reflect.apply(get, binding2, [SECTION, a1, a2, binding4(SECTION2, a0), a0])]); const value3 = a1 + a2; if (value3 < a3) { binding = env0_6; value4 = typeof binding === 'bigint' ? binding + 1n : +binding + 1; binding = env0_4; push = binding.push; binding5 = env0_5; Reflect.apply(push, binding, [binding5.get(env2_19.SPACER, value3, a3 - value3, undefined, 0, value4)]); } } function value_65184IsVisible(a0, a1) { // fn#65186, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:6070, owner: value_65184.isVisible, offset: 0x01bc6afb, size: 47 bytes, params: 3, frame: 5 const binding = env0_2; return binding ? a0 >= env0_0 - a1 && a0 < require : !binding; } function pushData(a0, a1, a2) { // fn#65188, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:10388, owner: value_65187.pushData, offset: 0x01bc6f09, size: 267 bytes, params: 4, frame: 19 var r0; var object2; env0_3 = env0_3 + (a1 - a0); let Math = global.Math; let max = Math.max; const Math2 = global.Math; const value3 = Reflect.apply(max, Math, [Math2.floor(a0 / chunkSize), 0]); Math = global.Math; max = Math.max; const Math3 = global.Math; const value5 = Reflect.apply(max, Math, [Math3.floor(a1 / chunkSize) - 1, value3]); const chunk = env0_0.getChunk(value3); if (chunk != null) { r0 = chunk; } else { object2 = {start: value3, end: value5, data: []}; env0_1.push(object2); r0 = object2; } const type = a2.type; const HEADER = env2_19.HEADER; if (type === HEADER) { env0_0.headerDataCache = a2; } else if (a2.type === env2_19.FOOTER) { env0_0.footerDataCache = a2; } r0.end = value5; r0.data.push(a2); } function FastListGetItems() { // fn#65213, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:19329, owner: FastList.getItems, offset: 0x01bc84ba, size: 20 bytes, params: 1, frame: 1 return env0_0.state.items; } function FastListGetScrollPosition() { // fn#65214, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:19367, owner: FastList.getScrollPosition, offset: 0x01bc84ce, size: 15 bytes, params: 1, frame: 1 return env0_0.scrollPos; } function _scrollPositionToPoint(a0) { // fn#65215, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:19638, owner: FastList._scrollPositionToPoint, offset: 0x01bc84dd, size: 49 bytes, params: 2, frame: 6 const value = a0; const horizontal = env0_0.props.horizontal; const value3 = 0; return {x: horizontal ? value : value3, y: horizontal ? value3 : value}; } function _calculateScrollPosition({itemCoords, fullSize, orientation, paddingStart, paddingEnd}) { // fn#65216, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:19719, owner: FastList._calculateScrollPosition, offset: 0x01bc850e, size: 382 bytes, params: 2, frame: 25 var r6; var value; var Math; var floor; var max; var Math2; orientation = orientation === undefined ? 'top' : orientation; paddingStart = paddingStart === undefined ? 0 : paddingStart; paddingEnd = paddingEnd === undefined ? 0 : paddingEnd; let scrollPosition = itemCoords.scrollPosition; const size = itemCoords.size; const sectionOffset = itemCoords.sectionOffset; const r0 = env0_0.containerSize > 0 ? env0_0.containerSize : env0_0.props.chunkBase ?? 0; orientation = size >= r0 ? 'top' : orientation; if (orientation === 'visible') { if (scrollPosition + sectionOffset >= env0_0.scrollPos + paddingStart) { if (scrollPosition + size <= env0_0.scrollPos + (r0 - paddingEnd)) { return null; } r6 = size > r0 || scrollPosition < env0_0.scrollPos ? scrollPosition - (sectionOffset + paddingStart) : scrollPosition + size + paddingEnd - r0; Math = global.Math; max = Math.max; Math2 = global.Math; return Reflect.apply(max, Math, [0, Math2.min(r6, fullSize - r0)]); } r6 = size > r0 || scrollPosition < env0_0.scrollPos ? scrollPosition - (sectionOffset + paddingStart) : scrollPosition + size + paddingEnd - r0; } else if (orientation === 'top') { r6 = scrollPosition - (sectionOffset + paddingStart); } else if (orientation !== 'center') { r6 = scrollPosition; } else { scrollPosition = itemCoords.scrollPosition; Math = global.Math; floor = Math.floor; value = scrollPosition + Reflect.apply(floor, Math, [itemCoords.size / 2]); Math = global.Math; floor = Math.floor; value -= Reflect.apply(floor, Math, [r0 / 2]); r6 = value; } Math = global.Math; max = Math.max; Math2 = global.Math; return Reflect.apply(max, Math, [0, Math2.min(r6, fullSize - r0)]); } function handleViewabilityChange() { // fn#65217, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:20716, owner: FastList.handleViewabilityChange, offset: 0x01bc868c, size: 303 bytes, params: 1, frame: 26 var r6; var binding; var visibilityThreshold; var items3; var scrollPos; var value2; var items2; var value3; var value4; var value5; var done; var value6; var layoutStart; var Math; var max; var value7; var min; var layoutSize; var value8; var value9; var push; var recyclerKey; var value10; var moduleValue; const onViewableItemsChanged = env0_0.props.onViewableItemsChanged; if (onViewableItemsChanged != null) { binding = env0_0; visibilityThreshold = binding.getViewabilityConfig().visibilityThreshold; items3 = binding.state.items; scrollPos = binding.scrollPos; value2 = binding.scrollPos + binding.containerSize; items2 = []; value3 = environment.__proto__.__proto__; value4 = _createForOfIteratorHelperLoose_65155(items3); value5 = value4(); done = value5.done; if (!done) { r6 = value5; while (true) { value6 = r6.value; layoutStart = value6.layoutStart; if (layoutStart > value2) { break; } Math = global.Math; max = Math.max; layoutStart = value6.layoutStart; value7 = Reflect.apply(max, Math, [layoutStart, scrollPos]); Math = global.Math; min = Math.min; layoutStart = value6.layoutStart; layoutSize = value6.layoutSize; value8 = Reflect.apply(min, Math, [layoutStart + layoutSize, value2]); if (value7 >= value8) { continue; } value9 = value8 - value7; layoutSize = value6.layoutSize; if (!(value9 / layoutSize >= visibilityThreshold)) { continue; } push = items2.push; recyclerKey = value6.recyclerKey; Reflect.apply(push, items2, [recyclerKey]); value10 = value4(); done = value10.done; if (done) { break; } r6 = value10; continue; } } moduleValue = require(628) /* metro dependency 628: shallowEqual */; if (!moduleValue.areArraysShallowEqual(items2, env0_0.previouslyViewableItems)) { env0_0.previouslyViewableItems = items2; onViewableItemsChanged(items2); } } } function FastListIsVisible(a0) { // fn#65218, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:21224, owner: FastList.isVisible, offset: 0x01bc87bb, size: 77 bytes, params: 2, frame: 5 const value = a1; const value2 = a2; return a0 >= env0_0.scrollPos + (value !== undefined ? value : 0) && a0 <= env0_0.scrollPos + env0_0.containerSize - (value2 !== undefined ? value2 : 0); } function FastListScrollToTop() { // fn#65219, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:21302, owner: FastList.scrollToTop, offset: 0x01bc8808, size: 79 bytes, params: 1, frame: 15 var r1; var r3; var current; let value = a0; const r4 = !(value !== undefined) || value; const scrollView = env0_0.scrollView; value = scrollView == null; if (value) { r1 = value; r3 = scrollView; } else { current = scrollView.current; r1 = current == null; r3 = current; } if (!r1) { r3.scrollTo({'x': 0, 'y': 0, animated: r4}); } } function FastListScrollToLocation({section, item, animated, orientation, paddingStart, paddingEnd, setAnchor}) { // fn#65220, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:21415, owner: FastList.scrollToLocation, offset: 0x01bc8857, size: 446 bytes, params: 2, frame: 28 var r18; var scrollAnchor; var scrollTo; animated = !(animated === undefined) && animated; orientation = orientation === undefined ? 'top' : orientation; paddingStart = paddingStart === undefined ? 0 : paddingStart; paddingEnd = paddingEnd === undefined ? 0 : paddingEnd; setAnchor = !(setAnchor === undefined) && setAnchor; const current = env0_0.scrollView.current; if (current == null) { return false; } let binding = env0_0; const {getAnchorIdFromIndex, stickySectionsVariant} = binding.props; const value2 = 'default'; const r1 = stickySectionsVariant === undefined ? value2 : stickySectionsVariant; const fastListComputer = binding.state.fastListComputer; const scrollPosition = fastListComputer.computeScrollPosition(value2 === r1, section, item); if (scrollPosition == null) { return false; } if (orientation === 'visible') { binding = env0_0; if (binding.isVisible(scrollPosition.scrollPosition, paddingStart, paddingEnd)) { return false; } } binding = env0_0; const _calculateScrollPosition = binding._calculateScrollPosition; let object2 = {itemCoords: scrollPosition}; object2.fullSize = fastListComputer.getSize(); object2.orientation = orientation; object2.paddingStart = paddingStart; object2.paddingEnd = paddingEnd; const value3 = Reflect.apply(_calculateScrollPosition, binding, [object2]); if (!animated && setAnchor && getAnchorIdFromIndex != null) { scrollAnchor = env0_0.scrollAnchor; scrollAnchor.setCustomAnchor(getAnchorIdFromIndex, scrollPosition.scrollPosition - (value3 ?? 0), section, item); r18 = section; } let r0 = value3 != null && value3 !== env0_0.scrollPos; if (r0) { if (!animated) { binding = env0_0; binding.scrollPos = value3; binding.computeBlocks(); } scrollTo = current.scrollTo; object2 = {}; binding = env0_0; copyDataProperties(object2, binding._scrollPositionToPoint(value3), r18); object2['animated'] = animated; Reflect.apply(scrollTo, current, [object2]); r0 = true; } return r0; } function FastListScrollTo(a0) { // fn#65221, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:22152, owner: FastList.scrollTo, offset: 0x01bc8a15, size: 151 bytes, params: 2, frame: 18 var r1; var r0; var scrollTo; var object2; const value = a1; const r6 = value !== undefined ? value : false; let binding = env0_0; const current = binding.scrollView.current; const fastListComputer = binding.state.fastListComputer; const value2 = current != null; if (value2) { r1 = a0 <= fastListComputer.getSize() - env0_0.containerSize && a0 !== env0_0.scrollPos; if (r1) { scrollTo = current.scrollTo; object2 = {}; binding = env0_0; copyDataProperties(object2, binding._scrollPositionToPoint(a0), a0); object2['animated'] = r6; Reflect.apply(scrollTo, current, [object2]); r1 = true; } r0 = r1; } else { r0 = value2; } return r0; } function FastListHandleScroll(a0) { // fn#65222, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:22365, owner: FastList.handleScroll, offset: 0x01bc8aac, size: 611 bytes, params: 2, frame: 30 var r10; var clearTimeout; var contentSize; var value7; var value8; var value9; let binding = env0_0; const {contentInset, horizontal, onScroll, onEndReached, endReachedThreshold, EXPERIMENTAL_enableAnchorWhileScrolling} = binding.props; const r13 = EXPERIMENTAL_enableAnchorWhileScrolling !== undefined && EXPERIMENTAL_enableAnchorWhileScrolling; const {fastListComputer, hasReachedEndBefore} = binding.state; const layoutMeasurement = a0.nativeEvent.layoutMeasurement; const r9 = horizontal ? layoutMeasurement.width : layoutMeasurement.height; const r15 = horizontal ? contentInset.left : contentInset.top; const value3 = 0; const r2 = r15 ?? value3; const r6 = (horizontal ? contentInset.right : contentInset.bottom) ?? value3; binding = env0_0; binding.containerSize = r9 - r2 - r6; let Math = global.Math; const min = Math.min; const Math2 = global.Math; const max = Math2.max; const getScrollPositionFromEvent = binding.getScrollPositionFromEvent; const value6 = Reflect.apply(min, Math, [Reflect.apply(max, Math2, [value3, Reflect.apply(getScrollPositionFromEvent, binding, [a0])]), fastListComputer.getSize() - binding.containerSize]); binding.scrollPos = value6; if (onScroll != null) { onScroll(a0); } const deferNextCompute = env0_0.deferNextCompute; binding = env0_0; if (deferNextCompute) { binding.deferNextCompute = false; if (binding.deferredCompute !== -1) { global.cancelAnimationFrame(env0_0.deferredCompute); } binding = env0_0; binding.deferredCompute = global.requestAnimationFrame(_fun65223); } else { binding.computeBlocks(); } if (!r13) { clearTimeout = global.clearTimeout; binding = env0_0; clearTimeout(binding.disableAnchoringTimeout); binding.disableAnchoringTimeout = global.setTimeout(_fun65224, 100); } if (onEndReached != null) { contentSize = a0.nativeEvent.contentSize; r10 = horizontal ? contentSize.width : contentSize.height; Math = global.Math; value7 = Math.ceil(r10 - (endReachedThreshold ?? value3) - r9); Math = global.Math; value8 = Math.ceil(value6); value9 = value8 >= value7; if (value9) { if (hasReachedEndBefore) { if (!value9 && hasReachedEndBefore) { env0_0.setState({hasReachedEndBefore: false}); } } else { env0_0.setState({hasReachedEndBefore: true}); onEndReached({distanceFromEnd: value8 - value7}); } } else if (!value9 && hasReachedEndBefore) { env0_0.setState({hasReachedEndBefore: false}); } } env0_0.queueViewabilityChange(); } function FastListHandleLayout(a0) { // fn#65225, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:23530, owner: FastList.handleLayout, offset: 0x01bc8d46, size: 275 bytes, params: 2, frame: 24 const nativeEvent = a0.nativeEvent; let binding = env0_0; const {isFirstLayout, fastListComputer} = binding.state; const {contentInset, onLayout, horizontal, chunkBase} = binding.props; const layout = nativeEvent.layout; const r10 = horizontal ? layout.width : layout.height; const r12 = horizontal ? contentInset.left : contentInset.top; const value2 = 0; env0_0.containerSize = r10 - (r12 ?? value2) - ((horizontal ? contentInset.right : contentInset.bottom) ?? value2); if (chunkBase == null) { fastListComputer.setInfo(env0_0.containerSize); } if (onLayout != null) { onLayout(a0, env0_0); } if (isFirstLayout) { if (chunkBase == null) { binding = env0_0; binding.setState(binding.getInitialState(binding.containerSize, fastListComputer, false)); } else { env0_0.computeBlocks(); } } else { env0_0.computeBlocks(); } env0_0.queueViewabilityChange(); } function handleMomentumScrollEnd(a0) { // fn#65226, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:23990, owner: FastList.handleMomentumScrollEnd, offset: 0x01bc8e59, size: 38 bytes, params: 2, frame: 11 const onScrollEnd = env0_0.props.onScrollEnd; if (onScrollEnd != null) { onScrollEnd(a0); } } function handleScrollBeginDrag(a0) { // fn#65227, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:24059, owner: FastList.handleScrollBeginDrag, offset: 0x01bc8e7f, size: 69 bytes, params: 2, frame: 12 const binding = env0_0; binding.scrollAnchor.handleUserScroll(); if (binding.props.onScrollBeginDrag != null) { env0_0.props.onScrollBeginDrag(a0); } } function value_65230T({contentOffset, contentSize}) { // fn#65231, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:26257, owner: value_65230.t, offset: 0x01bc9239, size: 134 bytes, params: 2, frame: 15 var set; var scrollPosValueBinding; var Math; const r5 = env0_2 ? contentOffset.x : contentOffset.y; const r4 = env0_2 ? contentSize.width : contentSize.height; if (r4 !== 0 || workletMounted.get()) { workletMounted.set(true); scrollPosValueBinding = scrollPosValue; set = scrollPosValueBinding.set; Math = global.Math; Reflect.apply(set, scrollPosValueBinding, [Math.min(r5, r4)]); } } function _fun65234() { // fn#65234, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:27288, offset: 0x01bc941d, size: 21 bytes, params: 1, frame: 9 return env0_0.restoreScrollPosition(); } function _fun65243() { // fn#65243, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:29541, offset: 0x01bc97aa, size: 19 bytes, params: 1, frame: 9 return env0_0.computeBlocks(); } function _fun65246({type, layoutStart}) { // fn#65246, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:30516, offset: 0x01bc9cfd, size: 52 bytes, params: 2, frame: 11 const SECTION = env2_19.SECTION; if (type === SECTION) { env0_5.push(layoutStart); } } function _fun65247(a0) { // fn#65247, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:30960, offset: 0x01bc9d31, size: 40 bytes, params: 2, frame: 14 const value = copyRestArgs(0, undefined); const binding = env0_0; const items2 = []; arraySpread(items2, value, 0, undefined); return apply(binding, items2, undefined, undefined); } function _fun65248(a0) { // fn#65248, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:31115, offset: 0x01bc9d59, size: 40 bytes, params: 2, frame: 14 const value = copyRestArgs(0, undefined); const binding = env0_1; const items2 = []; arraySpread(items2, value, 0, undefined); return apply(binding, items2, undefined, undefined); } function _fun65249(a0) { // fn#65249, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:31319, offset: 0x01bc9d81, size: 40 bytes, params: 2, frame: 14 const value = copyRestArgs(0, undefined); const binding = env0_2; const items2 = []; arraySpread(items2, value, 0, undefined); return apply(binding, items2, undefined, undefined); } function _fun65252(a0) { // fn#65252, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:31887, offset: 0x01bc9dd1, size: 40 bytes, params: 2, frame: 14 const value = copyRestArgs(0, undefined); const binding = env0_4; const items2 = []; arraySpread(items2, value, 0, undefined); return apply(binding, items2, undefined, undefined); } function _fun65223() { // fn#65223, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:23027, offset: 0x01bc8d0f, size: 19 bytes, params: 1, frame: 9 return env1_0.computeBlocks(); } function _fun65224() { // fn#65224, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8325:23152, offset: 0x01bc8d22, size: 36 bytes, params: 1, frame: 12 const clearTimeout = global.clearTimeout; const binding = env1_0; clearTimeout(binding.disableAnchoringTimeout); binding.disableAnchoringTimeout = undefined; }