Files
2026-07-28 01:06:53 +03:00

495 lines
21 KiB
TypeScript

/* Metro module 14861; source: modules/thumbhash/ThumbhashUtils.tsx; dependencies: [13657, 2] */
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as Module13657Module from '../../by-id/module-13657.js'; /* Metro dependency 13657 */
function _fun112367(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#112367, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:6, offset: 0x023c7b18, size: 113 bytes, params: 8, frame: 19
const env0_0 = require;
const thumbHashToRGBA_1123682 = thumbHashToRGBA_112368;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
(FileImportTrackerModule).fileFinishedImporting('modules/thumbhash/ThumbhashUtils.tsx');
exports.createThumbhashImageFromPlaceholder = createThumbhashImageFromPlaceholder;
exports.thumbHashToRGBA = thumbHashToRGBA_1123682;
function thumbHashToRGBA_112368(a0) { // fn#112368, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:47, offset: 0x023c7b89, size: 1501 bytes, params: 2, frame: 101
var r0;
var r11;
var r8;
var r1;
var r38;
var r5;
var r23;
var r24;
var r59;
var r60;
var r61;
var r62;
var r63;
var r66;
var r70;
var r77;
var r78;
var r64;
var r82;
var r67;
var r68;
var r80;
var r81;
var r83;
var r79;
var r85;
var r86;
var r87;
var r84;
var value11;
var value13;
var value16;
var value19;
var value27;
var value29;
var value38;
var value39;
var value40;
var value41;
var value42;
var value43;
var value44;
var value45;
var value46;
var value47;
var value48;
var value49;
var value50;
var value51;
var value52;
var value53;
var value54;
var value55;
var value56;
var value57;
var value58;
var value59;
var value60;
var value61;
var value62;
var value63;
var value64;
var value65;
var value66;
var value67;
var value68;
var value69;
var value70;
var value71;
var value72;
let value = a1;
const env0_0 = a0;
reducibleJoin2: while (true) {
if (value !== undefined) {
r0 = value;
break reducibleJoin2;
}
r0 = {};
break reducibleJoin2;
}
let detail = r0.detail;
reducibleJoin4: while (true) {
if (detail !== undefined) {
break reducibleJoin4;
}
value = 1;
detail = value;
break reducibleJoin4;
}
let pop = r0.pop;
reducibleJoin6: while (true) {
if (pop !== undefined) {
break reducibleJoin6;
}
value = 1;
pop = value;
break reducibleJoin6;
}
let Math = global.Math;
const PI = Math.PI;
Math = global.Math;
const min = Math.min;
Math = global.Math;
const max = Math.max;
Math = global.Math;
const cos = Math.cos;
Math = global.Math;
const round = Math.round;
value = 0;
let property = a0[value];
const value2 = 1;
const value4 = property | a0[value2] << 8 | a0[2] << 16;
const value5 = 3;
const value6 = a0[value5] | a0[4] << 8;
const value7 = value4 >> 23;
const value8 = value6 >> 15;
const value9 = 7;
if (value8) {
reducibleJoin10: while (true) {
if (value7) {
value11 = 5;
r11 = value11;
break reducibleJoin10;
}
r11 = value9;
break reducibleJoin10;
}
r8 = r11;
} else {
r8 = value9 & value6;
}
const value12 = max(value5, r8);
if (value8) {
r1 = value9 & value6;
} else {
reducibleJoin14: while (true) {
if (value7) {
value13 = 5;
r1 = value13;
break reducibleJoin14;
}
r1 = value9;
break reducibleJoin14;
}
}
const value15 = max(value5, r1);
reducibleJoin18: while (true) {
if (value7) {
value16 = (15 & a0[5]) / 15;
r38 = value16;
break reducibleJoin18;
}
r38 = value2;
break reducibleJoin18;
}
const value17 = 5;
const value18 = a0[value17] >> 4;
reducibleJoin20: while (true) {
if (value7) {
value19 = 6;
r5 = value19;
break reducibleJoin20;
}
r5 = value17;
break reducibleJoin20;
}
const thumbHashToRGBA_112368DecodeChannel2 = thumbHashToRGBA_112368DecodeChannel;
const value20 = thumbHashToRGBA_112368DecodeChannel2(value12, value15, (value4 >> 18 & 31) / 31 / 2);
const value21 = thumbHashToRGBA_112368DecodeChannel2(value5, value5, (value6 >> value5 & 63) / 63 * pop);
const value22 = thumbHashToRGBA_112368DecodeChannel2(value5, value5, (value6 >> 9 & 63) / 63 * pop);
const r33 = value7 ? thumbHashToRGBA_112368DecodeChannel2(value17, value17, value18 / 15) : [];
const value25 = require(dependencyMap[value]).thumbHashToApproximateAspectRatio(a0);
const value26 = 32;
reducibleJoin25: while (true) {
if (value25 > value2) {
r1 = value26;
break reducibleJoin25;
}
value27 = value26 * value25;
r1 = value27;
break reducibleJoin25;
}
const value28 = round(r1);
reducibleJoin27: while (true) {
if (value25 > value2) {
value29 = value26 / value25;
r1 = value29;
break reducibleJoin27;
}
r1 = value26;
break reducibleJoin27;
}
const value30 = round(r1);
const Uint8Array = global.Uint8Array;
const uint8Array = new Uint8Array(value28 * value30 * 4);
const items2 = [];
const items3 = [];
const value34 = value < value30;
const value35 = (63 & value4) / 63;
if (value34) {
r23 = value;
r24 = value;
reducibleLoop28: while (true) {
if (value < value28) {
r59 = value;
r60 = r23;
reducibleLoop29: while (true) {
r61 = value7 ? value17 : value5;
value38 = max(value12, r61);
if (value < value38) {
r61 = value;
reducibleLoop31: while (true) {
value39 = PI / value28;
items2[r61] = cos(value39 * (r59 + 0.5) * r61);
value40 = typeof r61 === 'bigint' ? r61 + 1n : +r61 + 1;
if (value40 < value38) {
r61 = value40;
continue reducibleLoop31;
}
break reducibleLoop31;
}
}
r61 = value7 ? value17 : value5;
value41 = max(value15, r61);
if (value < value41) {
r61 = value;
reducibleLoop34: while (true) {
value42 = PI / value30;
items3[r61] = cos(value42 * (r24 + 0.5) * r61);
value43 = typeof r61 === 'bigint' ? r61 + 1n : +r61 + 1;
if (value43 < value41) {
r61 = value43;
continue reducibleLoop34;
}
break reducibleLoop34;
}
}
if (value < value15) {
r61 = value;
r62 = value;
r63 = value35;
reducibleLoop36: while (true) {
r66 = r62 ? value : value2;
value44 = 2 * items3[r62];
value45 = r66 * value15;
if (value45 < value12 * (value15 - r62)) {
r70 = r66;
r77 = r61;
r78 = r63;
reducibleLoop38: while (true) {
value46 = r70 > detail;
reducibleJoin40: while (true) {
if (value46) {
r64 = value46;
break reducibleJoin40;
}
value47 = r62 > detail;
r64 = value47;
break reducibleJoin40;
}
reducibleJoin42: while (true) {
if (r64) {
r82 = r78;
break reducibleJoin42;
}
property = value20[r77];
value48 = r78 + property * items2[r70] * value44;
r82 = value48;
break reducibleJoin42;
}
value49 = typeof r70 === 'bigint' ? r70 + 1n : +r70 + 1;
value50 = typeof r77 === 'bigint' ? r77 + 1n : +r77 + 1;
value51 = value49 * value15;
if (value51 < value12 * (value15 - r62)) {
r70 = value49;
r77 = value50;
r78 = r82;
continue reducibleLoop38;
}
r67 = value50;
r68 = r82;
break reducibleLoop38;
}
} else {
r67 = r61;
r68 = r63;
}
value52 = typeof r62 === 'bigint' ? r62 + 1n : +r62 + 1;
if (value52 < value15) {
r61 = r67;
r62 = value52;
r63 = r68;
continue reducibleLoop36;
}
r80 = r68;
break reducibleLoop36;
}
} else {
r80 = value35;
}
r61 = value;
r62 = value;
r63 = (value4 >> 12 & 63) / 31.5 - value2;
r64 = (value4 >> 6 & 63) / 31.5 - value2;
reducibleLoop45: while (true) {
r66 = r62 ? value : value2;
value53 = 2 * items3[r62];
if (r66 < value5 - r62) {
r77 = r66;
r81 = r61;
r82 = r63;
r83 = r64;
reducibleLoop47: while (true) {
value54 = items2[r77] * value53;
value55 = r83 + value21[r81] * value54;
value56 = r82 + value22[r81] * value54;
value57 = typeof r77 === 'bigint' ? r77 + 1n : +r77 + 1;
value58 = typeof r81 === 'bigint' ? r81 + 1n : +r81 + 1;
if (value57 < value5 - r62) {
r77 = value57;
r81 = value58;
r82 = value56;
r83 = value55;
continue reducibleLoop47;
}
r67 = value58;
r78 = value56;
r79 = value55;
break reducibleLoop47;
}
} else {
r67 = r61;
r78 = r63;
r79 = r64;
}
value59 = typeof r62 === 'bigint' ? r62 + 1n : +r62 + 1;
if (value59 < value5) {
r61 = r67;
r62 = value59;
r63 = r78;
r64 = r79;
continue reducibleLoop45;
}
break reducibleLoop45;
}
if (value7) {
r62 = value;
r63 = value;
r64 = r38;
reducibleLoop50: while (true) {
r82 = r63 ? value : value2;
value60 = 2 * items3[r63];
if (r82 < value17 - r63) {
r85 = r82;
r86 = r62;
r87 = r64;
reducibleLoop52: while (true) {
property = r33[r86];
value61 = r87 + property * items2[r85] * value60;
value62 = typeof r85 === 'bigint' ? r85 + 1n : +r85 + 1;
value63 = typeof r86 === 'bigint' ? r86 + 1n : +r86 + 1;
if (value62 < value17 - r63) {
r85 = value62;
r86 = value63;
r87 = value61;
continue reducibleLoop52;
}
r83 = value63;
r84 = value61;
break reducibleLoop52;
}
} else {
r83 = r62;
r84 = r64;
}
value64 = typeof r63 === 'bigint' ? r63 + 1n : +r63 + 1;
if (value64 < value17) {
r62 = r83;
r63 = value64;
r64 = r84;
continue reducibleLoop50;
}
r61 = r84;
break reducibleLoop50;
}
} else {
r61 = r38;
}
value65 = r80 - 0.6666666666666666 * r79;
value66 = (value5 * r80 - value65 + r78) / 2;
uint8Array[r60] = max(value, 255 * min(value2, value66));
value67 = max(value, 255 * min(value2, value66 - r78));
uint8Array[r60 + value2] = value67;
value68 = max(value, 255 * min(value2, value65));
uint8Array[r60 + 2] = value68;
value69 = max(value, 255 * min(value2, r61));
uint8Array[r60 + value5] = value69;
value70 = typeof r59 === 'bigint' ? r59 + 1n : +r59 + 1;
value71 = r60 + 4;
if (value70 < value28) {
r59 = value70;
r60 = value71;
continue reducibleLoop29;
}
r23 = value71;
break reducibleLoop29;
}
}
value72 = typeof r24 === 'bigint' ? r24 + 1n : +r24 + 1;
if (value72 < value30) {
r24 = value72;
continue reducibleLoop28;
}
break reducibleLoop28;
}
}
return {w: value28, h: value30, rgba: uint8Array};
function thumbHashToRGBA_112368DecodeChannel(a0, a1, a2) { // fn#112369, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:316, owner: thumbHashToRGBA_112368.decodeChannel, offset: 0x02290c5a, size: 177 bytes, params: 4, frame: 24
var r1;
var r13;
var value4;
var push;
var binding;
var binding2;
var property;
var value5;
var value6;
var value7;
var value8;
const items2 = [];
const value = 0;
const value3 = 1;
if (value < a1) {
r1 = value;
reducibleLoop1: while (true) {
r13 = r1 ? value : value3;
value4 = r13 * a1;
if (value4 < a0 * (a1 - r1)) {
reducibleLoop3: while (true) {
push = items2.push;
binding = env0_0;
binding2 = env0_1;
property = binding[binding2 + (env0_2 >> value3)];
binding = env0_2;
value5 = typeof binding === 'bigint' ? binding : +binding;
env0_2 = typeof value5 === 'bigint' ? value5 + 1n : +value5 + 1;
Reflect.apply(push, items2, [((property >> ((value3 & value5) << 2) & 15) / 7.5 - value3) * a2]);
value6 = typeof r13 === 'bigint' ? r13 + 1n : +r13 + 1;
value7 = value6 * a1;
if (value7 < a0 * (a1 - r1)) {
r13 = value6;
continue reducibleLoop3;
}
break reducibleLoop3;
}
}
value8 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1;
if (value8 < a1) {
r1 = value8;
continue reducibleLoop1;
}
break reducibleLoop1;
}
}
return items2;
}
}
function createThumbhashImageFromPlaceholder(a0) { // fn#112370, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15058:1505, offset: 0x023c8166, size: 121 bytes, params: 2, frame: 17
const thumbHashToRGBA_112368Binding = thumbHashToRGBA_112368;
const Uint8Array = global.Uint8Array;
const value4 = thumbHashToRGBA_112368Binding(Uint8Array.from(global.atob(a0), function(a0) {
return a0.charCodeAt(0);
}), {'detail': 1, 'pop': 1.1});
return Module13657Module.rgbaToDataURL(value4.w, value4.h, value4.rgba);
}
}
global.__d(_fun112367, 14861, [13657, 2]) /* metro module 14861, dependencies: [13657, 2] */;