



def    __lowerCamelCase   (  lowerCamelCase__		):

				"""simple docstring"""


				return credit_card_number.startswith(("34", "35", "37", "4", "5", "6")		)


def    __lowerCamelCase   (  lowerCamelCase__		):

				"""simple docstring"""


				lowercase__	:       Optional[Any]						=	credit_card_number
				lowercase__	:       Dict						=	0
				lowercase__	:       Optional[Any]						=	len(lowerCAmelCase_		) - 2
				for i in range(lowerCAmelCase_	,					-1	,					-2		):
								#  double the value of every second digit
								lowercase__	:       Dict						=	int(cc_number[i]		)
								digit *= 2
								# If doubling of a number results in a two digit number
								# i.e greater than 9(e.g., 6 × 2 = 12),
								# then add the digits of the product (e.g., 12: 1 + 2 = 3, 15: 1 + 5 = 6),
								# to get a single digit number.
								if digit > 9:
												digit %= 10
												digit += 1
								lowercase__	:       str						=	cc_number[:i] + str(lowerCAmelCase_		) + cc_number[i + 1 :]
								total += digit

				# Sum up the remaining digits
				for i in range(len(lowerCAmelCase_		) - 1	,					-1	,					-2		):
								total += int(cc_number[i]		)

				return total % 10 == 0


def    __lowerCamelCase   (  lowerCamelCase__		):

				"""simple docstring"""


				lowercase__	:       int						=	F"""{credit_card_number} is an invalid credit card number because"""
				if not credit_card_number.isdigit():
								print(F"""{error_message} it has nonnumerical characters."""		)
								return False

				if not 13 <= len(lowerCAmelCase_		) <= 16:
								print(F"""{error_message} of its length."""		)
								return False

				if not validate_initial_digits(lowerCAmelCase_		):
								print(F"""{error_message} of its first two digits."""		)
								return False

				if not luhn_validation(lowerCAmelCase_		):
								print(F"""{error_message} it fails the Luhn check."""		)
								return False

				print(F"""{credit_card_number} is a valid credit card number."""		)
				return True


if __name__ == "__main__":
				import doctest

				doctest.testmod()
				validate_credit_card_number('''4111111111111111''')
				validate_credit_card_number('''32323''')








from collections import deque

from .hash_table import HashTable


class      __lowerCAmelCase  (			a       ):






  """simple docstring"""





  def __init__(  self							:							int     ,					*_lowerCAmelCase							:							List[Any]     ,					**_lowerCAmelCase							:							Any	) ->			Union[str, Any]:




     """simple docstring"""
     super().__init__(*_lowerCAmelCase     ,					**_lowerCAmelCase	)



  def        lowerCAmelCase__	(  self							:							Tuple     ,					_lowerCAmelCase							:							Optional[int]     ,					_lowerCAmelCase							:							List[Any]	) ->			List[Any]:




     """simple docstring"""
     snake_case_            =       deque([]	) if self.values[key] is None else self.values[key]
     self.values[key].appendleft(_lowerCAmelCase	)
     snake_case_            =       self.values[key]



  def        lowerCAmelCase__	(  self							:							List[str]	) ->			List[Any]:




     """simple docstring"""
     return (
         sum(self.charge_factor - len(_lowerCAmelCase	) for slot in self.values	)
         / self.size_table
         * self.charge_factor
     )



  def        lowerCAmelCase__	(  self							:							List[str]     ,					_lowerCAmelCase							:							Any     ,					_lowerCAmelCase							:							List[str]=None	) ->			int:




     """simple docstring"""
     if not (
         len(self.values[key]	) == self.charge_factor and self.values.count(_lowerCAmelCase	) == 0
     ):
        return key
     return super()._collision_resolution(_lowerCAmelCase     ,					_lowerCAmelCase	)




