REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 60.08 KB
Close
//opt/alt/python34/lib64/python3.4/logging/__pycache__/__init__.cpython-34.pyo
Text
Base64
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Q0FM2gVERUJVR9oFRVJST1LaBUZBVEFM2gtGaWxlSGFuZGxlctoGRmlsdGVy2glGb3JtYXR0ZXLaB0hhbmRsZXLaBElORk/aCUxvZ1JlY29yZNoGTG9nZ2Vy2g1Mb2dnZXJBZGFwdGVy2gZOT1RTRVTaC051bGxIYW5kbGVy2g1TdHJlYW1IYW5kbGVy2gRXQVJO2gdXQVJOSU5H2gxhZGRMZXZlbE5hbWXaC2Jhc2ljQ29uZmln2g9jYXB0dXJlV2FybmluZ3PaCGNyaXRpY2Fs2gVkZWJ1Z9oHZGlzYWJsZdoFZXJyb3LaCWV4Y2VwdGlvbtoFZmF0YWzaDGdldExldmVsTmFtZdoJZ2V0TG9nZ2Vy2g5nZXRMb2dnZXJDbGFzc9oEaW5mb9oDbG9n2g1tYWtlTG9nUmVjb3Jk2g5zZXRMb2dnZXJDbGFzc9oEd2FybtoHd2FybmluZ9oTZ2V0TG9nUmVjb3JkRmFjdG9yedoTc2V0TG9nUmVjb3JkRmFjdG9yedoKbGFzdFJlc29ydHomVmluYXkgU2FqaXAgPHZpbmF5X3NhamlwQHJlZC1kb3ZlLmNvbT5aCnByb2R1Y3Rpb256BzAuNS4xLjJ6EDA3IEZlYnJ1YXJ5IDIwMTBU6TIAAADpKAAAAOkeAAAA6RQAAADpCgAAAGMBAAAAAAAAAAEAAAAGAAAAQwAAAHMgAAAAdAAAagEAfAAAdAIAagEAfAAAZAEAfAAAFoMCAIMCAFMpAmEPAgAACiAgICBSZXR1cm4gdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgbG9nZ2luZyBsZXZlbCAnbGV2ZWwnLgoKICAgIElmIHRoZSBsZXZlbCBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQgbGV2ZWxzIChDUklUSUNBTCwgRVJST1IsIFdBUk5JTkcsCiAgICBJTkZPLCBERUJVRykgdGhlbiB5b3UgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZy4gSWYgeW91IGhhdmUKICAgIGFzc29jaWF0ZWQgbGV2ZWxzIHdpdGggbmFtZXMgdXNpbmcgYWRkTGV2ZWxOYW1lIHRoZW4gdGhlIG5hbWUgeW91IGhhdmUKICAgIGFzc29jaWF0ZWQgd2l0aCAnbGV2ZWwnIGlzIHJldHVybmVkLgoK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ZA8AhAAAWg0AZBAAZBEAhAAAWg4AZBIAZBMAhAAAWg8AZAIAUykUcgsAAABhpwgAAAogICAgRm9ybWF0dGVyIGluc3RhbmNlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGEgTG9nUmVjb3JkIHRvIHRleHQuCgogICAgRm9ybWF0dGVycyBuZWVkIHRvIGtub3cgaG93IGEgTG9nUmVjb3JkIGlzIGNvbnN0cnVjdGVkLiBUaGV5IGFyZQogICAgcmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgYSBMb2dSZWNvcmQgdG8gKHVzdWFsbHkpIGEgc3RyaW5nIHdoaWNoIGNhbgogICAgYmUgaW50ZXJwcmV0ZWQgYnkgZWl0aGVyIGEgaHVtYW4gb3IgYW4gZXh0ZXJuYWwgc3lzdGVtLiBUaGUgYmFzZSBGb3JtYXR0ZXIKICAgIGFsbG93cyBhIGZvcm1hdHRpbmcgc3RyaW5nIHRvIGJlIHNwZWNpZmllZC4gSWYgbm9uZSBpcyBzdXBwbGllZCwgdGhlCiAgICBkZWZhdWx0IHZhbHVlIG9mICIlcyhtZXNzYWdlKSIgaXMgdXNlZC4KCiAgICBUaGUgRm9ybWF0dGVyIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIGEgZm9ybWF0IHN0cmluZyB3aGljaCBtYWtlcyB1c2Ugb2YKICAgIGtub3dsZWRnZSBvZiB0aGUgTG9nUmVjb3JkIGF0dHJpYnV0ZXMgLSBlLmcuIHRoZSBkZWZhdWx0IHZhbHVlIG1lbnRpb25lZAogICAgYWJvdmUgbWFrZXMgdXNlIG9mIHRoZSBmYWN0IHRoYXQgdGhlIHVzZXIncyBtZXNzYWdlIGFuZCBhcmd1bWVudHMgYXJlIHByZS0KICAgIGZvcm1hdHRlZCBpbnRvIGEgTG9nUmVjb3JkJ3MgbWVzc2FnZSBhdHRyaWJ1dGUuIEN1cnJlbnRseSwgdGhlIHVzZWZ1bAogICAgYXR0cmlidXRlcyBpbiBhIExvZ1JlY29yZCBhcmUgZGVzY3JpYmVkIGJ5OgoKICAgICUobmFtZSlzICAgICAgICAgICAgTmFtZSBvZiB0aGUgbG9nZ2VyIChsb2dnaW5nIGNoYW5uZWwpCiAgICAlKGxldmVsbm8pcyAgICAgICAgIE51bWVyaWMgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKERFQlVHLCBJTkZPLAogICAgICAgICAgICAgICAgICAgICAgICBXQVJOSU5HLCBFUlJPUiwgQ1JJVElDQUwpCiAgICAlKGxldmVsbmFtZSlzICAgICAgIFRleHQgbG9nZ2luZyBsZXZlbCBmb3IgdGhlIG1lc3NhZ2UgKCJERUJVRyIsICJJTkZPIiwKICAgICAgICAgICAgICAgICAgICAgICAgIldBUk5JTkciLCAiRVJST1IiLCAiQ1JJVElDQUwiKQogICAgJShwYXRobmFtZSlzICAgICAgICBGdWxsIHBhdGhuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUgbG9nZ2luZwogICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHdhcyBpc3N1ZWQgKGlmIGF2YWlsYWJsZSkKICAgICUoZmlsZW5hbWUpcyAgICAgICAgRmlsZW5hbWUgcG9ydGlvbiBvZiBwYXRobmFtZQogICAgJShtb2R1bGUpcyAgICAgICAgICBNb2R1bGUgKG5hbWUgcG9ydGlvbiBvZiBmaWxlbmFtZSkKICAgICUobGluZW5vKWQgICAgICAgICAgU291cmNlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBsb2dnaW5nIGNhbGwgd2FzIGlzc3VlZAogICAgICAgICAgICAgICAgICAgICAgICAoaWYgYXZhaWxhYmxlKQogICAgJShmdW5jTmFtZSlzICAgICAgICBGdW5jdGlvbiBuYW1lCiAgICAlKGNyZWF0ZWQpZiAgICAgICAgIFRpbWUgd2hlbiB0aGUgTG9nUmVjb3JkIHdhcyBjcmVhdGVkICh0aW1lLnRpbWUoKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUpCiAgICAlKGFzY3RpbWUpcyAgICAgICAgIFRleHR1YWwgdGltZSB3aGVuIHRoZSBMb2dSZWNvcmQgd2FzIGNyZWF0ZWQKICAgICUobXNlY3MpZCAgICAgICAgICAgTWlsbGlzZWNvbmQgcG9ydGlvbiBvZiB0aGUgY3JlYXRpb24gdGltZQogICAgJShyZWxhdGl2ZUNyZWF0ZWQpZCBUaW1l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c3BlY2lmaWMgcmVxdWlyZW1lbnQsIGJ1dCB0aGUKICAgICAgICBiYXNpYyBiZWhhdmlvdXIgaXMgYXMgZm9sbG93czogaWYgZGF0ZWZtdCAoYSBzdHJpbmcpIGlzIHNwZWNpZmllZCwKICAgICAgICBpdCBpcyB1c2VkIHdpdGggdGltZS5zdHJmdGltZSgpIHRvIGZvcm1hdCB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUKICAgICAgICByZWNvcmQuIE90aGVyd2lzZSwgdGhlIElTTzg2MDEgZm9ybWF0IGlzIHVzZWQuIFRoZSByZXN1bHRpbmcKICAgICAgICBzdHJpbmcgaXMgcmV0dXJuZWQuIFRoaXMgZnVuY3Rpb24gdXNlcyBhIHVzZXItY29uZmlndXJhYmxlIGZ1bmN0aW9uCiAgICAgICAgdG8gY29udmVydCB0aGUgY3JlYXRpb24gdGltZSB0byBhIHR1cGxlLiBCeSBkZWZhdWx0LCB0aW1lLmxvY2FsdGltZSgpCiAgICAgICAgaXMgdXNlZDsgdG8gY2hhbmdlIHRoaXMgZm9yIGEgcGFydGljdWxhciBmb3JtYXR0ZXIgaW5zdGFuY2UsIHNldCB0aGUKICAgICAgICAnY29udmVydGVyJyBhdHRyaWJ1dGUgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcwogICAgICAgIHRpbWUubG9jYWx0aW1lKCkgb3IgdGltZS5nbXRpbWUoKS4gVG8gY2hhbmdlIGl0IGZvciBhbGwgZm9ybWF0dGVycywKICAgICAgICBmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCBhbGwgbG9nZ2luZyB0aW1lcyB0byBiZSBzaG93biBpbiBHTVQsCiAgICAgICAgc2V0IHRoZSAnY29udmVydGVyJyBhdHRyaWJ1dGUgaW4gdGhlIEZvcm1hdHRlciBjbGFzcy4KICAgICAgICApB9oJY29udmVydGVycmEAAAByTgAAAFoIc3RyZnRpbWXaE2RlZmF1bHRfdGltZV9mb3JtYXTaE2RlZmF1bHRfbXNlY19mb3JtYXRyYgAAACkGcmwAAAByhQAAAHKTAAAAcnAAAADaAXPaAXRyNAAAAHI0AAAAcjUAAADaCmZvcm1hdFRp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AQBqAgBqBABkAQCDAQABdAUAagYAfAIAfAMAfAQAZAIAdAEAagIAgwUAAXQBAGoCAGoEAGQDAIMBAAF8BABqBwB9BQB4NQB8BQBypgB0CABqCQBqCgB8BQBqCwBqDACDAQB0DQBkBAAZawIAcqYAfAUAag4AfQUAcXIAV3wFAHLGAHQFAGoPAHwFAGQFAHQBAGoCAIMBAQFuIAB0AQBqAgBqBABkBgB8AQBqEAB8AQBqEQBmAgAWgwEAAXkkAHQBAGoCAGoEAGQHAHwBAGoSAHwBAGoTAGYCABaDAQABV24iAAR0FABrCgByLgEBAQF0AQBqAgBqBABkCACDAQABWW4BAFhXbhIABHQVAGsKAHJEAQEBAVluAQBYV2QCAH4CAH4DAH4EAFhuAABkAgBTKQlhRAIAAAogICAgICAgIEhhbmRsZSBlcnJvcnMgd2hpY2ggb2NjdXIgZHVyaW5nIGFuIGVtaXQoKSBjYWxsLgoKICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGZyb20gaGFuZGxlcnMgd2hlbiBhbiBleGNlcHRpb24gaXMKICAgICAgICBlbmNvdW50ZXJlZCBkdXJpbmcgYW4gZW1pdCgpIGNhbGwuIElmIHJhaXNlRXhjZXB0aW9ucyBpcyBmYWxzZSwKICAgICAgICBleGNlcHRpb25zIGdldCBzaWxlbnRseSBpZ25vcmVkLiBUaGlzIGlzIHdoYXQgaXMgbW9zdGx5IHdhbnRlZAogICAgICAgIGZvciBhIGxvZ2dpbmcgc3lzdGVtIC0gbW9zdCB1c2VycyB3aWxsIG5vdCBjYXJlIGFib3V0IGVycm9ycyBpbgogICAgICAgIHRoZSBsb2dnaW5nIHN5c3RlbSwgdGhleSBhcmUgbW9yZSBpbnRlcmVzdGVkIGluIGFwcGxpY2F0aW9uIGVycm9ycy4KICAgICAgICBZb3UgY291bGQsIGhvd2V2ZXIsIHJlcGxhY2UgdGhpcyB3aXRoIGEgY3VzdG9tIGhhbmRsZXIgaWYgeW91IHdpc2guCiAgICAgICAgVGhlIHJlY29yZCB3aGljaCB3YXMgYmVpbmcgcHJvY2Vzc2VkIGlzIHBhc3NlZCBpbiB0byB0aGlzIG1ldGhvZC4KICAgICAgICB6Fi0tLSBMb2dn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b3IgdXNlIGJ5IHNpbXBsZSBzY3JpcHRzCiAgICB0byBkbyBvbmUtc2hvdCBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2dnaW5nIHBhY2thZ2UuCgogICAgVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGNyZWF0ZSBhIFN0cmVhbUhhbmRsZXIgd2hpY2ggd3JpdGVzIHRvCiAgICBzeXMuc3RkZXJyLCBzZXQgYSBmb3JtYXR0ZXIgdXNpbmcgdGhlIEJBU0lDX0ZPUk1BVCBmb3JtYXQgc3RyaW5nLCBhbmQKICAgIGFkZCB0aGUgaGFuZGxlciB0byB0aGUgcm9vdCBsb2dnZXIuCgogICAgQSBudW1iZXIgb2Ygb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHMgbWF5IGJlIHNwZWNpZmllZCwgd2hpY2ggY2FuIGFsdGVyCiAgICB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCgogICAgZmlsZW5hbWUgIFNwZWNpZmllcyB0aGF0IGEgRmlsZUhhbmRsZXIgYmUgY3JlYXRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgIGZpbGVuYW1lLCByYXRoZXIgdGhhbiBhIFN0cmVhbUhhbmRsZXIuCiAgICBmaWxlbW9kZSAgU3BlY2lmaWVzIHRoZSBtb2RlIHRvIG9wZW4gdGhlIGZpbGUsIGlmIGZpbGVuYW1lIGlzIHNwZWNpZmllZAogICAgICAgICAgICAgIChpZiBmaWxlbW9kZSBpcyB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gJ2EnKS4KICAgIGZvcm1hdCAgICBVc2UgdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nIGZvciB0aGUgaGFuZGxlci4KICAgIGRhdGVmbXQgICBVc2UgdGhlIHNwZWNpZmllZCBkYXRlL3RpbWUgZm9ybWF0LgogICAgc3R5bGUgICAgIElmIGEgZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQsIHVzZSB0aGlzIHRvIHNwZWNpZnkgdGhlCiAgICAgICAgICAgICAgdHlwZSBvZiBmb3JtYXQgc3RyaW5nIChwb3NzaWJsZSB2YWx1ZXMgJyUnLCAneycsICckJywgZm9yCiAgICAgICAgICAgICAgJS1mb3JtYXR0aW5nLCA6bWV0aDpgc3RyLmZvcm1hdGAgYW5kIDpjbGFzczpgc3RyaW5nLlRlbXBsYXRlYAogICAgICAgICAgICAgIC0gZGVmYXVsdHMgdG8gJyUnKS4KICAgIGxldmVsICAgICBTZXQgdGhlIHJvb3QgbG9nZ2VyIGxldmVsIHRvIHRoZSBzcGVjaWZpZWQgbGV2ZWwuCiAgICBzdHJlYW0gICAgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlIFN0cmVhbUhhbmRsZXIuIE5vdGUKICAgICAgICAgICAgICB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGgKICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KICAgIGhhbmRsZXJzICBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGFscmVhZHkgY3JlYXRlZAogICAgICAgICAgICAgIGhhbmRsZXJzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSByb290IGhhbmRsZXIuIEFueSBoYW5kbGVyCiAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCiAgICAgICAgICAgICAgYXNzaWduZWQgdGhlIGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uCgogICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKICAgIHJlbWVtYmVyZWQgdGhhdCBTdHJlYW1IYW5kbGVyIGRvZXMgbm90IGNsb3NlIGl0cyBzdHJlYW0gKHNpbmNlIGl0IG1heSBiZQogICAgdXNpbmcgc3lz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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 6
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
config.cpython-34.pyc
24.86 KB
lrw-r--r--
2024-04-17 17:10:11
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
config.cpython-34.pyo
24.81 KB
lrw-r--r--
2024-04-17 17:10:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-34.pyc
44.10 KB
lrw-r--r--
2024-04-17 17:10:11
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
handlers.cpython-34.pyo
44.10 KB
lrw-r--r--
2024-04-17 17:10:11
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-34.pyc
60.12 KB
lrw-r--r--
2024-04-17 17:10:11
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-34.pyo
60.08 KB
lrw-r--r--
2024-04-17 17:10:06
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).