REDROOM
PHP 8.3.31
Path:
Logout
Edit File
Size: 56.50 KB
Close
/opt/imunify360/venv/lib64/python3.11/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-311.pyc
Text
Base64
pw0NCgAAAACBDN5pFsEAAOMAAAAAAAAAAAAAAAAJAAAAAAAAAPP+AwAAlwBkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZAJsCVoJZAFkA2wKbQtaC20MWgxtDVoNbQ5aDm0PWg9tEFoQbRFaEW0SWhJtE1oTAQAJAGQBZARsCm0UWhQBAG4NIwBlFSQAcgUBAGUWWhRZAG4EdwB4A1kAdwFkBVoXAgBHAGQGhABkB2UUpgMAAKsDAAAAAAAAAABaGAIARwBkCIQAZAllFKYDAACrAwAAAAAAAAAAWhllBGoaAAAAAAAAAACgGwAAAAAAAAAAAAAAAAAAAAAAAAAAZApkC6YCAACrAgAAAAAAAAAAWhxlBGoaAAAAAAAAAACgGwAAAAAAAAAAAAAAAAAAAAAAAAAAZAxkDaYCAACrAgAAAAAAAAAAWh1kDloeZA9kEGQRnAJaH2QPZA9kEmQSZBJkE5wFWiBkFGQSaQFaIQIAZQVqIgAAAAAAAAAAZBWmAQAAqwEAAAAAAAAAAFojAgBlBWoiAAAAAAAAAABkFqYBAACrAQAAAAAAAAAAWiRnAGQXogFaJWQYZBlkGmUeZBtkHGQdZB5kH2YJWiZkQWQhZSdkImUSZShlKGUoZgMZAAAAAAAAAAAAZgRkI4QFWilkImUoZgJkJIQEWipkQmQmZSdkImUoZgRkJ4QFWitkQ2QmZSdkKGUnZCJlKGYGZCmEBVosZEJkKGUnZCJlEmUoZShlKGYDGQAAAAAAAAAAAGYEZCqEBVotZEJkKGUnZCJlKGYEZCuEBVouZEJkKGUnZCJlKGYEZCyEBVovZEJkKGUnZCJlKGYEZC2EBVowZCJlKGYCZC6EBFoxZCJlKGYCZC+EBFoyZENkJmUnZChlJ2QiZRlmBmQwhAVaM2QiZQ1lKGUoZgIZAAAAAAAAAAAAZgJkMYQEWjRkImUNZShlKGYCGQAAAAAAAAAAAGYCZDKEBFo1ZCJlDWUoZShmAhkAAAAAAAAAAABmAmQzhARaNmQiZQ1lKGUoZgIZAAAAAAAAAAAAZgJkNIQEWjdkNWUoZCJlKGYEZDaEBFo4ZDVlKGQiZShmBGQ3hARaOWQ1ZShkImUoZgRkOIQEWjpkNWUoZCJlKGYEZDmEBFo7CQBkAWQ6bDxtPVo9AQBuGCMAZRUkAHIQAQACAEcAZDuEAGQ8pgIAAKsCAAAAAAAAAABaPVkAbgR3AHgDWQB3AQIARwBkPYQAZD6mAgAAqwIAAAAAAAAAAFo+AgBlPqYAAACrAAAAAAAAAAAAWj9kRGQ/hARaQGVBZEBrAgAAAAByDAIAZUCmAAAAqwAAAAAAAAAAAAEAZAJTAGQCUwApRWH7AgAAClRoZSBgYGRpc3Ryb2BgIHBhY2thZ2UgKGBgZGlzdHJvYGAgc3RhbmRzIGZvciBMaW51eCBEaXN0cmlidXRpb24pIHByb3ZpZGVzCmluZm9ybWF0aW9uIGFib3V0IHRoZSBMaW51eCBkaXN0cmlidXRpb24gaXQgcnVucyBvbiwgc3VjaCBhcyBhIHJlbGlhYmxlCm1hY2hpbmUtcmVhZGFibGUgZGlzdHJvIElELCBvciB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKSXQgaXMgdGhlIHJlY29tbWVuZGVkIHJlcGxhY2VtZW50IGZvciBQeXRob24ncyBvcmlnaW5hbAo6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uYCBmdW5jdGlvbiwgYnV0IGl0IHByb3ZpZGVzIG11Y2ggbW9yZQpmdW5jdGlvbmFsaXR5LiBBbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBiZWNhbWUgbmVjZXNzYXJ5IGJlY2F1c2UgUHl0aG9uCjMuNSBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24sIGFuZCBQeXRob24gMy44IHJlbW92ZWQgaXQgYWx0b2dldGhlci4gSXRzCnByZWRlY2Vzc29yIGZ1bmN0aW9uIDpweTpmdW5jOmBwbGF0Zm9ybS5kaXN0YCB3YXMgYWxyZWFkeSBkZXByZWNhdGVkIHNpbmNlClB5dGhvbiAyLjYgYW5kIHJlbW92ZWQgaW4gUHl0aG9uIDMuOC4gU3RpbGwsIHRoZXJlIGFyZSBtYW55IGNhc2VzIGluIHdoaWNoCmFjY2VzcyB0byBPUyBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24gaXMgbmVlZGVkLiBTZWUgYFB5dGhvbiBpc3N1ZSAxMzIyCjxodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzMjI+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCukAAAAATikJ2gNBbnnaCENhbGxhYmxl2gREaWN02ghJdGVyYWJsZdoIT3B0aW9uYWzaCFNlcXVlbmNl2gZUZXh0SU/aBVR1cGxl2gRUeXBlKQHaCVR5cGVkRGljdHoFMS45LjBjAAAAAAAAAAAAAAAAAwAAAAAAAADzLgAAAJcAZQBaAWQAWgJVAGUDZQRkATwAAABlA2UEZAI8AAAAZQNlBGQDPAAAAGQEUwApBdoLVmVyc2lvbkRpY3TaBW1ham9y2gVtaW5vctoMYnVpbGRfbnVtYmVyTikF2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gNzdHLaD19fYW5ub3RhdGlvbnNfX6kA8wAAAAD6eS9idWlsZGRpci9idWlsZC9CVUlMRC9pbXVuaWZ5MzYwLXZlbnYtMi42LjIvb3B0L2ltdW5pZnkzNjAvdmVudi9saWIvcHl0aG9uMy4xMS9zaXRlLXBhY2thZ2VzL3BpcC9fdmVuZG9yL2Rpc3Ryby9kaXN0cm8ucHlyDgAAAHIOAAAAPQAAAHMwAAAAgACAAIAAgACAAIAA2AsOgEqASoFK2AsOgEqASoFK2BIV0AQV0AQV0QQV0AQV0AQVchgAAAByDgAAAGMAAAAAAAAAAAAAAAADAAAAAAAAAPNCAAAAlwBlAFoBZABaAlUAZQNlBGQBPAAAAGUDZQRkAjwAAABlBWUEZAM8AAAAZQNlBGQEPAAAAGUDZQRkBTwAAABkBlMAKQfaCEluZm9EaWN02gJpZNoHdmVyc2lvbtoNdmVyc2lvbl9wYXJ0c9oEbGlrZdoIY29kZW5hbWVOKQZyEgAAAHITAAAAchQAAAByFQAAAHIWAAAAcg4AAAByFwAAAHIYAAAAchkAAAByGwAAAHIbAAAAQwAAAHNAAAAAgACAAIAAgACAAIAA2AgLgEeAR4FH2A0QgEyATIFM2BMe0AQe0AQe0QQe2AoNgEmASYFJ2A4RgE2ATYFNgE2ATXIYAAAAchsAAADaC1VOSVhDT05GRElSegQvZXRj2g1VTklYVVNSTElCRElSeggvdXNyL2xpYnoKb3MtcmVsZWFzZdoGb3JhY2xl2ghvcGVuc3VzZSkC2gJvbHoNb3BlbnN1c2UtbGVhcNoEcmhlbCkF2hZlbnRlcnByaXNlZW50ZXJwcmlzZWFz2hplbnRlcnByaXNlZW50ZXJwcmlzZXNlcnZlctobcmVkaGF0ZW50ZXJwcmlzZXdvcmtzdGF0aW9u2hZyZWRoYXRlbnRlcnByaXNlc2VydmVy2htyZWRoYXRlbnRlcnByaXNlY29tcHV0ZW5vZGXaBnJlZGhhdHpBKD86W14pXSpcKSguKilcKCk/ICooPzpTVEwgKT8oW1xkLitcLWEtel0qXGQpICooPzplc2FlbGVyICopPyguKyl6GyhcdyspWy1fXShyZWxlYXNlfHZlcnNpb24pJCkRegxTdVNFLXJlbGVhc2V6EGFsdGxpbnV4LXJlbGVhc2V6DGFyY2gtcmVsZWFzZXoMYmFzZS1yZWxlYXNleg5jZW50b3MtcmVsZWFzZXoOZmVkb3JhLXJlbGVhc2V6DmdlbnRvby1yZWxlYXNleg5tYWdlaWEtcmVsZWFzZXoQbWFuZHJha2UtcmVsZWFzZXoQbWFuZHJpdmEtcmVsZWFzZXoVbWFuZHJpdmFsaW51eC1yZWxlYXNleg9tYW5qYXJvLXJlbGVhc2V6Dm9yYWNsZS1yZWxlYXNleg5yZWRoYXQtcmVsZWFzZXoNcm9ja3ktcmVsZWFzZXoKc2wtcmVsZWFzZXoRc2xhY2t3YXJlLXZlcnNpb27aDmRlYmlhbl92ZXJzaW9uegtsc2ItcmVsZWFzZXoLb2VtLXJlbGVhc2V6DnN5c3RlbS1yZWxlYXNleg1wbGVzay1yZWxlYXNlehBpcmVkbWFpbC1yZWxlYXNleg1ib2FyZC1yZWxlYXNl2gtlYzJfdmVyc2lvblTaFmZ1bGxfZGlzdHJpYnV0aW9uX25hbWXaBnJldHVybmMBAAAAAAAAAAAAAAAFAAAAAwAAAPNuAAAAlwB0AQAAAAAAAAAAAABqAQAAAAAAAAAAZAF0BAAAAAAAAAAAAABkAqwDpgMAAKsDAAAAAAAAAAABAHQGAAAAAAAAAAAAAKAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AKYBAACrAQAAAAAAAAAAUwApBGGdBQAACiAgICAuLiBkZXByZWNhdGVkOjogMS42LjAKCiAgICAgICAgOmZ1bmM6YGRpc3Ryby5saW51eF9kaXN0cmlidXRpb24oKWAgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUKICAgICAgICB1c2VkIGFzIGEgY29tcGF0aWJpbGl0eSBzaGltIHdpdGggUHl0aG9uJ3MKICAgICAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKClgLiBQbGVhc2UgdXNlIDpmdW5jOmBkaXN0cm8uaWRgLAogICAgICAgIDpmdW5jOmBkaXN0cm8udmVyc2lvbmAgYW5kIDpmdW5jOmBkaXN0cm8ubmFtZWAgaW5zdGVhZC4KCiAgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uIGFzIGEgdHVwbGUKICAgIGBgKGlkX25hbWUsIHZlcnNpb24sIGNvZGVuYW1lKWBgIHdpdGggaXRlbXMgYXMgZm9sbG93czoKCiAgICAqIGBgaWRfbmFtZWBgOiAgSWYgKmZ1bGxfZGlzdHJpYnV0aW9uX25hbWUqIGlzIGZhbHNlLCB0aGUgcmVzdWx0IG9mCiAgICAgIDpmdW5jOmBkaXN0cm8uaWRgLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgOmZ1bmM6YGRpc3Ryby5uYW1lYC4KCiAgICAqIGBgdmVyc2lvbmBgOiAgVGhlIHJlc3VsdCBvZiA6ZnVuYzpgZGlzdHJvLnZlcnNpb25gLgoKICAgICogYGBjb2RlbmFtZWBgOiAgVGhlIGV4dHJhIGl0ZW0gKHVzdWFsbHkgaW4gcGFyZW50aGVzZXMpIGFmdGVyIHRoZQogICAgICBvcy1yZWxlYXNlIHZlcnNpb24gbnVtYmVyLCBvciB0aGUgcmVzdWx0IG9mIDpmdW5jOmBkaXN0cm8uY29kZW5hbWVgLgoKICAgIFRoZSBpbnRlcmZhY2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG9yaWdpbmFsCiAgICA6cHk6ZnVuYzpgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uYCBmdW5jdGlvbiwgc3VwcG9ydGluZyBhIHN1YnNldCBvZgogICAgaXRzIHBhcmFtZXRlcnMuCgogICAgVGhlIGRhdGEgaXQgcmV0dXJucyBtYXkgbm90IGV4YWN0bHkgYmUgdGhlIHNhbWUsIGJlY2F1c2UgaXQgdXNlcyBtb3JlIGRhdGEKICAgIHNvdXJjZXMgdGhhbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24sIGFuZCB0aGF0IG1heSBsZWFkIHRvIGRpZmZlcmVudCBkYXRhIGlmCiAgICB0aGUgT1MgZGlzdHJpYnV0aW9uIGlzIG5vdCBjb25zaXN0ZW50IGFjcm9zcyBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgaXQKICAgIHByb3ZpZGVzICh0aGVyZSBhcmUgaW5kZWVkIHN1Y2ggZGlzdHJpYnV0aW9ucyAuLi4pLgoKICAgIEFub3RoZXIgcmVhc29uIGZvciBkaWZmZXJlbmNlcyBpcyB0aGUgZmFjdCB0aGF0IHRoZSA6ZnVuYzpgZGlzdHJvLmlkYAogICAgbWV0aG9kIG5vcm1hbGl6ZXMgdGhlIGRpc3RybyBJRCBzdHJpbmcgdG8gYSByZWxpYWJsZSBtYWNoaW5lLXJlYWRhYmxlIHZhbHVlCiAgICBmb3IgYSBudW1iZXIgb2YgcG9wdWxhciBPUyBkaXN0cmlidXRpb25zLgogICAgespkaXN0cm8ubGludXhfZGlzdHJpYnV0aW9uKCkgaXMgZGVwcmVjYXRlZC4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyBhIGNvbXBhdGliaWxpdHkgc2hpbSB3aXRoIFB5dGhvbidzIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpLiBQbGVhc2UgdXNlIGRpc3Ryby5pZCgpLCBkaXN0cm8udmVyc2lvbigpIGFuZCBkaXN0cm8ubmFtZSgpIGluc3RlYWQu6QIAAAApAdoKc3RhY2tsZXZlbCkF2gh3YXJuaW5nc9oEd2FybtoSRGVwcmVjYXRpb25XYXJuaW5n2gdfZGlzdHJv2hJsaW51eF9kaXN0cmlidXRpb24pAXIvAAAAcwEAAAAgchkAAAByOAAAAHI4AAAAoAAAAHNDAAAAgAD1QgEABQ2ETfACAglDAfUGAAkb2BMU8AsGBQbxAAYFBvQABgUG8AAGBQb1DgAME9cLJdILJdAmPNELPdQLPdAEPXIYAAAAYwAAAAAAAAAAAAAAAAIAAAADAAAA8zQAAACXAHQAAAAAAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAACmAAAAqwAAAAAAAAAAAFMAKQFh2AsAAAogICAgUmV0dXJuIHRoZSBkaXN0cm8gSUQgb2YgdGhlIGN1cnJlbnQgZGlzdHJpYnV0aW9uLCBhcyBhCiAgICBtYWNoaW5lLXJlYWRhYmxlIHN0cmluZy4KCiAgICBGb3IgYSBudW1iZXIgb2YgT1MgZGlzdHJpYnV0aW9ucywgdGhlIHJldHVybmVkIGRpc3RybyBJRCB2YWx1ZSBpcwogICAgKnJlbGlhYmxlKiwgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaXMgZG9jdW1lbnRlZCBhbmQgdGhhdCBpdCBkb2VzIG5vdCBjaGFuZ2UKICAgIGFjcm9zcyByZWxlYXNlcyBvZiB0aGUgZGlzdHJpYnV0aW9uLgoKICAgIFRoaXMgcGFja2FnZSBtYWludGFpbnMgdGhlIGZvbGxvd2luZyByZWxpYWJsZSBkaXN0cm8gSUQgdmFsdWVzOgoKICAgID09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgRGlzdHJvIElEICAgICAgIERpc3RyaWJ1dGlvbgogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAidWJ1bnR1IiAgICAgICAgVWJ1bnR1CiAgICAiZGViaWFuIiAgICAgICAgRGViaWFuCiAgICAicmhlbCIgICAgICAgICAgUmVkSGF0IEVudGVycHJpc2UgTGludXgKICAgICJjZW50b3MiICAgICAgICBDZW50T1MKICAgICJmZWRvcmEiICAgICAgICBGZWRvcmEKICAgICJzbGVzIiAgICAgICAgICBTVVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyCiAgICAib3BlbnN1c2UiICAgICAgb3BlblNVU0UKICAgICJhbXpuIiAgICAgICAgICBBbWF6b24gTGludXgKICAgICJhcmNoIiAgICAgICAgICBBcmNoIExpbnV4CiAgICAiYnVpbGRyb290IiAgICAgQnVpbGRyb290CiAgICAiY2xvdWRsaW51eCIgICAgQ2xvdWRMaW51eCBPUwogICAgImV4aGVyYm8iICAgICAgIEV4aGVyYm8gTGludXgKICAgICJnZW50b28iICAgICAgICBHZW5Ub28gTGludXgKICAgICJpYm1fcG93ZXJrdm0iICBJQk0gUG93ZXJLVk0KICAgICJrdm1pYm0iICAgICAgICBLVk0gZm9yIElCTSB6IFN5c3RlbXMKICAgICJsaW51eG1pbnQiICAgICBMaW51eCBNaW50CiAgICAibWFnZWlhIiAgICAgICAgTWFnZWlhCiAgICAibWFuZHJpdmEiICAgICAgTWFuZHJpdmEgTGludXgKICAgICJwYXJhbGxlbHMiICAgICBQYXJhbGxlbHMKICAgICJwaWRvcmEiICAgICAgICBQaWRvcmEKICAgICJyYXNwYmlhbiIgICAgICBSYXNwYmlhbgogICAgIm9yYWNsZSIgICAgICAgIE9yYWNsZSBMaW51eCAoYW5kIE9yYWNsZSBFbnRlcnByaXNlIExpbnV4KQogICAgInNjaWVudGlmaWMiICAgIFNjaWVudGlmaWMgTGludXgKICAgICJzbGFja3dhcmUiICAgICBTbGFja3dhcmUKICAgICJ4ZW5zZXJ2ZXIiICAgICBYZW5TZXJ2ZXIKICAgICJvcGVuYnNkIiAgICAgICBPcGVuQlNECiAgICAibmV0YnNkIiAgICAgICAgTmV0QlNECiAgICAiZnJlZWJzZCIgICAgICAgRnJlZUJTRAogICAgIm1pZG5pZ2h0YnNkIiAgIE1pZG5pZ2h0QlNECiAgICAicm9ja3kiICAgICAgICAgUm9ja3kgTGludXgKICAgICJhaXgiICAgICAgICAgICBBSVgKICAgICJndWl4IiAgICAgICAgICBHdWl4IFN5c3RlbQogICAgImFsdGxpbnV4IiAgICAgIEFMVCBMaW51eAogICAgPT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgSWYgeW91IGhhdmUgYSBuZWVkIHRvIGdldCBkaXN0cm9zIGZvciByZWxpYWJsZSBJRHMgYWRkZWQgaW50byB0aGlzIHNldCwKICAgIG9yIGlmIHlvdSBmaW5kIHRoYXQgdGhlIDpmdW5jOmBkaXN0cm8uaWRgIGZ1bmN0aW9uIHJldHVybnMgYSBkaWZmZXJlbnQKICAgIGRpc3RybyBJRCBmb3Igb25lIG9mIHRoZSBsaXN0ZWQgZGlzdHJvcywgcGxlYXNlIGNyZWF0ZSBhbiBpc3N1ZSBpbiB0aGUKICAgIGBkaXN0cm8gaXNzdWUgdHJhY2tlcmBfLgoKICAgICoqTG9va3VwIGhpZXJhcmNoeSBhbmQgdHJhbnNmb3JtYXRpb25zOioqCgogICAgRmlyc3QsIHRoZSBJRCBpcyBvYnRhaW5lZCBmcm9tIHRoZSBmb2xsb3dpbmcgc291cmNlcywgaW4gdGhlIHNwZWNpZmllZAogICAgb3JkZXIuIFRoZSBmaXJzdCBhdmFpbGFibGUgYW5kIG5vbi1lbXB0eSB2YWx1ZSBpcyB1c2VkOgoKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiSUQiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAoKICAgICogdGhlIHZhbHVlIG9mIHRoZSAiRGlzdHJpYnV0b3IgSUQiIGF0dHJpYnV0ZSByZXR1cm5lZCBieSB0aGUgbHNiX3JlbGVhc2UKICAgICAgY29tbWFuZCwKCiAgICAqIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsCgogICAgVGhlIHNvIGRldGVybWluZWQgSUQgdmFsdWUgdGhlbiBwYXNzZXMgdGhlIGZvbGxvd2luZyB0cmFuc2Zvcm1hdGlvbnMsCiAgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2Q6CgogICAgKiBpdCBpcyB0cmFuc2xhdGVkIHRvIGxvd2VyIGNhc2UsCgogICAgKiBibGFua3MgKHdoaWNoIHNob3VsZCBub3QgYmUgdGhlcmUgYW55d2F5KSBhcmUgdHJhbnNsYXRlZCB0byB1bmRlcnNjb3JlcywKCiAgICAqIGEgbm9ybWFsaXphdGlvbiBvZiB0aGUgSUQgaXMgcGVyZm9ybWVkLCBiYXNlZCB1cG9uCiAgICAgIGBub3JtYWxpemF0aW9uIHRhYmxlc2BfLiBUaGUgcHVycG9zZSBvZiB0aGlzIG5vcm1hbGl6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AAAAAAAAAAAAAAAAAAAAAAAAfAB8AaYCAACrAgAAAAAAAAAAUwApAWFOBwAACiAgICBSZXR1cm4gdGhlIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgT1MgZGlzdHJpYnV0aW9uLCBhcyBhIGh1bWFuLXJlYWRhYmxlCiAgICBzdHJpbmcuCgogICAgSWYgKnByZXR0eSogaXMgZmFsc2UsIHRoZSB2ZXJzaW9uIGlzIHJldHVybmVkIHdpdGhvdXQgY29kZW5hbWUgKGUuZy4KICAgICI3LjAiKS4KCiAgICBJZiAqcHJldHR5KiBpcyB0cnVlLCB0aGUgY29kZW5hbWUgaW4gcGFyZW50aGVzaXMgaXMgYXBwZW5kZWQsIGlmIHRoZQogICAgY29kZW5hbWUgaXMgbm9uLWVtcHR5IChlLmcuICI3LjAgKE1haXBvKSIpLgoKICAgIFNvbWUgZGlzdHJpYnV0aW9ucyBwcm92aWRlIHZlcnNpb24gbnVtYmVycyB3aXRoIGRpZmZlcmVudCBwcmVjaXNpb25zIGluCiAgICB0aGUgZGlmZmVyZW50IHNvdXJjZXMgb2YgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLiBFeGFtaW5pbmcgdGhlIGRpZmZlcmVudAogICAgc291cmNlcyBpbiBhIGZpeGVkIHByaW9yaXR5IG9yZGVyIGRvZXMgbm90IGFsd2F5cyB5aWVsZCB0aGUgbW9zdCBwcmVjaXNlCiAgICB2ZXJzaW9uIChlLmcuIGZvciBEZWJpYW4gOC4yLCBvciBDZW50T1MgNy4xKS4KCiAgICBTb21lIG90aGVyIGRpc3RyaWJ1dGlvbnMgbWF5IG5vdCBwcm92aWRlIHRoaXMga2luZCBvZiBpbmZvcm1hdGlvbi4gSW4gdGhlc2UKICAgIGNhc2VzLCBhbiBlbXB0eSBzdHJpbmcgd291bGQgYmUgcmV0dXJuZWQuIFRoaXMgYmVoYXZpb3IgY2FuIGJlIG9ic2VydmVkCiAgICB3aXRoIHJvbGxpbmcgcmVsZWFzZXMgZGlzdHJpYnV0aW9ucyAoZS5nLiBBcmNoIExpbnV4KS4KCiAgICBUaGUgKmJlc3QqIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBhcHByb2FjaCBmb3IgdGhlIHJldHVybmVkCiAgICB2ZXJzaW9uOgoKICAgIElmICpiZXN0KiBpcyBmYWxzZSwgdGhlIGZpcnN0IG5vbi1lbXB0eSB2ZXJzaW9uIG51bWJlciBpbiBwcmlvcml0eSBvcmRlciBvZgogICAgdGhlIGV4YW1pbmVkIHNvdXJjZXMgaXMgcmV0dXJuZWQuCgogICAgSWYgKmJlc3QqIGlzIHRydWUsIHRoZSBtb3N0IHByZWNpc2UgdmVyc2lvbiBudW1iZXIgb3V0IG9mIGFsbCBleGFtaW5lZAogICAgc291cmNlcyBpcyByZXR1cm5lZC4KCiAgICAqKkxvb2t1cCBoaWVyYXJjaHk6KioKCiAgICBJbiBhbGwgY2FzZXMsIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBvYnRhaW5lZCBmcm9tIHRoZSBmb2xsb3dpbmcgc291cmNlcy4KICAgIElmICpiZXN0KiBpcyBmYWxzZSwgdGhpcyBvcmRlciByZXByZXNlbnRzIHRoZSBwcmlvcml0eSBvcmRlcjoKCiAgICAqIHRoZSB2YWx1ZSBvZiB0aGUgIlZFUlNJT05fSUQiIGF0dHJpYnV0ZSBvZiB0aGUgb3MtcmVsZWFzZSBmaWxlLAogICAgKiB0aGUgdmFsdWUgb2YgdGhlICJSZWxlYXNlIiBhdHRyaWJ1dGUgcmV0dXJuZWQgYnkgdGhlIGxzYl9yZWxlYXNlCiAgICAgIGNvbW1hbmQsCiAgICAqIHRoZSB2ZXJzaW9uIG51bWJlciBwYXJzZWQgZnJvbSB0aGUgIjx2ZXJzaW9uX2lkPiIgZmllbGQgb2YgdGhlIGZpcnN0IGxpbmUKICAgICAgb2YgdGhlIGRpc3RybyByZWxlYXNlIGZpbGUsCiAgICAqIHRoZSB2ZXJzaW9uIG51bWJlciBwYXJzZWQgZnJvbSB0aGUgIlBSRVRUWV9OQU1FIiBhdHRyaWJ1dGUgb2YgdGhlCiAgICAgIG9zLXJlbGVhc2UgZmlsZSwgaWYgaXQgZm9sbG93cyB0aGUgZm9ybWF0IG9mIHRoZSBkaXN0cm8gcmVsZWFzZSBmaWxlcy4KICAgICogdGhlIHZlcnNpb24gbnVtYmVyIHBhcnNlZCBmcm9tIHRoZSAiRGVzY3JpcHRpb24iIGF0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ICAgICAgQW4gZW1wdHkgc3RyaW5nICh0aGUgZGVmYXVsdCkgd2lsbCBjYXVzZSB0aGUgZGVmYXVsdCBwYXRoIG5hbWUgdG8KICAgICAgICAgIGJlIHVzZWQgKHNlZSBgb3MtcmVsZWFzZSBmaWxlYF8gZm9yIGRldGFpbHMpLgoKICAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgb3IgZGVmYXVsdGVkIG9zLXJlbGVhc2UgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlCiAgICAgICAgICBkYXRhIHNvdXJjZSBmb3IgdGhlIG9zLXJlbGVhc2UgZmlsZSB3aWxsIGJlIGVtcHR5LgoKICAgICAgICAqIGBgZGlzdHJvX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYGRpc3RybyByZWxlYXNlIGZpbGVgXyB0aGF0IGlzIHRvIGJlIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgICBBbiBlbXB0eSBzdHJpbmcgKHRoZSBkZWZhdWx0KSB3aWxsIGNhdXNlIGEgZGVmYXVsdCBzZWFyY2ggYWxnb3JpdGhtCiAgICAgICAgICB0byBiZSB1c2VkIChzZWUgYGRpc3RybyByZWxlYXNlIGZpbGVgXyBmb3IgZGV0YWlscykuCgogICAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBkaXN0cm8gcmVsZWFzZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBubyBkZWZhdWx0CiAgICAgICAgICBkaXN0cm8gcmVsZWFzZSBmaWxlIGNhbiBiZSBmb3VuZCwgdGhlIGRhdGEgc291cmNlIGZvciB0aGUgZGlzdHJvCiAgICAgICAgICByZWxlYXNlIGZpbGUgd2lsbCBiZSBlbXB0eS4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IENvbnRyb2xzIHdoZXRoZXIgdW5hbWUgY29tbWFuZCBvdXRwdXQgaXMKICAgICAgICAgIGluY2x1ZGVkIGFzIGEgZGF0YSBzb3VyY2UuIElmIHRoZSB1bmFtZSBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUgaW4KICAgICAgICAgIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiBwYXRoIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHVuYW1lIGNvbW1hbmQgd2lsbAogICAgICAgICAgYmUgZW1wdHkuCgogICAgICAgICogYGByb290X2RpcmBgIChzdHJpbmcpOiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gdXNlCiAgICAgICAgICB0byBmaW5kIGRpc3Ryby1yZWxhdGVkIGluZm9ybWF0aW9uIGZpbGVzLiBOb3RlIHRoYXQgYGBpbmNsdWRlXypgYAogICAgICAgICAgcGFyYW1ldGVycyBtdXN0IG5vdCBiZSBlbmFibGVkIGluIGNvbWJpbmF0aW9uIHdpdGggYGByb290X2RpcmBgLgoKICAgICAgICAqIGBgaW5jbHVkZV9vc2xldmVsYGAgKGJvb2wpOiBDb250cm9scyB3aGV0aGVyIChBSVgpIG9zbGV2ZWwgY29tbWFuZAogICAgICAgICAgb3V0cHV0IGlzIGluY2x1ZGVkIGFzIGEgZGF0YSBzb3VyY2UuIElmIHRoZSBvc2xldmVsIGNvbW1hbmQgaXMgbm90CiAgICAgICAgICBhdmFpbGFibGUgaW4gdGhlIHByb2dyYW0gZXhlY3V0aW9uIHBhdGggdGhlIGRhdGEgc291cmNlIHdpbGwgYmUKICAgICAgICAgIGVtcHR5LgoKICAgICAgICBQdWJsaWMgaW5zdGFuY2UgYXR0cmlidXRlczoKCiAgICAgICAgKiBgYG9zX3JlbGVhc2VfZmlsZWBgIChzdHJpbmcpOiBUaGUgcGF0aCBuYW1lIG9mIHRoZQogICAgICAgICAgYG9zLXJlbGVhc2UgZmlsZWBfIHRoYXQgaXMgYWN0dWFsbHkgdXNlZCBhcyBhIGRhdGEgc291cmNlLiBUaGUKICAgICAgICAgIGVtcHR5IHN0cmluZyBpZiBubyBkaXN0cm8gcmVsZWFzZSBmaWxlIGlzIHVzZWQgYXMgYSBkYXRhIHNvdXJjZS4KCiAgICAgICAgKiBgYGRpc3Ryb19yZWxlYXNlX2ZpbGVgYCAoc3RyaW5nKTogVGhlIHBhdGggbmFtZSBvZiB0aGUKICAgICAgICAgIGBkaXN0cm8gcmVsZWFzZSBmaWxlYF8gdGhhdCBpcyBhY3R1YWxseSB1c2VkIGFzIGEgZGF0YSBzb3VyY2UuIFRoZQogICAgICAgICAgZW1wdHkgc3RyaW5nIGlmIG5vIGRpc3RybyByZWxlYXNlIGZpbGUgaXMgdXNlZCBhcyBhIGRhdGEgc291cmNlLgoKICAgICAgICAqIGBgaW5jbHVkZV9sc2JgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV9sc2JgYCBwYXJhbWV0ZXIuCiAgICAgICAgICBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGxzYiBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvYWRlZC4KCiAgICAgICAgKiBgYGluY2x1ZGVfdW5hbWVgYCAoYm9vbCk6IFRoZSByZXN1bHQgb2YgdGhlIGBgaW5jbHVkZV91bmFtZWBgCiAgICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgY29udHJvbHMgd2hldGhlciB0aGUgdW5hbWUgaW5mb3JtYXRpb24gd2lsbAogICAgICAgICAgYmUgbG9hZGVkLgoKICAgICAgICAqIGBgaW5jbHVkZV9vc2xldmVsYGAgKGJvb2wpOiBUaGUgcmVzdWx0IG9mIHRoZSBgYGluY2x1ZGVfb3NsZXZlbGBgCiAgICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgY29udHJvbHMgd2hldGhlciAoQUlYKSBvc2xldmVsIGluZm9ybWF0aW9uIHdpbGwgYmUKICAgICAgICAgIGxvYWRlZC4KCiAgICAgICAgKiBgYHJvb3RfZGlyYGAgKHN0cmluZyk6IFRoZSByZXN1bHQgb2YgdGhlIGBgcm9vdF9kaXJgYCBwYXJhbWV0ZXIuCiAgICAgICAgICBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gdXNlIHRvIGZpbmQgZGlzdHJvLXJlbGF0ZWQKICAgICAgICAgIGluZm9ybWF0aW9uIGZpbGVzLgoKICAgICAgICBSYWlzZXM6CgogICAgICAgICogOnB5OmV4YzpgVmFsdWVFcnJvcmA6IEluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgY29tYmluYXRpb24gaXMgbm90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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-311.pyc
56.50 KB
lrw-r--r--
2026-04-14 09:45:18
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-311.pyc
1.20 KB
lrw-r--r--
2026-04-14 09:45:18
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__main__.cpython-311.pyc
365 B
lrw-r--r--
2026-04-14 09:45:18
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).