REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 97.52 KB
Close
//opt/alt/python37/lib/python3.7/site-packages/pkg_resources/__pycache__/__init__.cpython-37.pyc
Text
Base64
Qg0NCgAAAACRllJlqqYBAOMAAAAAAAAAAAAAAABHAAAAQAAAAHNSCAAAZABaAGQBZAJsAVoBZAFkAmwCWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgVkAWQCbAZaBmQBZAJsB1oHZAFkAmwIWghkAWQCbAlaCWQBZAJsCloKZAFkAmwLWgtkAWQCbAxaDGQBZAJsDVoNZAFkAmwOWg5kAWQCbA9aD2QBZAJsEFoQZAFkAmwRWhJkAWQCbBNaE2QBZAJsFFoUZAFkAmwVWhVkAWQCbBZaFmQBZAJsF1oXZAFkAmwYWhhkAWQCbBlaGWQBZAJsGloaZAFkA2wMbRtaGwEAeQxkAWQCbBxaHFcAbh4EAGUdawqQAXICAQABAAEAZAFkAmweWhxZAG4CWAB5CGUfAQBXAG4aBABlIGsKkAFyJgEAAQABAGUhWh9ZAG4CWABkAWQEbAJtIloiAQB5HGQBZAVsAm0jWiNtJFokbSVaJQEAZAZaJlcAbhoEAGUdawqQAXJqAQABAAEAZAdaJlkAbgJYAGQBZAhsAm0nWigBAGQBZAlsKW0qWiptK1orAQB5FmQBZAJsLG0tWi4BAGUuai8BAFcAbhoEAGUdawqQAXK4AQABAAEAZAJaLlkAbgJYAGQBZApsMG0xWjEBAGQBZAtsMG0yWjIBAGUzZAyDAQEAZTNkDYMBAQBlM2QOgwEBAGUzZA+DAQEAZQFqNGQQawCQAnIGZTVkEYMBggFkAlo2ZAJaN2QCWjhkAlo5ZAJaOmQCWjtkAlo8ZAJaPWQCWj5kAlo/ZAJaQGQCWkFkAlpCZAJaQ2QCWkRkAlpFZAJaRkcAZBJkE4QAZBNlR4MDWkhkFGQVhABaSWkAWkpkFmQXhABaS2QYZBmEAFpMZBpkG4QAWk1kHGQdhABaTmQeZB+EAFpPZCBkIYQAWlBkImQjhABaUWQkZCWEAAQAWlJaU2QmZCeEAFpUZChkKWQqZCtkLGQtZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2QTZEhkFWRJZEpkS2RMZE1kTmRPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxkXWReZF9kYGRhZGJkY2RkZGVkZmRnZGhkaWRqZGtkbGdHWlVHAGRtZEOEAGRDZVaDA1pXRwBkbmREhABkRGVXgwNaWEcAZG9kcIQAZHBlWIMDWllHAGRxZEWEAGRFZVeDA1paRwBkcmRGhABkRmVXgwNaW2kAWlxkc2pdZQFqNI4AWl5kdFpfZHVaYGR2WmFkAVpiZHdaY2R4ZGeEAFpkZHlkKoQAWmVnAGYBZHpke4QBWmZkfGR9hABaZ2R+ZH+EAFpoZQWgaWSAoQFaamUFoGlkgaEBWmtlaFpsZIJkTIQAWm1kg2QphABabmVuWm9khGQrhABacGSFZCyEAFpxZP1khmQthAFacmSHZC6EAFpzRwBkiGRahABkWoMCWnRHAGSJZFuEAGRbZXSDA1p1RwBkimQ+hABkPoMCWnZHAGSLZIyEAGSMZXeDA1p4RwBkjWQ9hABkPYMCWnlleVp6RwBkjmRHhABkR2U1gwNae0cAZI9kP4QAZD+DAlp8ZJBkPIQAWn1kkWRJhABafmSSZEqEAFp/ZJNkT4QAWoBklGRQhABagWSVZFGEAFqCZP5klmRShAFag0cAZJdkYYQAZGGDAlqEZWRlhWWEgwIBAGSYZJmEAFqGRwBkmmRihABkYmWEgwNah0cAZJtkY4QAZGNlh4MDWohliKCJoQABAEcAZJxkX4QAZF9lhIMDWoplioMAWotHAGSdZJ6EAGSeZXeDA1qMRwBkn2SghABkoGWMgwNajUcAZKFkZIQAZGRlh4MDWo5lZGUIao9ljoMCAQBHAGSiZFyEAGRcZYqDA1qQRwBko2RdhABkXWWIgwNakUcAZKRkXoQAZF5ljoMDWpJlS2SlaQBkpo0CAQBkp2RlhABak2T/ZKhkOYQBWpSQAWQAZKlkqoQBWpVlk2UIao9llYMCAQCQAWQBZKtkrIQBWpZlk2WFZZaDAgEAZK1kroQAWpeQAWQCZK9ksIQBWphksWSyhABamUcAZLNktIQAZLSDAlqaZLVktoQAWptkt2S4hABanGS5ZLqEAFqdZLtkvIQAWp5lk2UMap9lmIMCAQBloGUuZL2DApAGclxlk2UuaqFlmIMCAQBlS2SlaQBkvo0CAQBlS2SlaQBkv40CAQBkwGRmhABaomTBZMKEAFqjZMNkxIQAWqRkxWQ2hABapZABZANkxmRohAFapmTHZMiEAFqnZaJlDGqfZaeDAgEAZaJlCGqPZaeDAgEAZaBlLmS9gwKQBnLYZaJlLmqhZaeDAgEAZMlkyoQAWqhlomWFZaiDAgEAZMtkVIQAWqlkzGTNhABaqmkAZgFkzmTPhAFaq2TQZNGEAFqsZNJk04QAWq1k1GTVhABarmTWZNeEAFqvZNhkTYQAWrBlBaBpZNmhAWqxWrJlBaBpZNplBWqzZQVqtEIAoQJqsVq1RwBk22RChABkQoMCWrZk3GTdhABat0cAZN5kQIQAZECDAlq4RwBk32TghABk4GW4gwNauUcAZOFk4oQAZOJluIMDWrpluGW5Zbpk45wDWrtk5GTlhABavGTmZEiEAFq9RwBk52TohABk6GUyar5qv4MDWsBHAGTpZEGEAGRBZTJqvmrBgwNawWTqZOuEAFrCZOxk7YQAWsNk7mRThABaxGTvZPCEAFrFZPFkToQAWsZk8mTzhABax2UJashk9GVIZAZk9Y0DAQBk9mT3hABayWXJZcqDAGYBZPhk+YQBgwFay2XJZPpk+4QAgwFazEcAZPxkaoQAZGplzYMDWs5kAlMAKAQBAABhWgIAAApQYWNrYWdlIHJlc291cmNlIEFQSQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKQSByZXNvdXJjZSBpcyBhIGxvZ2ljYWwgZmlsZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSwgb3IgYSBsb2dpY2FsCnN1YmRpcmVjdG9yeSB0aGVyZW9mLiAgVGhlIHBhY2thZ2UgcmVzb3VyY2UgQVBJIGV4cGVjdHMgcmVzb3VyY2UgbmFtZXMKdG8gaGF2ZSB0aGVpciBwYXRoIHBhcnRzIHNlcGFyYXRlZCB3aXRoIGBgL2BgLCAqbm90KiB3aGF0ZXZlciB0aGUgbG9jYWwKcGF0aCBzZXBhcmF0b3IgaXMuICBEbyBub3QgdXNlIG9zLnBhdGggb3BlcmF0aW9ucyB0byBtYW5pcHVsYXRlIHJlc291cmNlCm5hbWVzIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBBUEkuCgpUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIG5vcm1hbCBmaWxlc3lzdGVtIHBhY2thZ2VzLAouZWdnIGZpbGVzLCBhbmQgdW5wYWNrZWQgLmVnZyBmaWxlcy4gIEl0IGNhbiBhbHNvIHdvcmsgaW4gYSBsaW1pdGVkIHdheSB3aXRoCi56aXAgZmlsZXMgYW5kIHdpdGggY3VzdG9tIFBFUCAzMDIgbG9hZGVycyB0aGF0IHN1cHBvcnQgdGhlIGBgZ2V0X2RhdGEoKWBgCm1ldGhvZC4K6QAAAABOKQHaDGdldF9pbXBvcnRlcikB2gV1dGltZSkD2gVta2RpctoGcmVuYW1l2gZ1bmxpbmtURikB2gRvcGVuKQLaBWlzZGly2gVzcGxpdCkB2gdhcHBkaXJzKQHaCXBhY2thZ2luZ3omcGtnX3Jlc291cmNlcy5leHRlcm4ucGFja2FnaW5nLnZlcnNpb256KXBrZ19yZXNvdXJjZXMuZXh0ZXJuLnBhY2thZ2luZy5zcGVjaWZpZXJzeitwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcucmVxdWlyZW1lbnRzeiZwa2dfcmVzb3VyY2VzLmV4dGVybi5wYWNrYWdpbmcubWFya2VycykC6QMAAADpBQAAAHofUHl0aG9uIDMuNSBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g1QRVA0NDBXYXJuaW5nemEKICAgIFVzZWQgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIGEgdmVyc2lvbiBvciBzcGVjaWZpZXIgbm90IGNvbXBseWluZyB3aXRoCiAgICBQRVAgNDQwLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByEwAAAHITAAAA+owvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24zNy1zZXR1cHRvb2xzLTU4LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24zNy9saWIvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fX2luaXRfXy5weXIOAAAAaQAAAHMCAAAACARyDgAAAGMBAAAAAAAAAAEAAAAIAAAAQwAAAHMyAAAAeQx0AGoBoAJ8AKEBUwAEAHQAagFqA2sKciwBAAEAAQB0AGoBoAR8AKEBUwBYAGQAUwApAU4pBXILAAAA2gd2ZXJzaW9u2gdWZXJzaW9u2g5JbnZhbGlkVmVy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dGZvcm0gc3RyaW5ncywgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZXh0ZW5kZWQgYWNjb3JkaW5nbHkuCiAgICBO2gZkYXJ3aW56DG1hY29zeC0lcy0lc9oBLukCAAAAcgwAAAApCdoSZ2V0X2J1aWxkX3BsYXRmb3Jt2hJtYWNvc1ZlcnNpb25TdHJpbmfaBW1hdGNo2gNzeXPaCHBsYXRmb3Jt2gRqb2lu2gtfbWFjb3NfdmVyc9oFZ3JvdXDaClZhbHVlRXJyb3IpAtoEcGxhdNoBbXITAAAAchMAAAByFAAAANoWZ2V0X3N1cHBvcnRlZF9wbGF0Zm9ybaIAAABzEAAAAAANBgEKARIBAgEmAQ4CBgFyRQAAANoHcmVxdWlyZdoKcnVuX3NjcmlwdNoMZ2V0X3Byb3ZpZGVy2hBnZXRfZGlzdHJpYnV0aW9u2hBsb2FkX2VudHJ5X3BvaW502g1nZXRfZW50cnlfbWFw2g5nZXRfZW50cnlfaW5mb9oRaXRlcl9lbnRyeV9wb2ludHPaD3Jlc291cmNlX3N0cmluZ9oPcmVzb3VyY2Vfc3RyZWFt2hFyZXNvdXJjZV9maWxlbmFtZdoQcmVzb3VyY2VfbGlzdGRpctoPcmVzb3VyY2VfZXhpc3Rz2g5yZXNvdXJjZV9pc2RpctoRZGVjbGFyZV9uYW1lc3BhY2XaC3dvcmtpbmdfc2V02hdhZGRfYWN0aXZhdGlvbl9saXN0ZW5lctoSZmluZF9kaXN0cmlidXRpb25z2hNzZXRfZXh0cmFjdGlvbl9wYXRo2hFjbGVhbnVwX3Jlc291cmNlc9oRZ2V0X2RlZmF1bHRfY2FjaGXaC0Vudmlyb25tZW502gpXb3JraW5nU2V02g9SZXNvdXJjZU1hbmFnZXLaDERpc3RyaWJ1dGlvbtoLUmVxdWlyZW1lbnTaCkVudHJ5UG9pbnTaD1Jlc29sdXRpb25FcnJvctoPVmVyc2lvbkNvbmZsaWN02hREaXN0cmlidXRpb25Ob3RGb3VuZNoMVW5rbm93bkV4dHJh2g9FeHRyYWN0aW9uRXJyb3LaEnBhcnNlX3JlcXVpcmVtZW50c9oJc2FmZV9uYW1l2gxzYWZlX3ZlcnNpb27aDGdldF9wbGF0Zm9ybdoUY29tcGF0aWJsZV9wbGF0Zm9ybXPaC3lpZWxkX2xpbmVz2g5zcGxpdF9zZWN0aW9uc9oKc2FmZV9leHRyYdoLdG9fZmlsZW5hbWXaDmludmFsaWRfbWFya2Vy2g9ldmFsdWF0ZV9tYXJrZXLaEGVuc3VyZV9kaXJlY3RvcnnaDm5vcm1hbGl6ZV9wYXRo2ghFR0dfRElTVNoLQklOQVJZX0RJU1TaC1NPVVJDRV9ESVNU2g1DSEVDS09VVF9ESVNU2gxERVZFTE9QX0RJU1TaEUlNZXRhZGF0YVByb3ZpZGVy2hFJUmVzb3VyY2VQcm92aWRlctoMRmlsZU1ldGFkYXRh2gxQYXRoTWV0YWRhdGHaC0VnZ01ldGFkYXRh2g1FbXB0eVByb3ZpZGVy2g5lbXB0eV9wcm92aWRlctoMTnVsbFByb3ZpZGVy2gtFZ2dQcm92aWRlctoPRGVmYXVsdFByb3ZpZGVy2gtaaXBQcm92aWRlctoPcmVnaXN0ZXJfZmluZGVy2hpyZWdpc3Rlcl9uYW1lc3BhY2VfaGFuZGxlctoUcmVnaXN0ZXJfbG9hZGVyX3R5cGXaGGZpeHVwX25hbWVzcGFjZV9wYWNrYWdlc3ICAAAA2h5Qa2dSZXNvdXJjZXNEZXByZWNhdGlvbldhcm5pbmfaCHJ1bl9tYWlu2hZBdmFpbGFibGVEaXN0cmlidXRpb25zYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJhAAAAei5BYnN0cmFjdCBiYXNlIGZvciBkZXBlbmRlbmN5IHJlc29sdXRpb24gZXJyb3JzYwEAAAAAAAAAAQAAAAMAAABDAAAAcxIAAAB8AGoAagF0AnwAagODARcAUwApAU4pBNoJX19jbGFzc19fcg8AAADaBHJlcHJyNAAAACkB2gRzZWxmchMAAAByEwAAAHIUAAAA2ghfX3JlcHJfX+8AAABzAgAAAAABehhSZXNvbHV0aW9uRXJyb3IuX19yZXByX19OKQVyDwAAAHIQAAAAchEAAAByEgAAAHKNAAAAchMAAAByEwAAAHITAAAAchQAAAByYQAAAOwAAABzBAAAAAgBBAJjAAAAAAAAAAAAAAAAAwAAAEAAAABzPAAAAGUAWgFkAFoCZAFaA2QCWgRlBWQDZASEAIMBWgZlBWQFZAaEAIMBWgdkB2QIhABa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dXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnITAAAAKQLaB21hbmFnZXLaDXJlc291cmNlX25hbWVyEwAAAHITAAAAchQAAADaFWdldF9yZXNvdXJjZV9maWxlbmFtZQECAABzAgAAAAADeidJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2VfZmlsZW5hbWVjAgAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnppUmV0dXJuIGEgcmVhZGFibGUgZmlsZS1saWtlIG9iamVjdCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnITAAAAKQJy3gAAAHLfAAAAchMAAAByEwAAAHIUAAAA2hNnZXRfcmVzb3VyY2Vfc3RyZWFtBgIAAHMCAAAAAAN6JUlSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9zdHJlYW1jAgAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnptUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yEwAAACkCct4AAABy3wAAAHITAAAAchMAAAByFAAAANoTZ2V0X3Jlc291cmNlX3N0cmluZwsCAABzAgAAAAADeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyaW5nYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6LERvZXMgdGhlIHBhY2thZ2UgY29udGFpbiB0aGUgbmFtZWQgcmVzb3VyY2U/TnITAAAAKQFy3wAAAHITAAAAchMAAAByFAAAANoMaGFzX3Jlc291cmNlEAIAAHMCAAAAAAF6HklSZXNvdXJjZVByb3ZpZGVyLmhhc19yZXNvdXJjZWMBAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAZAFTACkCej5JcyB0aGUgbmFtZWQgcmVzb3VyY2UgYSBkaXJlY3Rvcnk/ICAobGlrZSBgYG9zLnBhdGguaXNkaXIoKWBg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d2l0aCBlYWNoIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIG1ldCBieSBhbgogICAgICAgIGFscmVhZHktaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbjsgaXQgc2hvdWxkIHJldHVybiBhIGBgRGlzdHJpYnV0aW9uYGAgb3IKICAgICAgICBgYE5vbmVgYC4KCiAgICAgICAgVW5sZXNzIGByZXBsYWNlX2NvbmZsaWN0aW5nPVRydWVgLCByYWlzZXMgYSBWZXJzaW9uQ29uZmxpY3QgZXhjZXB0aW9uCiAgICAgICAgaWYKICAgICAgICBhbnkgcmVxdWlyZW1lbnRzIGFyZSBmb3VuZCBvbiB0aGUgcGF0aCB0aGF0IGhhdmUgdGhlIGNvcnJlY3QgbmFtZSBidXQKICAgICAgICB0aGUgd3JvbmcgdmVyc2lvbi4gIE90aGVyd2lzZSwgaWYgYW4gYGluc3RhbGxlcmAgaXMgc3VwcGxpZWQgaXQgd2lsbCBiZQogICAgICAgIGludm9rZWQgdG8gb2J0YWluIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIHJlcXVpcmVtZW50IGFuZCBhY3RpdmF0ZQogICAgICAgIGl0LgoKICAgICAgICBgZXh0cmFzYCBpcyBhIGxpc3Qgb2YgdGhlIGV4dHJhcyB0byBiZSB1c2VkIHdpdGggdGhlc2UgcmVxdWlyZW1lbnRzLgogICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZXh0cmEgcmVxdWlyZW1lbnRzIG1heSBsb29rIGxpa2UgYG15X3JlcTsKICAgICAgICBleHRyYSA9ICJteV9leHRyYSJgLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwdXJlbHkKICAgICAgICBvcHRpb25hbCByZXF1aXJlbWVudC4gIEluc3RlYWQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBhc3NlcnQgdGhhdCB0aGVzZQogICAgICAgIHJlcXVpcmVtZW50cyBhcmUgdHJ1bHkgcmVxdWlyZWQuCiAgICAgICAgTnKcAAAAcgEAAAApAdoTcmVwbGFjZV9jb25mbGljdGluZ1QpF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcrwAAAByLwAAAHLmAAAAclsAAABy5AAAAHJcAAAA2gpiZXN0X21hdGNocmMAAABytQAAAHJiAAAAcpcAAABy/AAAANoGZXh0cmFz2gZleHRlbmRy8wAAANoMcHJvamVjdF9uYW1lKRJyjAAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnIGAQAAcg8BAADaCXByb2Nlc3NlZNoEYmVzdNoLdG9fYWN0aXZhdGXaCnJlcV9leHRyYXNylgAAAHKQAAAAco4AAABy8AAAAHKZAAAA2g1kZXBlbmRlbnRfcmVx2hBuZXdfcmVxdWlyZW1lbnRz2g9uZXdfcmVxdWlyZW1lbnRyEwAAAHITAAAAchQAAABy8gAAAL0CAABzTgAAAAAbEgIEAgQBBAIGBAoCCgIKAQgCAgIMAQICDAEKAg4BFAEEAQgBCAEMBQgBCAEEAQYBEgIIAQwBCgEKAQoCCAEQAxYBCgMKARABEAIMA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAADwAAAAwAAABDAAAAcwIBAAB0AHwBgwF9BXwFoAGhAAEAaQB9BmkAfQd8AmQBawhyNHQCfABqA4MBfQh8CHwBNwB9CG4IfAJ8ARcAfQh8AKAEZwChAX0JdAB0BXwJagZ8AIMCgwEBAHiSfAVEAF2KfQp4hHwBfAoZAEQAXXh9C3wLoAehAGcBfQx5EnwJoAh8DHwIfAOhA30NVwBuNAQAdAlrCnK+AQB9DgEAehZ8DnwGfAs8AHwEcqx3am4CUABXAGQBZAF9Dn4OWABZAHFqWAB0AHQFfAlqBnwNgwKDAQEAfAegCnQLoAx8DaEBoQEBAFAAcWpXAHFcVwB0AHwHgwF9B3wHoAGhAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXIHAQAA2gRzb3J0clsAAABy5AAAAHKKAAAA2gNtYXBy8wAAANoOYXNfcmVxdWlyZW1lbnRy8gAAAHJhAAAAchwAAAByHgAAAHIfAAAAKQ9yjAAAANoKcGx1Z2luX2VudtoIZnVsbF9lbnZyFAEAANoIZmFsbGJhY2vaD3BsdWdpbl9wcm9qZWN0c9oKZXJyb3JfaW5mb9oNZGlzdHJpYnV0aW9uc3ITAQAA2gpzaGFkb3dfc2V0chEBAAByjgAAAHKQAAAA2glyZXNvbHZlZXNyGQAAAHITAAAAchMAAAByFAAAANoMZmluZF9wbHVnaW5zGQMAAHM0AAAAACQIAggCBAEEAggBCgEKAggCCgIQAgoCDgIKAgIBEgIQAggBBAIEAxQDEAEQAwoCCAEIAnoXV29ya2luZ1Nl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AGkAfABfAHwCfABfAXwDfABfAnwAoAN8AaEBAQBkAVMAKQJhIQMAAFNuYXBzaG90IGRpc3RyaWJ1dGlvbnMgYXZhaWxhYmxlIG9uIGEgc2VhcmNoIHBhdGgKCiAgICAgICAgQW55IGRpc3RyaWJ1dGlvbnMgZm91bmQgb24gYHNlYXJjaF9wYXRoYCBhcmUgYWRkZWQgdG8gdGhlIGVudmlyb25tZW50LgogICAgICAgIGBzZWFyY2hfcGF0aGAgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgYGBzeXMucGF0aGBgIGl0ZW1zLiAgSWYgbm90CiAgICAgICAgc3VwcGxpZWQsIGBgc3lzLnBhdGhgYCBpcyB1c2VkLgoKICAgICAgICBgcGxhdGZvcm1gIGlzIGFuIG9wdGlvbmFsIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBwbGF0Zm9ybQogICAgICAgIHRoYXQgcGxhdGZvcm0tc3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aC4gIElmCiAgICAgICAgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgYHB5dGhvbmAgaXMgYW4KICAgICAgICBvcHRpb25hbCBzdHJpbmcgbmFtaW5nIHRoZSBkZXNpcmVkIHZlcnNpb24gb2YgUHl0aG9uIChlLmcuIGBgJzMuNidgYCk7CiAgICAgICAgaXQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdmVyc2lvbi4KCiAgICAgICAgWW91IG1heSBleHBsaWNpdGx5IHNldCBgcGxhdGZvcm1gIChhbmQvb3IgYHB5dGhvbmApIHRvIGBgTm9uZWBgIGlmIHlvdQogICAgICAgIHdpc2ggdG8gbWFwICphbGwqIGRpc3RyaWJ1dGlvbnMsIG5vdCBqdXN0IHRob3NlIGNvbXBhdGlibGUgd2l0aCB0aGUKICAgICAgICBydW5uaW5nIHBsYXRmb3JtIG9yIFB5dGhvbiB2ZXJzaW9uLgogICAgICAgIE4pBNoIX2Rpc3RtYXByPgAAANoGcHl0aG9u2gRzY2FuKQRyjAAAANoLc2VhcmNoX3BhdGhyPgAAAHI0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b3JpZ2luYWxfZXJyb3IpBXKMAAAA2gdvbGRfZXhjclIBAADaBHRtcGzaA2VycnITAAAAchMAAAByFAAAANoQZXh0cmFjdGlvbl9lcnJvcoAEAABzEgAAAAADDAEMAgQPCgESAQYBBgEGAXogUmVzb3VyY2VNYW5hZ2VyLmV4dHJhY3Rpb25fZXJyb3JyEwAAAGMDAAAAAAAAAAUAAAAIAAAAQwAAAHNmAAAAfABqAHAKdAGDAH0DdAJqA2oEfAN8AWQBFwBmAnwCngKOAH0EeQx0BXwEgwEBAFcAbhwEAHQGawpyTAEAAQABAHwAoAehAAEAWQBuAlgAfACgCHwDoQEBAGQCfABqCXwEPAB8BFMAKQNhrgIAAFJldHVybiBhYnNvbHV0ZSBsb2NhdGlvbiBpbiBjYWNoZSBmb3IgYGFyY2hpdmVfbmFtZWAgYW5kIGBuYW1lc2AKCiAgICAgICAgVGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzCiAgICAgICAgbm90IGFscmVhZHkgZXhpc3QuICBgYXJjaGl2ZV9uYW1lYCBzaG91bGQgYmUgdGhlIGJhc2UgZmlsZW5hbWUgb2YgdGhlCiAgICAgICAgZW5jbG9zaW5nIGVnZyAod2hpY2ggbWF5IG5vdCBiZSB0aGUgbmFtZSBvZiB0aGUgZW5jbG9zaW5nIHppcGZpbGUhKSwKICAgICAgICBpbmNsdWRpbmcgaXRzICIuZWdnIiBleHRlbnNpb24uICBgbmFtZXNgLCBpZiBwcm92aWRlZCwgc2hvdWxkIGJlIGEKICAgICAgICBzZXF1ZW5jZSBvZiBwYXRoIG5hbWUgcGFydHMgInVuZGVyIiB0aGUgZWdnJ3MgZXh0cmFjdGlvbiBsb2NhdGlvbi4KCiAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHJlc291cmNlIHByb3ZpZGVycyB0aGF0IG5lZWQgdG8KICAgICAgICBvYnRhaW4gYW4gZXh0cmFjdGlvbiBsb2NhdGlvbiwgYW5kIG9ubHkgZm9yIG5hbWVzIHRoZXkgaW50ZW5kIHRvCiAgICAgICAgZXh0cmFjdCwgYXMgaXQgdHJhY2tzIHRoZSBnZW5lcmF0ZWQgbmFtZXMgZm9yIHBvc3NpYmxlIGNsZWFudXAgbGF0ZXIuCiAgICAgICAgegQtdG1wco8AAAApCnJOAQAAcloAAABysAAAAHKxAAAAcj8AAADaGF9ieXBhc3NfZW5zdXJlX2RpcmVjdG9yedoJRXhjZXB0aW9uclcBAADaHF93YXJuX3Vuc2FmZV9leHRyYWN0aW9uX3BhdGhySwEAACkFcowAAADaDGFyY2hpdmVfbmFtZdoFbmFtZXPaDGV4dHJhY3RfcGF0aNoLdGFyZ2V0X3BhdGhyEwAAAHITAAAAchQAAADaDmdldF9jYWNoZV9wYXRonAQAAHMSAAAAAA0MARgBAgEMAQ4BDgIKAgoBeh5SZXNvdXJjZU1hbmFnZXIuZ2V0X2NhY2hlX3BhdGhjAQAAAAAAAAADAAAABAAAAEMAAABzXAAAAHQAagFkAWsCch58AKACdABqA2QCGQChAXMeZANTAHQAoAR8AKEBagV9AXwBdARqBkAAcz58AXQEagdAAHJYZARqCGYAdAmDAI4BfQJ0CqALfAJ0DKECAQBkA1MAKQVhTgEAAAogICAgICAgIElmIHRoZSBkZWZhdWx0IGV4dHJhY3Rpb24gcGF0aCBpcyBvdmVycmlkZGVuIGFuZCBzZXQgdG8gYW4gaW5zZWN1cmUKICAgICAgICBsb2NhdGlvbiwgc3VjaCBhcyAvdG1wLCBpdCBvcGVucyB1cCBhbiBvcHBvcnR1bml0eSBmb3IgYW4gYXR0YWNrZXIgdG8KICAgICAgICByZXBsYWNlIGFuIGV4dHJhY3RlZCBmaWxlIHdpdGggYW4gdW5hdXRob3JpemVkIHBheWxvYWQuIFdhcm4gdGhlIHVzZXIKICAgICAgICBpZiBhIGtub3duIGluc2VjdXJlIGxvY2F0aW9uIGlzIHVzZWQuCgogICAgICAgIFNlZSBEaXN0cmlidXRlICMzNzUgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICDaAm502gZ3aW5kaXJOeuFFeHRyYWN0aW9uIHBhdGggaXMgd3JpdGFibGUgYnkgZ3JvdXAvb3RoZXJzIGFuZCB2dWxuZXJhYmxlIHRvIGF0dGFjayB3aGVuIHVzZWQgd2l0aCBnZXRfcmVzb3VyY2VfZmlsZW5hbWUgKHtwYXRofSkuIENvbnNpZGVyIGEgbW9yZSBzZWN1cmUgbG9jYXRpb24gKHNldCB3aXRoIC5zZXRfZXh0cmFjdGlvbl9wYXRoIG9yIHRoZSBQWVRIT05fRUdHX0NBQ0hFIGVudmlyb25tZW50IHZhcmlhYmxlKS4pDXKwAAAActUAAABywwAAANoHZW52aXJvbtoEc3RhdNoHc3RfbW9kZdoHU19JV09USNoHU19JV0dSUHKSAAAAcpMAAADaCHdhcm5pbmdz2gR3YXJu2gtVc2VyV2FybmluZykDcrEAAADaBG1vZGXaA21zZ3ITAAAAchMAAAByFAAAAHJaAQAAtQQAAHMOAAAAAAoaBAQBDAEUAgYGCAF6LFJlc291cmNlTWFuYWdlci5fd2Fybl91bnNhZmVfZXh0cmFjdGlvbl9wYXRoYwMAAAAAAAAABAAAAAQAAABDAAAAcy4AAAB0AGoBZAFrAnIqdACgAnwBoQFqA2QCQgBkA0AAfQN0AKAEfAF8A6ECAQBkBFMAKQVhNAIAAFBlcmZvcm0gYW55IHBsYXRmb3JtLXNwZWNpZmljIHBvc3Rwcm9jZXNzaW5nIG9mIGB0ZW1wbmFtZWAKCiAgICAgICAgVGhpcyBpcyB3aGVyZSBNYWMgaGVhZGVyIHJld3JpdGVzIHNob3VsZCBiZSBkb25lOyBvdGhlciBwbGF0Zm9ybXMgZG9uJ3QKICAgICAgICBoYXZlIGFueXRoaW5nIHNwZWNpYWwgdGhleSBzaG91bGQgZG8uCgogICAgICAgIFJlc291cmNlIHByb3ZpZGVycyBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBPTkxZIGFmdGVyIHN1Y2Nlc3NmdWxseQogICAgICAgIGV4dHJhY3RpbmcgYSBjb21wcmVzc2VkIHJlc291cmNlLiAgVGhleSBtdXN0IE5PVCBjYWxsIGl0IG9uIHJlc291cmNlcwogICAgICAgIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGZpbGVzeXN0ZW0uCgogICAgICAgIGB0ZW1wbmFtZWAgaXMgdGhlIGN1cnJlbnQgKHRlbXBvcmFyeSkgbmFtZSBvZiB0aGUgZmlsZSwgYW5kIGBmaWxlbmFtZWAKICAgICAgICBpcyB0aGUgbmFtZSBpdCB3aWxsIGJlIHJlbmFtZWQgdG8gYnkgdGhlIGNhbGxlciBhZnRlciB0aGlzIHJvdXRpbmUKICAgICAgICByZXR1cm5zLgogICAgICAgINoFcG9zaXhpbQEAAGn/DwAATikFcrAAAABy1QAAAHJjAQAAcmQBAADaBWNobW9kKQRyjAAAANoIdGVtcG5hbWXaCGZpbGVuYW1lcmoBAAByEwAAAHITAAAAchQAAADaC3Bvc3Rwcm9jZXNz0AQAAHMGAAAAAA8KAhQBehtSZXNvdXJjZU1hbmFnZXIucG9zdHByb2Nlc3NjAgAAAAAAAAACAAAAAgAAAEMAAABzGAAAAHwAagByDnQBZAGDAYIBfAF8AF8CZAJTACkDYdIDAABTZXQgdGhlIGJhc2UgcGF0aCB3aGVyZSByZXNvdXJjZXMgd2lsbCBiZSBleHRyYWN0ZWQgdG8sIGlmIG5lZWRlZC4KCiAgICAgICAgSWYgeW91IGRvIG5vdCBjYWxsIHRoaXMgcm91dGluZSBiZWZvcmUgYW55IGV4dHJhY3Rpb25zIHRha2UgcGxhY2UsIHRoZQogICAgICAgIHBhdGggZGVmYXVsdHMgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiBgYGdldF9kZWZhdWx0X2NhY2hlKClgYC4gIChXaGljaAogICAgICAgIGlzIGJhc2VkIG9uIHRoZSBgYFBZVEhPTl9FR0dfQ0FDSEVgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2l0aCB2YXJpb3VzCiAgICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2tzLiAgU2VlIHRoYXQgcm91dGluZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUKICAgICAgICBkZXRhaWxzLikKCiAgICAgICAgUmVzb3VyY2VzIGFyZSBleHRyYWN0ZWQgdG8gc3ViZGlyZWN0b3JpZXMgb2YgdGhpcyBwYXRoIGJhc2VkIHVwb24KICAgICAgICBpbmZvcm1hdGlvbiBnaXZlbiBieSB0aGUgYGBJUmVzb3VyY2VQcm92aWRlcmBgLiAgWW91IG1heSBzZXQgdGhpcyB0byBhCiAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgYnV0IHRoZW4geW91IG11c3QgY2FsbCBgYGNsZWFudXBfcmVzb3VyY2VzKClgYCB0bwogICAgICAgIGRlbGV0ZSB0aGUgZXh0cmFjdGVkIGZpbGVzIHdoZW4gZG9uZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAgICAgICAgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgd2lsbCBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgZXh0cmFjdGVkIGZpbGVzLgoKICAgICAgICAoTm90ZTogeW91IG1heSBub3QgY2hhbmdlIHRoZSBleHRyYWN0aW9uIHBhdGggZm9yIGEgZ2l2ZW4gcmVzb3VyY2UKICAgICAgICBtYW5hZ2VyIG9uY2UgcmVzb3VyY2VzIGhhdmUgYmVlbiBleHRyYWN0ZWQsIHVubGVzcyB5b3UgZmlyc3QgY2FsbAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgLikKICAgICAgICB6NUNhbid0IGNoYW5nZSBleHRyYWN0aW9uIHBhdGgsIGZpbGVzIGFscmVhZHkgZXh0cmFjdGVkTikDcksBAAByQgAAAHJOAQAAKQJyjAAAAHKxAAAAchMAAAByEwAAAHIUAAAAclgAAADkBAAAcwgAAAAAEwYBAgEGA3ojUmVzb3VyY2VNYW5hZ2VyLnNldF9leHRyYWN0aW9uX3BhdGhGYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJhQgIAAAogICAgICAgIERlbGV0ZSBhbGwgZXh0cmFjdGVkIHJlc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmV0dXJuaW5nIGEgbGlzdAogICAgICAgIG9mIHRoZSBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uLCBzbyBpdCBzaG91bGQKICAgICAgICBnZW5lcmFsbHkgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZXh0cmFjdGlvbiBwYXRoIGlzIGEgdGVtcG9yYXJ5CiAgICAgICAgZGlyZWN0b3J5IGV4Y2x1c2l2ZSB0byBhIHNp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AAByEwAAAHIUAAAActoAAABxBwAAcwIAAAAAAXofRmlsZU1ldGFkYXRhLmdldF9tZXRhZGF0YV9saW5lc04pCnIPAAAAchAAAAByEQAAAHISAAAAcuoAAAByiQEAAHLYAAAActkAAAByAAIAAHLaAAAAchMAAAByEwAAAHITAAAAchQAAAByegAAAEwHAABzDgAAAAgKBAIIAwgDCAMICQgHYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXJ7AAAAYXMCAABNZXRhZGF0YSBwcm92aWRlciBmb3IgZWdnIGRpcmVjdG9yaWVzCgogICAgVXNhZ2U6OgoKICAgICAgICAjIERldmVsb3BtZW50IGVnZ3M6CgogICAgICAgIGVnZ19pbmZvID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLmVnZy1pbmZvIgogICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5kaXJuYW1lKGVnZ19pbmZvKQogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGJhc2VfZGlyLCBlZ2dfaW5mbykKICAgICAgICBkaXN0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZWdnX2luZm8pKVswXQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oYmFzZWRpciwgcHJvamVjdF9uYW1lPWRpc3RfbmFtZSwgbWV0YWRhdGE9bWV0YWRhdGEpCgogICAgICAgICMgVW5wYWNrZWQgZWdnIGRpcmVjdG9yaWVzOgoKICAgICAgICBlZ2dfcGF0aCA9ICIvcGF0aC90by9QYWNrYWdlTmFtZS12ZXItcHl2ZXItZXRjLmVnZyIKICAgICAgICBtZXRhZGF0YSA9IFBhdGhNZXRhZGF0YShlZ2dfcGF0aCwgb3MucGF0aC5qb2luKGVnZ19wYXRoLCdFR0ctSU5GTycpKQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24uZnJvbV9maWxlbmFtZShlZ2dfcGF0aCwgbWV0YWRhdGE9bWV0YWRhdGEpCiAgICBjAwAAAAAAAAADAAAAAgAAAEMAAABzEAAAAHwBfABfAHwCfABfAWQAUwApAU4pAnKC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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__init__.cpython-37.pyc
97.52 KB
lrw-r--r--
2023-11-13 21:35:13
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).