




"""simple docstring"""







def 						snake_case__       (					_lowerCamelCase				)			->str:






		"""simple docstring"""


		return "".join([hex(_lowerCamelCase				)[2:].zfill(2				).upper() for byte in list(_lowerCamelCase				)]				)

def 						snake_case__       (					_lowerCamelCase				)			->bytes:






		"""simple docstring"""


		if (len(_lowerCamelCase				) % 2) != 0:
				raise ValueError(
				    "Base16 encoded data is invalid:\nData does not have an even number of hex digits."				)
		# Check the character set - the standard base16 alphabet
		# is uppercase according to RFC3548 section 6
		if not set(_lowerCamelCase				) <= set("0123456789ABCDEF"				):
				raise ValueError(
				    "Base16 encoded data is invalid:\nData is not uppercase hex or it contains invalid characters."				)
		# For every two hexadecimal digits (= a byte), turn it into an integer.
		# Then, string the result together into bytes, and return it.
		return bytes(int(data[i] + data[i + 1],  16				) for i in range(0,  len(_lowerCamelCase				),  2				)				)


if __name__ == "__main__":
						import doctest

						doctest.testmod()






"""simple docstring"""







from collections import deque

def 						snake_case__       (					_lowerCamelCase				)			->Dict:






		"""simple docstring"""


		__lowercase				:		Any												=				len(_lowerCamelCase				)
		__lowercase				:		str												=				deque()
		__lowercase				:		Tuple												=				[False for _ in range(_lowerCamelCase				)]
		__lowercase				:		Optional[int]												=				[-1 for _ in range(_lowerCamelCase				)]
		__lowercase				:		Dict												=				index_of[:]

		def strong_connect(_lowerCamelCase,  _lowerCamelCase,  _lowerCamelCase				):
				__lowercase				:		List[str]												=				index  # the number when this node is seen
				__lowercase				:		List[str]												=				index  # lowest rank node reachable from here
				index += 1
				stack.append(_lowerCamelCase				)
				__lowercase				:		List[Any]												=				True

				for w in g[v]:
						if index_of[w] == -1:
								__lowercase				:		Optional[int]												=				strong_connect(_lowerCamelCase,  _lowerCamelCase,  _lowerCamelCase				)
								__lowercase				:		List[Any]												=				(
								    lowlink_of[w] if lowlink_of[w] < lowlink_of[v] else lowlink_of[v]
								)
						elif on_stack[w]:
								__lowercase				:		List[Any]												=				(
								    lowlink_of[w] if lowlink_of[w] < lowlink_of[v] else lowlink_of[v]
								)

				if lowlink_of[v] == index_of[v]:
						__lowercase				:		Any												=				[]
						__lowercase				:		List[Any]												=				stack.pop()
						__lowercase				:		Any												=				False
						component.append(_lowerCamelCase				)
						while w != v:
								__lowercase				:		List[str]												=				stack.pop()
								__lowercase				:		Dict												=				False
								component.append(_lowerCamelCase				)
						components.append(_lowerCamelCase				)
				return index

		__lowercase				:		Tuple												=				[]
		for v in range(_lowerCamelCase				):
				if index_of[v] == -1:
						strong_connect(_lowerCamelCase,  0,  _lowerCamelCase				)

		return components

def 						snake_case__       (					_lowerCamelCase,  _lowerCamelCase				)			->Tuple:






		"""simple docstring"""


		__lowercase				:		int												=				[[] for _ in range(_lowerCamelCase				)]
		for u, v in edges:
				g[u].append(_lowerCamelCase				)
		return g


if __name__ == "__main__":
						# Test
						__A   :  int					=      7
						__A   :  int					=      [0, 0, 1, 2, 3, 3, 4, 4, 6]
						__A   :  List[Any]					=      [1, 3, 2, 0, 1, 4, 5, 6, 5]
						__A   :  List[str]					=      [(u, v) for u, v in zip(source, target)]
						__A   :  List[str]					=      create_graph(n_vertices, edges)

						assert [[5], [6], [4], [3, 2, 1, 0]] == tarjan(g)
