/* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ċ Ġ* Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . rust . debugger Ċ Ċ import Ġcom . google . common . annotations . Visible ForTesting Ċ import Ġcom . intellij . notification . Notification Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . notification . Notifications Ċ import Ġcom . intellij . openapi . application . Path Manager Ċ import Ġcom . intellij . openapi . components . Service Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . diagnostic . logger Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . System Info Ċ import Ġcom . intellij . openapi . util . Throwable Comp utable Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . util . download . Download able File Description Ċ import Ġcom . intellij . util . download . Download able File Service Ċ import Ġcom . intellij . util . io . De compressor Ċ import Ġcom . intellij . util . io . exists Ċ import Ġcom . intellij . util . system . Cpu Arch Ċ import Ġcom . jetbrains . cidr . execution . debugger . backend . ll db . LL DB Bin Url Provider Ċ import Ġorg . rust . debugger . settings . Rs Debugger Settings Ċ import Ġorg . rust . openapi ext . Rs Path Manager Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . net . URL Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util .* Ċ Ċ @ Service Ċ class ĠRs Debugger Tool chain Service Ġ{ ĊĊĠĠĠ Ġfun Ġget LL DB Status (): ĠLL DB Status Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġget Bund led LL DB Status () ĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġis ĠLL DB Status . Bin aries ) Ġreturn Ġstatus ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget LL DB Status ( Rs Debugger Settings . getInstance (). ll db Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Bund led LL DB Status (): ĠLL DB Status Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundled Path Ġ= Ġbundled LL DB DirPath ()?. toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġget LL DB Status ( bund led Path , Ġcheck Versions Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget LL DB Status ( ll db Path : ĠString ?, Ġcheck Versions : ĠBoolean Ġ= Ġtrue ): ĠLL DB Status Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ll db Path . isNull OrEmpty ()) Ġreturn ĠLL DB Status . Need To Download ĊĊĠĠĠĠĠĠĠ Ġval Ġ( framework Path , Ġfrontend Path ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Mac Ġ-> Ġ" LL DB . framework " Ġto Ġ" LL DB Frontend " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Unix Ġ-> Ġ" lib / lib ll db . so " Ġto Ġ" bin / LL DB Frontend " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Windows Ġ-> Ġ" bin / lib ll db . dll " Ġto Ġ" bin / LL DB Frontend . exe " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠLL DB Status . Unavailable ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġframework File Ġ= ĠFile ( File Util . join ( ll db Path , Ġframework Path )) ĊĠĠĠĠĠĠĠ Ġval Ġfrontend File Ġ= ĠFile ( File Util . join ( ll db Path , Ġfrontend Path )) ĊĠĠĠĠĠĠĠ Ġif Ġ(! framework File . exists () Ġ|| Ġ! frontend File . exists ()) Ġreturn ĠLL DB Status . Need To Download ĊĊĠĠĠĠĠĠĠ Ġif Ġ( check Versions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversions Ġ= Ġload LL DB Versions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( ll db Framework Url , Ġll db Frontend Url ) Ġ= Ġll db Urls Ġ?: Ġreturn ĠLL DB Status . Unavailable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġll db Framework Version Ġ= ĠfileName Without Extension ( ll db Framework Url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġll db Frontend Version Ġ= ĠfileName Without Extension ( ll db Frontend Url . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( versions [ LL DB _ FRAME WORK _ PROPERTY _ NAME ] Ġ!= Ġll db Framework Version Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversions [ LL DB _ FRONT END _ PROPERTY _ NAME ] Ġ!= Ġll db Frontend Version ) Ġreturn ĠLL DB Status . Need ToUpdate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLL DB Status . Bin aries ( framework File , Ġfrontend File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload Debugger ( project : ĠProject ? Ġ= Ġnull ): ĠDownload Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProgress Manager . getInstance (). run Process With Progress S ynchronously ( Throwable Comp utable < Download Result , ĠNothing > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Debugger S ynchronously () ĊĠĠĠĠĠĠĠ Ġ}, Ġ" Download Ġdebugger ", Ġtrue , Ġproject ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDownload Result . Ok Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . Bus . notify ( Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR UST _ DEBUG GER _ GROUP _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Debugger ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Debugger Ġsuccessfully Ġdownloaded ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . INFORMATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDownload Result . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . Bus . notify ( Notification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR UST _ DEBUG GER _ GROUP _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Debugger ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Debugger Ġdownloading Ġfailed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdownload Debugger S ynchronously (): ĠDownload Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( ll db Framework Url , Ġll db Frontend Url ) Ġ= Ġll db Urls Ġ?: Ġreturn ĠDownload Result . No Urls ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġll db Dir Ġ= Ġdownload And Un archive ( ll db Framework Url . toString (), Ġll db Frontend Url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDownload Result . Ok ( ll db Dir ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Can 't Ġdownload Ġdebugger ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDownload Result . Failed ( e . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġll db Urls : ĠPair < URL , ĠURL >? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Mac Ġ-> ĠLL DB Bin Url Provider . ll db . mac X 6 4 Ġto ĠLL DB Bin Url Provider . ll db Frontend . mac X 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Linux Ġ-> ĠLL DB Bin Url Provider . ll db . linux X 6 4 Ġto ĠLL DB Bin Url Provider . ll db Frontend . linux X 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Windows Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Cpu Arch . is Intel 6 4 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLL DB Bin Url Provider . ll db . win X 6 4 Ġto ĠLL DB Bin Url Provider . ll db Frontend . win X 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLL DB Bin Url Provider . ll db . win X 8 6 Ġto ĠLL DB Bin Url Provider . ll db Frontend . win X 8 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġdownload And Un archive ( ll db Framework Url : ĠString , Ġll db Frontend Url : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠDownload able File Service . getInstance () ĊĊĠĠĠĠĠĠĠ Ġval Ġll db Dir Ġ= Ġll db Path (). to File () ĊĠĠĠĠĠĠĠ Ġll db Dir . delete Re cursively () ĊĊĠĠĠĠĠĠĠ Ġval Ġdescriptions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . create File Description ( ll db Framework Url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . create File Description ( ll db Frontend Url ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdown loader Ġ= Ġservice . create Downloader ( descriptions , Ġ" Debugger Ġdownloading ") ĊĠĠĠĠĠĠĠ Ġval Ġdownload Directory Ġ= Ġdownload Path (). to File () ĊĠĠĠĠĠĠĠ Ġval Ġdownload Results Ġ= Ġdown loader . download ( download Directory ) ĊĊĠĠĠĠĠĠĠ Ġval Ġversions Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġfor Ġ( result Ġin Ġdownload Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownload Url Ġ= Ġresult . second . download Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpropertyName Ġ= Ġif Ġ( download Url Ġ== Ġll db Framework Url ) ĠLL DB _ FRAME WORK _ PROPERTY _ NAME Ġelse ĠLL DB _ FRONT END _ PROPERTY _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarchive File Ġ= Ġresult . first ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn arch iver . un archive ( archive File , Ġll db Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive File . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversions [ propertyName ] Ġ= ĠfileName Without Extension ( download Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsave LL DB Versions ( versions ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġll db Dir ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDownload able File Service . create File Description ( url : ĠString ): ĠDownload able File Description Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġurl . substring After Last ("/") ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate File Description ( url , ĠfileName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠfileName Without Extension ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl . substring After Last ("/ "). remove Suffix (". zip "). remove Suffix (". tar . gz ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġload LL DB Versions (): ĠProperties Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversions Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġval Ġversions File Ġ= Ġll db Path (). resolve ( LL DB _ VERSION S ). to File () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( versions File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversions File . buffered Reader (). use Ġ{ Ġversions . load ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Failed Ġto Ġload Ġ`$ LL DB _ VERSION S `", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġversions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġsave LL DB Versions ( versions : ĠProperties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversions . store ( ll db Path (). resolve ( LL DB _ VERSION S ). to File (). buffered Writer (), Ġ"") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Failed Ġto Ġsave Ġ`$ LL DB _ VERSION S ` ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG : ĠLogger Ġ= Ġlogger < Rs Debugger Tool chain Service >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLL DB _ VERSION S : ĠString Ġ= Ġ" versions . properties " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLL DB _ FRONT END _ PROPERTY _ NAME Ġ= Ġ" ll db Frontend " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLL DB _ FRAME WORK _ PROPERTY _ NAME Ġ= Ġ" ll db Framework " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠR UST _ DEBUG GER _ GROUP _ ID Ġ= Ġ" Rust ĠDebugger " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdownload Path (): ĠPath Ġ= ĠPaths . get ( Path Manager . get Temp Path ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġll db Path (): ĠPath Ġ= ĠRs Path Manager . plugin Dir In System (). resolve (" ll db ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠR ider Ġprovides Ġbundled Ġll db Ġbinaries Ġinside ĠNative ĠDebug ging ĠSupport Ġplugin Ġdirectory ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbundled LL DB DirPath (): ĠPath ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplugin Path Ġ= Ġnative Debugging Support Plugin ()?. plugin Path Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Specific Part Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Mac Ġ-> Ġ" mac " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Linux Ġ-> Ġ" linux " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Info . is Windows Ġ-> Ġif Ġ( Cpu Arch . is Intel 6 4 ()) Ġ" win / x 6 4 " Ġelse Ġ" win / x 8 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplugin Path . resolve (" bin / ll db /$ os Specific Part "). take If Ġ{ Ġit . exists () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠRs Debugger Tool chain Service Ġ= Ġservice () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġprivate Ġenum Ġclass ĠUn arch iver Ġ{ ĊĠĠĠĠĠĠĠ ĠZIP Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġextension : ĠString Ġ= Ġ" zip " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate De compressor ( file : ĠFile ): ĠDe compressor Ġ= ĠDe compressor . Zip ( file ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠT AR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġextension : ĠString Ġ= Ġ" tar . gz " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate De compressor ( file : ĠFile ): ĠDe compressor Ġ= ĠDe compressor . Tar ( file ) ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġprotected Ġabstract Ġval Ġextension : ĠString ĊĠĠĠĠĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate De compressor ( file : ĠFile ): ĠDe compressor ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġun archive ( archive Path : ĠFile , Ġdst : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun arch iver Ġ= Ġvalues (). find Ġ{ Ġarchive Path . name . endsWith ( it . extension ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Unexpected Ġarchive Ġtype : Ġ$ archive Path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun arch iver . create De compressor ( archive Path ). extract ( dst ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠDownload Result Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠOk ( val Ġll db Dir : ĠFile ) Ġ: ĠDownload Result () ĊĠĠĠĠĠĠĠ Ġobject ĠNo Urls Ġ: ĠDownload Result () ĊĠĠĠĠĠĠĠ Ġclass ĠFailed ( val Ġmessage : ĠString ?) Ġ: ĠDownload Result () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠLL DB Status Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠUn available Ġ: ĠLL DB Status () ĊĠĠĠĠĠĠĠ Ġobject ĠNeed To Download Ġ: ĠLL DB Status () ĊĠĠĠĠĠĠĠ Ġobject ĠNeed ToUpdate Ġ: ĠLL DB Status () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠBin aries ( val Ġframework File : ĠFile , Ġval Ġfrontend File : ĠFile ) Ġ: ĠLL DB Status () ĊĠĠĠ Ġ} Ċ } Ċ