REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 52.09 KB
Close
//lib64/python3.6/site-packages/gpg/__pycache__/core.cpython-36.pyc
Text
Base64
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YQogICAgY29udGV4dCwgd2hpY2ggY29udGFpbnMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBvcGVyYXRpb24gYXMKICAgIHdlbGwgYXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiAgQnkgdXNpbmcgc2V2ZXJhbCBjb250ZXh0cyB5b3UKICAgIGNhbiBydW4gc2V2ZXJhbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW4gcGFyYWxsZWwsIHdpdGgKICAgIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgoKICAgIEFjY2VzcyB0byBhIGNvbnRleHQgbXVzdCBiZSBzeW5jaHJvbml6ZWQuCgogICAgRk5jCQAAAAAAAAAKAAAAAwAAAAMAAABzegAAAHwHcgxkAXwAXwBuMHQBagKDAH0JdAN0AWoEfAmDAYMBAQB0AWoFfAmDAX0HdAFqBnwJgwEBAGQCfABfAHQHdAh8AIMCagl8B4MBAQB8AXwAXwp8AnwAXwt8A3wAXwx8BHwAXw18BXwAXw58BnwAXw98CHwAXxBkA1MAKQRhDwIAAENvbnN0cnVjdCBhIGNvbnRleHQgb2JqZWN0CgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgIGFybW9yCQktLSBlbmFibGUgQVNDSUkgYXJtb3JpbmcgKGRlZmF1bHQgRmFsc2UpCiAgICAgICAgdGV4dG1vZGUJLS0gZW5hYmxlIGNhbm9uaWNhbCB0ZXh0IG1vZGUgKGRlZmF1bHQgRmFsc2UpCiAgICAgICAgb2ZmbGluZQkJLS0gZG8gbm90IGNvbnRhY3QgZXh0ZXJuYWwga2V5IHNvdXJjZXMgKGRlZmF1bHQgRmFsc2UpCiAgICAgICAgc2lnbmVycwkJLS0gbGlzdCBvZiBrZXlzIHVzZWQgZm9yIHNpZ25pbmcgKGRlZmF1bHQgW10pCiAgICAgICAgcGluZW50cnlfbW9kZQktLSBwaW5lbnRyeSBtb2RlIChkZWZhdWx0IFBJTkVOVFJZX01PREVfREVGQVVMVCkKICAgICAgICBwcm90b2NvbAktLSBwcm90b2NvbCB0byB1c2UgKGRlZmF1bHQgUFJPVE9DT0xfT3BlblBHUCkKICAgICAgICBob21lX2RpciAg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bmVudHJ5LgoKICAgICAgICBLZXl3b3JkIGFyZ3VtZW50czoKICAgICAgICByZWNpcGllbnRzCS0tIGxpc3Qgb2Yga2V5cyB0byBlbmNyeXB0IHRvCiAgICAgICAgc2lnbgkJLS0gc2lnbiBwbGFpbnRleHQgKGRlZmF1bHQgVHJ1ZSkKICAgICAgICBzaW5rCQktLSB3cml0ZSByZXN1bHQgdG8gc2luayBpbnN0ZWFkIG9mIHJldHVybmluZyBpdAogICAgICAgIHBhc3NwaHJhc2UJLS0gZm9yIHN5bW1ldHJpYyBlbmNyeXB0aW9uCiAgICAgICAgYWx3YXlzX3RydXN0CS0tIGFsd2F5cyB0cnVzdCB0aGUga2V5cyAoZGVmYXVsdCBGYWxzZSkKICAgICAgICBhZGRfZW5jcnlwdF90bwktLSBlbmNyeXB0IHRvIGNvbmZpZ3VyZWQgYWRkaXRpb25hbCBrZXlzIChkZWZhdWx0IEZhbHNlKQogICAgICAgIHByZXBhcmUJCS0tICh1aSkgcHJlcGFyZSBmb3IgZW5jcnlwdGlvbiAoZGVmYXVsdCBGYWxzZSkKICAgICAgICBleHBlY3Rfc2lnbgktLSAodWkpIHByZXBhcmUgZm9yIHNpZ25pbmcgKGRlZmF1bHQgRmFsc2UpCiAgICAgICAgY29tcHJlc3MJLS0gY29tcHJlc3MgcGxhaW50ZXh0IChkZWZhdWx0IFRydWUpCgogICAgICAgIFJldHVybnM6CiAgICAgICAgY2lwaGVydGV4dAktLSB0aGUgZW5jcnlwdGVkIGRhdGEgKG9yIE5vbmUgaWYgc2luayBpcyBnaXZlbikKICAgICAgICByZXN1bHQJCS0tIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVuY3J5cHRpb24KICAgICAgICBzaWduX3Jlc3VsdAktLSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYXR1cmUocykKCiAgICAgICAgUmFpc2VzOgogICAgICAgIEludmFsaWRSZWNpcGllbnRzIC0tIGlmIGVuY3J5cHRpb24gdXNpbmcgYSBwYXJ0aWN1bGFyIGtleSBmYWlsZWQKICAgICAgICBJbnZhbGlkU2lnbmVycwktLSBpZiBzaWduaW5nIHVzaW5nIGEgcGFydGljdWxhciBrZXkgZmFpbGVkCiAgICAgICAgR1BHTUVFcnJvcgktLSBhcyBzaWduYWxlZCBieSB0aGUgdW5kZXJseWluZyBsaWJyYXJ5CgogICAgICAgIHIBAAAATtoOX3Bhc3NwaHJhc2VfY2JjBAAAAAAAAAAEAAAAAQAAABMAAABzBAAAAIgAUwApAU5yEAAAACkE2gRoaW502gRkZXNj2ghwcmV2X2JhZNoEaG9vaykB2gpwYXNzcGhyYXNlchAAAAByEQAAANoNcGFzc3BocmFzZV9jYigBAABzAgAAAAABeiZDb250ZXh0LmVuY3J5cHQuPGxvY2Fscz4ucGFzc3BocmFzZV9jYikC2gVlcnJvctoHcmVzdWx0c3IFAAAAKQFOKRzaBERhdGFyCQAAAFoURU5DUllQVF9BTFdBWVNfVFJVU1RaFUVOQ1JZUFRfTk9fRU5DUllQVF9UT1oPRU5DUllQVF9QUkVQQVJFWhNFTkNSWVBUX0VYUEVDVF9TSUdOWhNFTkNSWVBUX05PX0NPTVBSRVNTclIAAAByFwAAANoWUElORU5UUllfTU9ERV9MT09QQkFDS9oRc2V0X3Bhc3NwaHJhc2VfY2JaD29wX2VuY3J5cHRfc2lnbloKb3BfZW5jcnlwdHIKAAAAcggAAABaEW9wX2VuY3J5cHRfcmVzdWx02g5vcF9zaWduX3Jlc3VsdHJcAAAA2gdnZXRjb2RlWg9VTlVTQUJMRV9QVUJLRVlaEmludmFsaWRfcmVjaXBpZW50c1oRSW52YWxpZFJlY2lwaWVudHNyZAAAANoPVU5VU0FCTEVfU0VDS0VZ2g9pbnZhbGlkX3NpZ25lcnPaDkludmFsaWRTaWduZXJzcmUAAADaDkFzc2VydGlvbkVycm9yKRRyDwAAANoJcGxhaW50ZXh0WgpyZWNpcGllbnRz2gRzaWducloAAAByYgAAAFoMYWx3YXlzX3RydXN0Wg5hZGRfZW5jcnlwdF90b1oHcHJlcGFyZVoLZXhwZWN0X3NpZ27aCGNvbXByZXNz2gpjaXBoZXJ0ZXh0ciAAAADaEW9sZF9waW5lbnRyeV9tb2Rl2hFvbGRfcGFzc3BocmFzZV9jYnJjAAAA2gFlcjsAAABaCnNpZ19yZXN1bHRyZQAAAHIQAAAAKQFyYgAAAHIRAAAA2gdlbmNyeXB08QAAAHNaAAAAACoOAQQBDgEQAQ4BDgEQAggBBgEMAQgCDgMKAgQBBAESAhQBFAEIARABEgEQAQgBBAEEAQQBCAEQAQgBCAEEAQQBBAEIAwYBGgIKAQYBBgEUAggBDgESARYCeg9Db250ZXh0LmVuY3J5cHRjBQAAAAAAAAAUAAAAGQAAAAMAAABzPAIAAGQBfQVkAn0GfAJyEHwCbgR0AIMAfQeIAGQCawlyUHwAagF9CHQCfABkA2QCgwN9CXQDagR8AF8BZA6HAGYBZARkBYQJfQp8AGoFfAqDAQEAerR5VnQGfAR0B4MCcmR8BH0FbiR8BGQCawhygHQIaglkBnQKZAeNAgEAZAF9BW4IfAR9BmQIfQV8BXKafABqC3wBfAeDAgEAbgx8AGoMfAF8B4MCAQBXAG5YBAB0DWoOawqQAXIAAQB9CwEAejh8AGoPgwB9DHwFctR8AGoQgwB9DW4EZAJ9DXwAahF8AnwHgwJ8DHwNZgN8C18SfAuCAVcAWQBkAmQCfQt+C1gAbgJYAFcAZAKIAGQCawmQAXIufAh8AF8BfAmQAXIufABqBXwJZAlkAoUCGQCOAAEAWAB8AGoPgwB9DHwFkAFySHwAahCDAH0NbgRkAn0NfABqEXwCfAeDAnwMfA1mA30OfAxqE5ABcnZ0DWoUfAxqE3wOZAqNAoIBfAWQAnI4dBV0FmQLZAyEAHwNaheDAoMBfA1fF3wGZAJrCZACcjhnAH0PeIB8BkQAXXh9EGQBfRF4XHwQahhEAF1SfRJ4QnwNahdEAF04fRN8E2oZdANqGkAAZA1rApABctyQAXHCfBJqG5ABcvZ8EmocfBNqHGsCkAFy9mQIfRFQAJABccJXAHwRkAFytlAAkAFxtlcAfBGQAXOmfA9qHXwQgwEBAJABcaZXAHwPkAJyOHQNah58DXwPfA5kCo0DggF8DlMAKQ9h6wUAAERlY3J5cHQgZGF0YQoKICAgICAgICBEZWNyeXB0IHRoZSBnaXZlbiBjaXBoZXJ0ZXh0IGFuZCB2ZXJpZnkgYW55IHNpZ25hdHVyZXMuICBJZgogICAgICAgIFZFUklGWSBpcyBhbiBpdGVyYWJsZSBvZiBrZXlzLCB0aGUgY2lwaGVydGV4dCBtdXN0IGJlIHNpZ25lZAogICAgICAgIGJ5IGFsbCB0aG9zZSBrZXlzLCBvdGhlcndpc2UgYSBNaXNzaW5nU2lnbmF0dXJlcyBlcnJvciBpcwogICAgICAgIHJhaXNlZC4gIE5vdGU6IGlmIFZFUklGWSBpcyBhbiBlbXB0eSBpdGVyYWJsZSwgdGhhdCBpcyB0cmVhdGVkCiAgICAgICAgdGhlIHNhbWUgYXMgcGFzc2luZyB2ZXJpZnk9VHJ1ZSAodGhhdCBpcywgdmVyaWZ5IHNpZ25hdHVyZXMKICAgICAgICBhbmQgcmV0dXJuIGRhdGEgYWJvdXQgYW55IHZhbGlkIHNpZ25hdHVyZXMgZm91bmQsIGJ1dCBubwogICAgICAgIHNpZ25hdHVyZXMgYXJlIHJlcXVpcmVkIGFuZCBubyBNaXNzaW5nU2lnbmF0dXJlcyBlcnJvciB3aWxsIGJlCiAgICAgICAgcmFpc2VkKS4KCiAgICAgICAgSWYgdGhlIGNpcGhlcnRleHQgaXMgc3ltbWV0cmljYWxseSBlbmNyeXB0ZWQgdXNpbmcgYQogICAgICAgIHBhc3NwaHJhc2UsIHRoYXQgcGFzc3BocmFzZSBjYW4gYmUgZ2l2ZW4gYXMgcGFyYW1ldGVyLCB1c2luZyBhCiAgICAgICAgY2FsbGJhY2sgcmVnaXN0ZXJlZCBhdCB0aGUgY29udGV4dCwgb3Igb3V0LW9mLWJhbmQgdmlhCiAgICAgICAgcGluZW50cnkuCgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgIHNpbmsgICAgICAgICAgICAtLSB3cml0ZSByZXN1bHQgdG8gc2luayBpbnN0ZWFkIG9mIHJldHVybmluZyBpdAogICAgICAgIHBhc3NwaHJhc2UgICAgICAtLSBmb3Igc3ltbWV0cmljIGRlY3J5cHRpb24KICAgICAgICB2ZXJpZnkgICAgICAgICAgLS0gY2hlY2sgc2lnbmF0dXJlcyAoYm9vbGVhbiBvciBpdGVyYWJsZSBvZiBrZXlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYWJvdmUpIChkZWZhdWx0IFRydWUpCgogICAgICAgIFJldHVybnM6CiAgICAgICAgcGxhaW50ZXh0ICAgICAgIC0tIHRoZSBkZWNy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AAAAAAAADQAAABMAAABDAAAAc1QBAAB8AnIKZAF9BW4OfANyEnwDbgR0AIMAfQV5JnwCci58AGoBfAJ8AWQBgwMBAG4OfABqAXwBZAF8BYMDAQBXAG4+BAB0AmoDawpyfAEAfQYBAHogfABqBHwDfAWDAnwAagWDAGYCfAZfBnwGggFXAFkAZAFkAX0GfgZYAG4CWAB8AGoEfAN8BYMCfABqBYMAZgJ9B3QHZAJkA4QAfAdkBBkAaghEAIMBgwFyvHQCagl8B2QEGQB8B2QFjQKCAXQKgwB9CHhyfAREAF1qfQlkBn0KeFJ8CWoLRABdSH0LeDx8B2QEGQBqCEQAXS59DHwMagx0DWoOQABkB2sCcv5x6HwLag9y6HwLahB8DGoQawJy6GQIfQpQAHHoVwB8CnLYUABx2FcAfApzyHwIahF8CYMBAQBxyFcAfAiQAXJQdAJqEnwHZAQZAHwIfAdkBY0DggF8B1MAKQlh2AIAAFZlcmlmeSBzaWduYXR1cmVzCgogICAgICAgIFZlcmlmeSBzaWduYXR1cmVzIG92ZXIgZGF0YS4gIElmIFZFUklGWSBpcyBhbiBpdGVyYWJsZSBvZgogICAgICAgIGtleXMsIHRoZSBjaXBoZXJ0ZXh0IG11c3QgYmUgc2lnbmVkIGJ5IGFsbCB0aG9zZSBrZXlzLAogICAgICAgIG90aGVyd2lzZSBhbiBlcnJvciBpcyByYWlzZWQuCgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgIHNpZ25hdHVyZQktLSBkZXRhY2hlZCBzaWduYXR1cmUgZGF0YQogICAgICAgIHNpbmsJCS0tIHdyaXRlIHJlc3VsdCB0byBzaW5rIGluc3RlYWQgb2YgcmV0dXJuaW5nIGl0CgogICAgICAgIFJldHVybnM6CiAgICAgICAgZGF0YQkJLS0gdGhlIHBsYWluIGRhdGEKICAgICAgICAgICAgKG9yIE5vbmUgaWYgc2luayBpcyBnaXZlbiwgb3Igd2UgdmVyaWZpZWQgYSBkZXRhY2hlZCBzaWduYXR1cmUpCiAgICAgICAgcmVzdWx0CQktLSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYXR1cmUocykKCiAgICAgICAgUmFpc2VzOgogICAgICAgIEJhZFNpZ25hdHVyZXMJLS0gaWYgYSBiYWQgc2lnbmF0dXJlIGlzIGVuY291bnRlcmVkCiAgICAgICAgTWlzc2luZ1NpZ25hdHVyZXMgLS0gaWYgZXhwZWN0ZWQgc2lnbmF0dXJlcyBhcmUgbWlzc2luZyBvciBiYWQKICAgICAgICBHUEdNRUVycm9yCS0tIGFzIHNpZ25hbGVkIGJ5IHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkKCiAgICAgICAgTmMBAAAAAAAAAAIAAAADAAAAcwAAAHMaAAAAfABdEn0BfAFqAHQBagJrA1YAAQBxAmQAUwApAU4pA3J4AAAAcgoAAAByeQAAACkCchgAAAByegAAAHIQAAAAchAAAAByEQAAAPoJPGdlbmV4cHI+HAIAAHMCAAAABAB6IUNvbnRleHQudmVyaWZ5Ljxsb2NhbHM+LjxnZW5leHByPnIFAAAAKQFyZQAAAEZyAQAAAFQpE3JmAAAAWglvcF92ZXJpZnlyCgAAAHIIAAAAclwAAABygAAAAHJlAAAA2gNhbnlygwAAAFoNQmFkU2lnbmF0dXJlc3KBAAAAcoQAAAByhQAAAHIJAAAAcoYAAAByhwAAAHKIAAAAch4AAAByiQAAACkNcg8AAABaC3NpZ25lZF9kYXRhWglzaWduYXR1cmVyWgAAAHKKAAAAclsAAABydQAAAHJlAAAAcosAAAByNgAAAHKMAAAAco0AAAByjgAAAHIQAAAAchAAAAByEQAAAHKKAAAA9QEAAHM+AAAAABYEAgYCDgICAQQBEAISARICFgEWAhQBGAESAgYBCgEEAQwBEAEQAQIBEgEEAQYBBAEGAQQBDgEGAQQBEAJ6DkNvbnRleHQudmVyaWZ5YwIAAAAAAAAABgAAABAAAABDAAAAc9AAAAB5LnwAagB8AYMBAQB8AGoBgwB9AnwCagJkAWsCciZ0A2oEfQNuBnQDagV9A1cAbogEAHQGawpytgEAfQQBAHpsfAR0B2oIawJyZHwEaglkAmsCclx0A2oKfQNxpnQDagt9A25CfAR0DGsCcoJ0DXwBZAODAmQEawhygnQDag59A24kfAR0DGsCcqB0DXwBZAWDAmQEawhyoHQDagt9A24GdANqD30DVwBZAGQGZAZ9BH4EWABuAlgAfAN0A2oFawJyyHwCfQVuBHwDfQV8BVMAKQdhuwIAAEltcG9ydCBkYXRhCgogICAgICAgIEltcG9ydHMgdGhlIGdpdmVuIGRhdGEgaW50byB0aGUgQ29udGV4dC4KCiAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgICAgIC0tIGFuIG9iamVjdCBkZXNjcmliaW5nIHRoZSByZXN1bHRzIG9mIGltcG9ydGVkIG9yIHVwZGF0ZWQKICAgICAgICAgICAgICAgICAgIGtleXMKCiAgICAgICAgUmFpc2VzOgogICAgICAgIFR5cGVFcnJvciAgICAgIC0tIFZlcnkgcmFyZWx5LgogICAgICAgIEdQR01FRXJyb3IgICAgIC0tIGFzIHNpZ25hbGVkIGJ5IHRoZSB1bmRlcmx5aW5nIGxpYnJhcnk6CgogICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydCBzdGF0dXMgZXJyb3JzLCB3aGVuIHRoZXkgb2NjdXIsIHdpbGwgdXN1YWxseQogICAgICAgICAgICAgICAgICAgICAgICAgIGJlIG9mIE5PREFUQS4gIE5PX1BVQktFWSBpbmRpY2F0ZXMgc29tZXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlZCB0byBydW4gdGhlIGZ1bmN0aW9uIHdpdGhvdXQgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLCB3aGlsZSBhbiBhcmd1bWVudCBvZiBOb25lIHRyaWdnZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IE5PREFUQSBvZiBlcnJvcnMuR1BHTUUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uLgogICAgICAgIHIBAAAAegdObyBkYXRh2gZkZWNvZGVU2gZlbmNvZGVOKRBaCW9wX2ltcG9ydFoQb3BfaW1wb3J0X3Jlc3VsdFoKY29uc2lkZXJlZHIJAAAAWhVTVEFUVVNfSU1QT1JUX1BST0JMRU1aFVNUQVRVU19LRVlfQ09OU0lERVJFRNoJRXhjZXB0aW9ucgoAAAByCAAAAFoIY29kZV9zdHJaDVNUQVRVU19OT0RBVEFaEVNUQVRVU19GSUxF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CgogICAgICAgIFNJR04sIEVOQ1JZUFQsIENFUlRJRlksIGFuZCBBVVRIRU5USUNBVEUgY2FuIGJlIHVzZWQgdG8KICAgICAgICByZXF1ZXN0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIG5ldyBrZXkuICBJZiB5b3UgZG9uJ3QgcmVxdWVzdAogICAgICAgIGFueSwgYSByZWFzb25hYmxlIHNldCBvZiBjYXBhYmlsaXRpZXMgaXMgc2VsZWN0ZWQsIGFuZCBpbiBjYXNlCiAgICAgICAgb2YgT3BlblBHUCwgYSBzdWJrZXkgd2l0aCBhIHJlYXNvbmFibGUgc2V0IG9mIGNhcGFiaWxpdGllcyBpcwogICAgICAgIGNyZWF0ZWQuCgogICAgICAgIElmIFBBU1NQSFJBU0UgaXMgTm9uZSAodGhlIGRlZmF1bHQpLCB0aGVuIHRoZSBrZXkgd2lsbCBub3QgYmUKICAgICAgICBwcm90ZWN0ZWQgd2l0aCBhIHBhc3NwaHJhc2UuICBJZiBQQVNTUEhSQVNFIGlzIGEgc3RyaW5nLCBpdAogICAgICAgIHdpbGwgYmUgdXNlZCB0byBwcm90ZWN0IHRoZSBrZXkuICBJZiBQQVNTUEhSQVNFIGlzIFRydWUsIHRoZQogICAgICAgIHBhc3NwaHJhc2UgbXVzdCBiZSBzdXBwbGllZCB1c2luZyBhIHBhc3NwaHJhc2UgY2FsbGJhY2sgb3IKICAgICAgICBvdXQtb2YtYmFuZCB3aXRoIGEgcGluZW50cnkuCgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgIGFsZ29yaXRobSAgICAtLSBwdWJsaWMga2V5IGFsZ29yaXRobSwgc2VlIGFib3ZlIChkZWZhdWx0OiByZWFzb25hYmxlKQogICAgICAgIGV4cGlyZXNfaW4gICAtLSBleHBpcmF0aW9uIHRpbWUgaW4gc2Vjb25kcyAoZGVmYXVsdDogcmVhc29uYWJsZSkKICAgICAgICBleHBpcmVzICAgICAgLS0gd2hldGhlciBvciBub3QgdGhlIGtleSBzaG91bGQgZXhwaXJlIChkZWZhdWx0OiBUcnVlKQogICAgICAgIHNpZ24gICAgICAgICAtLSByZXF1ZXN0IHRoZSBz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YmUgdGhlIGRlZmF1bHQgaW4gYSBmdXR1cmUgaW1wbGVtZW50YXRpb24KICAgICAgICBvZiB0aGUgZW5naW5lLiAgQUxHT1JJVEhNIG1heSBiZSBhIHN0cmluZyBsaWtlICJyc2EiLCBvcgogICAgICAgICJyc2EyMDQ4IiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYW4gYWxnb3JpdGhtIGFuZCBhIGtleSBzaXplLgoKICAgICAgICBFWFBJUkVTX0lOIHNwZWNpZmllcyB0aGUgZXhwaXJhdGlvbiB0aW1lIG9mIHRoZSBzdWJrZXkgaW4KICAgICAgICBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgc3Via2V5cyBjcmVhdGlvbi4gIEJ5IGRlZmF1bHQsIGEKICAgICAgICByZWFzb25hYmxlIGV4cGlyYXRpb24gdGltZSBpcyBjaG9zZW4uICBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYQogICAgICAgIHN1YmtleSB0aGF0IGRvZXMgbm90IGV4cGlyZSwgdXNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50IEVYUElSRVMuCgogICAgICAgIFNJR04sIEVOQ1JZUFQsIGFuZCBBVVRIRU5USUNBVEUgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCB0aGUKICAgICAgICBjYXBhYmlsaXRpZXMgb2YgdGhlIG5ldyBzdWJrZXkuICBJZiB5b3UgZG9uJ3QgcmVxdWVzdCBhbnksIGFuCiAgICAgICAgZW5jcnlwdGlvbiBzdWJrZXkgaXMgZ2VuZXJhdGVkLgoKICAgICAgICBJZiBQQVNTUEhSQVNFIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwgdGhlbiB0aGUgc3Via2V5IHdpbGwgbm90CiAgICAgICAgYmUgcHJvdGVjdGVkIHdpdGggYSBwYXNzcGhyYXNlLiAgSWYgUEFTU1BIUkFTRSBpcyBhIHN0cmluZywgaXQKICAgICAgICB3aWxsIGJlIHVzZWQgdG8gcHJvdGVjdCB0aGUgc3Via2V5LiAgSWYgUEFTU1BIUkFTRSBpcyBUcnVlLAogICAgICAgIHRoZSBwYXNzcGhyYXNlIG11c3QgYmUgc3VwcGxpZWQgdXNpbmcgYSBwYXNzcGhyYXNl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AABaBnBvbGljeXIQAAAAchAAAAByEQAAANoPa2V5X3RvZnVfcG9saWN55AMAAHMCAAAAAAp6F0NvbnRleHQua2V5X3RvZnVfcG9saWN5YwUAAAAAAAAACQAAAAcAAABDAAAAc8IAAAB0AGoBfAGDAXMUdAJ8AXQDgwJyGnwBfQVuFGQBagRkAmQDhAB8AUQAgwGDAX0FdAVqBoMAfQZ0BWoHfABqCHwFfAJyUnQJagp8AIMBfAJmAm4CZAR8A3JmdAlqCnwAgwF8A2YCbgJkBHwEcnp0CWoKfACDAXwEZgJuAmQEfAaDBn0HfABqC3KSdAVqDHwAgwEBAHQNfAeDAQEAdAVqDnwGgwF9CHQFag98BoMBAQB8CGQFawNyvnQQfAiDAVMAZARTACkGYZMCAABJc3N1ZSBhIHJhdyBhc3N1YW4gY29tbWFuZAoKICAgICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGlzc3VlIGEgcmF3IGFzc3VhbiBjb21tYW5kIHRvIHRoZQogICAgICAgIGVuZ2luZS4KCiAgICAgICAgSWYgY29tbWFuZCBpcyBhIHN0cmluZyBvciBieXRlcywgaXQgd2lsbCBiZSB1c2VkIGFzLWlzLiAgSWYgaXQKICAgICAgICBpcyBhbiBpdGVyYWJsZSBvZiBzdHJpbmdzLCBpdCB3aWxsIGJlIHByb3Blcmx5IGVzY2FwZWQgYW5kCiAgICAgICAgam9pbmVkIGludG8gYW4gd2VsbC1mb3JtZWQgYXNzdWFuIGNvbW1hbmQuCgogICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgICAgIGRhdGFfY2IJCS0tIGEgY2FsbGJhY2sgcmVjZWl2aW5nIGRhdGEgbGluZXMKICAgICAgICBpbnF1aXJlX2NiCS0tIGEgY2FsbGJhY2sgcHJvdmlkaW5nIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICBzdGF0dXNfY2IJLS0gYSBjYWxsYmFjayByZWNlaXZpbmcgc3RhdHVzIGxpbmVzCgogICAgICAgIFJldHVybnM6CiAgICAgICAgcmVzdWx0CQktLSB0aGUgcmVzdWx0IG9mIGNvbW1hbmQgYXMgR1BHTUVFcnJvcgoKICAgICAgICBSYWlzZXM6CiAgICAg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AmQBWgNkAloEZANaBWQEZAWEAFoGZCeHAGYBZAhkCYQJWgdkCmQLhABaCGQMZA2EAFoJZA5kD4QAWgpkEGQRhABaC2QSZBOEAFoMZChkFGQVhAFaDWQpZBZkF4QBWg5kKmQYZBmEAVoPZBpkG4QAWhBkHGQdhABaEWQeZB+EAFoSZCBkIYQAWhNkImQjhABaFGQsZCVkJoQBWhWHAAQAWhZTACktcmYAAABhSgIAAERhdGEgYnVmZmVyCgogICAgQSBsb3Qgb2YgZGF0YSBoYXMgdG8gYmUgZXhjaGFuZ2VkIGJldHdlZW4gdGhlIHVzZXIgYW5kIHRoZSBjcnlwdG8KICAgIGVuZ2luZSwgbGlrZSBwbGFpbnRleHQgbWVzc2FnZXMsIGNpcGhlcnRleHQsIHNpZ25hdHVyZXMgYW5kCiAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUga2V5cy4gIFRoZSB0ZWNobmljYWwgZGV0YWlscyBhYm91dAogICAgZXhjaGFuZ2luZyB0aGUgZGF0YSBpbmZvcm1hdGlvbiBhcmUgY29tcGxldGVseSBhYnN0cmFjdGVkIGJ5CiAgICBHUEdNRS4gIFRoZSB1c2VyIHByb3ZpZGVzIGFuZCByZWNlaXZlcyB0aGUgZGF0YSB2aWEgYGdwZ21lX2RhdGFfdCcKICAgIG9iamVjdHMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgYmV0d2VlbiBHUEdNRQogICAgYW5kIHRoZSBjcnlwdG8gZW5naW5lIGluIHVzZS4KCiAgICBUaGlzIERhdGEgY2xhc3MgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBHcGdtZURhdGEgb2JqZWN0cy4KCiAgICBQbGVhc2Ugc2VlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBfX2luaXRfXyBmb3IgaW5zdGFudGlhdGlvbi4KCiAgICBaDGdwZ21lX2RhdGFfdFoLZ3BnbWVfZGF0YV9jAgAAAAAAAAACAAAACgAAAEMAAABzCAAAAHwBZAprB1MAKQt6P1RoaXMgZnVuY3Rpb24gc2hvdWxkIGxpc3QgYWxsIGZ1bmN0aW9ucyByZXR1cm5pbmcgZ3BnbWVfZXJyb3JfdNoPZ3BnbWVfZGF0YV9yZWFk2hBncGdtZV9kYXRhX3dyaXRl2g9ncGdtZV9kYXRhX3NlZWvaEmdwZ21lX2RhdGFfcmVsZWFzZdoeZ3BnbWVfZGF0YV9yZWxlYXNlX2FuZF9nZXRfbWVt2hdncGdtZV9kYXRhX2dldF9lbmNvZGluZ9oYZ3BnbWVfZGF0YV9nZXRfZmlsZV9uYW1l2hNncGdtZV9kYXRhX3NldF9mbGFn2hNncGdtZV9kYXRhX2lkZW50aWZ5PgkAAAByBwEAAHIEAQAAcgkBAAByCgEAAHIDAQAAcgsBAAByCAEAAHIFAQAAcgYBAAByEAAAACkCcg8AAAByKgAAAHIQAAAAchAAAAByEQAAAHIrAAAAhAUAAHMUAAAAAAcCAQABAAEAAQABAAEAAQABAAF6EERhdGEuX2Vycm9yY2hlY2tOVGMHAAAAAAAAAAcAAAAEAAAAAwAAAHOgAAAAdAB0AXwAgwJqAmQBgwEBAGQBfABfA3wFZAFrCXIqfABqBHwFjgABAG5yfAFkAWsJckB8AGoFfAF8BoMCAQBuXHwCZAFrCXJofANkAWsJcmh8BGQBawlyaHwAagZ8AnwDfASDAwEAbjR8AmQBawlylHQHagh8AoMBcoh8AGoJfAJ8BoMCAQBxnHwAagp8AoMBAQBuCHwAaguDAAEAZAFTACkCYZAFAABJbml0aWFsaXplIGEgbmV3IGdwZ21lX2RhdGFfdCBvYmplY3QuCgogICAgICAgIElmIG5vIGFyZ3MgYXJlIHNwZWNpZmllZCwgbWFrZSBpdCBhbiBlbXB0eSBvYmplY3QuCgogICAgICAgIElmIHN0cmluZyBhbG9uZSBpcyBzcGVjaWZpZWQsIGluaXRpYWxpemUgaXQgd2l0aCB0aGUgZGF0YQogICAgICAgIGNvbnRhaW5lZCB0aGVyZS4KCiAgICAgICAgSWYgZmlsZSwgb2Zmc2V0LCBhbmQgbGVuZ3RoIGFyZSBhbGwgc3BlY2lmaWVkLCBmaWxlIG11c3QKICAgICAgICBiZSBlaXRoZXIgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZSBvYmplY3QsIGFuZCB0aGUgb2JqZWN0CiAgICAgICAgd2lsbCBiZSBpbml0aWFsaXplZCBieSByZWFkaW5nIHRoZSBzcGVjaWZpZWQgY2h1bmsgZnJvbSB0aGUgZmlsZS4KCiAgICAgICAgSWYgY2JzIGlzIHNwZWNpZmllZCwgaXQgTVVTVCBiZSBhIHR1cGxlIG9mIHRoZSBmb3JtOgoKICAgICAgICAocmVhZF9jYiwgd3JpdGVfY2IsIHNlZWtfY2IsIHJlbGVhc2VfY2JbLCBob29rXSkKCiAgICAgICAgd2hlcmUgdGhlIGZpcnN0IGZvdXIgaXRlbXMgYXJlIGZ1bmN0aW9ucyBpbXBsZW1lbnRpbmcgcmVhZGluZywKICAgICAgICB3cml0aW5nLCBzZWVraW5nIHRoZSBkYXRhLCBhbmQgcmVsZWFzaW5nIGFueSByZXNvdXJjZXMgb25jZQogICAgICAgIHRoZSBkYXRhIG9iamVjdCBpcyBkZWFsbG9jYXRlZC4gIFRoZSBmdW5jdGlvbnMgbXVzdCBtYXRjaCB0aGUKICAgICAgICBmb2xsb3dpbmcgcHJvdG90eXBlczoKCiAgICAgICAgICAgIGRlZiByZWFkKGFtb3VudCwgaG9vaz1Ob25lKToKICAgICAgICAgICAgICAgIHJldHVybiA8YSBiImJ5dGVzIiBvYmplY3Q+CgogICAgICAgICAgICBkZWYgd3JpdGUoZGF0YSwgaG9vaz1Ob25lKToKICAgICAgICAgICAgICAgIHJldHVybiA8dGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuPgoKICAgICAgICAgICAgZGVmIHNlZWsob2Zmc2V0LCB3aGVuY2UsIGhvb2s9Tm9uZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gPHRoZSBuZXcgZmlsZSBwb3NpdGlvbj4KCiAgICAgICAgICAgIGRlZiByZWxlYXNlKGhvb2s9Tm9uZSk6CiAgICAgICAgICAgICAgICA8cmV0dXJuIHZhbHVlIGFuZCBleGNlcHRpb25zIGFyZSBpZ25vcmVkPgoKICAgICAgICBUaGUgZnVuY3Rpb25zIG1heSBiZSBib3VuZCBtZXRob2RzLiAgSW4gdGhhdCBjYXNlLCB5b3UgY2FuCiAgICAgICAgc2ltcGx5IHVzZSB0aGUgJ3NlbGYnIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHVzaW5nIGEgaG9vay4KCiAgICAgICAgSWYgZmlsZSBpcyBzcGVj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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 16
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
callbacks.cpython-36.opt-1.pyc
1.14 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
callbacks.cpython-36.pyc
1.14 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
core.cpython-36.opt-1.pyc
51.97 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
core.cpython-36.pyc
52.09 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
errors.cpython-36.opt-1.pyc
7.92 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
errors.cpython-36.pyc
7.92 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
gpgme.cpython-36.opt-1.pyc
146.72 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
gpgme.cpython-36.pyc
146.72 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
results.cpython-36.opt-1.pyc
3.77 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
results.cpython-36.pyc
3.77 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-36.opt-1.pyc
1.52 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-36.pyc
1.52 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.opt-1.pyc
2.13 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.pyc
2.13 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
3.97 KB
lrw-r--r--
2024-04-06 12:29:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
3.97 KB
lrw-r--r--
2024-04-06 12:29:34
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).