package Ġcom . xe ine bi u . media _ stream . util Ċ Ċ import Ġandroid . net . Uri Ċ import Ġjava . io . InputStream Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ internal Ġclass ĠProgress ive Http Stream ( ĊĠĠĠ Ġprivate Ġval Ġstream Uri : ĠUri , ĊĠĠĠ Ġprivate Ġval Ġheaders : ĠHashMap < String , ĠString >? Ċ ) Ġ: ĠInputStream () Ġ{ ĊĊĠĠĠ Ġvar ĠinputStream Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Http URLConnection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstream Uri . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders ĊĠĠĠĠĠĠĠ Ġ). inputStream !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread (): ĠInt Ġ= ĠinputStream . read () ĊĊĠĠĠ Ġoverride Ġfun Ġavailable (): ĠInt Ġ= ĠinputStream . available () ĊĊĠĠĠ Ġoverride Ġfun Ġclose (): ĠUnit Ġ= ĠinputStream . close () ĊĊĠĠĠ Ġoverride Ġfun Ġmark ( read limit : ĠInt ): ĠUnit Ġ= ĠinputStream . mark ( read limit ) ĊĊĠĠĠ Ġoverride Ġfun Ġmark Supported (): ĠBoolean Ġ= ĠinputStream . mark Supported () ĊĊĠĠĠ Ġoverride Ġfun Ġread ( b : ĠByteArray ): ĠInt Ġ= ĠinputStream . read ( b ) ĊĊĠĠĠ Ġoverride Ġfun Ġread ( b : ĠByteArray , Ġoff : ĠInt , Ġlen : ĠInt ): ĠInt Ġ= ĠinputStream . read ( b , Ġoff , Ġlen ) ĊĊĠĠĠ Ġoverride Ġfun Ġreset (): ĠUnit Ġ= ĠinputStream . reset () ĊĊĠĠĠ Ġoverride Ġfun Ġskip ( n : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrange Header Ġ= Ġheaders Ġ?: Ġhash Map Of () ĊĠĠĠĠĠĠĠ Ġrange Header [" Range "] Ġ= Ġ" bytes =$ n -" ĊĊĠĠĠĠĠĠĠ Ġthis . inputStream Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Http URLConnection ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream Uri . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange Header ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). inputStream ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= ĠinputStream Ġ== Ġother ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= ĠinputStream . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĠinputStream . toString () Ċ }