package Ġcom . github . recognized . scre enc ast . recorder . sound Ċ Ċ import Ġcom . github . recognized . scre enc ast . recorder . sound . Ed itions Model . Edition Type .* Ċ import Ġcom . github . recognized . scre enc ast . recorder . sound . impl . Default Ed itions Model Ċ import Ġjava . io . String Reader Ċ import Ġjava . util .* Ċ Ċ interface ĠEdition s View Ġ{ ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠSorted Ġby Ġfirst Ġelement Ġof Ġpair Ġlist Ġof Ġed itions Model Ġthat Ġwere Ġmade . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġed itions Model : ĠList < Pair < Long Range , ĠEdition s Model . Edition Type >> ĊĠĠĠĠĊĠĠĠ Ġfun Ġimp ose ( frame Range : ĠLong Range ): ĠLong Range ĊĠĠĠĠĊĠĠĠ Ġfun Ġimp ose ( frame : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġimp ose ( frame .. frame ). start ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġoverlay ( frame Range : ĠLong Range ): ĠLong Range ĊĠĠĠĠĊĠĠĠ Ġfun Ġoverlay ( frame : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoverlay ( frame .. frame ). start ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġcopy (): ĠEdition s Model ĊĠĠĠĠĊĠĠĠ Ġfun Ġserialize (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( range , Ġtype ) Ġin Ġed itions Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("${ range . start } Ġ${ range . end Inclusive } Ġ$ type \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠEdition s Model Ġ: ĠEdition s View Ġ{ ĊĠĠĠ Ġenum Ġclass ĠEdition Type Ġ{ ĊĠĠĠĠĠĠĠ ĠC UT , ĠM UTE , ĠNO _ CHANG ES ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCut Ġa Ġframe Ġrange . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ frame Range ] Ġintersect s Ġranges Ġthat Ġwere Ġmut ed , Ġthey Ġbecome Ġcut Ġand Ġnot Ġmut ed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcut ( frame Range : ĠLong Range ) ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠM ute Ġa Ġframe Ġrange . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ frame Range ] Ġintersect s Ġranges Ġthat Ġwere Ġcut , Ġthey Ġbecome Ġmut ed Ġand Ġnot Ġcut . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmute ( frame Range : ĠLong Range ) ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUndo Ġall Ġchanges Ġmade Ġto Ġthis Ġ[ frame Range ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġun mute ( frame Range : ĠLong Range ) ĊĠĠĠĠĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReset Ġall Ġchanges . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset () ĊĠĠĠĠĊĠĠĠ Ġfun Ġshift ( delta : ĠLong ) ĊĠĠĠĠĊĠĠĠ Ġfun Ġload ( other : ĠEdition s View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( range , Ġtype ) Ġin Ġother . ed itions Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC UT Ġ-> Ġcut ( range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM UTE Ġ-> Ġmute ( range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNO _ CHANG ES Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġfun Ġdeserialize ( bytes : ĠByteArray ): ĠEdition s Model Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Default Ed itions Model ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= ĠScanner ( String Reader ( String ( bytes , ĠChar sets . UTF _ 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( sc . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠLong Range ( sc . next Long (), Ġsc . next Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sc . next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC UT . name Ġ-> Ġcut ( range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM UTE . name Ġ-> Ġmute ( range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNO _ CHANG ES . name Ġ-> Ġun mute ( range ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }