





import warnings
from functools import wraps
from typing import Callable


def     lowerCamelCase_	(      lowerCAmelCase:	Callable				)->		Callable:

  @wraps(lowerCAmelCase				)
  def _inner_fn(*lowerCAmelCase:	str    ,							**lowerCAmelCase:	Optional[Any]				):
    warnings.warn(
        (F"""'{fn.__name__}' is experimental and might be subject to breaking changes in the future.""")    ,							lowerCAmelCase    ,							)
    return fn(*lowerCAmelCase    ,							**lowerCAmelCase				)

  return _inner_fn











def     lowerCamelCase_	(      lowerCAmelCase:	bytes				)->		str:
  return "".join([hex(lowerCAmelCase				)[2:].zfill(2				).upper() for byte in list(lowerCAmelCase				)]				)


def     lowerCamelCase_	(      lowerCAmelCase:	str				)->		bytes:
  # Check data validity, following RFC3548
  # https://www.ietf.org/rfc/rfc3548.txt
  if (len(lowerCAmelCase				) % 2) != 0:
    raise ValueError(
        'Base16 encoded data is invalid:\nData does not have an even number of hex digits.'				)
  # Check the character set - the standard base16 alphabet
  # is uppercase according to RFC3548 section 6
  if not set(lowerCAmelCase				) <= set('0123456789ABCDEF'				):
    raise ValueError(
        'Base16 encoded data is invalid:\nData is not uppercase hex or it contains invalid characters.'				)
  # For every two hexadecimal digits (= a byte), turn it into an integer.
  # Then, string the result together into bytes, and return it.
  return bytes(int(data[i] + data[i + 1]    ,							16				) for i in range(0    ,							len(lowerCAmelCase				)    ,							2				)				)


if __name__ == "__main__":
      import doctest

      doctest.testmod()




