code: func (d *state) Sum(in []byte) []byte {
  	// Make a copy of the original hash so that caller can keep writing
  	// and summing.
  	dup := d.clone()
  	hash := make([]byte, dup.outputLen)
  	dup.Read(hash)
  	return append(in, hash...)
  }
docs: // Sum applies padding to the hash state and then squeezes out the desired
  // number of output bytes.