G cluster_goroutine goroutine fs input rc io.ReadCloser fs->rc pr io.PipeReader compressed Compressed() pr->compressed rc2 io.ReadCloser compressed->rc2 output output rc2->output copy io.Copy rc->copy mw io.MultiWriter copy->mw pw io.PipeWriter pw->pr h1 sha256.New mw->h1 gzip gzip.Writer mw->gzip diffid DiffID() h1->diffid mw2 io.MultiWriter gzip->mw2 mw2->pw h2 sha256.New mw2->h2 count countWriter mw2->count digest Digest() h2->digest size Size() count->size