/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠMat thew ĠN el son Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ**/ Ċ package Ġio . mat the wn el son . k mp . tor . manager . internal Ċ Ċ import Ġio . mat the wn el son . k mp . tor . common . address . On ion Address Ċ import Ġio . mat the wn el son . k mp . tor . common . address . On ion Address V 3 Ċ import Ġio . mat the wn el son . k mp . tor . common . client auth . Client Name Ċ import Ġio . mat the wn el son . k mp . tor . common . client auth . On ion Client Auth Ċ import Ġio . mat the wn el son . k mp . tor . common . server . Server Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . config . Client Auth Entry Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . config . Config Entry Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . config . Hidden Service Entry Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . config . Tor Config Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . control . Tor Control On ion Client Auth Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . control . use case .* Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . control . use case . Tor Control Info Get . Key Word Ċ import Ġio . mat the wn el son . k mp . tor . controller . common . events . Tor Event Ċ import Ġio . mat the wn el son . k mp . tor . manager . common . Tor Control Manager Ċ import Ġkotlinx . atomic fu . locks . Synchron ized Object Ċ Ċ internal Ġabstract Ġclass ĠBase Tor Manager : ĠSynchron ized Object (), ĠTor Control Manager Ġ{ Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġcircuit Close (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Circuit Close , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcircuit Close () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġcircuit Extend (): ĠResult < String > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Circuit Extend , ĠString > Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcircuit Extend () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġcircuit Set Purpose (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Circuit Set Purpose , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcircuit Set Purpose () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Get ( setting : ĠTor Config . Setting < *> ): ĠResult < List < Config Entry >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Get , ĠList < Config Entry >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Get ( setting ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Get ( settings : ĠSet < Tor Config . Setting <* >> ): ĠResult < List < Config Entry >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Get , ĠList < Config Entry >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Get ( settings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Load ( config : ĠTor Config ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Load , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Load ( config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Reset ( ĊĠĠĠĠĠĠĠ Ġsetting : ĠTor Config . Setting <* >, ĊĠĠĠĠĠĠĠ ĠsetDefault : ĠBoolean ĊĠĠĠ Ġ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Reset , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Reset ( setting , ĠsetDefault ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Reset ( ĊĠĠĠĠĠĠĠ Ġsettings : ĠSet < Tor Config . Setting <* >>, ĊĠĠĠĠĠĠĠ ĠsetDefault : ĠBoolean ĊĠĠĠ Ġ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Reset , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Reset ( settings , ĠsetDefault ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : ĠMaybe ??? ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Save ( force : ĠBoolean ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Save , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Save ( force ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Set ( setting : ĠTor Config . Setting < *> ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Set , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set ( setting ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconfig Set ( settings : ĠSet < Tor Config . Setting <* >> ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Config Set , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Set ( settings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġdescriptor Post (): ĠResult < String > Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Descriptor Post , ĠString > Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Post () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdrop Gu ards (): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Drop Gu ards , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Gu ards () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhs Fetch ( address : ĠOn ion Address ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Hs Fetch , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhs Fetch ( address ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhs Fetch ( address : ĠOn ion Address , Ġserver : ĠServer . Fingerprint ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Hs Fetch , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhs Fetch ( address , Ġserver ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhs Fetch ( ĊĠĠĠĠĠĠĠ Ġaddress : ĠOn ion Address , ĊĠĠĠĠĠĠĠ Ġservers : ĠSet < Server . Fingerprint > ĊĠĠĠ Ġ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Hs Fetch , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhs Fetch ( address , Ġservers ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġhs Post (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Hs Post , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġhs Post () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinfo Get ( keyword : ĠKey Word ): ĠResult < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Info Get , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Get ( keyword ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinfo Get ( keywords : ĠSet < Key Word >): ĠResult < Map < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Info Get , ĠMap < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Get ( keywords ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġinfo Protocol (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Info Protocol , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Protocol () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġmap Address (): ĠResult < Map < String , ĠString >> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Map Address , ĠMap < String , ĠString >> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmap Address () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Add ( ĊĠĠĠĠĠĠĠ ĠprivateKey : ĠOn ion Address . PrivateKey , ĊĠĠĠĠĠĠĠ Ġhs Ports : ĠSet < Tor Config . Setting . Hidden Service . Ports >, ĊĠĠĠĠĠĠĠ Ġflags : ĠSet < Tor Control On ion Add . Flag > ?, ĊĠĠĠĠĠĠĠ Ġmax Streams : ĠTor Config . Setting . Hidden Service . Max Streams ? ĊĠĠĠ Ġ): ĠResult < Hidden Service Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Add , ĠHidden Service Entry > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Add ( privateKey , Ġhs Ports , Ġflags , Ġmax Streams ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion AddNew ( ĊĠĠĠĠĠĠĠ Ġtype : ĠOn ion Address . PrivateKey . Type , ĊĠĠĠĠĠĠĠ Ġhs Ports : ĠSet < Tor Config . Setting . Hidden Service . Ports >, ĊĠĠĠĠĠĠĠ Ġflags : ĠSet < Tor Control On ion Add . Flag > ?, ĊĠĠĠĠĠĠĠ Ġmax Streams : ĠTor Config . Setting . Hidden Service . Max Streams ? ĊĠĠĠ Ġ): ĠResult < Hidden Service Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Add , ĠHidden Service Entry > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion AddNew ( type , Ġhs Ports , Ġflags , Ġmax Streams ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Client Auth Add ( ĊĠĠĠĠĠĠĠ Ġaddress : ĠOn ion Address V 3 , ĊĠĠĠĠĠĠĠ Ġkey : ĠOn ion Client Auth . PrivateKey , ĊĠĠĠĠĠĠĠ Ġclient Name : ĠClient Name ?, ĊĠĠĠĠĠĠĠ Ġflags : ĠSet < Tor Control On ion Client Auth . Flag >? ĊĠĠĠ Ġ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Client Auth Add , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Client Auth Add ( address , Ġkey , Ġclient Name , Ġflags ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Client Auth Remove ( address : ĠOn ion Address V 3 ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Client Auth Remove , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Client Auth Remove ( address ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Client Auth View (): ĠResult < List < Client Auth Entry >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Client Auth View , ĠList < Client Auth Entry >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Client Auth View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Client Auth View ( address : ĠOn ion Address V 3 ): ĠResult < Client Auth Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Client Auth View , ĠClient Auth Entry > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Client Auth View ( address ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon ion Del ( address : ĠOn ion Address ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control On ion Del , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon ion Del ( address ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġresolve (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Resolve , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġresolve () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġset Events ( events : ĠSet < Tor Event >, Ġextended : ĠBoolean ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Set Events , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Events ( events , Ġextended ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsignal ( signal : ĠTor Control Signal . Signal ): ĠResult < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Signal , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal ( signal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġstream Attach (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Stream Attach , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġstream Attach () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġstream Close (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Stream Close , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġstream Close () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġstream Redirect (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Stream Redirect , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġstream Redirect () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġsuspend Ġfun Ġuse Feature (): ĠResult < Any ?> Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġprovide < Tor Control Use Feature , ĠAny ?> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġuse Feature () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġsuspend Ġfun Ġ< T , ĠV > Ġprovide ( ĊĠĠĠĠĠĠĠ Ġblock : Ġsuspend ĠT . () Ġ-> ĠResult < V > ĊĠĠĠ Ġ): ĠResult < V > Ċ } Ċ