REDROOM
PHP 8.3.30
Path:
Logout
Edit File
Size: 50.26 KB
Close
/opt/imunify360/venv/lib/python3.11/site-packages/__pycache__/distro.cpython-311.pyc
Text
Base64
pw0NCgAAAADHG49pHr0AAOMAAAAAAAAAAAAAAAAHAAAAAAAAAPNYAgAAlwBkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZANaCgkAZQRqGgAAAAAAAAAAoBsAAAAAAAAAAAAAAAAAAAAAAAAAAGQKZAumAgAAqwIAAAAAAAAAAFocZQRqGgAAAAAAAAAAoBsAAAAAAAAAAAAAAAAAAAAAAAAAAGQMZA2mAgAAqwIAAAAAAAAAAFodZA5aHmQPZBBpAVofZBBkEGQRZBFkEWQSnAVaIGQTZBFpAVohAgBlBWoiAAAAAAAAAABkFKYBAACrAQAAAAAAAAAAWiMCAGUFaiIAAAAAAAAAAGQVpgEAAKsBAAAAAAAAAABaJGQWZBdkGGUeZBlkGmQbZgdaJWQ3ZB2EAVomZB6EAFonZDhkH4QBWihkOWQghAFaKWQ4ZCGEAVoqZDhkIoQBWitkOGQjhAFaLGQ4ZCSEAVotZCWEAFouZCaEAFovZDlkJ4QBWjBkKIQAWjFkKYQAWjJkKoQAWjNkK4QAWjRkLIQAWjVkLYQAWjZkLoQAWjdkL4QAWjgJAGQBZDBsOW06WjoBAG4ZIwBlOyQAchEBAAIARwBkMYQAZDJlPKYDAACrAwAAAAAAAAAAWjpZAG4EdwB4A1kAdwECAEcAZDOEAGQ0ZTymAwAAqwMAAAAAAAAAAFo9AgBlPaYAAACrAAAAAAAAAAAAWj5kNYQAWj9lQGQ2awIAAAAAcgwCAGU/pgAAAKsAAAAAAAAAAAABAGQCUwBkAlMAKTph+wIAAApUaGUgYGBkaXN0cm9gYCBwYWNrYWdlIChgYGRpc3Ryb2BgIHN0YW5kcyBmb3IgTGludXggRGlzdHJpYnV0aW9uKSBwcm92aWRlcwppbmZvcm1hdGlvbiBhYm91dCB0aGUgTGludXggZGlzdHJpYnV0aW9uIGl0IHJ1bnMgb24sIHN1Y2ggYXMgYSByZWxpYWJsZQptYWNoaW5lLXJlYWRhYmxlIGRpc3RybyBJRCwgb3IgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCkl0IGlzIHRoZSByZWNvbW1lbmRlZCByZXBsYWNlbWVudCBmb3IgUHl0aG9uJ3Mgb3JpZ2luYWwKOnB5OmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb24sIGJ1dCBpdCBwcm92aWRlcyBtdWNoIG1vcmUKZnVuY3Rpb25hbGl0eS4gQW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gYmVjYW1lIG5lY2Vzc2FyeSBiZWNhdXNlIFB5dGhvbgozLjUgZGVwcmVjYXRlZCB0aGlzIGZ1bmN0aW9uLCBhbmQgUHl0aG9uIDMuOCByZW1vdmVkIGl0IGFsdG9nZXRoZXIuIEl0cwpwcmVkZWNlc3NvciBmdW5jdGlvbiA6cHk6ZnVuYzpgcGxhdGZvcm0uZGlzdGAgd2FzIGFscmVhZHkgZGVwcmVjYXRlZCBzaW5jZQpQeXRob24gMi42IGFuZCByZW1vdmVkIGluIFB5dGhvbiAzLjguIFN0aWxsLCB0aGVyZSBhcmUgbWFueSBjYXNlcyBpbiB3aGljaAphY2Nlc3MgdG8gT1MgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uIGlzIG5lZWRlZC4gU2VlIGBQeXRob24gaXNzdWUgMTMyMgo8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzIyPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgrpAAAAAE56BTEuNi4wRikL2gNBbnnaCENhbGxhYmxl2gREaWN02ghJdGVyYWJsZdoIT3B0aW9uYWzaCFNlcXVlbmNl2gZUZXh0SU/aBVR1cGxl2gRUeXBl2glUeXBlZERpY3TaBVVuaW9u2gtWZXJzaW9uRGljdKkD2gVtYWpvctoFbWlub3LaDGJ1aWxkX251bWJlctoISW5mb0RpY3SpBdoCaWTaB3ZlcnNpb27aDXZlcnNpb25fcGFydHPaBGxpa2XaCGNvZGVuYW1l2gtVTklYQ09ORkRJUnoEL2V0Y9oNVU5JWFVTUkxJQkRJUnoIL3Vzci9saWJ6Cm9zLXJlbGVhc2XaAm9s2gZvcmFjbGXaBHJoZWwpBdoWZW50ZXJwcmlzZWVudGVycHJpc2Vhc9oaZW50ZXJwcmlzZWVudGVycHJpc2VzZXJ2ZXLaG3JlZGhhdGVudGVycHJpc2V3b3Jrc3RhdGlvbtoWcmVkaGF0ZW50ZXJwcmlzZXNlcnZlctobcmVkaGF0ZW50ZXJwcmlzZWNvbXB1dGVub2Rl2gZyZWRoYXR6QSg/OlteKV0qXCkoLiopXCgpPyAqKD86U1RMICk/KFtcZC4rXC1hLXpdKlxkKSAqKD86ZXNhZWxlciAqKT8oLispehsoXHcrKVstX10ocmVsZWFzZXx2ZXJzaW9uKSTaDmRlYmlhbl92ZXJzaW9uegtsc2ItcmVsZWFzZXoLb2VtLXJlbGVhc2V6DnN5c3RlbS1yZWxlYXNleg1wbGVzay1yZWxlYXNlehBpcmVkbWFpbC1yZWxlYXNlVGMBAAAAAAAAAAAAAAAFAAAAAwAAAPNuAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAZAF0BAAAAAAAAAAAAABkAqwDpgMAAKsDAAAAAAAAAAABAHQGAAAAAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAUwApBGFHBQAACiAgICAuLiBkZXByZWNhdGVkOjogMS42LjAKCiAgICAgICAgOmZ1bmM6YGRpc3Ryby5saW51eF9kaXN0cmlidXRpb24oKWAgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUKICAgICAgICB1c2VkIGFzIGEgY29tcGF0aWJpbGl0eSBzaGltIHdpdGggUHl0aG9uJ3MKICAgICAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKClgLiBQbGVhc2UgdXNlIDpmdW5jOmBkaXN0cm8uaWRgLAogICAgICAgIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAgYW5kIDpmdW5jOmBkaXN0cm8ubmFtZWAgaW5zdGVhZC4KCiAgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uIGFzIGEgdHVwbGUKICAgIGBgKGlkX25hbWUsIHZlcnNpb24sIGNvZGVuYW1lKWBgIHdpdGggaXRlbXMgYXMgZm9sbG93czoKCiAgICAqIGBgaWRfbmFtZWBgOiAgSWYgKmZ1bGxfZGlzdHJpYnV0aW9uX25hbWUqIGlzIGZhbHNlLCB0aGUgcmVzdWx0IG9mCiAgICAgIDpmdW5jOmBkaXN0cm8uaWRgLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5uYW1lYC4KCiAgICAqIGBgdmVyc2lvbmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLnZlcnNpb25gLgoKICAgICogYGBjb2RlbmFtZWBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLmNvZGVuYW1lYC4KCiAgICBUaGUgaW50ZXJmYWNlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBvcmlnaW5hbAogICAgOnB5OmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb24sIHN1cHBvcnRpbmcgYSBzdWJzZXQgb2YKICAgIGl0cyBwYXJhbWV0ZXJzLgoKICAgIFRoZSBkYXRhIGl0IHJldHVybnMgbWF5IG5vdCBleGFjdGx5IGJlIHRoZSBzYW1lLCBiZWNhdXNlIGl0IHVzZXMgbW9yZSBkYXRhCiAgICBzb3VyY2VzIHRoYW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBhbmQgdGhhdCBtYXkgbGVhZCB0byBkaWZmZXJlbnQgZGF0YSBpZgogICAgdGhlIE9TIGRpc3RyaWJ1dGlvbiBpcyBub3QgY29uc2lzdGVudCBhY3Jvc3MgbXVsdGlwbGUgZGF0YSBzb3VyY2VzIGl0CiAgICBwcm92aWRlcyAodGhlcmUgYXJlIGluZGVlZCBzdWNoIGRpc3RyaWJ1dGlvbnMgLi4uKS4KCiAgICBBbm90aGVyIHJlYXNvbiBmb3IgZGlmZmVyZW5jZXMgaXMgdGhlIGZhY3QgdGhhdCB0aGUgOmZ1bmM6YGRpc3Ryby5pZGAKICAgIG1ldGhvZCBub3JtYWxpemVzIHRoZSBkaXN0cm8gSUQgc3RyaW5nIHRvIGEgcmVsaWFibGUgbWFjaGluZS1yZWFkYWJsZSB2YWx1ZQogICAgZm9yIGEgbnVtYmVyIG9mIHBvcHVsYXIgT1MgZGlzdHJpYnV0aW9ucy4KICAgIHrKZGlzdHJvLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGlzIGRlcHJlY2F0ZWQuIEl0IHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBjb21wYXRpYmlsaXR5IHNoaW0gd2l0aCBQeXRob24ncyBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKS4gUGxlYXNlIHVzZSBkaXN0cm8uaWQoKSwgZGlzdHJvLnZlcnNpb24oKSBhbmQgZGlzdHJvLm5hbWUoKSBpbnN0ZWFkLukCAAAAKQHaCnN0YWNrbGV2ZWwpBdoId2FybmluZ3PaBHdhcm7aEkRlcHJlY2F0aW9uV2FybmluZ9oHX2Rpc3Ryb9oSbGludXhfZGlzdHJpYnV0aW9uKQHaFmZ1bGxfZGlzdHJpYnV0aW9uX25hbWVzAQAAACD6PS9vcHQvaW11bmlmeTM2MC92ZW52L2xpYjY0L3B5dGhvbjMuMTEvc2l0ZS1wYWNrYWdlcy9kaXN0cm8ucHlyLQAAAHItAAAAiAAAAHNDAAAAgAD1QgEABQ2ETfACAglDAfUGAAkb2BMU8AsGBQbxAAYFBvQABgUG8AAGBQb1DgAME9cLJdILJdAmPNELPdQLPdAEPfMAAAAAYwAAAAAAAAAAAAAAAAIAAAADAAAA8zQAAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAFMAKQFhRAsAAAogICAgUmV0dXJuIHRoZSBkaXN0cm8gSUQgb2YgdGhlIGN1cnJlbnQgZGlzdHJpYnV0aW9uLCBhcyBhCiAgICBtYWNoaW5lLXJlYWRhYmxlIHN0cmluZy4KCiAgICBGb3IgYSBudW1iZXIgb2YgT1MgZGlzdHJpYnV0aW9ucywgdGhlIHJldHVybmVkIGRpc3RybyBJRCB2YWx1ZSBpcwogICAgKnJlbGlhYmxlKiwgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaXMgZG9jdW1lbnRlZCBhbmQgdGhhdCBpdCBkb2VzIG5vdCBjaGFuZ2UKICAgIGFjcm9zcyByZWxlYXNlcyBvZiB0aGUgZGlzdHJpYnV0aW9uLgoKICAgIFRoaXMgcGFja2FnZSBtYWludGFpbnMgdGhlIGZvbGxvd2luZyByZWxpYWJsZSBkaXN0cm8gSUQgdmFsdWVzOgoKICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgRGlzdHJvIElEICAgICAgIERpc3RyaWJ1dGlvbgogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAidWJ1bnR1IiAgICAgICAgVWJ1bnR1CiAgICAiZGViaWFuIiAgICAgICAgRGViaWFuCiAgICAicmhlbCIgICAgICAgICAgUmVkSGF0IEVudGVycHJpc2UgTGludXgKICAgICJjZW50b3MiICAgICAgICBDZW50T1MKICAgICJmZWRvcmEiICAgICAgICBGZWRvcmEKICAgICJzbGVzIiAgICAgICAgICBTVVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyCiAgICAib3BlbnN1c2UiICAgICAgb3BlblNVU0UKICAgICJhbWF6b24iICAgICAgICBBbWF6b24gTGludXgKICAgICJhcmNoIiAgICAgICAgICBBcmNoIExpbnV4CiAgICAiY2xvdWRsaW51eCIgICAgQ2xvdWRMaW51eCBPUwogICAgImV4aGVyYm8iICAgICAgIEV4aGVyYm8gTGludXgKICAgICJnZW50b28iICAgICAgICBHZW5Ub28gTGludXgKICAgICJpYm1fcG93ZXJrdm0iICBJQk0gUG93ZXJLVk0KICAgICJrdm1pYm0iICAgICAgICBLVk0gZm9yIElCTSB6IFN5c3RlbXMKICAgICJsaW51eG1pbnQiICAgICBMaW51eCBNaW50CiAgICAibWFnZWlhIiAgICAgICAgTWFnZWlhCiAgICAibWFuZHJpdmEiICAgICAgTWFuZHJpdmEgTGludXgKICAgICJwYXJhbGxlbHMiICAgICBQYXJhbGxlbHMKICAgICJwaWRvcmEiICAgICAgICBQaWRvcmEKICAgICJyYXNwYmlhbiIgICAgICBSYXNwYmlhbgogICAgIm9yYWNsZSIgICAgICAgIE9yYWNsZSBMaW51eCAoYW5kIE9yYWNsZSBFbnRlcnByaXNlIExpbnV4KQogICAgInNjaWVudGlmaWMiICAgIFNjaWVudGlmaWMgTGludXgKICAgICJzbGFja3dhcmUiICAgICBTbGFja3dhcmUKICAgICJ4ZW5zZXJ2ZXIiICAgICBYZW5TZXJ2ZXIKICAgICJvcGVuYnNkIiAgICAgICBPcGVuQlNECiAgICAibmV0YnNkIiAgICAgICAgTmV0QlNECiAgICAiZnJlZWJzZCIgICAgICAgRnJlZUJTRAogICAgIm1pZG5pZ2h0YnNkIiAgIE1pZG5pZ2h0QlNECiAgICA9PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICBJZiB5b3UgaGF2ZSBhIG5lZWQgdG8gZ2V0IGRpc3Ryb3MgZm9yIHJlbGlhYmxlIElEcyBhZGRlZCBpbnRvIHRoaXMgc2V0LAogICAgb3IgaWYgeW91IGZpbmQgdGhhdCB0aGUgOmZ1bmM6YGRpc3Ryby5pZGAgZnVuY3Rpb24gcmV0dXJucyBhIGRpZmZlcmVudAogICAgZGlzdHJvIElEIGZvciBvbmUgb2YgdGhlIGxpc3RlZCBkaXN0cm9zLCBwbGVhc2UgY3JlYXRlIGFuIGlzc3VlIGluIHRoZQogICAgYGRpc3RybyBpc3N1ZSB0cmFja2VyYF8uCgogICAgKipMb29rdXAgaGllcmFyY2h5IGFuZCB0cmFuc2Zvcm1hdGlvbnM6KioKCiAgICBGaXJzdCwgdGhlIElEIGlzIG9idGFpbmVkIGZyb20gdGhlIGZvbGxvd2luZyBzb3VyY2VzLCBpbiB0aGUgc3BlY2lmaWVkCiAgICBvcmRlci4gVGhlIGZpcnN0IGF2YWlsYWJsZSBhbmQgbm9uLWVtcHR5IHZhbHVlIGlzIHVzZWQ6CgogICAgKiB0aGUgdmFsdWUgb2YgdGhlICJJRCIgYXR0cmlidXRlIG9mIHRoZSBvcy1yZWxlYXNlIGZpbGUsCgogICAgKiB0aGUgdmFsdWUgb2YgdGhlICJEaXN0cmlidXRvciBJRCIgYXR0cmlidXRlIHJldHVybmVkIGJ5IHRoZSBsc2JfcmVsZWFzZQogICAgICBjb21tYW5kLAoKICAgICogdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSwKCiAgICBUaGUgc28gZGV0ZXJtaW5lZCBJRCB2YWx1ZSB0aGVuIHBhc3NlcyB0aGUgZm9sbG93aW5nIHRyYW5zZm9ybWF0aW9ucywKICAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCBieSB0aGlzIG1ldGhvZDoKCiAgICAqIGl0IGlzIHRyYW5zbGF0ZWQgdG8gbG93ZXIgY2FzZSwKCiAgICAqIGJsYW5rcyAod2hpY2ggc2hvdWxkIG5vdCBiZSB0aGVyZSBhbnl3YXkpIGFyZSB0cmFuc2xhdGVkIHRvIHVuZGVyc2NvcmVzLAoKICAgICogYSBub3JtYWxpemF0aW9uIG9mIHRoZSBJRCBpcyBwZXJmb3JtZWQsIGJhc2VkIHVwb24KICAgICAgYG5vcm1hbGl6YXRpb24gdGFibGVzYF8uIFRoZSBwdXJwb3NlIG9mIHRoaXMgbm9ybWFsaXphdGlvbiBpcyB0byBlbnN1cmUKICAgICAgdGhhdCB0aGUgSUQgaXMgYXMgcmVsaWFibGUgYXMgcG9zc2libGUsIGV2ZW4gYWNyb3NzIGluY29tcGF0aWJsZSBjaGFuZ2VzCiAgICAgIGluIHRoZSBPUyBkaXN0cmlidXRpb25zLiBBIGNvbW1vbiByZWFzb24gZm9yIGFuIGluY29tcGF0aWJsZSBjaGFuZ2UgaXMKICAgICAgdGhlIGFkZGl0aW9uIG9mIGFuIG9zLXJlbGVhc2UgZmlsZSwgb3IgdGhlIGFkZGl0aW9uIG9mIHRoZSBsc2JfcmVsZWFzZQogICAgICBjb21tYW5kLCB3aXRoIElEIHZhbHVlcyB0aGF0IGRpZmZlciBmcm9tIHdoYXQgd2FzIHByZXZpb3VzbHkgZGV0ZXJtaW5lZAogICAgICBmcm9tIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlIG5hbWUuCiAgICApAnIsAAAAchUAAACpAHIwAAAAci8AAAByFQAAAHIVAAAAswAAAHMTAAAAgAD1WgIADBOPOoo6iTyMPNAEF3IwAAAAYwEAAAAAAAAAAAAAAAMAAAADAAAA8zYAAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAUwApAWFrBAAACiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uLCBhcyBhIGh1bWFuLXJlYWRhYmxlCiAgICBzdHJpbmcuCgogICAgSWYgKnByZXR0eSogaXMgZmFsc2UsIHRoZSBuYW1lIGlzIHJldHVybmVkIHdpdGhvdXQgdmVyc2lvbiBvciBjb2RlbmFtZS4KICAgIChlLmcuICJDZW50T1MgTGludXgiKQoKICAgIElmICpwcmV0dHkqIGlzIHRydWUsIHRoZSB2ZXJzaW9uIGFuZCBjb2RlbmFtZSBhcmUgYXBwZW5kZWQuCiAgICAoZS5nLiAiQ2VudE9TIExpbnV4IDcuMS4xNTAzIChDb3JlKSIpCgogICAgKipMb29rdXAgaGllcmFyY2h5OioqCgogICAgVGhlIG5hbWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNvdXJjZXMsIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIuCiAgICBUaGUgZmlyc3QgYXZhaWxhYmxlIGFuZCBub24tZW1wdHkgdmFsdWUgaXMgdXNlZDoKCiAgICAqIElmICpwcmV0dHkqIGlzIGZhbHNlOgoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJOQU1FIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiRGlzdHJpYnV0b3IgSUQiIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgICBjb21tYW5kLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICI8bmFtZT4iIGZpZWxkIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLgoKICAgICogSWYgKnByZXR0eSogaXMgdHJ1ZToKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiUFJFVFRZX05BTUUiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJEZXNjcmlwdGlvbiIgYXR0cmlidXRlIHJldHVybmVkIGJ5IHRoZSBsc2JfcmVsZWFzZQogICAgICAgIGNvbW1hbmQsCgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIjxuYW1lPiIgZmllbGQgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsIGFwcGVuZGVkCiAgICAgICAgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHByZXR0eSB2ZXJzaW9uICgiPHZlcnNpb25faWQ+IiBhbmQgIjxjb2RlbmFtZT4iCiAgICAgICAgZmllbGRzKSBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSwgaWYgYXZhaWxhYmxlLgogICAgKQJyLAAAANoEbmFtZakB2gZwcmV0dHlzAQAAACByLwAAAHI0AAAAcjQAAAADAQAAcxcAAACAAPVKAQAME488ijyYBtELH9QLH9AEH3IwAAAAYwIAAAAAAAAAAAAAAAQAAAADAAAA8zgAAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAB8AHwBpgIAAKsCAAAAAAAAAABTACkBYXYGAAAKICAgIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgY3VycmVudCBPUyBkaXN0cmlidXRpb24sIGFzIGEgaHVtYW4tcmVhZGFibGUKICAgIHN0cmluZy4KCiAgICBJZiAqcHJldHR5KiBpcyBmYWxzZSwgdGhlIHZlcnNpb24gaXMgcmV0dXJuZWQgd2l0aG91dCBjb2RlbmFtZSAoZS5nLgogICAgIjcuMCIpLgoKICAgIElmICpwcmV0dHkqIGlzIHRydWUsIHRoZSBjb2RlbmFtZSBpbiBwYXJlbnRoZXNpcyBpcyBhcHBlbmRlZCwgaWYgdGhlCiAgICBjb2RlbmFtZSBpcyBub24tZW1wdHkgKGUuZy4gIjcuMCAoTWFpcG8pIikuCgogICAgU29tZSBkaXN0cmlidXRpb25zIHByb3ZpZGUgdmVyc2lvbiBudW1iZXJzIHdpdGggZGlmZmVyZW50IHByZWNpc2lvbnMgaW4KICAgIHRoZSBkaWZmZXJlbnQgc291cmNlcyBvZiBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uIEV4YW1pbmluZyB0aGUgZGlmZmVyZW50CiAgICBzb3VyY2VzIGluIGEgZml4ZWQgcHJpb3JpdHkgb3JkZXIgZG9lcyBub3QgYWx3YXlzIHlpZWxkIHRoZSBtb3N0IHByZWNpc2UKICAgIHZlcnNpb24gKGUuZy4gZm9yIERlYmlhbiA4LjIsIG9yIENlbnRPUyA3LjEpLgoKICAgIFRoZSAqYmVzdCogcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIGFwcHJvYWNoIGZvciB0aGUgcmV0dXJuZWQKICAgIHZlcnNpb246CgogICAgSWYgKmJlc3QqIGlzIGZhbHNlLCB0aGUgZmlyc3Qgbm9uLWVtcHR5IHZlcnNpb24gbnVtYmVyIGluIHByaW9yaXR5IG9yZGVyIG9mCiAgICB0aGUgZXhhbWluZWQgc291cmNlcyBpcyByZXR1cm5lZC4KCiAgICBJZiAqYmVzdCogaXMgdHJ1ZSwgdGhlIG1vc3QgcHJlY2lzZSB2ZXJzaW9uIG51bWJlciBvdXQgb2YgYWxsIGV4YW1pbmVkCiAgICBzb3VyY2VzIGlzIHJldHVybmVkLgoKICAgICoqTG9va3VwIGhpZXJhcmNoeToqKgoKICAgIEluIGFsbCBjYXNlcywgdGhlIHZlcnNpb24gbnVtYmVyIGlzIG9idGFpbmVkIGZyb20gdGhlIGZvbGxvd2luZyBzb3VyY2VzLgogICAgSWYgKmJlc3QqIGlzIGZhbHNlLCB0aGlzIG9yZGVyIHJlcHJlc2VudHMgdGhlIHByaW9yaXR5IG9yZGVyOgoKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiVkVSU0lPTl9JRCIgYXR0cmlidXRlIG9mIHRoZSBvcy1yZWxlYXNlIGZpbGUsCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIlJlbGVhc2UiIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgY29tbWFuZCwKICAgICogdGhlIHZlcnNpb24gbnVtYmVyIHBhcnNlZCBmcm9tIHRoZSAiPHZlcnNpb25faWQ+IiBmaWVsZCBvZiB0aGUgZmlyc3QgbGluZQogICAgICBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSwKICAgICogdGhlIHZlcnNpb24gbnVtYmVyIHBhcnNlZCBmcm9tIHRoZSAiUFJFVFRZX05BTUUiIGF0dHJpYnV0ZSBvZiB0aGUKICAgICAgb3MtcmVsZWFzZSBmaWxlLCBpZiBpdCBmb2xsb3dzIHRoZSBmb3JtYXQgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGVzLgog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IGVtcHR5IHN0cmluZyAodGhlIGRlZmF1bHQpIHdpbGwgY2F1c2UgdGhlIGRlZmF1bHQgcGF0aCBuYW1lIHRvCiAgICAgICAgICBiZSB1c2VkIChzZWUgYG9zLXJlbGVhc2UgZmlsZWBfIGZvciBkZXRhaWxzKS4KCiAgICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIG9yIGRlZmF1bHRlZCBvcy1yZWxlYXNlIGZpbGUgZG9lcyBub3QgZXhpc3QsIHRoZQogICAgICAgICAgZGF0YSBzb3VyY2UgZm9yIHRoZSBvcy1yZWxlYXNlIGZpbGUgd2lsbCBiZSBlbXB0eS4KCiAgICAgICAgKiBgYGRpc3Ryb19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBkaXN0cm8gcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyB0byBiZSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuCgogICAgICAgICAgQW4gZW1wdHkgc3RyaW5nICh0aGUgZGVmYXVsdCkgd2lsbCBjYXVzZSBhIGRlZmF1bHQgc2VhcmNoIGFsZ29yaXRobQogICAgICAgICAgdG8gYmUgdXNlZCAoc2VlIGBkaXN0cm8gcmVsZWFzZSBmaWxlYF8gZm9yIGRldGFpbHMpLgoKICAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgZGlzdHJvIHJlbGVhc2UgZmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgaWYgbm8gZGVmYXVsdAogICAgICAgICAgZGlzdHJvIHJlbGVhc2UgZmlsZSBjYW4gYmUgZm91bmQsIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGRpc3RybwogICAgICAgICAgcmVsZWFzZSBmaWxlIHdpbGwgYmUgZW1wdHkuCgogICAgICAgICogYGBpbmNsdWRlX3VuYW1lYGAgKGJvb2wpOiBDb250cm9scyB3aGV0aGVyIHVuYW1lIGNvbW1hbmQgb3V0cHV0IGlzCiAgICAgICAgICBpbmNsdWRlZCBhcyBhIGRhdGEgc291cmNlLiBJZiB0aGUgdW5hbWUgY29tbWFuZCBpcyBub3QgYXZhaWxhYmxlIGluCiAgICAgICAgICB0aGUgcHJvZ3JhbSBleGVjdXRpb24gcGF0aCB0aGUgZGF0YSBzb3VyY2UgZm9yIHRoZSB1bmFtZSBjb21tYW5kIHdpbGwKICAgICAgICAgIGJlIGVtcHR5LgoKICAgICAgICAqIGBgcm9vdF9kaXJgYCAoc3RyaW5nKTogVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHVzZQogICAgICAgICAgdG8gZmluZCBkaXN0cm8tcmVsYXRlZCBpbmZvcm1hdGlvbiBmaWxlcy4KCiAgICAgICAgUHVibGljIGluc3RhbmNlIGF0dHJpYnV0ZXM6CgogICAgICAgICogYGBvc19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBvcy1yZWxlYXNlIGZpbGVgXyB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4gVGhlCiAgICAgICAgICBlbXB0eSBzdHJpbmcgaWYgbm8gZGlzdHJvIHJlbGVhc2UgZmlsZSBpcyB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuCgogICAgICAgICogYGBkaXN0cm9fcmVsZWFzZV9maWxlYGAgKHN0cmluZyk6IFRoZSBwYXRoIG5hbWUgb2YgdGhlCiAgICAgICAgICBgZGlzdHJvIHJlbGVhc2UgZmlsZWBfIHRoYXQgaXMgYWN0dWFsbHkgdXNlZCBhcyBhIGRhdGEgc291cmNlLiBUaGUKICAgICAgICAgIGVtcHR5IHN0cmluZyBpZiBubyBkaXN0cm8gcmVsZWFzZSBmaWxlIGlzIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgKiBgYGluY2x1ZGVfbHNiYGAgKGJvb2wpOiBUaGUgcmVzdWx0IG9mIHRoZSBgYGluY2x1ZGVfbHNiYGAgcGFyYW1ldGVyLgogICAgICAgICAgVGhpcyBjb250cm9scyB3aGV0aGVyIHRoZSBsc2IgaW5mb3JtYXRpb24gd2lsbCBiZSBsb2FkZWQuCgogICAgICAgICogYGBpbmNsdWRlX3VuYW1lYGAgKGJvb2wpOiBUaGUgcmVzdWx0IG9mIHRoZSBgYGluY2x1ZGVfdW5hbWVgYAogICAgICAgICAgcGFyYW1ldGVyLiBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhlIHVuYW1lIGluZm9ybWF0aW9uIHdpbGwKICAgICAgICAgIGJlIGxvYWRlZC4KCiAgICAgICAgUmFpc2VzOgoKICAgICAgICAqIDpweTpleGM6YElPRXJyb3JgOiBTb21lIEkvTyBpc3N1ZSB3aXRoIGFuIG9zLXJlbGVhc2UgZmlsZSBvciBkaXN0cm8KICAgICAgICAgIHJlbGVhc2UgZmlsZS4KCiAgICAgICAgKiA6cHk6ZXhjOmBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcmA6IFRoZSBsc2JfcmVsZWFzZSBjb21tYW5kIGhhZAogICAgICAgICAgc29tZSBpc3N1ZSAob3RoZXIgdGhhbiBub3QgYmVpbmcgYXZhaWxhYmxlIGluIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbgogICAgICAgICAgcGF0aCkuCgogICAgICAgICogOnB5OmV4YzpgVW5pY29kZUVycm9yYDogQSBkYXRhIHNvdXJjZSBoYXMgdW5leHBlY3RlZCBjaGFyYWN0ZXJzIG9yCiAgICAgICAgICB1c2VzIGFuIHVuZXhwZWN0ZWQgZW5jb2RpbmcuCiAgICAgICAg2gNldGN6B3Vzci9saWJybQAAAE4pDtoIcm9vdF9kaXLaAm9z2gRwYXRo2gRqb2lu2gxfVU5JWENPTkZESVLaB2V0Y19kaXLaDl9VTklYVVNSTElCRElS2gt1c3JfbGliX2RpctoPb3NfcmVsZWFzZV9maWxl2hRfT1NfUkVMRUFTRV9CQVNFTkFNRdoGaXNmaWxl2hNkaXN0cm9fcmVsZWFzZV9maWxl2gtpbmNsdWRlX2xzYtoNaW5jbHVkZV91bmFtZSkIcl4AAAByfAAAAHJ4AAAAcnsAAAByfQAAAHJwAAAA2hdldGNfZGlyX29zX3JlbGVhc2VfZmlsZdoXdXNyX2xpYl9vc19yZWxlYXNlX2ZpbGVzCAAAACAgICAgICAgci8AAAByYAAAAHoaTGludXhEaXN0cmlidXRpb24uX19pbml0X1+OAgAAcwoBAACAAPBeAgAZIYgEjA3YOEDQF1KVcpR3l3ySfKBIqGXRFzTUFzTQFzTFbIgEjAzg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b3JtYXRpb24gaXRlbXMgZnJvbSB0aGUgc3BlY2lmaWVkIGRpc3RybyByZWxlYXNlIGZpbGUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIEEgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBpdGVtcy4KICAgICAgICByNAAAANoKY2xvdWRsaW51eHIVAAAAcqoAAAApD3oMU3VTRS1yZWxlYXNlegxhcmNoLXJlbGVhc2V6DGJhc2UtcmVsZWFzZXoOY2VudG9zLXJlbGVhc2V6DmZlZG9yYS1yZWxlYXNleg5nZW50b28tcmVsZWFzZXoObWFnZWlhLXJlbGVhc2V6EG1hbmRyYWtlLXJlbGVhc2V6EG1hbmRyaXZhLXJlbGVhc2V6FW1hbmRyaXZhbGludXgtcmVsZWFzZXoPbWFuamFyby1yZWxlYXNleg5vcmFjbGUtcmVsZWFzZXoOcmVkaGF0LXJlbGVhc2V6CnNsLXJlbGVhc2V6EXNsYWNrd2FyZS12ZXJzaW9uKQ9yewAAANoaX3BhcnNlX2Rpc3Ryb19yZWxlYXNlX2ZpbGVycQAAAHJyAAAA2ghiYXNlbmFtZdogX0RJU1RST19SRUxFQVNFX0JBU0VOQU1FX1BBVFRFUk5yoAAAAHKIAAAActQAAADaB2xpc3RkaXJydQAAANoEc29ydHLkAAAA2iBfRElTVFJPX1JFTEVBU0VfSUdOT1JFX0JBU0VOQU1FU3JzAAAAKQZyXgAAANoLZGlzdHJvX2luZm9yBAEAAHKgAAAA2gliYXNlbmFtZXPaCGZpbGVwYXRocwYAAAAgICAgICByLwAAAHK3AAAAeiZMaW51eERpc3RyaWJ1dGlvbi5fZGlzdHJvX3JlbGVhc2VfaW5mb8kEAABzyAEAAIAA8BIADBDUCyPwADoJFvAGABsf1xo50ho5uCTUOlLRGlPUGlOIS90XGZR31xcn0hcnqATUKEDRF0HUF0GISPUKABU11xQ60hQ6uDjRFETUFESIRdgPFZgb0A8k0A8kqBy4G8BW1DlM1zlS0jlS0TlU1DlU0ClU0ClU2CQwkAuYRNEQIdAQIdgRFvAAAQ0z2CQpp0uiS7ABoU6kTpALmETRECHYEx7QDB7wBBsNEt0cHpxKoHSkfNEcNNQcNJAJ8AgAERqX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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 10
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
distro.cpython-311.pyc
50.26 KB
lrw-r--r--
2026-03-03 09:07:27
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pam.cpython-311.pyc
9.91 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
peewee.cpython-311.pyc
475.06 KB
lrw-r--r--
2026-03-03 09:07:27
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
phpserialize.cpython-311.pyc
23.50 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pwiz.cpython-311.pyc
12.46 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
secureio.cpython-311.pyc
28.96 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.cpython-311.pyc
45.35 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
speaklater.cpython-311.pyc
8.95 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
typing_extensions.cpython-311.pyc
175.29 KB
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_pyrsistent_version.cpython-311.pyc
245 B
lrw-r--r--
2026-02-13 12:40:39
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).