





"""simple docstring"""




from __future__ import annotations





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  assert n > 1 and a > 0 and greatest_common_divisor(_UpperCAmelCase			, _UpperCAmelCase ) == 1
  (A_)  :	Tuple    						=  extended_gcd(_UpperCAmelCase			, _UpperCAmelCase )  # Implemented below
  A_  :	Tuple    						=  (b * s) % n
  return x





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  (A_)  :	List[str]    						=  extended_euclid(_UpperCAmelCase			, _UpperCAmelCase )  # Implemented below
  if b < 0:
    A_  :	Any    						=  (b % n + n) % n
  return b





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  A_  :	List[str]    						=  invert_modulo(_UpperCAmelCase			, _UpperCAmelCase )
  A_  :	int    						=  (b * s) % n
  return x





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  assert a >= 0 and b >= 0

  if b == 0:
    A_  :	Any    						=  a, 1, 0
  else:
    (A_)  :	Dict    						=  extended_gcd(_UpperCAmelCase			, a % b )
    A_  :	int    						=  q
    A_  :	Any    						=  p - q * (a // b)

  assert a % d == 0 and b % d == 0
  assert d == a * x + b * y

  return (d, x, y)





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  if b == 0:
    return (1, 0)
  (A_)  :	Union[str, Any]    						=  extended_euclid(_UpperCAmelCase			, a % b )
  A_  :	int    						=  a // b
  return (y, x - k * y)





def 						UpperCAmelCase__		(					_UpperCAmelCase			, _UpperCAmelCase ):






  """simple docstring"""





  if a < b:
    A_  :	Any    						=  b, a

  while a % b != 0:
    A_  :	int    						=  b, a % b

  return b


if __name__ == "__main__":
   from doctest import testmod

   testmod(name='modular_division', verbose=True)
   testmod(name='modular_division2', verbose=True)
   testmod(name='invert_modulo', verbose=True)
   testmod(name='extended_gcd', verbose=True)
   testmod(name='extended_euclid', verbose=True)
   testmod(name='greatest_common_divisor', verbose=True)






"""simple docstring"""




# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
    is_vision_available,
)


lowerCamelCase_					:						Any      = {
    'configuration_tvlt': ['TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'TvltConfig'],
    'feature_extraction_tvlt': ['TvltFeatureExtractor'],
    'processing_tvlt': ['TvltProcessor'],
}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   lowerCamelCase_					:						Union[str, Any]      = [
       'TVLT_PRETRAINED_MODEL_ARCHIVE_LIST',
       'TvltModel',
       'TvltForPreTraining',
       'TvltForAudioVisualClassification',
       'TvltPreTrainedModel',
   ]

try:
   if not is_vision_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   lowerCamelCase_					:						List[Any]      = ['TvltImageProcessor']


if TYPE_CHECKING:
   from .configuration_tvlt import TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP, TvltConfig
   from .processing_tvlt import TvltProcessor
   from .feature_extraction_tvlt import TvltFeatureExtractor

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tvlt import (
          TVLT_PRETRAINED_MODEL_ARCHIVE_LIST,
          TvltForAudioVisualClassification,
          TvltForPreTraining,
          TvltModel,
          TvltPreTrainedModel,
      )

   try:
      if not is_vision_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .image_processing_tvlt import TvltImageProcessor


else:
   import sys

   lowerCamelCase_					:						Optional[int]      = _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)