






import argparse

import torch

from transformers import LxmertConfig, LxmertForPreTraining, load_tf_weights_in_lxmert
from transformers.utils import logging


logging.set_verbosity_info()





def 				snake_case  (     lowerCamelCase				,  lowerCamelCase				,  lowerCamelCase					):




	'''simple docstring'''







	__lowercase             =  LxmertConfig.from_json_file(lowerCamelCase					)
	print(F'Building PyTorch model from configuration: {config}'					)
	__lowercase             =  LxmertForPreTraining(lowerCamelCase					)

	# Load weights from tf checkpoint
	load_tf_weights_in_lxmert(lowerCamelCase				,  lowerCamelCase				,  lowerCamelCase					)

	# Save pytorch-model
	print(F'Save PyTorch model to {pytorch_dump_path}'					)
	torch.save(model.state_dict()				,  lowerCamelCase					)


if __name__ == "__main__":
						__UpperCamelCase      :      Optional[Any]     						=						argparse.ArgumentParser()
						# Required parameters
						parser.add_argument(
						    """--tf_checkpoint_path""", default=None, type=str, required=True, help="""Path to the TensorFlow checkpoint path."""
						)
						parser.add_argument(
						    """--config_file""",
						    default=None,
						    type=str,
						    required=True,
						    help="""The config json file corresponding to the pre-trained model. \nThis specifies the model architecture.""",
						)
						parser.add_argument(
						    """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
						)
						__UpperCamelCase      :      Optional[Any]     						=						parser.parse_args()
						convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path)









def 				snake_case  (     lowerCamelCase					):




	'''simple docstring'''







	__lowercase             =  """"""
	for ch in key:
		if ch == " " or ch not in key_no_dups and ch.isalpha():
			key_no_dups += ch
	return key_no_dups





def 				snake_case  (     lowerCamelCase					):




	'''simple docstring'''







	__lowercase             =  [chr(i + 65					) for i in range(26					)]
	# Remove duplicate characters from key
	__lowercase             =  remove_duplicates(key.upper()					)
	__lowercase             =  len(lowerCamelCase					)
	# First fill cipher with key characters
	__lowercase             =  {alphabet[i]: char for i, char in enumerate(lowerCamelCase					)}
	# Then map remaining characters in alphabet to
	# the alphabet from the beginning
	for i in range(len(lowerCamelCase					)				,  26					):
		__lowercase             =  alphabet[i - offset]
		# Ensure we are not mapping letters to letters previously mapped
		while char in key:
			offset -= 1
			__lowercase             =  alphabet[i - offset]
		__lowercase             =  char
	return cipher_alphabet





def 				snake_case  (     lowerCamelCase				,  lowerCamelCase					):




	'''simple docstring'''







	return "".join(cipher_map.get(lowerCamelCase				,  lowerCamelCase					) for ch in message.upper()					)





def 				snake_case  (     lowerCamelCase				,  lowerCamelCase					):




	'''simple docstring'''







	__lowercase             =  {v: k for k, v in cipher_map.items()}
	return "".join(rev_cipher_map.get(lowerCamelCase				,  lowerCamelCase					) for ch in message.upper()					)





def 				snake_case  (     ):




	'''simple docstring'''







	__lowercase             =  input("""Enter message to encode or decode: """					).strip()
	__lowercase             =  input("""Enter keyword: """					).strip()
	__lowercase             =  input("""Encipher or decipher? E/D:"""					).strip()[0].lower()
	try:
		__lowercase             =  {"""e""": encipher, """d""": decipher}[option]
	except KeyError:
		raise KeyError("""invalid input option"""					)
	__lowercase             =  create_cipher_map(lowerCamelCase					)
	print(func(lowerCamelCase				,  lowerCamelCase					)					)


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						main()

