Skip to content

Instantly share code, notes, and snippets.

@shakna-israel
Last active November 15, 2023 22:06
Show Gist options
  • Star 47 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save shakna-israel/03172c2c06e1f6622764541dc8b4246b to your computer and use it in GitHub Desktop.
Save shakna-israel/03172c2c06e1f6622764541dc8b4246b to your computer and use it in GitHub Desktop.
Obfuscating Python
def _(n):
if not getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 4) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))], (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__())):
return locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))]
else:
return (_(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))] - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + _(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))] - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))
for i in __name__.__class__.__class__.__name__.__class__.__class__([])(range((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__()), __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__()))))):
getattr(getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__(((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))))), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(__name__.__class__(_(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2))))])))
getattr(getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__(((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))))), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(chr((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))
def _(n):
if n <= 0:
return n
else:
return (_(n - 1) + _(n - 2))
for i in range(0, 20):
print(_(i))

Obfuscating Python

Obfuscation isn't difficult in most programming languages. It's why we have "good practices" because it is so easy to hide what you mean in badly written code.

Obfuscation tends to be even easier in dynamic languages because of how forgiving they tend to be - and because they tend to give you direct access to the environment so that you can manipulate it.

Today, for fun, I'm going to obfuscate this code:

def _(n):
    if n <= 0:
        return n
    else:
        return (_(n - 1) + _(n - 2))

for i in range(0, 20):
    print(_(i))

It's fairly simple and recognisable code. A simple recursive algorithm for printing the first 20 Fibonacci numbers. It isn't particularly good code, but it is simple, which will allow us to demonstrate how easy it is to make all that simplicity vanish.

And in the end, we should end up with a whopping payload that does exactly the same as the above script, but will make most programmers take one look and run away, and should in fact stand up to some level of scrutiny as well.


One quick warning before we begin:

The code I'll be writing is heavily obfuscated, which means that it may well break the parser in any syntax highlighter attempting to read it, because of excessive length or nesting.

In fact, some poorer editors are known to crash when confronted with exactly this kind of thing.

Depending how you're viewing this file, you may just get an insanely long scrollbar, because many of the codeblocks that follow are in fact one-liners. You might want to open it in an editor that flows code onto new lines if you want to inspect the code as we go.

However, the code should run perfectly fine in Python.


We need a position to start from. An object that we can grab to grab other things later from. It needs to be easy to access, and not entirely clear why the heck the programmer is calling it.

Python gives us something great for the job: __name__.

This is set in every Python script, and in the case of the above code will probably be equal to "__main__", though as you'll see, we won't have to care what is inside it.

Using __name__ is going to help a bit as well, because it's formatted as a Python internal variable. So when our code starts getting littered with internals it may well fade into the background noise, making whoever is trying to understand the code more tired and more frustrated.


We can get str straight off the bat fairly easily:

str == __name__.__class__

From str we can get to bytes, which will eventually let us get to numbers.

bytes == __name__.__class__.encode(__name__).__class__

Next, we're going to get all the way to int, which will let us construct 0 for our script.

int == __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__

Basically we convert our __name__ into bytes, and then call the count method on it.

The count method requires bytes as an argument, so we hand it the same thing again.

This returns us 1, but we don't actually have to care about the value of that number, because we're just after it's __class__, which of course is int.

Finally, we can get our 0:

0 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__())

We wrap the number in brackets for sanity's sake, so that Python's operator precedence doesn't start making us confused as we go along.


Now we have one number we should get another, larger number, to make constructing arbitrary strings easy. In this case, I wanted a number near the start of the alphabet.

You can get these characters however you like, but to make it nice and unobvious I decided to use the 'e' from type.__name__.

If you get the __class__ of any of Python's fundamental types, you'll get type back. Which means you can string together a ton of superfluous calls to make something like:

type == __name__.__class__.__class__.__name__.__class__.__class__

Which let's us get a larger number, in this case 101:

101 == ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])

And that let's us create individual characters in a non-obvious manner easily enough:

'a' == chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 4)

This has the added benefit of introducing magic numbers, which we can disappear some using the other numbers we can gather.


Speaking of numbers, all we need to generate an arbitrary whole number is:

  • str
  • int
  • 0 - 9

We've already got some of those, so let's get the rest of the numbers.

I'm not going through each one, but basically it's the same steps we've already used.

0 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__())

1 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))

2 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)

3 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))

4 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))

5 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)

6 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))

7 == ((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])

8 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))

9 == (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))

Take careful note that the size of the number doesn't really have anything to do with the size of the code that will get inserted. Which should make whoever is reading the code's day just a little bit cloudier.

(These numbers could actually probably be made much worse, but they're probably good enough).


So we can replace all the numbers in the script now.

But there's some more pesky things we need to get rid of.

One of the first things the programmer will do is look where that argument to our function, n is being used, and try to use that to infer what's happening.

We can make their day a little bit cloudier by using locals.

This is a function that if you see it in everyday code, you should probably feel an overwhelming burden of caution. It let's you access the local scope by using strings.

n == locals()['n']

We already know exactly how to make that 'n' disappear.

ord('n') == 110

'n' == chr(101 + 9)

'n' == chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))

So we can replace our variable now.

n = locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))]

It is still obvious we're accessing the local environment, thanks to the locals call, but it's at least not clear what we're accessing.


Even with the variable reference and the number references gone, the use of that operator, <= might give the programmer a clue about what they're dealing with. Let's make it disappear.

The easiest way, of course, is to turn it into a function call, that we can access through locals.

Usually you'd do this by running:

import operator

operator.ge(n, 0)

But we don't want to give away such a vital clue as import.

Well, turns out Python does have an internal way of importing via a string, which we can construct in an evil enough manner.

operator = __import__('operator', fromlist=[''])

getattr(operator, 'ge')

Now we just need to obfuscate the strings and turn that into a single call.

getattr(__import__('operator', fromlist=['']), chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))

Here, I've only replaced 'ge' with some lovely obfuscated calls. For once Python not having a specific operator for string concatenation operator comes in handy.

Our full obfuscated call to get the <= operator is this lovely bomb:

getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 4) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))

We're nearly ready to assemble the horrific parts of this into our fully obfuscated program.

However, we still have two rather clear calls, and it'd be nice to get rid of those.

The two, range and print, reveal quite a lot about our intent. That we want to loop a sequence of times, and output something to the console.

I wasn't quite sure how to go about accessing range from an indirect source, but the function will act the same way if we turn the range into a list, which let's us hide it a little. We can grab list using type on an empty list. (Because there's no way a sane person would do it that way, is there?)

list == __name__.__class__.__class__.__name__.__class__.__class__([])

Next, we need to remove the print call.

We can do that by calling sys.stdout.write instead, using a similar method to how we grabbed the operator above.

sys.stdout.write == getattr(getattr(__import__('sys', fromlist=['']), 'stdout'), 'write')

Because print also adds a newline implicitly, we'll have to call this twice instead of once. The second time with a newline character.

But, first, let's convert that sys.stdout.write into a whopping payload:

getattr(getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__(((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))))), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))

There we go, I think most programmer's would have an extremely tough time realising that the above payload is a print function at first glance.


Now we have all the pieces, let's remind ourselves of what we're modifying:

def _(n):
    if n <= 0:
        return n
    else:
        return (_(n - 1) + _(n - 2))

for i in range(0, 20):
    print(_(i))

Which, with all our work, becomes:

def _(n):
if not getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 4) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))], (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__())):
    return locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))]
else:
    return (_(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))] - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + _(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))))] - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))

for i in __name__.__class__.__class__.__name__.__class__.__class__([])(range((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__()), __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__()))))):
    getattr(getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__(((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))))), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(__name__.__class__(_(locals()[chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2))))])))

    getattr(getattr(__import__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))), fromlist=[__name__.__class__()]), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__(((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])))))), chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)))))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)))) + chr(__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))) + __name__.__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) - (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0])) / (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]) * 2)) - __name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))) + chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3])))(chr((__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(chr(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]) - 44))) + (__name__.__class__.encode(__name__).count(__name__.__class__.encode(__name__)).__class__(__name__.__class__(ord(__name__.__class__.__class__.__name__.__class__.__class__.__name__[3]))[0]))))

Congratulations!

We've just turned a 129 character file into a 47,928 character file that should make all sane programmers in the world go "I do not get paid enough to deal with this."

@CrazyPython
Copy link

You can use Nuitka to compile arbitrary Python code to a binary executable-- Python turns to architecture-specific C directly, without going through bytecode. It provides a small speedup too. It is unclear whether or not it is decompileable easily. Cython compiles Python to interpreter calls to architecture-independent C that calls the CPython API. That might be decompile-able to Python bytecode, which can be decompiled to Python source.

@shakna-israel
Copy link
Author

@CrazyPython Obfuscating code is mostly a wasted effort. If you're attempting to protect something important, then someone will end up reverse engineering it. And you've probably introduced bugs, like I did when putting together the final function.

However, if you're doing it for fun or competition, it's certainly interesting what tricks you can use to frustrate the human trying to develop a tool to reverse whatever you've written.

@shakna-israel
Copy link
Author

And... I've just done it in Lua too.

@BaoziDebuger
Copy link

非常棒 哈哈哈 感谢

@fgsi
Copy link

fgsi commented Nov 30, 2021

About range and print, Python has a module called builtins.
It can also be accesed without imports via __builtins__.

>>> for i in __builtins__.range(3):
...     __builtins__.print(i)
...
0
1
2
>>>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment