package Ġcom . str atag ile . q link . shadow socks . utils Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġcom . str atag ile . q link . application . AppConfig Ċ // import Ġcom . github . shadow socks . App . Companion . app Ċ // import Ġcom . github . shadow socks . bg . Base Service Ċ // import Ġcom . github . shadow socks . database . Profile Ċ // import Ġcom . github . shadow socks . database . Profile Manager Ċ // import Ġcom . github . shadow socks . preference . DataStore Ċ import Ġcom . str atag ile . q link . shadow socks . bg . Base Service Ċ import Ġcom . str atag ile . q link . shadow socks . database . Profile Ċ import Ġcom . str atag ile . q link . shadow socks . database . Profile Manager Ċ import Ġcom . str atag ile . q link . shadow socks . preference . DataStore Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . io . Object InputStream Ċ import Ġjava . io . Object OutputStream Ċ Ċ @ Target Api ( 2 4 ) Ċ object ĠDirect Boot Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfile Ġ= ĠFile ( AppConfig . instance . device Storage . no Backup Files Dir , Ġ" direct Boot Profile ") ĊĠĠĠ Ġprivate Ġvar Ġregistered Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġget Device Profile (): ĠProfile ? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠObject InputStream ( file . inputStream ()). use Ġ{ Ġit . read Object () Ġas ĠProfile Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ(_ : ĠIOException ) Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġfun Ġclean () Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ ĠFile ( AppConfig . instance . device Storage . no Backup Files Dir , ĠBase Service . CONFIG _ FILE ). delete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġapp . current Profile Ġwill Ġcall Ġthis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate ( profile : ĠProfile ? Ġ= ĠProfile Manager . get Profile ( DataStore . profile Id )) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profile Ġ== Ġnull ) Ġclean () Ġelse ĠObject OutputStream ( file . output Stream ()). use Ġ{ Ġit . write Object ( profile ) Ġ} ĊĊĠĠĠ Ġfun Ġflush Traffic Stats () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= Ġget Device Profile () ĊĠĠĠĠĠĠĠ Ġif Ġ( profile ?. dirty Ġ== Ġtrue ) ĠProfile Manager . update Profile ( profile ) ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlisten For Unlock () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( registered ) Ġreturn ĊĠĠĠĠĠĠĠ ĠApp Config . instance . register Receiver ( this , ĠIntent Filter ( Intent . ACTION _ BOOT _ COMPLETED )) ĊĠĠĠĠĠĠĠ Ġregistered Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflush Traffic Stats () ĊĠĠĠĠĠĠĠ ĠApp Config . instance . unregister Receiver ( this ) ĊĠĠĠĠĠĠĠ Ġregistered Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ