REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 52.49 KB
Close
/proc/self/root/opt/alt/python312/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc
Text
Base64
yw0NCgAAAABSA2BpssAAAOMAAAAAAAAAAAAAAAAIAAAAAAAAAPO2AwAAlwBkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZAFkA2wKbQtaC20MWgxtDVoNbQ5aDm0PWg9tEFoQbRFaEW0SWhJtE1oTAQAJAGQBZARsCm0UWhQBAGQFWhcCAEcAZAaEAGQHZRSrAwAAAAAAAFoYAgBHAGQIhABkCWUUqwMAAAAAAABaGWUEajQAAAAAAAAAAAAAAAAAAAAAAABqNwAAAAAAAAAAAAAAAAAAAAAAAGQKZAurAgAAAAAAAFocZQRqNAAAAAAAAAAAAAAAAAAAAAAAAGo3AAAAAAAAAAAAAAAAAAAAAAAAZAxkDasCAAAAAAAAWh1kDloeZA9kEGQRnAJaH2QPZA9kEmQSZBJkE5wFWiBkFGQSaQFaIQIAZQVqRAAAAAAAAAAAAAAAAAAAAAAAAGQVqwEAAAAAAABaIwIAZQVqRAAAAAAAAAAAAAAAAAAAAAAAAGQWqwEAAAAAAABaJGcAZBeiAVolZBhkGWQaZR5kG2QcZB1mB1omZD1kHmUnZB9lEmUoZShlKGYDGQAAAGYEZCCEBVopZB9lKGYCZCGEBFoqZD5kImUnZB9lKGYEZCOEBVorZD9kImUnZCRlJ2QfZShmBmQlhAVaLGQ+ZCRlJ2QfZRJlKGUoZShmAxkAAABmBGQmhAVaLWQ+ZCRlJ2QfZShmBGQnhAVaLmQ+ZCRlJ2QfZShmBGQohAVaL2Q+ZCRlJ2QfZShmBGQphAVaMGQfZShmAmQqhARaMWQfZShmAmQrhARaMmQ/ZCJlJ2QkZSdkH2UZZgZkLIQFWjNkH2UNZShlKGYCGQAAAGYCZC2EBFo0ZB9lDWUoZShmAhkAAABmAmQuhARaNWQfZQ1lKGUoZgIZAAAAZgJkL4QEWjZkH2UNZShlKGYCGQAAAGYCZDCEBFo3ZDFlKGQfZShmBGQyhARaOGQxZShkH2UoZgRkM4QEWjlkMWUoZB9lKGYEZDSEBFo6ZDFlKGQfZShmBGQ1hARaOwkAZAFkNmw8bT1aPQEAAgBHAGQ5hABkOqsCAAAAAAAAWj4CAGU+qwAAAAAAAABaP2RAZDuEBFpAZUFkPGsoAAByCAIAZUCrAAAAAAAAAAEAeQJ5AiMAZRUkAHIGAQBlFloUWQCQAYx+dwB4A1kAdwEjAGUVJAByDQEAAgBHAGQ3hABkOKsCAAAAAAAAWj1ZAIxCdwB4A1kAdwEpQWH7AgAAClRoZSBgYGRpc3Ryb2BgIHBhY2thZ2UgKGBgZGlzdHJvYGAgc3RhbmRzIGZvciBMaW51eCBEaXN0cmlidXRpb24pIHByb3ZpZGVzCmluZm9ybWF0aW9uIGFib3V0IHRoZSBMaW51eCBkaXN0cmlidXRpb24gaXQgcnVucyBvbiwgc3VjaCBhcyBhIHJlbGlhYmxlCm1hY2hpbmUtcmVhZGFibGUgZGlzdHJvIElELCBvciB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKSXQgaXMgdGhlIHJlY29tbWVuZGVkIHJlcGxhY2VtZW50IGZvciBQeXRob24ncyBvcmlnaW5hbAo6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uYCBmdW5jdGlvbiwgYnV0IGl0IHByb3ZpZGVzIG11Y2ggbW9yZQpmdW5jdGlvbmFsaXR5LiBBbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBiZWNhbWUgbmVjZXNzYXJ5IGJlY2F1c2UgUHl0aG9uCjMuNSBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24sIGFuZCBQeXRob24gMy44IHJlbW92ZWQgaXQgYWx0b2dldGhlci4gSXRzCnByZWRlY2Vzc29yIGZ1bmN0aW9uIDpweTpmdW5jOmBwbGF0Zm9ybS5kaXN0YCB3YXMgYWxyZWFkeSBkZXByZWNhdGVkIHNpbmNlClB5dGhvbiAyLjYgYW5kIHJlbW92ZWQgaW4gUHl0aG9uIDMuOC4gU3RpbGwsIHRoZXJlIGFyZSBtYW55IGNhc2VzIGluIHdoaWNoCmFjY2VzcyB0byBPUyBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24gaXMgbmVlZGVkLiBTZWUgYFB5dGhvbiBpc3N1ZSAxMzIyCjxodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzMjI+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCukAAAAATikJ2gNBbnnaCENhbGxhYmxl2gREaWN02ghJdGVyYWJsZdoIT3B0aW9uYWzaCFNlcXVlbmNl2gZUZXh0SU/aBVR1cGxl2gRUeXBlKQHaCVR5cGVkRGljdHoFMS44LjBjAAAAAAAAAAAAAAAAAwAAAAAAAADzLAAAAJcAZQBaAWQAWgJVAGUDZQRkATwAAABlA2UEZAI8AAAAZQNlBGQDPAAAAHkEKQXaC1ZlcnNpb25EaWN02gVtYWpvctoFbWlub3LaDGJ1aWxkX251bWJlck4pBdoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oDc3Ry2g9fX2Fubm90YXRpb25zX1+pAPMAAAAA+osvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24zMTItcGlwLTIzLjMuMS0zLmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24zMTIvbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9waXAvX3ZlbmRvci9kaXN0cm8vZGlzdHJvLnB5cg4AAAByDgAAAD0AAABzEgAAAIUA2AsOg0rYCw6DStgSFdQEFXIYAAAAcg4AAABjAAAAAAAAAAAAAAAAAwAAAAAAAADzQAAAAJcAZQBaAWQAWgJVAGUDZQRkATwAAABlA2UEZAI8AAAAZQVlBGQDPAAAAGUDZQRkBDwAAABlA2UEZAU8AAAAeQYpB9oISW5mb0RpY3TaAmlk2gd2ZXJzaW9u2g12ZXJzaW9uX3BhcnRz2gRsaWtl2ghjb2RlbmFtZU4pBnISAAAAchMAAAByFAAAAHIVAAAAchYAAAByDgAAAHIXAAAAchgAAAByGQAAAHIbAAAAchsAAABDAAAAcxwAAACFANgIC4NH2A0Qg0zYEx7TBB7YCg2DSdgOEYRNchgAAAByGwAAANoLVU5JWENPTkZESVJ6BC9ldGPaDVVOSVhVU1JMSUJESVJ6CC91c3IvbGliegpvcy1yZWxlYXNl2gZvcmFjbGXaCG9wZW5zdXNlKQLaAm9seg1vcGVuc3VzZS1sZWFw2gRyaGVsKQXaFmVudGVycHJpc2VlbnRlcnByaXNlYXPaGmVudGVycHJpc2VlbnRlcnByaXNlc2VydmVy2htyZWRoYXRlbnRlcnByaXNld29ya3N0YXRpb27aFnJlZGhhdGVudGVycHJpc2VzZXJ2ZXLaG3JlZGhhdGVudGVycHJpc2Vjb21wdXRlbm9kZdoGcmVkaGF0ekEoPzpbXildKlwpKC4qKVwoKT8gKig/OlNUTCApPyhbXGQuK1wtYS16XSpcZCkgKig/OmVzYWVsZXIgKik/KC4rKXobKFx3KylbLV9dKHJlbGVhc2V8dmVyc2lvbikkKRB6DFN1U0UtcmVsZWFzZXoMYXJjaC1yZWxlYXNlegxiYXNlLXJlbGVhc2V6DmNlbnRvcy1yZWxlYXNleg5mZWRvcmEtcmVsZWFzZXoOZ2VudG9vLXJlbGVhc2V6Dm1hZ2VpYS1yZWxlYXNlehBtYW5kcmFrZS1yZWxlYXNlehBtYW5kcml2YS1yZWxlYXNlehVtYW5kcml2YWxpbnV4LXJlbGVhc2V6D21hbmphcm8tcmVsZWFzZXoOb3JhY2xlLXJlbGVhc2V6DnJlZGhhdC1yZWxlYXNleg1yb2NreS1yZWxlYXNlegpzbC1yZWxlYXNlehFzbGFja3dhcmUtdmVyc2lvbtoOZGViaWFuX3ZlcnNpb256C2xzYi1yZWxlYXNlegtvZW0tcmVsZWFzZXoOc3lzdGVtLXJlbGVhc2V6DXBsZXNrLXJlbGVhc2V6EGlyZWRtYWlsLXJlbGVhc2XaFmZ1bGxfZGlzdHJpYnV0aW9uX25hbWXaBnJldHVybmMBAAAAAAAAAAAAAAAFAAAAAwAAAPNkAAAAlwB0AQAAAAAAAAAAagIAAAAAAAAAAAAAAAAAAAAAAABkAXQEAAAAAAAAAABkAqwDqwMAAAAAAAABAHQGAAAAAAAAAABqCQAAAAAAAAAAAAAAAAAAAAAAAHwAqwEAAAAAAABTACkEYZ0FAAAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAxLjYuMAoKICAgICAgICA6ZnVuYzpgZGlzdHJvLmxpbnV4X2Rpc3RyaWJ1dGlvbigpYCBpcyBkZXByZWNhdGVkLiBJdCBzaG91bGQgb25seSBiZQogICAgICAgIHVzZWQgYXMgYSBjb21wYXRpYmlsaXR5IHNoaW0gd2l0aCBQeXRob24ncwogICAgICAgIDpweTpmdW5jOmBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKWAuIFBsZWFzZSB1c2UgOmZ1bmM6YGRpc3Ryby5pZGAsCiAgICAgICAgOmZ1bmM6YGRpc3Ryby52ZXJzaW9uYCBhbmQgOmZ1bmM6YGRpc3Ryby5uYW1lYCBpbnN0ZWFkLgoKICAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBPUyBkaXN0cmlidXRpb24gYXMgYSB0dXBsZQogICAgYGAoaWRfbmFtZSwgdmVyc2lvbiwgY29kZW5hbWUpYGAgd2l0aCBpdGVtcyBhcyBmb2xsb3dzOgoKICAgICogYGBpZF9uYW1lYGA6ICBJZiAqZnVsbF9kaXN0cmlidXRpb25fbmFtZSogaXMgZmFsc2UsIHRoZSByZXN1bHQgb2YKICAgICAgOmZ1bmM6YGRpc3Ryby5pZGAuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLm5hbWVgLgoKICAgICogYGB2ZXJzaW9uYGA6ICBUaGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAuCgogICAgKiBgYGNvZGVuYW1lYGA6ICBUaGUgZXh0cmEgaXRlbSAodXN1YWxseSBpbiBwYXJlbnRoZXNlcykgYWZ0ZXIgdGhlCiAgICAgIG9zLXJlbGVhc2UgdmVyc2lvbiBudW1iZXIsIG9yIHRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5jb2RlbmFtZWAuCgogICAgVGhlIGludGVyZmFjZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgb3JpZ2luYWwKICAgIDpweTpmdW5jOmBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb25gIGZ1bmN0aW9uLCBzdXBwb3J0aW5nIGEgc3Vic2V0IG9mCiAgICBpdHMgcGFyYW1ldGVycy4KCiAgICBUaGUgZGF0YSBpdCByZXR1cm5zIG1heSBub3QgZXhhY3RseSBiZSB0aGUgc2FtZSwgYmVjYXVzZSBpdCB1c2VzIG1vcmUgZGF0YQogICAgc291cmNlcyB0aGFuIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgYW5kIHRoYXQgbWF5IGxlYWQgdG8gZGlmZmVyZW50IGRhdGEgaWYKICAgIHRoZSBPUyBkaXN0cmlidXRpb24gaXMgbm90IGNvbnNpc3RlbnQgYWNyb3NzIG11bHRpcGxlIGRhdGEgc291cmNlcyBpdAogICAgcHJvdmlkZXMgKHRoZXJlIGFyZSBpbmRlZWQgc3VjaCBkaXN0cmlidXRpb25zIC4uLikuCgogICAgQW5vdGhlciByZWFzb24gZm9yIGRpZmZlcmVuY2VzIGlzIHRoZSBmYWN0IHRoYXQgdGhlIDpmdW5jOmBkaXN0cm8uaWRgCiAgICBtZXRob2Qgbm9ybWFsaXplcyB0aGUgZGlzdHJvIElEIHN0cmluZyB0byBhIHJlbGlhYmxlIG1hY2hpbmUtcmVhZGFibGUgdmFsdWUKICAgIGZvciBhIG51bWJlciBvZiBwb3B1bGFyIE9TIGRpc3RyaWJ1dGlvbnMuCiAgICB6ymRpc3Ryby5saW51eF9kaXN0cmlidXRpb24oKSBpcyBkZXByZWNhdGVkLiBJdCBzaG91bGQgb25seSBiZSB1c2VkIGFzIGEgY29tcGF0aWJpbGl0eSBzaGltIHdpdGggUHl0aG9uJ3MgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkuIFBsZWFzZSB1c2UgZGlzdHJvLmlkKCksIGRpc3Ryby52ZXJzaW9uKCkgYW5kIGRpc3Ryby5uYW1lKCkgaW5zdGVhZC7pAgAAACkB2gpzdGFja2xldmVsKQXaCHdhcm5pbmdz2gR3YXJu2hJEZXByZWNhdGlvbldhcm5pbmfaB19kaXN0cm/aEmxpbnV4X2Rpc3RyaWJ1dGlvbikBci4AAABzAQAAACByGQAAAHI3AAAAcjcAAACdAAAAczMAAACAAPRCAQAFDYdNgU3wAgIJQwH0BgAJG9gTFPULBgUG9A4ADBPXCyXRCyXQJjzTCz3QBD1yGAAAAGMAAAAAAAAAAAAAAAACAAAAAwAAAPMqAAAAlwB0AAAAAAAAAAAAagMAAAAAAAAAAAAAAAAAAAAAAACrAAAAAAAAAFMAKQFhugsAAAogICAgUmV0dXJuIHRoZSBkaXN0cm8gSUQgb2YgdGhlIGN1cnJlbnQgZGlzdHJpYnV0aW9uLCBhcyBhCiAgICBtYWNoaW5lLXJlYWRhYmxlIHN0cmluZy4KCiAgICBGb3IgYSBudW1iZXIgb2YgT1MgZGlzdHJpYnV0aW9ucywgdGhlIHJldHVybmVkIGRpc3RybyBJRCB2YWx1ZSBpcwogICAgKnJlbGlhYmxlKiwgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaXMgZG9jdW1lbnRlZCBhbmQgdGhhdCBpdCBkb2VzIG5vdCBjaGFuZ2UKICAgIGFjcm9zcyByZWxlYXNlcyBvZiB0aGUgZGlzdHJpYnV0aW9uLgoKICAgIFRoaXMgcGFja2FnZSBtYWludGFpbnMgdGhlIGZvbGxvd2luZyByZWxpYWJsZSBkaXN0cm8gSUQgdmFsdWVzOgoKICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgRGlzdHJvIElEICAgICAgIERpc3RyaWJ1dGlvbgogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAidWJ1bnR1IiAgICAgICAgVWJ1bnR1CiAgICAiZGViaWFuIiAgICAgICAgRGViaWFuCiAgICAicmhlbCIgICAgICAgICAgUmVkSGF0IEVudGVycHJpc2UgTGludXgKICAgICJjZW50b3MiICAgICAgICBDZW50T1MKICAgICJmZWRvcmEiICAgICAgICBGZWRvcmEKICAgICJzbGVzIiAgICAgICAgICBTVVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyCiAgICAib3BlbnN1c2UiICAgICAgb3BlblNVU0UKICAgICJhbXpuIiAgICAgICAgICBBbWF6b24gTGludXgKICAgICJhcmNoIiAgICAgICAgICBBcmNoIExpbnV4CiAgICAiYnVpbGRyb290IiAgICAgQnVpbGRyb290CiAgICAiY2xvdWRsaW51eCIgICAgQ2xvdWRMaW51eCBPUwogICAgImV4aGVyYm8iICAgICAgIEV4aGVyYm8gTGludXgKICAgICJnZW50b28iICAgICAgICBHZW5Ub28gTGludXgKICAgICJpYm1fcG93ZXJrdm0iICBJQk0gUG93ZXJLVk0KICAgICJrdm1pYm0iICAgICAgICBLVk0gZm9yIElCTSB6IFN5c3RlbXMKICAgICJsaW51eG1pbnQiICAgICBMaW51eCBNaW50CiAgICAibWFnZWlhIiAgICAgICAgTWFnZWlhCiAgICAibWFuZHJpdmEiICAgICAgTWFuZHJpdmEgTGludXgKICAgICJwYXJhbGxlbHMiICAgICBQYXJhbGxlbHMKICAgICJwaWRvcmEiICAgICAgICBQaWRvcmEKICAgICJyYXNwYmlhbiIgICAgICBSYXNwYmlhbgogICAgIm9yYWNsZSIgICAgICAgIE9yYWNsZSBMaW51eCAoYW5kIE9yYWNsZSBFbnRlcnByaXNlIExpbnV4KQogICAgInNjaWVudGlmaWMiICAgIFNjaWVudGlmaWMgTGludXgKICAgICJzbGFja3dhcmUiICAgICBTbGFja3dhcmUKICAgICJ4ZW5zZXJ2ZXIiICAgICBYZW5TZXJ2ZXIKICAgICJvcGVuYnNkIiAgICAgICBPcGVuQlNECiAgICAibmV0YnNkIiAgICAgICAgTmV0QlNECiAgICAiZnJlZWJzZCIgICAgICAgRnJlZUJTRAogICAgIm1pZG5pZ2h0YnNkIiAgIE1pZG5pZ2h0QlNECiAgICAicm9ja3kiICAgICAgICAgUm9ja3kgTGludXgKICAgICJhaXgiICAgICAgICAgICBBSVgKICAgICJndWl4IiAgICAgICAgICBHdWl4IFN5c3RlbQogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgSWYgeW91IGhhdmUgYSBuZWVkIHRvIGdldCBkaXN0cm9zIGZvciByZWxpYWJsZSBJRHMgYWRkZWQgaW50byB0aGlzIHNldCwKICAgIG9yIGlmIHlvdSBmaW5kIHRoYXQgdGhlIDpmdW5jOmBkaXN0cm8uaWRgIGZ1bmN0aW9uIHJldHVybnMgYSBkaWZmZXJlbnQKICAgIGRpc3RybyBJRCBmb3Igb25lIG9mIHRoZSBsaXN0ZWQgZGlzdHJvcywgcGxlYXNlIGNyZWF0ZSBhbiBpc3N1ZSBpbiB0aGUKICAgIGBkaXN0cm8gaXNzdWUgdHJhY2tlcmBfLgoKICAgICoqTG9va3VwIGhpZXJhcmNoeSBhbmQgdHJhbnNmb3JtYXRpb25zOioqCgogICAgRmlyc3QsIHRoZSBJRCBpcyBvYnRhaW5lZCBmcm9tIHRoZSBmb2xsb3dpbmcgc291cmNlcywgaW4gdGhlIHNwZWNpZmllZAogICAgb3JkZXIuIFRoZSBmaXJzdCBhdmFpbGFibGUgYW5kIG5vbi1lbXB0eSB2YWx1ZSBpcyB1c2VkOgoKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiSUQiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAoKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiRGlzdHJpYnV0b3IgSUQiIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgY29tbWFuZCwKCiAgICAqIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsCgogICAgVGhlIHNvIGRldGVybWluZWQgSUQgdmFsdWUgdGhlbiBwYXNzZXMgdGhlIGZvbGxvd2luZyB0cmFuc2Zvcm1hdGlvbnMsCiAgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2Q6CgogICAgKiBpdCBpcyB0cmFuc2xhdGVkIHRvIGxvd2VyIGNhc2UsCgogICAgKiBibGFua3MgKHdoaWNoIHNob3VsZCBub3QgYmUgdGhlcmUgYW55d2F5KSBhcmUgdHJhbnNsYXRlZCB0byB1bmRlcnNjb3JlcywKCiAgICAqIGEgbm9ybWFsaXphdGlvbiBvZiB0aGUgSUQgaXMgcGVyZm9ybWVkLCBiYXNlZCB1cG9uCiAgICAgIGBub3JtYWxpemF0aW9uIHRhYmxlc2BfLiBUaGUgcHVycG9zZSBvZiB0aGlzIG5vcm1hbGl6YXRpb24gaXMgdG8gZW5zdXJlCiAgICAgIHRoYXQgdGhlIElEIGlzIGFzIHJlbGlhYmxlIGFzIHBvc3NpYmxlLCBldmVuIGFjcm9zcyBpbmNvbXBhdGlibGUgY2hhbmdlcwogICAgICBpbiB0aGUgT1MgZGlzdHJpYnV0aW9ucy4gQSBjb21tb24gcmVhc29uIGZvciBhbiBpbmNvbXBhdGlibGUgY2hhbmdlIGlzCiAgICAgIHRoZSBhZGRpdGlvbiBvZiBhbiBvcy1yZWxlYXNlIGZpbGUsIG9yIHRoZSBhZGRpdGlvbiBvZiB0aGUgbHNiX3JlbGVhc2UKICAgICAgY29tbWFuZCwgd2l0aCBJRCB2YWx1ZXMgdGhhdCBkaWZmZXIgZnJvbSB3aGF0IHdhcyBwcmV2aW91c2x5IGRldGVybWluZWQKICAgICAgZnJvbSB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSBuYW1lLgogICAgKQJyNgAAAHIcAAAAchcAAAByGAAAAHIZAAAAchwAAAByHAAAAMgAAABzEQAAAIAA9GACAAwTjzqJOos80AQXchgAAADaBnByZXR0eWMBAAAAAAAAAAAAAAADAAAAAwAAAPMsAAAAlwB0AAAAAAAAAAAAagMAAAAAAAAAAAAAAAAAAAAAAAB8AKsBAAAAAAAAUwApAWFrBAAACiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uLCBhcyBhIGh1bWFuLXJlYWRhYmxlCiAgICBzdHJpbmcuCgogICAgSWYgKnByZXR0eSogaXMgZmFsc2UsIHRoZSBuYW1lIGlzIHJldHVybmVkIHdpdGhvdXQgdmVyc2lvbiBvciBjb2RlbmFtZS4KICAgIChlLmcuICJDZW50T1MgTGludXgiKQoKICAgIElmICpwcmV0dHkqIGlzIHRydWUsIHRoZSB2ZXJzaW9uIGFuZCBjb2RlbmFtZSBhcmUgYXBwZW5kZWQuCiAgICAoZS5nLiAiQ2VudE9TIExpbnV4IDcuMS4xNTAzIChDb3JlKSIpCgogICAgKipMb29rdXAgaGllcmFyY2h5OioqCgogICAgVGhlIG5hbWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNvdXJjZXMsIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIuCiAgICBUaGUgZmlyc3QgYXZhaWxhYmxlIGFuZCBub24tZW1wdHkgdmFsdWUgaXMgdXNlZDoKCiAgICAqIElmICpwcmV0dHkqIGlzIGZhbHNlOgoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJOQU1FIiBhdHRyaWJ1dGUgb2YgdGhlIG9zLXJlbGVhc2UgZmlsZSwKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiRGlzdHJpYnV0b3IgSUQiIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgICBjb21tYW5kLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICI8bmFtZT4iIGZpZWxkIG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlLgoKICAgICogSWYgKnByZXR0eSogaXMgdHJ1ZToKCiAgICAgIC0gdGhlIHZhbHVlIG9mIHRoZSAiUFJFVFRZX05BTUUiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAoKICAgICAgLSB0aGUgdmFsdWUgb2YgdGhlICJEZXNjcmlwdGlvbiIgYXR0cmlidXRlIHJldHVybmVkIGJ5IHRoZSBsc2JfcmVsZWFzZQogICAgICAgIGNvbW1hbmQsCgogICAgICAtIHRoZSB2YWx1ZSBvZiB0aGUgIjxuYW1lPiIgZmllbGQgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsIGFwcGVuZGVkCiAgICAgICAgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHByZXR0eSB2ZXJzaW9uICgiPHZlcnNpb25faWQ+IiBhbmQgIjxjb2RlbmFtZT4iCiAgICAgICAgZmllbGRzKSBvZiB0aGUgZGlzdHJvIHJlbGVhc2UgZmlsZSwgaWYgYXZhaWxhYmxlLgogICAgKQJyNgAAANoEbmFtZakBcjkAAABzAQAAACByGQAAAHI7AAAAcjsAAAAbAQAAcxQAAACAAPRIAQAME488iTyYBtMLH9AEH3IYAAAA2gRiZXN0YwIAAAAAAAAAAAAAAAQAAAADAAAA8y4AAACXAHQAAAAAAAAAAABqAwAAAAAAAAAAAAAAAAAAAAAAAHwAfAGrAgAAAAAAAFMAKQFhTgcAAAogICAgUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IE9TIGRpc3RyaWJ1dGlvbiwgYXMgYSBodW1hbi1yZWFkYWJsZQogICAgc3RyaW5nLgoKICAgIElmICpwcmV0dHkqIGlzIGZhbHNlLCB0aGUgdmVyc2lvbiBpcyByZXR1cm5lZCB3aXRob3V0IGNvZGVuYW1lIChlLmcuCiAgICAiNy4wIikuCgogICAgSWYgKnByZXR0eSogaXMgdHJ1ZSwgdGhlIGNvZGVuYW1lIGluIHBhcmVudGhlc2lzIGlzIGFwcGVuZGVkLCBpZiB0aGUKICAgIGNvZGVuYW1lIGlzIG5vbi1lbXB0eSAoZS5nLiAiNy4wIChNYWlwbykiKS4KCiAgICBTb21lIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZSB2ZXJzaW9uIG51bWJlcnMgd2l0aCBkaWZmZXJlbnQgcHJlY2lzaW9ucyBpbgogICAgdGhlIGRpZmZlcmVudCBzb3VyY2VzIG9mIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4gRXhhbWluaW5nIHRoZSBkaWZmZXJlbnQKICAgIHNvdXJjZXMgaW4gYSBmaXhlZCBwcmlvcml0eSBvcmRlciBkb2VzIG5vdCBhbHdheXMgeWllbGQgdGhlIG1vc3QgcHJlY2lzZQogICAgdmVyc2lvbiAoZS5nLiBmb3IgRGViaWFuIDguMiwgb3IgQ2VudE9TIDcuMSkuCgogICAgU29tZSBvdGhlciBkaXN0cmlidXRpb25zIG1heSBub3QgcHJvdmlkZSB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24uIEluIHRoZXNlCiAgICBjYXNlcywgYW4gZW1wdHkgc3RyaW5nIHdvdWxkIGJlIHJldHVybmVkLiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBvYnNlcnZlZAogICAgd2l0aCByb2xsaW5nIHJlbGVhc2VzIGRpc3RyaWJ1dGlvbnMgKGUuZy4gQXJjaCBMaW51eCkuCgogICAgVGhlICpiZXN0KiBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgYXBwcm9hY2ggZm9yIHRoZSByZXR1cm5lZAogICAgdmVyc2lvbjoKCiAgICBJZiAqYmVzdCogaXMgZmFsc2UsIHRoZSBmaXJzdCBub24tZW1wdHkgdmVyc2lvbiBudW1iZXIgaW4gcHJpb3JpdHkgb3JkZXIgb2YKICAgIHRoZSBleGFtaW5lZCBzb3VyY2VzIGlzIHJldHVybmVkLgoKICAgIElmICpiZXN0KiBpcyB0cnVlLCB0aGUgbW9zdCBwcmVjaXNlIHZlcnNpb24gbnVtYmVyIG91dCBvZiBhbGwgZXhhbWluZWQKICAgIHNvdXJjZXMgaXMgcmV0dXJuZWQuCgogICAgKipMb29r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IHNvdXJjZWNvZGU6OiBweXRob24KCiAgICAgICAgewogICAgICAgICAgICAnaWQnOiAncmhlbCcsCiAgICAgICAgICAgICd2ZXJzaW9uJzogJzcuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uX3BhcnRzJzogewogICAgICAgICAgICAgICAgJ21ham9yJzogJzcnLAogICAgICAgICAgICAgICAgJ21pbm9yJzogJzAnLAogICAgICAgICAgICAgICAgJ2J1aWxkX251bWJlcic6ICcnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdsaWtlJzogJ2ZlZG9yYScsCiAgICAgICAgICAgICdjb2RlbmFtZSc6ICdNYWlwbycKICAgICAgICB9CgogICAgVGhlIGRpY3Rpb25hcnkgc3RydWN0dXJlIGFuZCBrZXlzIGFyZSBhbHdheXMgdGhlIHNhbWUsIHJlZ2FyZGxlc3Mgb2Ygd2hpY2gKICAgIGluZm9ybWF0aW9uIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgZGF0YSBzb3VyY2VzLiBUaGUgdmFsdWVzCiAgICBmb3IgdGhlIHZhcmlvdXMga2V5cyBhcmUgYXMgZm9sbG93czoKCiAgICAqIGBgaWRgYDogIFRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5pZGAuCgogICAgKiBgYHZlcnNpb25gYDogIFRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby52ZXJzaW9uYC4KCiAgICAqIGBgdmVyc2lvbl9wYXJ0cyAtPiBtYWpvcmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLm1ham9yX3ZlcnNpb25gLgoKICAgICogYGB2ZXJzaW9uX3BhcnRzIC0+IG1pbm9yYGA6ICBUaGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8ubWlub3JfdmVyc2lvbmAuCgogICAgKiBgYHZlcnNpb25fcGFydHMgLT4gYnVpbGRfbnVtYmVyYGA6ICBUaGUgcmVzdWx0IG9mCiAgICAgIDpmdW5jOmBkaXN0cm8uYnVpbGRfbnVtYmVyYC4KCiAgICAqIGBgbGlrZWBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpg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YW0gZXhlY3V0aW9uCiAgICAgICAgICBwYXRoLCB0aGUgZGF0YSBzb3VyY2UgZm9yIHRoZSBsc2JfcmVsZWFzZSBjb21tYW5kIHdpbGwgYmUgZW1wdHkuCgogICAgICAgICogYGBvc19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBvcy1yZWxlYXNlIGZpbGVgXyB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgICBBbiBlbXB0eSBzdHJpbmcgKHRoZSBkZWZhdWx0KSB3aWxsIGNhdXNlIHRoZSBkZWZhdWx0IHBhdGggbmFtZSB0bwogICAgICAgICAgYmUgdXNlZCAoc2VlIGBvcy1yZWxlYXNlIGZpbGVgXyBmb3IgZGV0YWlscykuCgogICAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBvciBkZWZhdWx0ZWQgb3MtcmVsZWFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LCB0aGUKICAgICAgICAgIGRhdGEgc291cmNlIGZvciB0aGUgb3MtcmVsZWFzZSBmaWxlIHdpbGwgYmUgZW1wdHkuCgogICAgICAgICogYGBkaXN0cm9fcmVsZWFzZV9maWxlYGAgKHN0cmluZyk6IFRoZSBwYXRoIG5hbWUgb2YgdGhlCiAgICAgICAgICBgZGlzdHJvIHJlbGVhc2UgZmlsZWBfIHRoYXQgaXMgdG8gYmUgdXNlZCBhcyBhIGRhdGEgc291cmNlLgoKICAgICAgICAgIEFuIGVtcHR5IHN0cmluZyAodGhlIGRlZmF1bHQpIHdpbGwgY2F1c2UgYSBkZWZhdWx0IHNlYXJjaCBhbGdvcml0aG0KICAgICAgICAgIHRvIGJlIHVzZWQgKHNlZSBgZGlzdHJvIHJlbGVhc2UgZmlsZWBfIGZvciBkZXRhaWxzKS4KCiAgICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIGRpc3RybyByZWxlYXNlIGZpbGUgZG9lcyBub3QgZXhpc3QsIG9yIGlmIG5vIGRlZmF1bHQKICAgICAgICAgIGRpc3RybyByZWxlYXNlIGZpbGUgY2FuIGJlIGZvdW5kLCB0aGUgZGF0YSBzb3VyY2UgZm9yIHRoZSBkaXN0cm8KICAgICAgICAgIHJlbGVhc2UgZmlsZSB3aWxsIGJlIGVtcHR5LgoKICAgICAgICAqIGBgaW5jbHVkZV91bmFtZWBgIChib29sKTogQ29udHJvbHMgd2hldGhlciB1bmFtZSBjb21tYW5kIG91dHB1dCBpcwogICAgICAgICAgaW5jbHVkZWQgYXMgYSBkYXRhIHNvdXJjZS4gSWYgdGhlIHVuYW1lIGNvbW1hbmQgaXMgbm90IGF2YWlsYWJsZSBpbgogICAgICAgICAgdGhlIHByb2dyYW0gZXhlY3V0aW9uIHBhdGggdGhlIGRhdGEgc291cmNlIGZvciB0aGUgdW5hbWUgY29tbWFuZCB3aWxsCiAgICAgICAgICBiZSBlbXB0eS4KCiAgICAgICAgKiBgYHJvb3RfZGlyYGAgKHN0cmluZyk6IFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byB1c2UKICAgICAgICAgIHRvIGZpbmQgZGlzdHJvLXJlbGF0ZWQgaW5mb3JtYXRpb24gZmlsZXMuIE5vdGUgdGhhdCBgYGluY2x1ZGVfKmBgCiAgICAgICAgICBwYXJhbWV0ZXJzIG11c3Qgbm90IGJlIGVuYWJsZWQgaW4gY29tYmluYXRpb24gd2l0aCBgYHJvb3RfZGlyYGAuCgogICAgICAgICogYGBpbmNsdWRlX29zbGV2ZWxgYCAoYm9vbCk6IENvbnRyb2xzIHdoZXRoZXIgKEFJWCkgb3NsZXZlbCBjb21tYW5kCiAgICAgICAgICBvdXRwdXQgaXMgaW5jbHVkZWQgYXMgYSBkYXRhIHNvdXJjZS4gSWYgdGhlIG9zbGV2ZWwgY29tbWFuZCBpcyBub3QKICAgICAgICAgIGF2YWlsYWJsZSBpbiB0aGUgcHJvZ3JhbSBleGVjdXRpb24gcGF0aCB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBiZQogICAgICAgICAgZW1wdHkuCgogICAgICAgIFB1YmxpYyBpbnN0YW5jZSBhdHRyaWJ1dGVzOgoKICAgICAgICAqIGBgb3NfcmVsZWFzZV9maWxlYGAgKHN0cmluZyk6IFRoZSBwYXRoIG5hbWUgb2YgdGhlCiAgICAgICAgICBgb3MtcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyBhY3R1YWxseSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuIFRoZQogICAgICAgICAgZW1wdHkgc3RyaW5nIGlmIG5vIGRpc3RybyByZWxlYXNlIGZpbGUgaXMgdXNlZCBhcyBhIGRhdGEgc291cmNlLgoKICAgICAgICAqIGBgZGlzdHJvX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYGRpc3RybyByZWxlYXNlIGZpbGVgXyB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4gVGhlCiAgICAgICAgICBlbXB0eSBzdHJpbmcgaWYgbm8gZGlzdHJvIHJlbGVhc2UgZmlsZSBpcyB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuCgogICAgICAgICogYGBpbmNsdWRlX2xzYmBgIChib29sKTogVGhlIHJlc3VsdCBvZiB0aGUgYGBpbmNsdWRlX2xzYmBgIHBhcmFtZXRlci4KICAgICAgICAgIFRoaXMgY29udHJvbHMgd2hldGhlciB0aGUgbHNiIGluZm9ybWF0aW9uIHdpbGwgYmUgbG9hZGVkLgoKICAgICAgICAqIGBgaW5jbHVkZV91bmFtZWBgIChib29sKTogVGhlIHJlc3VsdCBvZiB0aGUgYGBpbmNsdWRlX3VuYW1lYGAKICAgICAgICAgIHBhcmFtZXRlci4gVGhpcyBjb250cm9scyB3aGV0aGVyIHRoZSB1bmFtZSBpbmZvcm1hdGlvbiB3aWxsCiAgICAgICAgICBiZSBsb2FkZWQuCgogICAgICAgICogYGBpbmNsdWRlX29zbGV2ZWxgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV9vc2xldmVsYGAKICAgICAgICAgIHBhcmFtZXRlci4gVGhpcyBjb250cm9scyB3aGV0aGVyIChBSVgpIG9zbGV2ZWwgaW5mb3JtYXRpb24gd2lsbCBiZQogICAgICAgICAgbG9hZGVkLgoKICAgICAgICAqIGBgcm9vdF9kaXJgYCAoc3RyaW5nKTogVGhlIHJlc3VsdCBvZiB0aGUgYGByb290X2RpcmBgIHBhcmFtZXRlci4KICAgICAgICAgIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byB1c2UgdG8gZmluZCBkaXN0cm8tcmVsYXRlZAogICAgICAgICAgaW5mb3JtYXRpb24gZmlsZXMuCgogICAgICAgIFJhaXNlczoKCiAgICAgICAgKiA6cHk6ZXhjOmBWYWx1ZUVycm9yYDogSW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBjb21iaW5hdGlvbiBpcyBub3QKICAgICAgICAgICBzdXBwb3J0ZWQuCgogICAgICAgICogOnB5OmV4YzpgT1NFcnJvcmA6IFNvbWUgSS9PIGlzc3VlIHdpdGggYW4gb3MtcmVsZWFzZSBmaWxlIG9yIGRpc3RybwogICAgICAgICAgcmVsZWFzZSBmaWxlLgoKICAgICAgICAqIDpweTpleGM6YFVuaWNvZGVFcnJvcmA6IEEgZGF0YSBzb3VyY2UgaGFzIHVuZXhwZWN0ZWQgY2hhcmFjdGVycyBvcgogICAgICAgICAgdXNlcyBhbiB1bmV4cGVjdGVkIGVuY29kaW5nLgogICAgICAgINoDZXRjegd1c3IvbGli2gBOemNJbmNsdWRpbmcgc3VicHJvY2VzcyBkYXRhIHNvdXJjZXMgZnJvbSBzcGVjaWZpYyByb290X2RpciBpcyBkaXNhbGxvd2VkIHRvIHByZXZlbnQgZmFsc2UgaW5mb3JtYXRpb24pEHJ0AAAA2gJvc9oEcGF0aNoEam9pbtoMX1VOSVhDT05GRElS2gdldGNfZGly2g5fVU5JWFVTUkxJQkRJUtoLdXNyX2xpYl9kaXJycQAAANoUX09TX1JFTEVBU0VfQkFTRU5BTUXaBmlzZmlsZXJyAAAA2gpWYWx1ZUVycm9ycnAAAABycwAAAHJ1AAAAKQpyZQAAAHJwAAAAcnEAAABycgAAAHJzAAAAcnQAAABydQAAANoXZXRjX2Rpcl9vc19yZWxlYXNlX2ZpbGXaF3Vzcl9saWJfb3NfcmVsZWFzZV9maWxl2hNpc19yb290X2Rpcl9kZWZpbmVkcwoAAAAgICAgICAgICAgchkAAAByZgAAAHoaTGludXhEaXN0cmlidXRpb24uX19pbml0X1+XAgAAc0QB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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 3
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
distro.cpython-312.pyc
52.49 KB
lrw-r--r--
2026-01-08 19:19:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
1008 B
lrw-r--r--
2026-01-08 19:19:47
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__main__.cpython-312.pyc
340 B
lrw-r--r--
2026-01-08 19:19:47
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).