type Reader … // NewReader returns a quoted-printable reader, decoding from r. func NewReader(r io.Reader) *Reader { … } func fromHex(b byte) (byte, error) { … } func readHexByte(v []byte) (b byte, err error) { … } func isQPDiscardWhitespace(r rune) bool { … } var crlf … var lf … var softSuffix … // Read reads and decodes quoted-printable data from the underlying reader. func (r *Reader) Read(p []byte) (n int, err error) { … }