functionLa(t=globalThis.window){returnt?.SECUREBIT_DEBUG===!0}functionLs({targetWindow:t=globalThis.window,webrtcManagerRef:e,onClearData:n,clearConsole:r=()=>{typeofconsole.clear=="function"&&console.clear()}}){returnLa(t)?(t.forceCleanup=()=>{n(),e.current&&e.current.disconnect()},t.clearLogs=r,t.webrtcManagerRef=e,()=>{deletet.forceCleanup,deletet.clearLogs,deletet.webrtcManagerRef}):()=>{}}varBa="securebit-net";varGr="ice-device-key",Wr="ice-settings";functionVr(){returntypeofindexedDB<"u"&&typeofcrypto<"u"&&!!crypto.subtle}functionjr(){returnnewPromise((t,e)=>{letn;try{n=indexedDB.open(Ba,1)}catch(r){e(r);return}n.onupgradeneeded=()=>{letr=n.result;r.objectStoreNames.contains("kv")||r.createObjectStore("kv")},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}functionHr(t,e){returnnewPromise((n,r)=>{letc=t.transaction("kv","readonly").objectStore("kv").get(e);c.onsuccess=()=>n(c.result),c.onerror=()=>r(c.error)})}functionBs(t,e,n){returnnewPromise((r,i)=>{letc=t.transaction("kv","readwrite");c.objectStore("kv").put(n,e),c.oncomplete=()=>r(),c.onerror=()=>i(c.error)})}functionza(t,e){returnnewPromise((n,r)=>{leti=t.transaction("kv","readwrite");i.objectStore("kv").delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}asyncfunctionUa(t){lete=awaitHr(t,Gr);if(einstanceofCryptoKey)returne;letn=awaitcrypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);returnawaitBs(t,Gr,n),n}asyncfunctionzs(t){if(!Vr())thrownewError("Persistent storage is not available in this browser");lete=awaitjr(),n=awaitUa(e),r=JSON.stringify({version:1,servers:Array.isArray(t?.servers)?t.servers:[],privacyMode:t?.privacyMode==="relay-only"?"relay-only":"standard"}),i=crypto.getRandomValues(newUint8Array(12)),c=awaitcrypto.subtle.encrypt({name:"AES-GCM",iv:i},n,newTextEncoder().encode(r));awaitBs(e,Wr,{iv:Array.from(i),data:Array.from(newUint8Array(c))})}asyncfunctionUs(){if(!Vr())returnnull;try{lett=awaitjr(),e=awaitHr(t,Wr);if(!e||!Array.isArray(e.iv)||!Array.isArray(e.data))returnnull;letn=awaitHr(t,Gr);if(!(ninstanceofCryptoKey))returnnull;letr=awaitcrypto.subtle.decrypt({name:"AES-GCM",iv:newUint8Array(e.iv)},n,newUint8Array(e.data)),i=JSON.parse(newTextDecoder().decode(r));return{servers:Array.isArray(i.servers)?i.servers:[],privacyMode:i.privacyMode==="relay-only"?"relay-only":"standard"}}catch{returnnull}}asyncfunction$r(){if(Vr())try{lett=awaitjr();awaitza(t,Wr)}catch{}}varMn=["en","de","fr","es","uk","ru","zh","ko","hi","ar","he","fa","ur"],ar={en:{htmlLang:"en",nativeName:"English",abbr:"EN",dir:"ltr",path:"/"},de:{htmlLang:"de",nativeName:"Deutsch",abbr:"DE",dir:"ltr",path:"/de/"},fr:{htmlLang:"fr",nativeName:"Fran\xE7ais",abbr:"FR",dir:"ltr",path:"/fr/"},es:{htmlLang:"es",nativeName:"Espa\xF1ol",abbr:"ES",dir:"ltr",path:"/es/"},uk:{htmlLang:"uk",nativeName:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",abbr:"UK",dir:"ltr",path:"/uk/"},ru:{htmlLang:"ru",nativeName:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",abbr:"RU",dir:"ltr",path:"/ru/"},zh:{htmlLang:"zh-Hans",nativeName:"\u7B80\u4F53\u4E2D\u6587",abbr:"ZH",dir:"ltr",path:"/zh/"},ko:{htmlLang:"ko",nativeName:"\uD55C\uAD6D\uC5B4",abbr:"KO",dir:"ltr",path:"/ko/"},hi:{htmlLang:"hi",nativeName:"\u0939\u093F\u0928\u094D\u0926\u0940",abbr:"HI",dir:"ltr",path:"/hi/"},ar:{htmlLang:"ar",nativeName:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",abbr:"AR",dir:"rtl",path:"/ar/"},he:{htmlLang:"he",nativeName:"\u05E2\u05D1\u05E8\u05D9\u05EA",abbr:"HE",dir:"rtl",path:"/he/"},fa:{htmlLang:"fa",nativeName:"\u0641\u0627\u0631\u0633\u06CC",abbr:"FA",dir:"rtl",path:"/fa/"},ur:{htmlLang:"ur",nativeName:"\u0627\u0631\u062F\u0648",abbr:"UR",dir:"rtl",path:"/ur/"}},Gs={en:{"language.suggest.text":"This page is also available in English.","language.suggest.cta":"Read in English","language.suggest.dismiss":"Dismiss"},de:{"language.suggest.text":"Diese Seite gibt es auch auf Deutsch.","language.suggest.cta":"Auf Deutsch lesen","language.suggest.dismiss":"Schlie\xDFen"},fr:{"language.su
Please wait for real-time cryptographic verification to complete.`,"sec.verificationUnavailable":"Securityverificationnotavailable","chat.placeholder":"Typeanencryptedmessage\u2026","chat.send":"Sendmessage","chat.sendFiles":"Sendfiles","chat.hideFiles":"Hidefiles","chat.recordVoice":"Recordvoicemessage","chat.sendVoice":"Sendvoicemessage","chat.discard":"Discard","chat.codeBlock":"Sendasacodeblock(expandstheinput)","chat.codeHint":"Codesnippet\xB7formattingpreserved\xB7\u2318\u21B5tosend","chat.viewOnce":"Viewonce","chat.viewOnceTitle":"Viewonce-vanishesafterthepeerreadsit","chat.viewOncePrefix":"Viewonce\xB7","chat.viewOnceTap":"Viewonce\xB7taptoreveal","chat.viewedOnce":"Viewedonce","chat.disappearing":"Disappearingmessage-deletesonbothsides","chat.disappearAfter":"Disappearafter","chat.visibleFor":"Visiblefor","chat.timerPrefix":"Timer\xB7","chat.expired":"Thismessagehasexpired","chat.deleteForEveryone":"Deleteforeveryone","chat.sending":"Sending","chat.delivered":"Delivered","chat.notSent":"Notsent","chat.notSentReason":"Notsent-thesecurechannelisnotready.Reconnecttocontinue.","chat.encrypted":"Encrypted","chat.decrypted":"Decrypted","chat.encryptedOnDevice":"Encryptedonyourdevice","chat.uploading":"Uploading","chat.downloading":"Downloading","chat.transferring":"Transferring\u2026","chat.copied":"Copied!","chat.collapse":"Collapse","chat.closeMenu":"Closemenu","chat.newChat":"Newchat","chat.newGroup":"Newgroup","chat.createGroup":"Createagroup","chat.groupChats":"Groupchats","chat.secureChat":"Securechat","chat.nameThis":"Namethischat","chat.rename":"Renamechat(localonly)","chat.renameHint":"Double-clicktorename","chat.localLabel":"Locallabel\xB7storedonlyonthisdevice","chat.setStatus":"Setyourstatus","chat.yourStatusPrefix":"Yourstatus-","chat.meshHint":"Upto8peers\xB7P2Pmesh","chat.offline":"Offline","chat.noNetwork":"Nonetwork\xB7reconnecting","chat.startVoiceCall":"Startencryptedvoicecall","chat.startVideoCall":"Startencryptedvideocall","chat.verifyForCalls":"Verifythesessiontoenablecalls","chat.e2eeNote":"Everymessageisend-to-endencryptedonyourdevicebeforeitleaves.","chat.peersOnly":"Sentend-to-endtoconnectedpeersonly-neverstoredonaserver.","flow.invitationCreated":"Secureinvitationcreated","flow.invitationCreatedBang":"Secureinvitationcreatedandencrypted!","flow.responseCreated":"Secureresponsecreated","flow.responseCreatedBang":"Secureresponsecreated!","flow.sendInvitation":"Sendtheinvitationcodetoyourinterlocutorviaasecurechannel(voicecall,SMS,etc.).","flow.sendResponse":"SendtheresponsecodetotheinitiatorviaasecurechannelorletthemscantheQRcodebelow.","flow.sendEncryptedCode":"Sendtheencryptedcode","flow.sendTheResponse":"Sendtheresponse","flow.pasteOrWrite":"Pasteorwritecode\u2026","flow.processingInvitation":"Processingthesecureinvitation...","flow.processingResponse":"Processingthesecureresponse...","flow.finalizing":"Finalizingthesecureconnection...","flow.channelEstablished":"Securechannelestablished","flow.channelReady":"Securechannelisready","flow.restoring":"Restoringconnection\u2026","flow.invitationCaptured":"Invitationcaptured.","err.needInvitation":"Youneedtoinserttheinvitationcodefromyourinterlocutor.","err.needResponse":"Youneedtoinserttheresponsecodefromyourinterlocutor.","err.responseFormat":"Invalidresponseformat-pleasecheckthecode","err.responseNoKey":"Invalidresponsecode-missingorcorruptedcryptographickey.Pleasecheckthecodeandtryagain.","err.responseNoSignKey":"Invalidresponsecode-missingsignatureverificationkey.Pleasecheckthecodeandtryagain.","err.responseOutdated":"Responsedataisoutdated-pleaseuseafreshinvitation","err.setupError":"Connectionsetuperror","err.notReady":"Connectionnotready","err.securityBreach":"Securitybreachdetected-connectionrejected","err.securityValidation":"Securityvalidationfailed-poss