REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 93.44 KB
Close
/usr/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc
Text
Base64
Mw0NCsQbdmiOlQEA4wAAAAAAAAAAAAAAAF4AAABAAAAAc0wIAABkAFoAZAFkAmwBbQJaAgEAZAFkA2wDWgNkAWQDbARaBGQBZANsBVoFZAFkA2wGWgZkAWQDbAdaB2QBZANsCFoIZAFkA2wJWglkAWQDbApaCmQBZANsC1oLZAFkA2wMWgxkAWQDbA1aDWQBZANsDloOZAFkA2wPWg9kAWQDbBBaEGQBZANsEVoRZAFkA2wSWhJkAWQDbBNaFGQBZANsFVoVZAFkA2wWWhZkAWQDbBdaF2QBZANsGFoYZAFkA2wZWhlkAWQEbA5tGloaAQB5DGQBZANsG1obVwBuHAQAZRxrCnL0AQABAAEAZAFkA2wdWhtZAG4CWABkAWQFbB5tH1ofAQBkAWQGbCBtIVohbSJaIm0jWiMBAGQBZAdsBG0kWiQBAHkcZAFkCGwEbSVaJW0mWiZtJ1onAQBkCVooVwBuGgQAZRxrCpABclgBAAEAAQBkClooWQBuAlgAZAFkC2wEbSlaKgEAZAFkDGwrbSxaLG0tWi0BAHkUZAFkA2wuai9aMGUwajEBAFcAbhoEAGUcawqQAXKkAQABAAEAZANaMFkAbgJYAGQNZA5sMm0zWjMBAGQBZA9sHm00WjQBAGQBZBBsHm01WjUBAGU2ZBGDAQEAZTZkEoMBAQBlNmQTgwEBAGU2ZBSDAQEAZPhlA2o3BAADAGsAkAJvAGT5awBuBAIAAQCQAnIQZThkFoMBggFlH2o5kAJyIGQDWjpkA1o7ZANaPGQDWj1kA1o+ZANaP2QDWkBkA1pBZANaQmQDWkNkA1pEZANaRWQDWkZkA1pHZANaSGQDWklkA1pKZANaS2QDWkxHAGQXZBiEAGQYZU2DA1pOZBlkGoQAWk9pAFpQZBtkHIQAWlFkHWQehABaUmQfZCCEAFpTZCFkIoQAWlRkI2QkhABaVWQlZCaEAFpWZCdkKIQAWldkKWQqhAAEAFpYWllkK2QshABaWmQtZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2RIZElkSmRLZExkGGRNZBpkTmRPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxkXWReZF9kYGRhZGJkY2RkZGVkZmRnZGhkaWRqZGtkbGRtZG5kb2RwZ0ZaW0cAZHFkSIQAZEhlXIMDWl1HAGRyZEmEAGRJZV2DA1peRwBkc2R0hABkdGVegwNaX0cAZHVkSoQAZEplXYMDWmBHAGR2ZEuEAGRLZV2DA1phaQBaYmUDamNkA2QVhQIZAFpkZBVaZWR3WmZkDVpnZAFaaGT6WmlkeGRshABaamR5ZC+EAFprZwBmAWR6ZHuEAVpsZHxkfYQAWm1kfmR/hABabmUHam9kgIMBWnBlB2pvZIGDAVpxZW5acmSCZFGEAFpzZINkLoQAWnRldFp1ZIRkMIQAWnZkhWQxhABad2T7ZIZkMoQBWnhkh2QzhABaeUcAZIhkX4QAZF+DAlp6RwBkiWRghABkYGV6gwNae0cAZIpkQ4QAZENlfIMDWn1HAGSLZIyEAGSMZX6DA1p/RwBkjWRChABkQmV8gwNagGWAWoFHAGSOZEyEAGRMZTiDA1qCRwBkj2REhABkRIMCWoNkkGRBhABahGSRZE6EAFqFZJJkT4QAWoZkk2RUhABah2SUZFWEAFqIZJVkVoQAWolk/GSWZFeEAVqKRwBkl2RmhABkZoMCWotlamV8ZYuDAgEARwBkmGRnhABkZ2WLgwNajEcAZJlkaIQAZGhljIMDWo1ljWqOgwABAEcAZJpkZIQAZGRli4MDWo9lj4MAWpBHAGSbZJyEAGScZX6DA1qRRwBknWSehABknmWRgwNakkcAZJ9kaYQAZGlljIMDWpNlamUKapRlk4MCAQBHAGSgZGGEAGRhZY+DA1qVRwBkoWRihABkYmWNgwNalkcAZKJkY4QAZGNlk4MDWpdlUWSjaQBkpI0CAQBkpWRqhABamGT9ZKZkPoQBWplk/mSnZKiEAVqaZZhlCmqUZZqDAgEAZP9kqWSqhAFam2WYZXxlm4MCAQBkq2SshABanJABZABkrWSuhAFanWSvZLCEAFqeRwBksWSyhABksoMCWp9ks2S0hABaoGS1ZLaEAFqhZLdkuIQAWqJkuWS6hABao2WYZQ5qpGWdgwIBAGWlZTBku4MCkAZybmWYZTBqpmWdgwIBAGVRZKNpAGS8jQIBAGVRZKNpAGS9jQIBAGS+ZGuEAFqnZL9kwIQAWqhkwWTChABaqWTDZDuEAFqqkAFkAWTEZG2EAVqrZMVkxoQAWqxlp2UOaqRlrIMCAQBlp2UKapRlrIMCAQBlpWUwZLuDApAGcuplp2UwaqZlrIMCAQBkx2TIhABarWWnZXxlrYMCAQBkyWRZhABarmkAZgFkymTLhAFar2TMZM2EAFqwZM5kz4QAWrFk0GTRhABasmTSZFKEAFqzZQdqb2TTgwFqtFq1ZQdqb2TUZQdqtmUHardCAIMCarRauEcAZNVkR4QAZEdlfIMDWrlk1mTXhABaumTYZNmEAFq7RwBk2mRFhABkRWV8gwNavEcAZNtk3IQAZNxlvIMDWr1HAGTdZN6EAGTeZbyDA1q+ZbxlvWW+ZN+cA1q/ZOBk4YQAWsBHAGTiZOOEAGTjZcGDA1rCZORkTYQAWsNHAGTlZEaEAGRGZTVqxGrFgwNaxWTmZOeEAFrGZOhk6YQAWsdk6mRYhABayGTrZOyEAFrJZO1kU4QAWspk7mTvhABay2ULasxk8GVOZAlk8Y0DAQBk8mTzhABazWXNZc6DAGYBZPRk9YQBgwFaz2XNZPZk94QAgwFa0GQDUwAoAgEAAGFaAgAAClBhY2thZ2UgcmVzb3VyY2UgQVBJCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIHJlc291cmNlIGlzIGEgbG9naWNhbCBmaWxlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlLCBvciBhIGxvZ2ljYWwKc3ViZGlyZWN0b3J5IHRoZXJlb2YuICBUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgZXhwZWN0cyByZXNvdXJjZSBuYW1lcwp0byBoYXZlIHRoZWlyIHBhdGggcGFydHMgc2VwYXJhdGVkIHdpdGggYGAvYGAsICpub3QqIHdoYXRldmVyIHRoZSBsb2NhbApwYXRoIHNlcGFyYXRvciBpcy4gIERvIG5vdCB1c2Ugb3MucGF0aCBvcGVyYXRpb25zIHRvIG1hbmlwdWxhdGUgcmVzb3VyY2UKbmFtZXMgYmVpbmcgcGFzc2VkIGludG8gdGhlIEFQSS4KClRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggbm9ybWFsIGZpbGVzeXN0ZW0gcGFja2FnZXMsCi5lZ2cgZmlsZXMsIGFuZCB1bnBhY2tlZCAuZWdnIGZpbGVzLiAgSXQgY2FuIGFsc28gd29yayBpbiBhIGxpbWl0ZWQgd2F5IHdpdGgKLnppcCBmaWxlcyBhbmQgd2l0aCBjdXN0b20gUEVQIDMwMiBsb2FkZXJzIHRoYXQgc3VwcG9ydCB0aGUgYGBnZXRfZGF0YSgpYGAKbWV0aG9kLgrpAAAAACkB2g9hYnNvbHV0ZV9pbXBvcnROKQHaDGdldF9pbXBvcnRlcikB2gNzaXgpA9oGdXJsbGli2gNtYXDaBmZpbHRlcikB2gV1dGltZSkD2gVta2RpctoGcmVuYW1l2gZ1bmxpbmtURikB2gRvcGVuKQLaBWlzZGly2gVzcGxpdOkBAAAAKQHaCnB5MzFjb21wYXQpAdoHYXBwZGlycykB2glwYWNrYWdpbmd6JnBrZ19yZXNvdXJjZXMuZXh0ZXJuLnBhY2thZ2luZy52ZXJzaW9ueilwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcuc3BlY2lmaWVyc3orcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLnJlcXVpcmVtZW50c3omcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLm1hcmtlcnPpAwAAAHofUHl0aG9uIDMuMyBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g1QRVA0NDBXYXJuaW5nemEKICAgIFVzZWQgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIGEgdmVyc2lvbiBvciBzcGVjaWZpZXIgbm90IGNvbXBseWluZyB3aXRoCiAgICBQRVAgNDQwLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByGQAAAHIZAAAA+h4vdXNyL2xpYi9weXRob24zLjYvX19pbml0X18ucHlyFAAAAG4AAABzAgAAAAgEchQAAABjAQAAAAAAAAABAAAACwAAAEMAAABzMgAAAHkMdABqAWoCfACDAVMABAB0AGoBagNrCnIsAQABAAEAdABqAWoEfACDAVMAWABkAFMAKQFOKQVyEgAAANoHdmVyc2lvbtoHVmVyc2lvbtoOSW52YWxpZFZlcnNpb27aDUxlZ2FjeVZlcnNpb24pAdoBdnIZAAAAchkAAAByGgAAANoNcGFyc2VfdmVyc2lvbnUAAABz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Y29yZGluZ2x5LgogICAgTtoGZGFyd2luegxtYWNvc3gtJXMtJXPaAS7pAgAAAHITAAAAKQnaEmdldF9idWlsZF9wbGF0Zm9ybdoSbWFjb3NWZXJzaW9uU3RyaW5n2gVtYXRjaNoDc3lz2ghwbGF0Zm9ybdoEam9pbtoMX21hY29zeF92ZXJz2gVncm91cNoKVmFsdWVFcnJvcikC2gRwbGF02gFtchkAAAByGQAAAHIaAAAA2hZnZXRfc3VwcG9ydGVkX3BsYXRmb3JtpwAAAHMQAAAAAA0GAQoBEgECASYBDgIGAXJHAAAA2gdyZXF1aXJl2gpydW5fc2NyaXB02gxnZXRfcHJvdmlkZXLaEGdldF9kaXN0cmlidXRpb27aEGxvYWRfZW50cnlfcG9pbnTaDWdldF9lbnRyeV9tYXDaDmdldF9lbnRyeV9pbmZv2hFpdGVyX2VudHJ5X3BvaW50c9oPcmVzb3VyY2Vfc3RyaW5n2g9yZXNvdXJjZV9zdHJlYW3aEXJlc291cmNlX2ZpbGVuYW1l2hByZXNvdXJjZV9saXN0ZGly2g9yZXNvdXJjZV9leGlzdHPaDnJlc291cmNlX2lzZGly2hFkZWNsYXJlX25hbWVzcGFjZdoLd29ya2luZ19zZXTaF2FkZF9hY3RpdmF0aW9uX2xpc3RlbmVy2hJmaW5kX2Rpc3RyaWJ1dGlvbnPaE3NldF9leHRyYWN0aW9uX3BhdGjaEWNsZWFudXBfcmVzb3VyY2Vz2hFnZXRfZGVmYXVsdF9jYWNoZdoLRW52aXJvbm1lbnTaCldvcmtpbmdTZXTaD1Jlc291cmNlTWFuYWdlctoMRGlzdHJpYnV0aW9u2gtSZXF1aXJlbWVudNoKRW50cnlQb2ludNoPUmVzb2x1dGlvbkVycm9y2g9WZXJzaW9uQ29uZmxpY3TaFERpc3RyaWJ1dGlvbk5vdEZvdW5k2gxVbmtub3duRXh0cmHaD0V4dHJhY3Rpb25FcnJvctoScGFyc2VfcmVxdWlyZW1lbnRz2glzYWZlX25hbWXaDHNhZmVfdmVyc2lvbtoMZ2V0X3BsYXRmb3Jt2hRjb21wYXRpYmxlX3BsYXRmb3Jtc9oLeWllbGRfbGluZXPaDnNwbGl0X3NlY3Rpb25z2gpzYWZlX2V4dHJh2gt0b19maWxlbmFtZdoOaW52YWxpZF9tYXJrZXLaD2V2YWx1YXRlX21hcmtlctoQZW5zdXJlX2RpcmVjdG9yedoObm9ybWFsaXplX3BhdGjaCEVHR19ESVNU2gtCSU5BUllfRElTVNoLU09VUkNFX0RJU1TaDUNIRUNLT1VUX0RJU1TaDERFVkVMT1BfRElTVNoRSU1ldGFkYXRhUHJvdmlkZXLaEUlSZXNvdXJjZVByb3ZpZGVy2gxGaWxlTWV0YWRhdGHaDFBhdGhNZXRhZGF0YdoLRWdnTWV0YWRhdGHaDUVtcHR5UHJvdmlkZXLaDmVtcHR5X3Byb3ZpZGVy2gxOdWxsUHJvdmlkZXLaC0VnZ1Byb3ZpZGVy2g9EZWZhdWx0UHJvdmlkZXLaC1ppcFByb3ZpZGVy2g9yZWdpc3Rlcl9maW5kZXLaGnJlZ2lzdGVyX25hbWVzcGFjZV9oYW5kbGVy2hRyZWdpc3Rlcl9sb2FkZXJfdHlwZdoYZml4dXBfbmFtZXNwYWNlX3BhY2thZ2VzcgMAAADaCHJ1bl9tYWlu2hZBdmFpbGFibGVEaXN0cmlidXRpb25zYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJjAAAAei5BYnN0cmFjdCBiYXNlIGZvciBkZXBlbmRlbmN5IHJlc29sdXRpb24gZXJyb3JzYwEAAAAAAAAAAQAAAAMAAABDAAAAcxIAAAB8AGoAagF0AnwAagODARcAUwApAU4pBNoJX19jbGFzc19fchUAAADaBHJlcHJyNwAAACkB2gRzZWxmchkAAAByGQAAAHIaAAAA2ghfX3JlcHJfX/EAAABzAgAAAAABehhSZXNvbHV0aW9uRXJyb3IuX19yZXByX19OKQVyFQAAAHIWAAAAchcAAAByGAAAAHKOAAAAchkAAAByGQAAAHIZAAAAchoAAAByYwAAAO4AAABzBAAAAAgBBAJjAAAAAAAAAAAAAAAAAwAAAEAAAABzPAAAAGUAWgFkAFoCZAFaA2QCWgRlBWQDZASEAIMBWgZlBWQFZAaEAIMBWgdkB2QIhABaCGQJZAqEAFoJZAtTACkMcmQAAAB6qgogICAgQW4gYWxyZWFkeS1pbnN0YWxsZWQgdmVyc2lvbiBjb25mbGljdHMgd2l0aCB0aGUgcmVxdWVz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AGoJagd8C2oIgwF9DHwMZAFrCHOUfAx8C2sHb5B8BJABcgB8AH0NfAJkAWsIcsR8DGQBawhytHQKfABqC4MBfQJuEHQKZwCDAX0CdAxnAIMBfQ18AmoNfAt8DXwDfARkBI0EBAB9DHwHfAtqCDwAfAxkAWsIkAFyAHwKagd8C2QBgwJ9DnQOfAt8DoMCggF8CGoPfAyDAQEAfAx8C2sHkAFyLHwKfAsZAH0PdBB8DHwLgwJqEXwPgwGCAXwMahJ8C2oTgwFkAWQBZAeFAxkAfRB8AWoUfBCDAQEAeCh8EEQAXSB9EXwKfBEZAGoVfAtqFoMBAQB8C2oTfAl8ETwAkAFxUlcAZAV8BnwLPABxMlcAfAhTACkIYc4EAABMaXN0IGFsbCBkaXN0cmlidXRpb25zIG5lZWRlZCB0byAocmVjdXJzaXZlbHkpIG1lZXQgYHJlcXVpcmVtZW50c2AKCiAgICAgICAgYHJlcXVpcmVtZW50c2AgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGBgUmVxdWlyZW1lbnRgYCBvYmplY3RzLiAgYGVudmAsCiAgICAgICAgaWYgc3VwcGxpZWQsIHNob3VsZCBiZSBhbiBgYEVudmlyb25tZW50YGAgaW5zdGFuY2UuICBJZgogICAgICAgIG5vdCBzdXBwbGllZCwgaXQgZGVmYXVsdHMgdG8gYWxsIGRpc3RyaWJ1dGlvbnMgYXZhaWxhYmxlIHdpdGhpbiBhbnkKICAgICAgICBlbnRyeSBvciBkaXN0cmlidXRpb24gaW4gdGhlIHdvcmtpbmcgc2V0LiAgYGluc3RhbGxlcmAsIGlmIHN1cHBsaWVkLAogICAgICAgIHdpbGwgYmUgaW52b2tlZCB3aXRoIGVhY2ggcmVxdWlyZW1lbnQgdGhhdCBjYW5ub3QgYmUgbWV0IGJ5IGFuCiAgICAgICAgYWxyZWFkeS1pbnN0YWxsZWQgZGlzdHJpYnV0aW9uOyBpdCBzaG91bGQgcmV0dXJuIGEgYGBEaXN0cmlidXRpb25gYCBvcgogICAgICAgIGBgTm9uZWBgLgoKICAgICAgICBVbmxlc3MgYHJlcGxhY2VfY29uZmxpY3Rpbmc9VHJ1ZWAsIHJhaXNlcyBhIFZlcnNpb25Db25mbGljdCBleGNlcHRpb24KICAgICAgICBpZgogICAgICAgIGFueSByZXF1aXJlbWVudHMgYXJlIGZvdW5kIG9uIHRoZSBwYXRoIHRoYXQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lIGJ1dAogICAgICAgIHRoZSB3cm9uZyB2ZXJzaW9uLiAgT3RoZXJ3aXNlLCBpZiBhbiBgaW5zdGFsbGVyYCBpcyBzdXBwbGllZCBpdCB3aWxsIGJlCiAgICAgICAgaW52b2tlZCB0byBvYnRhaW4gdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgcmVxdWlyZW1lbnQgYW5kIGFjdGl2YXRlCiAgICAgICAgaXQuCgogICAgICAgIGBleHRyYXNgIGlzIGEgbGlzdCBvZiB0aGUgZXh0cmFzIHRvIGJlIHVzZWQgd2l0aCB0aGVzZSByZXF1aXJlbWVudHMuCiAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBleHRyYSByZXF1aXJlbWVudHMgbWF5IGxvb2sgbGlrZSBgbXlfcmVxOwogICAgICAgIGV4dHJhID0gIm15X2V4dHJhImAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBiZSBpbnRlcnByZXRlZCBhcyBhIHB1cmVseQogICAgICAgIG9wdGlvbmFsIHJlcXVpcmVtZW50LiAgSW5zdGVhZCwgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGFzc2VydCB0aGF0IHRoZXNlCiAgICAgICAgcmVxdWlyZW1lbnRzIGFyZSB0cnVseSByZXF1aXJlZC4KICAgICAgICBOcg8AAAByAQAAACkB2hNyZXBsYWNlX2NvbmZsaWN0aW5nVOn/////cvMAAAApF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcrEAAAByMgAAAHLVAAAAcl0AAABy0wAAAHJeAAAA2gpiZXN0X21hdGNocmUAAAByrwAAAHJkAAAAcpcAAABy6QAAANoGZXh0cmFz2gZleHRlbmRy4gAAANoMcHJvamVjdF9uYW1lKRJyjQAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnLyAAAAcvwAAABaCXByb2Nlc3NlZFoEYmVzdFoLdG9fYWN0aXZhdGVaCnJlcV9leHRyYXNylgAAAHKQAAAAco8AAABy3wAAAHKZAAAAWg1kZXBlbmRlbnRfcmVxWhBuZXdfcmVxdWlyZW1lbnRzWg9uZXdfcmVxdWlyZW1lbnRyGQAAAHIZAAAAchoAAABy4QAAAL8CAABzTgAAAAAbEgIEAgQBBAIGBAoCCgIKAQgCAgIMAQICDAEKAg4BFgEEAQgBCAEMBQgBCAEEAQYBEgIKAQwBCgEKAQoCCAEQAxYBCgMKARABEAIMA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAADwAAABIAAABDAAAAcwIBAAB0AHwBgwF9BXwFagGDAAEAaQB9BmkAfQd8AmQBawhyNHQCfABqA4MBfQh8CHwBNwB9CG4IfAJ8ARcAfQh8AGoEZwCDAX0JdAB0BXwJagZ8AIMCgwEBAHiSfAVEAF2KfQp4hHwBfAoZAEQAXXh9C3wLageDAGcBfQx5EnwJagh8DHwIfAODA30NVwBuNAQAdAlrCnK+AQB9DgEAehh8DnwGfAs8AHwEcqx3am4CUABXAFkAZAFkAX0Ofg5YAHFqWAB0AHQFfAlqBnwNgwKDAQEAfAdqCnQLagx8DYMBgwEBAFAAcWpXAHFcVwB0AHwHgwF9B3wHagGDAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXL0AAAA2gRzb3J0cl0AAABy0wAAAHKLAAAAcgYAAABy4gAAANoOYXNfcmVxdWlyZW1lbnRy4QAAAHJjAAAAciIAAAByJAAAAHIlAAAAKQ9yjQAAAFoKcGx1Z2luX2VudloIZnVsbF9lbnZyAQEAAFoIZmFsbGJhY2taD3BsdWdpbl9wcm9qZWN0c1oKZXJyb3JfaW5mb1oNZGlzdHJpYnV0aW9uc3IAAQAAWgpzaGFkb3dfc2V0cv4AAAByjwAAAHKQAAAAWglyZXNvbHZlZXNyHwAAAHIZAAAAchkAAAByGgAAANoMZmluZF9wbHVnaW5zGwMAAHM0AAAAACQIAggCBAEEAggBCgEKAggCCgIQAgoCDgIKAgIBEgIQAggBBAIEAxQDEAEQAwoCCAEIAnoXV29ya2luZ1NldC5maW5kX3BsdWdpbnNjAQAAAAAAAAAEAAAAAwAAAEcAAABzKgAAAHwAagB0AXwBgwGDAX0CeBZ8AkQAXQ59A3wAagJ8A4MBAQBxFFcAfAJTACkBYb4BAABFbnN1cmUgdGhhdCBkaXN0cmlidXRpb25zIG1hdGNoaW5nIGByZXF1aXJlbWVudHNgIGFyZSBhY3RpdmF0ZWQKCiAgICAgICAgYHJlcXVpcmVtZW50c2AgbXVzdCBiZSBhIHN0cmluZyBvciBhIChwb3NzaWJseS1uZXN0ZWQpIHNl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BAB0BmsKckwBAAEAAQB8AGoHgwABAFkAbgJYAHwAagh8A4MBAQBkAnwAagl8BDwAfARTACkDYa4CAABSZXR1cm4gYWJzb2x1dGUgbG9jYXRpb24gaW4gY2FjaGUgZm9yIGBhcmNoaXZlX25hbWVgIGFuZCBgbmFtZXNgCgogICAgICAgIFRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcwogICAgICAgIG5vdCBhbHJlYWR5IGV4aXN0LiAgYGFyY2hpdmVfbmFtZWAgc2hvdWxkIGJlIHRoZSBiYXNlIGZpbGVuYW1lIG9mIHRoZQogICAgICAgIGVuY2xvc2luZyBlZ2cgKHdoaWNoIG1heSBub3QgYmUgdGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyB6aXBmaWxlISksCiAgICAgICAgaW5jbHVkaW5nIGl0cyAiLmVnZyIgZXh0ZW5zaW9uLiAgYG5hbWVzYCwgaWYgcHJvdmlkZWQsIHNob3VsZCBiZSBhCiAgICAgICAgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lIHBhcnRzICJ1bmRlciIgdGhlIGVnZydzIGV4dHJhY3Rpb24gbG9jYXRpb24uCgogICAgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSByZXNvdXJjZSBwcm92aWRlcnMgdGhhdCBuZWVkIHRvCiAgICAgICAgb2J0YWluIGFuIGV4dHJhY3Rpb24gbG9jYXRpb24sIGFuZCBvbmx5IGZvciBuYW1lcyB0aGV5IGludGVuZCB0bwogICAgICAgIGV4dHJhY3QsIGFzIGl0IHRyYWNrcyB0aGUgZ2VuZXJhdGVkIG5hbWVzIGZvciBwb3NzaWJsZSBjbGVhbnVwIGxhdGVyLgogICAgICAgIHoELXRtcHIPAAAAKQpyJgEAAHJcAAAAcqoAAAByqwAAAHJBAAAA2hhfYnlwYXNzX2Vuc3VyZV9kaXJlY3RvcnnaCUV4Y2VwdGlvbnIuAQAA2hxfd2Fybl91bnNhZmVfZXh0cmFjdGlvbl9wYXRociMBAAApBXKNAAAAWgxhcmNoaXZlX25hbWXaBW5hbWVzWgxleHRyYWN0X3BhdGhaC3RhcmdldF9wYXRochkAAAByGQAAAHIaAAAA2g5nZXRfY2FjaGVfcGF0aJ4EAABzEgAAAAANDAEYAQIBDAEOAQ4CCgIKAXoeUmVzb3VyY2VNYW5hZ2VyLmdldF9jYWNoZV9wYXRoYwEAAAAAAAAAAwAAAAMAAABDAAAAc1gAAAB0AGoBZAFrAnIgfABqAnQAagNkAhkAgwEMAHIgZANTAHQAagR8AIMBagV9AXwBdARqBkAAc0B8AXQEagdAAHJUZAR8ABYAfQJ0CGoJfAJ0CoMCAQBkA1MAKQVhTgEAAAogICAgICAgIElmIHRoZSBkZWZhdWx0IGV4dHJhY3Rpb24gcGF0aCBpcyBvdmVycmlkZGVuIGFuZCBzZXQgdG8gYW4gaW5zZWN1cmUKICAgICAgICBsb2NhdGlvbiwgc3VjaCBhcyAvdG1wLCBpdCBvcGVucyB1cCBhbiBvcHBvcnR1bml0eSBmb3IgYW4gYXR0YWNrZXIgdG8KICAgICAgICByZXBsYWNlIGFuIGV4dHJhY3RlZCBmaWxlIHdpdGggYW4gdW5hdXRob3JpemVkIHBheWxvYWQuIFdhcm4gdGhlIHVzZXIKICAgICAgICBpZiBhIGtub3duIGluc2VjdXJlIGxvY2F0aW9uIGlzIHVzZWQuCgogICAgICAgIFNlZSBEaXN0cmlidXRlICMzNzUgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICDaAm50WgZ3aW5kaXJOesslcyBpcyB3cml0YWJsZSBieSBncm91cC9vdGhlcnMgYW5kIHZ1bG5lcmFibGUgdG8gYXR0YWNrIHdoZW4gdXNlZCB3aXRoIGdldF9yZXNvdXJjZV9maWxlbmFtZS4gQ29uc2lkZXIgYSBtb3JlIHNlY3VyZSBsb2NhdGlvbiAoc2V0IHdpdGggLnNldF9leHRyYWN0aW9uX3BhdGggb3IgdGhlIFBZVEhPTl9FR0dfQ0FDSEUgZW52aXJvbm1lbnQgdmFyaWFibGUpLikLcqoAAABywwAAAHK4AAAA2gdlbnZpcm9u2gRzdGF02gdzdF9tb2Rl2gdTX0lXT1RI2gdTX0lXR1JQ2gh3YXJuaW5nc9oEd2FybtoLVXNlcldhcm5pbmcpA3KrAAAA2gRtb2Rl2gNtc2dyGQAAAHIZAAAAchoAAAByMQEAALcEAABzDgAAAAAKHAQEAQwBFAICBAYCeixSZXNvdXJjZU1hbmFnZXIuX3dhcm5fdW5zYWZlX2V4dHJhY3Rpb25fcGF0aGMDAAAAAAAAAAQAAAADAAAAQwAAAHMuAAAAdABqAWQBawJyKnQAagJ8AYMBagNkAkIAZANAAH0DdABqBHwBfAODAgEAZARTACkFYTQCAABQZXJmb3JtIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3N0cHJvY2Vzc2luZyBvZiBgdGVtcG5hbWVgCgogICAgICAgIFRoaXMgaXMgd2hlcmUgTWFjIGhlYWRlciByZXdyaXRlcyBzaG91bGQgYmUgZG9uZTsgb3RoZXIgcGxhdGZvcm1zIGRvbid0CiAgICAgICAgaGF2ZSBhbnl0aGluZyBzcGVjaWFsIHRoZXkgc2hvdWxkIGRvLgoKICAgICAgICBSZXNvdXJjZSBwcm92aWRlcnMgc2hvdWxkIGNhbGwgdGhpcyBtZXRob2QgT05MWSBhZnRlciBzdWNjZXNzZnVsbHkKICAgICAgICBleHRyYWN0aW5nIGEgY29tcHJlc3NlZCByZXNvdXJjZS4gIFRoZXkgbXVzdCBOT1QgY2FsbCBpdCBvbiByZXNvdXJjZXMKICAgICAgICB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmaWxlc3lzdGVtLgoKICAgICAgICBgdGVtcG5hbWVgIGlzIHRoZSBjdXJyZW50ICh0ZW1wb3JhcnkpIG5hbWUgb2YgdGhlIGZpbGUsIGFuZCBgZmlsZW5hbWVgCiAgICAgICAgaXMgdGhlIG5hbWUgaXQgd2lsbCBiZSByZW5hbWVkIHRvIGJ5IHRoZSBjYWxsZXIgYWZ0ZXIgdGhpcyByb3V0aW5lCiAgICAgICAgcmV0dXJucy4KICAgICAgICDaBXBvc2l4aW0BAABp/w8AAE4pBXKqAAAAcsMAAAByNgEAAHI3AQAA2gVjaG1vZCkEco0AAABaCHRlbXBuYW1l2ghmaWxlbmFtZXI9AQAAchkAAAByGQAAAHIaAAAA2gtwb3N0cHJvY2Vzc9EEAABzBgAAAAAPCgIUAXobUmVzb3VyY2VNYW5hZ2VyLnBvc3Rwcm9jZXNzYwIAAAAAAAAAAgAAAAIAAABDAAAAcxgAAAB8AGoAcg50AWQBgwGCAXwBfABfAmQCUwApA2HSAwAAU2V0IHRoZSBiYXNlIHBhdGggd2hlcmUgcmVzb3VyY2VzIHdpbGwgYmUgZXh0cmFjdGVkIHRvLCBpZiBuZWVkZWQuCgogICAgICAgIElmIHlvdSBkbyBub3QgY2FsbCB0aGlzIHJvdXRpbmUgYmVmb3JlIGFueSBleHRyYWN0aW9ucyB0YWtlIHBsYWNlLCB0aGUKICAgICAgICBwYXRoIGRlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGBnZXRfZGVmYXVsdF9jYWNoZSgpYGAuICAoV2hpY2gKICAgICAgICBpcyBiYXNlZCBvbiB0aGUgYGBQWVRIT05fRUdHX0NBQ0hFYGAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHdpdGggdmFyaW91cwogICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGZhbGxiYWNrcy4gIFNlZSB0aGF0IHJvdXRpbmUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlCiAgICAgICAgZGV0YWlscy4pCgogICAgICAgIFJlc291cmNlcyBhcmUgZXh0cmFjdGVkIHRvIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aCBiYXNlZCB1cG9uCiAgICAgICAgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgdGhlIGBgSVJlc291cmNlUHJvdmlkZXJgYC4gIFlvdSBtYXkgc2V0IHRoaXMgdG8gYQogICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnksIGJ1dCB0aGVuIHlvdSBtdXN0IGNhbGwgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgdG8KICAgICAgICBkZWxldGUgdGhlIGV4dHJhY3RlZCBmaWxlcyB3aGVuIGRvbmUuICBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgIHdpbGwgYmUgYWJsZSB0byByZW1vdmUgYWxsIGV4dHJhY3RlZCBmaWxlcy4KCiAgICAgICAgKE5vdGU6IHlvdSBtYXkgbm90IGNoYW5nZSB0aGUgZXh0cmFjdGlvbiBwYXRoIGZvciBhIGdpdmVuIHJlc291cmNlCiAgICAgICAgbWFuYWdlciBvbmNlIHJlc291cmNlcyBoYXZlIGJlZW4gZXh0cmFjdGVkLCB1bmxlc3MgeW91IGZpcnN0IGNhbGwKICAgICAgICBgYGNsZWFudXBfcmVzb3VyY2VzKClgYC4pCiAgICAgICAgejVDYW4ndCBjaGFuZ2UgZXh0cmFjdGlvbiBwYXRoLCBmaWxlcyBhbHJlYWR5IGV4dHJhY3RlZE4pA3IjAQAAckQAAAByJgEAACkCco0AAAByqwAAAHIZAAAAchkAAAByGgAAAHJaAAAA5QQAAHMIAAAAABMGAQIBBgN6I1Jlc291cmNlTWFuYWdlci5zZXRfZXh0cmFjdGlvbl9wYXRoRmMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCYUICAAAKICAgICAgICBEZWxldGUgYWxsIGV4dHJhY3RlZCByZXNvdXJjZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHJldHVybmluZyBhIGxpc3QKICAgICAgICBvZiB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY291bGQgbm90IGJlIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhbnkgY29uY3VycmVuY3kgcHJvdGVjdGlvbiwgc28gaXQgc2hvdWxkCiAgICAgICAgZ2VuZXJhbGx5IG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGV4dHJhY3Rpb24gcGF0aCBpcyBhIHRlbXBvcmFyeQogICAgICAgIGRpcmVjdG9yeSBleGNsdXNpdmUgdG8gYSBzaW5nbGUgcHJvY2Vzcy4gIFRoaXMgbWV0aG9kIGlzIG5vdAogICAgICAgIGF1dG9tYXRpY2FsbHkgY2FsbGVkOyB5b3UgbXVzdCBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgcmVnaXN0ZXIgaXQgYXMgYW4KICAgICAgICBgYGF0ZXhpdGBgIGZ1bmN0aW9uIGlmIHlvdSB3aXNoIHRvIGVuc3VyZSBjbGVhbnVwIG9mIGEgdGVtcG9yYXJ5CiAgICAgICAgZGlyZWN0b3J5IHVzZWQgZm9yIGV4dHJhY3Rpb25zLgogICAgICAgIE5yGQAAACkCco0AAADaBWZvcmNlchkA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ZAFaA2QCZAOEAFoEZARTACkFcn0AAABhcwIAAE1ldGFkYXRhIHByb3ZpZGVyIGZvciBlZ2cgZGlyZWN0b3JpZXMKCiAgICBVc2FnZTo6CgogICAgICAgICMgRGV2ZWxvcG1lbnQgZWdnczoKCiAgICAgICAgZWdnX2luZm8gPSAiL3BhdGgvdG8vUGFja2FnZU5hbWUuZWdnLWluZm8iCiAgICAgICAgYmFzZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZWdnX2luZm8pCiAgICAgICAgbWV0YWRhdGEgPSBQYXRoTWV0YWRhdGEoYmFzZV9kaXIsIGVnZ19pbmZvKQogICAgICAgIGRpc3RfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShlZ2dfaW5mbykpWzBdCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbihiYXNlZGlyLCBwcm9qZWN0X25hbWU9ZGlzdF9uYW1lLCBtZXRhZGF0YT1tZXRhZGF0YSkKCiAgICAgICAgIyBVbnBhY2tlZCBlZ2cgZGlyZWN0b3JpZXM6CgogICAgICAgIGVnZ19wYXRoID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLXZlci1weXZlci1ldGMuZWdnIgogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGVnZ19wYXRoLCBvcy5wYXRoLmpvaW4oZWdnX3BhdGgsJ0VHRy1JTkZPJykpCiAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbi5mcm9tX2ZpbGVuYW1lKGVnZ19wYXRoLCBtZXRhZGF0YT1tZXRhZGF0YSkKICAgIGMDAAAAAAAAAAMAAAACAAAAQwAAAHMQAAAAfAF8AF8AfAJ8AF8BZABTACkBTikCck4BAAByVAEAACkDco0AAAByqwAAAHJUAQAAchkAAAByGQAAAHIaAAAActkAAAAjBwAAcwQAAAAAAQYBehVQYXRoTWV0YWRhdGEuX19pbml0X19OKQVyFQAAAHIWAAAAchcAAAByGAAAAHLZAAAAchkAAAByGQAAAHIZAAAAchoAAAByfQAAAA8HAABzBAAAAAgSBAJjAAAAAAAAAAAAAAAAAgAAAEAAAABzGAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZART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AAAAcjYAAABaCl9zZ2V0X25vbmVaCl9zc2V0X25vbmVyRwAAANoHX19hbGxfX3IwAQAAcmMAAAByZAAAAHKVAAAAcmUAAAByZgAAAHKcAAAAchsAAAByIgEAAHJ1AAAAcnYAAABydwAAAHJ4AAAAcnkAAAByhwAAAHJKAAAAckIAAAByswAAAHI8AAAAcl4BAAByPQAAAHK+AAAAcmsAAABybAAAAHJJAAAAcokAAABySwAAAHJMAAAAck0AAAByTgAAAHJ6AAAAcnsAAAByTAIAAHJeAAAAciQAAABy9QAAAHJdAAAAcooAAAByZwAAAHJfAAAAclwAAAByaQAAAHJqAAAAcm8AAABycAAAAHJxAAAAcnIAAABygQAAAHKCAAAAcoMAAABydAEAAHJ/AAAAcoAAAABydQEAAHJ7AQAAcoQAAABytgEAAHJ8AAAAcn0AAAByfgAAAHKFAAAAclkAAABytAEAAHK5AQAAcsIBAAByyQEAAHLDAQAAcs4BAAByxgEAAHLMAQAAct0BAAByzQEAAFoLSW1wSW1wb3J0ZXJyrQAAAHLgAQAAcoYAAABy6wEAAHLpAQAAclYAAAByiAAAAHL6AQAAcvsBAABydAAAAHLEAQAAcmkBAAByxQEAAHLnAQAAcm0AAAByPgAAAHIEAgAA2gdWRVJCT1NF2gpJR05PUkVDQVNFcicCAAByYgAAAHIgAgAAciMCAAByYAAAAHJOAgAAck8CAAByJgIAAHJIAgAAckQAAAByWAIAAHJoAAAAcv8AAAByYQAAAHJhAgAAcqUAAABycwAAAHIvAQAAcm4AAABymwEAANoOZmlsdGVyd2FybmluZ3NybQIAAHIhAAAAcm4CAABybwIAAHIZAAAAchkAAAByGQAAAHIaAAAA2gg8bW9kdWxlPhAAAABz4AEAAAQCDAIIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQwCAgEMAQ4CDgIMARQDDAECARQBCAEQAgoCDAEQAgIBCgIKARABCgIMAQwBDAEIAQgBCAEIAx4BCAIIAgQBBAQEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQDEAcIBwQDCAUICAgHCAQIBQgECAQMAwgaCAEGAQIBBgEGAwYBBgECAwYBBgMGAQQDAgMIAQgBCAMEAwoDBgEIAQgBBgEEAwgEEAcQIBANEBsQBAQCDgEEAQQBBAEEAQQDCAoIDQwQCAQIGAoBCgIEAwguCAoEAwgLCAUKBQgFDhcQHBB/AH8AfwAGEBQQfwAUBAMQEA5/ADUIDAgICAwICQgICA4KDw5kCgMQFhAbCAMQEQYDEBsQFBB/AC0MAxAnEBkQDwwDCAoKBwobDAMKBAoDCBoMIAgRDhEIFQgPCAsIDgwCDAEMAgwBDAMIEggaCCEIIQwMCA0MAQwCDAEMAwgECgMIBQwICAcICggICA4MAQQJAgEQBBB/AAUICQgNEH8AfwB/AAwQExAzAgECAQgECA0QBQgWFDYICggICAYICggaCA8QBAgFAgEQCw==
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 4
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
py31compat.cpython-36.opt-1.pyc
624 B
lrw-r--r--
2025-07-15 09:13:41
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
py31compat.cpython-36.pyc
624 B
lrw-r--r--
2025-07-15 09:13:41
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
93.44 KB
lrw-r--r--
2025-07-15 09:13:41
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
93.44 KB
lrw-r--r--
2025-07-15 09:13:41
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).