BLUE
PHP 7.4.33
Path:
//usr/lib/python3/dist-packages/click/__pycache__
Run
Logout
Edit File
Size: 26.18 KB
Close
//usr/lib/python3/dist-packages/click/__pycache__/termui.cpython-310.pyc
Text
Base64
bw0NCgAAAACtK2NhTnEAAOMAAAAAAAAAAAAAAAAAAAAAIQAAAEAAAABz1AUAAFUAZABkAWwAWgBkAGQBbAFaAWQAZAFsAloCZABkAWwDWgNkAGQBbARaBGQAZAFsBVoFZABkAWwFWgZkAGQCbAdtB1oIAQBkA2QEbAltCloKAQBkA2QFbAltC1oLAQBkA2QGbAltDFoMAQBkA2QHbA1tDloOAQBkA2QIbA1tD1oPAQBkA2QJbBBtEVoRAQBkA2QKbBJtE1oTAQBkA2QLbBJtFFoUAQBkA2QMbBJtFVoVAQBkA2QNbBZtF1oXAQBkA2QObBZtGFoYAQBlBmoZcm5kA2QPbBptG1obAQBlBqAcZBChAVodZR5aH2UGaiBlIWcBZSFmAhkAZSJkETwAaQBkEmQTkwFkFGQVkwFkFmQXkwFkGGQZkwFkGmQbkwFkHGQdkwFkHmQfkwFkIGQhkwFkImQjkwFkJGQlkwFkJmQnkwFkKGQpkwFkKmQrkwFkLGQtkwFkLmQvkwFkMGQxkwFkMmQzkwFaI2Q0WiRkNWUhZDZlIWYEZDdkOIQEWiUJOQkBCToJAWSYZDtlIWQ8ZSFkPWUmZD5lBmonZQZqKBkAZD9lJmRAZQZqJ2UVGQBkNmUhZg5kQWRChAVaKWQ+ZQZqKGQ2ZQZqKGYEZENkRIQEWioJAQk5CTkJAQkBCUUJOgk5CTpkmWQ7ZSFkPmUGaidlBmooGQBkRmUmZEdlBmorZSZlIWYCGQBkQGUGaidlBmorZRVlBmooZgIZABkAZEhlBmonZQZqIGUhZwFlBmooZgIZABkAZEllIWQ9ZSZkSmUmZD9lJmQ2ZQZqKGYWZEtkNYQFWiwJOQk5CUUJOgk5ZJpkO2UhZD5lBmonZSYZAGRMZSZkSWUhZD1lJmRKZSZkNmUmZg5kTWROhAVaLWQ2ZQNqLmYCZE9kUIQEWi8JAWSbZFFlBmorZQZqMGUhGQBlBmogZwBlBmowZSEZAGYCGQBlIWYDGQBkUmUGaidlJhkAZDZkAWYGZFNkVIQFWjEJAQkBCQEJOgkBCTkJAQlVCVYJVwlYCR8JAQkBCQNknGRZZQZqJ2UGajBlHRkAGQBkWmUGaidlMhkAZFtlBmonZSEZAGRcZSZkXWUGaidlJhkAZF5lJmRfZQZqJ2UGaiBlBmonZR0ZAGcBZQZqJ2UhGQBmAhkA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byB0cnVlIHRoZW4gdGhlIGlucHV0IHZhbHVlIHdpbGwKICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWRkZW4uCiAgICA6cGFyYW0gY29uZmlybWF0aW9uX3Byb21wdDogUHJvbXB0IGEgc2Vjb25kIHRpbWUgdG8gY29uZmlybSB0aGUKICAgICAgICB2YWx1ZS4gQ2FuIGJlIHNldCB0byBhIHN0cmluZyBpbnN0ZWFkIG9mIGBgVHJ1ZWBgIHRvIGN1c3RvbWl6ZQogICAgICAgIHRoZSBtZXNzYWdlLgogICAgOnBhcmFtIHR5cGU6IHRoZSB0eXBlIHRvIHVzZSB0byBjaGVjayB0aGUgdmFsdWUgYWdhaW5zdC4KICAgIDpwYXJhbSB2YWx1ZV9wcm9jOiBpZiB0aGlzIHBhcmFtZXRlciBpcyBwcm92aWRlZCBpdCdzIGEgZnVuY3Rpb24gdGhhdAogICAgICAgICAgICAgICAgICAgICAgIGlzIGludm9rZWQgaW5zdGVhZCBvZiB0aGUgdHlwZSBjb252ZXJzaW9uIHRvCiAgICAgICAgICAgICAgICAgICAgICAgY29udmVydCBhIHZhbHVlLgogICAgOnBhcmFtIHByb21wdF9zdWZmaXg6IGEgc3VmZml4IHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBwcm9tcHQuCiAgICA6cGFyYW0gc2hvd19kZWZhdWx0OiBzaG93cyBvciBoaWRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgcHJvbXB0LgogICAgOnBhcmFtIGVycjogaWYgc2V0IHRvIHRydWUgdGhlIGZpbGUgZGVmYXVsdHMgdG8gYGBzdGRlcnJgYCBpbnN0ZWFkIG9mCiAgICAgICAgICAgICAgICBgYHN0ZG91dGBgLCB0aGUgc2FtZSBhcyB3aXRoIGVjaG8uCiAgICA6cGFyYW0gc2hvd19jaG9pY2VzOiBTaG93IG9yIGhpZGUgY2hvaWNlcyBpZiB0aGUgcGFzc2VkIHR5cGUgaXMgYSBDaG9pY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0eXBlIGlzIGEgQ2hvaWNlIG9mIGVpdGhlciBkYXkgb3Igd2VlaywKICAg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aXRlcmF0ZSBvdmVyIHNvbWV0aGluZyB3aGlsZSBzaG93aW5nIGEgcHJvZ3Jlc3MgYmFyLiAgSXQgd2lsbAogICAgZWl0aGVyIGl0ZXJhdGUgb3ZlciB0aGUgYGl0ZXJhYmxlYCBvciBgbGVuZ3RoYCBpdGVtcyAodGhhdCBhcmUgY291bnRlZAogICAgdXApLiAgV2hpbGUgaXRlcmF0aW9uIGhhcHBlbnMsIHRoaXMgZnVuY3Rpb24gd2lsbCBwcmludCBhIHJlbmRlcmVkCiAgICBwcm9ncmVzcyBiYXIgdG8gdGhlIGdpdmVuIGBmaWxlYCAoZGVmYXVsdHMgdG8gc3Rkb3V0KSBhbmQgd2lsbCBhdHRlbXB0CiAgICB0byBjYWxjdWxhdGUgcmVtYWluaW5nIHRpbWUgYW5kIG1vcmUuICBCeSBkZWZhdWx0LCB0aGlzIHByb2dyZXNzIGJhcgogICAgd2lsbCBub3QgYmUgcmVuZGVyZWQgaWYgdGhlIGZpbGUgaXMgbm90IGEgdGVybWluYWwuCgogICAgVGhlIGNvbnRleHQgbWFuYWdlciBjcmVhdGVzIHRoZSBwcm9ncmVzcyBiYXIuICBXaGVuIHRoZSBjb250ZXh0CiAgICBtYW5hZ2VyIGlzIGVudGVyZWQgdGhlIHByb2dyZXNzIGJhciBpcyBhbHJlYWR5IGNyZWF0ZWQuICBXaXRoIGV2ZXJ5CiAgICBpdGVyYXRpb24gb3ZlciB0aGUgcHJvZ3Jlc3MgYmFyLCB0aGUgaXRlcmFibGUgcGFzc2VkIHRvIHRoZSBiYXIgaXMKICAgIGFkdmFuY2VkIGFuZCB0aGUgYmFyIGlzIHVwZGF0ZWQuICBXaGVuIHRoZSBjb250ZXh0IG1hbmFnZXIgZXhpdHMsCiAgICBhIG5ld2xpbmUgaXMgcHJpbnRlZCBhbmQgdGhlIHByb2dyZXNzIGJhciBpcyBmaW5hbGl6ZWQgb24gc2NyZWVuLgoKICAgIE5vdGU6IFRoZSBwcm9ncmVzcyBiYXIgaXMgY3VycmVudGx5IGRlc2lnbmVkIGZvciB1c2UgY2FzZXMgd2hlcmUgdGhlCiAgICB0b3RhbCBwcm9ncmVzcyBjYW4gYmUgZXhwZWN0ZWQgdG8gdGFrZSBhdCBsZWFzdCBzZXZlcmFsIHNlY29uZHMuCiAgICBCZWNhdXNlIG9mIHRoaXMsIHRoZSBQcm9ncmVzc0JhciBjbGFzcyBvYmplY3Qgd29uJ3QgZGlzcGxheQogICAgcHJvZ3Jlc3MgdGhhdCBpcyBjb25zaWRlcmVkIHRvbyBmYXN0LCBhbmQgcHJvZ3Jlc3Mgd2hlcmUgdGhlIHRpbWUKICAgIGJldHdlZW4gc3RlcHMgaXMgbGVzcyB0aGFuIGEgc2Vjb25kLgoKICAgIE5vIHByaW50aW5nIG11c3QgaGFwcGVuIG9yIHRoZSBwcm9ncmVzcyBiYXIgd2lsbCBiZSB1bmludGVudGlvbmFsbHkKICAgIGRlc3Ryb3llZC4KCiAgICBFeGFtcGxlIHVzYWdlOjoKCiAgICAgICAgd2l0aCBwcm9ncmVzc2JhcihpdGVtcykgYXMgYmFyOgogICAgICAgICAgICBmb3IgaXRlbSBpbiBiYXI6CiAgICAgICAgICAgICAgICBkb19zb21ldGhpbmdfd2l0aChpdGVtKQoKICAgIEFsdGVybmF0aXZlbHksIGlmIG5vIGl0ZXJhYmxlIGlzIHNwZWNpZmllZCwgb25lIGNhbiBtYW51YWxseSB1cGRhdGUgdGhlCiAgICBwcm9ncmVzcyBiYXIgdGhyb3VnaCB0aGUgYHVwZGF0ZSgpYCBtZXRob2QgaW5zdGVhZCBvZiBkaXJlY3RseQogICAgaXRlcmF0aW5nIG92ZXIgdGhlIHByb2dyZXNzIGJhci4gIFRoZSB1cGRhdGUgbWV0aG9kIGFjY2VwdHMgdGhlIG51bWJlcgogICAgb2Ygc3RlcHMgdG8gaW5jcmVtZW50IHRoZSBiYXIgd2l0aDo6CgogICAgICAgIHdpdGggcHJvZ3Jlc3NiYXIobGVuZ3RoPWNodW5rcy50b3RhbF9ieXRlcykgYXMgYmFyOgogICAgICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgogICAgICAgICAgICAgICAgcHJvY2Vzc19jaHVuayhjaHVuaykKICAgICAgICAgICAgICAgIGJhci51cGRhdGUoY2h1bmtzLmJ5dGVzKQoKICAgIFRoZSBgYHVwZGF0ZSgpYGAgbWV0aG9kIGFsc28gdGFrZXMgYW4gb3B0aW9uYWwgdmFsdWUgc3BlY2lmeWluZyB0aGUKICAgIGBgY3VycmVudF9pdGVtYGAgYXQgdGhlIG5ldyBwb3NpdGlvbi4gVGhpcyBpcyB1c2VmdWwgd2hlbiB1c2VkCiAgICB0b2dldGhlciB3aXRoIGBgaXRlbV9zaG93X2Z1bmNgYCB0byBjdXN0b21pemUgdGhlIG91dHB1dCBmb3IgZWFjaAogICAgbWFudWFsIHN0ZXA6OgoKICAgICAgICB3aXRoIGNsaWNrLnByb2dyZXNzYmFyKAogICAgICAgICAgICBsZW5ndGg9dG90YWxfc2l6ZSwKICAgICAgICAgICAgbGFiZWw9J1VuemlwcGluZyBhcmNoaXZlJywKICAgICAgICAgICAgaXRlbV9zaG93X2Z1bmM9bGFtYmRhIGE6IGEuZmlsZW5hbWUKICAgICAgICApIGFzIGJhcjoKICAgICAgICAgICAgZm9yIGFyY2hpdmUgaW4gemlwX2ZpbGU6CiAgICAgICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3QoKQogICAgICAgICAgICAgICAgYmFyLnVwZGF0ZShhcmNoaXZlLnNpemUsIGFyY2hpdmUpCgogICAgOnBhcmFtIGl0ZXJhYmxlOiBhbiBpdGVyYWJsZSB0byBpdGVyYXRlIG92ZXIuICBJZiBub3QgcHJvdmlkZWQgdGhlIGxlbmd0aAogICAgICAgICAgICAgICAgICAgICBpcyByZXF1aXJlZC4KICAgIDpwYXJhbSBsZW5ndGg6IHRoZSBudW1iZXIgb2YgaXRlbXMgdG8gaXRlcmF0ZSBvdmVyLiAgQnkgZGVmYXVsdCB0aGUKICAgICAgICAgICAgICAgICAgIHByb2dyZXNzYmFyIHdpbGwgYXR0ZW1wdCB0byBhc2sgdGhlIGl0ZXJhdG9yIGFib3V0IGl0cwogICAgICAgICAgICAgICAgICAgbGVuZ3RoLCB3aGljaCBtaWdodCBvciBtaWdodCBub3Qgd29yay4gIElmIGFuIGl0ZXJhYmxlIGlzCiAgICAgICAgICAgICAgICAgICBhbHNvIHByb3ZpZGVkIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZQogICAgICAgICAgICAgICAgICAgbGVuZ3RoLiAgSWYgYW4gaXRlcmFibGUgaXMgbm90IHByb3ZpZGVkIHRoZSBwcm9ncmVzcyBiYXIKICAgICAgICAgICAgICAgICAgIHdpbGwgaXRlcmF0ZSBvdmVyIGEgcmFuZ2Ugb2YgdGhhdCBsZW5ndGguCiAgICA6cGFyYW0gbGFiZWw6IHRoZSBsYWJlbCB0byBzaG93IG5leHQgdG8gdGhlIHByb2dyZXNzIGJhci4KICAgIDpwYXJhbSBzaG93X2V0YTogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZXN0aW1hdGVkIHRpbWUgZGlzcGxheS4gIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiB0aGUgbGVuZ3RoIGNhbm5vdCBiZQogICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVkLgogICAgOnBhcmFtIHNob3dfcGVyY2VudDogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgcGVyY2VudGFnZSBkaXNwbGF5LiAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGBUcnVlYCBpZiB0aGUgaXRlcmFibGUgaGFzIGEgbGVuZ3RoIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBgRmFsc2VgIGlmIG5vdC4KICAgIDpwYXJhbSBzaG93X3BvczogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYWJzb2x1dGUgcG9zaXRpb24gZGlzcGxheS4gIFRoZQogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGBGYWxzZWAuCiAgICA6cGFyYW0gaXRlbV9zaG93X2Z1bmM6IEEgZnVuY3Rpb24gY2FsbGVkIHdpdGggdGhlIGN1cnJlbnQgaXRlbSB3aGljaAogICAgICAgIGNhbiByZXR1cm4gYSBzdHJpbmcgdG8gc2hvdyBuZXh0IHRvIHRoZSBwcm9ncmVzcyBiYXIuIElmIHRoZQogICAgICAgIGZ1bmN0aW9uIHJldHVybnMgYGBOb25lYGAgbm90aGluZyBpcyBzaG93bi4gVGhlIGN1cnJlbnQgaXRlbSBjYW4KICAgICAgICBiZSBgYE5vbmVgYCwgc3VjaCBhcyB3aGVuIGVudGVyaW5nIGFuZCBleGl0aW5nIHRoZSBiYXIuCiAgICA6cGFyYW0gZmlsbF9jaGFyOiB0aGUgY2hhcmFjdGVyIHRvIHVzZSB0byBzaG93IHRoZSBmaWxsZWQgcGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzIGJhci4KICAgIDpwYXJhbSBlbXB0eV9jaGFyOiB0aGUgY2hhcmFjdGVyIHRvIHVzZSB0byBzaG93IHRoZSBub24tZmlsbGVkIHBhcnQgb2YKICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvZ3Jlc3MgYmFyLgogICAgOnBhcmFtIGJhcl90ZW1wbGF0ZTogdGhlIGZvcm1hdCBzdHJpbmcgdG8gdXNlIGFzIHRlbXBsYXRlIGZvciB0aGUgYmFyLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHBhcmFtZXRlcnMgaW4gaXQgYXJlIGBgbGFiZWxgYCBmb3IgdGhlIGxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgYGBiYXJgYCBmb3IgdGhlIHByb2dyZXNzIGJhciBhbmQgYGBpbmZvYGAgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyBzZWN0aW9uLgogICAgOnBhcmFtIGluZm9fc2VwOiB0aGUgc2VwYXJhdG9yIGJldHdlZW4gbXVsdGlwbGUgaW5mbyBpdGVtcyAoZXRhIGV0Yy4pCiAgICA6cGFyYW0gd2lkdGg6IHRoZSB3aWR0aCBvZiB0aGUgcHJvZ3Jlc3MgYmFyIGluIGNoYXJhY3RlcnMsIDAgbWVhbnMgZnVsbAogICAgICAgICAgICAgICAgICB0ZXJtaW5hbCB3aWR0aAogICAgOnBhcmFtIGZpbGU6IFRoZSBmaWxlIHRvIHdyaXRlIHRvLiBJZiB0aGlzIGlzIG5vdCBhIHRlcm1pbmFsIHRoZW4KICAgICAgICBvbmx5IHRoZSBsYWJlbCBpcyBwcmludGVkLgogICAgOnBhcmFtIGNvbG9yOiBjb250cm9scyBpZiB0aGUgdGVybWluYWwgc3VwcG9ydHMgQU5TSSBjb2xvcnMgb3Igbm90LiAgVGhlCiAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgYXV0b2RldGVjdGlvbi4gIFRoaXMgaXMgb25seSBuZWVkZWQgaWYgQU5TSQogICAgICAgICAgICAgICAgICBjb2RlcyBhcmUgaW5jbHVkZWQgYW55d2hlcmUgaW4gdGhlIHByb2dyZXNzIGJhciBvdXRwdXQKICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgbm90IHRoZSBjYXNlIGJ5IGRlZmF1bHQuCiAgICA6cGFyYW0gdXBkYXRlX21pbl9zdGVwczogUmVuZGVyIG9ubHkgd2hlbiB0aGlzIG1hbnkgdXBkYXRlcyBoYXZlCiAgICAgICAgY29tcGxldGVkLiBUaGlzIGFsbG93cyB0dW5pbmcgZm9yIHZlcnkgZmFzdCBpdGVyYXRvcnMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBPdXRwdXQgaXMgc2hvd24gZXZlbiBpZiBleGVjdXRpb24gdGltZSBpcyBsZXNzIHRoYW4gMC41IHNlY29uZHMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBgYGl0ZW1fc2hvd19mdW5jYGAgc2hvd3MgdGhlIGN1cnJlbnQgaXRlbSwgbm90IHRoZSBwcmV2aW91cyBvbmUuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBMYWJlbHMgYXJlIGVjaG9lZCBpZiB0aGUgb3V0cHV0IGlzIG5vdCBhIFRUWS4gUmV2ZXJ0cyBhIGNoYW5nZQogICAgICAgIGluIDcuMCB0aGF0IHJlbW92ZWQgYWxsIG91dHB1dC4KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA4LjAKICAgICAgIEFkZGVkIHRoZSBgYHVwZGF0ZV9taW5fc3RlcHNgYCBwYXJhbWV0ZXIuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA0LjAKICAgICAgICBBZGRlZCB0aGUgYGBjb2xvcmBgIHBhcmFtZXRlci4gQWRkZWQgdGhlIGBgdXBkYXRlYGAgbWV0aG9kIHRvCiAgICAgICAgdGhlIG9iamVjdC4KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKICAgIHIDAAAAchAAAAApD3J6AAAA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ICAgICAgIGNsaWNrLmVjaG8oY2xpY2suc3R5bGUoJ0hlbGxvIFdvcmxkIScsIGZnPSdncmVlbicpKQogICAgICAgIGNsaWNrLmVjaG8oY2xpY2suc3R5bGUoJ0FUVEVOVElPTiEnLCBibGluaz1UcnVlKSkKICAgICAgICBjbGljay5lY2hvKGNsaWNrLnN0eWxlKCdTb21lIHRoaW5ncycsIHJldmVyc2U9VHJ1ZSwgZmc9J2N5YW4nKSkKICAgICAgICBjbGljay5lY2hvKGNsaWNrLnN0eWxlKCdNb3JlIGNvbG9ycycsIGZnPSgyNTUsIDEyLCAxMjgpLCBiZz0xMTcpKQoKICAgIFN1cHBvcnRlZCBjb2xvciBuYW1lczoKCiAgICAqIGBgYmxhY2tgYCAobWlnaHQgYmUgYSBncmF5KQogICAgKiBgYHJlZGBgCiAgICAqIGBgZ3JlZW5gYAogICAgKiBgYHllbGxvd2BgIChtaWdodCBiZSBhbiBvcmFuZ2UpCiAgICAqIGBgYmx1ZWBgCiAgICAqIGBgbWFnZW50YWBgCiAgICAqIGBgY3lhbmBgCiAgICAqIGBgd2hpdGVgYCAobWlnaHQgYmUgbGlnaHQgZ3JheSkKICAgICogYGBicmlnaHRfYmxhY2tgYAogICAgKiBgYGJyaWdodF9yZWRgYAogICAgKiBgYGJyaWdodF9ncmVlbmBgCiAgICAqIGBgYnJpZ2h0X3llbGxvd2BgCiAgICAqIGBgYnJpZ2h0X2JsdWVgYAogICAgKiBgYGJyaWdodF9tYWdlbnRhYGAKICAgICogYGBicmlnaHRfY3lhbmBgCiAgICAqIGBgYnJpZ2h0X3doaXRlYGAKICAgICogYGByZXNldGBgIChyZXNldCB0aGUgY29sb3IgY29kZSBvbmx5KQoKICAgIElmIHRoZSB0ZXJtaW5hbCBzdXBwb3J0cyBpdCwgY29sb3IgbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzOgoKICAgIC0gICBBbiBpbnRlZ2VyIGluIHRoZSBpbnRlcnZhbCBbMCwgMjU1XS4gVGhlIHRlcm1pbmFsIG11c3Qgc3VwcG9ydAogICAgICAgIDgtYml0LzI1Ni1jb2xvciBtb2RlLgogICAgLSAgIEFuIFJHQiB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VycyBpbiBbMCwgMjU1XS4gVGhlIHRlcm1pbmFsIG11c3QKICAgICAgICBzdXBwb3J0IDI0LWJpdC90cnVlLWNvbG9yIG1vZGUuCgogICAgU2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfY29sb3IgYW5kCiAgICBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9YVmlsa2EvODM0NjcyOCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICA6cGFyYW0gdGV4dDogdGhlIHN0cmluZyB0byBzdHlsZSB3aXRoIGFuc2kgY29kZXMuCiAgICA6cGFyYW0gZmc6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBiZWNvbWUgdGhlIGZvcmVncm91bmQgY29sb3IuCiAgICA6cGFyYW0gYmc6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBiZWNvbWUgdGhlIGJhY2tncm91bmQgY29sb3IuCiAgICA6cGFyYW0gYm9sZDogaWYgcHJvdmlkZWQgdGhpcyB3aWxsIGVuYWJsZSBvciBkaXNhYmxlIGJvbGQgbW9kZS4KICAgIDpwYXJhbSBkaW06IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSBkaW0gbW9kZS4gIFRoaXMgaXMKICAgICAgICAgICAgICAgIGJhZGx5IHN1cHBvcnRlZC4KICAgIDpwYXJhbSB1bmRlcmxpbmU6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSB1bmRlcmxpbmUuCiAgICA6cGFyYW0gb3ZlcmxpbmU6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSBvdmVybGluZS4KICAgIDpwYXJhbSBpdGFsaWM6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSBpdGFsaWMuCiAgICA6cGFyYW0gYmxpbms6IGlmIHByb3ZpZGVkIHRoaXMgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSBibGlua2luZy4KICAgIDpwYXJhbSByZXZlcnNlOiBpZiBwcm92aWRlZCB0aGlzIHdpbGwgZW5hYmxlIG9yIGRp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ZCBlZGl0b3IuICBJZiBhbiBlZGl0b3IgaXMgZ2l2ZW4KICAgIChzaG91bGQgYmUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSBidXQgdGhlIHJlZ3VsYXIgb3BlcmF0aW5nCiAgICBzeXN0ZW0gc2VhcmNoIHBhdGggaXMgdXNlZCBmb3IgZmluZGluZyB0aGUgZXhlY3V0YWJsZSkgaXQgb3ZlcnJpZGVzCiAgICB0aGUgZGV0ZWN0ZWQgZWRpdG9yLiAgT3B0aW9uYWxseSwgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY2FuIGJlCiAgICB1c2VkLiAgSWYgdGhlIGVkaXRvciBpcyBjbG9zZWQgd2l0aG91dCBjaGFuZ2VzLCBgTm9uZWAgaXMgcmV0dXJuZWQuICBJbgogICAgY2FzZSBhIGZpbGUgaXMgZWRpdGVkIGRpcmVjdGx5IHRoZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIGBOb25lYCBhbmQKICAgIGByZXF1aXJlX3NhdmVgIGFuZCBgZXh0ZW5zaW9uYCBhcmUgaWdub3JlZC4KCiAgICBJZiB0aGUgZWRpdG9yIGNhbm5vdCBiZSBvcGVuZWQgYSA6ZXhjOmBVc2FnZUVycm9yYCBpcyByYWlzZWQuCgogICAgTm90ZSBmb3IgV2luZG93czogdG8gc2ltcGxpZnkgY3Jvc3MtcGxhdGZvcm0gdXNhZ2UsIHRoZSBuZXdsaW5lcyBhcmUKICAgIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIGZyb20gUE9TSVggdG8gV2luZG93cyBhbmQgdmljZSB2ZXJzYS4gIEFzIHN1Y2gsCiAgICB0aGUgbWVzc2FnZSBoZXJlIHdpbGwgaGF2ZSBgYFxuYGAgYXMgbmV3bGluZSBtYXJrZXJzLgoKICAgIDpwYXJhbSB0ZXh0OiB0aGUgdGV4dCB0byBlZGl0LgogICAgOnBhcmFtIGVkaXRvcjogb3B0aW9uYWxseSB0aGUgZWRpdG9yIHRvIHVzZS4gIERlZmF1bHRzIHRvIGF1dG9tYXRpYwogICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uLgogICAgOnBhcmFtIGVudjogZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGZvcndhcmQgdG8gdGhlIGVkaXRvci4KICAgIDpwYXJhbSByZXF1aXJlX3NhdmU6IGlmIHRoaXMgaXMgdHJ1ZSwgdGhlbiBub3Qgc2F2aW5nIGluIHRoZSBlZGl0b3IKICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbWFrZSB0aGUgcmV0dXJuIHZhbHVlIGJlY29tZSBgTm9uZWAuCiAgICA6cGFyYW0gZXh0ZW5zaW9uOiB0aGUgZXh0ZW5zaW9uIHRvIHRlbGwgdGhlIGVkaXRvciBhYm91dC4gIFRoaXMgZGVmYXVsdHMKICAgICAgICAgICAgICAgICAgICAgIHRvIGAudHh0YCBidXQgY2hhbmdpbmcgdGhpcyBtaWdodCBjaGFuZ2Ugc3ludGF4CiAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRpbmcuCiAgICA6cGFyYW0gZmlsZW5hbWU6IGlmIHByb3ZpZGVkIGl0IHdpbGwgZWRpdCB0aGlzIGZpbGUgaW5zdGVhZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgdGV4dCBjb250ZW50cy4gIEl0IHdpbGwgbm90IHVzZSBhIHRlbXBvcmFyeQogICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGFuIGluZGlyZWN0aW9uIGluIHRoYXQgY2FzZS4KICAgIHIDAAAAKQHaBkVkaXRvcikEcsIAAABywwAAAHLEAAAAcsUAAABOKQRycQAAAHLHAAAA2gRlZGl0WgllZGl0X2ZpbGUpCHIsAAAAcsIAAABywwAAAHLEAAAAcsUAAAByxgAAAHLHAAAAWgJlZHIpAAAAcikAAAByKgAAAHLIAAAAlgIAAHMMAAAADCMQAggCCgEKAgQBcsgAAADaA3VybNoEd2FpdNoGbG9jYXRlYwMAAAAAAAAAAAAAAAQAAAAFAAAAQwAAAHMaAAAAZAFkAmwAbQF9AwEAfAN8AHwBfAJkA40DUwApBGEABAAAVGhpcyBmdW5jdGlvbiBsYXVuY2hlcyB0aGUgZ2l2ZW4gVVJMIChvciBmaWxlbmFtZSkgaW4gdGhlIGRlZmF1bHQKICAgIHZpZXdlciBhcHBsaWNhdGlvbiBmb3IgdGhpcyBmaWxlIHR5cGUuICBJZiB0aGlzIGlzIGFuIGV4ZWN1dGFibGUsIGl0CiAgICBtaWdodCBsYXVuY2ggdGhlIGV4ZWN1dGFibGUgaW4gYSBuZXcgc2Vzc2lvbi4gIFRoZSByZXR1cm4gdmFsdWUgaXMKICAgIHRoZSBleGl0IGNvZGUgb2YgdGhlIGxhdW5jaGVkIGFwcGxpY2F0aW9uLiAgVXN1YWxseSwgYGAwYGAgaW5kaWNhdGVzCiAgICBzdWNjZXNzLgoKICAgIEV4YW1wbGVzOjoKCiAgICAgICAgY2xpY2subGF1bmNoKCdodHRwczovL2NsaWNrLnBhbGxldHNwcm9qZWN0cy5jb20vJykKICAgICAgICBjbGljay5sYXVuY2goJy9teS9kb3dubG9hZGVkL2ZpbGUnLCBsb2NhdGU9VHJ1ZSkKCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjAKCiAgICA6cGFyYW0gdXJsOiBVUkwgb3IgZmlsZW5hbWUgb2YgdGhlIHRoaW5nIHRvIGxhdW5jaC4KICAgIDpwYXJhbSB3YWl0OiBXYWl0IGZvciB0aGUgcHJvZ3JhbSB0byBleGl0IGJlZm9yZSByZXR1cm5pbmcuIFRoaXMKICAgICAgICBvbmx5IHdvcmtzIGlmIHRoZSBsYXVuY2hlZCBwcm9ncmFtIGJsb2Nrcy4gSW4gcGFydGljdWxhciwKICAgICAgICBgYHhkZy1vcGVuYGAgb24gTGludXggZG9lcyBub3QgYmxvY2suCiAgICA6cGFyYW0gbG9jYXRlOiBpZiB0aGlzIGlzIHNldCB0byBgVHJ1ZWAgdGhlbiBpbnN0ZWFkIG9mIGxhdW5jaGluZyB0aGUKICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVJMIGl0IHdpbGwgYXR0ZW1wdCB0bwogICAgICAgICAgICAgICAgICAgbGF1bmNoIGEgZmlsZSBtYW5hZ2VyIHdpdGggdGhlIGZpbGUgbG9jYXRlZC4gIFRoaXMKICAgICAgICAgICAgICAgICAgIG1pZ2h0IGhhdmUgd2VpcmQgZWZmZWN0cyBpZiB0aGUgVVJMIGRvZXMgbm90IHBvaW50IHRvCiAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXN5c3RlbS4KICAgIHIDAAAAKQHaCG9wZW5fdXJsKQJyygAAAHLLAAAAKQJycQAAAHLMAAAAKQRyyQAAAHLKAAAAcssAAAByzAAAAHIpAAAAcikAAAByKgAAANoGbGF1bmNoxAIAAHMEAAAADBgOAnLNAAAA2ghfZ2V0Y2hhcnIOAAAAYwEAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMgAAAAdABkAXUAcgxkAmQDbAFtAn0BAQB8AWEAdAB8AIMBUwApBGGGAwAARmV0Y2hlcyBhIHNpbmdsZSBjaGFyYWN0ZXIgZnJvbSB0aGUgdGVybWluYWwgYW5kIHJldHVybnMgaXQuICBUaGlzCiAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB1bmljb2RlIGNoYXJhY3RlciBhbmQgdW5kZXIgY2VydGFpbiByYXJlCiAgICBjaXJjdW1zdGFuY2VzIHRoaXMgbWlnaHQgcmV0dXJuIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyLiAgVGhlCiAgICBzaXR1YXRpb25zIHdoaWNoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyIGlzIHJldHVybmVkIGlzIHdoZW4gZm9yCiAgICB3aGF0ZXZlciByZWFzb24gbXVsdGlwbGUgY2hhcmFjdGVycyBlbmQgdXAgaW4gdGhlIHRlcm1pbmFsIGJ1ZmZlciBvcgogICAgc3RhbmRhcmQgaW5wdXQgd2FzIG5vdCBhY3R1YWxseSBhIHRlcm1pbmFsLgoKICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgYWx3YXlzIHJlYWQgZnJvbSB0aGUgdGVybWluYWwsIGV2ZW4gaWYgc29tZXRoaW5nCiAgICBpcyBwaXBlZCBpbnRvIHRoZSBzdGFuZGFyZCBpbnB1dC4KCiAgICBOb3RlIGZvciBXaW5kb3dzOiBpbiByYXJlIGNhc2VzIHdoZW4gdHlwaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGlzCiAgICBmdW5jdGlvbiBtaWdodCB3YWl0IGZvciBhIHNlY29uZCBjaGFyYWN0ZXIgYW5kIHRoZW4gcmV0dXJuIGJvdGggYXQgb25jZS4KICAgIFRoaXMgaXMgYmVjYXVzZSBjZXJ0YWluIFVuaWNvZGUgY2hhcmFjdGVy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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 17
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
core.cpython-310.pyc
86.97 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
decorators.cpython-310.pyc
13.93 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
exceptions.cpython-310.pyc
9.93 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
formatting.cpython-310.pyc
9.21 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
globals.cpython-310.pyc
2.36 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
parser.cpython-310.pyc
13.33 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
shell_completion.cpython-310.pyc
16.13 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
termui.cpython-310.pyc
26.18 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
testing.cpython-310.pyc
14.79 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
types.cpython-310.pyc
32.37 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
utils.cpython-310.pyc
17.36 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_compat.cpython-310.pyc
15.34 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_termui_impl.cpython-310.pyc
15.67 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_textwrap.cpython-310.pyc
1.48 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_unicodefun.cpython-310.pyc
2.23 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_winconsole.cpython-310.pyc
7.46 KB
lrw-r--r--
2022-08-09 11:57:00
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-310.pyc
2.60 KB
lrw-r--r--
2022-08-09 11:57:00
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).