@eryxenx/insta-chat 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -8
- package/index.js +105 -1
- package/module/login.js +51 -1
- package/package.json +9 -2
- package/src/api/action/getAppState.js +19 -1
- package/src/api/action/getCookies.js +7 -1
- package/src/api/action/getCurrentUserID.js +7 -1
- package/src/api/action/setOptions.js +8 -1
- package/src/api/messaging/editMessage.js +19 -1
- package/src/api/messaging/markAsRead.js +7 -1
- package/src/api/messaging/resolvePhotoUrl.js +8 -1
- package/src/api/messaging/sendMessage.js +45 -1
- package/src/api/messaging/sendMessageSync.js +8 -1
- package/src/api/messaging/sendTypingIndicator.js +7 -1
- package/src/api/messaging/setMessageReaction.js +19 -1
- package/src/api/messaging/shareContact.js +19 -1
- package/src/api/messaging/unsendMessage.js +16 -1
- package/src/api/realtime/getInbox.js +7 -1
- package/src/api/realtime/listen.js +7 -1
- package/src/api/realtime/stopListening.js +7 -1
- package/src/api/threads/getThreadHistory.js +16 -1
- package/src/api/threads/getThreadInfo.js +59 -1
- package/src/api/threads/getThreadList.js +22 -1
- package/src/api/users/getUID.js +12 -1
- package/src/api/users/getUserInfo.js +37 -1
- package/src/api.js +253 -1
- package/src/app/InstaClient.js +352 -1
- package/src/app/InstaContext.js +46 -1
- package/src/app/createFcaClient.js +59 -1
- package/src/app/loadApiMethods.js +30 -1
- package/src/constants.js +53 -1
- package/src/cookies.js +41 -1
- package/src/deviceIdentity.js +31 -1
- package/src/events/normalizeEvent.js +142 -1
- package/src/http.js +381 -1
- package/src/messageContent.js +73 -1
- package/src/methods/inbox.js +464 -1
- package/src/methods/media.js +218 -1
- package/src/methods/message.js +115 -1
- package/src/methods/reactions.js +52 -1
- package/src/methods/thread.js +96 -1
- package/src/methods/typing.js +35 -1
- package/src/methods/user.js +33 -1
- package/src/session.js +94 -1
- package/src/threadDetail.js +36 -1
- package/src/utils/antiSuspension.js +269 -0
- package/src/utils/dataDir.js +11 -0
- package/src/utils/errors.js +106 -0
- package/src/utils/format.js +38 -1
- package/src/utils/messageStyle.js +57 -1
- package/src/utils/sessionGuard.js +93 -0
package/src/methods/inbox.js
CHANGED
|
@@ -4,4 +4,467 @@
|
|
|
4
4
|
* Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
|
|
5
5
|
* Original author credit must be retained in all copies and derivatives.
|
|
6
6
|
*/
|
|
7
|
-
const _0x68f711=_0x12e2,_0x2192cb=_0x12e2;(function(_0x8599e1,_0x3e6ae2){const _0x1d32c6=_0x12e2,_0x4180a9=_0x12e2,_0x5e2059=_0x8599e1();while(!![]){try{const _0x120a78=-parseInt(_0x1d32c6(0x121,'wJ5j'))/0x1*(parseInt(_0x4180a9(0x24a,'WYQ$'))/0x2)+parseInt(_0x4180a9(0x1ee,'O(J)'))/0x3+parseInt(_0x1d32c6(0x1c5,'L[Hd'))/0x4+-parseInt(_0x4180a9(0x275,'4WFQ'))/0x5+parseInt(_0x4180a9(0x1a5,'L[Hd'))/0x6+parseInt(_0x4180a9(0x1e9,'hBUp'))/0x7+-parseInt(_0x4180a9(0x27f,'uRE['))/0x8;if(_0x120a78===_0x3e6ae2)break;else _0x5e2059['push'](_0x5e2059['shift']());}catch(_0x1199ff){_0x5e2059['push'](_0x5e2059['shift']());}}}(_0x4cf5,0xa1094));function _0x12e2(_0xfbd630,_0x58a70c){_0xfbd630=_0xfbd630-0x7f;const _0x4cf554=_0x4cf5();let _0x12e25d=_0x4cf554[_0xfbd630];if(_0x12e2['OCVVGh']===undefined){var _0x1063f9=function(_0x62aa0f){const _0x242654='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x46a06a='',_0x11636f='';for(let _0x5c3de1=0x0,_0xcc0d2d,_0x5440cd,_0xd44c0c=0x0;_0x5440cd=_0x62aa0f['charAt'](_0xd44c0c++);~_0x5440cd&&(_0xcc0d2d=_0x5c3de1%0x4?_0xcc0d2d*0x40+_0x5440cd:_0x5440cd,_0x5c3de1++%0x4)?_0x46a06a+=String['fromCharCode'](0xff&_0xcc0d2d>>(-0x2*_0x5c3de1&0x6)):0x0){_0x5440cd=_0x242654['indexOf'](_0x5440cd);}for(let _0x420065=0x0,_0x414041=_0x46a06a['length'];_0x420065<_0x414041;_0x420065++){_0x11636f+='%'+('00'+_0x46a06a['charCodeAt'](_0x420065)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11636f);};const _0x40328d=function(_0xd65099,_0x21473b){let _0x1c4753=[],_0xe16479=0x0,_0x2b5a2b,_0x594416='';_0xd65099=_0x1063f9(_0xd65099);let _0x32232a;for(_0x32232a=0x0;_0x32232a<0x100;_0x32232a++){_0x1c4753[_0x32232a]=_0x32232a;}for(_0x32232a=0x0;_0x32232a<0x100;_0x32232a++){_0xe16479=(_0xe16479+_0x1c4753[_0x32232a]+_0x21473b['charCodeAt'](_0x32232a%_0x21473b['length']))%0x100,_0x2b5a2b=_0x1c4753[_0x32232a],_0x1c4753[_0x32232a]=_0x1c4753[_0xe16479],_0x1c4753[_0xe16479]=_0x2b5a2b;}_0x32232a=0x0,_0xe16479=0x0;for(let _0x1fabe7=0x0;_0x1fabe7<_0xd65099['length'];_0x1fabe7++){_0x32232a=(_0x32232a+0x1)%0x100,_0xe16479=(_0xe16479+_0x1c4753[_0x32232a])%0x100,_0x2b5a2b=_0x1c4753[_0x32232a],_0x1c4753[_0x32232a]=_0x1c4753[_0xe16479],_0x1c4753[_0xe16479]=_0x2b5a2b,_0x594416+=String['fromCharCode'](_0xd65099['charCodeAt'](_0x1fabe7)^_0x1c4753[(_0x1c4753[_0x32232a]+_0x1c4753[_0xe16479])%0x100]);}return _0x594416;};_0x12e2['UnZSwk']=_0x40328d,_0x12e2['ZSJXWA']={},_0x12e2['OCVVGh']=!![];}const _0x20c051=_0x4cf554[0x0],_0x36ed3b=_0xfbd630+_0x20c051,_0x257dca=_0x12e2['ZSJXWA'][_0x36ed3b];return!_0x257dca?(_0x12e2['PkbNuL']===undefined&&(_0x12e2['PkbNuL']=!![]),_0x12e25d=_0x12e2['UnZSwk'](_0x12e25d,_0x58a70c),_0x12e2['ZSJXWA'][_0x36ed3b]=_0x12e25d):_0x12e25d=_0x257dca,_0x12e25d;}const {DOC_ID}=require(_0x68f711(0x17b,'O(J)')+_0x68f711(0x249,'[Yq^')),{textOf,attachmentsFromContent,normalizeRepliedMessage}=require(_0x68f711(0x17a,'ZFEd')+_0x68f711(0x12c,'J@7O')+_0x68f711(0x192,'7GWs')),{fetchThreadDetail,threadFbidMap}=require(_0x68f711(0x11f,'BLHx')+_0x68f711(0xfa,'tcr^')+_0x2192cb(0x12a,'[Yq^')),INBOX_VARIABLES={'__relay_internal__pv__IGDIsProfessionalAccountGKrelayprovider':![],'__relay_internal__pv__IGDPinnedThreadsRenderEnabledGKrelayprovider':!![],'__relay_internal__pv__IGDMaxUnreadMessagesCountrelayprovider':0x5,'__relay_internal__pv__IGDThreadListActionsEnabledGKrelayprovider':!![]},SKIP_TYPES=new Set([_0x68f711(0x1a9,'U$L4'),'action'+_0x2192cb(0x22f,'uiC7'),_0x2192cb(0x259,'fWx&')+_0x68f711(0x1e4,'PmCO')+_0x2192cb(0x197,'Bp&A'),_0x2192cb(0x24b,'uiC7')+'on_log']);class InboxMethods{constructor(_0x415b5a,_0x5eae46){const _0xa39def=_0x68f711,_0x116878=_0x2192cb,_0x3c5cac={'zYiND':_0xa39def(0xfe,'RwJc')+_0xa39def(0x22d,'[Yq^')+'6'},_0x17d78b=_0x3c5cac[_0x116878(0x268,'uWeb')][_0xa39def(0xa7,'wJ5j')]('|');let _0x2fa58e=0x0;while(!![]){switch(_0x17d78b[_0x2fa58e++]){case'0':this[_0x116878(0xed,'uiC7')+_0x116878(0xc2,'4WFQ')]=null;continue;case'1':this[_0xa39def(0x1dd,'U$L4')+_0xa39def(0x123,'tewB')]=_0x5eae46;continue;case'2':this[_0xa39def(0x2a6,'Kk[@')]=new Map();continue;case'3':this[_0x116878(0xec,'Bp&A')+'bid']=null;continue;case'4':this[_0xa39def(0x228,'YgHU')]=_0x415b5a;continue;case'5':this[_0xa39def(0x9b,'Xuyg')+'dState']=new Map();continue;case'6':this[_0xa39def(0x293,'W$Kx')+_0xa39def(0x1c0,'[Yq^')]=![];continue;}break;}}async[_0x2192cb(0x91,'4[J^')+'ox'](){const _0x55203a=_0x68f711,_0x4a6acb=_0x2192cb,_0xf7fc1b={'sOvuy':_0x55203a(0x2aa,'uWeb')+_0x55203a(0x2a2,'((&C')+_0x55203a(0x146,'hBUp')+_0x4a6acb(0x20f,'6v8M'),'iNMEi':function(_0x35b591,_0x35df5d){return _0x35b591!==_0x35df5d;},'lKFBa':_0x4a6acb(0x176,'Kk[@'),'cbfZV':function(_0x1560e2,_0x218734){return _0x1560e2(_0x218734);}},_0x5c8f78=this[_0x55203a(0x101,'keT^')]['sessio'+'n']?.[_0x55203a(0xdb,'7GWs')]||this[_0x55203a(0x20c,'rUdl')]['uuid'](),_0x7abf72=await this[_0x4a6acb(0x92,'L[Hd')][_0x55203a(0x1f5,'WYQ$')+'aphQL'](_0xf7fc1b[_0x55203a(0x199,'BLHx')],DOC_ID[_0x55203a(0x250,'uWeb')],{...INBOX_VARIABLES,'device_id_for_iris_subscription':_0x5c8f78},_0x4a6acb(0x13e,'rUdl')+'//www.'+'instag'+_0x4a6acb(0x1bf,'Xuyg')+_0x55203a(0x2a5,'DIFr')+_0x55203a(0x28f,'4[J^')+_0x4a6acb(0x117,'L[Hd')),_0x3a0fcb=this[_0x4a6acb(0x248,'6v8M')+'p'](_0x7abf72),_0x46aac8=_0x3a0fcb?.[_0x4a6acb(0x18f,'L[Hd')+_0x55203a(0x19b,'B3f0')+_0x4a6acb(0x224,'((&C')+_0x4a6acb(0x25e,'O(J)')+_0x55203a(0x88,'wAq[')+_0x4a6acb(0x274,'ZFEd')+_0x4a6acb(0x151,'Xuyg')]?.[_0x55203a(0x1b4,'fWx&')+_0x4a6acb(0x266,'Xuyg')+_0x55203a(0xc5,'4[J^')]?.['edges']||[],_0x4b5bc5=_0x46aac8[_0x4a6acb(0x161,'ZFEd')](_0x4b9148=>_0x4b9148[_0x55203a(0x25f,'uiC7')]?.['as_ig_'+_0x55203a(0x148,'(DLl')+_0x55203a(0x21b,'ZFEd')+'d']||{})[_0x55203a(0x1fd,'DIFr')](Boolean);for(const _0x5a0ab3 of _0x4b5bc5){if(_0xf7fc1b[_0x55203a(0x1fe,'Bp&A')](_0xf7fc1b[_0x4a6acb(0x291,'L[Hd')],_0xf7fc1b[_0x4a6acb(0x295,'$L[S')])){const _0x1a3fe5=_0x58b0aa[_0x55203a(0xfc,'hBUp')+_0x4a6acb(0x10b,'4WFQ')+'es'];if(_0x15b09a['isArra'+'y'](_0x1a3fe5))return _0x1a3fe5[_0x4a6acb(0x196,')sPG')](_0x148ab2=>_0x148ab2[_0x4a6acb(0x25f,'uiC7')]||_0x148ab2)[_0x55203a(0xf2,'wAq[')](_0x2953f2);if(_0x1a3fe5&&_0x175428[_0x55203a(0x226,'uRE[')+'y'](_0x1a3fe5[_0x55203a(0xd2,'(DLl')]))return _0x1a3fe5[_0x4a6acb(0x22b,'uiC7')][_0x4a6acb(0x9c,'*2@g')](_0x16d1a8=>_0x16d1a8[_0x55203a(0x1e1,'tcr^')])[_0x55203a(0x272,'kA31')](_0x385940);return(_0x43ec41[_0x4a6acb(0xac,'Kk[@')]||[])[_0x55203a(0x276,'fWx&')](_0x782024=>({'id':_0x782024[_0x55203a(0x175,'uWeb')+'d'],'sender_fbid':_0x782024[_0x55203a(0x29a,'[Y2@')+'d'],'content_type':(_0x782024[_0x55203a(0x25b,'uWeb')+_0x4a6acb(0x2b1,'CXJW')]||_0x4a6acb(0x183,'J@7O'))[_0x55203a(0x13d,'DIFr')+_0x55203a(0x210,'L[Hd')](),'text_body':_0x782024[_0x55203a(0x1e0,'6v8M')],'timestamp_ms':_0x782024[_0x4a6acb(0x1a4,'J@7O')+_0x4a6acb(0xdc,'JFk4')],'content':_0x782024}));}else{const _0x2d8dd6=_0x5a0ab3[_0x55203a(0x20b,'tewB')]?.[_0x55203a(0x1f0,'^hJh')+_0x4a6acb(0x1a6,'((&C')+_0x4a6acb(0xeb,'((&C')+_0x55203a(0x152,'4[J^')+_0x55203a(0x290,'[Y2@')];if(_0x2d8dd6&&!this[_0x55203a(0x1cd,'B3f0')+_0x4a6acb(0x14d,'tewB')])this[_0x55203a(0xf9,'4[J^')+'bid']=_0xf7fc1b[_0x55203a(0xd7,'*2@g')](String,_0x2d8dd6);}}return{'threads':_0x4b5bc5};}[_0x2192cb(0x1c8,'6v8M')+_0x2192cb(0x21c,'[Yq^')+_0x2192cb(0x1ca,'W$Kx')](_0x2d727e){const _0x4dfd6e=_0x68f711,_0x5be8ac=_0x68f711,_0xefa0a9=_0x2d727e[_0x4dfd6e(0x15e,'Pb*L')+'messag'+'es'];if(Array[_0x5be8ac(0x7f,'4[J^')+'y'](_0xefa0a9))return _0xefa0a9[_0x5be8ac(0x238,'keT^')](_0xb6a89a=>_0xb6a89a[_0x4dfd6e(0x1bc,'[Y2@')]||_0xb6a89a)[_0x5be8ac(0x10a,')sPG')](Boolean);if(_0xefa0a9&&Array[_0x4dfd6e(0x28c,'((&C')+'y'](_0xefa0a9[_0x5be8ac(0x13f,'@Gpj')]))return _0xefa0a9[_0x5be8ac(0x214,'7GWs')][_0x5be8ac(0x1f2,'(DLl')](_0x54668d=>_0x54668d[_0x4dfd6e(0x1d9,'ZFEd')])[_0x5be8ac(0x2ab,'tcr^')](Boolean);return(_0x2d727e[_0x5be8ac(0x142,'19Sb')]||[])[_0x4dfd6e(0x178,'BLHx')](_0x31ceae=>({'id':_0x31ceae[_0x5be8ac(0x1b2,'fWx&')+'d'],'sender_fbid':_0x31ceae[_0x5be8ac(0x166,'W$Kx')+'d'],'content_type':(_0x31ceae['item_t'+_0x4dfd6e(0x193,'DIFr')]||_0x4dfd6e(0x29b,'19Sb'))[_0x5be8ac(0x236,'Pb*L')+_0x5be8ac(0x124,'rUdl')](),'text_body':_0x31ceae[_0x5be8ac(0x8c,'Bp&A')],'timestamp_ms':_0x31ceae[_0x5be8ac(0x234,'ZFEd')+_0x4dfd6e(0xcd,'kA31')],'content':_0x31ceae}));}[_0x2192cb(0x95,'tcr^')+_0x2192cb(0x1c6,'*2@g')+'xt'](_0x52999b){const _0x1a1dca=_0x2192cb,_0x198330={'uStfG':function(_0x1a0b49,_0x3825d0){return _0x1a0b49(_0x3825d0);}};return _0x198330[_0x1a1dca(0x235,'6v8M')](textOf,_0x52999b);}[_0x68f711(0x8b,'hBUp')+_0x68f711(0x28e,'6v8M')+_0x68f711(0x100,'BLHx')+_0x2192cb(0x80,'JFk4')](_0x114df5){const _0x56ed58=_0x68f711,_0x1c1924=_0x2192cb,_0x5125a5={'pjjyz':function(_0x8f7d0b,_0x1ee52a){return _0x8f7d0b(_0x1ee52a);}};return _0x5125a5[_0x56ed58(0x273,'0ly2')](attachmentsFromContent,_0x114df5[_0x1c1924(0x13c,'BLHx')+'t']);}[_0x2192cb(0x1d3,'CXJW')+'ap'](_0x467f59){const _0x45fdc4=_0x68f711,_0x6da9f={'LySzc':function(_0x347b73,_0x39e18e){return _0x347b73(_0x39e18e);}};return _0x6da9f[_0x45fdc4(0x1b0,'Xuyg')](threadFbidMap,_0x467f59);}async[_0x68f711(0x14b,'RwJc')+_0x68f711(0x1f9,'keT^')+'ts'](_0x4c3d6e){const _0x55f9b4=_0x68f711,_0x14aed1=_0x68f711,_0x5e087d={'mYmhT':_0x55f9b4(0x24f,'Xuyg')+_0x14aed1(0x285,'uWeb')+_0x55f9b4(0x1ac,'A1bl'),'bgKDy':function(_0x1052af,_0x4b823d){return _0x1052af(_0x4b823d);},'HZMlq':function(_0x46d7a4,_0x596488){return _0x46d7a4===_0x596488;},'TDQXh':function(_0x3223a4,_0x61362b){return _0x3223a4(_0x61362b);},'NYdiV':_0x14aed1(0x20d,'4[J^'),'LaBgU':function(_0x2781a0,_0x989b07){return _0x2781a0!=_0x989b07;},'EWScA':function(_0x1f6217,_0x412b90){return _0x1f6217&&_0x412b90;},'jeaPh':function(_0x1c88b3,_0x406d08){return _0x1c88b3===_0x406d08;},'wWLFo':_0x55f9b4(0x269,'wJ5j'),'gPPuj':function(_0x48cf15,_0x153947){return _0x48cf15!==_0x153947;},'phERf':'messag'+'e'},_0x3b7fd8=[],_0x1bd62a=this['_selfF'+_0x55f9b4(0xaf,'4WFQ')]?String(this[_0x55f9b4(0x97,'L[Hd')+_0x55f9b4(0x1e3,'ZFEd')]):null;for(const _0x123d76 of _0x4c3d6e){const _0x4e0c4c=_0x5e087d[_0x14aed1(0x154,'[Y2@')](String,_0x123d76['id']||_0x123d76[_0x14aed1(0x156,'19Sb')+_0x55f9b4(0x17c,'J@7O')]),_0x2c6258=this[_0x55f9b4(0x11a,'kA31')+'ap'](_0x123d76),_0x55a091=this[_0x55f9b4(0x138,'wAq[')+'dMessa'+_0x55f9b4(0x122,'(DLl')](_0x123d76),_0x516d92=this[_0x55f9b4(0x106,'PmCO')][_0x14aed1(0x1fa,'CXJW')](_0x4e0c4c),_0x39ed7b=[];for(const _0x232fff of _0x55a091){if(_0x516d92&&_0x5e087d[_0x14aed1(0x184,'fWx&')](String(_0x232fff['id']),_0x5e087d[_0x14aed1(0xf8,'U$L4')](String,_0x516d92)))break;_0x39ed7b[_0x14aed1(0x162,'4WFQ')](_0x232fff);}let _0x585665=null;_0x39ed7b[_0x55f9b4(0x281,'rUdl')]&&(_0x5e087d[_0x55f9b4(0x107,'Kk[@')](_0x5e087d[_0x55f9b4(0x1d5,'[Y2@')],_0x5e087d[_0x14aed1(0xbe,'B3f0')])?_0x585665=await this[_0x55f9b4(0x241,'@Gpj')+_0x55f9b4(0x20a,'tcr^')](_0x4e0c4c,_0x2c6258)[_0x55f9b4(0x233,'hBUp')](()=>null):_0x1ed39a[_0x14aed1(0x292,'L[Hd')]({..._0x29adce,'messageID':_0x4d872a(),'logMessageType':_0x5e087d[_0x14aed1(0x1f1,'fWx&')],'logMessageData':{'url':_0xd99f39[_0x14aed1(0x1e8,'19Sb')]}}));for(const _0x22fc69 of _0x39ed7b[_0x55f9b4(0x194,'[Y2@')+'e']()){const _0x17b9d6=_0x5e087d[_0x14aed1(0x26b,'wJ5j')](_0x22fc69['sender'+_0x55f9b4(0x27d,'JFk4')],null)?_0x5e087d['bgKDy'](String,_0x22fc69[_0x55f9b4(0x160,'4[J^')+_0x55f9b4(0x247,'keT^')]):null;if(_0x5e087d[_0x55f9b4(0x85,'WYQ$')](_0x17b9d6,_0x1bd62a)&&_0x5e087d[_0x14aed1(0x206,'J@7O')](_0x17b9d6,_0x1bd62a))continue;const _0x312bd2=_0x22fc69[_0x55f9b4(0x27e,'uiC7')+_0x14aed1(0xe8,'keT^')]||'';if(/REACTION_LOG|ADMIN_TEXT|ACTION_LOG/i[_0x55f9b4(0x256,'L[Hd')](_0x312bd2))continue;const _0x4f8fc4=this[_0x55f9b4(0x86,'ZFEd')+_0x55f9b4(0x1f6,'(DLl')+'xt'](_0x22fc69),_0xae263=_0x5e087d[_0x55f9b4(0x1c2,'hBUp')](_0x312bd2,_0x5e087d[_0x14aed1(0xb6,'J@7O')])?[]:this[_0x14aed1(0x16b,'RwJc')+_0x14aed1(0x2a1,'JFk4')+_0x14aed1(0x15b,'Bp&A')+'nts'](_0x22fc69);if(_0x5e087d[_0x14aed1(0x12e,'O(J)')](_0x312bd2,_0x5e087d[_0x55f9b4(0x185,'7GWs')])&&_0xae263[_0x14aed1(0xe0,'CXJW')]===0x0)continue;const _0x56fa11=_0x585665&&_0x585665[_0x5e087d[_0x55f9b4(0x198,'DIFr')](String,_0x22fc69['id'])];_0x3b7fd8[_0x14aed1(0x212,'uiC7')]({'type':_0x5e087d[_0x14aed1(0x83,'tcr^')],'threadID':_0x4e0c4c,'senderID':_0x17b9d6&&_0x2c6258[_0x17b9d6]?_0x2c6258[_0x17b9d6]:_0x17b9d6,'messageID':_0x22fc69['id'],'body':_0x4f8fc4,'attachments':_0xae263,'itemType':_0x312bd2['toLowe'+_0x55f9b4(0x1ea,'keT^')](),'repliedToItemId':_0x56fa11&&_0x56fa11[_0x14aed1(0xd5,'DIFr')+'dToIte'+'mId']||_0x22fc69[_0x55f9b4(0x1ba,'19Sb')+_0x14aed1(0xb0,'WYQ$')+_0x14aed1(0x16f,'19Sb')]||null,'repliedToMessage':_0x56fa11?_0x56fa11[_0x55f9b4(0x1ae,'uWeb')+_0x14aed1(0x110,'1&X[')+_0x14aed1(0x1ad,'DIFr')]:null,'clientContext':_0x22fc69[_0x55f9b4(0xf4,'tewB')+_0x55f9b4(0x283,'7GWs')+'xt']||null,'offlineThreadingId':_0x56fa11&&_0x56fa11[_0x14aed1(0xba,'*2@g')+_0x14aed1(0x2a8,'fWx&')+_0x55f9b4(0x19c,'wJ5j')]||_0x22fc69['offlin'+'e_thre'+_0x14aed1(0x25d,'WYQ$')+'id']||null,'timestamp':Number(_0x22fc69[_0x55f9b4(0xdf,'U$L4')+_0x14aed1(0x125,'0ly2')])||Date[_0x14aed1(0x82,'wAq[')]()});}if(_0x55a091[0x0])this[_0x14aed1(0x1f3,'^hJh')][_0x55f9b4(0x27a,'[Yq^')](_0x4e0c4c,_0x55a091[0x0]['id']);}return _0x3b7fd8;}async[_0x2192cb(0x1d1,'uWeb')+_0x68f711(0x23c,'Xuyg')](_0x591df4,_0xa28761={}){const _0x131423=_0x2192cb,_0x2c1662=_0x2192cb,_0x414b6c={'WgatL':function(_0x2a1103,_0x14956e,_0x5de9cf){return _0x2a1103(_0x14956e,_0x5de9cf);},'ArSPV':function(_0x455d51,_0xfbe7f4){return _0x455d51!=_0xfbe7f4;}},_0x5293c7=await fetchThreadDetail(this[_0x131423(0x1c9,'((&C')],_0x591df4,0x14),_0x33d6b0={};for(const _0x2a4c63 of _0x5293c7?.[_0x2c1662(0xbc,'MOU$')+_0x131423(0x297,'uWeb')+'es']?.[_0x2c1662(0x14c,'J@7O')]||[]){const _0x37e9fb=_0x2a4c63[_0x2c1662(0x2a7,'kA31')]||_0x2a4c63;_0x33d6b0[String(_0x37e9fb['id'])]={'repliedToItemId':_0x37e9fb[_0x2c1662(0x1a3,'uiC7')+_0x2c1662(0x10c,'O(J)')+_0x131423(0x90,'tewB')+_0x131423(0xd8,'(DLl')]||null,'repliedToMessage':_0x414b6c[_0x131423(0x141,'O(J)')](normalizeRepliedMessage,_0x37e9fb[_0x2c1662(0xa1,'JFk4')+_0x2c1662(0x262,'D4z%')+_0x131423(0xbb,'Pb*L')],_0xa28761),'offlineThreadingId':_0x414b6c['ArSPV'](_0x37e9fb[_0x131423(0x1aa,'A1bl')+_0x131423(0x29f,'Bp&A')+_0x2c1662(0x132,'wJ5j')+'id'],null)?String(_0x37e9fb[_0x2c1662(0x1e6,'1&X[')+_0x131423(0x1b9,'uWeb')+_0x2c1662(0x255,'Kk[@')+'id']):null};}return _0x33d6b0;}[_0x2192cb(0xb8,'A1bl')+_0x2192cb(0x261,'keT^')](_0x5ef841){const _0x163984=_0x2192cb,_0x18912f=_0x68f711,_0x222554={'nlRAb':_0x163984(0x299,'1&X[')+_0x163984(0x2ad,'keT^')+'0','FzZRm':_0x18912f(0x263,'W$Kx'),'epVJw':_0x18912f(0x205,'W$Kx'),'cofaf':function(_0x1b3573,_0x2d5c80){return _0x1b3573(_0x2d5c80);},'JeuVX':function(_0x95509f,_0x9965dd){return _0x95509f||_0x9965dd;},'luCKG':_0x18912f(0xc6,'ZFEd'),'zWYkd':function(_0x2c5179,_0x22e86a){return _0x2c5179===_0x22e86a;},'BUidU':function(_0x15b2b4,_0x29505a){return _0x15b2b4!==_0x29505a;},'oTACh':function(_0x443f74,_0x19738f){return _0x443f74||_0x19738f;},'TbDIZ':function(_0x86d1c9,_0x22ca6c){return _0x86d1c9===_0x22ca6c;},'UCARB':function(_0x41ef71,_0x1398a4){return _0x41ef71(_0x1398a4);}},_0x1b5e3f=_0x5ef841[_0x163984(0xc1,'wAq[')]||[],_0x4ff8c3=new Set(),_0x4cb243={};for(const _0x369fd8 of _0x1b5e3f){if(_0x222554[_0x18912f(0x189,'4[J^')]===_0x222554[_0x163984(0x179,'uiC7')]){const _0x4861c0=_0x222554[_0x163984(0x1da,'@Gpj')][_0x163984(0x19d,'RwJc')]('|');let _0x2a0466=0x0;while(!![]){switch(_0x4861c0[_0x2a0466++]){case'0':this[_0x18912f(0x200,'tcr^')+_0x163984(0x1de,'*2@g')]=![];continue;case'1':this[_0x163984(0x1fc,'[Yq^')+_0x18912f(0x94,'YgHU')]=null;continue;case'2':this[_0x163984(0x8e,'uRE[')+_0x18912f(0x282,'((&C')]=null;continue;case'3':this[_0x163984(0x2b0,'rUdl')+_0x163984(0x15c,'RwJc')]=_0x5440cd;continue;case'4':this[_0x18912f(0xd6,'6v8M')]=new _0xd44c0c();continue;case'5':this['http']=_0xcc0d2d;continue;case'6':this[_0x18912f(0x174,'A1bl')+_0x163984(0x128,'hBUp')]=new _0x420065();continue;}break;}}else{const _0x5f5d46=_0x222554[_0x18912f(0x1eb,'J@7O')](String,_0x369fd8['id']||_0x369fd8['pk']);_0x4ff8c3[_0x163984(0x28a,'A1bl')](_0x5f5d46),_0x4cb243[_0x5f5d46]=_0x369fd8[_0x163984(0x207,'$L[S')+_0x163984(0x172,'YgHU')]||_0x369fd8['userna'+'me']||_0x5f5d46;}}const _0x3cb5ef={},_0x2c9740=_0x5ef841[_0x18912f(0x187,'YgHU')+_0x18912f(0xc3,'7GWs')],_0x1c5f84=Array[_0x18912f(0x84,'^hJh')+'y'](_0x2c9740)?_0x2c9740:Object['values'](_0x222554[_0x163984(0xee,'((&C')](_0x2c9740,{}));for(const _0x74941a of _0x1c5f84){if(_0x74941a==null)continue;if(typeof _0x74941a===_0x222554[_0x163984(0x16d,'kA31')])continue;const _0x1494bb=String(_0x74941a[_0x18912f(0x284,'tcr^')]||_0x74941a['pk']||_0x74941a[_0x163984(0x2af,'DIFr')+'d']||_0x74941a[_0x18912f(0x2ac,')sPG')+'ipant_'+'id']||''),_0x420729=_0x222554[_0x18912f(0x9e,'4WFQ')](typeof _0x74941a[_0x163984(0x1bb,'O(J)')+'me'],_0x222554[_0x18912f(0x145,'A1bl')])?_0x74941a[_0x163984(0x277,'1&X[')+'me']:_0x74941a[_0x163984(0x219,'JFk4')+'me']?.[_0x163984(0x113,')sPG')+'me']||null;if(_0x1494bb&&_0x222554[_0x18912f(0xb4,'4[J^')](_0x1494bb,'0')&&_0x420729)_0x3cb5ef[_0x1494bb]=_0x420729;}for(const [_0x3c72b0,_0x16f88b]of Object[_0x18912f(0x209,'uWeb')+'s'](_0x222554[_0x18912f(0x242,'uiC7')](_0x2c9740,{}))){if(_0x222554[_0x18912f(0x29e,'tewB')](typeof _0x16f88b,_0x222554[_0x163984(0xc4,'[Y2@')])&&_0x16f88b&&/^\d+$/['test'](_0x3c72b0))_0x3cb5ef[String(_0x3c72b0)]=_0x16f88b;}return{'title':_0x5ef841['thread'+_0x18912f(0x169,'D4z%')]||null,'image':_0x5ef841[_0x163984(0x257,'W$Kx')+_0x163984(0x16c,'1&X[')+'_url']||null,'isGroup':!!_0x5ef841[_0x18912f(0xda,'A1bl')+'up'],'members':_0x4ff8c3,'names':_0x4cb243,'adminIDs':new Set((_0x5ef841[_0x18912f(0x116,'hBUp')+_0x18912f(0x98,'BLHx')+'ds']||[])[_0x163984(0x15f,'CXJW')](String)),'nicknames':_0x3cb5ef,'threadID':_0x222554[_0x18912f(0x126,'^hJh')](String,_0x5ef841['id']||_0x5ef841[_0x163984(0x81,'$L[S')+_0x163984(0x188,'uRE[')])};}[_0x68f711(0xca,'*2@g')+_0x2192cb(0x1c1,'$L[S')](_0x5ce848,_0x49c124){const _0x59dd11=_0x68f711,_0x2ece7d=_0x68f711,_0x596244={'jevrQ':function(_0x2afb8f){return _0x2afb8f();},'SKCRg':_0x59dd11(0x96,'CXJW')+_0x2ece7d(0x245,'kA31')+'e','fENAv':function(_0x56468c){return _0x56468c();},'PNFNN':_0x2ece7d(0x29d,'Kk[@')+_0x2ece7d(0xf0,'[Y2@')+_0x2ece7d(0x14a,'1&X['),'yJSrQ':function(_0x1743d9,_0x5b9dfa){return _0x1743d9===_0x5b9dfa;},'nqkSB':_0x2ece7d(0x1ce,'[Yq^'),'qpAbG':_0x59dd11(0x1d4,'BLHx')+_0x59dd11(0x1ed,'@Gpj')+_0x59dd11(0x129,'fWx&'),'IhUFh':_0x2ece7d(0xc7,'1&X[')+_0x59dd11(0x12b,')sPG'),'sGJKs':function(_0x4212ce){return _0x4212ce();},'fCeDb':_0x59dd11(0x171,'^hJh')+_0x59dd11(0x28d,'((&C'),'baLqU':function(_0x1375d9,_0x466aa6){return _0x1375d9!==_0x466aa6;},'OrjJP':function(_0x659d82){return _0x659d82();},'KqnCU':'log:us'+_0x59dd11(0x17d,'Xuyg')+_0x59dd11(0x267,'Xuyg'),'tggjT':function(_0x2ac6b6,_0x142c46){return _0x2ac6b6!==_0x142c46;},'pKUzv':'log:th'+_0x59dd11(0x1ab,'7GWs')+_0x59dd11(0x17e,'kA31'),'NIPid':function(_0x4676b4,_0x13e7fa){return _0x4676b4!==_0x13e7fa;},'GmMWL':function(_0x5a6d62,_0x5d1884){return _0x5a6d62!==_0x5d1884;},'GDySl':'KTVmO','kyJKG':'log:th'+_0x2ece7d(0x1c7,'tcr^')+_0x2ece7d(0x2b2,'U$L4')},_0xa5d7df=[],_0x306438={'type':_0x59dd11(0x130,'@Gpj'),'threadID':_0x49c124[_0x59dd11(0x26f,'U$L4')+'ID'],'author':'','participantIDs':[..._0x49c124[_0x2ece7d(0x22a,'MOU$')+'s']],'isGroup':_0x49c124[_0x2ece7d(0x1d8,'((&C')+'p'],'timestamp':Date[_0x2ece7d(0x243,'$L[S')]()},_0x3c6777=()=>_0x2ece7d(0x271,'tewB')+_0x49c124[_0x59dd11(0x26d,'WYQ$')+'ID']+'.'+Date[_0x59dd11(0x143,'*2@g')]()+'.'+Math['random']()['toStri'+'ng'](0x24)[_0x59dd11(0x1a0,'fWx&')](0x2,0x8);if(_0x5ce848[_0x59dd11(0x103,'WYQ$')+'p']&&_0x49c124['isGrou'+'p']){const _0x4cb53f=[..._0x49c124[_0x2ece7d(0x20e,'J@7O')+'s']][_0x59dd11(0xea,'@Gpj')](_0x516ddb=>!_0x5ce848[_0x2ece7d(0xa9,'Pb*L')+'s'][_0x59dd11(0x19a,'hBUp')](_0x516ddb)),_0xf7dab3=[..._0x5ce848[_0x59dd11(0x279,'U$L4')+'s']][_0x59dd11(0xef,'tewB')](_0x5a97e8=>!_0x49c124[_0x59dd11(0x1c3,'L[Hd')+'s'][_0x2ece7d(0x157,'1&X[')](_0x5a97e8));_0x4cb53f[_0x59dd11(0xfd,'DIFr')]&&_0xa5d7df[_0x2ece7d(0x2a4,'U$L4')]({..._0x306438,'messageID':_0x596244[_0x2ece7d(0xe6,'$L[S')](_0x3c6777),'logMessageType':_0x596244[_0x2ece7d(0x1b7,'YgHU')],'logMessageData':{'addedParticipants':_0x4cb53f[_0x2ece7d(0x26c,'wJ5j')](_0x362937=>({'userFbId':_0x362937,'fullName':_0x49c124[_0x2ece7d(0x191,'L[Hd')][_0x362937]||_0x362937,'firstName':(_0x49c124[_0x2ece7d(0x140,'uWeb')][_0x362937]||'')[_0x59dd11(0xaa,'O(J)')]('\x20')[0x0]||_0x362937}))}});for(const _0x21fe85 of _0xf7dab3){_0xa5d7df['push']({..._0x306438,'messageID':_0x596244['fENAv'](_0x3c6777),'logMessageType':_0x596244[_0x2ece7d(0xb7,'((&C')],'logMessageData':{'leftParticipantFbId':_0x21fe85}});}const _0x13cb52=[..._0x49c124[_0x59dd11(0x10e,'fWx&')+'Ds']][_0x2ece7d(0xea,'@Gpj')](_0x52f0ba=>!_0x5ce848[_0x2ece7d(0x1bd,'A1bl')+'Ds'][_0x59dd11(0x195,'uWeb')](_0x52f0ba)),_0x23f6d5=[..._0x5ce848[_0x59dd11(0xb2,'U$L4')+'Ds']][_0x2ece7d(0x1af,'1&X[')](_0x27fd8c=>!_0x49c124[_0x59dd11(0x111,'ZFEd')+'Ds']['has'](_0x27fd8c));for(const _0x11bd73 of _0x13cb52){if(_0x596244[_0x2ece7d(0xf5,'hBUp')](_0x596244[_0x59dd11(0xe4,'[Y2@')],_0x596244[_0x2ece7d(0x286,'wJ5j')]))_0xa5d7df[_0x59dd11(0x120,'Xuyg')]({..._0x306438,'messageID':_0x3c6777(),'logMessageType':_0x596244[_0x2ece7d(0x1a1,'Bp&A')],'logMessageData':{'ADMIN_EVENT':_0x596244[_0x2ece7d(0xe5,'RwJc')],'TARGET_ID':_0x11bd73}});else return null;}for(const _0x3047f1 of _0x23f6d5){_0xa5d7df['push']({..._0x306438,'messageID':_0x596244[_0x2ece7d(0xcb,'JFk4')](_0x3c6777),'logMessageType':_0x596244[_0x2ece7d(0x16a,'[Yq^')],'logMessageData':{'ADMIN_EVENT':_0x596244[_0x2ece7d(0xb3,'(DLl')],'TARGET_ID':_0x3047f1}});}for(const _0x5c9c16 of Object[_0x59dd11(0x118,'wAq[')](_0x49c124['nickna'+_0x2ece7d(0x1b1,'O(J)')])){_0x596244[_0x59dd11(0x239,'@Gpj')](_0x5ce848[_0x59dd11(0x223,'@Gpj')+_0x59dd11(0x11c,'CXJW')][_0x5c9c16],_0x49c124[_0x59dd11(0xe1,'fWx&')+_0x2ece7d(0x180,'JFk4')][_0x5c9c16])&&_0xa5d7df[_0x59dd11(0x16e,'kA31')]({..._0x306438,'messageID':_0x596244[_0x59dd11(0x1e2,'JFk4')](_0x3c6777),'logMessageType':_0x596244[_0x59dd11(0x25c,'hBUp')],'logMessageData':{'participant_id':_0x5c9c16,'nickname':_0x49c124[_0x2ece7d(0x1bb,'O(J)')+_0x2ece7d(0x134,'[Y2@')][_0x5c9c16]}});}}_0x596244[_0x2ece7d(0xb9,'D4z%')](_0x5ce848[_0x2ece7d(0xfb,'@Gpj')],_0x49c124[_0x59dd11(0x26e,'Kk[@')])&&_0xa5d7df[_0x59dd11(0x29c,'*2@g')]({..._0x306438,'messageID':_0x596244[_0x2ece7d(0xd9,'uWeb')](_0x3c6777),'logMessageType':_0x596244[_0x2ece7d(0x153,'[Y2@')],'logMessageData':{'name':_0x49c124[_0x59dd11(0x208,'W$Kx')]}});if(_0x596244[_0x59dd11(0xa4,'((&C')](_0x5ce848[_0x59dd11(0x181,'@Gpj')],_0x49c124[_0x2ece7d(0x15d,'[Yq^')])){if(_0x596244[_0x59dd11(0x170,'DIFr')](_0x2ece7d(0x115,'4[J^'),_0x596244[_0x2ece7d(0x102,'rUdl')]))_0xa5d7df[_0x2ece7d(0x1f4,'wAq[')]({..._0x306438,'messageID':_0x596244[_0x2ece7d(0x1dc,'4WFQ')](_0x3c6777),'logMessageType':_0x596244[_0x59dd11(0x14e,'keT^')],'logMessageData':{'url':_0x49c124[_0x2ece7d(0x133,'Kk[@')]}});else{for(const _0x910d65 of _0x371716){const _0x5b4b36=_0x2c44d3(_0x910d65['id']||_0x910d65[_0x2ece7d(0xf3,'4WFQ')+'_id']),_0x31ca6d=this[_0x59dd11(0x1a2,'YgHU')+_0x59dd11(0x225,'Kk[@')+_0x2ece7d(0x17f,'A1bl')](_0x910d65)[0x0];if(_0x31ca6d)this[_0x59dd11(0x165,'(DLl')][_0x2ece7d(0x204,'^hJh')](_0x5b4b36,_0x31ca6d['id']);}this[_0x2ece7d(0x1e7,')sPG')+_0x2ece7d(0xc0,'0ly2')]=_0x174040,this[_0x59dd11(0x200,'tcr^')+_0x59dd11(0x23b,'U$L4')]=!![];return;}}return _0xa5d7df;}async[_0x2192cb(0x254,'RwJc')+_0x68f711(0xb1,'1&X[')](_0x39c9e3){const _0x38227c=_0x2192cb,_0x2de15e=_0x68f711,_0x26d0f1={'QvEtj':function(_0x53f5f8,_0x4ce1c4){return _0x53f5f8(_0x4ce1c4);},'BwGHq':function(_0x4d3eb5){return _0x4d3eb5();},'PevxS':function(_0x1cd747,_0x3fe5be,_0x337cf6,_0x456ea5){return _0x1cd747(_0x3fe5be,_0x337cf6,_0x456ea5);},'nRBqc':function(_0x852e9,_0x401aae){return _0x852e9(_0x401aae);},'MEJys':_0x38227c(0xff,'keT^'),'VqFYb':function(_0x3a1bc6,_0x364228){return _0x3a1bc6===_0x364228;},'wNiLu':_0x38227c(0xa5,'Kk[@'),'qTiTs':function(_0x1944aa,_0x262e6c){return _0x1944aa(_0x262e6c);},'CKYdt':function(_0x1eb2ef,_0x1878ef){return _0x1eb2ef&&_0x1878ef;},'qAvcD':function(_0x2f889a,_0x5df833){return _0x2f889a(_0x5df833);},'Aeziy':function(_0x5a9ebb,_0xd452b1){return _0x5a9ebb-_0xd452b1;}},_0x17ea69=await _0x26d0f1[_0x2de15e(0xd4,'keT^')](fetchThreadDetail,this[_0x38227c(0x99,'*2@g')],_0x39c9e3,0x14)['catch'](()=>null);if(!_0x17ea69)return{};const _0x56089c=_0x26d0f1[_0x38227c(0x1d0,'tcr^')](threadFbidMap,_0x17ea69),_0x525b41={};for(const _0x5b2152 of _0x17ea69[_0x38227c(0x27c,'6v8M')]||[]){if(_0x26d0f1[_0x38227c(0x211,'Bp&A')]===_0x2de15e(0x22e,'RwJc'))return _0x26d0f1[_0x38227c(0xcf,'BLHx')](_0x58176b,_0x253250['conten'+'t']);else{const _0x394fab=String(_0x5b2152['id']||_0x5b2152['pk']||'');if(_0x394fab)_0x525b41[_0x394fab]=_0x5b2152;}}const _0x3950d4=(_0x17ea69[_0x38227c(0xd3,'WYQ$')+_0x38227c(0x87,'1&X[')+'es']?.[_0x2de15e(0xe7,'^hJh')]||[])['map'](_0x29f40a=>_0x29f40a[_0x38227c(0x18c,'Kk[@')]||_0x29f40a),_0xc1bb71={};for(const _0x275f3c of _0x3950d4){if(_0x26d0f1[_0x2de15e(0x136,'kA31')](_0x26d0f1[_0x38227c(0x89,'uRE[')],_0x26d0f1[_0x2de15e(0x27b,'CXJW')])){const _0x31818e=_0x26d0f1[_0x38227c(0x18e,'DIFr')](String,_0x275f3c[_0x38227c(0x9f,'Bp&A')+_0x38227c(0x217,'DIFr')]||''),_0x37eaa0=/ADD_PARTICIPANT_XMAT/i[_0x2de15e(0x119,'O(J)')](_0x31818e),_0xaec413=/REMOVE_PARTICIPANT_XMAT/i[_0x38227c(0x1b5,'MOU$')](_0x31818e);if(_0x26d0f1[_0x38227c(0x18b,'[Yq^')](!_0x37eaa0,!_0xaec413)||_0x37eaa0&&_0xc1bb71[_0x38227c(0x1be,'WYQ$')]||_0xaec413&&_0xc1bb71[_0x2de15e(0x1d6,'4WFQ')])continue;const _0xc49e1c=_0x275f3c[_0x2de15e(0x203,'L[Hd')+_0x38227c(0x216,'D4z%')]!=null?_0x26d0f1['qAvcD'](String,_0x275f3c[_0x38227c(0xb5,'^hJh')+_0x2de15e(0x14f,'kA31')]):null,_0x1d1b4b=_0xc49e1c&&_0x56089c[_0xc49e1c]?_0x56089c[_0xc49e1c]:_0xc49e1c||'',_0x3e2381=_0x525b41[_0x1d1b4b]||{},_0xf82a7d=_0x275f3c[_0x2de15e(0x1f7,')sPG')+'t']?.['text_f'+_0x2de15e(0x231,'D4z%')+'ts']||[],_0x259c04={'actorID':_0x1d1b4b,'actorName':_0x3e2381[_0x2de15e(0x137,'keT^')+_0x2de15e(0x1db,'U$L4')]||_0x3e2381[_0x2de15e(0x1b3,'[Yq^')+'me']||_0xf82a7d[0x0]?.[_0x38227c(0x1e5,'(DLl')+_0x38227c(0xad,'wAq[')]||null,'targetName':_0xf82a7d[_0x38227c(0xde,'@Gpj')]?_0xf82a7d[_0x26d0f1[_0x2de15e(0x1ff,'DIFr')](_0xf82a7d[_0x2de15e(0x1cb,'4WFQ')],0x1)][_0x2de15e(0x19f,'fWx&')+'ext']:null};if(_0x37eaa0)_0xc1bb71[_0x2de15e(0x11e,'[Yq^')]=_0x259c04;else _0xc1bb71[_0x2de15e(0x201,'keT^')]=_0x259c04;}else _0xec6b75[_0x2de15e(0xe2,'wJ5j')]({..._0x1dce10,'messageID':_0x26d0f1[_0x2de15e(0x1f8,'O(J)')](_0x2252b0),'logMessageType':_0x2de15e(0x26a,'*2@g')+_0x38227c(0x167,'uWeb')+'kname','logMessageData':{'participant_id':_0x3ffb0f,'nickname':_0x20456b['nickna'+_0x38227c(0xbd,'RwJc')][_0x4a61a0]}});}return _0xc1bb71;}[_0x2192cb(0x23d,'0ly2')](_0x42ff1b,_0x1e3d5b=0x3a98){const _0x53a205=_0x2192cb,_0x5ce3e9=_0x68f711,_0x336fe7={'MrrbW':_0x53a205(0x23f,'uRE['),'lyCjT':function(_0x14b938,_0x197d5c){return _0x14b938(_0x197d5c);},'KnCAc':function(_0x26e073){return _0x26e073();},'frGhs':_0x5ce3e9(0xab,'hBUp')+_0x53a205(0x164,'BLHx')+_0x5ce3e9(0x1db,'U$L4'),'zSLun':_0x5ce3e9(0x296,'4WFQ'),'xvPDI':_0x5ce3e9(0x11d,'CXJW'),'kSVID':function(_0x559521,_0x5e87cf){return _0x559521===_0x5e87cf;},'UNMrv':_0x53a205(0x24d,'U$L4'),'TvdmP':function(_0x2e2cc7,_0xd47bdd){return _0x2e2cc7(_0xd47bdd);},'pnEIE':_0x5ce3e9(0x8a,'6v8M'),'ojcmy':_0x53a205(0x251,'U$L4'),'etcRv':function(_0xed8499,_0x48a119){return _0xed8499(_0x48a119);},'xNfzD':function(_0x110480,_0x1dc9ae,_0x442656){return _0x110480(_0x1dc9ae,_0x442656);},'JxDBp':_0x53a205(0x21e,'DIFr')+_0x5ce3e9(0x229,'0ly2')+_0x5ce3e9(0xa6,'fWx&'),'Dkhai':function(_0x4c7a7f,_0xb8ca2f,_0x2eec56){return _0x4c7a7f(_0xb8ca2f,_0x2eec56);}};let _0x2c46a1=![];const _0x2b6287=async()=>{const _0x1e164c=_0x53a205,_0x46f4f3=_0x53a205,_0x3dac2c={'GxVtS':function(_0x58bd28,_0x37e222){return _0x58bd28===_0x37e222;},'azefE':_0x336fe7[_0x1e164c(0x177,'ZFEd')],'YUWnE':function(_0x42ec1e,_0x19b229){const _0x4a49a3=_0x1e164c;return _0x336fe7[_0x4a49a3(0x258,'tcr^')](_0x42ec1e,_0x19b229);},'hJvdF':function(_0x5a3015){const _0x403a34=_0x1e164c;return _0x336fe7[_0x403a34(0x287,'uiC7')](_0x5a3015);},'odvtx':_0x336fe7[_0x46f4f3(0x144,'fWx&')]};if(_0x336fe7[_0x46f4f3(0xce,'Xuyg')]===_0x336fe7[_0x46f4f3(0xa3,'U$L4')]){if(_0x3dac2c[_0x1e164c(0x289,'BLHx')](typeof _0x925503,_0x3dac2c[_0x46f4f3(0x28b,'J@7O')])&&_0x5cc286&&/^\d+$/[_0x46f4f3(0x182,'rUdl')](_0xb3d61a))_0x382181[_0x3dac2c[_0x1e164c(0xc9,'((&C')](_0x44217e,_0x519382)]=_0x8c480e;}else{if(_0x2c46a1)return;_0x2c46a1=!![];try{if(_0x336fe7[_0x46f4f3(0xf7,'tcr^')](_0x46f4f3(0x190,'CXJW'),_0x336fe7[_0x46f4f3(0x25a,'rUdl')]))_0x26f97a[_0x46f4f3(0x1df,'W$Kx')]({..._0x1e4ca1,'messageID':_0x3dac2c[_0x1e164c(0x227,'kA31')](_0x231333),'logMessageType':_0x3dac2c[_0x46f4f3(0x1d2,'6v8M')],'logMessageData':{'name':_0x127556[_0x46f4f3(0xd1,'CXJW')]}});else{const {threads:_0x392a25}=await this[_0x1e164c(0x147,'uRE[')+'ox'](),_0x271ad9=new Map();for(const _0x51f9d1 of _0x392a25)_0x271ad9[_0x1e164c(0xf6,'RwJc')](_0x336fe7[_0x46f4f3(0x8d,'[Y2@')](String,_0x51f9d1['id']||_0x51f9d1[_0x46f4f3(0x26d,'WYQ$')+_0x1e164c(0x220,'Kk[@')]),this[_0x46f4f3(0x1fb,')sPG')+_0x1e164c(0x1ef,'19Sb')](_0x51f9d1));if(_0x336fe7['kSVID'](this[_0x46f4f3(0x23a,'tcr^')][_0x1e164c(0x131,'@Gpj')],0x0)){if(_0x336fe7['kSVID'](_0x336fe7[_0x46f4f3(0x1cc,'B3f0')],_0x336fe7[_0x46f4f3(0x10d,'*2@g')])){const _0x3f0b00=_0x21473b[_0x46f4f3(0x104,')sPG')]?.[_0x1e164c(0x218,'W$Kx')+_0x46f4f3(0x232,'DIFr')+_0x1e164c(0x230,'W$Kx')+_0x1e164c(0x252,'YgHU')+'bid'];if(_0x3f0b00&&!this[_0x1e164c(0xe3,'fWx&')+_0x46f4f3(0x202,'^hJh')])this[_0x1e164c(0xa2,'$L[S')+'bid']=_0x3dac2c[_0x46f4f3(0xcc,'YgHU')](_0x1c4753,_0x3f0b00);}else{for(const _0x390a76 of _0x392a25){const _0x228d3d=_0x336fe7[_0x46f4f3(0x10f,'1&X[')](String,_0x390a76['id']||_0x390a76[_0x1e164c(0x26d,'WYQ$')+'_id']),_0x354ee0=this[_0x1e164c(0x270,'$L[S')+_0x1e164c(0x155,'tcr^')+_0x46f4f3(0x12f,'JFk4')](_0x390a76)[0x0];if(_0x354ee0)this[_0x46f4f3(0x139,'wAq[')][_0x1e164c(0x158,'keT^')](_0x228d3d,_0x354ee0['id']);}this[_0x46f4f3(0x2a3,'[Y2@')+_0x46f4f3(0x105,'uRE[')]=_0x271ad9,this[_0x1e164c(0x21a,')sPG')+_0x46f4f3(0x13b,'tewB')]=!![];return;}}for(const _0x4293ce of await this['_extra'+_0x1e164c(0xdd,'4WFQ')+'ts'](_0x392a25))_0x336fe7[_0x46f4f3(0x9a,'wJ5j')](_0x42ff1b,null,_0x4293ce);if(this[_0x1e164c(0x1d7,'Pb*L')+_0x1e164c(0x11b,'DIFr')])for(const [_0x3f558f,_0x5cdc20]of _0x271ad9){const _0x187c27=this[_0x1e164c(0x114,'J@7O')+'dState']['get'](_0x3f558f);if(!_0x187c27)continue;const _0x3b6c55=this[_0x1e164c(0xc8,'((&C')+_0x46f4f3(0x237,'rUdl')](_0x187c27,_0x5cdc20);if(_0x3b6c55['some'](_0x3603ad=>_0x3603ad[_0x46f4f3(0x108,'4WFQ')+_0x1e164c(0x15a,'Bp&A')+'pe']===_0x1e164c(0xd0,'D4z%')+_0x46f4f3(0x1ec,'O(J)')+'e'||_0x3603ad[_0x1e164c(0x93,')sPG')+_0x46f4f3(0x24e,'19Sb')+'pe']===_0x46f4f3(0x21d,'W$Kx')+_0x1e164c(0x288,'wAq[')+_0x46f4f3(0xf1,'7GWs'))){const _0x3c7a06=await this[_0x1e164c(0x1b6,'tcr^')+'tActor'](_0x3f558f);for(const _0xf779bd of _0x3b6c55){const _0x4fde00=_0x336fe7[_0x46f4f3(0x260,'L[Hd')](_0xf779bd['logMes'+_0x46f4f3(0x294,'YgHU')+'pe'],_0x336fe7[_0x1e164c(0x18d,'O(J)')])?_0x3c7a06[_0x1e164c(0x12d,'Bp&A')]:_0x3c7a06[_0x1e164c(0x1b8,'(DLl')];if(!_0x4fde00)continue;_0xf779bd[_0x1e164c(0x1a8,'tewB')]=_0x4fde00[_0x1e164c(0xe9,'4[J^')+'D']||_0xf779bd[_0x1e164c(0x159,'0ly2')],_0xf779bd[_0x46f4f3(0x2a0,'wAq[')+_0x46f4f3(0x21f,'tcr^')+'ta']={..._0xf779bd[_0x1e164c(0x173,'CXJW')+_0x46f4f3(0x23e,'MOU$')+'ta'],'actorName':_0x4fde00[_0x46f4f3(0x109,'0ly2')+_0x1e164c(0x278,'WYQ$')],'targetName':_0x4fde00['target'+_0x1e164c(0x150,'kA31')]};if(_0x4fde00[_0x1e164c(0xa8,'BLHx')+'D']&&_0x4fde00[_0x1e164c(0x221,')sPG')+_0x46f4f3(0x265,'1&X[')])try{await global['db'][_0x46f4f3(0x19e,'W$Kx')+_0x1e164c(0x168,'JFk4')][_0x1e164c(0x112,'Kk[@')](_0x4fde00[_0x46f4f3(0x264,'*2@g')+'D'],{'name':_0x4fde00[_0x1e164c(0x8f,'(DLl')+_0x46f4f3(0x135,'W$Kx')]});}catch(_0x5ded50){}}}for(const _0x42aa78 of _0x3b6c55)_0x336fe7[_0x46f4f3(0xbf,'4WFQ')](_0x42ff1b,null,_0x42aa78);}this[_0x1e164c(0x253,'7GWs')+_0x46f4f3(0x2ae,')sPG')]=_0x271ad9;}}catch(_0x2c55fa){_0x42ff1b(_0x2c55fa,null);}finally{_0x2c46a1=![];}}};return this[_0x5ce3e9(0xed,'uiC7')+_0x53a205(0x280,'*2@g')]=_0x336fe7['Dkhai'](setInterval,_0x2b6287,_0x1e3d5b),_0x2b6287(),()=>clearInterval(this[_0x53a205(0x1c4,'0ly2')+_0x53a205(0x213,'Kk[@')]);}[_0x2192cb(0x13a,'(DLl')+'p'](_0x11c885){const _0x5c6311=_0x68f711,_0x2c2772=_0x2192cb,_0xe34810={'yNFmk':function(_0x374a6b,_0xd4643b){return _0x374a6b===_0xd4643b;},'NzEyi':_0x5c6311(0x244,'DIFr'),'tPHfC':function(_0x46409c,_0x1c6698){return _0x46409c(_0x1c6698);}};if(_0x11c885&&_0xe34810[_0x5c6311(0x127,'DIFr')](typeof _0x11c885,_0xe34810['NzEyi']))return _0x11c885[_0x2c2772(0x22c,'B3f0')]||_0x11c885;const _0x50fbb2=_0xe34810[_0x2c2772(0x1cf,'uWeb')](String,_0x11c885)[_0x2c2772(0x9d,'J@7O')+'e'](/^for \(;;\);/,'');try{return JSON[_0x2c2772(0x2a9,'O(J)')](_0x50fbb2)[_0x5c6311(0x298,'((&C')];}catch(_0x2c9f7b){return null;}}[_0x2192cb(0x1a7,'B3f0')+_0x2192cb(0xa0,'L[Hd')+'g'](){const _0x6aa4bf=_0x68f711,_0x500d7e=_0x68f711;if(this[_0x6aa4bf(0x215,'ZFEd')+_0x6aa4bf(0x246,'tcr^')])clearInterval(this[_0x6aa4bf(0x149,'^hJh')+_0x6aa4bf(0x186,'A1bl')]);}}module[_0x2192cb(0x222,'4WFQ')+'s']=InboxMethods;function _0x4cf5(){const _0x197ab3=['W416e2aHuq','WQmUWQFcKSo1W5K','W70BDte','W7NdNhraAYK','teHKy2m','jGtcVq','W5T+WQvGW65M','W4vwjtnaWQe','W7hcPq9qwSk5','WPiAj2q','W5RdI8kKsCo7Ca','WRnrWOW','h1GEA8o6BW','W6H7h38Qva','W7W9W6CcWQq','mCkJuuFdOa','lmkiW4zvW5JcHW','W7PGWR7dPmkxnG','CSozWPGbWO7dG8odxSoxWQGDWRCF','W6tdPSo2W4FcGCks','W5tdLxrqiZm','mSkRsIhdO8oM','EmkaW5HM','C8oBWQ4','jSovW4NdL0ZdUa','W5mvu8oKaq','W7WiC8obiJ4','W79GdLSD','W4PXWPLUW58','W4JdOLDfBq','W5HeWQvRW7rr','aSk7vcFdVG','pNFdNw/cHSoZ','gCoHsmo5WQ/dLW','WRiSj2JdQq','omovW4RdN07dTq','mCoeWPWXW5jh','ECkhW6TKuSk+','WOpcUH3cIa','k24uW5JcIq','W4VcJqm','lmo1W6NdSu4','W43cHrjocqu','W5RdOmolW4xcSmkt','zmolWQ7cSW','gCk6wIC','W4JdN3fr','iafSg8k8','WO/cVb0','W5jNaCoMDCkC','nWZcUmkqa0O','qmk3l8kgW5FcJW','W5XryCo6WR4Z','W55EndHm','BSo+aI7cUqtdKCkVWOKGW47dGa','W4fyW5pcKCoz','W75OlCo9Aa','W73cVW9jxCk6','n2CNW73dHSo2','WQ7dTv8damoHWPOuASoOWPRdH10','W59Ciq','ow9NWONcKvi','WROFWRJcN8oa','kGhcQq','d3j2WONcJq','iweiW7G','WQjAWPVdRSoSW4K','krtcJCkwovS','W6bkz8o8WR48','W53cUYTZrq','W5bVW7FcLmozW5u','bNtdIW','W5Xwz8oPWQSH','W6D5gx4Jza','zSkmre1Teq','WPRcJ8oUWP7dHG','qCkauLbX','W7NdG2fvEJ8','W4f+W5/cJCokW54','mMH3','mSkiW4vtW5JcHW','i2rN','qSoiWPFcJCk2','W5vDbSoWFW','W7i6W64pWP8B','ymoxWQNcT8kR','W5TpWQv6W7vM','W4pdGhLDAYK','pIxcNedcOue','WQFdHCowWQm','WQVdRSk1W6VcQG','W7bIjSo+A8og','pmkQrYhdVW','m8kUW4PeW5G','WR7cHmoPWQldNa','WQddPCoOWQe','WPj3d8kB','W6/cRGxcRCkM','WRlcPrBcGCksmW','e3XKpCoG','Dmk6xeb4bG','FCoqWQNcVSk8W6e','arPLoSkcW5y','W5XwFCoPWQ83','WRlcOrhcN8kBbG','W5Xee2e8uq','EmorWRRdOCk7W6a','BmkktWn9dq','W5xdKxjrsJS','WQrZdG','W6jgFCoNWQKC','l8oiW5FdN0RdPa','k2SLW7lcHCo2','ECkyW455rCku','WP9xd8kAW5WS','WPhcIXZdMqxcKG','eCksWOtdSmo+','D3Dtqq','W5zLWRpdU8kyea','W6qBAYCBsa','WRxdTmo8WQZdKW','W4CAySom','WOH1rw56ta','pr/dH8kSW6i','WO/dVmo0WQ4','DCozWRtcTCkPW5e','pNTHoCoHvG','Cmk6rvX7ea','omkNrhtdOa','WPNcVbtcImkneW','gmkmvJxdGq','gSoyWR0GW5zh','WQFdG8ohWRlcIq','W556W4i','j2mkW6JcVG','W7NdG3brya','W7RcKG92hWq','ceKFlmo8CW','W4L5WQldVmkEda','W7OFysa6wW','WOVcJc/dGHNcLa','WPVdLvCOs1xdISoegmotWQdcHCoL','i2CYW7RcG8of','WR/dHmoAWORdIa','W7OGW7u','B8khqLXRfW','g8kRWPhdPSorW7m','W4/dNxbg','W6X9W5dcI8oy','mSkQtctdTmoM','W4T9f3W7qW','W6maW5NcQCkAWO5QW7CgWR4GfCk9','WQldTCo6WQRdLmov','WOz4oc9tWRBdJW','W6JcQqrvnG','W4rsmJP9WR0','avyuF8oTAa','W7DVWPnhW4q','W6NcTGTFcq','ANbcq1VdMG','W5xcVGRcUSkWWQe','gHVdO8k+W49T','WPP+a8khW4Gs','nCkiW5Hd','ymowWQ/cVSkVW6O','W4RdIvzEwG','WQeVWRhcKSo7W6i','WPRdV8oVWQhcMW','W5DvWRrLW4n3','emk3xLtdNq','WRnrWOhdTmomW6q','W7NcOX5KxCkQ','WR7dV8o/WQW','kSk+W71+W7K','W5T0W4y','kevYo8oBvq','CmoSWQtcQCkb','W6VdSCowW4FcP8k+','tSk8la','hMyrpmogzG','bLCskmo8','W4r4WRHgW5G','CXbdpq','W6BdVCofWPlcOmke','AZrzdHi','sJrR','WQzDWPRdV8okW58','WO9ZhSkfW4O','W57cIbr+gWq','W4S7W6OrWQuu','ltRcJrK','h8kXWP7dOmoDW6m','W5v6WRVdSCkb','WP7cTGVcHmkoeW','CSkaWPdcHGZcPxFdK8ooyCooga','WRONWQu','qCk4kSkbW5dcGa','WRnyWO0','W4FcHqT5hXi','W4TSaG','fL/dLKRcLW','gmkSrYhdTq','mbvKomki','WRpdV8o1WR3dHCos','W4/dJw/cK0BdGxW5zSkMWQjrW6W','W6pdV8ohW5O','WQpdLmomWRtcMru','CSkDW4G','W5xcQq3cPSkHWQu','W4/dL3Xq','W4XeWRbSWRfQ','ssrWoGu','WPVdVSoyWOJdGW','iMezW6pdHmoT','mSo2ECk3WOG','W5RdI8kT','W7X9lSo6sW','ECkhW61Kt8kQ','t8kvW4H7vmkL','a8kRDJZdH8oZ','WQldMCo4W4pcSgu','WP4CjW','lCkMW611W5W','mCkyW5HF','s8onWQNcUSk6W6S','BgjavfddHq','W7GeW4qHWQe','iSokW7pdOfi','W5neWQj7W71K','DmkvW5H3','gSkTESkwWORcNq','WOKgjNpdOmk6','W4nwlsS','W7RdP8orW4a','WPD1dCotW5OJ','hc7cVx7cNG','WPBcNSoxWRpdNvK','pxSCW53dGSoS','aqDspSkTW4m','y8kWW4vKwmkO','WQmbk3pdMSkY','W5RcLrvZ','BCoktfb6bG','WQrPd8kmW4e','f8k3WPBdSq','WRisWR3cHCoXW5W','W6/cRr5iuq','W65oWR1PW65Q','W4ddMxLaAYG','W7neE8o8WRiX','WOjNWOdcNSkkW4C','W6D2FCoPWQ83','DCkwtuTxcG','WQJdLmowWOBcNHG','gghdMG','W4FcGqf+','WQJdNSkwW5JcRgy','aqD1','W6aNW7agWQer','p3Sm','W5BdMfbMAa','oxjsWP7cKvW','WPDIWRVdUCoQ','WRlcTHBcG8kkaG','qSk0oSkzW5/cHG','ogCKW6pdKSo9','WO/cTJtdPWi','kCk4DdhdRG','bmkLx3NdVfK','WOFcPmoBWQ8','WQGdj2ZdRW','WQFcIZJdHXhcTq','jGpcRCkwh3a','lt/cILBcO1y','WQBdImkJW6pcSgu','kCkzW59h','W69kBSofWR4H','DM5cqW','W7NdK3PAEJ8','dx7dMdZcKCol','hSkEW45BW5VcSW','amo9sSkXWOtdLG','W6ldPSowW5G','xXT9eWm','mK0Bn8o8yq','W6FdS8os','W69Io8oWB8ox','mmoNW77dM1W','WPdcRSonWQ/dILi','mSkzW45zW5tcMW','hrz2pCkfW5i','W4S8W6CpWQyZ','W5lcLJzFmW','xSk9W7X/wq','WRbCj8kVW4e','WR4KWRa','vcv3adm','fmoTw8kSWQNdTG','a8osWOuYW4nq','W6ZcVabsqa','n8kPvY3dVfq','WPjUd8keW5W','ngWp','j8obWP4Udmo5qSouhCkZf1xdJq','kmozW4m','WRzQWPZdTCo0W5i','w8kqkSkEW5hcKW','W4VcHaTYfcK','ispcVmk9dW','WOpdUmk+W47cIW','i2r9WOJcHK8','W6Pqb8oAyq','qmk6W6PyCW','W6tdNmkNqCoLsG','oh1HpSoq','W6xdTmoeW4tcVmkz','c8oeWPSXW4fh','W7OsBYeBzq','kbldSq','W60ICSoeeG','mSo+W4hdINW','W4fdWQxdQCkpbW','jgCEW6ldLa','i8oDW4ldGG','W6FcRXe','WPaaaeRdUa','WQ7dGCkZW4/cRa','WP7cOqVcHmkqaa','tSk1lCk1W5/cHq','t8kqW4vWw8kF','sCkHW7T4Ea','W5xdTSolW47cS8kJ','hdrmgSkF','rLzWx0e','gmk1WOi','f2O/mmo3','jmo4ASk3WRe','ihvHBSo3tq','fxJdI2RcHW','iGtcVSkChG','WQfzWOhdVSooW6q','W6n+W4tcMSoV','CSkawfvHbG','mSkSrZBdQa','W6NdSmoeW7lcGW','gaNcVq','W41MWPTdW68','W5ldNmkwr8oNvG','W5xcLqRcU8k8','dH52','kCoeW6ldHL3dVG','kwCOW77cN8o/','W57cIqT+crq','dxtdKwhcLSow','WRKVWRBcNmo6W5W','vYbOaq','WOG1WRdcM8oYW7S','WPiekfldVq','db/dL8kmW4i','W74QW7qrWPe','nwv0WONcKa','W4DeW4BcM8omW54','WQddJSkJW4xcRe4','i2SQW63cJSoL','CCktW4v4wSku','WQZcSSogWRFdIxO','WO/dOmo0WQxdJmoO','wSkrW5Lazq','lIxcLupcOue','WO8aixldNmkH','W6pcQaC','n30xW6tdGSoT','pSoyW5xdLvNdTa','kYdcKflcQKC','iSkmy2xdMq','nHldTG','W43dO0n9sG','W77cPdDdeG','WP7dNSkYW4BcUee','W4pdKxfWAY4','mwSYW7xcJG','kmkQwxpdRwm','BmkarL58cW','CqVcS8k2WPHI','W7PWW4RcRmoR','aCoVtmkRWRBdMG','W5TVW4BcKG','WOJdTCoBWOdcGq','WRTgWQ/dQmoeW44','W7vmBmo/WR4G','WPZcQYNdIGpcLG','W651cmoVra','WRnaj8kfW54','jSoFW4ddVv3dOW','W4rZWQxdP8kjla','W6vmzCo8WR4G','j8ovW5tdG1NdTW','W7VcKXHuA8k1','W6xdUmobW4xcRa','WRyIWRJcNSo6W7q','sSkLkSk4W4G','s8kfjSkNW5VcKG','WOZcSrtcHmkqlG','WOH/hG','W61mASoJWRuZ','W4jZi8oUA8ov','WPddRmkKW6NcSa','oSkIxx7dPMm','lSkvWOq','oNecW6m','W6VcQr9p','jSk+WPddVCoCW5W','umkxqvrTbW','dhtdJa','nKFdHNdcPq','W5LTeG','w8kGamk3WRpdJq','huWalq','fH52gt08WR4','iaxcQG','oGxcVq','WR3dSSodWQdcIa','W4r9WQhdL8kweq','bujsWR7cOq','ECkRBLrJ','p8kvrhBdVfK','WRmRWRZcMCoN','W5LGgG','W65mzW','W65Mlmo5tCoB','WOhcPmooWRtdMvK','W7JcNdXoxG','cbz1','ihqJW7FcNW','nMS8W7W','rJfYbYar','WPj3c8koW4O','WPeqma','DCotWRG','l8kPWRtdJCoA','W5vUW57cJSoJW5u','dMatW6ldGSo+','dMCEW7xdIq','gbxcT8koh18','gd7cKfRcOvC','fSoHqCk3WR7dKq','DmkkFuL4bG','WQFdHCowWQpcNKC','igyHW7ZcMa','W5baWRXTW68','W4JcQW1pEa','W55hmdjA','W6tdVCov','WRe0WPlcN8oN','W5FdMSkkA8os','l8kpxNxdP0q','WP/cNsNdOHNcKq','iWNcQ8kCdKO','d3f8WOdcJ2K','rSkZla','gHldUSk+W5H/','W7HJlmo5Fq','kIxcNq','W5HIW7JcQCo7','jSk+WPddVCoC','n8k5WP/dSq','bfyD','WRtdNSkYW5JcGwe','WOW+fNVdIq','WP4scexdHG','W4ldVxbhFtS','W4nBjZPiWQa','r8kWoG','W4b+W4y','W4rLWQxdOmkuea','WOdcOmoeWR7dU0u','WOFcOmoaWRpdGLK','nZ7dHG','W5fKf3uQ','hCoBWOe0W4n9','dhddJW','WRldImk5W47cU3u','WOdcTaK','oSofW5tdMa','W4ddIgRcNupdHHq8FmkTWP9V','b8oRtSkNW7BdKq','gbpcVmkCaW','yConWRJcQCkrW6C','W5TtW7XMW7vG','dGDN','e25VimoOxq','W4L5n3ai','gHtdRCkKW557','Cmk4jmklW5NcHa','fCkTWRhdN8o/','cCkTWOhdVa','W4nwoabaWQa','r8kizw5e','iMr+WOpcLvG','FM5c','dx7dMeVcH8on','W6tdM8kHuSoWwa','W5DvWRrLW4nQ','WRbciCkOW7K','WQdcPWVcJ8kP','gmoVxW','WRxdOmonWOpdLW','W4pdU1BcGmkBfa','WRhdOKnyw8k2','W4jUlW','ceTEk8oWyW','gmk1WPC','W5ZdISk6','aHz1','lg8NW77cJG','WRVdLmorWQC','W6LIm8oO','WP8CWPJcM8oL','W73cNs7cJSk6','W5ldGSkSuG','CwPewMRdNq','WQFcKtK','WOFdL8knW7JcSW','ASo/aY/cVaxcQ8kpWRe+W4ZdJsG','W7Tcl3y7','WPv1dSkm','W5xcTcH5ra','CCkXqw17','jSkiW59OW47cMq','ogNdLfpcIW','l8kmW4zsW44','W6tcVGFcPSkH','ECkvtq','WO4qnwtdJCkG','W5zaWQi','W65eEq','WOxcPmonWQ8','vmkHEwfG','bSobwCk2WQi','m8kNqW','W4OFC8oYkrK','qZX1dG4Q','nGFdRSkJW54','yConWRJcQCk9W4O','WQCQWRtcNSo6W4K','WQqQWRZcLmoX','WOlcSCoIWRNdQa','qhDpq2hdNq','WQldTCoRWQxdICoz','W6LUjSo5FCoa','DmoyWPmgWOZdG8opvCo6WRqZWQ8z','ymkRW4fZtSk4','W5apECoDcbe','ktNcJv/cQ0e','W4BcIq1+','W5tdICkVtmo8vW','W7JcRWpcRmo4WQ4','W5BdJSkUrq','C8ket1W','W4XeWQfKW7vM','sCk4jCkEW5VcKW','iuaGp8o6','W7lcQr8','WR4YWRdcMSolW5q'];_0x4cf5=function(){return _0x197ab3;};return _0x4cf5();}
|
|
7
|
+
|
|
8
|
+
const { DOC_ID } = require("../constants");
|
|
9
|
+
const { textOf, attachmentsFromContent, normalizeRepliedMessage } = require("../messageContent");
|
|
10
|
+
const { fetchThreadDetail, threadFbidMap } = require("../threadDetail");
|
|
11
|
+
const { classify, toIgError } = require("../utils/errors");
|
|
12
|
+
const { globalAntiSuspension } = require("../utils/antiSuspension");
|
|
13
|
+
|
|
14
|
+
// Reads the DM inbox through the same Relay query the web client uses
|
|
15
|
+
// (PolarisDirectInboxQuery). The old /api/v1/direct_v2/inbox/ endpoint is dead
|
|
16
|
+
// (404) — Instagram moved the web DM inbox to GraphQL.
|
|
17
|
+
const INBOX_VARIABLES = {
|
|
18
|
+
__relay_internal__pv__IGDIsProfessionalAccountGKrelayprovider: false,
|
|
19
|
+
__relay_internal__pv__IGDPinnedThreadsRenderEnabledGKrelayprovider: true,
|
|
20
|
+
__relay_internal__pv__IGDMaxUnreadMessagesCountrelayprovider: 5,
|
|
21
|
+
__relay_internal__pv__IGDThreadListActionsEnabledGKrelayprovider: true
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const SKIP_TYPES = new Set(["like", "action_log", "video_call_event", "reaction_log"]);
|
|
25
|
+
|
|
26
|
+
class InboxMethods {
|
|
27
|
+
constructor(http, getUserID) {
|
|
28
|
+
this.http = http;
|
|
29
|
+
this.getUserID = getUserID;
|
|
30
|
+
this._seen = new Map();
|
|
31
|
+
this._pollTimer = null;
|
|
32
|
+
this._selfFbid = null;
|
|
33
|
+
// threadID -> { title, image, members:Set, adminIDs:Set, nicknames:{} }
|
|
34
|
+
this._threadState = new Map();
|
|
35
|
+
this._statePrimed = false;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async getInbox() {
|
|
39
|
+
// device_id_for_iris_subscription is required by the query; the web client
|
|
40
|
+
// sends the same value it uses as __hsi.
|
|
41
|
+
const deviceID = this.http.session?.__hsi || this.http.uuid();
|
|
42
|
+
const res = await this.http.postGraphQL(
|
|
43
|
+
"PolarisDirectInboxQuery",
|
|
44
|
+
DOC_ID.INBOX,
|
|
45
|
+
{ ...INBOX_VARIABLES, device_id_for_iris_subscription: deviceID },
|
|
46
|
+
"https://www.instagram.com/direct/inbox/"
|
|
47
|
+
);
|
|
48
|
+
const data = this._unwrap(res);
|
|
49
|
+
const edges =
|
|
50
|
+
data?.get_slide_mailbox_for_iris_subscription?.threads_by_folder?.edges || [];
|
|
51
|
+
const threads = edges.map((e) => e.node?.as_ig_direct_thread || {}).filter(Boolean);
|
|
52
|
+
for (const t of threads) {
|
|
53
|
+
const fbid = t.viewer?.interop_messaging_user_fbid;
|
|
54
|
+
if (fbid && !this._selfFbid) this._selfFbid = String(fbid);
|
|
55
|
+
}
|
|
56
|
+
return { threads };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// The Polaris inbox returns messages under thread.slide_messages as a Relay
|
|
60
|
+
// connection ({ edges: [{ node }] }); the node carries sender_fbid,
|
|
61
|
+
// content_type, text_body and content. Older captures used thread.items, so
|
|
62
|
+
// both shapes are accepted.
|
|
63
|
+
_threadMessages(thread) {
|
|
64
|
+
const sm = thread.slide_messages;
|
|
65
|
+
if (Array.isArray(sm)) return sm.map((n) => n.node || n).filter(Boolean);
|
|
66
|
+
if (sm && Array.isArray(sm.edges)) return sm.edges.map((e) => e.node).filter(Boolean);
|
|
67
|
+
return (thread.items || []).map((i) => ({
|
|
68
|
+
id: i.item_id,
|
|
69
|
+
sender_fbid: i.user_id,
|
|
70
|
+
content_type: (i.item_type || "text").toUpperCase(),
|
|
71
|
+
text_body: i.text,
|
|
72
|
+
timestamp_ms: i.timestamp,
|
|
73
|
+
content: i
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
_contentToText(node) {
|
|
78
|
+
return textOf(node);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
_contentToAttachments(node) {
|
|
82
|
+
return attachmentsFromContent(node.content);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
_fbidMap(thread) {
|
|
86
|
+
return threadFbidMap(thread);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async _extractEvents(threads) {
|
|
90
|
+
const events = [];
|
|
91
|
+
const selfFbid = this._selfFbid ? String(this._selfFbid) : null;
|
|
92
|
+
|
|
93
|
+
for (const thread of threads) {
|
|
94
|
+
const threadID = String(thread.id || thread.thread_id);
|
|
95
|
+
const fbidToIgid = this._fbidMap(thread);
|
|
96
|
+
|
|
97
|
+
const nodes = this._threadMessages(thread); // newest-first
|
|
98
|
+
const lastSeenID = this._seen.get(threadID);
|
|
99
|
+
const fresh = [];
|
|
100
|
+
for (const node of nodes) {
|
|
101
|
+
if (lastSeenID && String(node.id) === String(lastSeenID)) break;
|
|
102
|
+
fresh.push(node);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// The inbox query does not project reply linkage; the thread-detail query
|
|
106
|
+
// does. Fetch it once and index by message id so reply targets resolve.
|
|
107
|
+
let replyById = null;
|
|
108
|
+
if (fresh.length) {
|
|
109
|
+
replyById = await this.fetchReplies(threadID, fbidToIgid).catch(() => null);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
for (const node of fresh.reverse()) {
|
|
113
|
+
const rawSender = node.sender_fbid != null ? String(node.sender_fbid) : null;
|
|
114
|
+
if (rawSender && selfFbid && rawSender === selfFbid) continue;
|
|
115
|
+
|
|
116
|
+
const ctype = node.content_type || "";
|
|
117
|
+
if (/REACTION_LOG|ADMIN_TEXT|ACTION_LOG/i.test(ctype)) continue;
|
|
118
|
+
|
|
119
|
+
const body = this._contentToText(node);
|
|
120
|
+
const attachments = ctype === "TEXT" ? [] : this._contentToAttachments(node);
|
|
121
|
+
// Media whose CDN url we could not parse is not actionable; drop it.
|
|
122
|
+
if (ctype !== "TEXT" && attachments.length === 0) continue;
|
|
123
|
+
|
|
124
|
+
const detail = replyById && replyById[String(node.id)];
|
|
125
|
+
events.push({
|
|
126
|
+
type: "message",
|
|
127
|
+
threadID,
|
|
128
|
+
senderID: rawSender && fbidToIgid[rawSender] ? fbidToIgid[rawSender] : rawSender,
|
|
129
|
+
messageID: node.id,
|
|
130
|
+
body,
|
|
131
|
+
attachments,
|
|
132
|
+
itemType: ctype.toLowerCase(),
|
|
133
|
+
repliedToItemId: (detail && detail.repliedToItemId) || node.replied_to_item_id || null,
|
|
134
|
+
repliedToMessage: detail ? detail.repliedToMessage : null,
|
|
135
|
+
clientContext: node.client_context || null,
|
|
136
|
+
// The inbox query does not project offline_threading_id; the thread
|
|
137
|
+
// detail does. It doubles as the reply target's client_context.
|
|
138
|
+
offlineThreadingId: (detail && detail.offlineThreadingId) || node.offline_threading_id || null,
|
|
139
|
+
timestamp: Number(node.timestamp_ms) || Date.now()
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (nodes[0]) this._seen.set(threadID, nodes[0].id);
|
|
144
|
+
}
|
|
145
|
+
return events;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Runs IGDThreadDetailQuery and returns { <messageID>: { repliedToItemId,
|
|
149
|
+
// repliedToMessage, offlineThreadingId } } for every message in the thread.
|
|
150
|
+
// The inbox node lacks reply linkage and offline_threading_id, so both are
|
|
151
|
+
// taken from here; offline_threading_id is the client_context a quote-reply
|
|
152
|
+
// to that item needs.
|
|
153
|
+
async fetchReplies(threadID, fbidToIgid = {}) {
|
|
154
|
+
const thread = await fetchThreadDetail(this.http, threadID, 20);
|
|
155
|
+
const out = {};
|
|
156
|
+
for (const e of thread?.slide_messages?.edges || []) {
|
|
157
|
+
const n = e.node || e;
|
|
158
|
+
out[String(n.id)] = {
|
|
159
|
+
repliedToItemId: n.replied_to_message_id || null,
|
|
160
|
+
repliedToMessage: normalizeRepliedMessage(n.replied_to_message, fbidToIgid),
|
|
161
|
+
offlineThreadingId: n.offline_threading_id != null ? String(n.offline_threading_id) : null
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return out;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Builds the thread-state fingerprint used to synthesize GoatBot system
|
|
168
|
+
// events: participants, title, image, admins and nicknames. Instagram's
|
|
169
|
+
// polling inbox reports none of these as discrete events, so the poller
|
|
170
|
+
// diffs consecutive snapshots instead.
|
|
171
|
+
_snapshot(thread) {
|
|
172
|
+
const users = thread.users || [];
|
|
173
|
+
const members = new Set();
|
|
174
|
+
const names = {};
|
|
175
|
+
for (const u of users) {
|
|
176
|
+
const id = String(u.id || u.pk);
|
|
177
|
+
members.add(id);
|
|
178
|
+
names[id] = u.full_name || u.username || id;
|
|
179
|
+
}
|
|
180
|
+
// Instagram's inbox reports nicknames as a positional list of
|
|
181
|
+
// { nickname, igid, eimu_id } objects (keyed "0","1",… when serialized),
|
|
182
|
+
// not as an { participantId: nickname } map. Reduce it to the latter so the
|
|
183
|
+
// diff compares plain strings; otherwise each poll yields a spurious
|
|
184
|
+
// log:user-nickname event (the parcel object is a fresh reference every
|
|
185
|
+
// time and "0" is not a participant id).
|
|
186
|
+
const nicknames = {};
|
|
187
|
+
const rawNick = thread.nicknames;
|
|
188
|
+
const entries = Array.isArray(rawNick) ? rawNick : Object.values(rawNick || {});
|
|
189
|
+
for (const entry of entries) {
|
|
190
|
+
if (entry == null) continue;
|
|
191
|
+
if (typeof entry === "string") continue; // map form handled below
|
|
192
|
+
const pid = String(entry.igid || entry.pk || entry.user_id || entry.participant_id || "");
|
|
193
|
+
const nick = typeof entry.nickname === "string" ? entry.nickname : entry.nickname?.nickname || null;
|
|
194
|
+
if (pid && pid !== "0" && nick) nicknames[pid] = nick;
|
|
195
|
+
}
|
|
196
|
+
// Also accept the plain { participantId: nickname } map shape.
|
|
197
|
+
for (const [k, v] of Object.entries(rawNick || {})) {
|
|
198
|
+
if (typeof v === "string" && v && /^\d+$/.test(k)) nicknames[String(k)] = v;
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
title: thread.thread_title || null,
|
|
202
|
+
image: thread.thread_image_url || null,
|
|
203
|
+
isGroup: !!thread.is_group,
|
|
204
|
+
members,
|
|
205
|
+
names,
|
|
206
|
+
adminIDs: new Set((thread.admin_user_ids || []).map(String)),
|
|
207
|
+
nicknames,
|
|
208
|
+
threadID: String(thread.id || thread.thread_id)
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Diffs a thread against its cached snapshot and returns fca-shaped system
|
|
213
|
+
// events. `author` is unknown over the poll API, so callers treat it as empty.
|
|
214
|
+
_diffThread(prev, next) {
|
|
215
|
+
const events = [];
|
|
216
|
+
const base = {
|
|
217
|
+
type: "event",
|
|
218
|
+
threadID: next.threadID,
|
|
219
|
+
author: "",
|
|
220
|
+
participantIDs: [...next.members],
|
|
221
|
+
isGroup: next.isGroup,
|
|
222
|
+
timestamp: Date.now()
|
|
223
|
+
};
|
|
224
|
+
const id = () => `evt.${next.threadID}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}`;
|
|
225
|
+
|
|
226
|
+
if (prev.isGroup && next.isGroup) {
|
|
227
|
+
const added = [...next.members].filter((m) => !prev.members.has(m));
|
|
228
|
+
const left = [...prev.members].filter((m) => !next.members.has(m));
|
|
229
|
+
if (added.length) {
|
|
230
|
+
events.push({
|
|
231
|
+
...base,
|
|
232
|
+
messageID: id(),
|
|
233
|
+
logMessageType: "log:subscribe",
|
|
234
|
+
logMessageData: {
|
|
235
|
+
addedParticipants: added.map((uid) => ({
|
|
236
|
+
userFbId: uid,
|
|
237
|
+
fullName: next.names[uid] || uid,
|
|
238
|
+
firstName: (next.names[uid] || "").split(" ")[0] || uid
|
|
239
|
+
}))
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
for (const uid of left) {
|
|
244
|
+
events.push({
|
|
245
|
+
...base,
|
|
246
|
+
messageID: id(),
|
|
247
|
+
logMessageType: "log:unsubscribe",
|
|
248
|
+
logMessageData: { leftParticipantFbId: uid }
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
const addedAdmins = [...next.adminIDs].filter((a) => !prev.adminIDs.has(a));
|
|
252
|
+
const removedAdmins = [...prev.adminIDs].filter((a) => !next.adminIDs.has(a));
|
|
253
|
+
for (const uid of addedAdmins) {
|
|
254
|
+
events.push({ ...base, messageID: id(), logMessageType: "log:thread-admins", logMessageData: { ADMIN_EVENT: "add_admin", TARGET_ID: uid } });
|
|
255
|
+
}
|
|
256
|
+
for (const uid of removedAdmins) {
|
|
257
|
+
events.push({ ...base, messageID: id(), logMessageType: "log:thread-admins", logMessageData: { ADMIN_EVENT: "remove_admin", TARGET_ID: uid } });
|
|
258
|
+
}
|
|
259
|
+
for (const uid of Object.keys(next.nicknames)) {
|
|
260
|
+
if (prev.nicknames[uid] !== next.nicknames[uid]) {
|
|
261
|
+
events.push({ ...base, messageID: id(), logMessageType: "log:user-nickname", logMessageData: { participant_id: uid, nickname: next.nicknames[uid] } });
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (prev.title !== next.title) {
|
|
266
|
+
events.push({ ...base, messageID: id(), logMessageType: "log:thread-name", logMessageData: { name: next.title } });
|
|
267
|
+
}
|
|
268
|
+
if (prev.image !== next.image) {
|
|
269
|
+
events.push({ ...base, messageID: id(), logMessageType: "log:thread-image", logMessageData: { url: next.image } });
|
|
270
|
+
}
|
|
271
|
+
return events;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// The inbox payload's ADD_PARTICIPANT_XMAT / REMOVE_PARTICIPANT_XMAT nodes
|
|
275
|
+
// carry only a typename; the actor (who added/removed) and the target username
|
|
276
|
+
// live in the thread-detail text_fragments, and the actor's id is the node's
|
|
277
|
+
// sender_fbid. Synthesized log:subscribe/log:unsubscribe events have no author
|
|
278
|
+
// of their own, so resolve the most recent add/remove actor here to fill it —
|
|
279
|
+
// welcome.js renders it as the "added by" avatar + name.
|
|
280
|
+
async _latestActor(threadID) {
|
|
281
|
+
const thread = await fetchThreadDetail(this.http, threadID, 20).catch(() => null);
|
|
282
|
+
if (!thread) return {};
|
|
283
|
+
const map = threadFbidMap(thread);
|
|
284
|
+
const byId = {};
|
|
285
|
+
for (const u of thread.users || []) {
|
|
286
|
+
const id = String(u.id || u.pk || "");
|
|
287
|
+
if (id) byId[id] = u;
|
|
288
|
+
}
|
|
289
|
+
const nodes = (thread.slide_messages?.edges || []).map((e) => e.node || e);
|
|
290
|
+
const out = {};
|
|
291
|
+
for (const n of nodes) {
|
|
292
|
+
const ct = String(n.content_type || "");
|
|
293
|
+
const isAdd = /ADD_PARTICIPANT_XMAT/i.test(ct);
|
|
294
|
+
const isRemove = /REMOVE_PARTICIPANT_XMAT/i.test(ct);
|
|
295
|
+
if ((!isAdd && !isRemove) || (isAdd && out.add) || (isRemove && out.remove)) continue;
|
|
296
|
+
const raw = n.sender_fbid != null ? String(n.sender_fbid) : null;
|
|
297
|
+
const actorID = raw && map[raw] ? map[raw] : raw || "";
|
|
298
|
+
const u = byId[actorID] || {};
|
|
299
|
+
const frags = n.content?.text_fragments || [];
|
|
300
|
+
const entry = {
|
|
301
|
+
actorID,
|
|
302
|
+
actorName: u.full_name || u.username || frags[0]?.plaintext || null,
|
|
303
|
+
targetName: frags.length ? frags[frags.length - 1].plaintext : null
|
|
304
|
+
};
|
|
305
|
+
if (isAdd) out.add = entry;
|
|
306
|
+
else out.remove = entry;
|
|
307
|
+
}
|
|
308
|
+
return out;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
listen(callback, intervalMs = 20000) {
|
|
312
|
+
const MIN_INTERVAL_MS = 15000;
|
|
313
|
+
const BASE_INTERVAL_MS = Math.max(Number(intervalMs) || 20000, MIN_INTERVAL_MS);
|
|
314
|
+
const BACKOFF_START_MS = 30000;
|
|
315
|
+
const BACKOFF_MAX_MS = 10 * 60 * 1000;
|
|
316
|
+
const TRANSIENT_MAX_MS = 5 * 60 * 1000;
|
|
317
|
+
const BLOCKED_WAIT_MS = 15 * 60 * 1000;
|
|
318
|
+
const AUTH_RECHECK_MS = 60 * 1000;
|
|
319
|
+
const AUTH_CONFIRMATIONS = 2;
|
|
320
|
+
|
|
321
|
+
let stopped = false;
|
|
322
|
+
let polling = false;
|
|
323
|
+
let timer = null;
|
|
324
|
+
let backoff = BACKOFF_START_MS;
|
|
325
|
+
let authFailures = 0;
|
|
326
|
+
let transientStreak = 0;
|
|
327
|
+
|
|
328
|
+
const jittered = (ms) => Math.round(ms * (0.8 + Math.random() * 0.5));
|
|
329
|
+
const pollDelay = () => jittered(BASE_INTERVAL_MS * (globalAntiSuspension.isCoolingDown() ? 3 : 1));
|
|
330
|
+
|
|
331
|
+
const schedule = (delayMs) => {
|
|
332
|
+
if (stopped) return;
|
|
333
|
+
timer = setTimeout(tick, delayMs);
|
|
334
|
+
if (timer.unref) timer.unref();
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const tick = async () => {
|
|
338
|
+
if (polling || stopped) return;
|
|
339
|
+
polling = true;
|
|
340
|
+
try {
|
|
341
|
+
const { threads } = await this.getInbox();
|
|
342
|
+
|
|
343
|
+
const wasBackingOff = backoff !== BACKOFF_START_MS;
|
|
344
|
+
backoff = BACKOFF_START_MS;
|
|
345
|
+
authFailures = 0;
|
|
346
|
+
transientStreak = 0;
|
|
347
|
+
|
|
348
|
+
const state = new Map();
|
|
349
|
+
for (const t of threads) state.set(String(t.id || t.thread_id), this._snapshot(t));
|
|
350
|
+
|
|
351
|
+
if (this._seen.size === 0) {
|
|
352
|
+
for (const t of threads) {
|
|
353
|
+
const tid = String(t.id || t.thread_id);
|
|
354
|
+
const first = this._threadMessages(t)[0];
|
|
355
|
+
if (first) this._seen.set(tid, first.id);
|
|
356
|
+
}
|
|
357
|
+
this._threadState = state;
|
|
358
|
+
this._statePrimed = true;
|
|
359
|
+
schedule(pollDelay());
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
for (const event of await this._extractEvents(threads)) callback(null, event);
|
|
364
|
+
|
|
365
|
+
if (this._statePrimed) {
|
|
366
|
+
for (const [tid, snap] of state) {
|
|
367
|
+
const prev = this._threadState.get(tid);
|
|
368
|
+
if (!prev) continue;
|
|
369
|
+
const diff = this._diffThread(prev, snap);
|
|
370
|
+
if (diff.some((e) => e.logMessageType === "log:subscribe" || e.logMessageType === "log:unsubscribe")) {
|
|
371
|
+
const actors = await this._latestActor(tid);
|
|
372
|
+
for (const e of diff) {
|
|
373
|
+
const a = e.logMessageType === "log:unsubscribe" ? actors.remove : actors.add;
|
|
374
|
+
if (!a) continue;
|
|
375
|
+
e.author = a.actorID || e.author;
|
|
376
|
+
e.logMessageData = { ...e.logMessageData, actorName: a.actorName, targetName: a.targetName };
|
|
377
|
+
if (a.actorID && a.actorName) {
|
|
378
|
+
try { await global.db.usersData.set(a.actorID, { name: a.actorName }); } catch (_) {}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
for (const evt of diff) callback(null, evt);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
this._threadState = state;
|
|
386
|
+
if (wasBackingOff) {
|
|
387
|
+
try { this._emitter && this._emitter.emit && this._emitter.emit("reconnected"); } catch (_) {}
|
|
388
|
+
}
|
|
389
|
+
schedule(pollDelay());
|
|
390
|
+
} catch (error) {
|
|
391
|
+
const kind = error.igKind || classify(error).kind;
|
|
392
|
+
|
|
393
|
+
if (kind === "challenge" || kind === "suspended") {
|
|
394
|
+
stopped = true;
|
|
395
|
+
callback(toIgError(error, { kind }), null);
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (kind === "auth") {
|
|
400
|
+
authFailures += 1;
|
|
401
|
+
if (authFailures >= AUTH_CONFIRMATIONS) {
|
|
402
|
+
const check = await this.http.checkSession({ attempts: 1 });
|
|
403
|
+
if (check.state === "ok" || check.state === "transient" || check.state === "rate_limited") {
|
|
404
|
+
authFailures = 0;
|
|
405
|
+
schedule(pollDelay());
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
stopped = true;
|
|
409
|
+
callback(check.error || toIgError(error, { kind: check.state === "auth" ? "auth" : check.state }), null);
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
schedule(jittered(AUTH_RECHECK_MS));
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
if (kind === "rate_limited") {
|
|
417
|
+
const wait = Math.min(backoff, BACKOFF_MAX_MS);
|
|
418
|
+
backoff = Math.min(backoff * 2, BACKOFF_MAX_MS);
|
|
419
|
+
try { this._emitter && this._emitter.emit && this._emitter.emit("rateLimit", { wait }); } catch (_) {}
|
|
420
|
+
callback(error, null);
|
|
421
|
+
schedule(jittered(wait));
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
if (kind === "blocked") {
|
|
426
|
+
try { this._emitter && this._emitter.emit && this._emitter.emit("rateLimit", { wait: BLOCKED_WAIT_MS }); } catch (_) {}
|
|
427
|
+
callback(error, null);
|
|
428
|
+
schedule(jittered(BLOCKED_WAIT_MS));
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (kind === "transient") {
|
|
433
|
+
transientStreak += 1;
|
|
434
|
+
const wait = Math.min(BASE_INTERVAL_MS * 2 ** Math.min(transientStreak, 4), TRANSIENT_MAX_MS);
|
|
435
|
+
callback(error, null);
|
|
436
|
+
schedule(jittered(wait));
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
callback(error, null);
|
|
441
|
+
schedule(pollDelay());
|
|
442
|
+
} finally {
|
|
443
|
+
polling = false;
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
tick();
|
|
448
|
+
return () => {
|
|
449
|
+
stopped = true;
|
|
450
|
+
if (timer) clearTimeout(timer);
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// GraphQL responses are JSON prefixed with "for (;;);".
|
|
455
|
+
_unwrap(res) {
|
|
456
|
+
if (res && typeof res === "object") return res.data || res;
|
|
457
|
+
const cleaned = String(res).replace(/^for \(;;\);/, "");
|
|
458
|
+
try {
|
|
459
|
+
return JSON.parse(cleaned).data;
|
|
460
|
+
} catch (_) {
|
|
461
|
+
return null;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
stopListening() {
|
|
466
|
+
if (this._pollTimer) clearInterval(this._pollTimer);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
module.exports = InboxMethods;
|