REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 58.99 KB
Close
//opt/alt/python36/lib64/python3.6/logging/__pycache__/__init__.cpython-36.pyc
Text
Base64
Mw0NCqsEIGZlFgEA4wAAAAAAAAAAAAAAACoAAABAAAAAcwIEAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbAVaBWQBZAJsBloGZAFkAmwHWgdkAWQCbAhaCGQBZANsCW0KWgoBAGQEZAVkBmQHZAhkCWQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWcqWgt5DGQBZAJsDFoMVwBuGAQAZQ1rCnLMAQABAAEAZAJaDFkAbgJYAGQuWg5kL1oPZDBaEGQxWhFlA2oDgwBaEmQyWhNkMloUZDJaFWQyWhZkM1oXZRdaGGQ0WhlkNVoaZRpaG2Q2WhxkN1odZAFaHmUXZAZlGWQIZRpkFmUcZA5lHWQHZR5kEmkGWh9lF2UYZRllGmUaZRxlHWUeZDicCFogZDlkIIQAWiFkOmQXhABaImUjZQFkO4MCkAFybmQ8ZD2EAFokbghkPmQ/hABaJGUCaiVqJmUiaidqKIMBWilkQGRBhABaKmUMkAFynmUMaiuDAFosbgRkAlosZEJkQ4QAWi1kRGRFhABaLkcAZEZkD4QAZA9lL4MDWjBlMGExZEdkK4QAWjJkSGQqhABaM2RJZCWEAFo0RwBkSmRLhABkS2UvgwNaNUcAZExkTYQAZE1lNYMDWjZHAGROZE+EAGRPZTWDA1o3ZFBaOGU1ZThmAmU2ZFFmAmU3ZFJmAmRTnANaOUcAZFRkDIQAZAxlL4MDWjplOoMAWjtHAGRVZAWEAGQFZS+DA1o8RwBkVmQLhABkC2UvgwNaPUcAZFdkWIQAZFhlL4MDWj5lB2o/gwBaQGcAWkFkWWRahABaQmRbZFyEAFpDRwBkXWQNhABkDWU+gwNaREcAZF5kFIQAZBRlRIMDWkVHAGRfZAqEAGQKZUWDA1pGRwBkYGRhhABkYWVFgwNaR2VHZRqDAVpIZUhaSUcAZGJkY4QAZGNlL4MDWkpkZGQmhABaS2RlZCKEAFpMRwBkZmRnhABkZ2UvgwNaTUcAZGhkEIQAZBBlPoMDWk5HAGRpZGqEAGRqZU6DA1pPZU5hUEcAZGtkEYQAZBFlL4MDWlFlT2UagwFaUmVSZU5fUmVNZU5qUoMBZU5fU2RsZBiEAFpUZH1kbWQhhAFaVWRuZBqEAFpWZVZaV2RvZB2EAFpYZDJkcJwBZHFkHoQCWllkcmQphABaWmRzZCiEAFpbZHRkI4QAWlxkdWQbhABaXWR2ZCSEAFpeZHdkHIQAWl9lQWYBZHhkJ4QBWmBkAWQCbGFaYWVhamJlYIMBAQBHAGR5ZBOEAGQTZUSDA1pjZAJhZGR+ZHpke4QBWmVkfGQZhABaZmQCUwApf3rCCkxvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgMjgyIGFuZCBjb21tZW50cyB0aGVyZXRvIGluCmNvbXAubGFuZy5weXRob24uCgpDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KClRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQrpAAAAAE4pAdoIVGVtcGxhdGXaDEJBU0lDX0ZPUk1BVNoSQnVmZmVyaW5nRm9ybWF0dGVy2ghDUklUSUNBTNoFREVCVUfaBUVSUk9S2gVGQVRBTNoLRmlsZUhhbmRsZXLaBkZpbHRlctoJRm9ybWF0dGVy2gdIYW5kbGVy2gRJTkZP2glMb2dSZWNvcmTaBkxvZ2dlctoNTG9nZ2VyQWRhcHRlctoGTk9UU0VU2gtOdWxsSGFuZGxlctoNU3RyZWFtSGFuZGxlctoEV0FSTtoHV0FSTklOR9oMYWRkTGV2ZWxOYW1l2gtiYXNpY0NvbmZpZ9oPY2FwdHVyZVdhcm5pbmdz2ghjcml0aWNhbNoFZGVidWfaB2Rpc2FibGXaBWVycm9y2glleGNlcHRpb27aBWZhdGFs2gxnZXRMZXZlbE5hbWXaCWdldExvZ2dlctoOZ2V0TG9nZ2VyQ2xhc3PaBGluZm/aA2xvZ9oNbWFrZUxvZ1JlY29yZNoOc2V0TG9nZ2VyQ2xhc3PaCHNodXRkb3du2gR3YXJu2gd3YXJuaW5n2hNnZXRMb2dSZWNvcmRGYWN0b3J52hNzZXRMb2dSZWNvcmRGYWN0b3J52gpsYXN0UmVzb3J02g9yYWlzZUV4Y2VwdGlvbnN6JlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+Wgpwcm9kdWN0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YXMgY3JlYXRlZCwKICAgIHRoZSBzb3VyY2UgbGluZSB3aGVyZSB0aGUgbG9nZ2luZyBjYWxsIHdhcyBtYWRlLCBhbmQgYW55IGV4Y2VwdGlvbgogICAgaW5mb3JtYXRpb24gdG8gYmUgbG9nZ2VkLgogICAgTmMKAAAAAAAAAA0AAAATAAAASwAAAHOcAQAAdABqAIMAfQt8AXwAXwF8BXwAXwJ8BnJEdAN8BoMBZAFrAnJEdAR8BmQCGQB0BWoGgwJyRHwGZAIZAHJEfAZkAhkAfQZ8BnwAXwd0CHwCgwF8AF8JfAJ8AF8KfAN8AF8LeSZ0DGoNag58A4MBfABfD3QMag1qEHwAag+DAWQCGQB8AF8RVwBuJgQAdBJ0E3QUZgNrCnKsAQABAAEAfAN8AF8PZAN8AF8RWQBuAlgAfAd8AF8VZAR8AF8WfAl8AF8XfAR8AF8YfAh8AF8ZfAt8AF8afAt0G3wLgwEYAGQFFAB8AF8cfABqGnQdGABkBRQAfABfHnQfb/p0IJABchZ0IGohgwB8AF8idCBqI4MAagF8AF8kbgxkBHwAXyJkBHwAXyR0JZABczBkBHwAXyZuRGQGfABfJnQnaihqKWQHgwF9DHwMZARrCZABcnR5EHwMaiqDAGoBfABfJlcAbhYEAHQrawqQAXJyAQABAAEAWQBuAlgAdCyQAXKSdC10DGQIgwKQAXKSdAxqLoMAfABfL24GZAR8AF8vZARTACkJeksKICAgICAgICBJbml0aWFsaXplIGEgbG9nZ2luZyByZWNvcmQgd2l0aCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbi4KICAgICAgICDpAQAAAHIBAAAAeg5Vbmtub3duIG1vZHVsZU5p6AMAAFoLTWFpblByb2Nlc3NaD211bHRpcHJvY2Vzc2luZ9oGZ2V0cGlkKTDaBHRpbWXaBG5hbWXaA21zZ9oDbGVuckUAAADaC2NvbGxlY3Rpb25z2gdNYXBwaW5n2gRhcmdzch8AAABaCWxldmVsbmFtZdoHbGV2ZWxub9oIcGF0aG5hbWXaAm9z2gRwYXRo2ghiYXNlbmFtZdoIZmlsZW5hbWXaCHNwbGl0ZXh02gZtb2R1bGVySQAAAHJIAAAA2g5BdHRyaWJ1dGVFcnJvcnJBAAAA2ghleGNfdGV4dNoKc3RhY2tfaW5mb9oGbGluZW5vWghmdW5jTmFtZdoHY3JlYXRlZHJGAAAA2gVtc2Vjc9oKX3N0YXJ0VGltZVoPcmVsYXRpdmVDcmVhdGVk2gpsb2dUaHJlYWRz2gl0aHJlYWRpbmfaCWdldF9pZGVudFoGdGhyZWFkWg5jdXJyZW50X3RocmVhZFoKdGhyZWFkTmFtZdoSbG9nTXVsdGlwcm9jZXNzaW5nWgtwcm9jZXNzTmFtZXI9AAAA2gdtb2R1bGVzcjMAAABaD2N1cnJlbnRfcHJvY2Vzc3JAAAAA2gxsb2dQcm9jZXNzZXPaB2hhc2F0dHJyUAAAANoHcHJvY2VzcykN2gRzZWxmclIAAAByNQAAAHJZAAAAcmMAAAByUwAAAHJXAAAAckEAAADaBGZ1bmPaBXNpbmZv2gZrd2FyZ3PaAmN0WgJtcHI3AAAAcjcAAAByOAAAANoIX19pbml0X1/7AAAAc1IAAAAABQgBBgEGEyABCAEIAQYBCgEGAQYBAgEOARgBFAEGAQwBBgEGAQYBBgEGAQYBEgEQAQoBCgEOAgYBBgEGAQgCBgEMAQoFAgEQARABBgESAQwCehJMb2dSZWNvcmQuX19pbml0X19jAQAAAAAAAAABAAAABgAAAEMAAABzHAAAAGQBfABqAHwAagF8AGoCfABqA3wAagRmBRYAUwApAk56ITxMb2dSZWNvcmQ6ICVzLCAlcywgJXMsICVzLCAiJXMiPikFclIAAAByWAAAAHJZAAAAcmMAAAByUwAAACkBcm8AAAByNwAAAHI3AAAAcjgAAADaB19fc3RyX19DAQAAcwQAAAAAAQoBehFMb2dSZWNvcmQuX19zdHJfX2MBAAAAAAAAAAIAAAACAAAAQwAAAHMeAAAAdAB8AGoBgwF9AXwAagJyGnwBfABqAhYAfQF8AVMAKQF6qwogICAgICAgIFJldHVybiB0aGUgbWVzc2FnZSBmb3IgdGhpcyBMb2dSZWNvcmQuCgogICAgICAgIFJldHVybiB0aGUgbWVzc2FnZSBmb3IgdGhpcyBMb2dSZWNvcmQgYWZ0ZXIgbWVyZ2luZyBhbnkgdXNlci1zdXBwbGllZAogICAgICAgIGFyZ3VtZW50cyB3aXRoIHRoZSBtZXNzYWdlLgogICAgICAgICkDckcAAAByUwAAAHJXAAAAKQJybwAAAHJTAAAAcjcAAAByNwAAAHI4AAAA2gpnZXRNZXNzYWdlSQEAAHMIAAAAAAcKAQYBCgF6FExvZ1JlY29yZC5nZXRNZXNzYWdlKQJOTikI2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fcnQAAABydQAAANoIX19yZXByX19ydgAAAHI3AAAAcjcAAAByNwAAAHI4AAAAcg4AAADvAAAAcwoAAAAICwQCCkcIBAQCYwEAAAAAAAAAAQAAAAEAAABDAAAAcwgAAAB8AGEAZAFTACkCepsKICAgIFNldCB0aGUgZmFjdG9yeSB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZyByZWNvcmQuCgogICAgOnBhcmFtIGZhY3Rvcnk6IEEgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgdG8gaW5zdGFudGlhdGUKICAgIGEgbG9nIHJlY29yZC4KICAgIE4pAdoRX2xvZ1JlY29yZEZhY3RvcnkpAdoHZmFjdG9yeXI3AAAAcjcAAAByOAAAAHIqAAAAWgEAAHMCAAAAAAhjAAAAAAAAAAAAAAAAAQAAAEMAAABzBAAAAHQAUwApAXpICiAgICBSZXR1cm4gdGhlIGZhY3RvcnkgdG8gYmUgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBsb2cgcmVjb3JkLgogICAgKQFyfAAAAHI3AAAAcjcAAAByNwAAAHI4AAAAcikAAABkAQAAcwIAAAAABWMBAAAAAAAAAAIAAAAJAAAAQwAAAHMmAAAAdABkAWQBZAJkA2QCZgBkAWQBgwh9AXwBagFqAnwAgwEBAHwBUwApBHr0CiAgICBNYWtlIGEgTG9nUmVjb3JkIHdob3NlIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgYnkgdGhlIHNwZWNpZmllZCBkaWN0aW9uYXJ5LAogICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIGNvbnZlcnRpbmcgYSBsb2dnaW5nIGV2ZW50IHJlY2VpdmVkIG92ZXIKICAgIGEgc29ja2V0IGNvbm5lY3Rpb24gKHdoaWNoIGlzIHNlbnQgYXMgYSBkaWN0aW9uYXJ5KSBpbnRvIGEgTG9nUmVjb3JkCiAgICBpbnN0YW5jZS4KICAgIE7aAHIBAAAAKQNyfAAAANoIX19kaWN0X1/aBnVwZGF0ZSkC2gRkaWN0ckoAAAByNwAAAHI3AAAAcjgAAAByJAAAAGsBAABzBgAAAAAHFgEMAWMAAAAAAAAAAAAAAAACAAAAQAAAAHMwAAAAZQBaAWQAWgJkAVoDZAJaBGQDWgVkBGQFhABaBmQGZAeEAFoHZAhkCYQAWghkClMAKQvaDFBlcmNlbnRTdHlsZXoLJShtZXNzYWdlKXN6CyUoYXNjdGltZSlzegolKGFzY3RpbWUpYwIAAAAAAAAAAgAAAAIAAABDAAAAcxAAAAB8AXAIfABqAHwAXwFkAFMAKQFOKQLaDmRlZmF1bHRfZm9ybWF02gRfZm10KQJybwAAANoDZm10cjcAAAByNwAAAHI4AAAAcnQAAACAAQAAcwIAAAAAAXoVUGVyY2VudFN0eWxlLl9faW5pdF9fYwEAAAAAAAAAAQAAAAIAAABDAAAAcxIAAAB8AGoAagF8AGoCgwFkAWsFUwApAk5yAQAAACkDcoQAAADaBGZpbmTaDmFzY3RpbWVfc2VhcmNoKQFybwAAAHI3AAAAcjcAAAByOAAAANoIdXNlc1RpbWWDAQAAcwIAAAAAAXoVUGVyY2VudFN0eWxlLnVzZXNUaW1lYwIAAAAAAAAAAgAAAAIAAABDAAAAcwwAAAB8AGoAfAFqARYAUwApAU4pAnKEAAAAcn8AAAApAnJvAAAA2gZyZWNvcmRyNwAAAHI3AAAAcjgAAADaBmZvcm1hdIYBAABzAgAAAAABehNQZXJjZW50U3R5bGUuZm9ybWF0TikJcncAAAByeAAAAHJ5AAAAcoMAAADaDmFzY3RpbWVfZm9ybWF0cocAAABydAAAAHKIAAAAcooAAAByNwAAAHI3AAAAcjcAAAByOAAAAHKCAAAAegEAAHMMAAAACAIEAQQBBAIIAwgDcoIAAABjAAAAAAAAAAAAAAAAAgAAAEAAAABzIAAAAGUAWgFkAFoCZAFaA2QCWgRkA1oFZARkBYQAWgZkBlMAKQfaDlN0ckZvcm1hdFN0eWxlegl7bWVzc2FnZX16CXthc2N0aW1lfXoIe2FzY3RpbWVjAgAAAAAAAAACAAAAAwAAAEMAAABzEAAAAHwAagBqAWYAfAFqAo4BUwApAU4pA3KEAAAAcooAAAByfwAAACkCcm8AAAByiQAAAHI3AAAAcjcAAAByOAAAAHKKAAAAjgEAAHMCAAAAAAF6FVN0ckZvcm1hdFN0eWxlLmZvcm1hdE4pB3J3AAAAcngAAAByeQAAAHKDAAAAcosAAAByhwAAAHKKAAAAcjcAAAByNwAAAHI3AAAAcjgAAAByjAAAAIkBAABzCAAAAAgBBAEEAQQCcowAAABjAAAAAAAAAAAAAAAAAgAAAEAAAABzMAAAAGUAWgFkAFoCZAFaA2QCWgRkAloFZANkBIQAWgZkBWQGhABaB2QHZAiEAFoIZAlTACkK2hNTdHJpbmdUZW1wbGF0ZVN0eWxlegoke21lc3NhZ2V9egoke2FzY3RpbWV9YwIAAAAAAAAAAgAAAAIAAABDAAAAcxwAAAB8AXAIfABqAHwAXwF0AnwAagGDAXwAXwNkAFMAKQFOKQRygwAAAHKEAAAAcgIAAADaBF90cGwpAnJvAAAAcoUAAAByNwAAAHI3AAAAcjgAAABydAAAAJcBAABzBAAAAAABDAF6HFN0cmluZ1RlbXBsYXRlU3R5bGUuX19pbml0X19jAQAAAAAAAAACAAAAAgAAAEMAAABzJAAAAHwAagB9AXwBagFkAYMBZAJrBXAifAFqAXwAagKDAWQCawVTACkDTnoIJGFzY3RpbWVyAQAAACkDcoQAAAByhgAAAHKLAAAAKQJybwAAAHKFAAAAcjcAAAByNwAAAHI4AAAAcogAAACbAQAAcwQAAAAAAQYBehxTdHJpbmdUZW1wbGF0ZVN0eWxlLnVzZXNUaW1lYwIAAAAAAAAAAgAAAAMAAABDAAAAcxAAAAB8AGoAagFmAHwBagKOAVMAKQFOKQNyjgAAAFoKc3Vic3RpdHV0ZXJ/AAAAKQJybwAAAHKJAAAAcjcAAAByNwAAAHI4AAAAcooAAACfAQAAcwIAAAAAAXoaU3RyaW5nVGVtcGxhdGVTdHlsZS5mb3JtYXROKQlydwAAAHJ4AAAAcnkAAABygwAAAHKLAAAAcocAAABydAAAAHKIAAAAcooAAAByNwAAAHI3AAAAcjcAAAByOAAAAHKNAAAAkgEAAHMMAAAACAEEAQQBBAIIBAgEco0AAAB6IiUobGV2ZWxuYW1lKXM6JShuYW1lKXM6JShtZXNzYWdlKXN6HHtsZXZlbG5hbWV9OntuYW1lfTp7bWVzc2FnZX16HyR7bGV2ZWxuYW1lfToke25hbWV9OiR7bWVzc2FnZX0pA/oBJfoBe/oBJGMAAAAAAAAAAAAAAAADAAAAQAAAAHNaAAAAZQBaAWQAWgJkAVoDZQRqBVoGZBRkBGQFhAFaB2QGWghkB1oJZBVkCGQJhAFaCmQKZAuEAFoLZAxkDYQAWgxkDmQPhABaDWQQZBGEAFoOZBJkE4QAWg9kAlMAKRZyCwAAAGHcCAAACiAgICBGb3JtYXR0ZXIgaW5zdGFuY2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgYSBMb2dSZWNvcmQgdG8gdGV4dC4KCiAgICBGb3JtYXR0ZXJzIG5lZWQgdG8ga25vdyBob3cgYSBMb2dSZWNvcmQgaXMgY29uc3RydWN0ZWQuIFRoZXkgYXJlCiAgICByZXNwb25zaWJsZSBmb3IgY29udmVydGluZyBhIExvZ1JlY29yZCB0byAodXN1YWxseSkgYSBzdHJpbmcgd2hpY2ggY2FuCiAgICBiZSBpbnRlcnByZXRlZCBieSBlaXRoZXIgYSBodW1hbiBvciBhbiBleHRlcm5hbCBzeXN0ZW0uIFRoZSBiYXNlIEZvcm1hdHRlcgogICAgYWxsb3dzIGEgZm9ybWF0dGluZyBzdHJpbmcgdG8gYmUgc3BlY2lmaWVkLiBJZiBub25lIGlzIHN1cHBsaWVkLCB0aGUKICAgIHRoZSBzdHlsZS1kZXBlbmRlbnQgZGVmYXVsdCB2YWx1ZSwgIiUobWVzc2FnZSlzIiwgInttZXNzYWdlfSIsIG9yCiAgICAiJHttZXNzYWdlfSIsIGlzIHVzZWQuCgogICAgVGhlIEZvcm1hdHRlciBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGZvcm1hdCBzdHJpbmcgd2hpY2ggbWFrZXMgdXNlIG9mCiAgICBrbm93bGVkZ2Ugb2YgdGhlIExvZ1JlY29yZCBhdHRyaWJ1dGVzIC0gZS5nLiB0aGUgZGVmYXVsdCB2YWx1ZSBtZW50aW9uZWQKICAgIGFib3ZlIG1ha2VzIHVzZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSB1c2VyJ3MgbWVzc2FnZSBhbmQgYXJndW1lbnRzIGFyZSBwcmUtCiAgICBmb3JtYXR0ZWQgaW50byBhIExvZ1JlY29yZCdzIG1lc3NhZ2UgYXR0cmlidXRlLiBDdXJyZW50bHksIHRoZSB1c2VmdWwKICAgIGF0dHJpYnV0ZXMgaW4gYSBMb2dSZWNvcmQgYXJlIGRlc2NyaWJlZCBieToKCiAgICAlKG5hbWUpcyAgICAgICAgICAgIE5hbWUgb2YgdGhlIGxvZ2dlciAobG9nZ2luZyBjaGFubmVsKQogICAgJShsZXZlbG5vKXMgICAgICAgICBOdW1lcmljIGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlIChERUJVRywgSU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgV0FSTklORywgRVJST1IsIENSSVRJQ0FMKQogICAgJShsZXZlbG5hbWUpcyAgICAgICBUZXh0IGxvZ2dpbmcgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlICgiREVCVUciLCAiSU5GTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJXQVJOSU5HIiwgIkVSUk9SIiwgIkNSSVRJQ0FMIikKICAgICUocGF0aG5hbWUpcyAgICAgICAgRnVsbCBwYXRobmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIGxvZ2dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB3YXMgaXNzdWVkIChpZiBhdmFpbGFibGUpCiAgICAlKGZpbGVuYW1lKXMgICAgICAgIEZpbGVuYW1lIHBvcnRpb24gb2YgcGF0aG5hbWUKICAgICUobW9kdWxlKXMgICAgICAgICAgTW9kdWxlIChuYW1lIHBvcnRpb24gb2YgZmlsZW5hbWUpCiAgICAlKGxpbmVubylkICAgICAgICAgIFNvdXJjZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgbG9nZ2luZyBjYWxsIHdhcyBpc3N1ZWQKICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGF2YWlsYWJsZSkKICAgICUoZnVuY05hbWUpcyAgICAgICAgRnVuY3Rpb24gbmFtZQogICAgJShjcmVhdGVkKWYgICAgICAgICBUaW1lIHdoZW4gdGhlIExvZ1JlY29yZCB3YXMgY3JlYXRlZCAodGltZS50aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAg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Y2FsbGVkIGZyb20gZm9ybWF0KCkgYnkgYSBmb3JtYXR0ZXIgd2hpY2gKICAgICAgICB3YW50cyB0byBtYWtlIHVzZSBvZiBhIGZvcm1hdHRlZCB0aW1lLiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbgogICAgICAgIGluIGZvcm1hdHRlcnMgdG8gcHJvdmlkZSBmb3IgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50LCBidXQgdGhlCiAgICAgICAgYmFzaWMgYmVoYXZpb3VyIGlzIGFzIGZvbGxvd3M6IGlmIGRhdGVmbXQgKGEgc3RyaW5nKSBpcyBzcGVjaWZpZWQsCiAgICAgICAgaXQgaXMgdXNlZCB3aXRoIHRpbWUuc3RyZnRpbWUoKSB0byBmb3JtYXQgdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlCiAgICAgICAgcmVjb3JkLiBPdGhlcndpc2UsIGFuIElTTzg2MDEtbGlrZSAob3IgUkZDIDMzMzktbGlrZSkgZm9ybWF0IGlzIHVzZWQuCiAgICAgICAgVGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gdXNlcyBhIHVzZXItY29uZmlndXJhYmxlCiAgICAgICAgZnVuY3Rpb24gdG8gY29udmVydCB0aGUgY3JlYXRpb24gdGltZSB0byBhIHR1cGxlLiBCeSBkZWZhdWx0LAogICAgICAgIHRpbWUubG9jYWx0aW1lKCkgaXMgdXNlZDsgdG8gY2hhbmdlIHRoaXMgZm9yIGEgcGFydGljdWxhciBmb3JtYXR0ZXIKICAgICAgICBpbnN0YW5jZSwgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lCiAgICAgICAgc2lnbmF0dXJlIGFzIHRpbWUubG9jYWx0aW1lKCkgb3IgdGltZS5nbXRpbWUoKS4gVG8gY2hhbmdlIGl0IGZvciBhbGwKICAgICAgICBmb3JtYXR0ZXJzLCBmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCBhbGwgbG9nZ2luZyB0aW1lcyB0byBiZSBzaG93biBpbiBHTVQsCiAgICAgICAgc2V0IHRoZSAnY29u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cm9tIGhhbmRsZXJzIHdoZW4gYW4gZXhjZXB0aW9uIGlzCiAgICAgICAgZW5jb3VudGVyZWQgZHVyaW5nIGFuIGVtaXQoKSBjYWxsLiBJZiByYWlzZUV4Y2VwdGlvbnMgaXMgZmFsc2UsCiAgICAgICAgZXhjZXB0aW9ucyBnZXQgc2lsZW50bHkgaWdub3JlZC4gVGhpcyBpcyB3aGF0IGlzIG1vc3RseSB3YW50ZWQKICAgICAgICBmb3IgYSBsb2dnaW5nIHN5c3RlbSAtIG1vc3QgdXNlcnMgd2lsbCBub3QgY2FyZSBhYm91dCBlcnJvcnMgaW4KICAgICAgICB0aGUgbG9nZ2luZyBzeXN0ZW0sIHRoZXkgYXJlIG1vcmUgaW50ZXJlc3RlZCBpbiBhcHBsaWNhdGlvbiBlcnJvcnMuCiAgICAgICAgWW91IGNvdWxkLCBob3dldmVyLCByZXBsYWNlIHRoaXMgd2l0aCBhIGN1c3RvbSBoYW5kbGVyIGlmIHlvdSB3aXNoLgogICAgICAgIFRoZSByZWNvcmQgd2hpY2ggd2FzIGJlaW5nIHByb2Nlc3NlZCBpcyBwYXNzZWQgaW4gdG8gdGhpcyBtZXRob2QuCiAgICAgICAgehYtLS0gTG9nZ2luZyBlcnJvciAtLS0KTnoMQ2FsbCBzdGFjazoKcgEAAAApAdoEZmlsZXodTG9nZ2VkIGZyb20gZmlsZSAlcywgbGluZSAlcwp6Gk1lc3NhZ2U6ICVyCkFyZ3VtZW50czogJXMKendVbmFibGUgdG8gcHJpbnQgdGhlIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyAtIHBvc3NpYmxlIGZvcm1hdHRpbmcgZXJyb3IuClVzZSB0aGUgdHJhY2ViYWNrIGFib3ZlIHRvIGhlbHAgZmluZCB0aGUgZXJyb3IuCikWciwAAAByPQAAANoGc3RkZXJyckEAAADaBXdyaXRlcqMAAABypAAAAHJCAAAAcloAAAByWwAAANoHZGlybmFtZdoGZl9jb2Rl2gtjb19maWxlbmFtZdoIX19wYXRoX19yQwAAANoLcHJpbnRfc3RhY2tyXQAAAHJjAAAAclMAAAByVwAAAHJAAAAA2gdPU0Vycm9yKQZybwAAAHKJAAAAcp0AAADaAXZyqAAAANoFZnJhbWVyNwAA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ZBWEAFoNZQ1aDmQWZBeEAFoPZDJkGWQahAFaEGQzZBxkHYQBWhFkNGQeZB+EAVoSZCBkIYQAWhNkImQjhABaFGQkZCWEAFoVZCZkJ4QAWhZkKGQphABaF2QqZCuEAFoYZCxkLYQAWhlkLmQvhABaGmQwZDGEAFobZBtTACk1cg8AAABhcgMAAAogICAgSW5zdGFuY2VzIG9mIHRoZSBMb2dnZXIgY2xhc3MgcmVwcmVzZW50IGEgc2luZ2xlIGxvZ2dpbmcgY2hhbm5lbC4gQQogICAgImxvZ2dpbmcgY2hhbm5lbCIgaW5kaWNhdGVzIGFuIGFyZWEgb2YgYW4gYXBwbGljYXRpb24uIEV4YWN0bHkgaG93IGFuCiAgICAiYXJlYSIgaXMgZGVmaW5lZCBpcyB1cCB0byB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyLiBTaW5jZSBhbgogICAgYXBwbGljYXRpb24gY2FuIGhhdmUgYW55IG51bWJlciBvZiBhcmVhcywgbG9nZ2luZyBjaGFubmVscyBhcmUgaWRlbnRpZmllZAogICAgYnkgYSB1bmlxdWUgc3RyaW5nLiBBcHBsaWNhdGlvbiBhcmVhcyBjYW4gYmUgbmVzdGVkIChlLmcuIGFuIGFyZWEKICAgIG9mICJpbnB1dCBwcm9jZXNzaW5nIiBtaWdodCBpbmNsdWRlIHN1Yi1hcmVhcyAicmVhZCBDU1YgZmlsZXMiLCAicmVhZAogICAgWExTIGZpbGVzIiBhbmQgInJlYWQgR251bWVyaWMgZmlsZXMiKS4gVG8gY2F0ZXIgZm9yIHRoaXMgbmF0dXJhbCBuZXN0aW5nLAogICAgY2hhbm5lbCBuYW1lcyBhcmUgb3JnYW5pemVkIGludG8gYSBuYW1lc3BhY2UgaGllcmFyY2h5IHdoZXJlIGxldmVscyBhcmUKICAgIHNlcGFyYXRlZCBieSBwZXJpb2RzLCBtdWNoIGxpa2UgdGhlIEphdmEgb3IgUHl0aG9uIHBhY2thZ2UgbmFtZXNwYWNlLiBTbwogICAgaW4gdGhlIGluc3RhbmNlIGdpdmVuIGFib3ZlLCBjaGFubmVsIG5hbWVzIG1pZ2h0IGJlICJpbnB1dCIgZm9yIHRoZSB1cHBlcgogICAgbGV2ZWwsIGFuZCAiaW5w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aW1wbGUgc2NyaXB0cwogICAgdG8gZG8gb25lLXNob3QgY29uZmlndXJhdGlvbiBvZiB0aGUgbG9nZ2luZyBwYWNrYWdlLgoKICAgIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBjcmVhdGUgYSBTdHJlYW1IYW5kbGVyIHdoaWNoIHdyaXRlcyB0bwogICAgc3lzLnN0ZGVyciwgc2V0IGEgZm9ybWF0dGVyIHVzaW5nIHRoZSBCQVNJQ19GT1JNQVQgZm9ybWF0IHN0cmluZywgYW5kCiAgICBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9nZ2VyLgoKICAgIEEgbnVtYmVyIG9mIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIG1heSBiZSBzcGVjaWZpZWQsIHdoaWNoIGNhbiBhbHRlcgogICAgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgoKICAgIGZpbGVuYW1lICBTcGVjaWZpZXMgdGhhdCBhIEZpbGVIYW5kbGVyIGJlIGNyZWF0ZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKICAgICAgICAgICAgICBmaWxlbmFtZSwgcmF0aGVyIHRoYW4gYSBTdHJlYW1IYW5kbGVyLgogICAgZmlsZW1vZGUgIFNwZWNpZmllcyB0aGUgbW9kZSB0byBvcGVuIHRoZSBmaWxlLCBpZiBmaWxlbmFtZSBpcyBzcGVjaWZpZWQKICAgICAgICAgICAgICAoaWYgZmlsZW1vZGUgaXMgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvICdhJykuCiAgICBmb3JtYXQgICAgVXNlIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBmb3IgdGhlIGhhbmRsZXIuCiAgICBkYXRlZm10ICAgVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZS90aW1lIGZvcm1hdC4KICAgIHN0eWxlICAgICBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkLCB1c2UgdGhpcyB0byBzcGVjaWZ5IHRoZQogICAgICAgICAgICAgIHR5cGUgb2YgZm9ybWF0IHN0cmluZyAocG9zc2libGUgdmFsdWVzICclJywgJ3snLCAnJCcsIGZvcgogICAgICAgICAgICAgICUtZm9ybWF0dGluZywgOm1ldGg6YHN0ci5mb3JtYXRgIGFuZCA6Y2xhc3M6YHN0cmluZy5UZW1wbGF0ZWAKICAgICAgICAgICAgICAtIGRlZmF1bHRzIHRvICclJykuCiAgICBsZXZlbCAgICAgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkIGxldmVsLgogICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCiAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgogICAgICAgICAgICAgIGluIHRoZSBsaXN0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBmb3JtYXR0ZXIgYXNzaWduZWQgd2lsbCBiZQogICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgoKICAgIE5vdGUgdGhhdCB5b3UgY291bGQgc3BlY2lmeSBhIHN0cmVhbSBjcmVhdGVkIHVzaW5nIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCiAgICByZW1lbWJlcmVkIHRoYXQgU3RyZWFtSGFuZGxlciBkb2VzIG5vdCBjbG9zZSBpdHMgc3RyZWFtIChzaW5jZSBpdCBtYXkgYmUKICAgIHVzaW5nIHN5cy5zdGRvdXQgb3Ig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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 9
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
config.cpython-36.opt-1.pyc
22.81 KB
lrw-r--r--
2024-04-17 17:19:44
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.opt-2.pyc
18.78 KB
lrw-r--r--
2024-04-17 17:19:27
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-36.pyc
22.85 KB
lrw-r--r--
2024-04-17 17:19:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-1.pyc
42.25 KB
lrw-r--r--
2024-04-17 17:19:44
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.opt-2.pyc
23.71 KB
lrw-r--r--
2024-04-17 17:19:27
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-36.pyc
42.25 KB
lrw-r--r--
2024-04-17 17:19:48
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
58.96 KB
lrw-r--r--
2024-04-17 17:19:44
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-2.pyc
31.76 KB
lrw-r--r--
2024-04-17 17:19:27
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
58.99 KB
lrw-r--r--
2024-04-17 17:19:48
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).