@onairos/react-native 3.6.4 → 3.6.6
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/lib/commonjs/api/index.js +1 -1
- package/lib/commonjs/components/BodyText.js +1 -1
- package/lib/commonjs/components/BrandMark.js +1 -1
- package/lib/commonjs/components/CodeInput.js +1 -1
- package/lib/commonjs/components/EmailInput.js +1 -1
- package/lib/commonjs/components/GoogleButton.js +1 -1
- package/lib/commonjs/components/HeadingGroup.js +1 -1
- package/lib/commonjs/components/LLMDataInputModal.js +1 -1
- package/lib/commonjs/components/ModalHeader.js +1 -1
- package/lib/commonjs/components/ModalSheet.js +1 -1
- package/lib/commonjs/components/Onairos.js +1 -1
- package/lib/commonjs/components/OnairosButton.js +1 -1
- package/lib/commonjs/components/OnairosSignInButton.js +1 -1
- package/lib/commonjs/components/Overlay.js +1 -1
- package/lib/commonjs/components/PersonaImage.js +1 -1
- package/lib/commonjs/components/PersonaLoadingScreen.js +1 -1
- package/lib/commonjs/components/PersonalizationConsentScreen.js +1 -1
- package/lib/commonjs/components/PinCreationScreen.js +1 -1
- package/lib/commonjs/components/PinInput.js +1 -1
- package/lib/commonjs/components/PlatformConnectorsStep.js +1 -1
- package/lib/commonjs/components/PlatformList.js +1 -1
- package/lib/commonjs/components/PlatformToggle.js +1 -1
- package/lib/commonjs/components/PrimaryButton.js +1 -1
- package/lib/commonjs/components/SignInMatchAnimation.js +1 -1
- package/lib/commonjs/components/SignInStep.js +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +1 -1
- package/lib/commonjs/components/VerificationStep.js +1 -1
- package/lib/commonjs/components/WelcomeScreen.js +1 -1
- package/lib/commonjs/components/icons/Basicproficon.js +1 -1
- package/lib/commonjs/components/icons/Basicprofile.js +1 -1
- package/lib/commonjs/components/icons/Checkbox.js +1 -1
- package/lib/commonjs/components/icons/Checkmark.js +1 -1
- package/lib/commonjs/components/icons/Contentanalysis.js +1 -1
- package/lib/commonjs/components/icons/Contenticon.js +1 -1
- package/lib/commonjs/components/icons/EnochE.js +1 -1
- package/lib/commonjs/components/icons/Personalityicon.js +1 -1
- package/lib/commonjs/components/icons/Personalityprofile.js +1 -1
- package/lib/commonjs/components/icons/Personalitytraits.js +1 -1
- package/lib/commonjs/components/icons/Userpreferences.js +1 -1
- package/lib/commonjs/components/icons/index.js +1 -1
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1 -1
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/commonjs/components/onboarding/PinInput.js +1 -1
- package/lib/commonjs/components/onboarding/PlatformConnector.js +1 -1
- package/lib/commonjs/config/api.js +1 -1
- package/lib/commonjs/constants/index.js +1 -1
- package/lib/commonjs/context/AuthContext.js +1 -1
- package/lib/commonjs/hooks/useConnectedAccounts.js +1 -1
- package/lib/commonjs/hooks/useConnections.js +1 -1
- package/lib/commonjs/hooks/useCredentials.js +1 -1
- package/lib/commonjs/hooks/useUserConnections.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/services/apiClient.js +1 -1
- package/lib/commonjs/services/apiKeyService.js +924 -9
- package/lib/commonjs/services/authService.js +627 -10
- package/lib/commonjs/services/biometricPinService.js +1 -1
- package/lib/commonjs/services/chatGPTConversationExtractor.js +1 -1
- package/lib/commonjs/services/chatGPTConversationService.js +1 -1
- package/lib/commonjs/services/claudeConversationExtractor.js +1 -1
- package/lib/commonjs/services/claudeConversationService.js +1 -1
- package/lib/commonjs/services/connectedAccountsService.js +1 -1
- package/lib/commonjs/services/googleAuthService.js +1 -1
- package/lib/commonjs/services/hingeDataExtractor.js +1 -1
- package/lib/commonjs/services/hingeDataService.js +1 -1
- package/lib/commonjs/services/imageCompressionService.js +1 -1
- package/lib/commonjs/services/instagramDataExtractor.js +1 -1
- package/lib/commonjs/services/instagramDataService.js +1 -1
- package/lib/commonjs/services/jwtStorageService.js +1 -1
- package/lib/commonjs/services/linkedinDOMExtractor.js +1 -1
- package/lib/commonjs/services/linkedinProfileService.js +1 -1
- package/lib/commonjs/services/linkedinScrapingService.js +1 -1
- package/lib/commonjs/services/llmDataStorage.js +1 -1
- package/lib/commonjs/services/mobileTrainingService.js +1 -1
- package/lib/commonjs/services/oauthService.js +391 -11
- package/lib/commonjs/services/pinEncryptionService.js +1 -1
- package/lib/commonjs/services/pinStorageUtils.js +1 -1
- package/lib/commonjs/services/platformAuthService.js +1 -1
- package/lib/commonjs/services/sephoraDataExtractor.js +1 -1
- package/lib/commonjs/services/sephoraDataService.js +1 -1
- package/lib/commonjs/services/storageService.js +1 -1
- package/lib/commonjs/services/telegramDataExtractor.js +1 -1
- package/lib/commonjs/services/telegramDataService.js +1 -1
- package/lib/commonjs/services/trainingApiHelpers.js +1 -1
- package/lib/commonjs/services/userConnectionsService.js +1 -1
- package/lib/commonjs/services/youtubeMigrationService.js +1 -1
- package/lib/commonjs/theme/index.js +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/utils/Portal.js +1 -1
- package/lib/commonjs/utils/api.js +1 -1
- package/lib/commonjs/utils/assetRegistry.js +1 -1
- package/lib/commonjs/utils/auth.js +1 -1
- package/lib/commonjs/utils/connectorTests.js +1 -1
- package/lib/commonjs/utils/crypto.js +1 -1
- package/lib/commonjs/utils/debugHelper.js +1 -1
- package/lib/commonjs/utils/encryption.js +1 -1
- package/lib/commonjs/utils/eventUtils.js +1 -1
- package/lib/commonjs/utils/haptics.js +1 -1
- package/lib/commonjs/utils/imagePreloader.js +1 -1
- package/lib/commonjs/utils/networkDiagnostics.js +1 -1
- package/lib/commonjs/utils/onairosApi.js +1 -1
- package/lib/commonjs/utils/programmaticFlow.js +1 -1
- package/lib/commonjs/utils/retryHelper.js +1 -1
- package/lib/commonjs/utils/secureStorage.js +1 -1
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +1 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +1 -1
- package/lib/commonjs/utils/webviewScripts/index.js +1 -1
- package/lib/commonjs/utils/webviewScripts/instagram.js +1 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +1 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +1 -1
- package/lib/module/api/index.js +1 -1
- package/lib/module/components/BodyText.js +1 -1
- package/lib/module/components/BrandMark.js +1 -1
- package/lib/module/components/CodeInput.js +1 -1
- package/lib/module/components/EmailInput.js +1 -1
- package/lib/module/components/GoogleButton.js +1 -1
- package/lib/module/components/HeadingGroup.js +1 -1
- package/lib/module/components/LLMDataInputModal.js +1 -1
- package/lib/module/components/ModalHeader.js +1 -1
- package/lib/module/components/ModalSheet.js +1 -1
- package/lib/module/components/Onairos.js +1 -1
- package/lib/module/components/OnairosButton.js +1 -1
- package/lib/module/components/OnairosSignInButton.js +1 -1
- package/lib/module/components/Overlay.js +1 -1
- package/lib/module/components/PersonaImage.js +1 -1
- package/lib/module/components/PersonaLoadingScreen.js +1 -1
- package/lib/module/components/PersonalizationConsentScreen.js +1 -1
- package/lib/module/components/PinCreationScreen.js +1 -1
- package/lib/module/components/PinInput.js +1 -1
- package/lib/module/components/PlatformConnectorsStep.js +1 -1
- package/lib/module/components/PlatformList.js +1 -1
- package/lib/module/components/PlatformToggle.js +1 -1
- package/lib/module/components/PrimaryButton.js +1 -1
- package/lib/module/components/SignInMatchAnimation.js +1 -1
- package/lib/module/components/SignInStep.js +1 -1
- package/lib/module/components/UniversalOnboarding.js +1 -1
- package/lib/module/components/VerificationStep.js +1 -1
- package/lib/module/components/WelcomeScreen.js +1 -1
- package/lib/module/components/icons/Basicproficon.js +1 -1
- package/lib/module/components/icons/Basicprofile.js +1 -1
- package/lib/module/components/icons/Checkbox.js +1 -1
- package/lib/module/components/icons/Checkmark.js +1 -1
- package/lib/module/components/icons/Contentanalysis.js +1 -1
- package/lib/module/components/icons/Contenticon.js +1 -1
- package/lib/module/components/icons/EnochE.js +1 -1
- package/lib/module/components/icons/Personalityicon.js +1 -1
- package/lib/module/components/icons/Personalityprofile.js +1 -1
- package/lib/module/components/icons/Personalitytraits.js +1 -1
- package/lib/module/components/icons/Userpreferences.js +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +1 -1
- package/lib/module/components/onboarding/PinInput.js +1 -1
- package/lib/module/components/onboarding/PlatformConnector.js +1 -1
- package/lib/module/config/api.js +1 -1
- package/lib/module/constants/index.js +1 -1
- package/lib/module/context/AuthContext.js +1 -1
- package/lib/module/hooks/useConnectedAccounts.js +1 -1
- package/lib/module/hooks/useConnections.js +1 -1
- package/lib/module/hooks/useCredentials.js +1 -1
- package/lib/module/hooks/useUserConnections.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/apiClient.js +1 -1
- package/lib/module/services/apiKeyService.js +898 -1
- package/lib/module/services/authService.js +602 -1
- package/lib/module/services/biometricPinService.js +1 -1
- package/lib/module/services/chatGPTConversationExtractor.js +1 -1
- package/lib/module/services/chatGPTConversationService.js +1 -1
- package/lib/module/services/claudeConversationExtractor.js +1 -1
- package/lib/module/services/claudeConversationService.js +1 -1
- package/lib/module/services/connectedAccountsService.js +1 -1
- package/lib/module/services/googleAuthService.js +1 -1
- package/lib/module/services/hingeDataExtractor.js +1 -1
- package/lib/module/services/hingeDataService.js +1 -1
- package/lib/module/services/imageCompressionService.js +1 -1
- package/lib/module/services/instagramDataExtractor.js +1 -1
- package/lib/module/services/instagramDataService.js +1 -1
- package/lib/module/services/jwtStorageService.js +1 -1
- package/lib/module/services/linkedinDOMExtractor.js +1 -1
- package/lib/module/services/linkedinProfileService.js +1 -1
- package/lib/module/services/linkedinScrapingService.js +1 -1
- package/lib/module/services/llmDataStorage.js +1 -1
- package/lib/module/services/mobileTrainingService.js +1 -1
- package/lib/module/services/oauthService.js +381 -1
- package/lib/module/services/pinEncryptionService.js +1 -1
- package/lib/module/services/pinStorageUtils.js +1 -1
- package/lib/module/services/platformAuthService.js +1 -1
- package/lib/module/services/sephoraDataExtractor.js +1 -1
- package/lib/module/services/sephoraDataService.js +1 -1
- package/lib/module/services/storageService.js +1 -1
- package/lib/module/services/telegramDataExtractor.js +1 -1
- package/lib/module/services/telegramDataService.js +1 -1
- package/lib/module/services/trainingApiHelpers.js +1 -1
- package/lib/module/services/userConnectionsService.js +1 -1
- package/lib/module/services/youtubeMigrationService.js +1 -1
- package/lib/module/theme/index.js +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/utils/Portal.js +1 -1
- package/lib/module/utils/api.js +1 -1
- package/lib/module/utils/assetRegistry.js +1 -1
- package/lib/module/utils/auth.js +1 -1
- package/lib/module/utils/connectorTests.js +1 -1
- package/lib/module/utils/crypto.js +1 -1
- package/lib/module/utils/debugHelper.js +1 -1
- package/lib/module/utils/encryption.js +1 -1
- package/lib/module/utils/eventUtils.js +1 -1
- package/lib/module/utils/haptics.js +1 -1
- package/lib/module/utils/networkDiagnostics.js +1 -1
- package/lib/module/utils/onairosApi.js +1 -1
- package/lib/module/utils/programmaticFlow.js +1 -1
- package/lib/module/utils/retryHelper.js +1 -1
- package/lib/module/utils/secureStorage.js +1 -1
- package/lib/module/utils/webviewScripts/chatgpt.js +1 -1
- package/lib/module/utils/webviewScripts/claude.js +1 -1
- package/lib/module/utils/webviewScripts/hinge.js +1 -1
- package/lib/module/utils/webviewScripts/index.js +1 -1
- package/lib/module/utils/webviewScripts/instagram.js +1 -1
- package/lib/module/utils/webviewScripts/linkedin.js +1 -1
- package/lib/module/utils/webviewScripts/sephora.js +1 -1
- package/lib/module/utils/webviewScripts/telegram.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';function _0x2643(_0x1540c4,_0x264315){_0x1540c4=_0x1540c4-0x0;const _0x239dd6=_0x1540();let _0x4be254=_0x239dd6[_0x1540c4];return _0x4be254;}import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x2bc913,_0x1afd96,_0x346bc6,_0x2dc4a8){const _0x1abcfc={'vITIZ':'4|3|1|0|2','YLZSN':_0x2643(0x0)},_0x510faf=_0x1abcfc[_0x2643(0x1)][_0x2643(0x2)]('|');let _0x842ded=0x0;while(!![]){switch(_0x510faf[_0x842ded++]){case'0':this[_0x2643(0x3)]=_0x2dc4a8;continue;case'1':this['code']=_0x346bc6;continue;case'2':this['name']=_0x1abcfc[_0x2643(0x4)];continue;case'3':this[_0x2643(0x5)]=_0x1afd96;continue;case'4':super(_0x2bc913);continue;}break;}}}const checkNetworkConnection=async()=>{const _0x313302={'zpHeY':function(_0x88d3ab,_0x4a89f5){return _0x88d3ab===_0x4a89f5;}},_0x5821ab=await NetInfo[_0x2643(0x6)]();return _0x313302[_0x2643(0x7)](_0x5821ab[_0x2643(0x8)],!![]);},makeUserApiRequest=async(_0x44ede1,_0x81bdb2,_0x1382ba={})=>{const _0xf45a4={'cbklr':_0x2643(0x9),'KNNdC':_0x2643(0xa),'DzoCy':'auth_error','yCOdW':function(_0x5492d4){return _0x5492d4();},'ltEzX':'User\x20API\x20Error','gcvKb':_0x2643(0xb),'LTemS':function(_0x5ed171,_0x2ed507){return _0x5ed171!==_0x2ed507;},'dEsBV':'pWZfN','TtZMu':_0x2643(0xc),'dXkuk':_0x2643(0xd),'JwAMX':'No\x20network\x20connection\x20available','OkQyA':function(_0x12adad){return _0x12adad();},'WSnch':_0x2643(0xe),'pQzQt':_0x2643(0xf),'RbrWt':_0x2643(0x10),'tVByH':_0x2643(0x11),'sPZnT':function(_0x5d02bf,_0x2dae79,_0x1a279d){return _0x5d02bf(_0x2dae79,_0x1a279d);},'ifdfZ':function(_0xd27c4a,_0x4f6a3e){return _0xd27c4a!==_0x4f6a3e;},'ZPfla':_0x2643(0x12),'aCpdj':function(_0x104adc,_0x57e897,_0x5d1bf1){return _0x104adc(_0x57e897,_0x5d1bf1);},'SNnmB':function(_0x3936d5,_0x433d59){return _0x3936d5===_0x433d59;},'UtKrQ':'validation_error','sguJG':function(_0x46a2a0,_0x478054){return _0x46a2a0>=_0x478054;},'PpAfz':_0x2643(0x13),'HshJm':function(_0x415837,_0x3a7a16){return _0x415837===_0x3a7a16;},'RQWjF':function(_0x130198,_0x1f1dcd){return _0x130198===_0x1f1dcd;},'lWugF':function(_0x5072ca,_0x56b78c){return _0x5072ca===_0x56b78c;},'Plbwd':function(_0x2bce51,_0x320695){return _0x2bce51===_0x320695;},'ZTFnp':_0x2643(0x14),'SCfZh':'RPEgF','KkkFS':function(_0x1f5f13,_0x55de3a){return _0x1f5f13 instanceof _0x55de3a;},'cKKFr':function(_0x48e25d,_0x236b0c){return _0x48e25d===_0x236b0c;},'hgIwd':_0x2643(0x15),'FzMZt':_0x2643(0x16),'xZVnG':function(_0x11b530,_0x4c99af,_0x2380dc){return _0x11b530(_0x4c99af,_0x2380dc);},'vyDOy':_0x2643(0x17)},{data:_0x1d6769,headers:headers={},debug:debug=![]}=_0x1382ba;try{if(_0xf45a4[_0x2643(0x18)](_0xf45a4[_0x2643(0x19)],_0xf45a4['TtZMu'])){const _0x195082=await _0xf45a4[_0x2643(0x1a)](checkNetworkConnection);if(!_0x195082){if(_0xf45a4['LTemS'](_0x2643(0x1b),_0xf45a4['dXkuk']))throw new ApiError(_0xf45a4[_0x2643(0x1c)],_0x2643(0x1d));else return _0x1f4172(_0xf45a4['cbklr'],'POST',{'data':{'refreshToken':_0x17661a},'debug':_0x593b11[_0x2643(0x1e)]});}if(!_0xf45a4[_0x2643(0x1f)](isUserAuthenticated)){if(_0xf45a4[_0x2643(0x18)](_0x2643(0x20),_0xf45a4[_0x2643(0x21)]))throw new ApiError(_0xf45a4[_0x2643(0x22)],_0xf45a4[_0x2643(0x23)]);else throw new _0x3f69a1(_0xf45a4['KNNdC'],_0xf45a4[_0x2643(0x23)]);}debug&&logDebug(_0xf45a4[_0x2643(0x24)],{'endpoint':_0x44ede1,'method':_0x81bdb2,'headers':{...headers,'Authorization':_0xf45a4[_0x2643(0x25)]},'data':_0x1d6769||null});const _0xcb57d3=await _0xf45a4['sPZnT'](makeUserRequest,_0x44ede1,{'method':_0x81bdb2,'headers':headers,..._0x1d6769?{'body':JSON[_0x2643(0x26)](_0x1d6769)}:{}}),_0x2eea57=await _0xcb57d3[_0x2643(0x27)]();if(debug){if(_0xf45a4['ifdfZ'](_0xf45a4['ZPfla'],_0xf45a4[_0x2643(0x28)]))return{'isValid':![],'message':_0x2853e8[_0x2643(0x29)]};else _0xf45a4[_0x2643(0x2a)](logDebug,'User\x20API\x20Response',{'status':_0xcb57d3[_0x2643(0x2b)],'data':_0x2eea57});}if(!_0xcb57d3['ok']){var _0x24d90f,_0x2fa711,_0x2dd7a1;const _0x44e6d2=_0xcb57d3['status']===0x191||_0xf45a4[_0x2643(0x2c)](_0xcb57d3[_0x2643(0x2b)],0x193)?_0xf45a4[_0x2643(0x23)]:_0xf45a4[_0x2643(0x2c)](_0xcb57d3['status'],0x190)?_0xf45a4[_0x2643(0x2d)]:_0xf45a4[_0x2643(0x2e)](_0xcb57d3[_0x2643(0x2b)],0x1f4)?_0xf45a4['PpAfz']:_0x2643(0x2f);throw new ApiError((_0xf45a4['HshJm'](_0x24d90f=_0x2eea57[_0x2643(0x30)],null)||_0xf45a4[_0x2643(0x31)](_0x24d90f,void 0x0)?void 0x0:_0x24d90f[_0x2643(0x29)])||'API\x20request\x20failed',_0x44e6d2,_0xf45a4[_0x2643(0x32)](_0x2fa711=_0x2eea57['error'],null)||_0xf45a4['RQWjF'](_0x2fa711,void 0x0)?void 0x0:_0x2fa711['code'],_0xf45a4[_0x2643(0x32)](_0x2dd7a1=_0x2eea57['error'],null)||_0x2dd7a1===void 0x0?void 0x0:_0x2dd7a1['details']);}return _0x2eea57;}else throw _0x5c5617;}catch(_0x33bcd3){if(_0xf45a4[_0x2643(0x33)](_0xf45a4[_0x2643(0x34)],_0xf45a4['SCfZh'])){const {debug:debug=![],username:_0x593157}=_0x4d0091,_0x4d844c=_0x593157||_0xf45a4[_0x2643(0x1a)](_0x4870f4);if(!_0x4d844c)throw new _0x389532(_0xf45a4[_0x2643(0x35)],_0xf45a4[_0x2643(0x23)]);return _0x14464c(_0x2643(0x36),'POST',{'data':{'username':_0x4d844c,'pin':_0x36c90a},'debug':debug});}else{if(_0xf45a4[_0x2643(0x37)](_0x33bcd3,ApiError))throw _0x33bcd3;if(_0xf45a4[_0x2643(0x38)](_0x33bcd3[_0x2643(0x39)],_0x2643(0x3a)))throw new ApiError(_0x2643(0x3b),_0xf45a4[_0x2643(0x3c)]);debug&&(_0xf45a4[_0x2643(0x38)](_0xf45a4[_0x2643(0x3d)],'xUgTn')?_0x160135(_0xf45a4[_0x2643(0x3e)],{'endpoint':_0x2d8ca6,'method':_0xeea997,'error':_0x195643[_0x2643(0x29)]||_0xf45a4['gcvKb']}):_0xf45a4[_0x2643(0x3f)](logDebug,_0x2643(0x40),{'endpoint':_0x44ede1,'method':_0x81bdb2,'error':_0x33bcd3[_0x2643(0x29)]||_0xf45a4[_0x2643(0x41)]}));throw new ApiError(_0x33bcd3[_0x2643(0x29)]||_0xf45a4[_0x2643(0x42)],_0x2643(0x2f));}}},makeDeveloperApiRequest=async(_0x14de2b,_0xaa5f7b,_0x1c9a8a={})=>{const _0x46f729={'siXZn':function(_0x173fb2){return _0x173fb2();},'acWsy':function(_0x41ea1b,_0x49edfb){return _0x41ea1b===_0x49edfb;},'gKsAi':'auth_error','abfZu':'validation_error','NBKYZ':_0x2643(0x13),'OBGdQ':_0x2643(0x2f),'VNynI':function(_0x14e155,_0x419d24){return _0x14e155===_0x419d24;},'cPSzH':function(_0x579a8f,_0x15bdbf){return _0x579a8f===_0x15bdbf;},'kAYpQ':'API\x20request\x20failed','MBwBM':function(_0x1b7051,_0x20bd84){return _0x1b7051===_0x20bd84;},'TflZY':_0x2643(0xf),'AWrYB':_0x2643(0x43),'UHOSH':function(_0x49825f){return _0x49825f();},'siLTV':'network_error','lHtMX':function(_0x3d1eef,_0x3751c1,_0x58b065){return _0x3d1eef(_0x3751c1,_0x58b065);},'NUuLD':_0x2643(0x44),'imdxZ':function(_0x49277a,_0x24342d){return _0x49277a||_0x24342d;},'DquII':function(_0x56baa9,_0xacbe26,_0x48ac09){return _0x56baa9(_0xacbe26,_0x48ac09);},'iXGCN':'PpQFC','EfNxN':_0x2643(0x45),'NHeEj':function(_0x453cfc,_0x5f0f87){return _0x453cfc>=_0x5f0f87;},'lWVGi':function(_0x391f47,_0x24e7dd){return _0x391f47===_0x24e7dd;},'YkyFW':function(_0x473d2a,_0x1c0e6a){return _0x473d2a===_0x1c0e6a;},'jTRcP':function(_0x290ba1,_0x3b3089){return _0x290ba1!==_0x3b3089;},'eEZPL':'ODRKW','lYFiy':'ScKjw','bOJRS':function(_0x2dbd74,_0x34690e){return _0x2dbd74===_0x34690e;},'PoalQ':'AbortError','zlavv':_0x2643(0x46),'eOCTH':_0x2643(0x3b),'RnzdN':'Unknown\x20error','xvewM':_0x2643(0x17)},{data:_0x263454,headers:headers={},debug:debug=![]}=_0x1c9a8a;try{const _0x27b7d5=await _0x46f729[_0x2643(0x47)](checkNetworkConnection);if(!_0x27b7d5)throw new ApiError(_0x46f729[_0x2643(0x48)],_0x46f729[_0x2643(0x49)]);debug&&_0x46f729[_0x2643(0x4a)](logDebug,_0x46f729[_0x2643(0x4b)],{'endpoint':_0x14de2b,'method':_0xaa5f7b,'headers':{...headers,'Authorization':_0x2643(0x11)},'data':_0x46f729[_0x2643(0x4c)](_0x263454,null)});const _0x404aa8=await _0x46f729[_0x2643(0x4d)](makeDeveloperRequest,_0x14de2b,{'method':_0xaa5f7b,'headers':headers,..._0x263454?{'body':JSON['stringify'](_0x263454)}:{}}),_0x4bbe9f=await _0x404aa8[_0x2643(0x27)]();if(debug){if(_0x46f729[_0x2643(0x4e)]!==_0x2643(0x4f))logDebug(_0x46f729[_0x2643(0x50)],{'status':_0x404aa8[_0x2643(0x2b)],'data':_0x4bbe9f});else return _0x46f729[_0x2643(0x51)](_0x144c72);}if(!_0x404aa8['ok']){var _0x2e88c5,_0x5a50bb,_0x8ff296;const _0x35938f=_0x46f729[_0x2643(0x52)](_0x404aa8['status'],0x191)||_0x404aa8[_0x2643(0x2b)]===0x193?_0x46f729[_0x2643(0x53)]:_0x404aa8[_0x2643(0x2b)]===0x190?_0x46f729[_0x2643(0x54)]:_0x46f729[_0x2643(0x55)](_0x404aa8['status'],0x1f4)?_0x46f729[_0x2643(0x56)]:_0x46f729['OBGdQ'];throw new ApiError((_0x46f729[_0x2643(0x57)](_0x2e88c5=_0x4bbe9f['error'],null)||_0x2e88c5===void 0x0?void 0x0:_0x2e88c5[_0x2643(0x29)])||_0x46f729[_0x2643(0x58)],_0x35938f,_0x46f729[_0x2643(0x59)](_0x5a50bb=_0x4bbe9f[_0x2643(0x30)],null)||_0x46f729[_0x2643(0x5a)](_0x5a50bb,void 0x0)?void 0x0:_0x5a50bb[_0x2643(0x5b)],_0x46f729[_0x2643(0x5c)](_0x8ff296=_0x4bbe9f[_0x2643(0x30)],null)||_0x8ff296===void 0x0?void 0x0:_0x8ff296[_0x2643(0x3)]);}return _0x4bbe9f;}catch(_0x5b94ef){if(_0x46f729['jTRcP'](_0x46f729['eEZPL'],_0x46f729[_0x2643(0x5d)])){var _0x4bc8aa,_0x3bdb4e,_0x5e8c48;const _0x1a01f8=_0x46f729[_0x2643(0x52)](_0x17d35e[_0x2643(0x2b)],0x191)||_0x46f729['acWsy'](_0x32acd9[_0x2643(0x2b)],0x193)?_0x46f729[_0x2643(0x53)]:_0x46f729[_0x2643(0x52)](_0x213a17[_0x2643(0x2b)],0x190)?_0x46f729[_0x2643(0x54)]:_0x39efa8[_0x2643(0x2b)]>=0x1f4?_0x46f729[_0x2643(0x56)]:_0x46f729[_0x2643(0x5e)];throw new _0x13594a((_0x46f729[_0x2643(0x5f)](_0x4bc8aa=_0x3c2cdc['error'],null)||_0x46f729[_0x2643(0x59)](_0x4bc8aa,void 0x0)?void 0x0:_0x4bc8aa[_0x2643(0x29)])||_0x46f729[_0x2643(0x58)],_0x1a01f8,_0x46f729[_0x2643(0x57)](_0x3bdb4e=_0x4f055d[_0x2643(0x30)],null)||_0x3bdb4e===void 0x0?void 0x0:_0x3bdb4e[_0x2643(0x5b)],_0x46f729['MBwBM'](_0x5e8c48=_0x3c53f4[_0x2643(0x30)],null)||_0x46f729['cPSzH'](_0x5e8c48,void 0x0)?void 0x0:_0x5e8c48[_0x2643(0x3)]);}else{if(_0x5b94ef instanceof ApiError){if(_0x2643(0x60)===_0x46f729[_0x2643(0x61)])throw _0x5b94ef;else throw new _0x1f3f6a(_0x46f729[_0x2643(0x62)],_0x46f729[_0x2643(0x53)]);}if(_0x46f729['bOJRS'](_0x5b94ef[_0x2643(0x39)],_0x46f729[_0x2643(0x63)])){if(_0x46f729['jTRcP'](_0x46f729[_0x2643(0x64)],_0x46f729[_0x2643(0x64)]))throw new _0x1545e(_0x46f729[_0x2643(0x48)],_0x2643(0x1d));else throw new ApiError(_0x46f729[_0x2643(0x65)],'timeout_error');}debug&&logDebug(_0x2643(0x66),{'endpoint':_0x14de2b,'method':_0xaa5f7b,'error':_0x5b94ef[_0x2643(0x29)]||_0x46f729[_0x2643(0x67)]});throw new ApiError(_0x5b94ef[_0x2643(0x29)]||_0x46f729['xvewM'],_0x46f729['OBGdQ']);}}};export const validateCredentials=async(_0x4676d1,_0x80d7e3={'debug':![]})=>{const _0x46aadc={'RgAdV':function(_0x2e69a9,_0x5336f1){return _0x2e69a9===_0x5336f1;},'vbmMz':_0x2643(0x68),'yRFNL':'validation_error','rdXyQ':function(_0x4f945d,_0x524cce){return _0x4f945d>=_0x524cce;},'skfRz':_0x2643(0x13),'HBJHT':function(_0x3f0929,_0x7ba476){return _0x3f0929===_0x7ba476;},'aSkRj':_0x2643(0x69),'SQCLR':function(_0x40bd35,_0x5eab52){return _0x40bd35===_0x5eab52;},'rKzDC':function(_0x44df2f,_0x356d74){return _0x44df2f===_0x356d74;},'tTPmI':'VAUQr','AQZud':function(_0x12bba8,_0x53afc2,_0x489e89,_0x4c2c70){return _0x12bba8(_0x53afc2,_0x489e89,_0x4c2c70);},'iflIe':_0x2643(0x6a)};try{if(_0x46aadc[_0x2643(0x6b)](_0x46aadc[_0x2643(0x6c)],_0x46aadc['tTPmI'])){var _0x35e810,_0x56c4a9;const _0x109f74=await _0x46aadc[_0x2643(0x6d)](makeUserApiRequest,_0x46aadc['iflIe'],'POST',{'data':{'username':_0x4676d1},'debug':_0x80d7e3[_0x2643(0x1e)]});return{'isValid':_0x109f74['success']&&_0x46aadc['HBJHT'](_0x46aadc[_0x2643(0x6e)](_0x35e810=_0x109f74[_0x2643(0x6f)],null)||_0x35e810===void 0x0?void 0x0:_0x35e810[_0x2643(0x70)],!![]),'message':_0x46aadc[_0x2643(0x71)](_0x56c4a9=_0x109f74[_0x2643(0x30)],null)||_0x56c4a9===void 0x0?void 0x0:_0x56c4a9[_0x2643(0x29)]};}else{var _0x364675,_0x3a80d5,_0x3611ae;const _0x4c87bd=_0x46aadc['RgAdV'](_0x4ecf24['status'],0x191)||_0x46aadc[_0x2643(0x6e)](_0x8fed83[_0x2643(0x2b)],0x193)?_0x46aadc['vbmMz']:_0xb9916a[_0x2643(0x2b)]===0x190?_0x46aadc[_0x2643(0x72)]:_0x46aadc[_0x2643(0x73)](_0x52b480['status'],0x1f4)?_0x46aadc[_0x2643(0x74)]:_0x2643(0x2f);throw new _0x5c90a1((_0x46aadc[_0x2643(0x75)](_0x364675=_0x2aeed5[_0x2643(0x30)],null)||_0x46aadc[_0x2643(0x75)](_0x364675,void 0x0)?void 0x0:_0x364675['message'])||_0x46aadc[_0x2643(0x76)],_0x4c87bd,_0x46aadc['SQCLR'](_0x3a80d5=_0x2dabe8[_0x2643(0x30)],null)||_0x3a80d5===void 0x0?void 0x0:_0x3a80d5[_0x2643(0x5b)],(_0x3611ae=_0x26feb7[_0x2643(0x30)])===null||_0x46aadc[_0x2643(0x6e)](_0x3611ae,void 0x0)?void 0x0:_0x3611ae['details']);}}catch(_0x3e0f2d){return{'isValid':![],'message':_0x3e0f2d[_0x2643(0x29)]};}};export const createAccount=async(_0x440252,_0x308d4f={'debug':![]})=>{const _0x4219aa={'tiGPS':function(_0x44d860,_0x171862,_0xf42209,_0x46288b){return _0x44d860(_0x171862,_0xf42209,_0x46288b);},'RyoGo':_0x2643(0x77)};return _0x4219aa[_0x2643(0x78)](makeDeveloperApiRequest,_0x4219aa[_0x2643(0x79)],'POST',{'data':{'username':_0x440252[_0x2643(0x7a)],'platforms':_0x440252['platforms']},'debug':_0x308d4f[_0x2643(0x1e)]});};export const authenticate=async(_0x10aab4,_0x4e1c72={'debug':![]})=>{const _0x1d5cb4={'VOXul':function(_0x32465f,_0x35707a,_0x5c97f7,_0x1685f4){return _0x32465f(_0x35707a,_0x5c97f7,_0x1685f4);},'yxhAd':_0x2643(0x7b)};return _0x1d5cb4[_0x2643(0x7c)](makeUserApiRequest,_0x1d5cb4[_0x2643(0x7d)],'POST',{'data':{'username':_0x10aab4[_0x2643(0x7a)],'pin':_0x10aab4[_0x2643(0x7e)]},'debug':_0x4e1c72[_0x2643(0x1e)]});};export const refreshToken=async(_0x29f54f,_0x331ea9={'debug':![]})=>{const _0x4ef5b5={'SKxow':function(_0x4427da,_0x1ca404,_0x5eed04,_0xa0e07c){return _0x4427da(_0x1ca404,_0x5eed04,_0xa0e07c);},'QxjMY':_0x2643(0x9)};return _0x4ef5b5[_0x2643(0x7f)](makeUserApiRequest,_0x4ef5b5[_0x2643(0x80)],'POST',{'data':{'refreshToken':_0x29f54f},'debug':_0x331ea9['debug']});};export const getPlatformData=async(_0x407ae0,_0x1bbba3={'debug':![]})=>{const _0x268447={'HVNgY':function(_0x4761e9,_0x5739fa,_0x4ca81c,_0x3a895f){return _0x4761e9(_0x5739fa,_0x4ca81c,_0x3a895f);}};return _0x268447[_0x2643(0x81)](makeUserApiRequest,_0x2643(0x82)+_0x407ae0+'/data','GET',{'debug':_0x1bbba3[_0x2643(0x1e)]});};export const getUserProfile=async(_0x1a681b={'debug':![]})=>{const _0xe90486={'gDJrc':_0x2643(0x83)};return makeUserApiRequest(_0xe90486['gDJrc'],'GET',{'debug':_0x1a681b[_0x2643(0x1e)]});};export const updatePlatformConnections=async(_0x2fe8a5,_0x19f119={'debug':![]})=>{const _0x5a237b={'kedjy':function(_0x4045c2,_0x1c96a3,_0x1b2177,_0x49c362){return _0x4045c2(_0x1c96a3,_0x1b2177,_0x49c362);},'GZAKt':_0x2643(0x84)};return _0x5a237b[_0x2643(0x85)](makeUserApiRequest,_0x5a237b['GZAKt'],'PUT',{'data':{'platforms':_0x2fe8a5},'debug':_0x19f119[_0x2643(0x1e)]});};function _0x1540(){const _0x3f2b47=['ApiError','vITIZ','split','details','YLZSN','type','fetch','zpHeY','isConnected','auth/refresh','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','Unknown\x20error','yezXw','bCkUE','gOCOC','User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','User\x20API\x20Request','[REDACTED]','XyWMh','server_error','XXxjr','timeout_error','gzHey','An\x20unexpected\x20error\x20occurred','LTemS','dEsBV','yCOdW','FcvuJ','JwAMX','network_error','debug','OkQyA','qZJlf','WSnch','pQzQt','DzoCy','RbrWt','tVByH','stringify','json','ZPfla','message','aCpdj','status','SNnmB','UtKrQ','sguJG','unknown_error','error','RQWjF','lWugF','Plbwd','ZTFnp','KNNdC','store-pin/mobile','KkkFS','cKKFr','name','AbortError','Request\x20timed\x20out','hgIwd','FzMZt','ltEzX','xZVnG','User\x20API\x20Error','gcvKb','vyDOy','No\x20network\x20connection\x20available','Developer\x20API\x20Request','Developer\x20API\x20Response','zhWiC','UHOSH','AWrYB','siLTV','lHtMX','NUuLD','imdxZ','DquII','iXGCN','gTfiq','EfNxN','siXZn','acWsy','gKsAi','abfZu','NHeEj','NBKYZ','MBwBM','kAYpQ','cPSzH','lWVGi','code','YkyFW','eEZPL','OBGdQ','VNynI','ScKjw','lYFiy','TflZY','PoalQ','zlavv','eOCTH','Developer\x20API\x20Error','RnzdN','auth_error','API\x20request\x20failed','auth/validate','rKzDC','tTPmI','AQZud','RgAdV','data','isValid','SQCLR','yRFNL','rdXyQ','skfRz','HBJHT','aSkRj','auth/register','tiGPS','RyoGo','username','auth/login','VOXul','yxhAd','userPin','SKxow','QxjMY','HVNgY','platforms/','user/profile','user/platforms','kedjy','Qbspm','cqVrM','zCUNi'];_0x1540=function(){return _0x3f2b47;};return _0x1540();}export const storePIN=async(_0x47a1dd,_0x4cae2e={})=>{const _0x5b151f={'Qbspm':_0x2643(0xa),'cqVrM':'auth_error','bjRZI':function(_0x4358af,_0x297b22,_0x40d9a7,_0x3f2ef5){return _0x4358af(_0x297b22,_0x40d9a7,_0x3f2ef5);},'zCUNi':_0x2643(0x36)},{debug:debug=![],username:_0x13bfbb}=_0x4cae2e,_0x350984=_0x13bfbb||extractUsernameFromJWT();if(!_0x350984)throw new ApiError(_0x5b151f[_0x2643(0x86)],_0x5b151f[_0x2643(0x87)]);return _0x5b151f['bjRZI'](makeUserApiRequest,_0x5b151f[_0x2643(0x88)],'POST',{'data':{'username':_0x350984,'pin':_0x47a1dd},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x5805cd={'oCyRr':function(_0x56e009){return _0x56e009();}};return await _0x5805cd['oCyRr'](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x764131={'lqdix':function(_0xec7a22){return _0xec7a22();}};return _0x764131['lqdix'](isUserAuthenticated);};
|
|
1
|
+
import NetInfo from'@react-native-community/netinfo';function _0x1e29(_0x4052f3,_0x1e293f){_0x4052f3=_0x4052f3-0x0;const _0x515341=_0x4052();let _0x26da51=_0x515341[_0x4052f3];return _0x26da51;}import{logDebug}from'./debugHelper';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x5a0696,_0x3dc9f2,_0x26db4e,_0x19247e){const _0x69fa35={'mUKRT':_0x1e29(0x0)},_0x272c84=_0x69fa35[_0x1e29(0x1)][_0x1e29(0x2)]('|');let _0x5a138f=0x0;while(!![]){switch(_0x272c84[_0x5a138f++]){case'0':this[_0x1e29(0x3)]=_0x3dc9f2;continue;case'1':this['details']=_0x19247e;continue;case'2':super(_0x5a0696);continue;case'3':this[_0x1e29(0x4)]=_0x1e29(0x5);continue;case'4':this[_0x1e29(0x6)]=_0x26db4e;continue;}break;}}}const checkNetworkConnection=async()=>{const _0x5f04f9=await NetInfo[_0x1e29(0x7)]();return _0x5f04f9['isConnected']===!![];},makeUserApiRequest=async(_0x3683fa,_0x304c50,_0x52adfe={})=>{const _0x34a163={'oSkzz':_0x1e29(0x8),'CzRWI':function(_0x18d4ca,_0x2bfab0){return _0x18d4ca instanceof _0x2bfab0;},'UPADr':function(_0x260553,_0x373f75){return _0x260553===_0x373f75;},'cAnSd':_0x1e29(0x9),'OtLrS':'timeout_error','imOTJ':function(_0x4923ed,_0x1b689b,_0x17ae97){return _0x4923ed(_0x1b689b,_0x17ae97);},'BrwfP':'User\x20API\x20Error','MZRpP':_0x1e29(0xa),'lpkhE':_0x1e29(0xb),'MQERF':function(_0x3d33a0,_0x1a115e,_0x12d182){return _0x3d33a0(_0x1a115e,_0x12d182);},'tYidh':_0x1e29(0xc),'scmck':'WipmY','XKPIf':_0x1e29(0xd),'ldFwL':function(_0x3f76be){return _0x3f76be();},'ksUuS':'User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','UtvhS':'User\x20API\x20Request','BMjbr':'[REDACTED]','OjEUy':function(_0xf837ad,_0x1a78f5){return _0xf837ad||_0x1a78f5;},'XWJRj':'CSqLv','BmERl':_0x1e29(0xe),'fIuHK':function(_0x43603c,_0x5748f7){return _0x43603c>=_0x5748f7;},'dfioI':_0x1e29(0xf),'OCXnb':'unknown_error','FycRL':function(_0x55a3ff,_0xf4510e){return _0x55a3ff===_0xf4510e;},'lBPNC':function(_0x24c1c8,_0x3ca839){return _0x24c1c8===_0x3ca839;},'zRQHn':function(_0x247de4,_0x4fef35){return _0x247de4===_0x4fef35;},'DTkGr':function(_0x11e5b7,_0x276e95){return _0x11e5b7===_0x276e95;},'SxPeK':'wlcmy','HOlEF':_0x1e29(0x10),'yLIhQ':function(_0x2f1755,_0xae758a,_0x10647b){return _0x2f1755(_0xae758a,_0x10647b);},'CoSmA':_0x1e29(0x11)},{data:_0x5ea24a,headers:headers={},debug:debug=![]}=_0x52adfe;try{if(_0x34a163[_0x1e29(0x12)](_0x1e29(0x13),_0x34a163['scmck']))throw new _0x58bfb2(_0x1e29(0x14),_0x34a163[_0x1e29(0x15)]);else{const _0x5131cc=await checkNetworkConnection();if(!_0x5131cc){if(_0x34a163[_0x1e29(0x12)](_0x34a163[_0x1e29(0x16)],_0x34a163[_0x1e29(0x16)]))throw new ApiError(_0x1e29(0xa),_0x34a163['lpkhE']);else{if(_0x34a163[_0x1e29(0x17)](_0x5ea433,_0x41990d))throw _0x508f07;if(_0x34a163['UPADr'](_0x38da1c[_0x1e29(0x4)],_0x1e29(0x10)))throw new _0x2fd403(_0x34a163['cAnSd'],_0x34a163['OtLrS']);_0x17bc70&&_0x34a163[_0x1e29(0x18)](_0x221b01,_0x34a163[_0x1e29(0x19)],{'endpoint':_0x29b7d6,'method':_0x144303,'error':_0x510e55[_0x1e29(0x1a)]||_0x1e29(0x1b)});throw new _0x2d896e(_0x5698b2[_0x1e29(0x1a)]||_0x1e29(0x11),_0x1e29(0x1c));}}if(!_0x34a163['ldFwL'](isUserAuthenticated))throw new ApiError(_0x34a163[_0x1e29(0x1d)],_0x34a163[_0x1e29(0x15)]);debug&&_0x34a163[_0x1e29(0x1e)](logDebug,_0x34a163['UtvhS'],{'endpoint':_0x3683fa,'method':_0x304c50,'headers':{...headers,'Authorization':_0x34a163['BMjbr']},'data':_0x34a163['OjEUy'](_0x5ea24a,null)});const _0x4687c8=await makeUserRequest(_0x3683fa,{'method':_0x304c50,'headers':headers,..._0x5ea24a?{'body':JSON[_0x1e29(0x1f)](_0x5ea24a)}:{}}),_0x4e8c32=await _0x4687c8[_0x1e29(0x20)]();if(debug){if(_0x34a163['XWJRj']!==_0x1e29(0x21))_0x34a163['imOTJ'](logDebug,_0x34a163[_0x1e29(0x22)],{'status':_0x4687c8['status'],'data':_0x4e8c32});else throw new _0xe5aeb7(_0x34a163['MZRpP'],_0x34a163['lpkhE']);}if(!_0x4687c8['ok']){var _0x37f82d,_0x261286,_0x5dc9f0;const _0xb41b88=_0x4687c8[_0x1e29(0x23)]===0x191||_0x4687c8[_0x1e29(0x23)]===0x193?'auth_error':_0x4687c8['status']===0x190?_0x34a163[_0x1e29(0x24)]:_0x34a163[_0x1e29(0x25)](_0x4687c8['status'],0x1f4)?_0x34a163['dfioI']:_0x34a163['OCXnb'];throw new ApiError((_0x34a163[_0x1e29(0x12)](_0x37f82d=_0x4e8c32[_0x1e29(0x26)],null)||_0x34a163[_0x1e29(0x27)](_0x37f82d,void 0x0)?void 0x0:_0x37f82d[_0x1e29(0x1a)])||_0x1e29(0x28),_0xb41b88,_0x34a163[_0x1e29(0x29)](_0x261286=_0x4e8c32[_0x1e29(0x26)],null)||_0x261286===void 0x0?void 0x0:_0x261286[_0x1e29(0x6)],_0x34a163[_0x1e29(0x2a)](_0x5dc9f0=_0x4e8c32[_0x1e29(0x26)],null)||_0x34a163[_0x1e29(0x2b)](_0x5dc9f0,void 0x0)?void 0x0:_0x5dc9f0[_0x1e29(0x2c)]);}return _0x4e8c32;}}catch(_0x1f8e94){if(_0x34a163[_0x1e29(0x2d)]!==_0x1e29(0x2e)){if(_0x1f8e94 instanceof ApiError)throw _0x1f8e94;if(_0x1f8e94[_0x1e29(0x4)]===_0x34a163['HOlEF'])throw new ApiError(_0x34a163[_0x1e29(0x2f)],_0x34a163['OtLrS']);debug&&_0x34a163[_0x1e29(0x30)](logDebug,_0x34a163[_0x1e29(0x19)],{'endpoint':_0x3683fa,'method':_0x304c50,'error':_0x1f8e94[_0x1e29(0x1a)]||_0x1e29(0x1b)});throw new ApiError(_0x1f8e94[_0x1e29(0x1a)]||_0x34a163[_0x1e29(0x31)],_0x34a163[_0x1e29(0x32)]);}else _0x34a163[_0x1e29(0x1e)](_0x5db240,_0x34a163['tYidh'],{'status':_0x5cc316[_0x1e29(0x23)],'data':_0x58d58a});}},makeDeveloperApiRequest=async(_0xbd78da,_0x507ded,_0x2cf390={})=>{const _0x3b7efc={'ullFm':_0x1e29(0xa),'NfVTo':_0x1e29(0xb),'WcBmj':function(_0x21f59f,_0x211207,_0x31e10e){return _0x21f59f(_0x211207,_0x31e10e);},'JFbIz':_0x1e29(0x33),'bGSNP':_0x1e29(0x34),'BmdNs':function(_0x556905,_0x4e6c11){return _0x556905||_0x4e6c11;},'EZWJW':function(_0x4fb0d5){return _0x4fb0d5();},'xqmiO':function(_0x2c3460,_0x235fdf){return _0x2c3460||_0x235fdf;},'gURQy':function(_0x46a882,_0x1814a6,_0x567785){return _0x46a882(_0x1814a6,_0x567785);},'MqtfO':function(_0x183201,_0xe0f90b){return _0x183201===_0xe0f90b;},'rHXSf':'auth_error','QYTzT':function(_0x1c9f2a,_0x43ec24){return _0x1c9f2a===_0x43ec24;},'Eodug':_0x1e29(0xe),'KZFDX':_0x1e29(0xf),'mjfFz':function(_0x28bb48,_0x1fec81){return _0x28bb48===_0x1fec81;},'NuhfO':_0x1e29(0x35),'mFhsH':_0x1e29(0x36),'Rrbgu':function(_0x5caed4,_0x475346){return _0x5caed4===_0x475346;},'jrPaF':_0x1e29(0x37),'tNPUS':'Request\x20timed\x20out','UtTQs':'timeout_error','tcaFc':function(_0x1a98d8,_0x4e700b){return _0x1a98d8!==_0x4e700b;},'NRMeQ':_0x1e29(0x38),'gYOPZ':_0x1e29(0x39),'sdMsQ':_0x1e29(0x1b),'yoZnu':_0x1e29(0x1c)},{data:_0x579f19,headers:headers={},debug:debug=![]}=_0x2cf390;try{const _0x36c6a6=await _0x3b7efc[_0x1e29(0x3a)](checkNetworkConnection);if(!_0x36c6a6)throw new ApiError(_0x1e29(0xa),_0x1e29(0xb));debug&&logDebug(_0x1e29(0x33),{'endpoint':_0xbd78da,'method':_0x507ded,'headers':{...headers,'Authorization':_0x3b7efc[_0x1e29(0x3b)]},'data':_0x3b7efc['xqmiO'](_0x579f19,null)});const _0x173311=await makeDeveloperRequest(_0xbd78da,{'method':_0x507ded,'headers':headers,..._0x579f19?{'body':JSON[_0x1e29(0x1f)](_0x579f19)}:{}}),_0x3cdffc=await _0x173311[_0x1e29(0x20)]();debug&&_0x3b7efc[_0x1e29(0x3c)](logDebug,_0x1e29(0x3d),{'status':_0x173311[_0x1e29(0x23)],'data':_0x3cdffc});if(!_0x173311['ok']){var _0x5b93ba,_0x150633,_0x43de5c;const _0x51bbf1=_0x3b7efc[_0x1e29(0x3e)](_0x173311[_0x1e29(0x23)],0x191)||_0x173311['status']===0x193?_0x3b7efc['rHXSf']:_0x3b7efc['QYTzT'](_0x173311[_0x1e29(0x23)],0x190)?_0x3b7efc['Eodug']:_0x173311[_0x1e29(0x23)]>=0x1f4?_0x3b7efc[_0x1e29(0x3f)]:'unknown_error';throw new ApiError((_0x3b7efc[_0x1e29(0x3e)](_0x5b93ba=_0x3cdffc[_0x1e29(0x26)],null)||_0x3b7efc[_0x1e29(0x3e)](_0x5b93ba,void 0x0)?void 0x0:_0x5b93ba[_0x1e29(0x1a)])||_0x1e29(0x28),_0x51bbf1,_0x3b7efc[_0x1e29(0x40)](_0x150633=_0x3cdffc[_0x1e29(0x26)],null)||_0x3b7efc['QYTzT'](_0x150633,void 0x0)?void 0x0:_0x150633[_0x1e29(0x6)],(_0x43de5c=_0x3cdffc[_0x1e29(0x26)])===null||_0x3b7efc[_0x1e29(0x3e)](_0x43de5c,void 0x0)?void 0x0:_0x43de5c['details']);}return _0x3cdffc;}catch(_0x329faa){if(_0x3b7efc[_0x1e29(0x41)]===_0x3b7efc['mFhsH'])throw new _0x143683(_0x3b7efc[_0x1e29(0x42)],_0x3b7efc[_0x1e29(0x43)]);else{if(_0x329faa instanceof ApiError){if(_0x3b7efc[_0x1e29(0x44)](_0x3b7efc[_0x1e29(0x45)],_0x1e29(0x37)))throw _0x329faa;else return{'isValid':![],'message':_0x5e2909[_0x1e29(0x1a)]};}if(_0x3b7efc[_0x1e29(0x40)](_0x329faa['name'],'AbortError'))throw new ApiError(_0x3b7efc[_0x1e29(0x46)],_0x3b7efc[_0x1e29(0x47)]);debug&&(_0x3b7efc['tcaFc']('PlIRV',_0x3b7efc[_0x1e29(0x48)])?_0x3b7efc[_0x1e29(0x49)](_0xfa262a,_0x3b7efc['JFbIz'],{'endpoint':_0x251e97,'method':_0x2a9952,'headers':{..._0xa2bbab,'Authorization':_0x3b7efc[_0x1e29(0x3b)]},'data':_0x3b7efc[_0x1e29(0x4a)](_0x39cdac,null)}):_0x3b7efc[_0x1e29(0x3c)](logDebug,_0x3b7efc[_0x1e29(0x4b)],{'endpoint':_0xbd78da,'method':_0x507ded,'error':_0x329faa[_0x1e29(0x1a)]||_0x3b7efc[_0x1e29(0x4c)]}));throw new ApiError(_0x329faa[_0x1e29(0x1a)]||'An\x20unexpected\x20error\x20occurred',_0x3b7efc[_0x1e29(0x4d)]);}}};export const validateCredentials=async(_0x1ccfe7,_0x224e2e={'debug':![]})=>{const _0x5187e6={'MFmna':function(_0x4fe2b4,_0x11268b){return _0x4fe2b4===_0x11268b;},'UMYGB':_0x1e29(0x4e),'ziZlt':_0x1e29(0x4f),'AkOyt':function(_0x350ffb,_0x59d813){return _0x350ffb===_0x59d813;}};try{if(_0x5187e6[_0x1e29(0x50)](_0x1e29(0x4e),_0x5187e6[_0x1e29(0x51)])){var _0x2b017d,_0x5d642e;const _0x39a614=await makeUserApiRequest(_0x5187e6['ziZlt'],'POST',{'data':{'username':_0x1ccfe7},'debug':_0x224e2e[_0x1e29(0x52)]});return{'isValid':_0x39a614[_0x1e29(0x53)]&&_0x5187e6[_0x1e29(0x54)](_0x5187e6[_0x1e29(0x50)](_0x2b017d=_0x39a614[_0x1e29(0x55)],null)||_0x2b017d===void 0x0?void 0x0:_0x2b017d[_0x1e29(0x56)],!![]),'message':(_0x5d642e=_0x39a614[_0x1e29(0x26)])===null||_0x5187e6['AkOyt'](_0x5d642e,void 0x0)?void 0x0:_0x5d642e[_0x1e29(0x1a)]};}else throw _0x16864d;}catch(_0x464a29){return{'isValid':![],'message':_0x464a29[_0x1e29(0x1a)]};}};export const createAccount=async(_0x3abf86,_0x5ceca7={'debug':![]})=>{const _0x2a44f0={'gIWWU':_0x1e29(0x57)};return makeDeveloperApiRequest(_0x2a44f0[_0x1e29(0x58)],'POST',{'data':{'username':_0x3abf86[_0x1e29(0x59)],'platforms':_0x3abf86[_0x1e29(0x5a)]},'debug':_0x5ceca7['debug']});};export const authenticate=async(_0xb76e5f,_0x292ec9={'debug':![]})=>{const _0x316faa={'DeRHg':function(_0x512e6a,_0x380557,_0x3d2269,_0x4b762a){return _0x512e6a(_0x380557,_0x3d2269,_0x4b762a);}};return _0x316faa[_0x1e29(0x5b)](makeUserApiRequest,_0x1e29(0x5c),'POST',{'data':{'username':_0xb76e5f[_0x1e29(0x59)],'pin':_0xb76e5f[_0x1e29(0x5d)]},'debug':_0x292ec9['debug']});};function _0x4052(){const _0x3b424b=['2|0|4|1|3','mUKRT','split','type','name','ApiError','code','fetch','auth_error','Request\x20timed\x20out','No\x20network\x20connection\x20available','network_error','User\x20API\x20Response','twQEw','validation_error','server_error','AbortError','An\x20unexpected\x20error\x20occurred','UPADr','HlzRH','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','oSkzz','XKPIf','CzRWI','imOTJ','BrwfP','message','Unknown\x20error','unknown_error','ksUuS','MQERF','stringify','json','kEQUj','tYidh','status','BmERl','fIuHK','error','FycRL','API\x20request\x20failed','lBPNC','zRQHn','DTkGr','details','SxPeK','xPSyM','cAnSd','yLIhQ','CoSmA','OCXnb','Developer\x20API\x20Request','[REDACTED]','AfRzE','GufFE','GTxVg','PlIRV','Developer\x20API\x20Error','EZWJW','bGSNP','gURQy','Developer\x20API\x20Response','MqtfO','KZFDX','mjfFz','NuhfO','ullFm','NfVTo','Rrbgu','jrPaF','tNPUS','UtTQs','NRMeQ','WcBmj','BmdNs','gYOPZ','sdMsQ','yoZnu','yvnvX','auth/validate','MFmna','UMYGB','debug','success','AkOyt','data','isValid','auth/register','gIWWU','username','platforms','DeRHg','auth/login','userPin','auth/refresh','jqfOS','platforms/','/data','wloRy','user/platforms','store-pin/mobile','qtXoM','OYEdD','CbYEF'];_0x4052=function(){return _0x3b424b;};return _0x4052();}export const refreshToken=async(_0x20c760,_0x3cc0a4={'debug':![]})=>{const _0x1b2f3c={'jqfOS':function(_0xd13a97,_0x16c0d6,_0x2042f2,_0x65c30c){return _0xd13a97(_0x16c0d6,_0x2042f2,_0x65c30c);},'guSue':_0x1e29(0x5e)};return _0x1b2f3c[_0x1e29(0x5f)](makeUserApiRequest,_0x1b2f3c['guSue'],'POST',{'data':{'refreshToken':_0x20c760},'debug':_0x3cc0a4['debug']});};export const getPlatformData=async(_0x3db17a,_0x3cf9cc={'debug':![]})=>{const _0x8a726f={'daixk':function(_0x5b9d41,_0x156a2b,_0x5ba76c,_0x4406c8){return _0x5b9d41(_0x156a2b,_0x5ba76c,_0x4406c8);}};return _0x8a726f['daixk'](makeUserApiRequest,_0x1e29(0x60)+_0x3db17a+_0x1e29(0x61),'GET',{'debug':_0x3cf9cc[_0x1e29(0x52)]});};export const getUserProfile=async(_0x34f5b3={'debug':![]})=>{const _0x45c173={'wloRy':function(_0x2ad07a,_0x3fea1f,_0x53591e,_0xb0f416){return _0x2ad07a(_0x3fea1f,_0x53591e,_0xb0f416);}};return _0x45c173[_0x1e29(0x62)](makeUserApiRequest,'user/profile','GET',{'debug':_0x34f5b3[_0x1e29(0x52)]});};export const updatePlatformConnections=async(_0x22b120,_0x412c0c={'debug':![]})=>{const _0x26fc01={'BXeRB':function(_0x4e7a00,_0x5a2a4d,_0x14139c,_0x729c60){return _0x4e7a00(_0x5a2a4d,_0x14139c,_0x729c60);}};return _0x26fc01['BXeRB'](makeUserApiRequest,_0x1e29(0x63),'PUT',{'data':{'platforms':_0x22b120},'debug':_0x412c0c[_0x1e29(0x52)]});};export const storePIN=async(_0x3d6c09,_0x1b590f={})=>{const _0x3a291c={'qtXoM':function(_0x4d0d8a){return _0x4d0d8a();},'wKsfp':_0x1e29(0x64)},{debug:debug=![],username:_0x2eae3d}=_0x1b590f,_0x37b75f=_0x2eae3d||_0x3a291c[_0x1e29(0x65)](extractUsernameFromJWT);if(!_0x37b75f)throw new ApiError(_0x1e29(0x14),'auth_error');return makeUserApiRequest(_0x3a291c['wKsfp'],'POST',{'data':{'username':_0x37b75f,'pin':_0x3d6c09},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x51bee7={'OYEdD':function(_0x35fce1){return _0x35fce1();}};return await _0x51bee7[_0x1e29(0x66)](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x4b9314={'CbYEF':function(_0x265a74){return _0x265a74();}};return _0x4b9314[_0x1e29(0x67)](isUserAuthenticated);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x1d3a(){const _0x4b48a9=['❌\x20Onairos\x20flow\x20rejected:','Onairos\x20flow\x20was\x20rejected','✅\x20Onairos\x20flow\x20completed\x20successfully','WSJXQ','Pre-check\x20failed','pnBqc','📱\x20Onairos\x20modal\x20should\x20be\x20displayed','🚀\x20Starting\x20Onairos\x20flow\x20programmatically...','../components/UniversalOnboarding','❌\x20Failed\x20to\x20execute\x20Onairos\x20flow:','log','XbKOi','ehcSz','gmPUL','❌\x20Pre-check\x20failed,\x20not\x20starting\x20Onairos\x20flow','cxaVQ','fDChP','qvTYh','TRUwG','EVgxy','close','onResolved','gmhED','onRejection','DvdnH','ehnef','VziLk','dmARy','KuAXK','GClfI','User\x20closed\x20the\x20modal','requestData','preferredPlatform','debug','testMode','ftBnN','error','ngBlk','YvJDS','GCbOS','IOoso','qlhuG','APKkO','preCheck','ztJjp','QNlmK','WzPtD','yjxTn','XIhuZ','cSUlF','dfrdK','aspfv','qaIKv'];_0x1d3a=function(){return _0x4b48a9;};return _0x1d3a();}function _0x5e32(_0x1d3a17,_0x5e324c){_0x1d3a17=_0x1d3a17-0x0;const _0xb11e70=_0x1d3a();let _0x2a9a99=_0xb11e70[_0x1d3a17];return _0x2a9a99;}import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async _0xec3087=>{const _0x631a71={'KuAXK':_0x5e32(0x0),'GClfI':function(_0x377b72,_0x57701e){return _0x377b72||_0x57701e;},'gmPUL':_0x5e32(0x1),'xACAn':_0x5e32(0x2),'bXlnL':function(_0x5ef07d,_0x2f8d02){return _0x5ef07d!==_0x2f8d02;},'kjpQl':_0x5e32(0x3),'cxaVQ':_0x5e32(0x4),'fDChP':function(_0x4dcbaa,_0x247f96){return _0x4dcbaa===_0x247f96;},'qvTYh':_0x5e32(0x5),'TRUwG':'JptnA','ftBnN':_0x5e32(0x6),'XbKOi':_0x5e32(0x7),'ehcSz':function(_0x1d9f9e){return _0x1d9f9e();},'mqMzd':_0x5e32(0x8),'ngBlk':_0x5e32(0x9)};try{console[_0x5e32(0xa)](_0x631a71[_0x5e32(0xb)]),await _0x631a71[_0x5e32(0xc)](initializePlatformAuthService);const {UniversalOnboarding:_0x18b733}=await import(_0x631a71['mqMzd']),React=await import('react');return new Promise((_0x1e772d,_0xf54957)=>{const _0x5a67d6={'DvdnH':_0x631a71[_0x5e32(0xd)],'EVgxy':_0x631a71['xACAn'],'fIlZe':function(_0x4da428,_0x5dc9ae){return _0x631a71['bXlnL'](_0x4da428,_0x5dc9ae);},'Phdlb':_0x631a71['kjpQl'],'VziLk':_0x5e32(0xe),'dmARy':_0x631a71[_0x5e32(0xf)]};if(_0x631a71[_0x5e32(0x10)](_0x631a71[_0x5e32(0x11)],_0x631a71[_0x5e32(0x12)]))_0x53ca7c['onRejection'](_0x5e32(0x4));else{let _0x46b56f=null;const _0x41ec8b=(_0x47ec01,_0x4c9bd4,_0x42be00)=>{console[_0x5e32(0xa)](_0x5a67d6[_0x5e32(0x13)]),_0x46b56f&&_0x46b56f[_0x5e32(0x14)]&&_0x46b56f[_0x5e32(0x14)](),_0xec3087[_0x5e32(0x15)]&&(_0x5a67d6['fIlZe'](_0x5a67d6['Phdlb'],_0x5e32(0x16))?_0xec3087[_0x5e32(0x15)](_0x47ec01,_0x4c9bd4,_0x42be00):(_0x59a751[_0x5e32(0xa)](_0x5e32(0x0),_0x17add3),_0x32ec3d&&_0x40a8f8[_0x5e32(0x14)]&&_0x1e78ec[_0x5e32(0x14)](),_0x2a5d6e[_0x5e32(0x17)]&&_0x5119ea[_0x5e32(0x17)](_0x3ba0a5),_0x3ff7d6(new _0x1d6c15(_0x1fa2e4||_0x5a67d6[_0x5e32(0x18)])))),_0x1e772d();},_0x43cbb5=_0x2861ab=>{if(_0x5e32(0x19)!==_0x5e32(0x19)){_0x4bbade[_0x5e32(0xa)](_0x5a67d6[_0x5e32(0x1a)]);_0x233521[_0x5e32(0x17)]&&_0x2045b7[_0x5e32(0x17)](_0x5a67d6[_0x5e32(0x1b)]);return;}else console[_0x5e32(0xa)](_0x631a71[_0x5e32(0x1c)],_0x2861ab),_0x46b56f&&_0x46b56f[_0x5e32(0x14)]&&_0x46b56f[_0x5e32(0x14)](),_0xec3087['onRejection']&&_0xec3087[_0x5e32(0x17)](_0x2861ab),_0xf54957(new Error(_0x631a71[_0x5e32(0x1d)](_0x2861ab,_0x631a71['gmPUL'])));},_0x31a1c4=React['createElement'](_0x18b733,{'visible':!![],'onClose':()=>_0x43cbb5(_0x5e32(0x1e)),'AppName':_0xec3087['AppName'],'requestData':_0xec3087[_0x5e32(0x1f)],'returnLink':_0xec3087['returnLink'],'onComplete':_0x41ec8b,'preferredPlatform':_0xec3087[_0x5e32(0x20)],'debug':_0xec3087[_0x5e32(0x21)],'testMode':_0xec3087[_0x5e32(0x22)]});_0x46b56f=_0x31a1c4,console[_0x5e32(0xa)](_0x631a71[_0x5e32(0x23)]);}});}catch(_0x353cb5){console[_0x5e32(0x24)](_0x631a71[_0x5e32(0x25)],_0x353cb5);throw _0x353cb5;}};export const startOnairosFlow=async _0x40ea0f=>{const _0x5da398={'aspfv':_0x5e32(0x9),'ztJjp':function(_0x9b96d0,_0x2c318c){return _0x9b96d0!==_0x2c318c;},'QNlmK':_0x5e32(0x26),'WzPtD':_0x5e32(0x27),'yjxTn':_0x5e32(0x28),'cSUlF':_0x5e32(0xe),'dfrdK':_0x5e32(0x29),'ZIKUv':_0x5e32(0x2a),'qaIKv':function(_0x5818c8,_0x2dfc63){return _0x5818c8(_0x2dfc63);}};if(_0x40ea0f[_0x5e32(0x2b)]){if(_0x5da398[_0x5e32(0x2c)](_0x5da398[_0x5e32(0x2d)],_0x5da398[_0x5e32(0x2e)])){const _0x18f208=await _0x40ea0f[_0x5e32(0x2b)]();if(!_0x18f208){if(_0x5da398[_0x5e32(0x2c)](_0x5da398[_0x5e32(0x2f)],_0x5e32(0x30))){console[_0x5e32(0xa)](_0x5da398[_0x5e32(0x31)]);if(_0x40ea0f[_0x5e32(0x17)]){if(_0x5da398['ztJjp'](_0x5da398[_0x5e32(0x32)],_0x5da398['ZIKUv']))_0x40ea0f['onRejection'](_0x5e32(0x4));else{_0x2862cb['error'](_0x5da398[_0x5e32(0x33)],_0x2c8b3a);throw _0x223f10;}}return;}else _0x44bf6d['onRejection'](_0x14eaf3);}}else _0x207a15[_0x5e32(0x15)](_0x3f87c4,_0x4bee61,_0x2b750b);}return _0x5da398[_0x5e32(0x34)](executeOnairosFlow,_0x40ea0f);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x117fa3,_0x32d949)=>{const _0x9a07c7={'DjGfW':function(_0x4fc338,_0x2572f7){return _0x4fc338>=_0x2572f7;},'WwqTx':function(_0x5d8efa,_0x1b98a1){return _0x5d8efa<_0x1b98a1;},'sUNjj':function(_0x211b58,_0x234757){return _0x211b58!==_0x234757;},'eZMOZ':_0x2808(0x0),'GRoyA':_0x2808(0x1),'cTLTf':_0x2808(0x2),'OKeTL':function(_0x453dde,_0x3980b8){return _0x453dde===_0x3980b8;},'qcfpp':_0x2808(0x3),'dpWES':_0x2808(0x4),'nfwEh':_0x2808(0x5),'Cutui':'Unexpected\x20character'};if(_0x9a07c7['DjGfW'](_0x117fa3['status'],0x190)&&_0x9a07c7[_0x2808(0x6)](_0x117fa3[_0x2808(0x7)],0x1f4)&&_0x9a07c7[_0x2808(0x8)](_0x117fa3[_0x2808(0x7)],0x198)&&_0x9a07c7[_0x2808(0x8)](_0x117fa3[_0x2808(0x7)],0x1ad))return![];if(_0x117fa3['name']===_0x2808(0x9)||_0x117fa3['message'][_0x2808(0xa)](_0x9a07c7[_0x2808(0xb)])||_0x117fa3['message'][_0x2808(0xa)]('fetch')||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0xd)])||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0xe)])||_0x9a07c7[_0x2808(0xf)](_0x117fa3[_0x2808(0x7)],0x1f4))return _0x9a07c7[_0x2808(0x10)](_0x9a07c7[_0x2808(0x11)],_0x9a07c7['dpWES'])?!![]:!![];if(_0x117fa3['message'][_0x2808(0xa)](_0x9a07c7[_0x2808(0x12)])||_0x117fa3[_0x2808(0xc)][_0x2808(0xa)](_0x9a07c7[_0x2808(0x13)]))return!![];return![];}};function _0x2808(_0x1c40f6,_0x280810){_0x1c40f6=_0x1c40f6-0x0;const _0x3f7bad=_0x1c40();let _0x98b054=_0x3f7bad[_0x1c40f6];return _0x98b054;}export async function withRetry(_0x14544b,_0x110a1b={}){const _0x5a0d47={'OHitJ':function(_0x57ecf0,_0x11c2d4){return _0x57ecf0<=_0x11c2d4;},'cRFNp':function(_0x4d7dfc,_0xea1740){return _0x4d7dfc>_0xea1740;},'QchoR':function(_0x3eafdd){return _0x3eafdd();},'Olpgh':function(_0x253af9,_0x2c7724){return _0x253af9-_0x2c7724;},'bfAOm':function(_0x5195a6,_0x51822a){return _0x5195a6!==_0x51822a;},'sWtvV':_0x2808(0x14),'RPjIy':_0x2808(0x15),'yVmGn':function(_0x3dbbf5,_0x1dcd89){return _0x3dbbf5*_0x1dcd89;},'kkmjA':function(_0x4ca2f3,_0x3307ff){return _0x4ca2f3+_0x3307ff;},'hkksQ':function(_0xc21cb4,_0x2ddc2d){return _0xc21cb4+_0x2ddc2d;},'KgNrf':_0x2808(0x16),'xRBWt':function(_0x2d5771,_0x2ece70){return _0x2d5771+_0x2ece70;}},_0x529aa0={...DEFAULT_RETRY_OPTIONS,..._0x110a1b},_0x3bec73=Date[_0x2808(0x17)]();let _0x1f4446=null;for(let _0x2b0643=0x1;_0x5a0d47['OHitJ'](_0x2b0643,_0x529aa0['maxRetries']+0x1);_0x2b0643++){try{_0x529aa0[_0x2808(0x18)]&&_0x5a0d47[_0x2808(0x19)](_0x2b0643,0x1)&&console[_0x2808(0x1a)](_0x2808(0x1b)+_0x2b0643+'/'+(_0x529aa0[_0x2808(0x1c)]+0x1));const _0x206013=await _0x5a0d47[_0x2808(0x1d)](_0x14544b);return{'success':!![],'data':_0x206013,'attempts':_0x2b0643,'totalDuration':_0x5a0d47[_0x2808(0x1e)](Date['now'](),_0x3bec73)};}catch(_0x1c75bf){if(_0x5a0d47[_0x2808(0x1f)](_0x5a0d47[_0x2808(0x20)],_0x5a0d47[_0x2808(0x21)])){_0x1f4446=_0x1c75bf;const _0x41bece=_0x529aa0[_0x2808(0x22)]?_0x529aa0[_0x2808(0x22)](_0x1c75bf,_0x2b0643):!![];if(_0x5a0d47[_0x2808(0x19)](_0x2b0643,_0x529aa0[_0x2808(0x1c)])||!_0x41bece){_0x529aa0[_0x2808(0x18)]&&console[_0x2808(0x23)](_0x2808(0x24)+_0x1c75bf[_0x2808(0xc)]);break;}let _0x3e1487=_0x529aa0[_0x2808(0x25)];_0x529aa0[_0x2808(0x26)]&&(_0x3e1487=Math['min'](_0x5a0d47['yVmGn'](_0x529aa0[_0x2808(0x25)],Math['pow'](0x2,_0x5a0d47[_0x2808(0x1e)](_0x2b0643,0x1))),_0x529aa0[_0x2808(0x27)]));const _0x14cbaf=_0x5a0d47[_0x2808(0x28)](Math[_0x2808(0x29)]()*0.1,_0x3e1487);_0x3e1487=Math[_0x2808(0x2a)](_0x5a0d47[_0x2808(0x2b)](_0x3e1487,_0x14cbaf)),_0x529aa0[_0x2808(0x2c)]&&_0x529aa0[_0x2808(0x2c)](_0x1c75bf,_0x2b0643,_0x3e1487),_0x529aa0[_0x2808(0x18)]&&console[_0x2808(0x1a)](_0x2808(0x2d)+_0x3e1487+_0x2808(0x2e)+_0x2b0643+'/'+_0x5a0d47[_0x2808(0x2f)](_0x529aa0[_0x2808(0x1c)],0x1)+')'),await new Promise(_0x9006e4=>setTimeout(()=>_0x9006e4(),_0x3e1487));}else _0x2543e5[_0x2808(0x23)](_0x2808(0x24)+_0x145af4[_0x2808(0xc)]);}}return{'success':![],'error':_0x1f4446||new Error(_0x5a0d47[_0x2808(0x30)]),'attempts':_0x5a0d47[_0x2808(0x31)](_0x529aa0[_0x2808(0x1c)],0x1),'totalDuration':_0x5a0d47[_0x2808(0x1e)](Date['now'](),_0x3bec73)};}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x31655f,_0x3c50ab)=>{const _0x1149cd={'mbCdM':function(_0x2ba978,_0x52724b){return _0x2ba978+_0x52724b;},'QbjfK':'Network\x20request\x20failed','SKsoA':_0x2808(0x32),'LreFU':'AbortError','pKUVx':function(_0x473fbf,_0x4162ce){return _0x473fbf*_0x4162ce;},'lUSTa':function(_0x36d725,_0x2bd338){return _0x36d725===_0x2bd338;},'jjsAt':function(_0x182d48,_0x12d3b9){return _0x182d48===_0x12d3b9;},'egsvR':_0x2808(0x33),'gGJcC':'validation\x20endpoint','bupQj':'vrNLG','qsLev':function(_0xc26f96,_0x44477c){return _0xc26f96<=_0x44477c;},'WonCY':function(_0x2d6ee1,_0x2857c7){return _0x2d6ee1>=_0x2857c7;},'JSUqm':_0x2808(0x2),'VcPBi':_0x2808(0x34),'Cvaxb':_0x2808(0x1),'HJcqh':function(_0x4facd8,_0x15242b){return _0x4facd8===_0x15242b;},'KRAeV':_0x2808(0x35),'Hzcbq':'JSON\x20Parse\x20error','drmDZ':_0x2808(0x36),'HJhZj':'HTML\x20page\x20instead\x20of\x20JSON'};if(_0x1149cd['lUSTa'](_0x31655f['status'],0x191)||_0x1149cd[_0x2808(0x37)](_0x31655f[_0x2808(0x7)],0x193)){if(_0x1149cd[_0x2808(0x38)](_0x1149cd[_0x2808(0x39)],_0x1149cd[_0x2808(0x39)]))return![];else _0x36520c[_0x2808(0x1a)](_0x2808(0x2d)+_0x4c5d19+_0x2808(0x2e)+_0x121865+'/'+_0x1149cd[_0x2808(0x3a)](_0x4afe0b[_0x2808(0x1c)],0x1)+')');}if(_0x31655f['status']===0x190||_0x1149cd[_0x2808(0x38)](_0x31655f['status'],0x194)&&!_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3b)]))return![];if(_0x1149cd['jjsAt'](_0x31655f[_0x2808(0x7)],0x1ad))return _0x1149cd[_0x2808(0x3c)]!==_0x1149cd[_0x2808(0x3c)]?_0x59e2e6['message'][_0x2808(0xa)](_0x1149cd[_0x2808(0x3d)])||_0x190423[_0x2808(0xc)][_0x2808(0xa)](_0x2808(0x1))||_0x2d9669[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3e)])||_0x183265['name']===_0x1149cd[_0x2808(0x3f)]:_0x1149cd[_0x2808(0x40)](_0x3c50ab,0x2);if(_0x1149cd[_0x2808(0x41)](_0x31655f[_0x2808(0x7)],0x1f4))return!![];if(_0x1149cd[_0x2808(0x37)](_0x31655f[_0x2808(0x42)],_0x1149cd[_0x2808(0x3f)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd['JSUqm'])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x3d)])||_0x31655f['message'][_0x2808(0xa)](_0x1149cd['VcPBi'])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x43)])){if(_0x1149cd['HJcqh'](_0x1149cd[_0x2808(0x44)],_0x2808(0x45)))_0x3bb3fb=_0x3d9c24[_0x2808(0x46)](_0x1149cd[_0x2808(0x47)](_0x9a3752['baseDelay'],_0x5de975[_0x2808(0x48)](0x2,_0x16189a-0x1)),_0xb83dd9[_0x2808(0x27)]);else return!![];}if(_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x49)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd[_0x2808(0x4a)])||_0x31655f[_0x2808(0xc)][_0x2808(0xa)](_0x1149cd['HJhZj']))return!![];return![];},'onRetry':(_0x4c5d68,_0x26bc0a,_0x9954f7)=>{console[_0x2808(0x4b)](_0x2808(0x4c)+_0x26bc0a+_0x2808(0x4d)+_0x9954f7+_0x2808(0x4e)+_0x4c5d68[_0x2808(0xc)]);}};function _0x1c40(){const _0x2a54a9=['Network\x20request\x20failed','ENOTFOUND','timeout','KhyYw','aJsMX','JSON\x20Parse\x20error','WwqTx','status','sUNjj','AbortError','includes','eZMOZ','message','GRoyA','cTLTf','DjGfW','OKeTL','qcfpp','nfwEh','Cutui','yQyJX','xUata','Unknown\x20error','now','enableLogging','cRFNp','log','🔄\x20Retry\x20attempt\x20','maxRetries','QchoR','Olpgh','bfAOm','sWtvV','RPjIy','shouldRetry','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','maxDelay','yVmGn','random','floor','kkmjA','onRetry','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','hkksQ','KgNrf','xRBWt','DNS','maqDH','fetch','vYkOM','Unexpected\x20character','lUSTa','jjsAt','egsvR','mbCdM','gGJcC','bupQj','QbjfK','SKsoA','LreFU','qsLev','WonCY','name','Cvaxb','KRAeV','GvwIC','min','pKUVx','pow','Hzcbq','drmDZ','warn','⚠️\x20API\x20call\x20failed\x20(attempt\x20','),\x20retrying\x20in\x20','ms:\x20','yUCJz','goJcQ','success','IzgCN','BVdbR','data','OnairosReactNative/HealthCheck','XybbH','IuGxW','abort','signal'];_0x1c40=function(){return _0x2a54a9;};return _0x1c40();}export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x17d2a4,_0x5f40f8)=>{const _0x372fba={'fNmcU':'Network\x20request\x20failed','QcDkD':_0x2808(0x32)};return _0x17d2a4[_0x2808(0xc)]['includes'](_0x372fba['fNmcU'])||_0x17d2a4[_0x2808(0xc)]['includes'](_0x2808(0x1))||_0x17d2a4[_0x2808(0xc)][_0x2808(0xa)](_0x372fba['QcDkD'])||_0x17d2a4[_0x2808(0x42)]===_0x2808(0x9);}};export async function fetchWithRetry(_0x5f4382,_0x3bda64={},_0x373db2=API_RETRY_OPTIONS){const _0x35760a={'uNrBM':function(_0x9ce72e,_0x2d3c1f,_0x55c4f0){return _0x9ce72e(_0x2d3c1f,_0x55c4f0);},'IzgCN':function(_0x2210e6,_0x4e5eea){return _0x2210e6!==_0x4e5eea;},'CkfVE':_0x2808(0x4f),'BVdbR':_0x2808(0x50)},_0x1a8264=await _0x35760a['uNrBM'](withRetry,()=>fetch(_0x5f4382,_0x3bda64),_0x373db2);if(!_0x1a8264[_0x2808(0x51)]){if(_0x35760a[_0x2808(0x52)](_0x35760a['CkfVE'],_0x35760a[_0x2808(0x53)]))throw _0x1a8264[_0x2808(0x23)];else return!![];}return _0x1a8264[_0x2808(0x54)];}export async function healthCheck(_0x3ea0bf,_0x4afe77=0x1388){const _0x60931f={'NoRNQ':function(_0x343a94,_0x1ab923){return _0x343a94===_0x1ab923;},'XybbH':'dMNYi','IuGxW':function(_0x5ed8c9,_0x2174f5,_0x18407c){return _0x5ed8c9(_0x2174f5,_0x18407c);},'fHWYi':_0x2808(0x55),'OhOtB':function(_0x31ce29,_0x143b9){return _0x31ce29(_0x143b9);},'kOITy':function(_0x29c51b,_0x49ea01){return _0x29c51b-_0x49ea01;}},_0x386473=Date[_0x2808(0x17)]();try{if(_0x60931f['NoRNQ'](_0x60931f['XybbH'],_0x60931f[_0x2808(0x56)])){const _0x2948f5=new AbortController(),_0x2d56c3=_0x60931f[_0x2808(0x57)](setTimeout,()=>_0x2948f5[_0x2808(0x58)](),_0x4afe77),_0xf181c4=await fetch(_0x3ea0bf,{'method':'GET','signal':_0x2948f5[_0x2808(0x59)],'headers':{'User-Agent':_0x60931f['fHWYi']}});return _0x60931f['OhOtB'](clearTimeout,_0x2d56c3),{'reachable':!![],'status':_0xf181c4[_0x2808(0x7)],'duration':Date[_0x2808(0x17)]()-_0x386473};}else return![];}catch(_0x1be512){return{'reachable':![],'error':_0x1be512['message'],'duration':_0x60931f['kOITy'](Date[_0x2808(0x17)](),_0x386473)};}}
|
|
1
|
+
export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x16e4cb,_0x5c6f1d)=>{const _0x44f8c6={'EzffH':function(_0x110923,_0x4b434f){return _0x110923>=_0x4b434f;},'jpbMa':function(_0x27c5c4,_0xabf296){return _0x27c5c4<_0xabf296;},'vcLDR':function(_0x563e9c,_0x2f9a74){return _0x563e9c!==_0x2f9a74;},'JGqcC':function(_0x89b817,_0x3e53e7){return _0x89b817===_0x3e53e7;},'QyOBF':_0x3bd3(0x0),'Vqccq':'Network\x20request\x20failed','oqrrj':_0x3bd3(0x1),'UcscI':_0x3bd3(0x2),'XDNZc':'timeout','JdfNL':_0x3bd3(0x3),'aPwrc':function(_0x2b96ce,_0x2dafa8){return _0x2b96ce===_0x2dafa8;},'JBLmK':'cwbxU'};if(_0x44f8c6[_0x3bd3(0x4)](_0x16e4cb['status'],0x190)&&_0x44f8c6[_0x3bd3(0x5)](_0x16e4cb['status'],0x1f4)&&_0x44f8c6[_0x3bd3(0x6)](_0x16e4cb['status'],0x198)&&_0x44f8c6[_0x3bd3(0x6)](_0x16e4cb[_0x3bd3(0x7)],0x1ad))return![];if(_0x44f8c6[_0x3bd3(0x8)](_0x16e4cb['name'],_0x44f8c6[_0x3bd3(0x9)])||_0x16e4cb[_0x3bd3(0xa)]['includes'](_0x44f8c6[_0x3bd3(0xb)])||_0x16e4cb['message'][_0x3bd3(0xc)](_0x44f8c6[_0x3bd3(0xd)])||_0x16e4cb[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x44f8c6['UcscI'])||_0x16e4cb[_0x3bd3(0xa)]['includes'](_0x44f8c6[_0x3bd3(0xe)])||_0x44f8c6[_0x3bd3(0x4)](_0x16e4cb[_0x3bd3(0x7)],0x1f4))return!![];if(_0x16e4cb[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x44f8c6[_0x3bd3(0xf)])||_0x16e4cb[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x3bd3(0x10)))return _0x44f8c6['aPwrc'](_0x44f8c6[_0x3bd3(0x11)],_0x3bd3(0x12))?!![]:![];return![];}};export async function withRetry(_0x38aa1c,_0x2ab284={}){const _0x467748={'JhFBO':_0x3bd3(0x13),'KsGBp':'ENOTFOUND','gKUna':_0x3bd3(0x14),'lMJiP':function(_0x48421d,_0x335eaf){return _0x48421d===_0x335eaf;},'fdsTy':_0x3bd3(0x0),'lEXEa':function(_0x28a95d,_0xba3033){return _0x28a95d<=_0xba3033;},'wJOmZ':function(_0x1e3848,_0x26de5b){return _0x1e3848===_0x26de5b;},'ijGOF':_0x3bd3(0x15),'hVvMw':_0x3bd3(0x16),'sKDTK':function(_0x29fa48,_0x5e3277){return _0x29fa48+_0x5e3277;},'VCzWw':function(_0x10af99){return _0x10af99();},'joGmb':function(_0x4191bd,_0xff0d2f){return _0x4191bd-_0xff0d2f;},'Gmohr':'IKxuC','gGmxL':_0x3bd3(0x17),'VovhX':_0x3bd3(0x18),'EAKmK':function(_0x4a5019,_0x5a1c45){return _0x4a5019*_0x5a1c45;},'ZfVlZ':_0x3bd3(0x19),'hJMuv':function(_0x440181,_0x205a7b){return _0x440181+_0x205a7b;}},_0x3712a1={...DEFAULT_RETRY_OPTIONS,..._0x2ab284},_0x37acc8=Date[_0x3bd3(0x1a)]();let _0x8b5df8=null;for(let _0x3d53f9=0x1;_0x467748['lEXEa'](_0x3d53f9,_0x3712a1['maxRetries']+0x1);_0x3d53f9++){try{if(_0x3712a1[_0x3bd3(0x1b)]&&_0x3d53f9>0x1){if(_0x467748['wJOmZ'](_0x467748[_0x3bd3(0x1c)],_0x467748['hVvMw']))return![];else console[_0x3bd3(0x1d)](_0x3bd3(0x1e)+_0x3d53f9+'/'+_0x467748['sKDTK'](_0x3712a1['maxRetries'],0x1));}const _0x4e3a0c=await _0x467748[_0x3bd3(0x1f)](_0x38aa1c);return{'success':!![],'data':_0x4e3a0c,'attempts':_0x3d53f9,'totalDuration':_0x467748[_0x3bd3(0x20)](Date[_0x3bd3(0x1a)](),_0x37acc8)};}catch(_0x42fc1d){_0x8b5df8=_0x42fc1d;const _0x4cee7f=_0x3712a1[_0x3bd3(0x21)]?_0x3712a1[_0x3bd3(0x21)](_0x42fc1d,_0x3d53f9):!![];if(_0x3d53f9>_0x3712a1[_0x3bd3(0x22)]||!_0x4cee7f){if(_0x467748[_0x3bd3(0x23)](_0x467748[_0x3bd3(0x24)],_0x467748[_0x3bd3(0x24)])){_0x3712a1[_0x3bd3(0x1b)]&&(_0x467748[_0x3bd3(0x25)]!==_0x467748[_0x3bd3(0x25)]?_0x46b51b[_0x3bd3(0x26)]('⚠️\x20API\x20call\x20failed\x20(attempt\x20'+_0x47f8ba+_0x3bd3(0x27)+_0x223bc7+_0x3bd3(0x28)+_0x5c3fdb[_0x3bd3(0xa)]):console[_0x3bd3(0x29)](_0x3bd3(0x2a)+_0x42fc1d[_0x3bd3(0xa)]));break;}else return _0x28844a['message'][_0x3bd3(0xc)](_0x467748['JhFBO'])||_0x5e6db0[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x467748['KsGBp'])||_0x137b37['message'][_0x3bd3(0xc)](_0x467748[_0x3bd3(0x2b)])||_0x467748[_0x3bd3(0x23)](_0x29f594[_0x3bd3(0x2c)],_0x467748['fdsTy']);}let _0x214db1=_0x3712a1[_0x3bd3(0x2d)];_0x3712a1[_0x3bd3(0x2e)]&&(_0x467748['VovhX']===_0x3bd3(0x18)?_0x214db1=Math[_0x3bd3(0x2f)](_0x467748['EAKmK'](_0x3712a1[_0x3bd3(0x2d)],Math[_0x3bd3(0x30)](0x2,_0x467748[_0x3bd3(0x20)](_0x3d53f9,0x1))),_0x3712a1['maxDelay']):_0x23b80a[_0x3bd3(0x1d)](_0x3bd3(0x31)+_0x3aaac5+_0x3bd3(0x32)+_0x25443d+'/'+(_0x16ece1[_0x3bd3(0x22)]+0x1)+')'));const _0x568106=Math[_0x3bd3(0x33)]()*0.1*_0x214db1;_0x214db1=Math[_0x3bd3(0x34)](_0x467748[_0x3bd3(0x35)](_0x214db1,_0x568106)),_0x3712a1[_0x3bd3(0x36)]&&_0x3712a1[_0x3bd3(0x36)](_0x42fc1d,_0x3d53f9,_0x214db1),_0x3712a1[_0x3bd3(0x1b)]&&console[_0x3bd3(0x1d)]('⏳\x20Waiting\x20'+_0x214db1+_0x3bd3(0x32)+_0x3d53f9+'/'+_0x467748[_0x3bd3(0x35)](_0x3712a1[_0x3bd3(0x22)],0x1)+')'),await new Promise(_0x1e468c=>setTimeout(()=>_0x1e468c(),_0x214db1));}}return{'success':![],'error':_0x8b5df8||new Error(_0x467748[_0x3bd3(0x37)]),'attempts':_0x467748[_0x3bd3(0x38)](_0x3712a1[_0x3bd3(0x22)],0x1),'totalDuration':_0x467748[_0x3bd3(0x20)](Date[_0x3bd3(0x1a)](),_0x37acc8)};}function _0x3bd3(_0x13bb69,_0x3bd3e6){_0x13bb69=_0x13bb69-0x0;const _0x29f504=_0x13bb();let _0x22578b=_0x29f504[_0x13bb69];return _0x22578b;}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x1e3f46,_0x352941)=>{const _0x24ce0e={'dVBol':function(_0x477490,_0x2440b1){return _0x477490-_0x2440b1;},'SsCOV':function(_0x8e8c40,_0x381f8d){return _0x8e8c40+_0x381f8d;},'lYFBG':function(_0x4339e9,_0x5b6a36){return _0x4339e9===_0x5b6a36;},'CpDlH':'gBZuL','xHfPE':function(_0x2a80c9,_0x186b05){return _0x2a80c9===_0x186b05;},'pwOdp':_0x3bd3(0x39),'MDJbK':'xcUsQ','uFPSt':_0x3bd3(0x3a),'yizKc':function(_0x32d562,_0x17c4e8){return _0x32d562<=_0x17c4e8;},'DofvD':'MBQnk','xqgnk':function(_0x205fbb,_0xdfbab3){return _0x205fbb===_0xdfbab3;},'YVWEU':'AbortError','slkAz':_0x3bd3(0x13),'vEfUP':_0x3bd3(0x1),'LuoUV':_0x3bd3(0x2),'BpWfL':function(_0x3b3921,_0x2c7f37){return _0x3b3921!==_0x2c7f37;},'xysEu':_0x3bd3(0x3b),'SmnmN':_0x3bd3(0x3),'VOXed':_0x3bd3(0x10),'Nbkbx':_0x3bd3(0x3c)};if(_0x24ce0e[_0x3bd3(0x3d)](_0x1e3f46[_0x3bd3(0x7)],0x191)||_0x24ce0e[_0x3bd3(0x3d)](_0x1e3f46[_0x3bd3(0x7)],0x193))return _0x24ce0e[_0x3bd3(0x3e)]===_0x24ce0e['CpDlH']?![]:!![];if(_0x1e3f46[_0x3bd3(0x7)]===0x190||_0x24ce0e[_0x3bd3(0x3f)](_0x1e3f46[_0x3bd3(0x7)],0x194)&&!_0x1e3f46[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x24ce0e[_0x3bd3(0x40)]))return![];if(_0x24ce0e[_0x3bd3(0x3f)](_0x1e3f46[_0x3bd3(0x7)],0x1ad))return _0x24ce0e[_0x3bd3(0x3f)](_0x24ce0e[_0x3bd3(0x41)],_0x24ce0e['uFPSt'])?!![]:_0x24ce0e[_0x3bd3(0x42)](_0x352941,0x2);if(_0x1e3f46[_0x3bd3(0x7)]>=0x1f4)return _0x24ce0e[_0x3bd3(0x3d)](_0x24ce0e[_0x3bd3(0x43)],_0x24ce0e[_0x3bd3(0x43)])?!![]:{'reachable':![],'error':_0x1dc7b7[_0x3bd3(0xa)],'duration':_0x24ce0e[_0x3bd3(0x44)](_0x2f0bee['now'](),_0xb9fb19)};if(_0x24ce0e[_0x3bd3(0x45)](_0x1e3f46[_0x3bd3(0x2c)],_0x24ce0e[_0x3bd3(0x46)])||_0x1e3f46['message'][_0x3bd3(0xc)](_0x3bd3(0x47))||_0x1e3f46[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x24ce0e[_0x3bd3(0x48)])||_0x1e3f46[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x24ce0e[_0x3bd3(0x49)])||_0x1e3f46[_0x3bd3(0xa)]['includes'](_0x24ce0e['LuoUV'])){if(_0x24ce0e[_0x3bd3(0x4a)](_0x24ce0e[_0x3bd3(0x4b)],_0x24ce0e[_0x3bd3(0x4b)]))_0x2dc98b[_0x3bd3(0x1d)]('🔄\x20Retry\x20attempt\x20'+_0xa92d15+'/'+_0x24ce0e[_0x3bd3(0x4c)](_0x1d6aa0['maxRetries'],0x1));else return!![];}if(_0x1e3f46[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x24ce0e[_0x3bd3(0x4d)])||_0x1e3f46[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x24ce0e[_0x3bd3(0x4e)])||_0x1e3f46[_0x3bd3(0xa)]['includes'](_0x24ce0e[_0x3bd3(0x4f)]))return!![];return![];},'onRetry':(_0x43e910,_0x2cc577,_0x3d9a9e)=>{console[_0x3bd3(0x26)](_0x3bd3(0x50)+_0x2cc577+_0x3bd3(0x27)+_0x3d9a9e+_0x3bd3(0x28)+_0x43e910[_0x3bd3(0xa)]);}};export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x49bbbb,_0x38045c)=>{const _0x1ff547={'qygpe':_0x3bd3(0x13),'UBoiv':_0x3bd3(0x2),'qyiaS':_0x3bd3(0x14),'UXNPG':function(_0x383262,_0x58b0c){return _0x383262===_0x58b0c;},'gNQNx':_0x3bd3(0x0)};return _0x49bbbb[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x1ff547[_0x3bd3(0x51)])||_0x49bbbb[_0x3bd3(0xa)][_0x3bd3(0xc)](_0x1ff547[_0x3bd3(0x52)])||_0x49bbbb[_0x3bd3(0xa)]['includes'](_0x1ff547[_0x3bd3(0x53)])||_0x1ff547['UXNPG'](_0x49bbbb[_0x3bd3(0x2c)],_0x1ff547[_0x3bd3(0x54)]);}};export async function fetchWithRetry(_0xcc2751,_0x1fec5d={},_0x330a4f=API_RETRY_OPTIONS){const _0x1a3faf={'gpcbx':function(_0x4700ca,_0x378974,_0x57c640){return _0x4700ca(_0x378974,_0x57c640);}},_0x1f9a60=await _0x1a3faf['gpcbx'](withRetry,()=>fetch(_0xcc2751,_0x1fec5d),_0x330a4f);if(!_0x1f9a60[_0x3bd3(0x55)])throw _0x1f9a60[_0x3bd3(0x29)];return _0x1f9a60['data'];}function _0x13bb(){const _0x3fcdbd=['AbortError','fetch','ENOTFOUND','JSON\x20Parse\x20error','EzffH','jpbMa','vcLDR','status','JGqcC','QyOBF','message','Vqccq','includes','oqrrj','XDNZc','JdfNL','Unexpected\x20character','JBLmK','cwbxU','Network\x20request\x20failed','DNS','hodMX','XWCJd','fLHnJ','nsMjO','Unknown\x20error','now','enableLogging','ijGOF','log','🔄\x20Retry\x20attempt\x20','VCzWw','joGmb','shouldRetry','maxRetries','lMJiP','Gmohr','gGmxL','warn','),\x20retrying\x20in\x20','ms:\x20','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','gKUna','name','baseDelay','exponentialBackoff','min','pow','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','random','floor','sKDTK','onRetry','ZfVlZ','hJMuv','validation\x20endpoint','DbZzg','JeGVf','HTML\x20page\x20instead\x20of\x20JSON','lYFBG','CpDlH','xHfPE','pwOdp','MDJbK','yizKc','DofvD','dVBol','xqgnk','YVWEU','timeout','slkAz','vEfUP','BpWfL','xysEu','SsCOV','SmnmN','VOXed','Nbkbx','⚠️\x20API\x20call\x20failed\x20(attempt\x20','qygpe','UBoiv','qyiaS','gNQNx','success','yyVSW','abort','signal','vuLGZ','uwMUE'];_0x13bb=function(){return _0x3fcdbd;};return _0x13bb();}export async function healthCheck(_0x136073,_0x123ba0=0x1388){const _0x504e22={'yyVSW':function(_0x1b4cb2,_0x5e1ec4,_0x3fade0){return _0x1b4cb2(_0x5e1ec4,_0x3fade0);},'vuLGZ':'OnairosReactNative/HealthCheck','uwMUE':function(_0x3242dd,_0x3e9dab){return _0x3242dd(_0x3e9dab);},'BDjAX':function(_0x4c2e33,_0x55beb5){return _0x4c2e33-_0x55beb5;}},_0x4d8f3c=Date[_0x3bd3(0x1a)]();try{const _0x4bed25=new AbortController(),_0xe4c3d1=_0x504e22[_0x3bd3(0x56)](setTimeout,()=>_0x4bed25[_0x3bd3(0x57)](),_0x123ba0),_0x5978e6=await _0x504e22[_0x3bd3(0x56)](fetch,_0x136073,{'method':'GET','signal':_0x4bed25[_0x3bd3(0x58)],'headers':{'User-Agent':_0x504e22[_0x3bd3(0x59)]}});return _0x504e22[_0x3bd3(0x5a)](clearTimeout,_0xe4c3d1),{'reachable':!![],'status':_0x5978e6[_0x3bd3(0x7)],'duration':_0x504e22['BDjAX'](Date[_0x3bd3(0x1a)](),_0x4d8f3c)};}catch(_0x4f11d0){return{'reachable':![],'error':_0x4f11d0['message'],'duration':Date[_0x3bd3(0x1a)]()-_0x4d8f3c};}}
|
|
@@ -4,4 +4,4 @@ var __ONAIROS_REQ_REGISTRY__ = [
|
|
|
4
4
|
require('react-native-keychain')
|
|
5
5
|
];
|
|
6
6
|
function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
|
|
7
|
-
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY=_0x158b(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x323c51){console['warn']('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':'mock'},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x158b(0x1)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x586bac={'PpYoD':function(_0x2bd973,_0x331b5a){return _0x2bd973===_0x331b5a;}};try{return Keychain&&_0x586bac[_0x158b(0x2)](typeof Keychain[_0x158b(0x3)],_0x158b(0x4));}catch(_0x4825cd){return![];}},safeGetGenericPassword=async _0x3d600d=>{const _0x98fb4f={'aDvKJ':function(_0x552431,_0xf608d6){return _0x552431===_0xf608d6;},'Jrumh':function(_0x5b9fef,_0x1dc3c1){return _0x5b9fef===_0x1dc3c1;},'HhrSV':'default','rwuPA':function(_0x1b98fb){return _0x1b98fb();},'BsIHB':'LLQxq','QgoUt':function(_0x304f4f,_0x2e61b8){return _0x304f4f===_0x2e61b8;},'syLpQ':function(_0x2953b2,_0x3c1cfd){return _0x2953b2===_0x3c1cfd;}};try{if(_0x98fb4f[_0x158b(0x5)](isKeychainAvailable))return await Keychain[_0x158b(0x3)](_0x3d600d);else{if(_0x98fb4f[_0x158b(0x6)]===_0x158b(0x7)){const _0x2794b3=(_0x3d600d===null||_0x98fb4f[_0x158b(0x8)](_0x3d600d,void 0x0)?void 0x0:_0x3d600d[_0x158b(0x9)])||_0x98fb4f[_0x158b(0xa)];return mockStorage[_0x2794b3]||null;}else{const _0x52e1d5=(_0x98fb4f['aDvKJ'](_0x49c31b,null)||_0x98fb4f['Jrumh'](_0x3ed621,void 0x0)?void 0x0:_0x381304[_0x158b(0x9)])||_0x98fb4f['HhrSV'];return _0x57ed77[_0x52e1d5]={'username':_0x49cf5,'password':_0x247e62},!![];}}}catch(_0x525822){console[_0x158b(0xb)]('Keychain\x20access\x20failed,\x20using\x20mock\x20storage',_0x525822);const _0x5f4f21=(_0x98fb4f[_0x158b(0xc)](_0x3d600d,null)||_0x3d600d===void 0x0?void 0x0:_0x3d600d[_0x158b(0x9)])||_0x98fb4f[_0x158b(0xa)];return mockStorage[_0x5f4f21]||null;}},safeSetGenericPassword=async(_0x543556,_0x1ececc,_0xeb1549)=>{const _0x529341={'oKztI':function(_0x11e173,_0x48c084){return _0x11e173%_0x48c084;},'wwVew':'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','Tcfff':function(_0x3fc393,_0x5689a8){return _0x3fc393<_0x5689a8;},'gFfsr':function(_0x14545a,_0x38cc77){return _0x14545a+_0x38cc77;},'uGhbC':function(_0x2addcc,_0x2c11eb){return _0x2addcc+_0x2c11eb;},'bIGqy':function(_0x2c1ecf,_0x5b20c3){return _0x2c1ecf|_0x5b20c3;},'rtlyf':function(_0x329540,_0x244305){return _0x329540<<_0x244305;},'TzOih':function(_0x1ccb49,_0x6777fb){return _0x1ccb49&_0x6777fb;},'xVIjY':function(_0x439d8a,_0xd69194){return _0x439d8a>>_0xd69194;},'AlegS':function(_0x3a1372,_0x2f9b61){return _0x3a1372!==_0x2f9b61;},'EzzQZ':function(_0x53a00d,_0x3a3467){return _0x53a00d===_0x3a3467;},'WPPgY':'aLNtB','Wuxfq':function(_0x1f089d,_0x4e3d46){return _0x1f089d!==_0x4e3d46;},'nTEWC':_0x158b(0xd),'vibWg':function(_0x3a557b,_0x546886){return _0x3a557b===_0x546886;},'mnYgY':_0x158b(0xe),'YUayd':_0x158b(0xf),'tERdi':function(_0x24d649,_0x383786){return _0x24d649===_0x383786;}};try{if(_0x529341['EzzQZ'](_0x158b(0x10),_0x158b(0x10))){if(isKeychainAvailable()){if(_0x529341['AlegS']('qelss',_0x529341[_0x158b(0x11)]))return await Keychain[_0x158b(0x12)](_0x543556,_0x1ececc,_0xeb1549);else _0x43bfb9[_0x158b(0x13)]=Keychain[_0x158b(0x14)]['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x405e05[_0x158b(0x15)]=Keychain['ACCESSIBLE'][_0x158b(0x16)];}else{if(_0x529341[_0x158b(0x17)](_0x529341[_0x158b(0x18)],_0x529341['nTEWC'])){while(_0x529341[_0x158b(0x19)](_0x285c0f[_0x158b(0x1a)],0x4)){_0x3459a9+='=';}const _0x4cd327=_0x529341[_0x158b(0x1b)];let _0xd8ee03='';for(let _0x50eaa2=0x0;_0x529341[_0x158b(0x1c)](_0x50eaa2,_0x384ca5[_0x158b(0x1a)]);_0x50eaa2+=0x4){const _0xbe8905=_0x4cd327[_0x158b(0x1d)](_0xd2530c[_0x158b(0x1e)](_0x50eaa2)),_0xcc73f3=_0x4cd327['indexOf'](_0x211f0b[_0x158b(0x1e)](_0x529341[_0x158b(0x1f)](_0x50eaa2,0x1))),_0x1fef62=_0x4cd327[_0x158b(0x1d)](_0x11b006[_0x158b(0x1e)](_0x50eaa2+0x2)),_0x7fed3e=_0x4cd327[_0x158b(0x1d)](_0x475ea8['charAt'](_0x529341['uGhbC'](_0x50eaa2,0x3))),_0x5ab6eb=_0x529341[_0x158b(0x20)](_0x529341[_0x158b(0x20)](_0xbe8905<<0x12,_0x529341['rtlyf'](_0xcc73f3,0xc))|_0x529341[_0x158b(0x21)](_0x1fef62,0x6),_0x7fed3e);_0xd8ee03+=_0x329fa6[_0x158b(0x22)](_0x529341[_0x158b(0x23)](_0x529341[_0x158b(0x24)](_0x5ab6eb,0x10),0xff));if(_0x529341[_0x158b(0x25)](_0x1fef62,0x40))_0xd8ee03+=_0x5de3ec[_0x158b(0x22)](_0x529341[_0x158b(0x23)](_0x529341['xVIjY'](_0x5ab6eb,0x8),0xff));if(_0x529341[_0x158b(0x25)](_0x7fed3e,0x40))_0xd8ee03+=_0x26ca22[_0x158b(0x22)](_0x5ab6eb&0xff);}return _0xd8ee03;}else{const _0x2fb6af=(_0x529341['EzzQZ'](_0xeb1549,null)||_0x529341[_0x158b(0x26)](_0xeb1549,void 0x0)?void 0x0:_0xeb1549['service'])||_0x529341[_0x158b(0x27)];return mockStorage[_0x2fb6af]={'username':_0x543556,'password':_0x1ececc},!![];}}}else _0x57dd7d+='=';}catch(_0x296a09){console['warn'](_0x529341[_0x158b(0x28)],_0x296a09);const _0x2f3498=(_0x529341['vibWg'](_0xeb1549,null)||_0x529341[_0x158b(0x29)](_0xeb1549,void 0x0)?void 0x0:_0xeb1549[_0x158b(0x9)])||_0x529341[_0x158b(0x27)];return mockStorage[_0x2f3498]={'username':_0x543556,'password':_0x1ececc},!![];}},safeResetGenericPassword=async _0x368c27=>{const _0x298abe={'EGjGy':function(_0x32d159){return _0x32d159();},'RnlgN':function(_0x2b658c,_0x562a20){return _0x2b658c===_0x562a20;},'siwJe':_0x158b(0xe),'pJfRy':_0x158b(0xf)};try{if(_0x298abe[_0x158b(0x2a)](isKeychainAvailable))return await Keychain[_0x158b(0x2b)](_0x368c27);else{const _0x345b2e=(_0x298abe[_0x158b(0x2c)](_0x368c27,null)||_0x368c27===void 0x0?void 0x0:_0x368c27['service'])||_0x298abe[_0x158b(0x2d)];return delete mockStorage[_0x345b2e],!![];}}catch(_0x3983b2){console[_0x158b(0xb)](_0x298abe[_0x158b(0x2e)],_0x3983b2);const _0x40c6a0=(_0x298abe[_0x158b(0x2c)](_0x368c27,null)||_0x368c27===void 0x0?void 0x0:_0x368c27[_0x158b(0x9)])||_0x298abe['siwJe'];return delete mockStorage[_0x40c6a0],!![];}};export const storeCredentials=async _0x451c6f=>{const _0x3111ee={'TbAmv':function(_0x3d9d52,_0xbc1a37){return _0x3d9d52===_0xbc1a37;},'XKERz':_0x158b(0x4),'ZeBfT':function(_0x27a0f9){return _0x27a0f9();},'gfjrl':function(_0x414ddc,_0x2ef42c){return _0x414ddc===_0x2ef42c;},'mQKvb':'Username\x20is\x20required\x20for\x20storing\x20credentials','iyvpb':function(_0x3c738b,_0x52367a){return _0x3c738b!==_0x52367a;},'RLpRH':'web','pjYUq':function(_0xf61cb6){return _0xf61cb6();},'zyZjv':function(_0x4a1eca,_0x22043e){return _0x4a1eca===_0x22043e;},'XxyFy':'MUSmy','SvDFj':function(_0x157628,_0x38029f,_0xea9f20,_0x3e79aa){return _0x157628(_0x38029f,_0xea9f20,_0x3e79aa);},'CmpmH':_0x158b(0x2f)};try{const _0x2f157f=await _0x3111ee[_0x158b(0x30)](getCredentials),_0x466323={..._0x2f157f,..._0x451c6f,'createdAt':(_0x3111ee[_0x158b(0x31)](_0x2f157f,null)||_0x3111ee[_0x158b(0x31)](_0x2f157f,void 0x0)?void 0x0:_0x2f157f['createdAt'])||Date[_0x158b(0x32)]()},_0x2ba683=_0x466323[_0x158b(0x33)];if(!_0x2ba683)throw new Error(_0x3111ee[_0x158b(0x34)]);const _0x2bd28a={'service':STORAGE_KEYS[_0x158b(0x35)]};if(_0x3111ee[_0x158b(0x36)](Platform['OS'],_0x3111ee[_0x158b(0x37)])&&_0x3111ee['pjYUq'](isKeychainAvailable)){if(_0x3111ee[_0x158b(0x38)](_0x3111ee[_0x158b(0x39)],_0x3111ee[_0x158b(0x39)]))_0x2bd28a[_0x158b(0x13)]=Keychain['ACCESS_CONTROL']['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x2bd28a[_0x158b(0x15)]=Keychain[_0x158b(0x3a)][_0x158b(0x16)];else return Keychain&&_0x3111ee[_0x158b(0x3b)](typeof Keychain[_0x158b(0x3)],_0x3111ee[_0x158b(0x3c)]);}return await _0x3111ee[_0x158b(0x3d)](safeSetGenericPassword,_0x2ba683,JSON[_0x158b(0x3e)](_0x466323),_0x2bd28a),!![];}catch(_0x26e293){return console[_0x158b(0x3f)](_0x3111ee[_0x158b(0x40)],_0x26e293),![];}};export const getCredentials=async()=>{const _0x615d7b={'ZonKu':function(_0x397bb0,_0xe64163){return _0x397bb0(_0xe64163);},'HRNQh':function(_0x44a1a1,_0x3d6394){return _0x44a1a1===_0x3d6394;},'bdBZZ':_0x158b(0x41),'XGHRL':_0x158b(0x42)};try{const _0x2a031f=await _0x615d7b[_0x158b(0x43)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x158b(0x35)]});if(_0x2a031f)return JSON[_0x158b(0x44)](_0x2a031f['password']);return null;}catch(_0x4867f0){if(_0x615d7b[_0x158b(0x45)](_0x615d7b['bdBZZ'],_0x615d7b[_0x158b(0x46)]))return console['error'](_0x615d7b[_0x158b(0x47)],_0x4867f0),null;else{const _0x5096e7=_0x319f3e[_0x158b(0x48)]()['toString'](0x24)['substring'](0x2,0xa);return'dev_'+_0x5096e7;}}};export const hasCredentials=async()=>{const _0x42409d={'wHZTs':function(_0xb5e219,_0x3a7dd2){return _0xb5e219(_0x3a7dd2);},'MjWHH':function(_0x5a76be,_0x262dca){return _0x5a76be===_0x262dca;},'DAbAL':'LYlMz','eZdqG':'Error\x20checking\x20credentials:'};try{const _0x1fe548=await _0x42409d['wHZTs'](safeGetGenericPassword,{'service':STORAGE_KEYS['credentials']});return!!_0x1fe548;}catch(_0x376827){if(_0x42409d['MjWHH']('kWuLh',_0x42409d[_0x158b(0x49)]))Keychain=_0x42409d[_0x158b(0x4a)](_0x201514,0x0);else return console[_0x158b(0x3f)](_0x42409d[_0x158b(0x4b)],_0x376827),![];}};export const deleteCredentials=async()=>{const _0x1e6fa8={'xjDuV':function(_0x2c18a6,_0x372ea3){return _0x2c18a6===_0x372ea3;},'fQPbl':_0x158b(0x4c),'AVdKH':_0x158b(0x4d),'DwRiZ':_0x158b(0x4e)};try{return await safeResetGenericPassword({'service':STORAGE_KEYS[_0x158b(0x35)]}),!![];}catch(_0x4f7fc7){return _0x1e6fa8['xjDuV'](_0x1e6fa8[_0x158b(0x4f)],_0x1e6fa8[_0x158b(0x50)])?!![]:(console[_0x158b(0x3f)](_0x1e6fa8[_0x158b(0x51)],_0x4f7fc7),![]);}};export const updateCredentials=async _0x195195=>{return storeCredentials(_0x195195);};function _0x158b(_0x477572,_0x158bf4){_0x477572=_0x477572-0x0;const _0x46faf8=_0x4775();let _0x477208=_0x46faf8[_0x477572];return _0x477208;}export const generateDeviceUsername=()=>{const _0x4ee374=Math[_0x158b(0x48)]()[_0x158b(0x52)](0x24)[_0x158b(0x53)](0x2,0xa);return _0x158b(0x54)+_0x4ee374;};function _0x4775(){const _0x410f32=['onairos_jwt_token','mock','PpYoD','getGenericPassword','function','rwuPA','BsIHB','LLQxq','QgoUt','service','HhrSV','warn','syLpQ','zkqtk','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','gNPhp','WPPgY','setGenericPassword','accessControl','ACCESS_CONTROL','accessible','WHEN_UNLOCKED','Wuxfq','nTEWC','oKztI','length','wwVew','Tcfff','indexOf','charAt','gFfsr','bIGqy','rtlyf','fromCharCode','TzOih','xVIjY','AlegS','vibWg','mnYgY','YUayd','tERdi','EGjGy','resetGenericPassword','RnlgN','siwJe','pJfRy','Error\x20storing\x20credentials:','ZeBfT','gfjrl','now','username','mQKvb','credentials','iyvpb','RLpRH','zyZjv','XxyFy','ACCESSIBLE','TbAmv','XKERz','SvDFj','stringify','error','CmpmH','qQlzL','Error\x20getting\x20credentials:','ZonKu','parse','HRNQh','bdBZZ','XGHRL','random','DAbAL','wHZTs','eZdqG','JkHfd','RCnOY','Error\x20deleting\x20credentials:','fQPbl','AVdKH','DwRiZ','toString','substring','dev_','Error\x20checking\x20credentials:','YawCw','qLOrx','Error\x20verifying\x20credentials:','htwru','oWNpY','AdPVD','zpTcq','rUHvC','QQJVR','bdFSG','ZFIyH','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','getItem','Username\x20is\x20required\x20for\x20storing\x20credentials','hSZDk','HliyC','PEWlr','🗑️\x20JWT\x20token\x20cleared','kmFnY','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','vPFSs','lVtym','removeItem','log','rQqLa','yffts','XVRwn','EPPlk','lWuIh','wxjPW','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','aGghG','wbPgw','Exfas','NpGvp','RoIiS','HIYRx','wYSUv','sJvJd','LAIfy','iaEsM','vggjx','DMDls','split','YsvZI','RxpsA','Wfmww','wEzUd','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','eFtIT','WfjBl','teBpe','UYZGD','HdiQx','BjGny','yIYZG','UjQUd','yegUa','GrMeY','AGEzb','HBMLV','exp','floor','ZFCvs','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:'];_0x4775=function(){return _0x410f32;};return _0x4775();}export const verifyCredentials=async _0xf3fc92=>{const _0x21fe8f={'rUHvC':_0x158b(0x55),'QQJVR':_0x158b(0x4e),'bdFSG':function(_0x342634,_0x24ec90){return _0x342634===_0x24ec90;},'htwru':function(_0x2cea3b,_0x11dbb6){return _0x2cea3b!==_0x11dbb6;},'oWNpY':'GlyPI','AdPVD':function(_0x10b438){return _0x10b438();},'zpTcq':_0x158b(0x56),'rortq':_0x158b(0x57),'ZFIyH':_0x158b(0x58)};try{if(_0x21fe8f[_0x158b(0x59)](_0x21fe8f[_0x158b(0x5a)],'VcSKk')){if(!_0x21fe8f[_0x158b(0x5b)](isKeychainAvailable))return _0x21fe8f[_0x158b(0x5c)]===_0x21fe8f[_0x158b(0x5c)]?!![]:(_0x6141d3[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x5d)],_0x3ec414),![]);return!![];}else return _0x1a3d09[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x5e)],_0x422d7e),![];}catch(_0x1a743d){if(_0x21fe8f['rortq']!==_0x158b(0x57)){_0x3e2724[_0x158b(0xb)]('Keychain\x20access\x20failed,\x20using\x20mock\x20storage',_0xfa33d0);const _0x5c7640=(_0x21fe8f[_0x158b(0x5f)](_0x223e75,null)||_0x470955===void 0x0?void 0x0:_0x357ee9[_0x158b(0x9)])||'default';return _0x530b5d[_0x5c7640]={'username':_0x4ec2a9,'password':_0x25ecdf},!![];}else return console[_0x158b(0x3f)](_0x21fe8f[_0x158b(0x60)],_0x1a743d),![];}};export const getJWT=async()=>{const _0x37809d={'mJCLJ':_0x158b(0x61)};try{const _0xd3fcb0=await AsyncStorage[_0x158b(0x62)](JWT_TOKEN_KEY);return _0xd3fcb0;}catch(_0x31d3e2){return console[_0x158b(0x3f)](_0x37809d['mJCLJ'],_0x31d3e2),null;}};export const hasJWT=async()=>{const _0x5105ce={'gBynR':_0x158b(0x63),'dRAdl':function(_0x4c1543,_0x3ce33d){return _0x4c1543!==_0x3ce33d;},'XaFNY':_0x158b(0x64),'HliyC':'❌\x20Failed\x20to\x20check\x20JWT\x20token:'};try{const _0x41ea00=await AsyncStorage['getItem'](JWT_TOKEN_KEY);return!!_0x41ea00;}catch(_0x2f5af3){if(_0x5105ce['dRAdl'](_0x158b(0x64),_0x5105ce['XaFNY']))throw new _0x1ec59f(_0x5105ce['gBynR']);else return console['error'](_0x5105ce[_0x158b(0x65)],_0x2f5af3),![];}};export const clearJWT=async()=>{const _0x363733={'lVtym':_0x158b(0x61),'agEgu':function(_0x1cce22,_0x4ccd6e){return _0x1cce22===_0x4ccd6e;},'EPPlk':function(_0x70be2c,_0x404e07){return _0x70be2c===_0x404e07;},'lWuIh':_0x158b(0xe),'yffts':function(_0x1db56d,_0x42a1b3){return _0x1db56d!==_0x42a1b3;},'vPFSs':_0x158b(0x66),'rQqLa':_0x158b(0x67),'XVRwn':_0x158b(0x68),'eCuFM':_0x158b(0x69)};try{return _0x363733['yffts'](_0x363733[_0x158b(0x6a)],_0x363733['vPFSs'])?(_0x4e36fe[_0x158b(0x3f)](_0x363733[_0x158b(0x6b)],_0x3c22ae),null):(await AsyncStorage[_0x158b(0x6c)](JWT_TOKEN_KEY),console[_0x158b(0x6d)](_0x363733[_0x158b(0x6e)]),!![]);}catch(_0x310d63){if(_0x363733[_0x158b(0x6f)](_0x363733[_0x158b(0x70)],'TZFPX'))return console[_0x158b(0x3f)](_0x363733['eCuFM'],_0x310d63),![];else{const _0x26420f=(_0x363733['agEgu'](_0x400cc0,null)||_0x363733[_0x158b(0x71)](_0x12c1dd,void 0x0)?void 0x0:_0x2e97fc[_0x158b(0x9)])||_0x363733[_0x158b(0x72)];return _0xf72976[_0x26420f]||null;}}};const base64Decode=_0x4c56bc=>{const _0x4a204f={'Exfas':'Error\x20storing\x20credentials:','DMxPx':function(_0x10af31,_0x6c4cc4){return _0x10af31%_0x6c4cc4;},'aGghG':function(_0x53a136,_0x4c0148){return _0x53a136===_0x4c0148;},'wbPgw':_0x158b(0x73),'fwJIl':_0x158b(0x74),'NpGvp':function(_0x56612c,_0x26e139){return _0x56612c<_0x26e139;},'RoIiS':function(_0x1f8459,_0x52c0a7){return _0x1f8459+_0x52c0a7;},'HIYRx':function(_0x1b88d0,_0x46d540){return _0x1b88d0|_0x46d540;},'wYSUv':function(_0x53a5b1,_0x53a8ab){return _0x53a5b1<<_0x53a8ab;},'sJvJd':function(_0x5e155b,_0x5839f4){return _0x5e155b&_0x5839f4;},'LAIfy':function(_0x47c997,_0x19ba05){return _0x47c997>>_0x19ba05;},'iaEsM':function(_0x3fee2f,_0x472661){return _0x3fee2f&_0x472661;},'vggjx':function(_0x4329e1,_0xcf19ac){return _0x4329e1!==_0xcf19ac;}};while(_0x4a204f['DMxPx'](_0x4c56bc[_0x158b(0x1a)],0x4)){if(_0x4a204f[_0x158b(0x75)](_0x4a204f[_0x158b(0x76)],_0x4a204f[_0x158b(0x76)]))_0x4c56bc+='=';else return _0x4f3545[_0x158b(0x3f)](_0x4a204f[_0x158b(0x77)],_0x4b75a5),![];}const _0x5afd5b=_0x4a204f['fwJIl'];let _0x18b730='';for(let _0x1f04ea=0x0;_0x4a204f[_0x158b(0x78)](_0x1f04ea,_0x4c56bc[_0x158b(0x1a)]);_0x1f04ea+=0x4){const _0x1c6645=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x1f04ea)),_0x538fd7=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x1f04ea+0x1)),_0x21661e=_0x5afd5b[_0x158b(0x1d)](_0x4c56bc[_0x158b(0x1e)](_0x4a204f[_0x158b(0x79)](_0x1f04ea,0x2))),_0x565c1b=_0x5afd5b['indexOf'](_0x4c56bc['charAt'](_0x4a204f[_0x158b(0x79)](_0x1f04ea,0x3))),_0x35e428=_0x4a204f[_0x158b(0x7a)](_0x4a204f['HIYRx'](_0x4a204f[_0x158b(0x7b)](_0x1c6645,0x12)|_0x4a204f[_0x158b(0x7b)](_0x538fd7,0xc),_0x21661e<<0x6),_0x565c1b);_0x18b730+=String['fromCharCode'](_0x4a204f[_0x158b(0x7c)](_0x4a204f[_0x158b(0x7d)](_0x35e428,0x10),0xff));if(_0x21661e!==0x40)_0x18b730+=String[_0x158b(0x22)](_0x4a204f[_0x158b(0x7e)](_0x4a204f[_0x158b(0x7d)](_0x35e428,0x8),0xff));if(_0x4a204f[_0x158b(0x7f)](_0x565c1b,0x40))_0x18b730+=String[_0x158b(0x22)](_0x35e428&0xff);}return _0x18b730;};export const getJWTPayload=async()=>{const _0x1af254={'RxpsA':function(_0x2f4da9,_0x4650a4){return _0x2f4da9===_0x4650a4;},'EbxeB':'❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','WSZWB':function(_0x4de2a7,_0x5bbc41){return _0x4de2a7===_0x5bbc41;},'eykIQ':_0x158b(0x80),'tzWJX':function(_0x39c215){return _0x39c215();},'YsvZI':function(_0x76ab53,_0x354c9f){return _0x76ab53(_0x354c9f);},'Wfmww':function(_0x452ebf,_0x966925){return _0x452ebf===_0x966925;},'RksQY':'EkHAi'};try{if(_0x1af254['WSZWB'](_0x1af254['eykIQ'],_0x158b(0x80))){const _0x3844ae=await _0x1af254['tzWJX'](getJWT);if(!_0x3844ae)return null;const _0x2a3883=_0x3844ae[_0x158b(0x81)]('.');if(_0x2a3883[_0x158b(0x1a)]!==0x3)return null;const _0x186e67=_0x1af254[_0x158b(0x82)](base64Decode,_0x2a3883[0x1]),_0x26da60=JSON[_0x158b(0x44)](_0x186e67);return _0x26da60;}else try{return Keychain&&_0x1af254[_0x158b(0x83)](typeof Keychain['getGenericPassword'],_0x158b(0x4));}catch(_0x34bd32){return![];}}catch(_0x46acc8){return _0x1af254[_0x158b(0x84)](_0x158b(0x85),_0x1af254['RksQY'])?(_0x133952[_0x158b(0x3f)](_0x1af254['EbxeB'],_0x7fcda0),!![]):(console[_0x158b(0x3f)](_0x158b(0x86),_0x46acc8),null);}};export const isJWTExpired=async()=>{const _0xe16f16={'HdiQx':function(_0x274561,_0x4b7ffc){return _0x274561+_0x4b7ffc;},'BjGny':function(_0x56d3ec,_0x5228ba){return _0x56d3ec+_0x5228ba;},'yIYZG':function(_0x3e5056,_0x5df878){return _0x3e5056|_0x5df878;},'UjQUd':function(_0x7073e7,_0x5abd7f){return _0x7073e7<<_0x5abd7f;},'yegUa':function(_0x3c4fdf,_0x3539ac){return _0x3c4fdf&_0x3539ac;},'GrMeY':function(_0x426849,_0x55da4a){return _0x426849>>_0x55da4a;},'AGEzb':function(_0x2bb89e,_0x1401b9){return _0x2bb89e!==_0x1401b9;},'llYjX':function(_0x215c8e,_0x4a306f){return _0x215c8e&_0x4a306f;},'UJLQu':function(_0x5e8983,_0xd06718){return _0x5e8983===_0xd06718;},'teBpe':_0x158b(0x87),'UYZGD':_0x158b(0x88),'HBMLV':function(_0x2ee90c){return _0x2ee90c();},'gXxsz':function(_0x5e5c81,_0x17339c){return _0x5e5c81/_0x17339c;},'ZFCvs':function(_0x3ff9f0,_0x9c7432){return _0x3ff9f0<_0x9c7432;}};try{if(_0xe16f16['UJLQu'](_0xe16f16[_0x158b(0x89)],_0xe16f16[_0x158b(0x8a)])){const _0x5c5921=_0x53903c['indexOf'](_0x3babcc[_0x158b(0x1e)](_0x3e3609)),_0x7ed1fa=_0x229cf2[_0x158b(0x1d)](_0x3568c8[_0x158b(0x1e)](_0xe16f16[_0x158b(0x8b)](_0x38fedf,0x1))),_0x124698=_0x1ad36d['indexOf'](_0x5ca334[_0x158b(0x1e)](_0xe16f16['HdiQx'](_0x184b88,0x2))),_0x203c46=_0x85546b[_0x158b(0x1d)](_0x35bf6[_0x158b(0x1e)](_0xe16f16[_0x158b(0x8c)](_0x1dd9f2,0x3))),_0x129f92=_0xe16f16[_0x158b(0x8d)](_0xe16f16[_0x158b(0x8d)](_0x5c5921<<0x12,_0xe16f16[_0x158b(0x8e)](_0x7ed1fa,0xc)),_0x124698<<0x6)|_0x203c46;_0xf48298+=_0xe17e39[_0x158b(0x22)](_0xe16f16[_0x158b(0x8f)](_0xe16f16[_0x158b(0x90)](_0x129f92,0x10),0xff));if(_0xe16f16[_0x158b(0x91)](_0x124698,0x40))_0x196bda+=_0x2b7ba8[_0x158b(0x22)](_0x129f92>>0x8&0xff);if(_0xe16f16[_0x158b(0x91)](_0x203c46,0x40))_0x4e47ae+=_0x9ab295['fromCharCode'](_0xe16f16['llYjX'](_0x129f92,0xff));}else{const _0x12a020=await _0xe16f16[_0x158b(0x92)](getJWTPayload);if(!_0x12a020||!_0x12a020[_0x158b(0x93)])return!![];const _0x2750b3=Math[_0x158b(0x94)](_0xe16f16['gXxsz'](Date[_0x158b(0x32)](),0x3e8));return _0xe16f16[_0x158b(0x95)](_0x12a020['exp'],_0x2750b3);}}catch(_0x674844){return console['error'](_0x158b(0x96),_0x674844),!![];}};
|
|
7
|
+
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY=_0x4f71(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x57d1dc){console[_0x4f71(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x4f71(0x2)},'ACCESSIBLE':{'WHEN_UNLOCKED':'mock'},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x484eb6={'mERKm':'❌\x20Failed\x20to\x20clear\x20JWT\x20token:','PTytm':function(_0x5a9093,_0x5f48ed){return _0x5a9093!==_0x5f48ed;},'PBBZN':_0x4f71(0x3),'UeFdQ':function(_0x1e952b,_0xbab767){return _0x1e952b===_0xbab767;},'ryxeZ':_0x4f71(0x4)};try{return _0x484eb6[_0x4f71(0x5)](_0x484eb6[_0x4f71(0x6)],_0x484eb6[_0x4f71(0x6)])?(_0x26eb36[_0x4f71(0x7)](_0x484eb6[_0x4f71(0x8)],_0x4f2b47),![]):Keychain&&_0x484eb6[_0x4f71(0x9)](typeof Keychain[_0x4f71(0xa)],_0x484eb6[_0x4f71(0xb)]);}catch(_0x524bce){return![];}},safeGetGenericPassword=async _0x268916=>{const _0x22c236={'OOSkF':function(_0x244990,_0x4615fa){return _0x244990===_0x4615fa;},'WvAyx':_0x4f71(0xc),'cFDyU':'❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','DWTSl':function(_0x2fb0a4){return _0x2fb0a4();},'HLTMp':_0x4f71(0xd),'xCdOr':function(_0x32092a,_0x42fcf9){return _0x32092a===_0x42fcf9;},'JSnyn':'pdwfP','TdWaW':'LuBPn','oAsGH':'Keychain\x20access\x20failed,\x20using\x20mock\x20storage','XAYnH':function(_0x3b9611,_0x19c53a){return _0x3b9611===_0x19c53a;}};try{if(_0x22c236[_0x4f71(0xe)](isKeychainAvailable))return await Keychain[_0x4f71(0xa)](_0x268916);else{if(_0x22c236['HLTMp']===_0x22c236[_0x4f71(0xf)]){const _0x546678=(_0x22c236['xCdOr'](_0x268916,null)||_0x268916===void 0x0?void 0x0:_0x268916['service'])||_0x22c236[_0x4f71(0x10)];return mockStorage[_0x546678]||null;}else{const _0x29d53d=(_0x22c236[_0x4f71(0x11)](_0x4998b1,null)||_0x22c236[_0x4f71(0x11)](_0x514743,void 0x0)?void 0x0:_0x6acb23[_0x4f71(0x12)])||_0x22c236[_0x4f71(0x10)];return _0x16c2a1[_0x29d53d]||null;}}}catch(_0x549c7f){if(_0x22c236['OOSkF'](_0x22c236['JSnyn'],_0x22c236['TdWaW']))return _0x44661a[_0x4f71(0x7)](_0x22c236[_0x4f71(0x13)],_0x522d8d),null;else{console[_0x4f71(0x1)](_0x22c236[_0x4f71(0x14)],_0x549c7f);const _0x4a84c8=(_0x22c236[_0x4f71(0x15)](_0x268916,null)||_0x268916===void 0x0?void 0x0:_0x268916['service'])||_0x22c236['WvAyx'];return mockStorage[_0x4a84c8]||null;}}},safeSetGenericPassword=async(_0x58b242,_0x40dac2,_0x44fa9f)=>{const _0x126457={'auALY':function(_0x14fed0,_0x39856d){return _0x14fed0===_0x39856d;},'Nvjum':'default','BrPKx':function(_0x485c67,_0x46c680){return _0x485c67===_0x46c680;},'IvDCx':function(_0x1cb5f3){return _0x1cb5f3();},'iFVaC':function(_0x85cd04,_0x3920b9){return _0x85cd04===_0x3920b9;},'SgRbm':_0x4f71(0x16),'Zhclz':function(_0x7c94be,_0x3c1897){return _0x7c94be===_0x3c1897;}};try{if(_0x126457[_0x4f71(0x17)](_0x4f71(0x18),_0x4f71(0x18))){if(_0x126457[_0x4f71(0x19)](isKeychainAvailable))return await Keychain['setGenericPassword'](_0x58b242,_0x40dac2,_0x44fa9f);else{const _0x2f6c13=(_0x126457[_0x4f71(0x1a)](_0x44fa9f,null)||_0x44fa9f===void 0x0?void 0x0:_0x44fa9f[_0x4f71(0x12)])||_0x126457[_0x4f71(0x1b)];return mockStorage[_0x2f6c13]={'username':_0x58b242,'password':_0x40dac2},!![];}}else{const _0x2eeb3f=(_0x126457[_0x4f71(0x1c)](_0x3e2272,null)||_0xd42695===void 0x0?void 0x0:_0xc13429['service'])||_0x126457[_0x4f71(0x1b)];return _0x4c6c06[_0x2eeb3f]={'username':_0x36628a,'password':_0x2b9c64},!![];}}catch(_0x121e00){console['warn'](_0x126457[_0x4f71(0x1d)],_0x121e00);const _0x4f0530=(_0x126457[_0x4f71(0x17)](_0x44fa9f,null)||_0x126457[_0x4f71(0x1e)](_0x44fa9f,void 0x0)?void 0x0:_0x44fa9f[_0x4f71(0x12)])||_0x126457[_0x4f71(0x1b)];return mockStorage[_0x4f0530]={'username':_0x58b242,'password':_0x40dac2},!![];}},safeResetGenericPassword=async _0xfdd1ac=>{const _0x58221b={'xXGUr':'function','iHnpr':_0x4f71(0x16),'PKLaS':function(_0x5bef2d,_0x3b3b8e){return _0x5bef2d===_0x3b3b8e;},'MdFOc':_0x4f71(0xc),'vMhol':function(_0x30ca6c,_0x4cbf8b){return _0x30ca6c%_0x4cbf8b;},'NvYun':'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','TTyRw':function(_0x5c5b07,_0x4ad6b2){return _0x5c5b07<_0x4ad6b2;},'MQktU':function(_0xabce2c,_0x2ce66e){return _0xabce2c+_0x2ce66e;},'CXANf':function(_0x20c4aa,_0x4e8db8){return _0x20c4aa|_0x4e8db8;},'hNJtD':function(_0x167917,_0xad3df0){return _0x167917|_0xad3df0;},'KAygV':function(_0x283dd6,_0x111d9b){return _0x283dd6<<_0x111d9b;},'mrfLg':function(_0x693594,_0x2510c7){return _0x693594<<_0x2510c7;},'MgzTs':function(_0x42ac0a,_0x4fa12a){return _0x42ac0a&_0x4fa12a;},'bswGD':function(_0x27e350,_0x234f1c){return _0x27e350!==_0x234f1c;},'pWitW':function(_0x232cf7,_0x48aa64){return _0x232cf7>>_0x48aa64;},'HsDKQ':function(_0x3f85c0,_0x50a87f){return _0x3f85c0!==_0x50a87f;},'vzNzF':function(_0x243e58,_0x4ffb21){return _0x243e58&_0x4ffb21;},'QMIeh':function(_0x10a439,_0xe83aea){return _0x10a439+_0xe83aea;},'zdwJe':function(_0x29927f,_0x24cd8a){return _0x29927f+_0x24cd8a;},'jdKTD':function(_0x26594d,_0x5c53bc){return _0x26594d|_0x5c53bc;},'Tjhhj':function(_0x375a8a,_0x5b654e){return _0x375a8a|_0x5b654e;},'YUrHL':function(_0x1348af,_0x3ce2a9){return _0x1348af<<_0x3ce2a9;},'aONPg':function(_0x2209d9,_0x39afbb){return _0x2209d9&_0x39afbb;},'xOdwz':function(_0x5de48a,_0x3ed5e0){return _0x5de48a&_0x3ed5e0;},'hvGsL':function(_0x188a35,_0x59a946){return _0x188a35===_0x59a946;},'ETJWz':'srblN','jGsJx':function(_0xa7e1f8){return _0xa7e1f8();},'qKAGr':_0x4f71(0x1f),'hdOJw':_0x4f71(0x20),'DMSAf':function(_0x5b80ec,_0x1d0be4){return _0x5b80ec===_0x1d0be4;},'rcDZu':'LGgjl','FxDrn':function(_0x310879,_0x98600a){return _0x310879===_0x98600a;},'yILdt':_0x4f71(0x21),'HCNfv':function(_0x32f9b9,_0x199c34){return _0x32f9b9===_0x199c34;}};try{if(_0x58221b[_0x4f71(0x22)]('srblN',_0x58221b[_0x4f71(0x23)])){if(_0x58221b['jGsJx'](isKeychainAvailable))return _0x58221b['bswGD'](_0x58221b[_0x4f71(0x24)],_0x58221b['hdOJw'])?await Keychain['resetGenericPassword'](_0xfdd1ac):Keychain&&typeof Keychain[_0x4f71(0xa)]===_0x58221b[_0x4f71(0x25)];else{if(_0x58221b[_0x4f71(0x26)](_0x58221b[_0x4f71(0x27)],'PNwGY')){_0x11cb64[_0x4f71(0x1)](_0x58221b[_0x4f71(0x28)],_0xe8fa8);const _0x5b1ab4=(_0xdcedb6===null||_0x58221b[_0x4f71(0x29)](_0x1aaebc,void 0x0)?void 0x0:_0x1863ff[_0x4f71(0x12)])||_0x58221b[_0x4f71(0x2a)];return delete _0x3fb274[_0x5b1ab4],!![];}else{const _0x53d13a=(_0x58221b[_0x4f71(0x22)](_0xfdd1ac,null)||_0x58221b[_0x4f71(0x26)](_0xfdd1ac,void 0x0)?void 0x0:_0xfdd1ac[_0x4f71(0x12)])||_0x58221b['MdFOc'];return delete mockStorage[_0x53d13a],!![];}}}else{while(_0x58221b[_0x4f71(0x2b)](_0x8f0afe[_0x4f71(0x2c)],0x4)){_0x14c5fa+='=';}const _0x1ff2a4=_0x58221b['NvYun'];let _0x23bbad='';for(let _0x1aec13=0x0;_0x58221b[_0x4f71(0x2d)](_0x1aec13,_0x59d826[_0x4f71(0x2c)]);_0x1aec13+=0x4){const _0x94c6aa=_0x1ff2a4[_0x4f71(0x2e)](_0x38abfc[_0x4f71(0x2f)](_0x1aec13)),_0x3f46db=_0x1ff2a4[_0x4f71(0x2e)](_0x6116f6[_0x4f71(0x2f)](_0x58221b[_0x4f71(0x30)](_0x1aec13,0x1))),_0x485879=_0x1ff2a4[_0x4f71(0x2e)](_0x4b97e6[_0x4f71(0x2f)](_0x58221b[_0x4f71(0x30)](_0x1aec13,0x2))),_0x191abf=_0x1ff2a4[_0x4f71(0x2e)](_0x1552e9[_0x4f71(0x2f)](_0x58221b['MQktU'](_0x1aec13,0x3))),_0x49144a=_0x58221b[_0x4f71(0x31)](_0x58221b[_0x4f71(0x31)](_0x58221b['hNJtD'](_0x58221b[_0x4f71(0x32)](_0x94c6aa,0x12),_0x58221b['KAygV'](_0x3f46db,0xc)),_0x58221b[_0x4f71(0x33)](_0x485879,0x6)),_0x191abf);_0x23bbad+=_0x1f7001[_0x4f71(0x34)](_0x58221b[_0x4f71(0x35)](_0x49144a>>0x10,0xff));if(_0x58221b['bswGD'](_0x485879,0x40))_0x23bbad+=_0x57f8a1[_0x4f71(0x34)](_0x58221b[_0x4f71(0x35)](_0x58221b[_0x4f71(0x36)](_0x49144a,0x8),0xff));if(_0x58221b['HsDKQ'](_0x191abf,0x40))_0x23bbad+=_0x5030f6[_0x4f71(0x34)](_0x58221b[_0x4f71(0x37)](_0x49144a,0xff));}return _0x23bbad;}}catch(_0x206594){if(_0x58221b['FxDrn'](_0x4f71(0x21),_0x58221b['yILdt'])){console[_0x4f71(0x1)](_0x4f71(0x16),_0x206594);const _0x5cbb8b=(_0x58221b[_0x4f71(0x29)](_0xfdd1ac,null)||_0x58221b[_0x4f71(0x38)](_0xfdd1ac,void 0x0)?void 0x0:_0xfdd1ac['service'])||_0x4f71(0xc);return delete mockStorage[_0x5cbb8b],!![];}else{const _0x1a9082=_0x46e7ee['indexOf'](_0x399768[_0x4f71(0x2f)](_0x5dabc7)),_0x18eb78=_0x5a015b[_0x4f71(0x2e)](_0x5f4678[_0x4f71(0x2f)](_0x58221b[_0x4f71(0x39)](_0x335f24,0x1))),_0xb568f5=_0x26783a['indexOf'](_0x4dcccb[_0x4f71(0x2f)](_0x58221b[_0x4f71(0x30)](_0x21d7b8,0x2))),_0x248198=_0x546d47[_0x4f71(0x2e)](_0x519f09[_0x4f71(0x2f)](_0x58221b[_0x4f71(0x3a)](_0xfb5fe2,0x3))),_0x2a5e75=_0x58221b[_0x4f71(0x3b)](_0x58221b[_0x4f71(0x31)](_0x58221b[_0x4f71(0x3c)](_0x1a9082<<0x12,_0x58221b[_0x4f71(0x33)](_0x18eb78,0xc)),_0x58221b[_0x4f71(0x3d)](_0xb568f5,0x6)),_0x248198);_0x5aeab8+=_0x382eab[_0x4f71(0x34)](_0x58221b['aONPg'](_0x2a5e75>>0x10,0xff));if(_0x58221b[_0x4f71(0x3e)](_0xb568f5,0x40))_0x22e968+=_0x4dcc6e[_0x4f71(0x34)](_0x58221b[_0x4f71(0x3f)](_0x58221b[_0x4f71(0x36)](_0x2a5e75,0x8),0xff));if(_0x58221b[_0x4f71(0x40)](_0x248198,0x40))_0x3efe8d+=_0x51f1fa[_0x4f71(0x34)](_0x2a5e75&0xff);}}};export const storeCredentials=async _0x15ccc0=>{const _0x141b60={'hkVQF':function(_0x1f22eb,_0x1457b1){return _0x1f22eb(_0x1457b1);},'vADdH':function(_0x48b9fb){return _0x48b9fb();},'FgGaK':function(_0x39b373,_0x3d915c){return _0x39b373===_0x3d915c;},'fyHaC':function(_0x310e89,_0x332a19){return _0x310e89===_0x332a19;},'ZHEyA':_0x4f71(0x41),'KQSuW':'Username\x20is\x20required\x20for\x20storing\x20credentials','REJdw':_0x4f71(0x42),'hgTAx':function(_0x413612){return _0x413612();},'TnzqA':_0x4f71(0x43),'jmpHT':_0x4f71(0x44),'dnlRT':function(_0x2736d2,_0x30c364,_0x27e6ac,_0x1ad43a){return _0x2736d2(_0x30c364,_0x27e6ac,_0x1ad43a);},'mjJUQ':function(_0x3124dc,_0x13b5b1){return _0x3124dc!==_0x13b5b1;},'InWjd':'jafuy','orfsr':_0x4f71(0x45)};try{const _0x241661=await _0x141b60[_0x4f71(0x46)](getCredentials),_0x4c07f5={..._0x241661,..._0x15ccc0,'createdAt':(_0x241661===null||_0x141b60['FgGaK'](_0x241661,void 0x0)?void 0x0:_0x241661['createdAt'])||Date[_0x4f71(0x47)]()},_0x193c8f=_0x4c07f5['username'];if(!_0x193c8f){if(_0x141b60[_0x4f71(0x48)](_0x141b60['ZHEyA'],'qXscC')){const _0x50fa8=_0xae9d8b[_0x4f71(0x49)]()[_0x4f71(0x4a)](0x24)[_0x4f71(0x4b)](0x2,0xa);return _0x4f71(0x4c)+_0x50fa8;}else throw new Error(_0x141b60[_0x4f71(0x4d)]);}const _0x4de2ad={'service':STORAGE_KEYS['credentials']};if(Platform['OS']!==_0x141b60['REJdw']&&_0x141b60[_0x4f71(0x4e)](isKeychainAvailable)){if(_0x141b60[_0x4f71(0x4f)]===_0x141b60[_0x4f71(0x50)])return!![];else _0x4de2ad[_0x4f71(0x51)]=Keychain[_0x4f71(0x52)]['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x4de2ad['accessible']=Keychain[_0x4f71(0x53)][_0x4f71(0x54)];}return await _0x141b60['dnlRT'](safeSetGenericPassword,_0x193c8f,JSON[_0x4f71(0x55)](_0x4c07f5),_0x4de2ad),!![];}catch(_0x3bc3fb){return _0x141b60[_0x4f71(0x56)](_0x4f71(0x57),_0x141b60[_0x4f71(0x58)])?(console[_0x4f71(0x7)](_0x141b60[_0x4f71(0x59)],_0x3bc3fb),![]):_0x141b60['hkVQF'](_0x3d1a28,_0x437de0);}};export const getCredentials=async()=>{const _0x5d4c82={'namRd':function(_0x5d4eaa,_0x551b1a){return _0x5d4eaa===_0x551b1a;},'WqdiC':_0x4f71(0x5a),'roEeU':'kjKLl','HGUdA':function(_0x145059,_0x2b5939){return _0x145059(_0x2b5939);},'ljsnr':_0x4f71(0x5b)};try{if(_0x5d4c82[_0x4f71(0x5c)](_0x5d4c82[_0x4f71(0x5d)],_0x5d4c82[_0x4f71(0x5e)]))_0x568926[_0x4f71(0x51)]=Keychain['ACCESS_CONTROL'][_0x4f71(0x5f)],_0x370fb1['accessible']=Keychain[_0x4f71(0x53)]['WHEN_UNLOCKED'];else{const _0x34965d=await _0x5d4c82[_0x4f71(0x60)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x4f71(0x61)]});if(_0x34965d)return JSON[_0x4f71(0x62)](_0x34965d['password']);return null;}}catch(_0x23447e){return console[_0x4f71(0x7)](_0x5d4c82['ljsnr'],_0x23447e),null;}};export const hasCredentials=async()=>{const _0x44d2af={'iSpWq':function(_0x14831f,_0x59fce4){return _0x14831f(_0x59fce4);},'TMBco':'Error\x20checking\x20credentials:'};try{const _0x3f726b=await _0x44d2af[_0x4f71(0x63)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x4f71(0x61)]});return!!_0x3f726b;}catch(_0x41251a){return console['error'](_0x44d2af[_0x4f71(0x64)],_0x41251a),![];}};function _0x4f71(_0x329a38,_0x4f7171){_0x329a38=_0x329a38-0x0;const _0x43c0a=_0x329a();let _0x597fb4=_0x43c0a[_0x329a38];return _0x597fb4;}export const deleteCredentials=async()=>{const _0x1b3aab={'BMSiV':_0x4f71(0x45),'pWFlN':function(_0x508787,_0x509b18){return _0x508787!==_0x509b18;},'aBPkz':'larDX','fMvss':_0x4f71(0x65),'LNswP':function(_0x7284f2,_0x387333){return _0x7284f2(_0x387333);},'DgbCQ':_0x4f71(0x66)};try{return _0x1b3aab['pWFlN'](_0x1b3aab[_0x4f71(0x67)],_0x1b3aab[_0x4f71(0x68)])?(await _0x1b3aab['LNswP'](safeResetGenericPassword,{'service':STORAGE_KEYS[_0x4f71(0x61)]}),!![]):(_0x24a068[_0x4f71(0x7)](_0x1b3aab[_0x4f71(0x69)],_0x22af1c),![]);}catch(_0x2a8590){return console[_0x4f71(0x7)](_0x1b3aab[_0x4f71(0x6a)],_0x2a8590),![];}};export const updateCredentials=async _0x3db6f5=>{return storeCredentials(_0x3db6f5);};export const generateDeviceUsername=()=>{const _0x4292bb=Math[_0x4f71(0x49)]()['toString'](0x24)[_0x4f71(0x4b)](0x2,0xa);return'dev_'+_0x4292bb;};export const verifyCredentials=async _0x1a3ad6=>{const _0x2106c3={'FnUQY':function(_0x255651){return _0x255651();}};try{if(!_0x2106c3['FnUQY'](isKeychainAvailable))return!![];return!![];}catch(_0x532bed){return console[_0x4f71(0x7)](_0x4f71(0x6b),_0x532bed),![];}};export const getJWT=async()=>{const _0x32b90e={'cxsdD':function(_0x10742d,_0x18ed90){return _0x10742d===_0x18ed90;},'FtbeR':function(_0x123b7a,_0xfc3175){return _0x123b7a===_0xfc3175;},'ODOaD':_0x4f71(0x6c)};try{const _0x3a321a=await AsyncStorage[_0x4f71(0x6d)](JWT_TOKEN_KEY);return _0x3a321a;}catch(_0x207040){if(_0x32b90e[_0x4f71(0x6e)](_0x32b90e[_0x4f71(0x6f)],_0x32b90e[_0x4f71(0x6f)]))return console[_0x4f71(0x7)](_0x4f71(0x70),_0x207040),null;else{_0x31d308[_0x4f71(0x1)](_0x4f71(0x16),_0x5f5d37);const _0xf2f1bc=(_0x32b90e[_0x4f71(0x71)](_0x1a9a12,null)||_0x32b90e['FtbeR'](_0x4c008f,void 0x0)?void 0x0:_0x11b365[_0x4f71(0x12)])||_0x4f71(0xc);return _0x17ed5f[_0xf2f1bc]||null;}}};function _0x329a(){const _0x1b6a05=['onairos_jwt_token','warn','mock','DBZTx','function','PTytm','PBBZN','error','mERKm','UeFdQ','getGenericPassword','ryxeZ','default','lxuQY','DWTSl','HLTMp','WvAyx','OOSkF','service','cFDyU','oAsGH','XAYnH','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','BrPKx','lFcPl','IvDCx','iFVaC','Nvjum','auALY','SgRbm','Zhclz','uqxWn','buVWx','cucdm','hvGsL','ETJWz','qKAGr','xXGUr','DMSAf','rcDZu','iHnpr','PKLaS','MdFOc','vMhol','length','TTyRw','indexOf','charAt','MQktU','CXANf','KAygV','mrfLg','fromCharCode','MgzTs','pWitW','vzNzF','HCNfv','QMIeh','zdwJe','jdKTD','Tjhhj','YUrHL','HsDKQ','xOdwz','bswGD','tpmvN','web','qPUKJ','ZDEAy','Error\x20storing\x20credentials:','vADdH','now','fyHaC','random','toString','substring','dev_','KQSuW','hgTAx','TnzqA','jmpHT','accessControl','ACCESS_CONTROL','ACCESSIBLE','WHEN_UNLOCKED','stringify','mjJUQ','nUnhm','InWjd','orfsr','aQQTV','Error\x20getting\x20credentials:','namRd','WqdiC','roEeU','BIOMETRY_ANY_OR_DEVICE_PASSCODE','HGUdA','credentials','parse','iSpWq','TMBco','SBCCl','Error\x20deleting\x20credentials:','aBPkz','fMvss','BMSiV','DgbCQ','Error\x20verifying\x20credentials:','PZyFM','getItem','FtbeR','ODOaD','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','cxsdD','❌\x20Failed\x20to\x20check\x20JWT\x20token:','sFKqT','zGRRM','CZeen','🗑️\x20JWT\x20token\x20cleared','DPKDF','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','removeItem','oGwXB','SZOJa','cZOSI','oMPhs','eCipn','sMEpG','iTXCP','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','FxUrV','KRFlZ','GnasO','sQOOr','lBKhd','xFEFh','Flyft','xzTgP','mSFoB','split','qKrBa','CroAr','EDNzf','UFWzc','zReaq','kkJZj','UzWnO','pssGo','floor','oMlGd','vQQdM','OpFlX','BZcpa'];_0x329a=function(){return _0x1b6a05;};return _0x329a();}export const hasJWT=async()=>{const _0x3212dc={'zGRRM':_0x4f71(0x2),'sFKqT':'bijEU','CZeen':_0x4f71(0x72)};try{if(_0x3212dc[_0x4f71(0x73)]!==_0x3212dc[_0x4f71(0x73)])_0x31a0c1[_0x4f71(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x3212dc[_0x4f71(0x74)]},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x4f71(0x2)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};else{const _0x5cbda1=await AsyncStorage[_0x4f71(0x6d)](JWT_TOKEN_KEY);return!!_0x5cbda1;}}catch(_0x19ba19){return console[_0x4f71(0x7)](_0x3212dc[_0x4f71(0x75)],_0x19ba19),![];}};export const clearJWT=async()=>{const _0x590f17={'PZuXI':_0x4f71(0x70),'oGwXB':_0x4f71(0x76),'SZOJa':function(_0x541001,_0x4701bb){return _0x541001===_0x4701bb;},'cZOSI':_0x4f71(0x77),'oMPhs':_0x4f71(0x78)};try{return await AsyncStorage[_0x4f71(0x79)](JWT_TOKEN_KEY),console['log'](_0x590f17[_0x4f71(0x7a)]),!![];}catch(_0x3d13d7){return _0x590f17[_0x4f71(0x7b)](_0x590f17[_0x4f71(0x7c)],_0x590f17[_0x4f71(0x7c)])?(console[_0x4f71(0x7)](_0x590f17[_0x4f71(0x7d)],_0x3d13d7),![]):(_0x171466[_0x4f71(0x7)](_0x590f17['PZuXI'],_0x5ab1ce),null);}};const base64Decode=_0x546342=>{const _0x10993f={'iTXCP':'Username\x20is\x20required\x20for\x20storing\x20credentials','eCipn':'cNblS','FxUrV':function(_0x2a42ed,_0x2ea027){return _0x2a42ed<_0x2ea027;},'KRFlZ':function(_0x558a0f,_0x14b4c3){return _0x558a0f+_0x14b4c3;},'GnasO':function(_0x31c201,_0x148b8a){return _0x31c201|_0x148b8a;},'sQOOr':function(_0x41d31f,_0x1aed12){return _0x41d31f|_0x1aed12;},'lBKhd':function(_0x34c8fb,_0x388c8e){return _0x34c8fb|_0x388c8e;},'xFEFh':function(_0x3734c6,_0x552181){return _0x3734c6<<_0x552181;},'Flyft':function(_0x546e77,_0x62eae0){return _0x546e77<<_0x62eae0;},'osfDd':function(_0x477553,_0x944d3e){return _0x477553&_0x944d3e;},'xzTgP':function(_0x3cdbf3,_0x4687e9){return _0x3cdbf3!==_0x4687e9;},'mSFoB':function(_0x412f87,_0x15113f){return _0x412f87&_0x15113f;}};while(_0x546342[_0x4f71(0x2c)]%0x4){if(_0x10993f[_0x4f71(0x7e)]!==_0x4f71(0x7f))_0x546342+='=';else throw new _0x3ed4bb(_0x10993f[_0x4f71(0x80)]);}const _0x3b7f10=_0x4f71(0x81);let _0x1b30af='';for(let _0x2dc537=0x0;_0x10993f[_0x4f71(0x82)](_0x2dc537,_0x546342[_0x4f71(0x2c)]);_0x2dc537+=0x4){const _0x470cf9=_0x3b7f10[_0x4f71(0x2e)](_0x546342['charAt'](_0x2dc537)),_0x23641d=_0x3b7f10[_0x4f71(0x2e)](_0x546342['charAt'](_0x2dc537+0x1)),_0x135cd7=_0x3b7f10[_0x4f71(0x2e)](_0x546342[_0x4f71(0x2f)](_0x10993f[_0x4f71(0x83)](_0x2dc537,0x2))),_0x2ad873=_0x3b7f10['indexOf'](_0x546342[_0x4f71(0x2f)](_0x2dc537+0x3)),_0x3134b6=_0x10993f[_0x4f71(0x84)](_0x10993f[_0x4f71(0x85)](_0x10993f[_0x4f71(0x86)](_0x10993f[_0x4f71(0x87)](_0x470cf9,0x12),_0x10993f[_0x4f71(0x88)](_0x23641d,0xc)),_0x10993f[_0x4f71(0x88)](_0x135cd7,0x6)),_0x2ad873);_0x1b30af+=String[_0x4f71(0x34)](_0x10993f['osfDd'](_0x3134b6>>0x10,0xff));if(_0x10993f[_0x4f71(0x89)](_0x135cd7,0x40))_0x1b30af+=String[_0x4f71(0x34)](_0x3134b6>>0x8&0xff);if(_0x2ad873!==0x40)_0x1b30af+=String[_0x4f71(0x34)](_0x10993f[_0x4f71(0x8a)](_0x3134b6,0xff));}return _0x1b30af;};export const getJWTPayload=async()=>{const _0x4272f7={'IjwNR':function(_0x447cfa){return _0x447cfa();},'qKrBa':function(_0x4e0af8,_0x13cd66){return _0x4e0af8!==_0x13cd66;},'CroAr':function(_0x1f9793,_0x14b492){return _0x1f9793(_0x14b492);},'EDNzf':'❌\x20Failed\x20to\x20decode\x20JWT\x20payload:'};try{const _0x5cb063=await _0x4272f7['IjwNR'](getJWT);if(!_0x5cb063)return null;const _0x525330=_0x5cb063[_0x4f71(0x8b)]('.');if(_0x4272f7[_0x4f71(0x8c)](_0x525330['length'],0x3))return null;const _0x2e2fb0=_0x4272f7[_0x4f71(0x8d)](base64Decode,_0x525330[0x1]),_0x2d9488=JSON[_0x4f71(0x62)](_0x2e2fb0);return _0x2d9488;}catch(_0x53202f){return console['error'](_0x4272f7[_0x4f71(0x8e)],_0x53202f),null;}};export const isJWTExpired=async()=>{const _0x5bd8b9={'pssGo':_0x4f71(0x72),'BZcpa':_0x4f71(0x66),'RcmxJ':_0x4f71(0x8f),'UzWnO':_0x4f71(0x90),'oMlGd':function(_0x55bf00,_0xb4d1b1){return _0x55bf00/_0xb4d1b1;},'ZIcXb':function(_0x177ffb,_0x2a4757){return _0x177ffb<_0x2a4757;},'aJbwZ':function(_0x47e361,_0x4f06fb){return _0x47e361!==_0x4f06fb;},'vQQdM':'BaBwn','OpFlX':_0x4f71(0x91)};try{if(_0x5bd8b9['RcmxJ']===_0x5bd8b9[_0x4f71(0x92)])return _0x57e8ce[_0x4f71(0x7)](_0x5bd8b9[_0x4f71(0x93)],_0x325872),![];else{const _0x549c40=await getJWTPayload();if(!_0x549c40||!_0x549c40['exp'])return!![];const _0xee5ac7=Math[_0x4f71(0x94)](_0x5bd8b9[_0x4f71(0x95)](Date[_0x4f71(0x47)](),0x3e8));return _0x5bd8b9['ZIcXb'](_0x549c40['exp'],_0xee5ac7);}}catch(_0x5357fb){return _0x5bd8b9['aJbwZ'](_0x5bd8b9[_0x4f71(0x96)],_0x5bd8b9[_0x4f71(0x97)])?(console[_0x4f71(0x7)]('❌\x20Failed\x20to\x20check\x20JWT\x20expiration:',_0x5357fb),!![]):(_0x22a21b[_0x4f71(0x7)](_0x5bd8b9[_0x4f71(0x98)],_0x40dac5),![]);}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0x2186(0x0);export const CHATGPT_EXPORT_SCRIPT=_0x2186(0x1);export const CHATGPT_SUCCESS_SCRIPT=_0x2186(0x2);function _0x2186(_0x322809,_0x21862e){_0x322809=_0x322809-0x0;const _0x2502a4=_0x3228();let _0x96ead9=_0x2502a4[_0x322809];return _0x96ead9;}export const CHATGPT_ERROR_SCRIPT=_0x2186(0x3);export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x2186(0x4);function _0x3228(){const _0x4c5d91=['\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a'];_0x3228=function(){return _0x4c5d91;};return _0x3228();}
|
|
1
|
+
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0x56f7(0x0);export const CHATGPT_EXPORT_SCRIPT=_0x56f7(0x1);function _0x45bc(){const _0x39a795=['\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existing\x20=\x20document.getElementById(\x27onairos-consent-overlay\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(existing)\x20existing.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20overlay\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.id\x20=\x20\x27onairos-consent-overlay\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20fixed;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20left:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(0,\x200,\x200,\x200.7);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20z-index:\x20999999;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20-apple-system,\x20BlinkMacSystemFont,\x20\x27Segoe\x20UI\x27,\x20Roboto,\x20sans-serif;\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20popup\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.style.cssText\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20400px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20width:\x2090%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x2020px\x2060px\x20rgba(0,\x200,\x200,\x200.3);\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20popup.innerHTML\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2048px;\x20margin-bottom:\x2016px;\x22>🤖</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20style=\x22margin:\x200\x200\x2012px\x200;\x20font-size:\x2024px;\x20color:\x20#1a1a1a;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Export\x20Conversations?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin:\x200\x200\x2024px\x200;\x20color:\x20#666;\x20font-size:\x2016px;\x20line-height:\x201.5;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Allow\x20Onairos\x20to\x20export\x20your\x20top\x2010\x20ChatGPT\x20conversations\x20for\x20analysis?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20gap:\x2012px;\x20justify-content:\x20center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-deny\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x202px\x20solid\x20#e0e0e0;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20#666;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Deny</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20id=\x22onairos-allow\x22\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20#667eea\x200%,\x20#764ba2\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20white;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>Allow</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20overlay.appendChild(popup);\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.body.appendChild(overlay);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-deny\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overlay.remove();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27denied\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).onclick\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).innerHTML\x20=\x20\x27⏳\x20Starting...\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20document.getElementById(\x27onairos-allow\x27).disabled\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27allowed\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(()\x20=>\x20overlay.remove(),\x20500);\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CHATGPT_CONSENT\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20VERSION\x20CHECK:\x20This\x20confirms\x20new\x20code\x20is\x20running\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🔄\x20[CHATGPT]\x20Script\x20version:\x20SDK_V1\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27DEBUG_LOG\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20version:\x20SDK_V1\x20loaded\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!document.body)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Page\x20not\x20ready\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Use\x20chatgpt.com\x20as\x20iOS\x20does\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🚀\x20[CHATGPT]\x20Starting\x20extraction\x20(iOS-style\x20with\x20access\x20token)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x20(matches\x20iOS\x20fetchAccessToken)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x202,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20access\x20token\x20from\x20/api/auth/session...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Session\x20response\x20status:\x27,\x20sessionResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Got\x20accessToken:\x27,\x20accessToken\x20?\x20\x27YES\x20(len=\x27\x20+\x20accessToken.length\x20+\x20\x27)\x27\x20:\x20\x27NO\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20headers\x20matching\x20iOS\x20exactly\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27User-Agent\x27:\x20\x27Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2017_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Version/17.0\x20Mobile/15E148\x20Safari/604.1\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Start\x20BOTH\x20conversations\x20AND\x20memories\x20fetches\x20IN\x20PARALLEL\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_list\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x205,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20conversations\x20and\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Starting\x20PARALLEL\x20fetch\x20of\x20conversations\x20AND\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20memories\x20fetch\x20IMMEDIATELY\x20using\x20XMLHttpRequest\x20(more\x20compatible\x20than\x20fetch)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20memoriesPromise\x20=\x20new\x20Promise((resolve)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20xhr\x20=\x20new\x20XMLHttpRequest();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.open(\x27GET\x27,\x20baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20true);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.withCredentials\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Accept\x27,\x20\x27application/json\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.setRequestHeader(\x27Authorization\x27,\x20\x27Bearer\x20\x27\x20+\x20accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onload\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20status:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(xhr.status\x20>=\x20200\x20&&\x20xhr.status\x20<\x20300)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20JSON.parse(xhr.responseText);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20allKeys\x20=\x20Object.keys(data\x20||\x20{});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20response\x20keys:\x27,\x20allKeys);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(data);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(parseErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20parse\x20error:\x27,\x20parseErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20API\x20returned:\x27,\x20xhr.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.onerror\x20=\x20function()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20error\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20xhr.send();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20🧠\x20Memories\x20XHR\x20request\x20sent\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(xhrErr)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Memories\x20XHR\x20exception:\x27,\x20xhrErr.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolve(null);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Start\x20conversations\x20fetch\x20(in\x20parallel\x20with\x20memories)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Fetching\x20conversations\x20with\x20auth:\x27,\x20!!accessToken);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversations?limit=10\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Conversations\x20response:\x27,\x20listResponse.status);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!listResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20listResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20conversations\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20listData\x20=\x20await\x20listResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conversations\x20=\x20listData.items\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20Found\x27,\x20conversations.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(conversations.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Still\x20wait\x20for\x20memories\x20even\x20if\x20no\x20conversations\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20No\x20conversations,\x20waiting\x20for\x20memories...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesItemsCount\x20=\x20noConvMemoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20noConvMemoriesEntriesCount\x20=\x20noConvMemoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories:\x20noConvMemoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20noConvMemoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20noConvMemoriesEntriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Connected!\x20No\x20conversations\x20found.\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x203:\x20Fetch\x20each\x20conversation\x20(matches\x20iOS\x20fetchAllConversationDetails)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x200/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20userMessages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(let\x20i\x20=\x200;\x20i\x20<\x20conversations.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conv\x20=\x20conversations[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20progressPercent\x20=\x2010\x20+\x20((i\x20/\x20conversations.length)\x20*\x2080);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27EXPORT_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27processing_conversation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current:\x20i\x20+\x201,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total:\x20conversations.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20progress:\x20Math.round(progressPercent),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Processing\x20\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27\x20conversations\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20iOS\x20uses\x200.3s\x20delay\x20-\x20we\x20use\x200.3s\x20too\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20new\x20Promise(resolve\x20=>\x20setTimeout(resolve,\x20300));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/conversation/\x27\x20+\x20conv.id,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(detailResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20convData\x20=\x20await\x20detailResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20messages\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Extract\x20user\x20messages\x20from\x20mapping\x20(same\x20as\x20iOS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20nodeId\x20in\x20convData.mapping)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20convData.mapping[nodeId];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(node.message\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.author.role\x20===\x20\x27user\x27\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20part\x20of\x20node.message.content.parts)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(typeof\x20part\x20===\x20\x27string\x27\x20&&\x20part.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20messages.push(part.trim());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(messages.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20userMessages.push({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversation_id:\x20conv.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title:\x20conv.title\x20||\x20\x27Untitled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_messages:\x20messages\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[CHATGPT]\x20✅\x20Conversation\x27,\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20conversations.length\x20+\x20\x27:\x27,\x20conv.title,\x20\x27(\x27\x20+\x20messages.length\x20+\x20\x27\x20msgs)\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Conversation\x27,\x20conv.id,\x20\x27returned\x27,\x20detailResponse.status);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(convError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20⚠️\x20Failed\x20conversation\x27,\x20conv.id\x20+\x20\x27:\x27,\x20convError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMessages\x20=\x20userMessages.reduce((sum,\x20c)\x20=>\x20sum\x20+\x20c.user_messages.length,\x200);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27✅\x20[CHATGPT]\x20Extraction\x20complete:\x27,\x20totalMessages,\x20\x27messages\x20from\x27,\x20userMessages.length,\x20\x27conversations\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x204:\x20Wait\x20for\x20memories\x20(started\x20in\x20parallel\x20at\x20STEP\x202)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Waiting\x20for\x20parallel\x20memories\x20fetch\x20to\x20complete...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20all\x20possible\x20field\x20names\x20(API\x20structure\x20varies)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesItemsCount\x20=\x20memoriesData?.items?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesEntriesCount\x20=\x20memoriesData?.memory_entries?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesArrayCount\x20=\x20memoriesData?.memories?.length\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalMemoriesCount\x20=\x20memoriesItemsCount\x20+\x20memoriesEntriesCount\x20+\x20memoriesArrayCount;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Final\x20memories\x20result:\x27,\x20memoriesItemsCount,\x20\x27items,\x27,\x20memoriesEntriesCount,\x20\x27entries,\x27,\x20memoriesArrayCount,\x20\x27memories\x20array\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20memories\x20to\x20React\x20Native\x20for\x20storage\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(memoriesData\x20&&\x20totalMemoriesCount\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Sending\x20memories\x20to\x20React\x20Native\x20for\x20storage...\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_DATA\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20totalMemoriesCount:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Send\x20conversation\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conversations:\x20userMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_conversations:\x20userMessages.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_messages:\x20totalMessages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_items_count:\x20memoriesItemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_entries_count:\x20memoriesEntriesCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memories_array_count:\x20memoriesArrayCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_memories_count:\x20totalMemoriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Export\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27CONVERSATION_EXPORT_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27✅\x20ChatGPT\x20export\x20successful!\x27);\x0a})();\x0atrue;\x0a','\x0a(function()\x20{\x0a\x20\x20\x20\x20console.log(\x27❌\x20ChatGPT\x20export\x20failed!\x27);\x0a})();\x0atrue;\x0a'];_0x45bc=function(){return _0x39a795;};return _0x45bc();}function _0x56f7(_0x45bc67,_0x56f75c){_0x45bc67=_0x45bc67-0x0;const _0x4cc93b=_0x45bc();let _0x6b3221=_0x4cc93b[_0x45bc67];return _0x6b3221;}export const CHATGPT_SUCCESS_SCRIPT=_0x56f7(0x2);export const CHATGPT_ERROR_SCRIPT=_0x56f7(0x3);export const CHATGPT_FETCH_MEMORIES_SCRIPT='\x0a(function()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20baseUrl\x20=\x20\x27https://chatgpt.com\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27🧠\x20[CHATGPT]\x20Starting\x20memories\x20extraction...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20(async\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x201:\x20Get\x20access\x20token\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_token\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Getting\x20access\x20token...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20accessToken\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/api/auth/session\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sessionResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20sessionData\x20=\x20await\x20sessionResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accessToken\x20=\x20sessionData.accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(sessionError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(\x27[CHATGPT]\x20Session\x20fetch\x20failed:\x27,\x20sessionError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20STEP\x202:\x20Fetch\x20memories\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_PROGRESS\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20stage:\x20\x27fetching_memories\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Fetching\x20ChatGPT\x20memories...\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20headers\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Accept\x27:\x20\x27application/json\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27Referer\x27:\x20baseUrl\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(accessToken)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers[\x27Authorization\x27]\x20=\x20\x27Bearer\x20\x27\x20+\x20accessToken;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesResponse\x20=\x20await\x20fetch(baseUrl\x20+\x20\x27/backend-api/memories?include_memory_entries=true&memory_entries_filter=all\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27GET\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20credentials:\x20\x27include\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headers:\x20headers\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!memoriesResponse.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20memoriesResponse.status\x20+\x20\x27:\x20Failed\x20to\x20fetch\x20memories\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20memoriesData\x20=\x20await\x20memoriesResponse.json();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20itemsCount\x20=\x20memoriesData.items\x20?\x20memoriesData.items.length\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20entriesCount\x20=\x20memoriesData.memory_entries\x20?\x20memoriesData.memory_entries.length\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_COMPLETE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27success\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memoriesData:\x20memoriesData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20itemsCount:\x20itemsCount,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entriesCount:\x20entriesCount\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20fetch\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Memories\x20fetch\x20failed:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20})();\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27❌\x20[CHATGPT]\x20Memories\x20init\x20error:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20window.ReactNativeWebView.postMessage(JSON.stringify({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27MEMORIES_FETCH_ERROR\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Script\x20error:\x20\x27\x20+\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false\x0a\x20\x20\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a})();\x0atrue;\x0a';
|