





UpperCAmelCase_           =	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
def      A__       (    SCREAMING_SNAKE_CASE_   :      bytes						)  ->  bytes:






   """simple docstring"""







   if not isinstance(SCREAMING_SNAKE_CASE_				,	SCREAMING_SNAKE_CASE_						):
      _UpperCAmelCase           =   F'''a bytes-like object is required, not \'{data.__class__.__name__}\''''
      raise TypeError(SCREAMING_SNAKE_CASE_						)

   _UpperCAmelCase           =   ''''''.join(bin(SCREAMING_SNAKE_CASE_						)[2:].zfill(8						) for byte in data						)

   _UpperCAmelCase           =   len(SCREAMING_SNAKE_CASE_						) % 6 != 0

   if padding_needed:
      # The padding that will be added later
      _UpperCAmelCase           =   B'''=''' * ((6 - len(SCREAMING_SNAKE_CASE_						) % 6) // 2)

      # Append binary_stream with arbitrary binary digits (0's by default) to make its
      # length a multiple of 6.
      binary_stream += "0" * (6 - len(SCREAMING_SNAKE_CASE_						) % 6)
   else:
      _UpperCAmelCase           =   B''''''

   # Encode every 6 binary digits to their corresponding Base64 character
   return (
       "".join(
           B64_CHARSET[int(binary_stream[index : index + 6]				,	2						)]
           for index in range(0				,	len(SCREAMING_SNAKE_CASE_						)				,	6						)						).encode()
       + padding
   )
def      A__       (    SCREAMING_SNAKE_CASE_   :      str						)  ->  bytes:






   """simple docstring"""







   if not isinstance(SCREAMING_SNAKE_CASE_				,	SCREAMING_SNAKE_CASE_						) and not isinstance(SCREAMING_SNAKE_CASE_				,	SCREAMING_SNAKE_CASE_						):
      _UpperCAmelCase           =   (
          '''argument should be a bytes-like object or ASCII string, '''
          F'''not \'{encoded_data.__class__.__name__}\''''
      )
      raise TypeError(SCREAMING_SNAKE_CASE_						)

   # In case encoded_data is a bytes-like object, make sure it contains only
   # ASCII characters so we convert it to a string object
   if isinstance(SCREAMING_SNAKE_CASE_				,	SCREAMING_SNAKE_CASE_						):
      try:
         _UpperCAmelCase           =   encoded_data.decode('''utf-8'''						)
      except UnicodeDecodeError:
         raise ValueError('''base64 encoded data should only contain ASCII characters'''						)

   _UpperCAmelCase           =   encoded_data.count('''='''						)

   # Check if the encoded string contains non base64 characters
   if padding:
      assert all(
          char in B64_CHARSET for char in encoded_data[:-padding]						), "Invalid base64 character(s) found."
   else:
      assert all(
          char in B64_CHARSET for char in encoded_data						), "Invalid base64 character(s) found."

   # Check the padding
   assert len(SCREAMING_SNAKE_CASE_						) % 4 == 0 and padding < 3, "Incorrect padding"

   if padding:
      # Remove padding if there is one
      _UpperCAmelCase           =   encoded_data[:-padding]

      _UpperCAmelCase           =   ''''''.join(
          bin(B64_CHARSET.index(SCREAMING_SNAKE_CASE_						)						)[2:].zfill(6						) for char in encoded_data						)[: -padding * 2]
   else:
      _UpperCAmelCase           =   ''''''.join(
          bin(B64_CHARSET.index(SCREAMING_SNAKE_CASE_						)						)[2:].zfill(6						) for char in encoded_data						)

   _UpperCAmelCase           =   [
       int(binary_stream[index : index + 8]				,	2						)
       for index in range(0				,	len(SCREAMING_SNAKE_CASE_						)				,	8						)
   ]

   return bytes(SCREAMING_SNAKE_CASE_						)


if __name__ == "__main__":
   import doctest

   doctest.testmod()






from ..utils import DummyObject, requires_backends




class 			__UpperCamelCase    (							metaclass=A__    ):
     __A	:  str							  =   ["""torch""", """scipy"""]





     def __init__(     self				,							*_UpperCamelCase				,							**_UpperCamelCase					):
        requires_backends(self				,							['''torch''', '''scipy''']					)





     @classmethod
     def 		UpperCamelCase(     cls				,							*_UpperCamelCase				,							**_UpperCamelCase					):
        requires_backends(cls				,							['''torch''', '''scipy''']					)





     @classmethod
     def 		UpperCamelCase(     cls				,							*_UpperCamelCase				,							**_UpperCamelCase					):
        requires_backends(cls				,							['''torch''', '''scipy''']					)