@onairos/react-native 3.7.0 → 3.7.2
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/assets/icons/netflix.png +0 -0
- package/lib/commonjs/assets/icons/spotify.png +0 -0
- package/lib/commonjs/assets/images/netflix.png +0 -0
- package/lib/commonjs/assets/images/spotify.png +0 -0
- 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/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/netflixDataExtractor.js +1 -1
- package/lib/commonjs/services/netflixDataService.js +1 -1
- 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/spotifyDataExtractor.js +1 -1
- package/lib/commonjs/services/spotifyDataService.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/netflix.js +1 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +1 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +1 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +1 -1
- package/lib/module/api/index.js +1 -1
- package/lib/module/assets/icons/netflix.png +0 -0
- package/lib/module/assets/icons/spotify.png +0 -0
- package/lib/module/assets/images/netflix.png +0 -0
- package/lib/module/assets/images/spotify.png +0 -0
- 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/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/netflixDataExtractor.js +1 -1
- package/lib/module/services/netflixDataService.js +1 -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/spotifyDataExtractor.js +1 -1
- package/lib/module/services/spotifyDataService.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/netflix.js +1 -1
- package/lib/module/utils/webviewScripts/sephora.js +1 -1
- package/lib/module/utils/webviewScripts/spotify.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';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x4634c8,_0x1a3f21,_0x23b197,_0x3c5755){const _0x18be7a={'CsBwI':_0x4b14(0x0),'SkHyh':_0x4b14(0x1)},_0x451e82=_0x18be7a[_0x4b14(0x2)][_0x4b14(0x3)]('|');let _0x30576e=0x0;while(!![]){switch(_0x451e82[_0x30576e++]){case'0':this[_0x4b14(0x4)]=_0x23b197;continue;case'1':super(_0x4634c8);continue;case'2':this[_0x4b14(0x5)]=_0x1a3f21;continue;case'3':this[_0x4b14(0x6)]=_0x18be7a[_0x4b14(0x7)];continue;case'4':this[_0x4b14(0x8)]=_0x3c5755;continue;}break;}}}const checkNetworkConnection=async()=>{const _0x46901a={'bFhzI':function(_0x58aab9,_0x509c96){return _0x58aab9===_0x509c96;}},_0x353539=await NetInfo[_0x4b14(0x9)]();return _0x46901a[_0x4b14(0xa)](_0x353539[_0x4b14(0xb)],!![]);},makeUserApiRequest=async(_0x1e235c,_0x2dbd57,_0x176433={})=>{const _0x2ab911={'OIvVv':function(_0xfa0410,_0x543829,_0x5c3ac0,_0x5167c4){return _0xfa0410(_0x543829,_0x5c3ac0,_0x5167c4);},'jjpNC':function(_0x4c1502,_0xc1677e,_0x3861ef){return _0x4c1502(_0xc1677e,_0x3861ef);},'YEvun':_0x4b14(0xc),'UZYWR':_0x4b14(0xd),'OJXYK':_0x4b14(0xe),'GPqYG':function(_0x1b3aae){return _0x1b3aae();},'VYPUL':function(_0x2d59dc,_0x25f788){return _0x2d59dc!==_0x25f788;},'yWAYv':_0x4b14(0xf),'GoOIc':_0x4b14(0x10),'pBhnB':'User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','Nfrnq':_0x4b14(0x11),'yHKgA':function(_0x17ad9a,_0x29768d,_0x50cfcf){return _0x17ad9a(_0x29768d,_0x50cfcf);},'gOZXS':_0x4b14(0x12),'tuOVU':'[REDACTED]','DVIPV':function(_0x3b9485,_0x2740b0,_0x249f76){return _0x3b9485(_0x2740b0,_0x249f76);},'KYpIo':function(_0x4cfa76,_0xf0f83a,_0x4fa263){return _0x4cfa76(_0xf0f83a,_0x4fa263);},'MFqyx':_0x4b14(0x13),'IRTkw':function(_0x146aa2,_0x271420){return _0x146aa2===_0x271420;},'ItAgL':function(_0x32673e,_0xd3873b){return _0x32673e===_0xd3873b;},'tdMmI':function(_0x47928f,_0x5ed819){return _0x47928f>=_0x5ed819;},'vmXbf':function(_0x88cd5,_0x40b183){return _0x88cd5===_0x40b183;},'otzgC':'API\x20request\x20failed','WCvEN':function(_0x4f1899,_0x4e9092){return _0x4f1899===_0x4e9092;},'EReuW':function(_0x2e9408,_0x3395d4){return _0x2e9408===_0x3395d4;},'KTsUr':function(_0x933d1e,_0x411f25){return _0x933d1e===_0x411f25;},'NBKBo':function(_0x55c393,_0x251934){return _0x55c393 instanceof _0x251934;},'cClgJ':function(_0x58635b,_0x74f144){return _0x58635b===_0x74f144;},'DAfJt':_0x4b14(0x14),'EUcyW':_0x4b14(0x15),'BvUfZ':'AbortError','CEuMU':function(_0x175ab1,_0x57324e){return _0x175ab1!==_0x57324e;},'PgYNd':_0x4b14(0x16),'WJxoF':'Unknown\x20error','NbTRj':_0x4b14(0x17),'ADBtV':'unknown_error'},{data:_0x4645ab,headers:headers={},debug:debug=![]}=_0x176433;try{const _0x33ac52=await checkNetworkConnection();if(!_0x33ac52)throw new ApiError(_0x2ab911['UZYWR'],_0x2ab911[_0x4b14(0x18)]);if(!_0x2ab911['GPqYG'](isUserAuthenticated)){if(_0x2ab911[_0x4b14(0x19)](_0x2ab911['yWAYv'],_0x2ab911[_0x4b14(0x1a)]))throw new ApiError(_0x2ab911[_0x4b14(0x1b)],_0x2ab911[_0x4b14(0x1c)]);else return _0x2ab911[_0x4b14(0x1d)](_0x2856e2,_0x4b14(0x1e)+_0x52c9eb+'/data','GET',{'debug':_0x334d8f[_0x4b14(0x1f)]});}debug&&_0x2ab911[_0x4b14(0x20)](logDebug,_0x2ab911[_0x4b14(0x21)],{'endpoint':_0x1e235c,'method':_0x2dbd57,'headers':{...headers,'Authorization':_0x2ab911[_0x4b14(0x22)]},'data':_0x4645ab||null});const _0x12ea29=await _0x2ab911[_0x4b14(0x23)](makeUserRequest,_0x1e235c,{'method':_0x2dbd57,'headers':headers,..._0x4645ab?{'body':JSON[_0x4b14(0x24)](_0x4645ab)}:{}}),_0x58333=await _0x12ea29[_0x4b14(0x25)]();debug&&_0x2ab911[_0x4b14(0x26)](logDebug,_0x2ab911[_0x4b14(0x27)],{'status':_0x12ea29['status'],'data':_0x58333});if(!_0x12ea29['ok']){var _0x1cc0ab,_0x42ae91,_0x526725;const _0x377c82=_0x2ab911[_0x4b14(0x28)](_0x12ea29['status'],0x191)||_0x2ab911[_0x4b14(0x29)](_0x12ea29[_0x4b14(0x2a)],0x193)?_0x2ab911[_0x4b14(0x1c)]:_0x2ab911[_0x4b14(0x28)](_0x12ea29[_0x4b14(0x2a)],0x190)?'validation_error':_0x2ab911[_0x4b14(0x2b)](_0x12ea29['status'],0x1f4)?_0x4b14(0x2c):_0x4b14(0x2d);throw new ApiError((_0x2ab911[_0x4b14(0x28)](_0x1cc0ab=_0x58333['error'],null)||_0x2ab911[_0x4b14(0x2e)](_0x1cc0ab,void 0x0)?void 0x0:_0x1cc0ab[_0x4b14(0x2f)])||_0x2ab911[_0x4b14(0x30)],_0x377c82,_0x2ab911[_0x4b14(0x2e)](_0x42ae91=_0x58333[_0x4b14(0x31)],null)||_0x2ab911[_0x4b14(0x32)](_0x42ae91,void 0x0)?void 0x0:_0x42ae91[_0x4b14(0x4)],_0x2ab911[_0x4b14(0x33)](_0x526725=_0x58333['error'],null)||_0x2ab911[_0x4b14(0x34)](_0x526725,void 0x0)?void 0x0:_0x526725[_0x4b14(0x8)]);}return _0x58333;}catch(_0x1c46da){if(_0x2ab911[_0x4b14(0x35)](_0x1c46da,ApiError)){if(_0x2ab911[_0x4b14(0x36)](_0x2ab911[_0x4b14(0x37)],_0x2ab911[_0x4b14(0x38)]))_0x2ab911[_0x4b14(0x39)](_0x239864,_0x2ab911[_0x4b14(0x3a)],{'status':_0x3d1e4e[_0x4b14(0x2a)],'data':_0x29851a});else throw _0x1c46da;}if(_0x2ab911[_0x4b14(0x29)](_0x1c46da[_0x4b14(0x6)],_0x2ab911[_0x4b14(0x3b)])){if(_0x2ab911[_0x4b14(0x3c)](_0x4b14(0x3d),'ahUzp'))throw new _0x2ff280(_0x2ab911[_0x4b14(0x3e)],_0x2ab911[_0x4b14(0x18)]);else throw new ApiError(_0x2ab911[_0x4b14(0x3f)],_0x4b14(0x40));}debug&&_0x2ab911['jjpNC'](logDebug,'User\x20API\x20Error',{'endpoint':_0x1e235c,'method':_0x2dbd57,'error':_0x1c46da[_0x4b14(0x2f)]||_0x2ab911[_0x4b14(0x41)]});throw new ApiError(_0x1c46da[_0x4b14(0x2f)]||_0x2ab911[_0x4b14(0x42)],_0x2ab911[_0x4b14(0x43)]);}},makeDeveloperApiRequest=async(_0x41bec6,_0x432ad6,_0x47a95e={})=>{const _0x2cc492={'Dskwv':function(_0x32f590,_0x1248dc,_0x432317){return _0x32f590(_0x1248dc,_0x432317);},'whaVn':function(_0x4d3f09,_0x2b99a2,_0x4c75a4){return _0x4d3f09(_0x2b99a2,_0x4c75a4);},'csbup':_0x4b14(0x12),'PXNXF':'[REDACTED]','BtyiS':function(_0x87598b,_0x59d448){return _0x87598b||_0x59d448;},'FvFbd':function(_0x4e9eb7){return _0x4e9eb7();},'JSuhA':_0x4b14(0xd),'nBqsU':_0x4b14(0xe),'IlaRz':function(_0x1f3a5e,_0x101fea,_0x5f0408){return _0x1f3a5e(_0x101fea,_0x5f0408);},'oeYcS':function(_0x297494,_0xc99b47,_0x232c1e){return _0x297494(_0xc99b47,_0x232c1e);},'vANEx':_0x4b14(0xc),'BrcGy':function(_0x5de54b,_0x21ee02){return _0x5de54b===_0x21ee02;},'orwuH':_0x4b14(0x44),'ItDao':function(_0x1edce4,_0x4ac23d){return _0x1edce4>=_0x4ac23d;},'Kswjy':_0x4b14(0x2c),'KfIBX':_0x4b14(0x2d),'jliDt':function(_0x1ff0e1,_0x1268c5){return _0x1ff0e1===_0x1268c5;},'SHEeq':_0x4b14(0x45),'MGWHe':function(_0x8cf794,_0x2cdb5a){return _0x8cf794===_0x2cdb5a;},'iBdhy':function(_0x13347f,_0x499e48){return _0x13347f===_0x499e48;},'Cixpc':_0x4b14(0x46),'RtsIG':_0x4b14(0x47),'qRyFL':function(_0x20a82b,_0x1b17a8){return _0x20a82b instanceof _0x1b17a8;},'ErSOo':_0x4b14(0x48),'DhXXR':function(_0x342e88,_0x52fc7b){return _0x342e88===_0x52fc7b;},'EWOnu':'qvgeq','IXyGn':_0x4b14(0x16),'dzqEz':'timeout_error','FGUde':_0x4b14(0x49),'tbYLq':'Unknown\x20error','SNihv':_0x4b14(0x17)},{data:_0x42fb52,headers:headers={},debug:debug=![]}=_0x47a95e;try{const _0x105497=await _0x2cc492['FvFbd'](checkNetworkConnection);if(!_0x105497)throw new ApiError(_0x2cc492[_0x4b14(0x4a)],_0x2cc492[_0x4b14(0x4b)]);debug&&_0x2cc492['IlaRz'](logDebug,_0x4b14(0x4c),{'endpoint':_0x41bec6,'method':_0x432ad6,'headers':{...headers,'Authorization':_0x2cc492['PXNXF']},'data':_0x42fb52||null});const _0x581e98=await _0x2cc492[_0x4b14(0x4d)](makeDeveloperRequest,_0x41bec6,{'method':_0x432ad6,'headers':headers,..._0x42fb52?{'body':JSON['stringify'](_0x42fb52)}:{}}),_0x16b2c5=await _0x581e98[_0x4b14(0x25)]();debug&&_0x2cc492[_0x4b14(0x4e)](logDebug,_0x2cc492[_0x4b14(0x4f)],{'status':_0x581e98[_0x4b14(0x2a)],'data':_0x16b2c5});if(!_0x581e98['ok']){var _0x39993b,_0x5f312c,_0x25b55d;const _0x11edd3=_0x581e98['status']===0x191||_0x581e98['status']===0x193?_0x4b14(0x11):_0x2cc492['BrcGy'](_0x581e98[_0x4b14(0x2a)],0x190)?_0x2cc492[_0x4b14(0x50)]:_0x2cc492['ItDao'](_0x581e98[_0x4b14(0x2a)],0x1f4)?_0x2cc492[_0x4b14(0x51)]:_0x2cc492[_0x4b14(0x52)];throw new ApiError((_0x2cc492['BrcGy'](_0x39993b=_0x16b2c5[_0x4b14(0x31)],null)||_0x2cc492['jliDt'](_0x39993b,void 0x0)?void 0x0:_0x39993b['message'])||_0x2cc492[_0x4b14(0x53)],_0x11edd3,_0x2cc492[_0x4b14(0x54)](_0x5f312c=_0x16b2c5['error'],null)||_0x2cc492['MGWHe'](_0x5f312c,void 0x0)?void 0x0:_0x5f312c[_0x4b14(0x4)],_0x2cc492[_0x4b14(0x55)](_0x25b55d=_0x16b2c5[_0x4b14(0x31)],null)||_0x2cc492[_0x4b14(0x56)](_0x25b55d,void 0x0)?void 0x0:_0x25b55d[_0x4b14(0x8)]);}return _0x16b2c5;}catch(_0x5dab9b){if(_0x2cc492[_0x4b14(0x55)](_0x2cc492[_0x4b14(0x57)],_0x2cc492[_0x4b14(0x58)]))throw _0x25283b;else{if(_0x2cc492[_0x4b14(0x59)](_0x5dab9b,ApiError)){if(_0x2cc492[_0x4b14(0x5a)]!==_0x4b14(0x5b))throw _0x5dab9b;else _0x2cc492[_0x4b14(0x4e)](_0xbc9e3,_0x4b14(0x13),{'status':_0x5acb6e[_0x4b14(0x2a)],'data':_0xb8a318});}if(_0x2cc492[_0x4b14(0x54)](_0x5dab9b[_0x4b14(0x6)],'AbortError')){if(_0x2cc492[_0x4b14(0x5c)]('qvgeq',_0x2cc492['EWOnu']))throw new ApiError(_0x2cc492[_0x4b14(0x5d)],_0x2cc492[_0x4b14(0x5e)]);else _0x2cc492[_0x4b14(0x5f)](_0x21b59b,_0x2cc492[_0x4b14(0x60)],{'endpoint':_0x11251e,'method':_0x83646b,'headers':{..._0x3895e9,'Authorization':_0x2cc492[_0x4b14(0x61)]},'data':_0x2cc492[_0x4b14(0x62)](_0x1f3777,null)});}debug&&logDebug(_0x2cc492[_0x4b14(0x63)],{'endpoint':_0x41bec6,'method':_0x432ad6,'error':_0x5dab9b[_0x4b14(0x2f)]||_0x2cc492[_0x4b14(0x64)]});throw new ApiError(_0x5dab9b['message']||_0x2cc492[_0x4b14(0x65)],_0x2cc492[_0x4b14(0x52)]);}}};function _0x4b14(_0x195e4a,_0x4b1416){_0x195e4a=_0x195e4a-0x0;const _0x4df9af=_0x195e();let _0x799b28=_0x4df9af[_0x195e4a];return _0x799b28;}export const validateCredentials=async(_0x3d75e0,_0x26e76a={'debug':![]})=>{const _0xb77e55={'DwlhK':function(_0x1b0f99,_0x2d6458){return _0x1b0f99===_0x2d6458;}};try{var _0x5137ce,_0x1b61a7;const _0x3ae98c=await makeUserApiRequest('auth/validate','POST',{'data':{'username':_0x3d75e0},'debug':_0x26e76a[_0x4b14(0x1f)]});return{'isValid':_0x3ae98c[_0x4b14(0x66)]&&_0xb77e55['DwlhK']((_0x5137ce=_0x3ae98c[_0x4b14(0x67)])===null||_0xb77e55[_0x4b14(0x68)](_0x5137ce,void 0x0)?void 0x0:_0x5137ce[_0x4b14(0x69)],!![]),'message':_0xb77e55[_0x4b14(0x68)](_0x1b61a7=_0x3ae98c[_0x4b14(0x31)],null)||_0x1b61a7===void 0x0?void 0x0:_0x1b61a7[_0x4b14(0x2f)]};}catch(_0x368a35){return{'isValid':![],'message':_0x368a35[_0x4b14(0x2f)]};}};export const createAccount=async(_0x1d0eec,_0xb25a1b={'debug':![]})=>{const _0x58ebbb={'zdspc':function(_0x3e0d06,_0x262ea4,_0x2e32c6,_0x4b97a1){return _0x3e0d06(_0x262ea4,_0x2e32c6,_0x4b97a1);}};return _0x58ebbb[_0x4b14(0x6a)](makeDeveloperApiRequest,_0x4b14(0x6b),'POST',{'data':{'username':_0x1d0eec['username'],'platforms':_0x1d0eec['platforms']},'debug':_0xb25a1b[_0x4b14(0x1f)]});};function _0x195e(){const _0x120689=['1|2|0|4|3','ApiError','CsBwI','split','code','type','name','SkHyh','details','fetch','bFhzI','isConnected','Developer\x20API\x20Response','No\x20network\x20connection\x20available','network_error','PoyZf','CSYeC','auth_error','User\x20API\x20Request','User\x20API\x20Response','voAel','CPJOm','Request\x20timed\x20out','An\x20unexpected\x20error\x20occurred','OJXYK','VYPUL','GoOIc','pBhnB','Nfrnq','OIvVv','platforms/','debug','yHKgA','gOZXS','tuOVU','DVIPV','stringify','json','KYpIo','MFqyx','IRTkw','ItAgL','status','tdMmI','server_error','unknown_error','vmXbf','message','otzgC','error','WCvEN','EReuW','KTsUr','NBKBo','cClgJ','DAfJt','EUcyW','jjpNC','YEvun','BvUfZ','CEuMU','ahUzp','UZYWR','PgYNd','timeout_error','WJxoF','NbTRj','ADBtV','validation_error','API\x20request\x20failed','niSob','AKLDW','gGnir','Developer\x20API\x20Error','JSuhA','nBqsU','Developer\x20API\x20Request','oeYcS','Dskwv','vANEx','orwuH','Kswjy','KfIBX','SHEeq','MGWHe','BrcGy','iBdhy','Cixpc','RtsIG','qRyFL','ErSOo','dbZgP','DhXXR','IXyGn','dzqEz','whaVn','csbup','PXNXF','BtyiS','FGUde','tbYLq','SNihv','success','data','DwlhK','isValid','zdspc','auth/register','auth/login','WCJog','username','dzkRY','auth/refresh','xRXVb','/data','user/profile','NWwak','fpuSn','Unknown\x20error','cXRoE','GSuPh','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','nUkqO','QrGBl','BoilC','SbDIC','GETpn','AbortError','tUvbX','fRtCu','ApTtl','tQBoL','store-pin/mobile','wDNfh','hIXEK'];_0x195e=function(){return _0x120689;};return _0x195e();}export const authenticate=async(_0x50adcc,_0x5251f5={'debug':![]})=>{const _0x11d4e5={'WCJog':function(_0xc63452,_0x12fe4e,_0x25bc8d,_0x3d7d4d){return _0xc63452(_0x12fe4e,_0x25bc8d,_0x3d7d4d);},'AeJeL':_0x4b14(0x6c)};return _0x11d4e5[_0x4b14(0x6d)](makeUserApiRequest,_0x11d4e5['AeJeL'],'POST',{'data':{'username':_0x50adcc[_0x4b14(0x6e)],'pin':_0x50adcc['userPin']},'debug':_0x5251f5[_0x4b14(0x1f)]});};export const refreshToken=async(_0x27088d,_0x138ac7={'debug':![]})=>{const _0x47c2d8={'dzkRY':function(_0x2c1e66,_0xd5c22d,_0x12c095,_0x51e701){return _0x2c1e66(_0xd5c22d,_0x12c095,_0x51e701);}};return _0x47c2d8[_0x4b14(0x6f)](makeUserApiRequest,_0x4b14(0x70),'POST',{'data':{'refreshToken':_0x27088d},'debug':_0x138ac7['debug']});};export const getPlatformData=async(_0x3f8418,_0x4d19e6={'debug':![]})=>{const _0x28dafe={'xRXVb':function(_0x364142,_0x53ce9e,_0x4ea53b,_0x1aabc7){return _0x364142(_0x53ce9e,_0x4ea53b,_0x1aabc7);}};return _0x28dafe[_0x4b14(0x71)](makeUserApiRequest,_0x4b14(0x1e)+_0x3f8418+_0x4b14(0x72),'GET',{'debug':_0x4d19e6['debug']});};export const getUserProfile=async(_0x219573={'debug':![]})=>{const _0x581bdb={'NWwak':_0x4b14(0x73)};return makeUserApiRequest(_0x581bdb[_0x4b14(0x74)],'GET',{'debug':_0x219573['debug']});};export const updatePlatformConnections=async(_0x48086e,_0x1989e4={'debug':![]})=>{const _0x4eeed6={'fpuSn':'user/platforms'};return makeUserApiRequest(_0x4eeed6[_0x4b14(0x75)],'PUT',{'data':{'platforms':_0x48086e},'debug':_0x1989e4[_0x4b14(0x1f)]});};export const storePIN=async(_0x240de5,_0x313fe2={})=>{const _0x252f31={'GETpn':function(_0x2eacee,_0xe312b){return _0x2eacee instanceof _0xe312b;},'FMbRw':function(_0x4035a1,_0x4ca262){return _0x4035a1===_0x4ca262;},'tUvbX':_0x4b14(0x40),'fRtCu':function(_0x298b70,_0x357f51,_0x50fb14){return _0x298b70(_0x357f51,_0x50fb14);},'nUANK':'User\x20API\x20Error','ApTtl':_0x4b14(0x76),'tQBoL':_0x4b14(0x2d),'nUkqO':function(_0x105727){return _0x105727();},'QrGBl':function(_0x4416c6,_0x453482){return _0x4416c6!==_0x453482;},'IoXvt':_0x4b14(0x77),'BoilC':_0x4b14(0x78),'SbDIC':_0x4b14(0x79),'cjSdO':function(_0x573bb8,_0x2098b,_0x3de170,_0x56d31c){return _0x573bb8(_0x2098b,_0x3de170,_0x56d31c);}},{debug:debug=![],username:_0x332b9b}=_0x313fe2,_0x37b301=_0x332b9b||_0x252f31[_0x4b14(0x7a)](extractUsernameFromJWT);if(!_0x37b301){if(_0x252f31[_0x4b14(0x7b)](_0x252f31['IoXvt'],_0x252f31[_0x4b14(0x7c)]))throw new ApiError(_0x252f31[_0x4b14(0x7d)],_0x4b14(0x11));else{if(_0x252f31[_0x4b14(0x7e)](_0x229809,_0x611c3a))throw _0x3938f3;if(_0x252f31['FMbRw'](_0x2fe435[_0x4b14(0x6)],_0x4b14(0x7f)))throw new _0x30af72(_0x4b14(0x16),_0x252f31[_0x4b14(0x80)]);_0x346f50&&_0x252f31[_0x4b14(0x81)](_0x40d9f4,_0x252f31['nUANK'],{'endpoint':_0x1ee460,'method':_0x6537ae,'error':_0x2e4d07[_0x4b14(0x2f)]||_0x252f31[_0x4b14(0x82)]});throw new _0xada78e(_0x3c8535[_0x4b14(0x2f)]||_0x4b14(0x17),_0x252f31[_0x4b14(0x83)]);}}return _0x252f31['cjSdO'](makeUserApiRequest,_0x4b14(0x84),'POST',{'data':{'username':_0x37b301,'pin':_0x240de5},'debug':debug});};export const getCurrentUserToken=async()=>{const _0x50d438={'wDNfh':function(_0x23008e){return _0x23008e();}};return await _0x50d438[_0x4b14(0x85)](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x1460b0={'hIXEK':function(_0x51d644){return _0x51d644();}};return _0x1460b0[_0x4b14(0x86)](isUserAuthenticated);};
|
|
1
|
+
function _0x554c(_0x375775,_0x554c7d){_0x375775=_0x375775-0x0;const _0x7c0cd0=_0x3757();let _0x2adf40=_0x7c0cd0[_0x375775];return _0x2adf40;}import NetInfo from'@react-native-community/netinfo';import{logDebug}from'./debugHelper';import{getJWT,makeUserRequest,makeDeveloperRequest,isUserAuthenticated,extractUsernameFromJWT}from'../services/apiKeyService';export class ApiError extends Error{constructor(_0x122ae4,_0x2b22c7,_0x57765e,_0x1776b2){const _0x419d79={'bYJtW':_0x554c(0x0),'VIvpg':_0x554c(0x1)},_0x1e1bc4=_0x419d79[_0x554c(0x2)][_0x554c(0x3)]('|');let _0x2d167a=0x0;while(!![]){switch(_0x1e1bc4[_0x2d167a++]){case'0':super(_0x122ae4);continue;case'1':this[_0x554c(0x4)]=_0x419d79[_0x554c(0x5)];continue;case'2':this[_0x554c(0x6)]=_0x57765e;continue;case'3':this['details']=_0x1776b2;continue;case'4':this['type']=_0x2b22c7;continue;}break;}}}const checkNetworkConnection=async()=>{const _0xf7a8f3={'JqyvU':function(_0x4c7488,_0x116ab7){return _0x4c7488===_0x116ab7;}},_0x4d725a=await NetInfo[_0x554c(0x7)]();return _0xf7a8f3[_0x554c(0x8)](_0x4d725a[_0x554c(0x9)],!![]);},makeUserApiRequest=async(_0x256465,_0x1c84c7,_0x1b371c={})=>{const _0x5a5547={'vevZc':function(_0x1b1285,_0x7fee68,_0x1804f0){return _0x1b1285(_0x7fee68,_0x1804f0);},'mmGnb':_0x554c(0xa),'CbXej':'Unknown\x20error','SbbwS':function(_0x1c7c33){return _0x1c7c33();},'RSUvm':_0x554c(0xb),'NqaTF':_0x554c(0xc),'USIbJ':'User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','jLsCj':function(_0x16bb68,_0x41da4b){return _0x16bb68===_0x41da4b;},'SruXT':_0x554c(0xd),'kFucP':_0x554c(0xe),'bLYfQ':_0x554c(0xf),'MnSYD':function(_0x1d55fe,_0x230906){return _0x1d55fe===_0x230906;},'HvDwN':_0x554c(0x10),'ihnFw':function(_0x28ab59,_0x33b83e){return _0x28ab59===_0x33b83e;},'qMuvC':function(_0x57fb37,_0x2a0c2c){return _0x57fb37>=_0x2a0c2c;},'mgmDf':_0x554c(0x11),'pGKSe':_0x554c(0x12),'REQGU':function(_0x4a8317,_0x41f530){return _0x4a8317===_0x41f530;},'JboIj':function(_0x97e1e2,_0x469c81){return _0x97e1e2===_0x469c81;},'bTNwf':'API\x20request\x20failed','HPNEH':function(_0x3b7119,_0x3edbf9){return _0x3b7119===_0x3edbf9;},'oSeWq':function(_0x135c80,_0x198872){return _0x135c80===_0x198872;},'yXUxk':function(_0x28df35,_0x4bc5b6){return _0x28df35 instanceof _0x4bc5b6;},'ONacN':function(_0x27ca3e,_0x21e34c){return _0x27ca3e===_0x21e34c;},'QofSS':_0x554c(0x13),'exoPS':_0x554c(0x14),'WpXVu':function(_0xdd6088,_0x53624d,_0x352c34){return _0xdd6088(_0x53624d,_0x352c34);},'VcHDX':_0x554c(0x15),'QSLFD':_0x554c(0x16)},{data:_0x315a04,headers:headers={},debug:debug=![]}=_0x1b371c;try{const _0x2ec285=await _0x5a5547[_0x554c(0x17)](checkNetworkConnection);if(!_0x2ec285)throw new ApiError(_0x5a5547['RSUvm'],_0x5a5547[_0x554c(0x18)]);if(!_0x5a5547['SbbwS'](isUserAuthenticated))throw new ApiError(_0x5a5547[_0x554c(0x19)],_0x554c(0x1a));debug&&(_0x5a5547[_0x554c(0x1b)](_0x5a5547[_0x554c(0x1c)],_0x5a5547['SruXT'])?_0x5a5547[_0x554c(0x1d)](logDebug,_0x5a5547[_0x554c(0x1e)],{'endpoint':_0x256465,'method':_0x1c84c7,'headers':{...headers,'Authorization':_0x5a5547[_0x554c(0x1f)]},'data':_0x315a04||null}):_0x5a5547[_0x554c(0x1d)](_0x142333,_0x5a5547[_0x554c(0x20)],{'status':_0xfe1e01['status'],'data':_0x11e1fd}));const _0x7fc576=await _0x5a5547['vevZc'](makeUserRequest,_0x256465,{'method':_0x1c84c7,'headers':headers,..._0x315a04?{'body':JSON[_0x554c(0x21)](_0x315a04)}:{}}),_0x5f5d9a=await _0x7fc576[_0x554c(0x22)]();debug&&logDebug(_0x5a5547[_0x554c(0x20)],{'status':_0x7fc576[_0x554c(0x23)],'data':_0x5f5d9a});if(!_0x7fc576['ok']){if(_0x5a5547[_0x554c(0x24)](_0x5a5547[_0x554c(0x25)],_0x554c(0x26)))_0x5a5547[_0x554c(0x1d)](_0x2001e6,_0x554c(0x15),{'endpoint':_0x3f2910,'method':_0x3bc42d,'error':_0x4ed539['message']||_0x5a5547[_0x554c(0x27)]});else{var _0x165f68,_0x243592,_0x44bce1;const _0x4db5c3=_0x5a5547[_0x554c(0x1b)](_0x7fc576[_0x554c(0x23)],0x191)||_0x5a5547['ihnFw'](_0x7fc576[_0x554c(0x23)],0x193)?'auth_error':_0x7fc576[_0x554c(0x23)]===0x190?_0x554c(0x28):_0x5a5547[_0x554c(0x29)](_0x7fc576[_0x554c(0x23)],0x1f4)?_0x5a5547[_0x554c(0x2a)]:_0x5a5547[_0x554c(0x2b)];throw new ApiError((_0x5a5547[_0x554c(0x2c)](_0x165f68=_0x5f5d9a[_0x554c(0x2d)],null)||_0x5a5547[_0x554c(0x2e)](_0x165f68,void 0x0)?void 0x0:_0x165f68['message'])||_0x5a5547['bTNwf'],_0x4db5c3,_0x5a5547[_0x554c(0x2f)](_0x243592=_0x5f5d9a[_0x554c(0x2d)],null)||_0x243592===void 0x0?void 0x0:_0x243592[_0x554c(0x6)],_0x5a5547[_0x554c(0x30)](_0x44bce1=_0x5f5d9a[_0x554c(0x2d)],null)||_0x5a5547[_0x554c(0x31)](_0x44bce1,void 0x0)?void 0x0:_0x44bce1[_0x554c(0x32)]);}}return _0x5f5d9a;}catch(_0x35d6b5){if(_0x5a5547[_0x554c(0x33)](_0x35d6b5,ApiError))throw _0x35d6b5;if(_0x5a5547[_0x554c(0x34)](_0x35d6b5['name'],_0x5a5547[_0x554c(0x35)]))throw new ApiError(_0x554c(0x36),_0x5a5547['exoPS']);debug&&_0x5a5547[_0x554c(0x37)](logDebug,_0x5a5547[_0x554c(0x38)],{'endpoint':_0x256465,'method':_0x1c84c7,'error':_0x35d6b5[_0x554c(0x39)]||_0x554c(0x3a)});throw new ApiError(_0x35d6b5[_0x554c(0x39)]||_0x5a5547['QSLFD'],_0x5a5547[_0x554c(0x2b)]);}},makeDeveloperApiRequest=async(_0x454ee7,_0xa52c7b,_0x942017={})=>{const _0x4cab26={'OgNHC':'Developer\x20API\x20Request','GFJlJ':_0x554c(0xf),'nPIix':function(_0x39ca3e,_0x450562){return _0x39ca3e||_0x450562;},'xZrVs':function(_0x564c0e,_0x492113){return _0x564c0e===_0x492113;},'qzKtL':_0x554c(0x13),'AYRbj':_0x554c(0x14),'vPxsX':function(_0xd3c4cb,_0x43d7a8,_0xab9b65){return _0xd3c4cb(_0x43d7a8,_0xab9b65);},'OVJUW':_0x554c(0x15),'gUzTz':_0x554c(0x3a),'oHLOz':_0x554c(0x16),'pBRSt':'unknown_error','aCGPv':_0x554c(0x3b),'aaQfc':_0x554c(0x1a),'gPCMh':function(_0x26bea7,_0x570c1e,_0x346924,_0x370c3e){return _0x26bea7(_0x570c1e,_0x346924,_0x370c3e);},'FBULR':_0x554c(0x36),'HprRq':'nfjaX','FeZTA':function(_0xc02c05,_0x521d6b){return _0xc02c05!==_0x521d6b;},'NhRJD':_0x554c(0x3c),'xqpek':_0x554c(0xb),'hNoQs':_0x554c(0xc),'kNoWm':function(_0x261f54,_0x269004){return _0x261f54===_0x269004;},'mlhCH':_0x554c(0x3d),'rnUHY':_0x554c(0x3e),'oMZvS':'fwmCR','GtXuS':function(_0x541584,_0x26592b,_0x3e6067){return _0x541584(_0x26592b,_0x3e6067);},'nyERO':function(_0x49651b,_0x4eb573){return _0x49651b===_0x4eb573;},'FGGWx':_0x554c(0x28),'kSTnH':function(_0x218d7e,_0x7182ad){return _0x218d7e>=_0x7182ad;},'mpAOL':'server_error','dRQPU':function(_0x29e6b8,_0x11d9bb){return _0x29e6b8===_0x11d9bb;},'ZKabk':function(_0x3e66c8,_0x4327f4){return _0x3e66c8===_0x4327f4;},'vACCJ':function(_0x167641,_0x30c195){return _0x167641===_0x30c195;},'Nrbxh':function(_0x54e518,_0x466523){return _0x54e518 instanceof _0x466523;},'BSVvM':_0x554c(0x3f)},{data:_0x7acb03,headers:headers={},debug:debug=![]}=_0x942017;try{if(_0x554c(0x40)===_0x4cab26[_0x554c(0x41)])_0x2d7e7b(_0x4cab26[_0x554c(0x42)],{'endpoint':_0x726bc9,'method':_0x5d13df,'headers':{..._0xcdf92c,'Authorization':_0x4cab26[_0x554c(0x43)]},'data':_0x4cab26[_0x554c(0x44)](_0x3ffbfb,null)});else{const _0x4f7c2d=await checkNetworkConnection();if(!_0x4f7c2d){if(_0x4cab26[_0x554c(0x45)](_0x4cab26[_0x554c(0x46)],_0x4cab26['NhRJD'])){if(_0x35313e instanceof _0x173a94)throw _0x5c7507;if(_0x4cab26[_0x554c(0x47)](_0x54268c[_0x554c(0x4)],_0x4cab26[_0x554c(0x48)]))throw new _0x146805(_0x554c(0x36),_0x4cab26[_0x554c(0x49)]);_0x5615aa&&_0x4cab26[_0x554c(0x4a)](_0xe281a9,_0x4cab26['OVJUW'],{'endpoint':_0x48b220,'method':_0x22da39,'error':_0x2b65c7['message']||_0x4cab26[_0x554c(0x4b)]});throw new _0x1e99aa(_0x9ead99[_0x554c(0x39)]||_0x4cab26[_0x554c(0x4c)],_0x4cab26['pBRSt']);}else throw new ApiError(_0x4cab26[_0x554c(0x4d)],_0x4cab26[_0x554c(0x4e)]);}if(debug){if(_0x4cab26[_0x554c(0x4f)](_0x4cab26[_0x554c(0x50)],_0x4cab26[_0x554c(0x51)]))throw new _0x1338bc(_0x4cab26[_0x554c(0x52)],_0x4cab26[_0x554c(0x53)]);else logDebug(_0x4cab26['OgNHC'],{'endpoint':_0x454ee7,'method':_0xa52c7b,'headers':{...headers,'Authorization':_0x4cab26[_0x554c(0x43)]},'data':_0x7acb03||null});}const _0x470d09=await _0x4cab26['vPxsX'](makeDeveloperRequest,_0x454ee7,{'method':_0xa52c7b,'headers':headers,..._0x7acb03?{'body':JSON[_0x554c(0x21)](_0x7acb03)}:{}}),_0x27fdba=await _0x470d09[_0x554c(0x22)]();if(debug){if(_0x4cab26['oMZvS']===_0x554c(0x54))return _0x4cab26['gPCMh'](_0xcfc42a,'platforms/'+_0x1dfb37+'/data','GET',{'debug':_0x230c57['debug']});else _0x4cab26[_0x554c(0x55)](logDebug,_0x554c(0x56),{'status':_0x470d09['status'],'data':_0x27fdba});}if(!_0x470d09['ok']){var _0x4b4401,_0x424634,_0x1926b5;const _0x5a71a6=_0x4cab26['xZrVs'](_0x470d09[_0x554c(0x23)],0x191)||_0x470d09[_0x554c(0x23)]===0x193?_0x554c(0x1a):_0x4cab26[_0x554c(0x57)](_0x470d09[_0x554c(0x23)],0x190)?_0x4cab26[_0x554c(0x58)]:_0x4cab26['kSTnH'](_0x470d09['status'],0x1f4)?_0x4cab26[_0x554c(0x59)]:_0x4cab26[_0x554c(0x5a)];throw new ApiError((_0x4cab26[_0x554c(0x5b)](_0x4b4401=_0x27fdba['error'],null)||_0x4b4401===void 0x0?void 0x0:_0x4b4401[_0x554c(0x39)])||_0x554c(0x5c),_0x5a71a6,_0x4cab26[_0x554c(0x5d)](_0x424634=_0x27fdba['error'],null)||_0x4cab26[_0x554c(0x5e)](_0x424634,void 0x0)?void 0x0:_0x424634[_0x554c(0x6)],_0x4cab26[_0x554c(0x47)](_0x1926b5=_0x27fdba['error'],null)||_0x4cab26[_0x554c(0x4f)](_0x1926b5,void 0x0)?void 0x0:_0x1926b5[_0x554c(0x32)]);}return _0x27fdba;}}catch(_0x185125){if(_0x4cab26['Nrbxh'](_0x185125,ApiError))throw _0x185125;if(_0x185125['name']===_0x4cab26[_0x554c(0x48)]){if(_0x4cab26[_0x554c(0x5b)](_0x4cab26['BSVvM'],_0x4cab26[_0x554c(0x5f)]))throw new ApiError(_0x4cab26[_0x554c(0x60)],_0x4cab26[_0x554c(0x49)]);else throw new _0x43e9b7(_0x4cab26[_0x554c(0x60)],_0x4cab26[_0x554c(0x49)]);}debug&&logDebug(_0x554c(0x61),{'endpoint':_0x454ee7,'method':_0xa52c7b,'error':_0x185125[_0x554c(0x39)]||_0x554c(0x3a)});throw new ApiError(_0x185125[_0x554c(0x39)]||_0x554c(0x16),_0x4cab26['pBRSt']);}};export const validateCredentials=async(_0x145180,_0x3bb4d0={'debug':![]})=>{const _0x26c3ea={'mARbv':function(_0x31c331,_0x3e2aea){return _0x31c331===_0x3e2aea;},'IlCar':'AKulM','BeNyF':function(_0x1811fe,_0x1ccc85,_0x11b890,_0x45ee09){return _0x1811fe(_0x1ccc85,_0x11b890,_0x45ee09);},'gzMGx':'auth/validate','Aaajs':function(_0x4ad23a,_0x2d66dc){return _0x4ad23a===_0x2d66dc;},'YhWsl':function(_0x497ced,_0x23f0c2){return _0x497ced===_0x23f0c2;}};try{if(_0x26c3ea[_0x554c(0x62)](_0x26c3ea[_0x554c(0x63)],_0x554c(0x64))){var _0x5484d2,_0x1b3638;const _0x10106b=await _0x26c3ea[_0x554c(0x65)](makeUserApiRequest,_0x26c3ea[_0x554c(0x66)],'POST',{'data':{'username':_0x145180},'debug':_0x3bb4d0[_0x554c(0x67)]});return{'isValid':_0x10106b[_0x554c(0x68)]&&_0x26c3ea[_0x554c(0x69)](_0x26c3ea[_0x554c(0x69)](_0x5484d2=_0x10106b[_0x554c(0x6a)],null)||_0x26c3ea['Aaajs'](_0x5484d2,void 0x0)?void 0x0:_0x5484d2[_0x554c(0x6b)],!![]),'message':_0x26c3ea[_0x554c(0x6c)](_0x1b3638=_0x10106b[_0x554c(0x2d)],null)||_0x1b3638===void 0x0?void 0x0:_0x1b3638[_0x554c(0x39)]};}else return _0x573b55();}catch(_0x360c63){return{'isValid':![],'message':_0x360c63[_0x554c(0x39)]};}};export const createAccount=async(_0x35849d,_0x2a28e2={'debug':![]})=>{const _0x26edaf={'GWthL':function(_0x2abdec,_0x526052,_0x4f5eb3,_0x219552){return _0x2abdec(_0x526052,_0x4f5eb3,_0x219552);}};return _0x26edaf['GWthL'](makeDeveloperApiRequest,'auth/register','POST',{'data':{'username':_0x35849d[_0x554c(0x6d)],'platforms':_0x35849d[_0x554c(0x6e)]},'debug':_0x2a28e2[_0x554c(0x67)]});};export const authenticate=async(_0x4ac713,_0x297195={'debug':![]})=>{const _0x1ed4bd={'ZCfGI':function(_0x556fdf,_0x109272,_0x23aacd,_0x1c6d56){return _0x556fdf(_0x109272,_0x23aacd,_0x1c6d56);},'IKSPM':'auth/login'};return _0x1ed4bd[_0x554c(0x6f)](makeUserApiRequest,_0x1ed4bd['IKSPM'],'POST',{'data':{'username':_0x4ac713['username'],'pin':_0x4ac713[_0x554c(0x70)]},'debug':_0x297195['debug']});};export const refreshToken=async(_0x13a1e4,_0x47a41c={'debug':![]})=>{const _0x2b3fac={'TsdRD':function(_0x48e825,_0x431e33,_0x405d7a,_0xade1fb){return _0x48e825(_0x431e33,_0x405d7a,_0xade1fb);},'ncRdH':_0x554c(0x71)};return _0x2b3fac[_0x554c(0x72)](makeUserApiRequest,_0x2b3fac['ncRdH'],'POST',{'data':{'refreshToken':_0x13a1e4},'debug':_0x47a41c[_0x554c(0x67)]});};export const getPlatformData=async(_0x3a4235,_0x5d0438={'debug':![]})=>{const _0x4d2443={'nYefn':function(_0x2f5da6,_0x2577c2,_0x2d444d,_0x13e8eb){return _0x2f5da6(_0x2577c2,_0x2d444d,_0x13e8eb);}};return _0x4d2443['nYefn'](makeUserApiRequest,'platforms/'+_0x3a4235+_0x554c(0x73),'GET',{'debug':_0x5d0438[_0x554c(0x67)]});};export const getUserProfile=async(_0x5da498={'debug':![]})=>{const _0x4842f5={'CKsFf':function(_0x445315,_0x46278f,_0x2be730,_0x52e636){return _0x445315(_0x46278f,_0x2be730,_0x52e636);},'dobul':'user/profile'};return _0x4842f5[_0x554c(0x74)](makeUserApiRequest,_0x4842f5['dobul'],'GET',{'debug':_0x5da498['debug']});};export const updatePlatformConnections=async(_0xb7a867,_0x1a6aaf={'debug':![]})=>{const _0x3464f3={'ZXwxt':function(_0xc71b58,_0x263156,_0x27ad8b,_0x3ddf5e){return _0xc71b58(_0x263156,_0x27ad8b,_0x3ddf5e);}};return _0x3464f3[_0x554c(0x75)](makeUserApiRequest,_0x554c(0x76),'PUT',{'data':{'platforms':_0xb7a867},'debug':_0x1a6aaf[_0x554c(0x67)]});};export const storePIN=async(_0x5e4495,_0x412b1e={})=>{const _0x49f83a={'LFMOu':_0x554c(0x36),'LCidY':_0x554c(0x14),'mEsTK':function(_0xfd3c0a){return _0xfd3c0a();},'FrAsx':_0x554c(0x77),'tUrsU':'No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','asaHd':_0x554c(0x1a)},{debug:debug=![],username:_0x45632f}=_0x412b1e,_0x4fa96d=_0x45632f||_0x49f83a[_0x554c(0x78)](extractUsernameFromJWT);if(!_0x4fa96d){if(_0x49f83a[_0x554c(0x79)]!==_0x49f83a[_0x554c(0x79)])throw new _0x47779a(_0x49f83a[_0x554c(0x7a)],_0x49f83a[_0x554c(0x7b)]);else throw new ApiError(_0x49f83a['tUrsU'],_0x49f83a['asaHd']);}return makeUserApiRequest('store-pin/mobile','POST',{'data':{'username':_0x4fa96d,'pin':_0x5e4495},'debug':debug});};function _0x3757(){const _0x487ee5=['0|4|2|3|1','ApiError','bYJtW','split','name','VIvpg','code','fetch','JqyvU','isConnected','User\x20API\x20Response','No\x20network\x20connection\x20available','network_error','wMkVv','User\x20API\x20Request','[REDACTED]','PNaRs','server_error','unknown_error','AbortError','timeout_error','User\x20API\x20Error','An\x20unexpected\x20error\x20occurred','SbbwS','NqaTF','USIbJ','auth_error','jLsCj','SruXT','vevZc','kFucP','bLYfQ','mmGnb','stringify','json','status','MnSYD','HvDwN','BzZJK','CbXej','validation_error','qMuvC','mgmDf','pGKSe','REQGU','error','JboIj','HPNEH','ihnFw','oSeWq','details','yXUxk','ONacN','QofSS','Request\x20timed\x20out','WpXVu','VcHDX','message','Unknown\x20error','No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','fJtXl','FiAfs','HlVby','yltoy','JQgxm','HprRq','OgNHC','GFJlJ','nPIix','FeZTA','NhRJD','xZrVs','qzKtL','AYRbj','vPxsX','gUzTz','oHLOz','xqpek','hNoQs','kNoWm','mlhCH','rnUHY','aCGPv','aaQfc','zvsxU','GtXuS','Developer\x20API\x20Response','nyERO','FGGWx','mpAOL','pBRSt','dRQPU','API\x20request\x20failed','ZKabk','vACCJ','BSVvM','FBULR','Developer\x20API\x20Error','mARbv','IlCar','AKulM','BeNyF','gzMGx','debug','success','Aaajs','data','isValid','YhWsl','username','platforms','ZCfGI','userPin','auth/refresh','TsdRD','/data','CKsFf','ZXwxt','user/platforms','tnunr','mEsTK','FrAsx','LFMOu','LCidY','xBAIL','eSBcQ'];_0x3757=function(){return _0x487ee5;};return _0x3757();}export const getCurrentUserToken=async()=>{const _0x470717={'xBAIL':function(_0x2e66dd){return _0x2e66dd();}};return await _0x470717[_0x554c(0x7c)](getJWT);};export const isCurrentUserAuthenticated=()=>{const _0x2bed06={'eSBcQ':function(_0x41e33a){return _0x41e33a();}};return _0x2bed06[_0x554c(0x7d)](isUserAuthenticated);};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async
|
|
1
|
+
function _0x1e01(_0x30d41a,_0x1e01b5){_0x30d41a=_0x30d41a-0x0;const _0x1f9715=_0x30d4();let _0xf77c83=_0x1f9715[_0x30d41a];return _0xf77c83;}import{initializePlatformAuthService}from'../services/platformAuthService';export const executeOnairosFlow=async _0x4e17d3=>{const _0x18c563={'MFdQg':'❌\x20Onairos\x20flow\x20rejected:','gEUpe':function(_0x43109e,_0x15deda){return _0x43109e!==_0x15deda;},'UFvOF':'RXiwm','JduuE':function(_0x22ed50,_0x554387){return _0x22ed50(_0x554387);},'cGMdU':function(_0x420261,_0x428cb7){return _0x420261||_0x428cb7;},'tnZqX':_0x1e01(0x0),'TkoIM':_0x1e01(0x1),'YPauj':_0x1e01(0x2),'FRomI':function(_0x272a99){return _0x272a99();},'YABir':_0x1e01(0x3),'BQJLd':'iNOkV','LwuHs':'tLyay','DCaLw':_0x1e01(0x4),'qqnOM':_0x1e01(0x5),'uUrYK':function(_0x51851d){return _0x51851d();},'cLlKv':'../components/UniversalOnboarding','SRowC':_0x1e01(0x6)};try{console['log'](_0x18c563['qqnOM']),await _0x18c563['uUrYK'](initializePlatformAuthService);const {UniversalOnboarding:_0x38645c}=await import(_0x18c563[_0x1e01(0x7)]),React=await import('react');return new Promise((_0x34537f,_0x10f7a2)=>{const _0x1106b9={'PxRTM':_0x18c563[_0x1e01(0x8)],'dOzdE':function(_0x165f44,_0x190d46){return _0x18c563['gEUpe'](_0x165f44,_0x190d46);},'STafn':_0x18c563[_0x1e01(0x9)],'WezHZ':function(_0x1b2e13){return _0x18c563[_0x1e01(0xa)](_0x1b2e13);},'scRVf':_0x18c563[_0x1e01(0xb)]};if(_0x18c563[_0x1e01(0xc)](_0x18c563[_0x1e01(0xd)],_0x18c563[_0x1e01(0xe)])){let _0x115e3c=null;const _0x10a59f=(_0x1b8ff2,_0x1f6189,_0x25d6b7)=>{console[_0x1e01(0xf)](_0x1106b9['PxRTM']),_0x115e3c&&_0x115e3c['close']&&_0x115e3c[_0x1e01(0x10)](),_0x4e17d3[_0x1e01(0x11)]&&(_0x1106b9['dOzdE'](_0x1106b9['STafn'],_0x1106b9[_0x1e01(0x12)])?_0x27a4bb[_0x1e01(0x10)]():_0x4e17d3[_0x1e01(0x11)](_0x1b8ff2,_0x1f6189,_0x25d6b7)),_0x1106b9[_0x1e01(0x13)](_0x34537f);},_0x139771=_0x5af1bf=>{console[_0x1e01(0xf)](_0x18c563['MFdQg'],_0x5af1bf),_0x115e3c&&_0x115e3c['close']&&_0x115e3c[_0x1e01(0x10)](),_0x4e17d3['onRejection']&&(_0x18c563[_0x1e01(0xc)](_0x18c563['UFvOF'],_0x18c563[_0x1e01(0x14)])?(_0x57a3bd['log'](_0x1e01(0x1)),_0x27b1f7&&_0x304613[_0x1e01(0x10)]&&_0x1d8bd1[_0x1e01(0x10)](),_0x1f0509['onResolved']&&_0x359c54[_0x1e01(0x11)](_0x3eb081,_0x427a04,_0x395eeb),_0x1fe295()):_0x4e17d3[_0x1e01(0x15)](_0x5af1bf)),_0x18c563['JduuE'](_0x10f7a2,new Error(_0x18c563[_0x1e01(0x16)](_0x5af1bf,_0x18c563[_0x1e01(0x17)])));},_0x2a25b8=React[_0x1e01(0x18)](_0x38645c,{'visible':!![],'onClose':()=>_0x139771(_0x1e01(0x19)),'AppName':_0x4e17d3[_0x1e01(0x1a)],'requestData':_0x4e17d3['requestData'],'returnLink':_0x4e17d3[_0x1e01(0x1b)],'onComplete':_0x10a59f,'preferredPlatform':_0x4e17d3['preferredPlatform'],'debug':_0x4e17d3[_0x1e01(0x1c)],'testMode':_0x4e17d3[_0x1e01(0x1d)]});_0x115e3c=_0x2a25b8,console[_0x1e01(0xf)](_0x18c563['DCaLw']);}else _0xee66aa[_0x1e01(0x15)](_0x1106b9[_0x1e01(0x1e)]);});}catch(_0x4bd078){console[_0x1e01(0x1f)](_0x18c563[_0x1e01(0x20)],_0x4bd078);throw _0x4bd078;}};export const startOnairosFlow=async _0xaae838=>{const _0x243d07={'cfnME':function(_0x1f5052,_0x4fe56c){return _0x1f5052===_0x4fe56c;},'yTWAP':_0x1e01(0x21),'EvEwe':_0x1e01(0x22)};if(_0xaae838[_0x1e01(0x23)]){if(_0x243d07[_0x1e01(0x24)](_0x243d07[_0x1e01(0x25)],'sRnUA')){const _0x35a9c9=await _0xaae838[_0x1e01(0x23)]();if(!_0x35a9c9){console[_0x1e01(0xf)](_0x243d07['EvEwe']);_0xaae838[_0x1e01(0x15)]&&_0xaae838[_0x1e01(0x15)](_0x1e01(0x3));return;}}else _0x177dcc[_0x1e01(0x11)](_0x67cf12,_0x7418ce,_0x3e2db2);}return executeOnairosFlow(_0xaae838);};function _0x30d4(){const _0xaa82c2=['Onairos\x20flow\x20was\x20rejected','✅\x20Onairos\x20flow\x20completed\x20successfully','iqWrJ','Pre-check\x20failed','📱\x20Onairos\x20modal\x20should\x20be\x20displayed','🚀\x20Starting\x20Onairos\x20flow\x20programmatically...','❌\x20Failed\x20to\x20execute\x20Onairos\x20flow:','cLlKv','TkoIM','YPauj','FRomI','YABir','gEUpe','BQJLd','LwuHs','log','close','onResolved','STafn','WezHZ','UFvOF','onRejection','cGMdU','tnZqX','createElement','User\x20closed\x20the\x20modal','AppName','returnLink','debug','testMode','scRVf','error','SRowC','sRnUA','❌\x20Pre-check\x20failed,\x20not\x20starting\x20Onairos\x20flow','preCheck','cfnME','yTWAP'];_0x30d4=function(){return _0xaa82c2;};return _0x30d4();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x23cd(_0x54fe83,_0x23cd3e){_0x54fe83=_0x54fe83-0x0;const _0x286375=_0x54fe();let _0x59e079=_0x286375[_0x54fe83];return _0x59e079;}export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x50e2b4,_0x484195)=>{const _0x4a0d30={'zExwa':function(_0x3ee89d,_0xb392ec){return _0x3ee89d!==_0xb392ec;},'HPUIL':function(_0x5e6879,_0x1599ff){return _0x5e6879===_0x1599ff;},'GuIAX':_0x23cd(0x0),'dgEpB':'Network\x20request\x20failed','MBtsf':_0x23cd(0x1),'gPiBn':_0x23cd(0x2),'deuhr':_0x23cd(0x3),'Pfmlj':_0x23cd(0x4)};if(_0x50e2b4[_0x23cd(0x5)]>=0x190&&_0x50e2b4[_0x23cd(0x5)]<0x1f4&&_0x50e2b4[_0x23cd(0x5)]!==0x198&&_0x4a0d30[_0x23cd(0x6)](_0x50e2b4['status'],0x1ad))return![];if(_0x4a0d30[_0x23cd(0x7)](_0x50e2b4[_0x23cd(0x8)],_0x4a0d30['GuIAX'])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xb)])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xc)])||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xd)])||_0x50e2b4['message'][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0xe)])||_0x50e2b4['status']>=0x1f4)return!![];if(_0x50e2b4['message'][_0x23cd(0xa)](_0x23cd(0xf))||_0x50e2b4[_0x23cd(0x9)][_0x23cd(0xa)](_0x4a0d30[_0x23cd(0x10)]))return!![];return![];}};export async function withRetry(_0x15944d,_0x248bf1={}){const _0x44237d={'BFYad':function(_0x2a03c1,_0x44ebc6){return _0x2a03c1>=_0x44ebc6;},'wItuK':function(_0x4f3029,_0x4eaf9d){return _0x4f3029<_0x4eaf9d;},'OnXoq':function(_0x26a928,_0x29588a){return _0x26a928!==_0x29588a;},'stmMD':function(_0x43c4a0,_0x3266ad){return _0x43c4a0===_0x3266ad;},'uhHCT':_0x23cd(0x11),'bxuZV':_0x23cd(0x2),'ABIMY':'timeout','xJgoc':_0x23cd(0xf),'VGLki':_0x23cd(0x4),'BFrbf':function(_0x437e6f,_0x4c0d77){return _0x437e6f+_0x4c0d77;},'VvPeE':function(_0x536516,_0x48a29c){return _0x536516<=_0x48a29c;},'bxhdJ':function(_0x49c82c,_0x2c67ea){return _0x49c82c<=_0x2c67ea;},'SROHD':function(_0x11e2cd,_0x4b1f42){return _0x11e2cd+_0x4b1f42;},'nUwpu':_0x23cd(0x12),'CnrFo':_0x23cd(0x13),'ugjrs':function(_0x12fbcf,_0x141209){return _0x12fbcf+_0x141209;},'zqeIh':function(_0xe4fbce){return _0xe4fbce();},'tCDnK':function(_0x3ab9f5,_0x552562){return _0x3ab9f5-_0x552562;},'hEWeT':function(_0x302531,_0x48f60a){return _0x302531>_0x48f60a;},'UDsSC':_0x23cd(0x14),'HMNwO':function(_0x3ae1ad,_0x5092b1){return _0x3ae1ad*_0x5092b1;},'EWeHL':function(_0x43117f,_0x1e492b){return _0x43117f-_0x1e492b;},'rpudO':function(_0x24710d,_0x2f2caf){return _0x24710d*_0x2f2caf;},'rUyTu':function(_0xdf1f96,_0x3af322){return _0xdf1f96*_0x3af322;},'jGTZv':function(_0x3a7d72,_0x4dfe2c){return _0x3a7d72+_0x4dfe2c;},'zcHod':_0x23cd(0x15),'Vwwtx':'Unknown\x20error','zgVEk':function(_0x5de0e7,_0xb13ec4){return _0x5de0e7-_0xb13ec4;}},_0x14e912={...DEFAULT_RETRY_OPTIONS,..._0x248bf1},_0x3533ac=Date[_0x23cd(0x16)]();let _0x4b9883=null;for(let _0x4085f8=0x1;_0x44237d[_0x23cd(0x17)](_0x4085f8,_0x44237d['SROHD'](_0x14e912[_0x23cd(0x18)],0x1));_0x4085f8++){if(_0x44237d[_0x23cd(0x19)](_0x44237d[_0x23cd(0x1a)],'fbKXU')){if(_0x44237d[_0x23cd(0x1b)](_0x136d24[_0x23cd(0x5)],0x190)&&_0x44237d[_0x23cd(0x1c)](_0x3e15b9[_0x23cd(0x5)],0x1f4)&&_0x505a66[_0x23cd(0x5)]!==0x198&&_0x44237d[_0x23cd(0x1d)](_0x2a0b43[_0x23cd(0x5)],0x1ad))return![];if(_0x44237d[_0x23cd(0x19)](_0x595665[_0x23cd(0x8)],_0x23cd(0x0))||_0x353d5f[_0x23cd(0x9)]['includes'](_0x44237d['uhHCT'])||_0x5ae6cb[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x1))||_0x40d01d[_0x23cd(0x9)][_0x23cd(0xa)](_0x44237d['bxuZV'])||_0x7c21fd['message'][_0x23cd(0xa)](_0x44237d[_0x23cd(0x1e)])||_0x4ae833[_0x23cd(0x5)]>=0x1f4)return!![];if(_0x2a9970[_0x23cd(0x9)][_0x23cd(0xa)](_0x44237d[_0x23cd(0x1f)])||_0x22de6a[_0x23cd(0x9)]['includes'](_0x44237d['VGLki']))return!![];return![];}else try{_0x14e912['enableLogging']&&_0x4085f8>0x1&&(_0x44237d['CnrFo']!==_0x44237d[_0x23cd(0x20)]?_0x50905b[_0x23cd(0x21)](_0x23cd(0x22)+_0xa0303d+'/'+_0x44237d[_0x23cd(0x23)](_0x4c68a2[_0x23cd(0x18)],0x1)):console[_0x23cd(0x21)](_0x23cd(0x22)+_0x4085f8+'/'+_0x44237d[_0x23cd(0x24)](_0x14e912[_0x23cd(0x18)],0x1)));const _0x1dc3d3=await _0x44237d[_0x23cd(0x25)](_0x15944d);return{'success':!![],'data':_0x1dc3d3,'attempts':_0x4085f8,'totalDuration':_0x44237d[_0x23cd(0x26)](Date['now'](),_0x3533ac)};}catch(_0x294e18){_0x4b9883=_0x294e18;const _0x28dcaf=_0x14e912['shouldRetry']?_0x14e912[_0x23cd(0x27)](_0x294e18,_0x4085f8):!![];if(_0x44237d[_0x23cd(0x28)](_0x4085f8,_0x14e912[_0x23cd(0x18)])||!_0x28dcaf){_0x14e912[_0x23cd(0x29)]&&console[_0x23cd(0x2a)](_0x23cd(0x2b)+_0x294e18[_0x23cd(0x9)]);break;}let _0x3c52a0=_0x14e912[_0x23cd(0x2c)];if(_0x14e912[_0x23cd(0x2d)]){if(_0x44237d[_0x23cd(0x1d)](_0x44237d[_0x23cd(0x2e)],_0x44237d['UDsSC']))return!![];else _0x3c52a0=Math[_0x23cd(0x2f)](_0x44237d[_0x23cd(0x30)](_0x14e912[_0x23cd(0x2c)],Math[_0x23cd(0x31)](0x2,_0x44237d['EWeHL'](_0x4085f8,0x1))),_0x14e912[_0x23cd(0x32)]);}const _0x5b2223=_0x44237d[_0x23cd(0x33)](_0x44237d[_0x23cd(0x34)](Math[_0x23cd(0x35)](),0.1),_0x3c52a0);_0x3c52a0=Math['floor'](_0x44237d['jGTZv'](_0x3c52a0,_0x5b2223));if(_0x14e912[_0x23cd(0x36)]){if(_0x44237d['zcHod']!==_0x44237d[_0x23cd(0x37)])return _0x44237d[_0x23cd(0x38)](_0x48bcac,0x2);else _0x14e912['onRetry'](_0x294e18,_0x4085f8,_0x3c52a0);}_0x14e912['enableLogging']&&console['log'](_0x23cd(0x39)+_0x3c52a0+_0x23cd(0x3a)+_0x4085f8+'/'+(_0x14e912[_0x23cd(0x18)]+0x1)+')'),await new Promise(_0x265c73=>setTimeout(()=>_0x265c73(),_0x3c52a0));}}return{'success':![],'error':_0x4b9883||new Error(_0x44237d['Vwwtx']),'attempts':_0x14e912['maxRetries']+0x1,'totalDuration':_0x44237d['zgVEk'](Date[_0x23cd(0x16)](),_0x3533ac)};}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x5c5baa,_0x2b611a)=>{const _0x4679c7={'MDdCP':function(_0x48564d,_0xc1ae41){return _0x48564d===_0xc1ae41;},'niYWR':function(_0x40e00d,_0x59cbd8){return _0x40e00d!==_0x59cbd8;},'QIwqC':_0x23cd(0x3b),'mnpOC':_0x23cd(0x3c),'oRfBH':_0x23cd(0x3d),'LrLDi':function(_0x37e041,_0x1507bd){return _0x37e041===_0x1507bd;},'CAbsU':function(_0x2b3f3f,_0x2f0e72){return _0x2b3f3f<=_0x2f0e72;},'oKvDi':_0x23cd(0x0),'JMNjv':_0x23cd(0x11),'tJoFe':_0x23cd(0x1),'VLGCh':_0x23cd(0x2),'bpkbN':_0x23cd(0xf),'IYShH':_0x23cd(0x4),'orFEI':_0x23cd(0x3e)};if(_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x191)||_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x193))return _0x4679c7[_0x23cd(0x40)](_0x4679c7[_0x23cd(0x41)],_0x4679c7['mnpOC'])?![]:![];if(_0x4679c7['MDdCP'](_0x5c5baa[_0x23cd(0x5)],0x190)||_0x4679c7[_0x23cd(0x3f)](_0x5c5baa[_0x23cd(0x5)],0x194)&&!_0x5c5baa['message'][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x42)]))return![];if(_0x4679c7[_0x23cd(0x43)](_0x5c5baa[_0x23cd(0x5)],0x1ad))return _0x4679c7['CAbsU'](_0x2b611a,0x2);if(_0x5c5baa[_0x23cd(0x5)]>=0x1f4)return!![];if(_0x4679c7['LrLDi'](_0x5c5baa[_0x23cd(0x8)],_0x4679c7[_0x23cd(0x44)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x3))||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x45)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7['tJoFe'])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x46)]))return!![];if(_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x47)])||_0x5c5baa[_0x23cd(0x9)]['includes'](_0x4679c7[_0x23cd(0x48)])||_0x5c5baa[_0x23cd(0x9)][_0x23cd(0xa)](_0x4679c7[_0x23cd(0x49)]))return!![];return![];},'onRetry':(_0x5c9d73,_0x1b2dd3,_0x445620)=>{console['warn']('⚠️\x20API\x20call\x20failed\x20(attempt\x20'+_0x1b2dd3+'),\x20retrying\x20in\x20'+_0x445620+_0x23cd(0x4a)+_0x5c9d73[_0x23cd(0x9)]);}};function _0x54fe(){const _0x828a3a=['AbortError','fetch','ENOTFOUND','timeout','Unexpected\x20character','status','zExwa','HPUIL','name','message','includes','dgEpB','MBtsf','gPiBn','deuhr','JSON\x20Parse\x20error','Pfmlj','Network\x20request\x20failed','AahfC','rsrdg','zlkln','rpJQo','now','bxhdJ','maxRetries','stmMD','nUwpu','BFYad','wItuK','OnXoq','ABIMY','xJgoc','CnrFo','log','🔄\x20Retry\x20attempt\x20','BFrbf','ugjrs','zqeIh','tCDnK','shouldRetry','hEWeT','enableLogging','error','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','UDsSC','min','HMNwO','pow','maxDelay','rpudO','rUyTu','random','onRetry','zcHod','VvPeE','⏳\x20Waiting\x20','ms\x20before\x20retry\x20(attempt\x20','EIbwi','XgZnd','validation\x20endpoint','HTML\x20page\x20instead\x20of\x20JSON','MDdCP','niYWR','QIwqC','oRfBH','LrLDi','oKvDi','JMNjv','VLGCh','bpkbN','IYShH','orFEI','ms:\x20','DNS','AeDjD','LIEXe','tDMZj','wJSGd','KygvQ','aFGpz','data','OnairosReactNative/HealthCheck','XZgrf','FATXq','HcMWm','abort','jWogz','YuyOy','ADaoc','LoxZN','qzLKd','QRHqp','ntqKl'];_0x54fe=function(){return _0x828a3a;};return _0x54fe();}export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x2bdade,_0x479804)=>{const _0x58ea4a={'bJAlX':_0x23cd(0x4b),'AeDjD':function(_0x49f7c9,_0x2c1901){return _0x49f7c9===_0x2c1901;},'LIEXe':'AbortError'};return _0x2bdade[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x11))||_0x2bdade[_0x23cd(0x9)][_0x23cd(0xa)](_0x23cd(0x2))||_0x2bdade['message'][_0x23cd(0xa)](_0x58ea4a['bJAlX'])||_0x58ea4a[_0x23cd(0x4c)](_0x2bdade[_0x23cd(0x8)],_0x58ea4a[_0x23cd(0x4d)]);}};export async function fetchWithRetry(_0x42d813,_0x2c2180={},_0x2b5509=API_RETRY_OPTIONS){const _0x4fc698={'OgXgt':function(_0x3210c1,_0x3fb0ac,_0x2bb9b5){return _0x3210c1(_0x3fb0ac,_0x2bb9b5);},'wJSGd':function(_0x2c2ca9,_0x22ef7b){return _0x2c2ca9!==_0x22ef7b;},'KygvQ':'wImyi','aFGpz':_0x23cd(0x4e)},_0x41a008=await _0x4fc698['OgXgt'](withRetry,()=>fetch(_0x42d813,_0x2c2180),_0x2b5509);if(!_0x41a008['success']){if(_0x4fc698[_0x23cd(0x4f)](_0x4fc698[_0x23cd(0x50)],_0x4fc698[_0x23cd(0x51)]))throw _0x41a008[_0x23cd(0x2a)];else throw _0x5b0f9c['error'];}return _0x41a008[_0x23cd(0x52)];}export async function healthCheck(_0xc1de03,_0x255ca0=0x1388){const _0x354858={'HcMWm':function(_0x284339,_0x3ce2bd,_0x1a4ed1){return _0x284339(_0x3ce2bd,_0x1a4ed1);},'jWogz':function(_0x243910,_0x953d52,_0xdf4e35){return _0x243910(_0x953d52,_0xdf4e35);},'YuyOy':_0x23cd(0x53),'ADaoc':function(_0x1580ec,_0x202f14){return _0x1580ec-_0x202f14;},'LoxZN':function(_0x11b24e,_0x349ef4){return _0x11b24e===_0x349ef4;},'qzLKd':_0x23cd(0x54),'QRHqp':_0x23cd(0x55),'ntqKl':function(_0x577f17,_0xbfe89e){return _0x577f17-_0xbfe89e;}},_0x39c0c6=Date[_0x23cd(0x16)]();try{const _0x4b4624=new AbortController(),_0x5ceefb=_0x354858[_0x23cd(0x56)](setTimeout,()=>_0x4b4624[_0x23cd(0x57)](),_0x255ca0),_0x18ac34=await _0x354858[_0x23cd(0x58)](fetch,_0xc1de03,{'method':'GET','signal':_0x4b4624['signal'],'headers':{'User-Agent':_0x354858[_0x23cd(0x59)]}});return clearTimeout(_0x5ceefb),{'reachable':!![],'status':_0x18ac34['status'],'duration':_0x354858[_0x23cd(0x5a)](Date[_0x23cd(0x16)](),_0x39c0c6)};}catch(_0x3374d4){if(_0x354858[_0x23cd(0x5b)](_0x354858[_0x23cd(0x5c)],_0x354858[_0x23cd(0x5d)]))_0x4467e5[_0x23cd(0x36)](_0x36a58c,_0x3c5e08,_0x4a7127);else return{'reachable':![],'error':_0x3374d4[_0x23cd(0x9)],'duration':_0x354858[_0x23cd(0x5e)](Date[_0x23cd(0x16)](),_0x39c0c6)};}}
|
|
1
|
+
function _0x1844(_0x21065c,_0x1844a5){_0x21065c=_0x21065c-0x0;const _0x156f84=_0x2106();let _0x8ad93d=_0x156f84[_0x21065c];return _0x8ad93d;}function _0x2106(){const _0x249ace=['AbortError','Network\x20request\x20failed','fetch','timeout','JSON\x20Parse\x20error','Unexpected\x20character','status','ZqgfO','name','wwaPS','message','includes','uLirR','DPzpb','joazS','NBvsw','log','⏳\x20Waiting\x20','eQIbv','maxRetries','pwApO','xKTuc','UYDco','kIAxl','now','sZLEc','tqKwZ','fdYcp','sUXVV','aTgCj','UFUMS','shouldRetry','TOvpQ','enableLogging','❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20','baseDelay','exponentialBackoff','XFqJE','DGdsb','MsyWV','min','WzbYD','pow','EcVeG','maxDelay','sbdVw','uAXLq','HaiUv','dgAeB','LRsQX','HyQun','phtaL','ENOTFOUND','xkXSF','random','floor','onRetry','xKgII','error','IdoVt','VEJTV','HTML\x20page\x20instead\x20of\x20JSON','xgRwu','CwLTM','HmQuh','aCnWL','XCUNH','AIBlx','SdvUJ','GyXOg','warn','⚠️\x20API\x20call\x20failed\x20(attempt\x20','),\x20retrying\x20in\x20','ms:\x20','Ahewd','DNS','aAbCj','eMpkj','data','OnairosReactNative/HealthCheck','lHCIh','RdEWL','abort','signal','DrfHf','LdRRc','NUUEB','wZTQs','kYsWF','srFMB','QLagj'];_0x2106=function(){return _0x249ace;};return _0x2106();}export const DEFAULT_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'enableLogging':![],'shouldRetry':(_0x21e013,_0x116a4b)=>{const _0x5eaf25={'eQIbv':function(_0x5d0110,_0x19e4fc){return _0x5d0110+_0x19e4fc;},'ZqgfO':function(_0x2fa666,_0x55bc3d){return _0x2fa666<_0x55bc3d;},'XzNwa':function(_0x2ec225,_0x58729a){return _0x2ec225!==_0x58729a;},'wwaPS':_0x1844(0x0),'vWOux':_0x1844(0x1),'nXIge':_0x1844(0x2),'rXucA':'ENOTFOUND','uLirR':_0x1844(0x3),'SDfiS':_0x1844(0x4),'DPzpb':_0x1844(0x5),'joazS':function(_0x43d501,_0x387239){return _0x43d501!==_0x387239;},'NAvrj':'cZSqh'};if(_0x21e013[_0x1844(0x6)]>=0x190&&_0x5eaf25[_0x1844(0x7)](_0x21e013[_0x1844(0x6)],0x1f4)&&_0x5eaf25['XzNwa'](_0x21e013[_0x1844(0x6)],0x198)&&_0x5eaf25['XzNwa'](_0x21e013[_0x1844(0x6)],0x1ad))return![];if(_0x21e013[_0x1844(0x8)]===_0x5eaf25[_0x1844(0x9)]||_0x21e013[_0x1844(0xa)][_0x1844(0xb)](_0x5eaf25['vWOux'])||_0x21e013[_0x1844(0xa)][_0x1844(0xb)](_0x5eaf25['nXIge'])||_0x21e013[_0x1844(0xa)][_0x1844(0xb)](_0x5eaf25['rXucA'])||_0x21e013[_0x1844(0xa)]['includes'](_0x5eaf25[_0x1844(0xc)])||_0x21e013[_0x1844(0x6)]>=0x1f4)return!![];if(_0x21e013[_0x1844(0xa)][_0x1844(0xb)](_0x5eaf25['SDfiS'])||_0x21e013[_0x1844(0xa)][_0x1844(0xb)](_0x5eaf25[_0x1844(0xd)])){if(_0x5eaf25[_0x1844(0xe)](_0x5eaf25['NAvrj'],_0x1844(0xf)))return!![];else _0x4e7435[_0x1844(0x10)](_0x1844(0x11)+_0x5cf948+'ms\x20before\x20retry\x20(attempt\x20'+_0x4fa3e5+'/'+_0x5eaf25[_0x1844(0x12)](_0x53b5da[_0x1844(0x13)],0x1)+')');}return![];}};export async function withRetry(_0x4e26d4,_0x3937fe={}){const _0x2d2be0={'MazLb':function(_0x4ffbcc,_0x52dcdd){return _0x4ffbcc<=_0x52dcdd;},'sbdVw':function(_0x1dd87f,_0x4af9a5){return _0x1dd87f>=_0x4af9a5;},'uAXLq':function(_0x4535a7,_0x98c1f6){return _0x4535a7<_0x98c1f6;},'HaiUv':function(_0x2d96a6,_0x44fcf1){return _0x2d96a6!==_0x44fcf1;},'dgAeB':function(_0x3851cc,_0x5973ff){return _0x3851cc===_0x5973ff;},'LRsQX':_0x1844(0x0),'HyQun':'Network\x20request\x20failed','phtaL':_0x1844(0x2),'CXnBB':_0x1844(0x3),'xkXSF':_0x1844(0x5),'sZLEc':function(_0x396853,_0xfd554f){return _0x396853<=_0xfd554f;},'tqKwZ':_0x1844(0x14),'ONtJW':function(_0x1cbe70,_0x5e01e4){return _0x1cbe70>_0x5e01e4;},'fdYcp':function(_0x35e8f4,_0x52cac6){return _0x35e8f4+_0x52cac6;},'Klmwr':function(_0x12808){return _0x12808();},'sUXVV':function(_0x14b909,_0x593fbc){return _0x14b909-_0x593fbc;},'aTgCj':function(_0xe6ad79,_0x43337b){return _0xe6ad79===_0x43337b;},'UFUMS':_0x1844(0x15),'TOvpQ':function(_0x149b9a,_0x1db532){return _0x149b9a>_0x1db532;},'XFqJE':function(_0x3ff67e,_0x3cffb7){return _0x3ff67e!==_0x3cffb7;},'DGdsb':_0x1844(0x16),'MsyWV':'IlABD','WzbYD':function(_0x31d267,_0x49edae){return _0x31d267*_0x49edae;},'EcVeG':function(_0x2af421,_0x1196d8){return _0x2af421-_0x1196d8;},'xKgII':_0x1844(0x17),'oeicU':function(_0x2c08ed,_0x42beb2){return _0x2c08ed+_0x42beb2;},'IdoVt':function(_0x2f8bfe,_0xe54a1f){return _0x2f8bfe-_0xe54a1f;}},_0x1540e2={...DEFAULT_RETRY_OPTIONS,..._0x3937fe},_0x2e3ae0=Date[_0x1844(0x18)]();let _0x426849=null;for(let _0x2dce36=0x1;_0x2d2be0[_0x1844(0x19)](_0x2dce36,_0x1540e2[_0x1844(0x13)]+0x1);_0x2dce36++){try{if(_0x2d2be0['dgAeB'](_0x2d2be0[_0x1844(0x1a)],_0x2d2be0[_0x1844(0x1a)])){_0x1540e2['enableLogging']&&_0x2d2be0['ONtJW'](_0x2dce36,0x1)&&console[_0x1844(0x10)]('🔄\x20Retry\x20attempt\x20'+_0x2dce36+'/'+_0x2d2be0[_0x1844(0x1b)](_0x1540e2[_0x1844(0x13)],0x1));const _0x300584=await _0x2d2be0['Klmwr'](_0x4e26d4);return{'success':!![],'data':_0x300584,'attempts':_0x2dce36,'totalDuration':_0x2d2be0[_0x1844(0x1c)](Date['now'](),_0x2e3ae0)};}else return _0x2d2be0['MazLb'](_0x290ce4,0x2);}catch(_0x41cd47){if(_0x2d2be0[_0x1844(0x1d)](_0x2d2be0[_0x1844(0x1e)],_0x2d2be0[_0x1844(0x1e)])){_0x426849=_0x41cd47;const _0x6de8f5=_0x1540e2[_0x1844(0x1f)]?_0x1540e2[_0x1844(0x1f)](_0x41cd47,_0x2dce36):!![];if(_0x2d2be0[_0x1844(0x20)](_0x2dce36,_0x1540e2[_0x1844(0x13)])||!_0x6de8f5){_0x1540e2[_0x1844(0x21)]&&console['error'](_0x1844(0x22)+_0x41cd47['message']);break;}let _0x58d6d6=_0x1540e2[_0x1844(0x23)];if(_0x1540e2[_0x1844(0x24)]){if(_0x2d2be0[_0x1844(0x25)](_0x2d2be0[_0x1844(0x26)],_0x2d2be0[_0x1844(0x27)]))_0x58d6d6=Math[_0x1844(0x28)](_0x2d2be0[_0x1844(0x29)](_0x1540e2[_0x1844(0x23)],Math[_0x1844(0x2a)](0x2,_0x2d2be0[_0x1844(0x2b)](_0x2dce36,0x1))),_0x1540e2[_0x1844(0x2c)]);else{if(_0x2d2be0[_0x1844(0x2d)](_0x4a1d00[_0x1844(0x6)],0x190)&&_0x2d2be0[_0x1844(0x2e)](_0x5d3b53[_0x1844(0x6)],0x1f4)&&_0x2d2be0[_0x1844(0x2f)](_0x28812e['status'],0x198)&&_0x2d2be0[_0x1844(0x2f)](_0x213779[_0x1844(0x6)],0x1ad))return![];if(_0x2d2be0[_0x1844(0x30)](_0x3787f7['name'],_0x2d2be0[_0x1844(0x31)])||_0x385ea4[_0x1844(0xa)][_0x1844(0xb)](_0x2d2be0[_0x1844(0x32)])||_0x35fffa[_0x1844(0xa)][_0x1844(0xb)](_0x2d2be0[_0x1844(0x33)])||_0x4567a5['message'][_0x1844(0xb)](_0x1844(0x34))||_0x266d14[_0x1844(0xa)][_0x1844(0xb)](_0x2d2be0['CXnBB'])||_0x13a26d['status']>=0x1f4)return!![];if(_0x21924f['message']['includes']('JSON\x20Parse\x20error')||_0x1d4500[_0x1844(0xa)][_0x1844(0xb)](_0x2d2be0[_0x1844(0x35)]))return!![];return![];}}const _0x467cc4=_0x2d2be0[_0x1844(0x29)](Math[_0x1844(0x36)](),0.1)*_0x58d6d6;_0x58d6d6=Math[_0x1844(0x37)](_0x58d6d6+_0x467cc4),_0x1540e2['onRetry']&&_0x1540e2[_0x1844(0x38)](_0x41cd47,_0x2dce36,_0x58d6d6),_0x1540e2[_0x1844(0x21)]&&(_0x2d2be0[_0x1844(0x30)](_0x2d2be0[_0x1844(0x39)],_0x2d2be0['xKgII'])?console[_0x1844(0x10)](_0x1844(0x11)+_0x58d6d6+'ms\x20before\x20retry\x20(attempt\x20'+_0x2dce36+'/'+_0x2d2be0['oeicU'](_0x1540e2[_0x1844(0x13)],0x1)+')'):_0x5288ab[_0x1844(0x3a)]('❌\x20All\x20retry\x20attempts\x20exhausted\x20or\x20error\x20not\x20retryable:\x20'+_0x13e450[_0x1844(0xa)])),await new Promise(_0x11a60d=>setTimeout(()=>_0x11a60d(),_0x58d6d6));}else return!![];}}return{'success':![],'error':_0x426849||new Error('Unknown\x20error'),'attempts':_0x2d2be0['fdYcp'](_0x1540e2['maxRetries'],0x1),'totalDuration':_0x2d2be0[_0x1844(0x3b)](Date[_0x1844(0x18)](),_0x2e3ae0)};}export const API_RETRY_OPTIONS={'maxRetries':0x3,'baseDelay':0x3e8,'maxDelay':0x1388,'exponentialBackoff':!![],'shouldRetry':(_0x30ea96,_0x25c305)=>{const _0xfb2264={'hzqBY':function(_0x25ea6e,_0x1a0bc8){return _0x25ea6e+_0x1a0bc8;},'USLSR':function(_0x376bcd,_0x119f07){return _0x376bcd===_0x119f07;},'xgRwu':function(_0x28102c,_0x11d61e){return _0x28102c===_0x11d61e;},'CwLTM':function(_0x353236,_0x3791e1){return _0x353236<=_0x3791e1;},'HmQuh':function(_0x5e3ea5,_0x1f99e6){return _0x5e3ea5>=_0x1f99e6;},'aCnWL':function(_0x1a7f93,_0x571705){return _0x1a7f93===_0x571705;},'rhOZR':_0x1844(0x0),'XCUNH':_0x1844(0x2),'AIBlx':_0x1844(0x3c),'SdvUJ':_0x1844(0x5),'GyXOg':_0x1844(0x3d)};if(_0xfb2264['USLSR'](_0x30ea96[_0x1844(0x6)],0x191)||_0x30ea96[_0x1844(0x6)]===0x193)return![];if(_0x30ea96[_0x1844(0x6)]===0x190||_0xfb2264[_0x1844(0x3e)](_0x30ea96[_0x1844(0x6)],0x194)&&!_0x30ea96[_0x1844(0xa)][_0x1844(0xb)]('validation\x20endpoint'))return![];if(_0x30ea96[_0x1844(0x6)]===0x1ad)return _0xfb2264[_0x1844(0x3f)](_0x25c305,0x2);if(_0xfb2264[_0x1844(0x40)](_0x30ea96[_0x1844(0x6)],0x1f4))return!![];if(_0xfb2264[_0x1844(0x41)](_0x30ea96[_0x1844(0x8)],_0xfb2264['rhOZR'])||_0x30ea96['message'][_0x1844(0xb)](_0x1844(0x3))||_0x30ea96['message'][_0x1844(0xb)]('Network\x20request\x20failed')||_0x30ea96[_0x1844(0xa)][_0x1844(0xb)](_0xfb2264[_0x1844(0x42)])||_0x30ea96[_0x1844(0xa)][_0x1844(0xb)](_0x1844(0x34))){if(_0xfb2264[_0x1844(0x43)]!==_0x1844(0x3c))_0xea999d[_0x1844(0x10)]('🔄\x20Retry\x20attempt\x20'+_0x30da3b+'/'+_0xfb2264['hzqBY'](_0x5e1955[_0x1844(0x13)],0x1));else return!![];}if(_0x30ea96[_0x1844(0xa)]['includes'](_0x1844(0x4))||_0x30ea96['message']['includes'](_0xfb2264[_0x1844(0x44)])||_0x30ea96[_0x1844(0xa)][_0x1844(0xb)](_0xfb2264[_0x1844(0x45)]))return!![];return![];},'onRetry':(_0x4d9df4,_0x18163e,_0x41d7b8)=>{console[_0x1844(0x46)](_0x1844(0x47)+_0x18163e+_0x1844(0x48)+_0x41d7b8+_0x1844(0x49)+_0x4d9df4[_0x1844(0xa)]);}};export const NETWORK_RETRY_OPTIONS={'maxRetries':0x2,'baseDelay':0x7d0,'maxDelay':0x1f40,'exponentialBackoff':!![],'shouldRetry':(_0x4b3705,_0x5ce6ce)=>{const _0x3e9691={'Ahewd':_0x1844(0x1),'HdUjE':_0x1844(0x34),'aAbCj':function(_0x2224bb,_0x17a7dd){return _0x2224bb===_0x17a7dd;}};return _0x4b3705[_0x1844(0xa)]['includes'](_0x3e9691[_0x1844(0x4a)])||_0x4b3705[_0x1844(0xa)][_0x1844(0xb)](_0x3e9691['HdUjE'])||_0x4b3705[_0x1844(0xa)][_0x1844(0xb)](_0x1844(0x4b))||_0x3e9691[_0x1844(0x4c)](_0x4b3705[_0x1844(0x8)],_0x1844(0x0));}};export async function fetchWithRetry(_0x46c1c3,_0x3134bd={},_0x51108f=API_RETRY_OPTIONS){const _0x457b3e={'eMpkj':function(_0x43d7c7,_0x33113a,_0x192088){return _0x43d7c7(_0x33113a,_0x192088);}},_0x1ace78=await _0x457b3e[_0x1844(0x4d)](withRetry,()=>fetch(_0x46c1c3,_0x3134bd),_0x51108f);if(!_0x1ace78['success'])throw _0x1ace78[_0x1844(0x3a)];return _0x1ace78[_0x1844(0x4e)];}export async function healthCheck(_0x1d47a7,_0x337a35=0x1388){const _0x1db7d2={'RdEWL':function(_0x3423ff,_0x1c85c2,_0x5ca832){return _0x3423ff(_0x1c85c2,_0x5ca832);},'DrfHf':_0x1844(0x4f),'LdRRc':function(_0x2dfa1c,_0x2f0b32){return _0x2dfa1c(_0x2f0b32);},'NUUEB':function(_0x3d077b,_0x25bf5b){return _0x3d077b-_0x25bf5b;},'wZTQs':function(_0x3ecaa6,_0x2b6357){return _0x3ecaa6!==_0x2b6357;},'srFMB':_0x1844(0x50),'QLagj':function(_0x1fa040,_0xaf9740){return _0x1fa040-_0xaf9740;}},_0x110199=Date[_0x1844(0x18)]();try{const _0x4be014=new AbortController(),_0x3a418f=_0x1db7d2[_0x1844(0x51)](setTimeout,()=>_0x4be014[_0x1844(0x52)](),_0x337a35),_0x593f1e=await _0x1db7d2[_0x1844(0x51)](fetch,_0x1d47a7,{'method':'GET','signal':_0x4be014[_0x1844(0x53)],'headers':{'User-Agent':_0x1db7d2[_0x1844(0x54)]}});return _0x1db7d2[_0x1844(0x55)](clearTimeout,_0x3a418f),{'reachable':!![],'status':_0x593f1e['status'],'duration':_0x1db7d2[_0x1844(0x56)](Date[_0x1844(0x18)](),_0x110199)};}catch(_0x505a4c){if(_0x1db7d2[_0x1844(0x57)](_0x1844(0x58),_0x1db7d2[_0x1844(0x59)]))return{'reachable':![],'error':_0x505a4c[_0x1844(0xa)],'duration':_0x1db7d2[_0x1844(0x5a)](Date['now'](),_0x110199)};else _0x12a294[_0x1844(0x38)](_0x3c75c5,_0x225dd4,_0x275d13);}}
|
|
@@ -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';function _0x9688(){const _0x4078a7=['onairos_jwt_token','warn','mock','pXrpJ','getGenericPassword','function','FLUnt','DoXXw','ooMbs','service','default','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','nJfbY','Error\x20verifying\x20credentials:','WVIZY','pwIYn','vXYoM','AQcmC','pYovY','nOxkP','ViueX','error','qeEdI','setGenericPassword','SEjxO','yNQUd','Username\x20is\x20required\x20for\x20storing\x20credentials','sLibn','kvtIg','XJUPl','qtSyS','VUXDO','resetGenericPassword','qBVdD','cyTLO','mYorQ','EaWzD','ZexBo','gnYtl','UnMKd','hQDWI','nDZLU','Error\x20storing\x20credentials:','tAAjF','uSOVr','createdAt','credentials','web','enmio','eIFNT','fGwcj','accessControl','ACCESS_CONTROL','BIOMETRY_ANY_OR_DEVICE_PASSCODE','ACCESSIBLE','WHEN_UNLOCKED','WduZh','XCrtC','stringify','WRUYW','tXLYt','Inwdw','YDZwD','DNeAl','gFCit','Error\x20getting\x20credentials:','IGBqF','bXdAz','yiOVK','parse','ykHGu','lqoqn','nusLG','kRQEt','Error\x20deleting\x20credentials:','PlGRQ','ispLc','tKePb','yXQCG','lhmtp','toString','substring','dev_','RAXVQ','LmBYa','Error\x20checking\x20credentials:','NcVQU','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','JIkFE','VSjgl','BVaCc','getItem','MMvRm','cZrls','❌\x20Failed\x20to\x20check\x20JWT\x20token:','WoCWo','vtRqN','vRxTO','qWGun','kKkds','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','yjpbP','IzxTS','YAFSn','removeItem','log','🗑️\x20JWT\x20token\x20cleared','BdIsT','length','uPyQF','UfOny','indexOf','IDfEQ','charAt','ATNfT','tOYEp','fromCharCode','TEzOj','gZkZn','YpXDs','LBxZF','OXinB','fEuQL','eVjTn','SHlUw','LVKDw','pqiQT','MhZUx','ktczc','OEBJW','HniYl','iWCqM','JMYAO','AYian','ivitL','ybLAQ','GHiUW','vrhTO','SBNaH','fYenk','Ylonl','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','split','CkGiT','HXBLr','ZoIWB','TGyeR','JzlnH','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','exp','now','iLGQc','ByqMI'];_0x9688=function(){return _0x4078a7;};return _0x9688();}const JWT_TOKEN_KEY=_0x6356(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x4a3915){console[_0x6356(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x6356(0x2)},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x6356(0x2)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}function _0x6356(_0x9688c,_0x635677){_0x9688c=_0x9688c-0x0;const _0x447dd1=_0x9688();let _0x39350a=_0x447dd1[_0x9688c];return _0x39350a;}const isKeychainAvailable=()=>{const _0x568419={'pXrpJ':function(_0x3edbf0,_0x111dc7){return _0x3edbf0===_0x111dc7;}};try{return Keychain&&_0x568419[_0x6356(0x3)](typeof Keychain[_0x6356(0x4)],_0x6356(0x5));}catch(_0x493ada){return![];}},safeGetGenericPassword=async _0x256462=>{const _0x5b02d7={'FLUnt':function(_0x37f6b0){return _0x37f6b0();},'DoXXw':function(_0x4e14b2,_0x88feec){return _0x4e14b2===_0x88feec;},'ooMbs':function(_0x5858d9,_0x511371){return _0x5858d9===_0x511371;},'nJfbY':'default'};try{if(_0x5b02d7[_0x6356(0x6)](isKeychainAvailable))return await Keychain[_0x6356(0x4)](_0x256462);else{const _0x4ad3e6=(_0x5b02d7[_0x6356(0x7)](_0x256462,null)||_0x5b02d7[_0x6356(0x8)](_0x256462,void 0x0)?void 0x0:_0x256462[_0x6356(0x9)])||_0x6356(0xa);return mockStorage[_0x4ad3e6]||null;}}catch(_0x37e55e){console[_0x6356(0x1)](_0x6356(0xb),_0x37e55e);const _0x4195b7=(_0x256462===null||_0x5b02d7[_0x6356(0x8)](_0x256462,void 0x0)?void 0x0:_0x256462[_0x6356(0x9)])||_0x5b02d7[_0x6356(0xc)];return mockStorage[_0x4195b7]||null;}},safeSetGenericPassword=async(_0x18ce7e,_0xa9bd2a,_0x5974d9)=>{const _0x2bbc60={'qeEdI':'❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','rVcbK':_0x6356(0xd),'vXYoM':function(_0x69fb15,_0x44226f){return _0x69fb15===_0x44226f;},'AQcmC':_0x6356(0xe),'pYovY':function(_0x4603db){return _0x4603db();},'nOxkP':_0x6356(0xf),'SEjxO':_0x6356(0xa),'yNQUd':_0x6356(0xb)};try{if(_0x2bbc60[_0x6356(0x10)](_0x2bbc60['AQcmC'],_0x2bbc60[_0x6356(0x11)])){if(_0x2bbc60[_0x6356(0x12)](isKeychainAvailable))return _0x2bbc60[_0x6356(0x10)](_0x2bbc60[_0x6356(0x13)],_0x6356(0x14))?(_0x4cce8f[_0x6356(0x15)](_0x2bbc60[_0x6356(0x16)],_0x11bed1),null):await Keychain[_0x6356(0x17)](_0x18ce7e,_0xa9bd2a,_0x5974d9);else{const _0x5d46b4=(_0x5974d9===null||_0x2bbc60[_0x6356(0x10)](_0x5974d9,void 0x0)?void 0x0:_0x5974d9[_0x6356(0x9)])||_0x2bbc60[_0x6356(0x18)];return mockStorage[_0x5d46b4]={'username':_0x18ce7e,'password':_0xa9bd2a},!![];}}else try{if(!_0x4143d8())return!![];return!![];}catch(_0x18f500){return _0x4c61bd[_0x6356(0x15)](_0x2bbc60['rVcbK'],_0x18f500),![];}}catch(_0x499625){console[_0x6356(0x1)](_0x2bbc60[_0x6356(0x19)],_0x499625);const _0x16760f=(_0x2bbc60['vXYoM'](_0x5974d9,null)||_0x5974d9===void 0x0?void 0x0:_0x5974d9[_0x6356(0x9)])||_0x6356(0xa);return mockStorage[_0x16760f]={'username':_0x18ce7e,'password':_0xa9bd2a},!![];}},safeResetGenericPassword=async _0x2a917f=>{const _0x485527={'mYorQ':_0x6356(0x1a),'XJUPl':function(_0x1219cf){return _0x1219cf();},'qtSyS':function(_0x57098a,_0x2ea49c){return _0x57098a===_0x2ea49c;},'VUXDO':_0x6356(0x1b),'cyTLO':_0x6356(0x1c),'EaWzD':function(_0x3c5a0b,_0x31ef22){return _0x3c5a0b===_0x31ef22;},'ZexBo':_0x6356(0xa),'gnYtl':_0x6356(0xb)};try{if(_0x485527[_0x6356(0x1d)](isKeychainAvailable))return _0x485527[_0x6356(0x1e)](_0x485527[_0x6356(0x1f)],_0x6356(0x1b))?await Keychain[_0x6356(0x20)](_0x2a917f):!![];else{if(_0x485527[_0x6356(0x1e)](_0x6356(0x21),_0x485527[_0x6356(0x22)]))throw new _0x9df7f2(_0x485527[_0x6356(0x23)]);else{const _0x7afdca=(_0x485527[_0x6356(0x24)](_0x2a917f,null)||_0x485527[_0x6356(0x24)](_0x2a917f,void 0x0)?void 0x0:_0x2a917f[_0x6356(0x9)])||_0x485527[_0x6356(0x25)];return delete mockStorage[_0x7afdca],!![];}}}catch(_0x4ccd39){console[_0x6356(0x1)](_0x485527[_0x6356(0x26)],_0x4ccd39);const _0x7637e2=(_0x485527[_0x6356(0x1e)](_0x2a917f,null)||_0x2a917f===void 0x0?void 0x0:_0x2a917f['service'])||_0x485527[_0x6356(0x25)];return delete mockStorage[_0x7637e2],!![];}};export const storeCredentials=async _0x3b0823=>{const _0x3d4cab={'uSOVr':function(_0x141dee,_0x28c7a4){return _0x141dee===_0x28c7a4;},'WduZh':_0x6356(0xa),'kAUBi':function(_0x5cd940,_0x3bd9e4){return _0x5cd940(_0x3bd9e4);},'tAAjF':function(_0x3931f9){return _0x3931f9();},'enmio':function(_0x2f1f07,_0x5a393b){return _0x2f1f07!==_0x5a393b;},'eIFNT':_0x6356(0x27),'fGwcj':_0x6356(0x28),'XCrtC':function(_0x31dd5c,_0x495199,_0x231dc6,_0x41ac2e){return _0x31dd5c(_0x495199,_0x231dc6,_0x41ac2e);},'WRUYW':function(_0x83b407,_0x50e5d0){return _0x83b407!==_0x50e5d0;},'tXLYt':'rdzAM','Inwdw':_0x6356(0x29),'YDZwD':_0x6356(0x2a)};try{const _0x52b890=await _0x3d4cab[_0x6356(0x2b)](getCredentials),_0xbc58e5={..._0x52b890,..._0x3b0823,'createdAt':(_0x52b890===null||_0x3d4cab[_0x6356(0x2c)](_0x52b890,void 0x0)?void 0x0:_0x52b890[_0x6356(0x2d)])||Date['now']()},_0x7e63bc=_0xbc58e5['username'];if(!_0x7e63bc)throw new Error(_0x6356(0x1a));const _0x124f62={'service':STORAGE_KEYS[_0x6356(0x2e)]};if(Platform['OS']!==_0x6356(0x2f)&&isKeychainAvailable()){if(_0x3d4cab[_0x6356(0x30)](_0x3d4cab[_0x6356(0x31)],_0x3d4cab[_0x6356(0x32)]))_0x124f62[_0x6356(0x33)]=Keychain[_0x6356(0x34)][_0x6356(0x35)],_0x124f62['accessible']=Keychain[_0x6356(0x36)][_0x6356(0x37)];else{const _0x5b1ae3=(_0x3d4cab[_0x6356(0x2c)](_0x41ae94,null)||_0x3d4cab[_0x6356(0x2c)](_0x4fec87,void 0x0)?void 0x0:_0x50131d[_0x6356(0x9)])||_0x3d4cab[_0x6356(0x38)];return _0x41c318[_0x5b1ae3]||null;}}return await _0x3d4cab[_0x6356(0x39)](safeSetGenericPassword,_0x7e63bc,JSON[_0x6356(0x3a)](_0xbc58e5),_0x124f62),!![];}catch(_0x340ab8){if(_0x3d4cab[_0x6356(0x3b)](_0x3d4cab[_0x6356(0x3c)],_0x3d4cab[_0x6356(0x3d)]))return console[_0x6356(0x15)](_0x3d4cab[_0x6356(0x3e)],_0x340ab8),![];else Keychain=_0x3d4cab['kAUBi'](_0x4266c9,0x0);}};export const getCredentials=async()=>{const _0x5b8b01={'DJWnB':_0x6356(0xd),'jZKvE':function(_0x1716e1,_0x5782c5){return _0x1716e1(_0x5782c5);},'IGBqF':function(_0x2c8e3e,_0x23b744){return _0x2c8e3e===_0x23b744;},'bXdAz':_0x6356(0x3f),'yiOVK':_0x6356(0x40),'JOaCY':_0x6356(0x41)};try{const _0xdc6d63=await _0x5b8b01['jZKvE'](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x6356(0x2e)]});if(_0xdc6d63)return _0x5b8b01[_0x6356(0x42)](_0x5b8b01[_0x6356(0x43)],_0x5b8b01[_0x6356(0x44)])?(_0x5f19f0[_0x6356(0x15)](_0x5b8b01['DJWnB'],_0x2f316d),![]):JSON[_0x6356(0x45)](_0xdc6d63['password']);return null;}catch(_0x2797e1){return console[_0x6356(0x15)](_0x5b8b01['JOaCY'],_0x2797e1),null;}};export const hasCredentials=async()=>{const _0x2c93ff={'lqoqn':function(_0xbc616,_0x1456c4){return _0xbc616!==_0x1456c4;},'nusLG':_0x6356(0x46)};try{const _0x3ef45f=await safeGetGenericPassword({'service':STORAGE_KEYS[_0x6356(0x2e)]});return!!_0x3ef45f;}catch(_0x4edb19){if(_0x2c93ff[_0x6356(0x47)](_0x2c93ff[_0x6356(0x48)],_0x2c93ff[_0x6356(0x48)]))_0x240cb2[_0x6356(0x33)]=Keychain[_0x6356(0x34)]['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x448057['accessible']=Keychain[_0x6356(0x36)][_0x6356(0x37)];else return console[_0x6356(0x15)]('Error\x20checking\x20credentials:',_0x4edb19),![];}};export const deleteCredentials=async()=>{const _0x402b8f={'yXQCG':_0x6356(0x2),'PhPva':function(_0x393b9f,_0x249e36){return _0x393b9f(_0x249e36);},'PlGRQ':function(_0x26df57,_0x521c01){return _0x26df57!==_0x521c01;},'ispLc':_0x6356(0x49),'tKePb':_0x6356(0x4a)};try{return await _0x402b8f['PhPva'](safeResetGenericPassword,{'service':STORAGE_KEYS['credentials']}),!![];}catch(_0x4e4d86){if(_0x402b8f[_0x6356(0x4b)]('fYtkW',_0x402b8f[_0x6356(0x4c)]))return console[_0x6356(0x15)](_0x402b8f[_0x6356(0x4d)],_0x4e4d86),![];else _0x2ad927[_0x6356(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x402b8f[_0x6356(0x4e)]},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x402b8f['yXQCG']},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}};export const updateCredentials=async _0x173aef=>{const _0x3e3f36={'lhmtp':function(_0x588cf0,_0x126078){return _0x588cf0(_0x126078);}};return _0x3e3f36[_0x6356(0x4f)](storeCredentials,_0x173aef);};export const generateDeviceUsername=()=>{const _0x5837b4=Math['random']()[_0x6356(0x50)](0x24)[_0x6356(0x51)](0x2,0xa);return _0x6356(0x52)+_0x5837b4;};export const verifyCredentials=async _0x3c1bb8=>{const _0x1eb670={'RAXVQ':function(_0x5a7256){return _0x5a7256();},'LmBYa':'Error\x20verifying\x20credentials:'};try{if(!_0x1eb670[_0x6356(0x53)](isKeychainAvailable))return!![];return!![];}catch(_0x49b5b0){return console[_0x6356(0x15)](_0x1eb670[_0x6356(0x54)],_0x49b5b0),![];}};export const getJWT=async()=>{const _0x2aefc8={'EOSMe':_0x6356(0x55),'JIkFE':function(_0x88f155,_0x595399){return _0x88f155===_0x595399;},'VSjgl':'NyMDm','BVaCc':_0x6356(0x56),'MMvRm':_0x6356(0x57)};try{if(_0x2aefc8[_0x6356(0x58)](_0x2aefc8[_0x6356(0x59)],_0x2aefc8[_0x6356(0x5a)]))return _0x3388f0[_0x6356(0x15)](_0x2aefc8['EOSMe'],_0x1c3a12),![];else{const _0x7f51e0=await AsyncStorage[_0x6356(0x5b)](JWT_TOKEN_KEY);return _0x7f51e0;}}catch(_0x171db4){return console['error'](_0x2aefc8[_0x6356(0x5c)],_0x171db4),null;}};export const hasJWT=async()=>{const _0xeb13b7={'qWGun':_0x6356(0xb),'WoCWo':function(_0x5740c7,_0x507abb){return _0x5740c7===_0x507abb;},'LOrSV':_0x6356(0xa),'vtRqN':_0x6356(0x5d),'vRxTO':'sUsWH','kKkds':_0x6356(0x5e)};try{const _0x14a336=await AsyncStorage[_0x6356(0x5b)](JWT_TOKEN_KEY);return!!_0x14a336;}catch(_0x226a9b){if(_0xeb13b7[_0x6356(0x5f)](_0xeb13b7[_0x6356(0x60)],_0xeb13b7[_0x6356(0x61)])){_0x4d658d[_0x6356(0x1)](_0xeb13b7[_0x6356(0x62)],_0x3f389b);const _0x263e81=(_0xeb13b7['WoCWo'](_0x1ceb4f,null)||_0xeb13b7[_0x6356(0x5f)](_0x245c0f,void 0x0)?void 0x0:_0x5a0f5a[_0x6356(0x9)])||_0xeb13b7['LOrSV'];return delete _0x338148[_0x263e81],!![];}else return console[_0x6356(0x15)](_0xeb13b7[_0x6356(0x63)],_0x226a9b),![];}};export const clearJWT=async()=>{const _0x2461ca={'BdIsT':function(_0x136774,_0x4867f3){return _0x136774%_0x4867f3;},'uPyQF':_0x6356(0x64),'UfOny':function(_0x8f1a0,_0x5343a1){return _0x8f1a0<_0x5343a1;},'IDfEQ':function(_0x31f3a2,_0x27c06e){return _0x31f3a2+_0x27c06e;},'ATNfT':function(_0x139da1,_0x25fac7){return _0x139da1|_0x25fac7;},'tOYEp':function(_0x572dba,_0x412a25){return _0x572dba<<_0x412a25;},'FvrEm':function(_0x317bda,_0x3a2550){return _0x317bda<<_0x3a2550;},'TEzOj':function(_0xbb8b7e,_0x40168a){return _0xbb8b7e>>_0x40168a;},'yjpbP':function(_0x471fea,_0x27eb0e){return _0x471fea!==_0x27eb0e;},'gZkZn':function(_0x2621e1,_0x26fa3f){return _0x2621e1&_0x26fa3f;},'LBxZF':_0x6356(0xb),'VbqtL':_0x6356(0xa),'IzxTS':'wZMxs','YpXDs':'mccQH','OXinB':_0x6356(0x65)};try{if(_0x2461ca[_0x6356(0x66)](_0x2461ca[_0x6356(0x67)],_0x6356(0x68)))return await AsyncStorage[_0x6356(0x69)](JWT_TOKEN_KEY),console[_0x6356(0x6a)](_0x6356(0x6b)),!![];else{while(_0x2461ca[_0x6356(0x6c)](_0x37869a[_0x6356(0x6d)],0x4)){_0x561354+='=';}const _0x4b3cd7=_0x2461ca[_0x6356(0x6e)];let _0x4e77a8='';for(let _0x561fe3=0x0;_0x2461ca[_0x6356(0x6f)](_0x561fe3,_0x1bf8cb[_0x6356(0x6d)]);_0x561fe3+=0x4){const _0x1bf808=_0x4b3cd7['indexOf'](_0x4f8938['charAt'](_0x561fe3)),_0x3ec8cf=_0x4b3cd7[_0x6356(0x70)](_0x41f7b6['charAt'](_0x2461ca['IDfEQ'](_0x561fe3,0x1))),_0x3d720c=_0x4b3cd7[_0x6356(0x70)](_0x11bcf7['charAt'](_0x2461ca[_0x6356(0x71)](_0x561fe3,0x2))),_0x5ceaae=_0x4b3cd7[_0x6356(0x70)](_0x10e9d1[_0x6356(0x72)](_0x561fe3+0x3)),_0x5213e5=_0x2461ca[_0x6356(0x73)](_0x2461ca[_0x6356(0x73)](_0x1bf808<<0x12|_0x2461ca[_0x6356(0x74)](_0x3ec8cf,0xc),_0x2461ca['FvrEm'](_0x3d720c,0x6)),_0x5ceaae);_0x4e77a8+=_0x31ac13[_0x6356(0x75)](_0x2461ca[_0x6356(0x76)](_0x5213e5,0x10)&0xff);if(_0x2461ca['yjpbP'](_0x3d720c,0x40))_0x4e77a8+=_0x1ce12d[_0x6356(0x75)](_0x2461ca[_0x6356(0x77)](_0x5213e5>>0x8,0xff));if(_0x5ceaae!==0x40)_0x4e77a8+=_0x4381ee[_0x6356(0x75)](_0x2461ca['gZkZn'](_0x5213e5,0xff));}return _0x4e77a8;}}catch(_0x2153bf){if(_0x2461ca[_0x6356(0x66)](_0x2461ca['YpXDs'],_0x2461ca[_0x6356(0x78)])){_0x1e4b28[_0x6356(0x1)](_0x2461ca[_0x6356(0x79)],_0x195000);const _0x51b931=(_0x2bf000===null||_0x54ab51===void 0x0?void 0x0:_0x3cfe45[_0x6356(0x9)])||_0x2461ca['VbqtL'];return _0x24f137[_0x51b931]||null;}else return console[_0x6356(0x15)](_0x2461ca[_0x6356(0x7a)],_0x2153bf),![];}};const base64Decode=_0x436b19=>{const _0x331b16={'LVKDw':function(_0x385e51,_0x37982e){return _0x385e51+_0x37982e;},'ybLAQ':function(_0x2cfd27,_0x449617){return _0x2cfd27|_0x449617;},'pqiQT':function(_0x1241d6,_0x52bcdb){return _0x1241d6<<_0x52bcdb;},'MhZUx':function(_0x447128,_0x20ab29){return _0x447128<<_0x20ab29;},'fYenk':function(_0x1c6421,_0x119b5c){return _0x1c6421&_0x119b5c;},'ktczc':function(_0x452964,_0x5ba926){return _0x452964>>_0x5ba926;},'OEBJW':function(_0x20f9f7,_0x351b19){return _0x20f9f7!==_0x351b19;},'HniYl':function(_0x26ba2c,_0x5b6e8){return _0x26ba2c&_0x5b6e8;},'fEuQL':function(_0x581b29,_0x4f755d){return _0x581b29%_0x4f755d;},'SHlUw':'ARzAC','iWCqM':_0x6356(0x64),'JMYAO':function(_0x5104bc,_0x3d5c46){return _0x5104bc<_0x3d5c46;},'AYian':function(_0x5980ec,_0x1173ed){return _0x5980ec+_0x1173ed;},'ivitL':function(_0x19b5d4,_0x2c1e49){return _0x19b5d4+_0x2c1e49;},'XBjGc':function(_0x135c7f,_0x3259af){return _0x135c7f<<_0x3259af;},'GHiUW':function(_0x1c7caf,_0x19d136){return _0x1c7caf<<_0x19d136;},'WkKoT':function(_0x114708,_0x5a770c){return _0x114708<<_0x5a770c;},'vrhTO':function(_0x3fa88d,_0x58c5dd){return _0x3fa88d&_0x58c5dd;},'SBNaH':function(_0x439656,_0x8e54f7){return _0x439656>>_0x8e54f7;}};while(_0x331b16[_0x6356(0x7b)](_0x436b19[_0x6356(0x6d)],0x4)){if(_0x6356(0x7c)===_0x331b16[_0x6356(0x7d)]){const _0x204854=_0x540518[_0x6356(0x70)](_0x84144d[_0x6356(0x72)](_0x2912d2)),_0x26aa38=_0x4ffce8[_0x6356(0x70)](_0x488786['charAt'](_0x1ec959+0x1)),_0xb6cf68=_0x24949d[_0x6356(0x70)](_0xb2f4af[_0x6356(0x72)](_0x11ea78+0x2)),_0x57151b=_0x27a885['indexOf'](_0x5e67d6[_0x6356(0x72)](_0x331b16[_0x6356(0x7e)](_0x25bb83,0x3))),_0x1fd5dd=_0x331b16['ybLAQ'](_0x331b16['ybLAQ'](_0x331b16[_0x6356(0x7f)](_0x204854,0x12),_0x331b16[_0x6356(0x80)](_0x26aa38,0xc)),_0xb6cf68<<0x6)|_0x57151b;_0x19dac3+=_0x389091['fromCharCode'](_0x331b16['fYenk'](_0x331b16[_0x6356(0x81)](_0x1fd5dd,0x10),0xff));if(_0x331b16[_0x6356(0x82)](_0xb6cf68,0x40))_0x12b98a+=_0x2d81e3['fromCharCode'](_0x331b16[_0x6356(0x83)](_0x331b16[_0x6356(0x81)](_0x1fd5dd,0x8),0xff));if(_0x331b16[_0x6356(0x82)](_0x57151b,0x40))_0x32435c+=_0x4217da[_0x6356(0x75)](_0x1fd5dd&0xff);}else _0x436b19+='=';}const _0x141eaa=_0x331b16[_0x6356(0x84)];let _0x47fb31='';for(let _0x21c977=0x0;_0x331b16[_0x6356(0x85)](_0x21c977,_0x436b19['length']);_0x21c977+=0x4){const _0x2bb634=_0x141eaa[_0x6356(0x70)](_0x436b19[_0x6356(0x72)](_0x21c977)),_0x325527=_0x141eaa['indexOf'](_0x436b19[_0x6356(0x72)](_0x331b16[_0x6356(0x86)](_0x21c977,0x1))),_0x1c5cb1=_0x141eaa[_0x6356(0x70)](_0x436b19[_0x6356(0x72)](_0x331b16[_0x6356(0x87)](_0x21c977,0x2))),_0x9d38f4=_0x141eaa[_0x6356(0x70)](_0x436b19['charAt'](_0x331b16['ivitL'](_0x21c977,0x3))),_0x514152=_0x331b16[_0x6356(0x88)](_0x331b16[_0x6356(0x88)](_0x331b16['XBjGc'](_0x2bb634,0x12)|_0x331b16[_0x6356(0x89)](_0x325527,0xc),_0x331b16['WkKoT'](_0x1c5cb1,0x6)),_0x9d38f4);_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x83)](_0x331b16[_0x6356(0x81)](_0x514152,0x10),0xff));if(_0x331b16['OEBJW'](_0x1c5cb1,0x40))_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x8a)](_0x331b16[_0x6356(0x8b)](_0x514152,0x8),0xff));if(_0x9d38f4!==0x40)_0x47fb31+=String[_0x6356(0x75)](_0x331b16[_0x6356(0x8c)](_0x514152,0xff));}return _0x47fb31;};export const getJWTPayload=async()=>{const _0x32236d={'CkGiT':function(_0x519b06,_0x1d8767){return _0x519b06!==_0x1d8767;},'HXBLr':function(_0x2d5afb,_0x535043){return _0x2d5afb(_0x535043);},'ZoIWB':_0x6356(0x8d),'TGyeR':_0x6356(0x8e)};try{const _0x23056f=await getJWT();if(!_0x23056f)return null;const _0x5e8f54=_0x23056f[_0x6356(0x8f)]('.');if(_0x32236d[_0x6356(0x90)](_0x5e8f54[_0x6356(0x6d)],0x3))return null;const _0x50476a=_0x32236d[_0x6356(0x91)](base64Decode,_0x5e8f54[0x1]),_0x149d18=JSON[_0x6356(0x45)](_0x50476a);return _0x149d18;}catch(_0x2e4a7e){return _0x32236d[_0x6356(0x90)](_0x32236d[_0x6356(0x92)],_0x6356(0x8d))?(_0x152b0a[_0x6356(0x15)]('❌\x20Failed\x20to\x20decode\x20JWT\x20payload:',_0x4a8052),null):(console[_0x6356(0x15)](_0x32236d[_0x6356(0x93)],_0x2e4a7e),null);}};export const isJWTExpired=async()=>{const _0x15a19d={'iLGQc':function(_0x4d605c,_0x390348){return _0x4d605c!==_0x390348;},'ByqMI':_0x6356(0x94),'xQEWs':_0x6356(0x95)};try{const _0x675bbd=await getJWTPayload();if(!_0x675bbd||!_0x675bbd[_0x6356(0x96)])return!![];const _0xe4b85d=Math['floor'](Date[_0x6356(0x97)]()/0x3e8);return _0x675bbd[_0x6356(0x96)]<_0xe4b85d;}catch(_0x180d93){if(_0x15a19d[_0x6356(0x98)](_0x15a19d[_0x6356(0x99)],_0x15a19d['ByqMI']))_0x1c6b65+='=';else return console['error'](_0x15a19d['xQEWs'],_0x180d93),!![];}};
|
|
7
|
+
import{Platform}from'react-native';import{STORAGE_KEYS}from'../constants';import AsyncStorage from'@react-native-async-storage/async-storage';const JWT_TOKEN_KEY=_0x5024(0x0),mockStorage={};let Keychain=null;try{Keychain=__ONAIROS_REQ_FUNC__(0x0);}catch(_0x2b92f3){console[_0x5024(0x1)]('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x5024(0x2)},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x5024(0x2)},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}const isKeychainAvailable=()=>{const _0x4fc4e8={'knKJk':_0x5024(0x3),'wanZm':function(_0x47cdc4,_0x33ee32){return _0x47cdc4===_0x33ee32;},'hWakL':_0x5024(0x4),'jxNAE':function(_0x1ed38f,_0x428152){return _0x1ed38f===_0x428152;},'cCDQA':_0x5024(0x5),'cmJwb':'bRHKV'};try{return _0x4fc4e8['wanZm'](_0x5024(0x4),_0x4fc4e8[_0x5024(0x6)])?Keychain&&_0x4fc4e8[_0x5024(0x7)](typeof Keychain[_0x5024(0x8)],_0x4fc4e8[_0x5024(0x9)]):(_0x529e5b[_0x5024(0xa)](_0x4fc4e8[_0x5024(0xb)],_0x38c460),![]);}catch(_0x4bdcba){if(_0x4fc4e8[_0x5024(0xc)]===_0x4fc4e8[_0x5024(0xc)])return![];else{const _0x17dffb=_0x55198f[_0x5024(0xd)]()['toString'](0x24)[_0x5024(0xe)](0x2,0xa);return _0x5024(0xf)+_0x17dffb;}}},safeGetGenericPassword=async _0x163827=>{const _0x119a3c={'dHtqV':function(_0x56d82f){return _0x56d82f();},'kemqM':function(_0x3fb99a,_0xd17714){return _0x3fb99a===_0xd17714;},'NMQGZ':_0x5024(0x10)};try{if(_0x119a3c['dHtqV'](isKeychainAvailable))return await Keychain['getGenericPassword'](_0x163827);else{const _0x28c77e=(_0x163827===null||_0x163827===void 0x0?void 0x0:_0x163827[_0x5024(0x11)])||'default';return mockStorage[_0x28c77e]||null;}}catch(_0x1fb211){console[_0x5024(0x1)](_0x5024(0x12),_0x1fb211);const _0x93ee1c=(_0x119a3c[_0x5024(0x13)](_0x163827,null)||_0x163827===void 0x0?void 0x0:_0x163827[_0x5024(0x11)])||_0x119a3c[_0x5024(0x14)];return mockStorage[_0x93ee1c]||null;}},safeSetGenericPassword=async(_0x5c9e62,_0x1f157e,_0x3520d9)=>{const _0x20cb13={'nJcgb':_0x5024(0x15),'qLoKB':_0x5024(0x16),'KHxYk':function(_0x3f1568,_0x3d426a){return _0x3f1568===_0x3d426a;},'OjtPd':_0x5024(0x10),'qSRQe':_0x5024(0x12),'ZIcfz':function(_0x2034bd,_0xe50730){return _0x2034bd===_0xe50730;}};try{if(isKeychainAvailable())return _0x20cb13['qLoKB']!==_0x20cb13[_0x5024(0x17)]?(_0x3e3d2a[_0x5024(0xa)](_0x20cb13['nJcgb'],_0x6adc4),![]):await Keychain[_0x5024(0x18)](_0x5c9e62,_0x1f157e,_0x3520d9);else{const _0x2df848=(_0x3520d9===null||_0x20cb13['KHxYk'](_0x3520d9,void 0x0)?void 0x0:_0x3520d9[_0x5024(0x11)])||_0x20cb13[_0x5024(0x19)];return mockStorage[_0x2df848]={'username':_0x5c9e62,'password':_0x1f157e},!![];}}catch(_0x200eba){console[_0x5024(0x1)](_0x20cb13['qSRQe'],_0x200eba);const _0x42ed90=(_0x20cb13[_0x5024(0x1a)](_0x3520d9,null)||_0x20cb13[_0x5024(0x1b)](_0x3520d9,void 0x0)?void 0x0:_0x3520d9[_0x5024(0x11)])||_0x20cb13[_0x5024(0x19)];return mockStorage[_0x42ed90]={'username':_0x5c9e62,'password':_0x1f157e},!![];}},safeResetGenericPassword=async _0x33214d=>{const _0x3977e9={'MSKyb':_0x5024(0x2),'qllft':function(_0x13dea9){return _0x13dea9();},'dXbNk':'default','woBfy':_0x5024(0x1c),'rnSMP':_0x5024(0x12),'sLtHY':function(_0x41748b,_0xac8de6){return _0x41748b===_0xac8de6;}};try{if(_0x3977e9[_0x5024(0x1d)](isKeychainAvailable))return await Keychain[_0x5024(0x1e)](_0x33214d);else{const _0x5706a0=(_0x33214d===null||_0x33214d===void 0x0?void 0x0:_0x33214d[_0x5024(0x11)])||_0x3977e9['dXbNk'];return delete mockStorage[_0x5706a0],!![];}}catch(_0x59e3db){if(_0x5024(0x1c)===_0x3977e9[_0x5024(0x1f)]){console[_0x5024(0x1)](_0x3977e9['rnSMP'],_0x59e3db);const _0x69bb2d=(_0x3977e9[_0x5024(0x20)](_0x33214d,null)||_0x33214d===void 0x0?void 0x0:_0x33214d[_0x5024(0x11)])||_0x3977e9[_0x5024(0x21)];return delete mockStorage[_0x69bb2d],!![];}else _0xdcc42e['warn']('react-native-keychain module not available, using mock storage'),Keychain={'ACCESS_CONTROL':{'BIOMETRY_ANY_OR_DEVICE_PASSCODE':_0x3977e9['MSKyb']},'ACCESSIBLE':{'WHEN_UNLOCKED':_0x3977e9['MSKyb']},'getGenericPassword':async()=>null,'setGenericPassword':async()=>!![],'resetGenericPassword':async()=>!![]};}};export const storeCredentials=async _0x264b35=>{const _0x439aac={'yWoXm':function(_0x36bd74){return _0x36bd74();},'dszQs':function(_0x11eb34,_0x471913){return _0x11eb34===_0x471913;},'ECPLP':function(_0x41eb96,_0x5c3ab1){return _0x41eb96===_0x5c3ab1;},'kfFVm':_0x5024(0x22),'yPWeu':_0x5024(0x23),'Zzpyc':_0x5024(0x24)};try{const _0x1dc794=await _0x439aac[_0x5024(0x25)](getCredentials),_0x1817fd={..._0x1dc794,..._0x264b35,'createdAt':(_0x439aac[_0x5024(0x26)](_0x1dc794,null)||_0x439aac[_0x5024(0x27)](_0x1dc794,void 0x0)?void 0x0:_0x1dc794[_0x5024(0x28)])||Date[_0x5024(0x29)]()},_0x48bb18=_0x1817fd[_0x5024(0x2a)];if(!_0x48bb18)throw new Error(_0x439aac[_0x5024(0x2b)]);const _0x18a868={'service':STORAGE_KEYS[_0x5024(0x2c)]};return Platform['OS']!==_0x439aac[_0x5024(0x2d)]&&_0x439aac[_0x5024(0x25)](isKeychainAvailable)&&(_0x18a868[_0x5024(0x2e)]=Keychain['ACCESS_CONTROL'][_0x5024(0x2f)],_0x18a868[_0x5024(0x30)]=Keychain['ACCESSIBLE']['WHEN_UNLOCKED']),await safeSetGenericPassword(_0x48bb18,JSON[_0x5024(0x31)](_0x1817fd),_0x18a868),!![];}catch(_0x1c5982){return console[_0x5024(0xa)](_0x439aac['Zzpyc'],_0x1c5982),![];}};export const getCredentials=async()=>{const _0x2a9c76={'PzlFH':function(_0x552660,_0x4732d1){return _0x552660(_0x4732d1);},'PdTLD':_0x5024(0x32),'PcSaH':function(_0x3787ae,_0x42e4ec){return _0x3787ae!==_0x42e4ec;},'RRLHP':_0x5024(0x33),'KRGib':_0x5024(0x34),'QlcxR':function(_0x5375fa,_0x28a826){return _0x5375fa===_0x28a826;},'baYHb':_0x5024(0x35),'aroUu':_0x5024(0x36)};try{if(_0x2a9c76[_0x5024(0x37)](_0x2a9c76[_0x5024(0x38)],_0x2a9c76[_0x5024(0x39)])){const _0x1908ee=await _0x2a9c76[_0x5024(0x3a)](safeGetGenericPassword,{'service':STORAGE_KEYS[_0x5024(0x2c)]});if(_0x1908ee)return JSON[_0x5024(0x3b)](_0x1908ee[_0x5024(0x3c)]);return null;}else Keychain=_0x2a9c76[_0x5024(0x3a)](_0x1bbb8d,0x0);}catch(_0x4392c5){return _0x2a9c76[_0x5024(0x3d)](_0x2a9c76['baYHb'],_0x2a9c76['aroUu'])?(_0x12d55b[_0x5024(0xa)](_0x2a9c76[_0x5024(0x3e)],_0x1eda89),null):(console['error'](_0x2a9c76[_0x5024(0x3e)],_0x4392c5),null);}};export const hasCredentials=async()=>{const _0x49da5b={'TiogD':_0x5024(0x12),'CxXBb':function(_0x174fc2,_0x4a2829){return _0x174fc2===_0x4a2829;},'VcAxv':function(_0x24fa5e,_0x4dc799){return _0x24fa5e===_0x4dc799;},'BJwPo':_0x5024(0x10),'NgdxX':function(_0x487b0b,_0x1b3015){return _0x487b0b!==_0x1b3015;},'TvErA':'Error\x20checking\x20credentials:'};try{const _0x34f449=await safeGetGenericPassword({'service':STORAGE_KEYS[_0x5024(0x2c)]});return!!_0x34f449;}catch(_0x283ae9){if(_0x49da5b[_0x5024(0x3f)](_0x5024(0x40),_0x5024(0x40))){_0x12e72e[_0x5024(0x1)](_0x49da5b[_0x5024(0x41)],_0x4c75a2);const _0xea9e13=(_0x49da5b[_0x5024(0x42)](_0x2c5631,null)||_0x49da5b[_0x5024(0x43)](_0x2bab44,void 0x0)?void 0x0:_0x293985[_0x5024(0x11)])||_0x49da5b['BJwPo'];return _0x50ff75[_0xea9e13]={'username':_0x5bb259,'password':_0x2b136c},!![];}else return console[_0x5024(0xa)](_0x49da5b[_0x5024(0x44)],_0x283ae9),![];}};export const deleteCredentials=async()=>{const _0x363b66={'UOxtT':_0x5024(0x45)};try{return await safeResetGenericPassword({'service':STORAGE_KEYS[_0x5024(0x2c)]}),!![];}catch(_0x17db16){return _0x363b66[_0x5024(0x46)]!==_0x363b66[_0x5024(0x46)]?!![]:(console[_0x5024(0xa)](_0x5024(0x47),_0x17db16),![]);}};export const updateCredentials=async _0x1339e3=>{return storeCredentials(_0x1339e3);};export const generateDeviceUsername=()=>{const _0x5b24a7=Math['random']()[_0x5024(0x48)](0x24)[_0x5024(0xe)](0x2,0xa);return _0x5024(0xf)+_0x5b24a7;};export const verifyCredentials=async _0x2daec3=>{const _0x405c05={'BMiOj':function(_0x536e5b){return _0x536e5b();},'sCOGM':function(_0x4600bf,_0xf4e8da){return _0x4600bf===_0xf4e8da;},'ZJVSi':_0x5024(0x49),'TWiuz':'rQPWS','bsYiv':'Error\x20verifying\x20credentials:'};try{if(!_0x405c05[_0x5024(0x4a)](isKeychainAvailable)){if(_0x405c05[_0x5024(0x4b)](_0x405c05[_0x5024(0x4c)],_0x405c05['TWiuz']))_0x2d093a[_0x5024(0x2e)]=Keychain['ACCESS_CONTROL']['BIOMETRY_ANY_OR_DEVICE_PASSCODE'],_0x58b9ca[_0x5024(0x30)]=Keychain['ACCESSIBLE'][_0x5024(0x4d)];else return!![];}return!![];}catch(_0x16b52f){return console['error'](_0x405c05[_0x5024(0x4e)],_0x16b52f),![];}};export const getJWT=async()=>{const _0x32bb94={'HHDDl':function(_0x144e4c,_0x991ab5){return _0x144e4c===_0x991ab5;},'tkGrU':function(_0x544209,_0x157474){return _0x544209===_0x157474;},'rnSIa':function(_0x3b3327,_0x367eba){return _0x3b3327!==_0x367eba;},'sOvPu':_0x5024(0x4f),'yyEIs':_0x5024(0x50)};try{const _0x5cc564=await AsyncStorage[_0x5024(0x51)](JWT_TOKEN_KEY);return _0x5cc564;}catch(_0x55b326){if(_0x32bb94[_0x5024(0x52)](_0x32bb94['sOvPu'],_0x32bb94[_0x5024(0x53)])){const _0x56a89f=(_0x32bb94[_0x5024(0x54)](_0xcea88f,null)||_0x32bb94[_0x5024(0x55)](_0x2d9d3d,void 0x0)?void 0x0:_0x2bdef4['service'])||'default';return _0xf70cc1[_0x56a89f]||null;}else return console[_0x5024(0xa)](_0x32bb94[_0x5024(0x56)],_0x55b326),null;}};export const hasJWT=async()=>{const _0x472a22={'cfiTe':function(_0x45e549,_0x5c9b2e){return _0x45e549(_0x5c9b2e);},'RqXVB':function(_0x565ded,_0x40bd0b){return _0x565ded===_0x40bd0b;},'hxlbM':_0x5024(0x57)};try{if(_0x472a22[_0x5024(0x58)](_0x472a22[_0x5024(0x59)],_0x5024(0x5a)))return _0x472a22['cfiTe'](_0x281d41,_0x31732d);else{const _0x3b3bb9=await AsyncStorage[_0x5024(0x51)](JWT_TOKEN_KEY);return!!_0x3b3bb9;}}catch(_0x1e3db8){return console[_0x5024(0xa)](_0x5024(0x15),_0x1e3db8),![];}};export const clearJWT=async()=>{const _0xe32faf={'NsZMI':_0x5024(0x5b),'hEqSe':_0x5024(0x5c)};try{return await AsyncStorage[_0x5024(0x5d)](JWT_TOKEN_KEY),console[_0x5024(0x5e)](_0xe32faf[_0x5024(0x5f)]),!![];}catch(_0xf371d){return console['error'](_0xe32faf[_0x5024(0x60)],_0xf371d),![];}};function _0x14c1(){const _0x21b170=['onairos_jwt_token','warn','mock','Error\x20checking\x20credentials:','pBDZW','function','hWakL','jxNAE','getGenericPassword','cCDQA','error','knKJk','cmJwb','random','substring','dev_','default','service','Keychain\x20access\x20failed,\x20using\x20mock\x20storage','kemqM','NMQGZ','❌\x20Failed\x20to\x20check\x20JWT\x20token:','oYDec','qLoKB','setGenericPassword','OjtPd','KHxYk','ZIcfz','bESzX','qllft','resetGenericPassword','woBfy','sLtHY','dXbNk','Username\x20is\x20required\x20for\x20storing\x20credentials','web','Error\x20storing\x20credentials:','yWoXm','dszQs','ECPLP','createdAt','now','username','kfFVm','credentials','yPWeu','accessControl','BIOMETRY_ANY_OR_DEVICE_PASSCODE','accessible','stringify','Error\x20getting\x20credentials:','jeIIp','lcqrZ','Eaufj','qgtMB','PcSaH','RRLHP','KRGib','PzlFH','parse','password','QlcxR','PdTLD','NgdxX','zmvtu','TiogD','CxXBb','VcAxv','TvErA','AkZPN','UOxtT','Error\x20deleting\x20credentials:','toString','YXkhe','BMiOj','sCOGM','ZJVSi','WHEN_UNLOCKED','bsYiv','OxZiI','❌\x20Failed\x20to\x20retrieve\x20JWT\x20token:','getItem','rnSIa','sOvPu','HHDDl','tkGrU','yyEIs','QybQQ','RqXVB','hxlbM','svfEl','🗑️\x20JWT\x20token\x20cleared','❌\x20Failed\x20to\x20clear\x20JWT\x20token:','removeItem','log','NsZMI','hEqSe','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/','pwLDG','length','sCeDo','bitlw','QQwbi','ygbgd','indexOf','charAt','HDDpK','wftrQ','IGHeg','UjUAf','pzjQX','dWnqK','DzBkX','fromCharCode','CaAIQ','❌\x20Failed\x20to\x20decode\x20JWT\x20payload:','TPwTt','PXZhe','IiqWZ','udbkS','split','peAtW','❌\x20Failed\x20to\x20check\x20JWT\x20expiration:','uGCZs','exp','ywPcq','EgDib'];_0x14c1=function(){return _0x21b170;};return _0x14c1();}const base64Decode=_0x39e64c=>{const _0x46c904={'pwLDG':function(_0xaa9cd4,_0x5f3630){return _0xaa9cd4%_0x5f3630;},'sCeDo':'LLPVo','bitlw':'YtrTl','QQwbi':_0x5024(0x61),'ygbgd':function(_0xf77ba4,_0x1c3da4){return _0xf77ba4<_0x1c3da4;},'HDDpK':function(_0x5a62dc,_0x536349){return _0x5a62dc+_0x536349;},'wftrQ':function(_0x2f01c0,_0x58573d){return _0x2f01c0|_0x58573d;},'IGHeg':function(_0x358e31,_0x2a5685){return _0x358e31|_0x2a5685;},'UjUAf':function(_0x39f518,_0x5becbc){return _0x39f518<<_0x5becbc;},'pzjQX':function(_0x5d5e30,_0x5d542c){return _0x5d5e30<<_0x5d542c;},'dWnqK':function(_0x391f45,_0x5b7c15){return _0x391f45&_0x5b7c15;},'DzBkX':function(_0x3079f9,_0x391908){return _0x3079f9>>_0x391908;},'CaAIQ':function(_0x2e2b39,_0x2edc00){return _0x2e2b39!==_0x2edc00;},'hheze':function(_0x78bd83,_0x257bd0){return _0x78bd83&_0x257bd0;}};while(_0x46c904[_0x5024(0x62)](_0x39e64c[_0x5024(0x63)],0x4)){if(_0x46c904[_0x5024(0x64)]!==_0x46c904[_0x5024(0x65)])_0x39e64c+='=';else{if(!_0x5c0cd4())return!![];return!![];}}const _0x5d7e86=_0x46c904[_0x5024(0x66)];let _0x2c0baa='';for(let _0x437859=0x0;_0x46c904[_0x5024(0x67)](_0x437859,_0x39e64c[_0x5024(0x63)]);_0x437859+=0x4){const _0x1c4bce=_0x5d7e86[_0x5024(0x68)](_0x39e64c[_0x5024(0x69)](_0x437859)),_0x378048=_0x5d7e86['indexOf'](_0x39e64c[_0x5024(0x69)](_0x437859+0x1)),_0x27ba52=_0x5d7e86[_0x5024(0x68)](_0x39e64c[_0x5024(0x69)](_0x46c904[_0x5024(0x6a)](_0x437859,0x2))),_0x55d2aa=_0x5d7e86[_0x5024(0x68)](_0x39e64c[_0x5024(0x69)](_0x437859+0x3)),_0x4c6a29=_0x46c904[_0x5024(0x6b)](_0x46c904[_0x5024(0x6c)](_0x1c4bce<<0x12,_0x46c904[_0x5024(0x6d)](_0x378048,0xc))|_0x46c904[_0x5024(0x6e)](_0x27ba52,0x6),_0x55d2aa);_0x2c0baa+=String['fromCharCode'](_0x46c904[_0x5024(0x6f)](_0x46c904[_0x5024(0x70)](_0x4c6a29,0x10),0xff));if(_0x27ba52!==0x40)_0x2c0baa+=String[_0x5024(0x71)](_0x46c904[_0x5024(0x70)](_0x4c6a29,0x8)&0xff);if(_0x46c904[_0x5024(0x72)](_0x55d2aa,0x40))_0x2c0baa+=String[_0x5024(0x71)](_0x46c904['hheze'](_0x4c6a29,0xff));}return _0x2c0baa;};export const getJWTPayload=async()=>{const _0x223843={'udbkS':_0x5024(0x73),'PXZhe':function(_0x5a543a,_0x165a22){return _0x5a543a!==_0x165a22;},'IiqWZ':_0x5024(0x74),'rXbxH':function(_0x23c09f){return _0x23c09f();},'vcVQT':function(_0x36005a,_0x293cf2){return _0x36005a!==_0x293cf2;},'peAtW':function(_0x470da9,_0x573743){return _0x470da9(_0x573743);}};try{if(_0x223843[_0x5024(0x75)](_0x223843[_0x5024(0x76)],_0x223843[_0x5024(0x76)]))return _0x27fc6e[_0x5024(0xa)](_0x223843[_0x5024(0x77)],_0x148f95),null;else{const _0x3ec073=await _0x223843['rXbxH'](getJWT);if(!_0x3ec073)return null;const _0x405012=_0x3ec073[_0x5024(0x78)]('.');if(_0x223843['vcVQT'](_0x405012[_0x5024(0x63)],0x3))return null;const _0x373121=_0x223843[_0x5024(0x79)](base64Decode,_0x405012[0x1]),_0x53b460=JSON[_0x5024(0x3b)](_0x373121);return _0x53b460;}}catch(_0x275642){return console['error'](_0x223843[_0x5024(0x77)],_0x275642),null;}};function _0x5024(_0x14c17f,_0x502460){_0x14c17f=_0x14c17f-0x0;const _0x1d1b43=_0x14c1();let _0x511a3e=_0x1d1b43[_0x14c17f];return _0x511a3e;}export const isJWTExpired=async()=>{const _0x5c5d61={'uGCZs':function(_0x45a74f){return _0x45a74f();},'ywPcq':function(_0x276908,_0x17c52c){return _0x276908/_0x17c52c;},'EgDib':_0x5024(0x7a)};try{const _0x398a6e=await _0x5c5d61[_0x5024(0x7b)](getJWTPayload);if(!_0x398a6e||!_0x398a6e[_0x5024(0x7c)])return!![];const _0x4ff7e7=Math['floor'](_0x5c5d61[_0x5024(0x7d)](Date['now'](),0x3e8));return _0x398a6e[_0x5024(0x7c)]<_0x4ff7e7;}catch(_0x18a4f5){return console['error'](_0x5c5d61[_0x5024(0x7e)],_0x18a4f5),!![];}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CHATGPT_CONSENT_POPUP_SCRIPT='\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';export const CHATGPT_EXPORT_SCRIPT='\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';function _0x4c56(){const _0x19b946=['\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'];_0x4c56=function(){return _0x19b946;};return _0x4c56();}export const CHATGPT_SUCCESS_SCRIPT=_0x9dc2(0x0);function _0x9dc2(_0x4c56ee,_0x9dc2aa){_0x4c56ee=_0x4c56ee-0x0;const _0x582532=_0x4c56();let _0x19ecfc=_0x582532[_0x4c56ee];return _0x19ecfc;}export const CHATGPT_ERROR_SCRIPT=_0x9dc2(0x1);export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0x9dc2(0x2);
|
|
1
|
+
export const CHATGPT_CONSENT_POPUP_SCRIPT=_0xd33f(0x0);export const CHATGPT_EXPORT_SCRIPT=_0xd33f(0x1);function _0xd33f(_0x17795f,_0xd33f09){_0x17795f=_0x17795f-0x0;const _0x3ce1ea=_0x1779();let _0x197451=_0x3ce1ea[_0x17795f];return _0x197451;}function _0x1779(){const _0x70e438=['\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'];_0x1779=function(){return _0x70e438;};return _0x1779();}export const CHATGPT_SUCCESS_SCRIPT=_0xd33f(0x2);export const CHATGPT_ERROR_SCRIPT=_0xd33f(0x3);export const CHATGPT_FETCH_MEMORIES_SCRIPT=_0xd33f(0x4);
|