code: def address_checksum_and_decode(addr: str) -> Address:
      
      if not is_0x_prefixed(addr):
          raise InvalidAddress('Address must be 0x prefixed')
  
      if not is_checksum_address(addr):
          raise InvalidAddress('Address must be EIP55 checksummed')
  
      addr_bytes = decode_hex(addr)
      assert len(addr_bytes) in (20, 0)
      return Address(addr_bytes)
docs: Accepts a string address and turns it into binary.
  
          Makes sure that the string address provided starts is 0x prefixed and
          checksummed according to EIP55 specification