def decode(value: str) -> Union[str, None, bool, int, float]:
assert value.isdigit() or value[<NUM_LIT:0>] == '<STR_LIT:->' and value[<NUM_LIT:1>:].isdigit()<EOL>if -I32_BOUND <= int(value) < I32_BOUND:  <EOL><INDENT>return int(value)<EOL><DEDENT>elif int(value) == I32_BOUND:<EOL><INDENT>return None<EOL><DEDENT>(prefix, value) = (int(value[<NUM_LIT:0>]), int(value[<NUM_LIT:1>:]))<EOL>ival = int(value) - I32_BOUND<EOL>if ival == <NUM_LIT:0>:<EOL><INDENT>return '<STR_LIT>'  <EOL><DEDENT>elif ival == <NUM_LIT:1>:<EOL><INDENT>return False  <EOL><DEDENT>elif ival == <NUM_LIT:2>:<EOL><INDENT>return True  <EOL><DEDENT>blen = ceil(log(ival, <NUM_LIT:16>)/<NUM_LIT:2>)<EOL>ibytes = unhexlify(ival.to_bytes(blen, '<STR_LIT>'))<EOL>return DECODE_PREFIX.get(prefix, str)(ibytes.decode())<EOL>
Decode encoded credential attribute value.

:param value: numeric string to decode
:return: decoded value, stringified if original was neither str, bool, int, nor float