package Ġcom . example . wik isp ot . models For Adapters Ċ Ċ import Ġcom . example . wik isp ot . General Variables Ċ import Ġcom . example . wik isp ot . databases . Names Database Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠMessage ( var Ġsender Id : ĠString , Ġval Ġcontent : ĠString , Ġvar Ġtimestamp : ĠString =" 0 ") Ġ{ ĊĊĠĠĠ Ġvar Ġsender Name : ĠString ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠgetRandom Generator ( sender Id ) ĊĊĠĠĠĠĠĠĠ Ġsender Name Ġ= Ġ"${ Names Database . names [ r . nextInt ( Names Database . names . size )] } Ġ- Ġ${ r . nextInt ( 9 9 9 9 )}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetRandom Generator ( seed String : ĠString ): ĠRandom Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġn : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġseed String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn Ġ+= Ġelement . toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRandom ( n ) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ object ĠMessages Supplier Ġ{ ĊĊĠĠĠ Ġvar Ġmessages Ġ= ĠarrayOf < Message ?> () ĊĊĠĠĠ Ġfun Ġappend Message ( message : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġmessages . copyOf ( messages . size Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġarray [ messages . size ] Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġmessages Ġ= Ġarray ĊĊĠĠĠĠĠĠĠ Ġif Ġ( messages . size Ġ> ĠGeneral Variables . max _ amount _ of _ saved _ messages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Message ByIndex ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( messages . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Message ByIndex ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages Ġ= Ġmessages . copyOf Range ( 0 , Ġi ) Ġ+ Ġmessages . copyOf Range ( i Ġ+ Ġ 1 , Ġmessages . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck If Contains ( message : ĠMessage , Ġcheck Timestamp : ĠBoolean = true ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmessages . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages [ i ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message . sender Id Ġ== Ġit . sender Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message . content Ġ== Ġit . content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message . timestamp Ġ== Ġit . timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Waiting Messages () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpositions Of Items ToRemove Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmessages . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( messages [ i ] !!. timestamp Ġ== Ġ" waiting ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions Of Items ToRemove . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" waiting Ġat : Ġ$ i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġsubtract Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġpositions Of Items ToRemove ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Message ByIndex ( index Ġ- Ġsubtract Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtract Amount Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget IndexOf Last Message From Self (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġmessages . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( messages [ n ] !!. sender Id Ġ== ĠGeneral Variables . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġw ipe Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages Ġ= ĠarrayOf () ĊĠĠĠ Ġ} Ċ Ċ } Ċ