import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġser des . json Mapper Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ enum Ġclass ĠPlayer Ġ{ ĠBLACK , ĠWH ITE Ġ} Ċ data Ġclass ĠCoord ( val Ġx : ĠInt , Ġval Ġy : ĠInt ) Ċ Ċ const Ġval ĠFULL _ BOARD _ SIZE Ġ= Ġ 1 9 Ċ data Ġclass ĠBoard ( ĊĠĠĠ Ġval Ġpieces : ĠMutable Map < Coord , ĠPlayer > Ġ= ĠHashMap (), ĊĠĠĠ Ġvar Ġsize : ĠInt Ġ= ĠFULL _ BOARD _ SIZE Ċ ) Ċ Ċ data Ġclass ĠCapt ures ( ĊĠĠĠ Ġvar Ġblack : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġvar Ġwhite : ĠInt Ġ= Ġ 0 Ċ ) Ċ Ċ type alias ĠGame Id Ġ= ĠUUID Ċ type alias ĠRequest Id Ġ= ĠUUID Ċ type alias ĠEvent Id Ġ= ĠUUID Ċ Ċ /** Ċ Ġ* ĠAn Ġevent Ġsignal ing Ġthat Ġa Ġmove Ġhas Ġbeen Ġmade . Ċ Ġ*/ Ċ data Ġclass ĠMove Made ( ĊĠĠĠ Ġval Ġgame Id : ĠGame Id , ĊĠĠĠ Ġval Ġreply To : ĠRequest Id , ĊĠĠĠ Ġval Ġevent Id : ĠEvent Id Ġ= ĠUUID . randomUUID (), ĊĠĠĠ Ġval Ġplayer : ĠPlayer , ĊĠĠĠ Ġval Ġcoord : ĠCoord ?, ĊĠĠĠ Ġval Ġcaptured : ĠList < Coord > Ġ= ĠArrayList () Ċ ){ ĊĠĠĠ Ġfun Ġas ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Mapper . writeValue As Bytes ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠBoard Ġsize Ġand Ġhand ic aps Ġ*/ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠGame Ready ( ĊĠĠĠ Ġval Ġboard Size : ĠInt Ġ= ĠFULL _ BOARD _ SIZE Ċ ){ ĊĠĠĠ Ġfun Ġas ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Mapper . writeValue As Bytes ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠMove Made Board Size Ġ( ĊĠĠĠ Ġval Ġmove Made : ĠMove Made , ĊĠĠĠ Ġval Ġboard Size : ĠInt Ċ )