old_contents: def read_packed_int(f):
  	""" Reads a packed integer from the fileobj <f>. """
  	ret = 0
  	s = 0
  	while True:
  		b = ord(f.read(1))
  		ret |= (b & 127) << s
  		s += 7
  		if b & 128 == 0:
  			break
  	return ret
  	
  def write_packed_int(f, v):
  	""" Writes the integer <v> packed to <f>. """
  	if v == 0:
  		f.write("\0")
  	while v > 0:
  		c = v & 127
  		v >>= 7
  		if v != 0:
  			c = c | 128
  		f.write(chr(c))
  
new_contents: def unpack_int(s):
  	""" Reads a packed integer from string <s> """
  	ret = 0
  	i = 0
  	while True:
  		b = ord(s[i])
  		ret |= (b & 127) << (i*7)
  		i += 1
  		if b & 128 == 0:
  			break
  	return ret
  
  def pack_int(v):
  	""" Returns <v> as packed string. """
  	if v == 0:
  		return "\0"
  	ret = ''
  	while v > 0:
  		c = v & 127
  		v >>= 7
  		if v != 0:
  			c = c | 128
  		ret += chr(c)
  	return ret
  
  def read_packed_int(f):
  	""" Reads a packed integer from the fileobj <f>. """
  	ret = 0
  	s = 0
  	while True:
  		b = ord(f.read(1))
  		ret |= (b & 127) << s
  		s += 7
  		if b & 128 == 0:
  			break
  	return ret
  	
  def write_packed_int(f, v):
  	""" Writes the integer <v> packed to <f>. """
  	if v == 0:
  		f.write("\0")
  	while v > 0:
  		c = v & 127
  		v >>= 7
  		if v != 0:
  			c = c | 128
  		f.write(chr(c))
  
subject: add {un,}pack_int