in lib/src/percent/decoder.dart [66:95]
void addSlice(String string, int start, int end, bool isLast) {
RangeError.checkValidRange(start, end, string.length);
if (start == end) {
if (isLast) _close(string, end);
return;
}
var buffer = Uint8Buffer();
var codeUnits = string.codeUnits;
if (_lastDigit == _lastPercent) {
_lastDigit = 16 * digitForCodeUnit(codeUnits, start);
start++;
if (start == end) {
if (isLast) _close(string, end);
return;
}
}
if (_lastDigit != null) {
buffer.add(_lastDigit! + digitForCodeUnit(codeUnits, start));
start++;
}
_lastDigit = _decode(codeUnits, start, end, buffer);
_sink.add(buffer.buffer.asUint8List(0, buffer.length));
if (isLast) _close(string, end);
}