Diff

## To Artifact [90c8b12e57]:

 ︙ ︙ ```134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 ``` ``` if len(output) == 0 { return 0, nil } // Check whether we have leftover data in the buffer if len(ctx.input) > 0 { readCount = copy(output, ctx.input) ctx.input = ctx.input[readCount:] return readCount, nil } // This is single-iteration only but it is fine according to io.Reader's contract ?! // TODO - read all bytes from a block based on the hamming weight of the flag // and just shuffle them for predictions instead of bite-sized reads ;) // Read the flags ctx.input = ctx.input[:1] readCount, err = wrapped.Read(ctx.input) if readCount == 0 || err != nil { return readCount, err } flags = ctx.input[0] ctx.input = ctx.input[:8] var i uint = 0 for ; i < 8; i++ { if flags&(1< 0 { // Guess was right ctx.input[i] = ctx.table[ctx.hash] } else { ``` ``` > > > > | > < | | | ``` ```134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 ``` ``` if len(output) == 0 { return 0, nil } // Check whether we have leftover data in the buffer if len(ctx.input) > 0 { readCount = copy(output, ctx.input) // Check whether we still have leftover data in the buffer :) if readCount < len(ctx.input) { copy(ctx.input[:readCount], ctx.input[readCount:]) ctx.input = ctx.input[:readCount] } return readCount, nil } // This is single-iteration only but it is fine according to io.Reader's contract ?! // TODO - read all bytes from a block based on the hamming weight of the flag // and just shuffle them for predictions instead of bite-sized reads ;) // Read the flags readCount, err = wrapped.Read(ctx.input[:1]) if readCount == 0 || err != nil { return readCount, err } ctx.input = ctx.input[:8] flags = ctx.input[0] var i uint = 0 for ; i < 8; i++ { if flags&(1< 0 { // Guess was right ctx.input[i] = ctx.table[ctx.hash] } else { ``` ︙ ︙