package Ġcom . github . flo rent 3 7 . assets _ audio _ player Ċ Ċ import ĠStop When Call Ċ import ĠStop When Call Audio Focus Ċ import Ġandroid . content . Context Ċ import Ġandroidx . annotation . NonNull Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . plugin . common . Binary Messenger Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar ĊĊ Ċ internal Ġval ĠMETHOD _ POSITION Ġ= Ġ" player . position " Ċ internal Ġval ĠMETHOD _ VOLUME Ġ= Ġ" player . volume " Ċ internal Ġval ĠMETHOD _ FORWARD _ RE W IND _ SPEED Ġ= Ġ" player . forward Rew ind " Ċ internal Ġval ĠMETHOD _ PLAY _ SPEED Ġ= Ġ" player . play Speed " Ċ internal Ġval ĠMETHOD _ FINISHED Ġ= Ġ" player . finished " Ċ internal Ġval ĠMETHOD _ IS _ PLAY ING Ġ= Ġ" player . is Playing " Ċ internal Ġval ĠMETHOD _ CURRENT Ġ= Ġ" player . current " Ċ internal Ġval ĠMETHOD _ NEXT Ġ= Ġ" player . next " Ċ internal Ġval ĠMETHOD _ PREV Ġ= Ġ" player . prev " Ċ Ċ class ĠAssets Audio Player Plugin Ġ: ĠFlutter Plugin Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġassets Audio Player Ġ: ĠAssets Audio Player ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassets Audio Player Ġ= ĠAssets Audio Player ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġflutter Plugin Binding . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmess enger Ġ= Ġflutter Plugin Binding . binary Messenger ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassets Audio Player !!. register (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassets Audio Player ?. unregister (); ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAssets Audio Player ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġmess enger : ĠBinary Messenger ) Ġ: ĠMethod Call Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġstop When Call : ĠStop When Call ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġstop When Call Listener Ġ= Ġobject Ġ: ĠStop When Call . Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Phone StateChanged ( enabled To Play : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . update Enable To Play ( enabled To Play ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop When Call Ġ= ĠStop When Call Audio Focus ( context ) ĊĠĠĠĠĠĠĠ Ġstop When Call ?. register ( stop When Call Listener ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( messenger , Ġ" assets _ audio _ player ") ĊĠĠĠĠĠĠĠ Ġchannel . set MethodCall Handler ( this ) ĊĊĠĠĠĠĠĠĠ Ġstop When Call ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister (){ ĊĠĠĠĠĠĠĠ Ġstop When Call ?. stop () ĊĠĠĠĠĠĠĠ Ġstop When Call ?. unregister ( stop When Call Listener ) ĊĠĠĠĠĠĠĠ Ġplayers . values . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplayers . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġplayers Ġ= Ġmutable Map Of < String , ĠPlayer >() ĊĊĠĠĠ Ġprivate Ġfun Ġget OrCreate Player ( id : ĠString ): ĠPlayer Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġplayers . get Or Put ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠMethod Channel ( messenger , Ġ" assets _ audio _ player /$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplayer Ġ= ĠPlayer ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Volume Changed Ġ= Ġ{ Ġvolume Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ VOLUME , Ġvolume ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Forward Rew ind Ġ= Ġ{ Ġspeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ FORWARD _ RE W IND _ SPEED , Ġspeed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Play Speed Changed Ġ= Ġ{ Ġspeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ PLAY _ SPEED , Ġspeed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Position Changed Ġ= Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ POSITION , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ready To Play Ġ= Ġ{ Ġtotal Duration Seconds Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ CURRENT , Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" total Duration " Ġto Ġtotal Duration Seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Playing Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ IS _ PLAY ING , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . invoke Method ( METHOD _ FINISHED , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ get Or Put Ġplayer ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Playing " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). let Ġ{ Ġplayer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( player . is Playing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" play " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pause " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). pause () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" volume " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolume Ġ= Ġargs [" volume "] Ġas ? ĠDouble Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠDouble .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). set Volume ( volume ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" play Speed " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeed Ġ= Ġargs [" play Speed "] Ġas ? ĠDouble Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠDouble .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). set Play Speed ( speed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" forward Rew ind " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeed Ġ= Ġargs [" speed "] Ġas ? ĠDouble Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠDouble .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). forward Rew ind ( speed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" seek " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Ġ= Ġargs [" to "] Ġas ? ĠInt Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument ( to ) Ġmust Ġbe Ġan Ġint .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). seek ( to Ġ* Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" open " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( call . arguments Ġas ? ĠMap < *, Ġ* >) ?. let Ġ{ Ġargs Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġargs [" id "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġ( id ) Ġmust Ġbe Ġan ĠString .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġargs [" path "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < String , ĠAny > Ġcontaining Ġa Ġ` path `", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Type Ġ= Ġargs [" audio Type "] Ġas ? ĠString Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < String , ĠAny > Ġcontaining Ġa Ġ` audio Type `", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolume Ġ= Ġargs [" volume "] Ġas ? ĠDouble Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < String , ĠAny > Ġcontaining Ġa Ġ` path `", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplay Speed Ġ= Ġargs [" play Speed "] Ġas ? ĠDouble Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < String , ĠAny > Ġcontaining Ġa Ġ` path `", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauto Start Ġ= Ġargs [" auto Start "] Ġas ? ĠBoolean Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrespect Sil ent Mode Ġ= Ġargs [" res pect Sil ent Mode "] Ġas ? ĠBoolean Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseek Ġ= Ġargs [" seek "] Ġas ? ĠInt ? ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrCreate Player ( id ). open ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseek , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrespect Sil ent Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Speed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . error (" WRONG _ FORMAT ", Ġ" The Ġspecified Ġargument Ġmust Ġbe Ġan ĠMap < *, ĠAny > .", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ