async{
use stream=File.OpenRead(file)
let md5=Hash.md5 stream|>Core.printArray
let size=stream.Length
let id=Core.rndInt64()
let partSize=8192L
let totalParts=total partSize size
let pF=if(size<=1024L*10L*1024L) then (small id )else (big id (totalParts|>int))
use reader=new BinaryReader(stream)
let parts=Seq.unfold (fun (r,i)->async{
let data=reader.ReadBytes (partSize|>int)
let! (res,index)=uploadPart uploadRoutine pF (i,data)
}) (reader,1)
return()