package Ġcom . ust ad mobile . retrie ver . io Ċ Ċ import Ġjava . io . Filter InputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . security . Message Digest Ċ Ċ class ĠMulti Digest InputStream ( ĊĠĠĠ Ġin Stream : ĠInputStream , ĊĠĠĠ Ġprivate Ġval Ġdigest s : ĠArray < Message Digest >, Ċ ): ĠFilter InputStream ( in Stream ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġread (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ` in `. read (). also Ġ{ Ġread Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . update ( read Result . to Byte ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( b : ĠByteArray ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread ( b , Ġ 0 , Ġb . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread ( b : ĠByteArray , Ġoff : ĠInt , Ġlen : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ` in `. read ( b , Ġoff , Ġlen ). also Ġ{ Ġread Count Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest s . forEach Ġ{ Ġdigest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdigest . update ( b , Ġoff , Ġread Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }