@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public void close() throws IOException { eof(); in.close(); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public void close() throws IOException { eof(); in.close(); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public void close() throws IOException { eof(); in.close(); }
@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public int read() throws IOException { if (left <= 0) { eof(); return -1; } left--; return in.read(); }
@Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); }
@Override public void close() throws IOException { eof(); in.close(); }