"""simple docstring"""





import os
import random
import sys

from . import cryptomath_module as cryptoMath  # noqa: N812
from . import rabin_miller as rabinMiller  # noqa: N812





def 				a_     (      ):





       '''simple docstring'''

       print('Making key files...'     )
       make_key_files('rsa'   , 1024     )
       print('Key files generation successful.'     )





def 				a_     (      _lowerCAmelCase  : int     ):





       '''simple docstring'''

       print('Generating prime p...'     )
       lowercase__			:		Dict       =	rabinMiller.generate_large_prime(_lowerCAmelCase     )
       print('Generating prime q...'     )
       lowercase__			:		List[str]       =	rabinMiller.generate_large_prime(_lowerCAmelCase     )
       lowercase__			:		Tuple       =	p * q

       print('Generating e that is relatively prime to (p - 1) * (q - 1)...'     )
       while True:
              lowercase__			:		Dict       =	random.randrange(2 ** (key_size - 1)   , 2 ** (key_size)     )
              if cryptoMath.gcd(_lowerCAmelCase   , (p - 1) * (q - 1)     ) == 1:
                     break

       print('Calculating d that is mod inverse of e...'     )
       lowercase__			:		Tuple       =	cryptoMath.find_mod_inverse(_lowerCAmelCase   , (p - 1) * (q - 1)     )

       lowercase__			:		Dict       =	(n, e)
       lowercase__			:		str       =	(n, d)
       return (public_key, private_key)





def 				a_     (      _lowerCAmelCase  : str   , _lowerCAmelCase  : int     ):





       '''simple docstring'''

       if os.path.exists(f"""{name}_pubkey.txt"""     ) or os.path.exists(f"""{name}_privkey.txt"""     ):
              print('\nWARNING:'     )
              print(
                  f"""\"{name}_pubkey.txt\" or \"{name}_privkey.txt\" already exists. \n"""
                  'Use a different name or delete these files and re-run this program.'     )
              sys.exit()

       lowercase__    ,      lowercase__			:		int       =	generate_key(_lowerCAmelCase     )
       print(f"""\nWriting public key to file {name}_pubkey.txt..."""     )
       with open(f"""{name}_pubkey.txt"""   , 'w'     ) as out_file:
              out_file.write(f"""{key_size},{public_key[0]},{public_key[1]}"""     )

       print(f"""Writing private key to file {name}_privkey.txt..."""     )
       with open(f"""{name}_privkey.txt"""   , 'w'     ) as out_file:
              out_file.write(f"""{key_size},{private_key[0]},{private_key[1]}"""     )


if __name__ == "__main__":
       main()








'''simple docstring'''

from collections.abc import Sequence





def lowerCamelCase						(     __lowerCamelCase :    Sequence[float]					,       __lowerCamelCase :    bool = False    )						->float:
    if not arr:
        return 0

    _SCREAMING_SNAKE_CASE									=			0 if allow_empty_subarrays else float("""-inf"""    )
    _SCREAMING_SNAKE_CASE									=			0.0
    for num in arr:
        _SCREAMING_SNAKE_CASE									=			max(0 if allow_empty_subarrays else num					,       curr_sum + num    )
        _SCREAMING_SNAKE_CASE									=			max(__lowerCamelCase					,       __lowerCamelCase    )

    return max_sum


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

      testmod()

      lowercase_					= [-2, 1, -3, 4, -1, 2, 1, -5, 4]
      print(f"""{max_subarray_sum(nums) = }""")



