REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 75.75 KB
Close
/usr/lib/python3.6/site-packages/OpenSSL/__pycache__/SSL.cpython-36.opt-1.pyc
Text
Base64
Mw0NCqsXRlyHWwEA4wAAAAAAAAAAAAAAAFIAAABAAAAAcwQFAABkAGQBbABaAGQAZAFsAVoBZABkAmwCbQNaAwEAZABkA2wEbQVaBW0GWgYBAGQAZARsB20IWghtCVoJAQBkAGQFbAptC1oLAQBkAGQGbAxtDVoNAQBkAGQHbA5tD1oPAQBkAGQIbBBtEVoSbRNaE20UWhRtFVoVAQBkAGQJbBZtF1oYbRlaGm0bWhxtHVoebR9aIG0hWiJtI1okbSVaJm0nWigBAGQAZApsKW0qWiptK1orbSxaLG0tWi1tLloubS9aLwEAZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWQuZC9kMGQxZDJkM2Q0ZDVkNmQ3ZDhkOWQ6ZDtkPGQ9ZD5kP2RAZEFkQmRDZERkRWRGZEdkSGRJZEpkS2RMZE1kTmRPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxnUloweQhlMVoyVwBuJgQAZTNrCpABcpoBAAEAAQBHAGRdZF6EAGReZTSDA1oyWQBuAlgAZR5qNVo1ZR5qNlo2ZR5qN1o3ZR5qOFo4ZR5qOVo5ZR5qOlo6ZR5qO1o8ZR5qPVo+ZF9aP2RgWkBkYVpBZGJaQmRjWkNkZFpEZR5qRVpGZR5qR1pIZR5qSVpKZR5qS1pMZR5qTVpOZR5qT1pQZR5qUVpSZR5qU1pUZR5qVVpWZR5qV1pYZR5qWVpaZR5qW1pcZR5qXVpeZR5qX1pgZR5qYVpiZR5qY1pkZR5qZVpmZR5qZ1poZR5qaVpqZR5qa1psZR5qbVpuZR5qb1pwZR5qcVpyZR5qc1p0ZR5qdVp2ZR5qd1p4ZR5qeVp6ZR5qe1p8ZR5qfVp+ZR5qf1qAZR5qgVqCZR5qg1qEZR5qhVqGZR5qh1qIZR5qiVqKZR5qi1qMZR5qjVqOZR5qj1qQZR5qkVqSZR5qk1qUZR5qlVqWZR5ql1qYZR5qmVqZZR5qmlqaZR5qm1qbZR5qnJADciRlHmqdWp1lHmqeWp5lHmqfWp9lHmqgWqBlMGqhZGVkZmRnZGhnBIMBAQBlHmqiWqJlHmqjWqNlHmqkWqRlHmqlWqVlHmqmWqZlHmqnWqdlHmqoWqhlHmqpWqllHmqqWqplHmqrWqtlHmqsWqxlHmqtWq1lHmquWq5kaWRqZGtkbGRtZwVar2RuZwFasGRvWrFkcFqyRwBkcWRThABkU2WzgwNatGUGZRpltIMCWrVlIGW0gwFatkcAZHJkVIQAZFRltIMDWrdHAGRzZFWEAGRVZbSDA1q4RwBkdGRWhABkVmW0gwNauUcAZHVkV4QAZFdltIMDWrpHAGR2ZFiEAGRYZbSDA1q7RwBkd2R4hABkeGU0gwNavEcAZHlkeoQAZHplvIMDWr1HAGR7ZHyEAGR8ZbyDA1q+RwBkfWR+hABkfmW8gwNav0cAZH9kgIQAZIBlvIMDWsBHAGSBZIKEAGSCZbyDA1rBRwBkg2SEhABkhGW8gwNawmSFZIaEAFrDZIdkWYQAWsRkiGSJhABaxWXFZR5qxmSKgwJax2XFZR5qyGSLgwJayWXFZR5qymSMgwJay0cAZI1kWoQAZFplNIMDWsxHAGSOZFuEAGRbZTSDA1rNZQ9lzWXOZI9lz4MEWtBHAGSQZFyEAGRcZTSDA1rRZQ9l0WXOZJFlz4MEWtJlHmrTgwABAGQBUwApkukAAAAATikB2ghwbGF0Zm9ybSkC2gV3cmFwc9oHcGFydGlhbCkC2gVjb3VudNoFY2hhaW4pAdoTV2Vha1ZhbHVlRGljdGlvbmFyeSkB2gllcnJvcmNvZGUpAdoKZGVwcmVjYXRlZCkE2gtiaW5hcnlfdHlwZdoNaW50ZWdlcl90eXBlc9oIaW50MmJ5dGXaCmluZGV4Ynl0ZXMpCdoLVU5TUEVDSUZJRUTaGmV4Y2VwdGlvbl9mcm9tX2Vycm9yX3F1ZXVl2gNmZmnaA2xpYtoLbWFrZV9hc3NlcnTaBm5hdGl2ZdoLcGF0aF9zdHJpbmfaFnRleHRfdG9fYnl0ZXNfYW5kX3dhcm7aEW5vX3plcm9fYWxsb2NhdG9yKQbaDEZJTEVUWVBFX1BFTdoRX1Bhc3NwaHJhc2VIZWxwZXLaBFBLZXnaCFg1MDlOYW1l2gRYNTA52glYNTA5U3RvcmXaFk9QRU5TU0xfVkVSU0lPTl9OVU1CRVLaDlNTTEVBWV9WRVJTSU9O2g1TU0xFQVlfQ0ZMQUdT2g9TU0xFQVlfUExBVEZPUk3aClNTTEVBWV9ESVLaD1NTTEVBWV9CVUlMVF9PTtoNU0VOVF9TSFVURE9XTtoRUkVDRUlWRURfU0hVVERPV07aDFNTTHYyX01FVEhPRNoMU1NMdjNfTUVUSE9E2g1TU0x2MjNfTUVUSE9E2gxUTFN2MV9NRVRIT0TaDlRMU3YxXzFfTUVUSE9E2g5UTFN2MV8yX01FVEhPRNoLT1BfTk9fU1NMdjLaC09QX05PX1NTTHYz2gtPUF9OT19UTFN2MdoNT1BfTk9fVExTdjFfMdoNT1BfTk9fVExTdjFfMtoUTU9ERV9SRUxFQVNFX0JVRkZFUlPaEE9QX1NJTkdMRV9ESF9VU0XaEk9QX1NJTkdMRV9FQ0RIX1VTRdoQT1BfRVBIRU1FUkFMX1JTQdoYT1BfTUlDUk9TT0ZUX1NFU1NfSURfQlVH2hlPUF9ORVRTQ0FQRV9DSEFMTEVOR0VfQlVH2iNPUF9ORVRTQ0FQRV9SRVVTRV9DSVBIRVJfQ0hBTkdFX0JVR9oeT1BfU1NMUkVGMl9SRVVTRV9DRVJUX1RZUEVfQlVH2h1PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUtoZT1BfTVNJRV9TU0xWMl9SU0FfUEFERElOR9obT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVH2g1PUF9UTFNfRDVfQlVH2hhPUF9UTFNfQkxPQ0tfUEFERElOR19CVUfaHk9QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UU9obT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNF2hNPUF9UTFNfUk9MTEJBQ0tfQlVH2hBPUF9QS0NTMV9DSEVDS18x2hBPUF9QS0NTMV9DSEVDS18y2hVPUF9ORVRTQ0FQRV9DQV9ETl9CVUfaIk9QX05FVFNDQVBFX0RFTU9fQ0lQSEVSX0NIQU5HRV9CVUfaEU9QX05PX0NPTVBSRVNTSU9O2g9PUF9OT19RVUVSWV9NVFXaEk9QX0NPT0tJRV9FWENIQU5HRdoMT1BfTk9fVElDS0VU2gZPUF9BTEzaC1ZFUklGWV9QRUVS2htWRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlTaElZFUklGWV9DTElFTlRfT05DRdoLVkVSSUZZX05PTkXaDlNFU1NfQ0FDSEVfT0ZG2hFTRVNTX0NBQ0hFX0NMSUVOVNoRU0VTU19DQUNIRV9TRVJWRVLaD1NFU1NfQ0FDSEVfQk9USNoYU0VTU19DQUNIRV9OT19BVVRPX0NMRUFS2h1TRVNTX0NBQ0hFX05PX0lOVEVSTkFMX0xPT0tVUNocU0VTU19DQUNIRV9OT19JTlRFUk5BTF9TVE9SRdoWU0VTU19DQUNIRV9OT19JTlRFUk5BTNoOU1NMX1NUX0NPTk5FQ1TaDVNTTF9TVF9BQ0NFUFTaC1NTTF9TVF9NQVNL2gtTU0xfQ0JfTE9PUNoLU1NMX0NCX0VYSVTaC1NTTF9DQl9SRUFE2gxTU0xfQ0JfV1JJVEXaDFNTTF9DQl9BTEVSVNoRU1NMX0NCX1JFQURfQUxFUlTaElNTTF9DQl9XUklURV9BTEVSVNoSU1NMX0NCX0FDQ0VQVF9MT09Q2hJTU0xfQ0JfQUNDRVBUX0VYSVTaE1NTTF9DQl9DT05ORUNUX0xPT1DaE1NTTF9DQl9DT05ORUNUX0VYSVTaFlNTTF9DQl9IQU5EU0hBS0VfU1RBUlTaFVNTTF9DQl9IQU5EU0hBS0VfRE9ORdoFRXJyb3LaDVdhbnRSZWFkRXJyb3LaDldhbnRXcml0ZUVycm9y2hNXYW50WDUwOUxvb2t1cEVycm9y2g9aZXJvUmV0dXJuRXJyb3LaDFN5c0NhbGxFcnJvctoOU1NMZWF5X3ZlcnNpb27aB1Nlc3Npb27aB0NvbnRleHTaCkNvbm5lY3Rpb25jAAAAAAAAAAAAAAAAAQAAAEAAAABzDAAAAGUAWgFkAFoCZAFTACkC2gdfYnVmZmVyTikD2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9fqQBycwAAAHJzAAAA+hkvdXNyL2xpYi9weXRob24zLjYvU1NMLnB5cm8AAAB2AAAAcwIAAAAIAXJvAAAA6QEAAADpAgAAAOkDAAAA6QQAAADpBQAAAOkGAAAA2gtTU0xfU1RfSU5JVNoNU1NMX1NUX0JFRk9SRdoJU1NMX1NUX09L2hJTU0xfU1RfUkVORUdPVElBVEV6Ii9ldGMvc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnR6IC9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0ehYvZXRjL3NzbC9jYS1idW5kbGUucGVtehcvZXRjL3BraS90bHMvY2FjZXJ0LnBlbXoxL2V0Yy9wa2kvY2EtdHJ1c3QvZXh0cmFjdGVkL3BlbS90bHMtY2EtYnVuZGxlLnBlbXoOL2V0Yy9zc2wvY2VydHNzJAAAAC9vcHQvcHljYS9jcnlwdG9ncmFwaHkvb3BlbnNzbC9jZXJ0c3MnAAAAL29wdC9weWNhL2NyeXB0b2dyYXBoeS9vcGVuc3NsL2NlcnQucGVtYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyZQAAAHo0CiAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiBhbiBgT3BlblNTTC5TU0xgIEFQSS4KICAgIE4pBHJwAAAAcnEAAABycgAAANoHX19kb2NfX3JzAAAAcnMAAABycwAAAHJ0AAAAcmUAAADvAAAAcwIAAAAIA2MAAAAAAAAAAAAAAAABAAAAQAAAAHMMAAAAZQBaAWQAWgJkAVMAKQJyZgAAAE4pA3JwAAAAcnEAAABycgAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcmYAAAD5AAAAcwIAAAAIAWMAAAAAAAAAAAAAAAABAAAAQAAAAHMMAAAAZQBaAWQAWgJkAVMAKQJyZwAAAE4pA3JwAAAAcnEAAABycgAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcmcAAAD9AAAAcwIAAAAIAWMAAAAAAAAAAAAAAAABAAAAQAAAAHMMAAAAZQBaAWQAWgJkAVMAKQJyaAAAAE4pA3JwAAAAcnEAAABycgAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcmgAAAABAQAAcwIAAAAIAWMAAAAAAAAAAAAAAAABAAAAQAAAAHMMAAAAZQBaAWQAWgJkAVMAKQJyaQAAAE4pA3JwAAAAcnEAAABycgAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcmkAAAAFAQAAcwIAAAAIAWMAAAAAAAAAAAAAAAABAAAAQAAAAHMMAAAAZQBaAWQAWgJkAVMAKQJyagAAAE4pA3JwAAAAcnEAAABycgAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcmoAAAAJAQAAcwIAAAAIAWMAAAAAAAAAAAAAAAACAAAAQAAAAHMgAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGUwApB9oYX0NhbGxiYWNrRXhjZXB0aW9uSGVscGVyYcUBAAAKICAgIEEgYmFzZSBjbGFzcyBmb3Igd3JhcHBlciBjbGFzc2VzIHRoYXQgYWxsb3cgZm9yIGludGVsbGlnZW50IGV4Y2VwdGlvbgogICAgaGFuZGxpbmcgaW4gT3BlblNTTCBjYWxsYmFja3MuCgogICAgOml2YXIgbGlzdCBfcHJvYmxlbXM6IEFueSBleGNlcHRpb25zIHRoYXQgb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIGluIGEKICAgICAgICBjb250ZXh0IHdoZXJlIHRoZXkgY291bGQgbm90IGJlIHJhaXNlZCBpbiB0aGUgbm9ybWFsIHdheS4gIFR5cGljYWxseQogICAgICAgIHRoaXMgaXMgYmVjYXVzZSBPcGVuU1NMIGhhcyBjYWxsZWQgaW50byBzb21lIFB5dGhvbiBjb2RlIGFuZCByZXF1aXJlcyBhCiAgICAgICAgcmV0dXJuIHZhbHVlLiAgVGhlIGV4Y2VwdGlvbnMgYXJlIHNhdmVkIHRvIGJlIHJhaXNlZCBsYXRlciB3aGVuIGl0IGlzCiAgICAgICAgcG9zc2libGUgdG8gZG8gc28uCiAgICBjAQAAAAAAAAABAAAAAgAAAEMAAABzCgAAAGcAfABfAGQAUwApAU4pAdoJX3Byb2JsZW1zKQHaBHNlbGZycwAAAHJzAAAAcnQAAADaCF9faW5pdF9fGQEAAHMCAAAAAAF6IV9DYWxsYmFja0V4Y2VwdGlvbkhlbHBlci5fX2luaXRfX2MBAAAAAAAAAAEAAAALAAAAQwAAAHM2AAAAfABqAHIyeQp0AYMAAQBXAG4UBAB0AmsKciQBAAEAAQBZAG4CWAB8AGoAagNkAYMBggFkAlMAKQN6gQogICAgICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBmcm9tIHRoZSBPcGVuU1NMIGVycm9yIHF1ZXVlIG9yIHRoYXQgd2FzIHByZXZpb3VzbHkKICAgICAgICBjYXB0dXJlZCB3aGUgcnVubmluZyBhIGNhbGxiYWNrLgogICAgICAgIHIBAAAATikEcoEAAADaFF9yYWlzZV9jdXJyZW50X2Vycm9ycmUAAADaA3BvcCkBcoIAAABycwAAAHJzAAAAcnQAAADaEHJhaXNlX2lmX3Byb2JsZW0cAQAAcwwAAAAABQYBAgEKAQ4BBgF6KV9DYWxsYmFja0V4Y2VwdGlvbkhlbHBlci5yYWlzZV9pZl9wcm9ibGVtTikGcnAAAABycQAAAHJyAAAAcn8AAABygwAAAHKGAAAAcnMAAABycwAAAHJzAAAAcnQAAABygAAAAA0BAABzBgAAAAgKBAIIA3KAAAAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBdoNX1ZlcmlmeUhlbHBlcnpeCiAgICBXcmFwIGEgY2FsbGJhY2sgc3VjaCB0aGF0IGl0IGNhbiBiZSB1c2VkIGFzIGEgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uCiAgICBjYWxsYmFjay4KICAgIGMCAAAAAAAAAAMAAAAEAAAAAwAAAHMyAAAAdABqAYgBgwEBAHQCiACDAYcAhwFmAmQBZAKECIMBfQJ0A2oEZAN8AoMCiAFfBGQAUwApBE5jAgAAAAAAAAALAAAAEAAAABMAAABzsAAAAHQAagF8AYMBfQJ0AGoCfAKDAQEAdANqBHwCgwF9A3QAagV8AYMBfQR0AGoGfAGDAX0FdABqB4MAfQZ0AGoIfAF8BoMCfQd0CWoKfAcZAH0IeRSIAHwIfAN8BHwFfACDBX0JVwBuLAQAdAtrCnKQAQB9CgEAehCIAWoMag18CoMBAQBkAVMAZAB9Cn4KWABuHFgAfAlyqHQAag58AXQAag+DAgEAZAJTAGQBUwBkAFMAKQNOcgEAAABydQAAACkQ2gRfbGliWh9YNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ02gtYNTA5X3VwX3JlZnIbAAAA2hJfZnJvbV9yYXdfeDUwOV9wdHJaGFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcloeWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoWiJTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4WhpYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YXJuAAAA2hBfcmV2ZXJzZV9tYXBwaW5n2glFeGNlcHRpb25ygQAAANoGYXBwZW5kWhhYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3JaCVg1MDlfVl9PSykL2gJva1oJc3RvcmVfY3R4WgR4NTA52gRjZXJ0WgxlcnJvcl9udW1iZXJaC2Vycm9yX2RlcHRo2gVpbmRleNoDc3NsWgpjb25uZWN0aW9u2gZyZXN1bHTaAWUpAtoIY2FsbGJhY2tyggAAAHJzAAAAcnQAAADaB3dyYXBwZXIyAQAAcyQAAAAAAgoBCgEKAQoBCgIIAQwBCgICAQIBEgIQAQwBEAIEAQ4BBAJ6J19WZXJpZnlIZWxwZXIuX19pbml0X18uPGxvY2Fscz4ud3JhcHBlcnoeaW50ICgqKShpbnQsIFg1MDlfU1RPUkVfQ1RYICopKQVygAAAAHKDAAAAcgMAAADaBF9mZmlylAAAACkDcoIAAABylAAAAHKVAAAAcnMAAAApAnKUAAAAcoIAAABydAAAAHKDAAAALwEAAHMIAAAAAAEKAhYaBAF6Fl9WZXJpZnlIZWxwZXIuX19pbml0X19OKQVycAAAAHJxAAAAcnIAAAByfwAAAHKDAAAAcnMAAABycwAAAHJzAAAAcnQAAAByhwAAACkBAABzBAAAAAgEBAJyhwAAAGMAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQXaE19OcG5BZHZlcnRpc2VIZWxwZXJ6VAogICAgV3JhcCBhIGNhbGxiYWNrIHN1Y2ggdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhbiBOUE4gYWR2ZXJ0aXNlbWVudCBjYWxsYmFjay4KICAgIGMCAAAAAAAAAAMAAAAEAAAAAwAAAHMyAAAAdABqAYgBgwEBAHQCiACDAYcAhwFmAmQBZAKECIMBfQJ0A2oEZAN8AoMCiAFfBGQAUwApBE5jBAAAAAAAAAAIAAAAEAAAABMAAABzoAAAAHludABqAXwAGQB9BIgAfASDAX0FZAFqAnQDagRkAmQDhAB8BUQAgwGDAYMBfQZ0BWoGZAR0B3wGgwGDAnQFagZkBXwGgwJnAnwEXwh8BGoIZAYZAGQGGQB8AmQGPAB8BGoIZAcZAHwBZAY8AGQGUwAEAHQJawpymgEAfQcBAHoQiAFqCmoLfAeDAQEAZAhTAGQAfQd+B1gAbgJYAGQAUwApCU7zAAAAAGMBAAAAAAAAAAIAAAAEAAAAcwAAAHMeAAAAfABdFn0BdAB0AXwBgwGDAXwBZgJWAAEAcQJkAFMAKQFOKQJyDAAAANoDbGVuKQLaAi4w2gFwcnMAAABycwAAAHJ0AAAA+gk8Z2VuZXhwcj5hAQAAcwIAAAAEAHpAX05wbkFkdmVydGlzZUhlbHBlci5fX2luaXRfXy48bG9jYWxzPi53cmFwcGVyLjxsb2NhbHM+LjxnZW5leHByPnoOdW5zaWduZWQgaW50ICp6D3Vuc2lnbmVkIGNoYXJbXXIBAAAAcnUAAABydgAAACkMcm4AAAByiwAAANoEam9pbnIGAAAA2g1mcm9tX2l0ZXJhYmxlcpYAAADaA25ld3KZAAAA2hxfbnBuX2FkdmVydGlzZV9jYWxsYmFja19hcmdzcowAAABygQAAAHKNAAAAKQhykQAAANoDb3V02gZvdXRsZW7aA2FyZ9oEY29ubtoGcHJvdG9z2ghwcm90b3N0cnKTAAAAKQJylAAAAHKCAAAAcnMAAABydAAAAHKVAAAAWAEAAHMaAAAAAAICAQoBCAQEARYIDgEQAhIBDgEEARABDAF6LV9OcG5BZHZlcnRpc2VIZWxwZXIuX19pbml0X18uPGxvY2Fscz4ud3JhcHBlcno+aW50ICgqKShTU0wgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqKiwgdW5zaWduZWQgaW50ICosIHZvaWQgKikpBXKAAAAAcoMAAAByAwAAAHKWAAAAcpQAAAApA3KCAAAAcpQAAABylQAAAHJzAAAAKQJylAAAAHKCAAAAcnQAAABygwAAAFUBAABzCgAAAAABCgIWGwQBAgF6HF9OcG5BZHZlcnRpc2VIZWxwZXIuX19pbml0X19OKQVycAAAAHJxAAAAcnIAAAByfwAAAHKDAAAAcnMAAABycwAAAHJzAAAAcnQAAABylwAAAFABAABzBAAAAAgDBAJylwAAAGMAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQXaEF9OcG5TZWxlY3RIZWxwZXJ6UAogICAgV3JhcCBhIGNhbGxiYWNrIHN1Y2ggdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhbiBOUE4gc2VsZWN0aW9uIGNhbGxiYWNrLgogICAgYwIAAAAAAAAAAwAAAAQAAAADAAAAczIAAAB0AGoBiAGDAQEAdAKIAIMBhwCHAWYCZAFkAoQIgwF9AnQDagRkA3wCgwKIAV8EZABTACkETmMGAAAAAAAAAA0AAAAQAAAAEwAAAHPeAAAAeax0AGoBfAAZAH0GdAJqA3wDfASDAmQAZACFAhkAfQdnAH0IeDx8B3JgdAR8B2QBgwJ9CXwHZAJ8CWQCFwCFAhkAfQp8CGoFfAqDAQEAfAd8CWQCFwBkAIUCGQB9B3EmVwCIAHwGfAiDAn0LdAJqBmQDdAd8C4MBgwJ0AmoGZAR8C4MCZwJ8Bl8IfAZqCGQBGQBkARkAfAJkATwAfAZqCGQCGQB8AWQBPABkAVMABAB0CWsKctgBAH0MAQB6EIgBagpqBXwMgwEBAGQFUwBkAH0MfgxYAG4CWABkAFMAKQZOcgEAAABydQAAAHoPdW5zaWduZWQgY2hhciAqeg91bnNpZ25lZCBjaGFyW11ydgAAACkLcm4AAAByiwAAAHKWAAAA2gZidWZmZXJyDQAAAHKNAAAAcp8AAABymQAAANoZX25wbl9zZWxlY3RfY2FsbGJhY2tfYXJnc3KMAAAAcoEAAAApDXKRAAAAcqEAAAByogAAANoDaW5f2gVpbmxlbnKjAAAAcqQAAADaBWluc3Ry2glwcm90b2xpc3TaBmxlbmd0aNoFcHJvdG/aBm91dHN0cnKTAAAAKQJylAAAAHKCAAAAcnMAAABydAAAAHKVAAAAgQEAAHMkAAAAAAICAQoFFAEEAQYBCgEQAQoBFAMKBw4BEAISAQ4BBAEQAQwBeipfTnBuU2VsZWN0SGVscGVyLl9faW5pdF9fLjxsb2NhbHM+LndyYXBwZXJ6XmludCAoKikoU1NMICosIHVuc2lnbmVkIGNoYXIgKiosIHVuc2lnbmVkIGNoYXIgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKikpBXKAAAAAcoMAAAByAwAAAHKWAAAAcpQAAAApA3KCAAAAcpQAAABylQAAAHJzAAAAKQJylAAAAHKCAAAAcnQAAABygwAAAH4BAABzCgAAAAABCgIWIgQBAgJ6GV9OcG5TZWxlY3RIZWxwZXIuX19pbml0X19OKQVycAAAAHJxAAAAcnIAAAByfwAAAHKDAAAAcnMAAABycwAAAHJzAAAAcnQAAABypwAAAHkBAABzBAAAAAgDBAJypwAAAGMAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQXaEV9BTFBOU2VsZWN0SGVscGVyelEKICAgIFdyYXAgYSBjYWxsYmFjayBzdWNoIHRoYXQgaXQgY2FuIGJlIHVzZWQgYXMgYW4gQUxQTiBzZWxlY3Rpb24gY2FsbGJhY2suCiAgICBjAgAAAAAAAAADAAAABAAAAAMAAABzMgAAAHQAagGIAYMBAQB0AogAgwGHAIcBZgJkAWQChAiDAX0CdANqBGQDfAKDAogBXwRkAFMAKQROYwYAAAAAAAAADQAAABAAAAATAAAAc/AAAAB5vnQAagF8ABkAfQZ0AmoDfAN8BIMCZABkAIUCGQB9B2cAfQh4PHwHcmB0BHwHZAGDAn0JfAdkAnwJZAIXAIUCGQB9CnwIagV8CoMBAQB8B3wJZAIXAGQAhQIZAH0HcSZXAIgAfAZ8CIMCfQt0BnwLdAeDAnN+dAhkA4MBggF0AmoJZAR0CnwLgwGDAnQCaglkBXwLgwJnAnwGXwt8BmoLZAEZAGQBGQB8AmQBPAB8BmoLZAIZAHwBZAE8AGQBUwAEAHQMawpy6gEAfQwBAHoQiAFqDWoFfAyDAQEAZAZTAGQAfQx+DFgAbgJYAGQAUwApB05yAQAAAHJ1AAAAeidBTFBOIGNhbGxiYWNrIG11c3QgcmV0dXJuIGEgYnl0ZXN0cmluZy56D3Vuc2lnbmVkIGNoYXIgKnoPdW5zaWduZWQgY2hhcltdcnYAAAApDnJuAAAAcosAAABylgAAAHKoAAAAcg0AAAByjQAAANoKaXNpbnN0YW5jZdoMX2JpbmFyeV90eXBl2glUeXBlRXJyb3JynwAAAHKZAAAA2hpfYWxwbl9zZWxlY3RfY2FsbGJhY2tfYXJnc3KMAAAAcoEAAAApDXKRAAAAcqEAAAByogAAAHKqAAAAcqsAAAByowAAAHKkAAAAcqwAAAByrQAAAFoLZW5jb2RlZF9sZW5yrwAAAHKwAAAAcpMAAAApAnKUAAAAcoIAAABycwAAAHJ0AAAAcpUAAACyAQAAcygAAAAAAgIBCgUUAQQBBgEKARABCgEUAwoCCgEIBg4BEAISAQ4BBAEQAQwBeitfQUxQTlNlbGVjdEhlbHBlci5fX2luaXRfXy48bG9jYWxzPi53cmFwcGVyel5pbnQgKCopKFNTTCAqLCB1bnNpZ25lZCBjaGFyICoqLCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgaW50LCB2b2lkICopKQVygAAAAHKDAAAAcgMAAABylgAAAHKUAAAAKQNyggAAAHKUAAAAcpUAAABycwAAACkCcpQAAAByggAAAHJ0AAAAcoMAAACvAQAAcwoAAAAAAQoCFiQEAQICehpfQUxQTlNlbGVjdEhlbHBlci5fX2luaXRfX04pBXJwAAAAcnEAAABycgAAAHJ/AAAAcoMAAABycwAAAHJzAAAAcnMAAABydAAAAHKxAAAAqgEAAHMEAAAACAMEAnKxAAAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBdoZX09DU1BTZXJ2ZXJDYWxsYmFja0hlbHBlcmHwAwAACiAgICBXcmFwIGEgY2FsbGJhY2sgc3VjaCB0aGF0IGl0IGNhbiBiZSB1c2VkIGFzIGFuIE9DU1AgY2FsbGJhY2sgZm9yIHRoZSBzZXJ2ZXIKICAgIHNpZGUuCgogICAgQW5ub3lpbmdseSwgT3BlblNTTCBkZWZpbmVzIG9uZSBPQ1NQIGNhbGxiYWNrIGJ1dCB1c2VzIGl0IGluIHR3byBkaWZmZXJlbnQKICAgIHdheXMuIEZvciBzZXJ2ZXJzLCB0aGF0IGNhbGxiYWNrIGlzIGV4cGVjdGVkIHRvIHJldHJpZXZlIHNvbWUgT0NTUCBkYXRhIGFuZAogICAgaGFuZCBpdCB0byBPcGVuU1NMLCBhbmQgbWF5IHJldHVybiBvbmx5IFNTTF9UTFNFWFRfRVJSX09LLAogICAgU1NMX1RMU0VYVF9FUlJfRkFUQUwsIGFuZCBTU0xfVExTRVhUX0VSUl9OT0FDSy4gRm9yIGNsaWVudHMsIHRoYXQgY2FsbGJhY2sKICAgIGlzIGV4cGVjdGVkIHRvIGNoZWNrIHRoZSBPQ1NQIGRhdGEsIGFuZCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IsCiAgICAwIGlmIHRoZSByZXNwb25zZSBpcyBub3QgYWNjZXB0YWJsZSwgb3IgcG9zaXRpdmUgaWYgaXQgaXMuIFRoZXNlIGFyZQogICAgbXV0dWFsbHkgZXhjbHVzaXZlIHJldHVybiBjb2RlIGJlaGF2aW91cnMsIGFuZCB0aGV5IG1lYW4gdGhhdCB3ZSBuZWVkIHR3bwogICAgaGVscGVycyBzbyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBpZiB0aGUgdXNlcidzCiAgICBjb2RlIHRocm93cyBhbiBleGNlcHRpb24uCgogICAgR2l2ZW4gdGhhdCB3ZSBoYXZlIHRvIGhhdmUgdHdvIGhlbHBlcnMgYW55d2F5LCB0aGVzZSBoZWxwZXJzIGFyZSBhIGJpdCBtb3JlCiAgICBoZWxwZXJ5IHRoYW4gbW9zdDogc3BlY2lmaWNhbGx5LCB0aGV5IGhpZGUgYSBmZXcgbW9yZSBvZiB0aGUgT3BlblNTTAogICAgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIHVzZXIgaGFzIGFuIGVhc2llciB0aW1lIHdyaXRpbmcgdGhlc2UgY2FsbGJhY2tzLgoKICAgIFRoaXMgaGVscGVyIGltcGxlbWVudHMgdGhlIHNlcnZlciBzaWRlLgogICAgYwIAAAAAAAAAAwAAAAQAAAADAAAAczIAAAB0AGoBiAGDAQEAdAKIAIMBhwCHAWYCZAFkAoQIgwF9AnQDagRkA3wCgwKIAV8EZABTACkETmMCAAAAAAAAAAgAAAAQAAAAEwAAAHOyAAAAeYB0AGoBfAAZAH0CfAF0AmoDawNyInQCagR8AYMBfQNuBGQAfQOIAHwCfAODAn0EdAV8BHQGgwJzQnQHZAGDAYIBfARzSmQCUwB0CHwEgwF9BXQJagp8BYMBfQZ8BHQCagt8BnwFgwJkAGQAhQI8AHQJagx8AHwGfAWDAwEAZANTAAQAdA1rCnKsAQB9BwEAehCIAWoOag98B4MBAQBkBFMAZAB9B34HWABuAlgAZABTACkFTnonT0NTUCBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJ5dGVzdHJpbmcucncAAAByAQAAAHJ2AAAAKRBybgAAAHKLAAAAcpYAAADaBE5VTEzaC2Zyb21faGFuZGxlcrIAAAByswAAAHK0AAAAcpkAAAByiAAAAFoOT1BFTlNTTF9tYWxsb2NyqAAAAFofU1NMX3NldF90bHNleHRfc3RhdHVzX29jc3BfcmVzcHKMAAAAcoEAAAByjQAAACkIcpEAAADaBWNkYXRhcqQAAADaBGRhdGHaCW9jc3BfZGF0YVoQb2NzcF9kYXRhX2xlbmd0aFoIZGF0YV9wdHJykwAAACkCcpQAAAByggAAAHJzAAAAcnQAAABylQAAAPYBAABzJgAAAAACAgEKAwoBDAIEAwoCCgEIBgQBBAQIAQoBFAIEAQoDBAEQAQwBejNfT0NTUFNlcnZlckNhbGxiYWNrSGVscGVyLl9faW5pdF9fLjxsb2NhbHM+LndyYXBwZXJ6FmludCAoKikoU1NMICosIHZvaWQgKikpBXKAAAAAcoMAAAByAwAAAHKWAAAAcpQAAAApA3KCAAAAcpQAAABylQAAAHJzAAAAKQJylAAAAHKCAAAAcnQAAABygwAAAPMBAABzBgAAAAABCgIWJ3oiX09DU1BTZXJ2ZXJDYWxsYmFja0hlbHBlci5fX2luaXRfX04pBXJwAAAAcnEAAABycgAAAHJ/AAAAcoMAAABycwAAAHJzAAAAcnMAAABydAAAAHK2AAAA3QEAAHMEAAAACBQEAnK2AAAAYwAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBdoZX09DU1BDbGllbnRDYWxsYmFja0hlbHBlcmHwAwAACiAgICBXcmFwIGEgY2FsbGJhY2sgc3VjaCB0aGF0IGl0IGNhbiBiZSB1c2VkIGFzIGFuIE9DU1AgY2FsbGJhY2sgZm9yIHRoZSBjbGllbnQKICAgIHNpZGUuCgogICAgQW5ub3lpbmdseSwgT3BlblNTTCBkZWZpbmVzIG9uZSBPQ1NQIGNhbGxiYWNrIGJ1dCB1c2VzIGl0IGluIHR3byBkaWZmZXJlbnQKICAgIHdheXMuIEZvciBzZXJ2ZXJzLCB0aGF0IGNhbGxiYWNrIGlzIGV4cGVjdGVkIHRvIHJldHJpZXZlIHNvbWUgT0NTUCBkYXRhIGFuZAogICAgaGFuZCBpdCB0byBPcGVuU1NMLCBhbmQgbWF5IHJldHVybiBvbmx5IFNTTF9UTFNFWFRfRVJSX09LLAogICAgU1NMX1RMU0VYVF9FUlJfRkFUQUwsIGFuZCBTU0xfVExTRVhUX0VSUl9OT0FDSy4gRm9yIGNsaWVudHMsIHRoYXQgY2FsbGJhY2sKICAgIGlzIGV4cGVjdGVkIHRvIGNoZWNrIHRoZSBPQ1NQIGRhdGEsIGFuZCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IsCiAgICAwIGlmIHRoZSByZXNwb25zZSBpcyBub3QgYWNjZXB0YWJsZSwgb3IgcG9zaXRpdmUgaWYgaXQgaXMuIFRoZXNlIGFyZQogICAgbXV0dWFsbHkgZXhjbHVzaXZlIHJldHVybiBjb2RlIGJlaGF2aW91cnMsIGFuZCB0aGV5IG1lYW4gdGhhdCB3ZSBuZWVkIHR3bwogICAgaGVscGVycyBzbyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBpZiB0aGUgdXNlcidzCiAgICBjb2RlIHRocm93cyBhbiBleGNlcHRpb24uCgogICAgR2l2ZW4gdGhhdCB3ZSBoYXZlIHRvIGhhdmUgdHdvIGhlbHBlcnMgYW55d2F5LCB0aGVzZSBoZWxwZXJzIGFyZSBhIGJpdCBtb3JlCiAgICBoZWxwZXJ5IHRoYW4gbW9zdDogc3BlY2lmaWNhbGx5LCB0aGV5IGhpZGUgYSBmZXcgbW9yZSBvZiB0aGUgT3BlblNTTAogICAgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIHVzZXIgaGFzIGFuIGVhc2llciB0aW1lIHdyaXRpbmcgdGhlc2UgY2FsbGJhY2tzLgoKICAgIFRoaXMgaGVscGVyIGltcGxlbWVudHMgdGhlIGNsaWVudCBzaWRlLgogICAgYwIAAAAAAAAAAwAAAAQAAAADAAAAczIAAAB0AGoBiAGDAQEAdAKIAIMBhwCHAWYCZAFkAoQIgwF9AnQDagRkA3wCgwKIAV8EZABTACkETmMCAAAAAAAAAAkAAAAQAAAAEwAAAHOqAAAAeXh0AGoBfAAZAH0CfAF0AmoDawNyInQCagR8AYMBfQNuBGQAfQN0AmoFZAGDAX0EdAZqB3wAfASDAn0FfAVkAmsAckpkA30Gbhh0AmoIfARkAhkAfAWDAmQAZACFAhkAfQaIAHwCfAZ8A4MDfQd0CXQKfAeDAYMBUwAEAHQLawpypAEAfQgBAHoQiAFqDGoNfAiDAQEAZAVTAGQAfQh+CFgAbgJYAGQAUwApBk56EHVuc2lnbmVkIGNoYXIgKipyAQAAAHKYAAAAcnUAAADp/////ykOcm4AAAByiwAAAHKWAAAAcrcAAAByuAAAAHKfAAAAcogAAABaH1NTTF9nZXRfdGxzZXh0X3N0YXR1c19vY3NwX3Jlc3ByqAAAANoDaW502gRib29scowAAABygQAAAHKNAAAAKQlykQAAAHK5AAAAcqQAAAByugAAAFoIb2NzcF9wdHJaCG9jc3BfbGVucrsAAABaBXZhbGlkcpMAAAApAnKUAAAAcoIAAABycwAAAHJ0AAAAcpUAAAA5AgAAcx4AAAAAAgIBCgMKAQwCBAMKAQwBCAIGAxgCDAMMAhABDAJ6M19PQ1NQQ2xpZW50Q2FsbGJhY2tIZWxwZXIuX19pbml0X18uPGxvY2Fscz4ud3JhcHBlcnoWaW50ICgqKShTU0wgKiwgdm9pZCAqKSkFcoAAAABygwAAAHIDAAAAcpYAAABylAAAACkDcoIAAABylAAAAHKVAAAAcnMAAAApAnKUAAAAcoIAAABydAAAAHKDAAAANgIAAHMGAAAAAAEKAhYfeiJfT0NTUENsaWVudENhbGxiYWNrSGVscGVyLl9faW5pdF9fTikFcnAAAABycQAAAHJyAAAAcn8AAABygwAAAHJzAAAAcnMAAABycwAAAHJ0AAAAcrwAAAAgAgAAcwQAAAAIFAQCcrwAAABjAQAAAAAAAAADAAAABAAAAEMAAABzZAAAAGQAfQF0AHwAdAGDAnModAJ8AGQBZACDA30CfAJkAGsJcih8AoMAfQB0AHwAdAGDAnI2fAB9AXQAfAF0AYMCc0p0A2QCgwGCAW4WfAFkA2sAcmB0BGQEfAFmARYAgwGCAXwBUwApBU7aBmZpbGVub3ozYXJndW1lbnQgbXVzdCBiZSBhbiBpbnQsIG9yIGhhdmUgYSBmaWxlbm8oKSBtZXRob2QucgEAAAB6MWZpbGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSBpbnRlZ2VyICglaSkpBXKyAAAAcgsAAADaB2dldGF0dHJytAAAANoKVmFsdWVFcnJvcikD2gNvYmraAmZk2gRtZXRocnMAAABycwAAAHJ0AAAA2hFfYXNGaWxlRGVzY3JpcHRvclsCAABzGgAAAAABBAEKAQwBCAEGAgoBBAIKAQoBCAECAQwCcsYAAABjAQAAAAAAAAABAAAAAwAAAEMAAABzEAAAAHQAagF0AmoDfACDAYMBUwApAXqTCiAgICBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgdmVyc2lvbiBvZiBPcGVuU1NMIGluIHVzZS4KCiAgICA6cGFyYW0gdHlwZTogT25lIG9mIHRoZSA6Y29uc3Q6YFNTTEVBWV9gIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgogICAgKQRylgAAANoGc3RyaW5ncogAAAByawAAACkB2gR0eXBlcnMAAABycwAAAHJ0AAAAcmsAAABuAgAAcwIAAAAABmMCAAAAAAAAAAMAAAADAAAAAwAAAHMSAAAAhwCHAWYCZAFkAoQIfQJ8AlMAKQNhlAEAAAogICAgQnVpbGRzIGEgZGVjb3JhdG9yIHRoYXQgZW5zdXJlcyB0aGF0IGZ1bmN0aW9ucyB0aGF0IHJlbHkgb24gT3BlblNTTAogICAgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoaXMgYnVpbGQgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwKICAgIHJhdGhlciB0aGFuIEF0dHJpYnV0ZUVycm9yIGNvbWluZyBvdXQgb2YgY3J5cHRvZ3JhcGh5LgoKICAgIDpwYXJhbSBmbGFnOiBBIGNyeXB0b2dyYXBoeSBmbGFnIHRoYXQgZ3VhcmRzIHRoZSBmdW5jdGlvbnMsIGUuZy4KICAgICAgICBgYENyeXB0b2dyYXBoeV9IQVNfTkVYVFBST1RPTkVHYGAuCiAgICA6cGFyYW0gZXJyb3I6IFRoZSBzdHJpbmcgdG8gYmUgdXNlZCBpbiB0aGUgZXhjZXB0aW9uIGlmIHRoZSBmbGFnIGlzIGZhbHNlLgogICAgYwEAAAAAAAAAAgAAAAQAAAATAAAAcyQAAACIAXMcdAB8AIMBhwBmAWQBZAKECIMBfQF8AVMAfABTAGQAUwApA05jAAAAAAAAAAACAAAAAgAAAB8AAABzDAAAAHQAiACDAYIBZABTACkBTikB2hNOb3RJbXBsZW1lbnRlZEVycm9yKQLaBGFyZ3PaBmt3YXJncykB2gVlcnJvcnJzAAAAcnQAAADaB2V4cGxvZGWDAgAAcwIAAAAAAno8X21ha2VfcmVxdWlyZXMuPGxvY2Fscz4uX3JlcXVpcmVzX2RlY29yYXRvci48bG9jYWxzPi5leHBsb2RlKQFyAwAAACkC2gRmdW5jcs0AAAApAnLMAAAA2gRmbGFncnMAAABydAAAANoTX3JlcXVpcmVzX2RlY29yYXRvcoECAABzCAAAAAABBAEUAwQCeitfbWFrZV9yZXF1aXJlcy48bG9jYWxzPi5fcmVxdWlyZXNfZGVjb3JhdG9ycnMAAAApA3LPAAAAcswAAABy0AAAAHJzAAAAKQJyzAAAAHLPAAAAcnQAAADaDl9tYWtlX3JlcXVpcmVzdwIAAHMEAAAAAAoOCXLRAAAAehFOUE4gbm90IGF2YWlsYWJsZXoSQUxQTiBub3QgYXZhaWxhYmxlehFTTkkgbm90IGF2YWlsYWJsZWMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkDcmwAAAB6yQogICAgQSBjbGFzcyByZXByZXNlbnRpbmcgYW4gU1NMIHNlc3Npb24uICBBIHNlc3Npb24gZGVmaW5lcyBjZXJ0YWluIGNvbm5lY3Rpb24KICAgIHBhcmFtZXRlcnMgd2hpY2ggbWF5IGJlIHJlLXVzZWQgdG8gc3BlZWQgdXAgdGhlIHNldHVwIG9mIHN1YnNlcXVlbnQKICAgIGNvbm5lY3Rpb25zLgoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTQKICAgIE4pBHJwAAAAcnEAAABycgAAAHJ/AAAAcnMAAABycwAAAHJzAAAAcnQAAABybAAAAJwCAABzBAAAAAgHBAFjAAAAAAAAAAAAAAAADAAAAEAAAABzzgEAAGUAWgFkAFoCZAFaA2UEZAJlBWQDZQZkBGUHZAVlCGQGZQlkB2kGWgplC2QIZAmEAGUKagyDAEQAgwGDAVoKZApkC4QAWg1kZWQNZA6EAVoOZA9kEIQAWg9kZmQRZBKEAVoQZBNkFIQAWhFkFWQWhABaEmQXZBiEAFoTZBlkGoQAWhRlFWYBZBtkHIQBWhZkHWQehABaF2QfZCCEAFoYZCFkIoQAWhllGmYBZCNkJIQBWhtkJWQmhABaHGQnZCiEAFodZClkKoQAWh5kK2QshABaH2QtZC6EAFogZC9kMIQAWiFkMWQyhABaImQzZDSEAFojZDVkNoQAWiRkN2Q4hABaJWQ5ZDqEAFomZDtkPIQAWidkPWQ+hABaKGQ/ZECEAFopZEFkQoQAWipkQ2REhABaK2RFZEaEAFosZEdkSIQAWi1kSWRKhABaLmRLZEyEAFovZE1kToQAWjBkT2RQhABaMWRRZFKEAFoyZTNkU2RUhACDAVo0ZFVkVoQAWjVlNmRXZFiEAIMBWjdlNmRZZFqEAIMBWjhlOWRbZFyEAIMBWjplOWRdZF6EAIMBWjtkX2RghABaPGRnZGFkYoQBWj1kaGRjZGSEAVo+ZAxTAClpcm0AAAB6zQogICAgOmNsYXNzOmBPcGVuU1NMLlNTTC5Db250ZXh0YCBpbnN0YW5jZXMgZGVmaW5lIHRoZSBwYXJhbWV0ZXJzIGZvciBzZXR0aW5nCiAgICB1cCBuZXcgU1NMIGNvbm5lY3Rpb25zLgoKICAgIDpwYXJhbSBtZXRob2Q6IE9uZSBvZiBTU0x2Ml9NRVRIT0QsIFNTTHYzX01FVEhPRCwgU1NMdjIzX01FVEhPRCwgb3IKICAgICAgICBUTFN2MV9NRVRIT0QuCiAgICBaDFNTTHYyX21ldGhvZFoMU1NMdjNfbWV0aG9kWg1TU0x2MjNfbWV0aG9kWgxUTFN2MV9tZXRob2RaDlRMU3YxXzFfbWV0aG9kWg5UTFN2MV8yX21ldGhvZGMBAAAAAAAAAAMAAAAFAAAAYwAAAHMwAAAAfABdKFwCfQF9AnQAdAF8AmQAgwNkAGsJcgJ8AXQAdAF8AoMCZgJWAAEAcQJkAFMAKQFOKQJywQAAAHKIAAAAKQNymgAAAFoKaWRlbnRpZmllctoEbmFtZXJzAAAAcnMAAABydAAAAHKcAAAAuAIAAHMEAAAABAEGAXoRQ29udGV4dC48Z2VuZXhwcj5jAgAAAAAAAAAGAAAAEwAAAEMAAABzJgEAAHQAfAF0AYMCcxJ0AmQBgwGCAXkOfABqA3wBGQB9AlcAbhwEAHQEawpyPAEAAQABAHQFZAKDAYIBWQBuAlgAfAKDAH0DdAZ8A3QHaghrA4MBAQB0CWoKfAODAX0EdAZ8BHQHaghrA4MBAQB0B2oLfAR0CWoMgwJ9BHkcdAlqDXwEZAODAn0FdAZ8BWQDawKDAQEAVwBuFAQAdA5rCnKoAQABAAEAWQBuAlgAfAR8AF8PZAB8AF8QZAB8AF8RZAB8AF8SZAB8AF8TZAB8AF8UZAB8AF8VZAB8AF8WZAB8AF8XZAB8AF8YZAB8AF8ZZAB8AF8aZAB8AF8bZAB8AF8cZAB8AF8dZAB8AF8eZAB8AF8fZAB8AF8gfABqIXQJaiKDAQEAZABTACkETnoZbWV0aG9kIG11c3QgYmUgYW4gaW50ZWdlcnoQTm8gc3VjaCBwcm90b2NvbHJ1AAAAKSNysgAAAHILAAAAcrQAAADaCF9tZXRob2Rz2ghLZXlFcnJvcnLCAAAA2g9fb3BlbnNzbF9hc3NlcnRylgAAAHK3AAAAcogAAABaC1NTTF9DVFhfbmV32gJnY1oMU1NMX0NUWF9mcmVlWhVTU0xfQ1RYX3NldF9lY2RoX2F1dG/aDkF0dHJpYnV0ZUVycm9y2ghfY29udGV4dNoSX3Bhc3NwaHJhc2VfaGVscGVy2hRfcGFzc3BocmFzZV9jYWxsYmFja9oUX3Bhc3NwaHJhc2VfdXNlcmRhdGHaDl92ZXJpZnlfaGVscGVy2hBfdmVyaWZ5X2NhbGxiYWNr2g5faW5mb19jYWxsYmFja9obX3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNr2glfYXBwX2RhdGHaFV9ucG5fYWR2ZXJ0aXNlX2hlbHBlctoXX25wbl9hZHZlcnRpc2VfY2FsbGJhY2vaEl9ucG5fc2VsZWN0X2hlbHBlctoUX25wbl9zZWxlY3RfY2FsbGJhY2vaE19hbHBuX3NlbGVjdF9oZWxwZXLaFV9hbHBuX3NlbGVjdF9jYWxsYmFja9oMX29jc3BfaGVscGVy2g5fb2NzcF9jYWxsYmFja9oKX29jc3BfZGF0YdoIc2V0X21vZGVaHVNTTF9NT0RFX0VOQUJMRV9QQVJUSUFMX1dSSVRFKQZyggAAANoGbWV0aG9kWgttZXRob2RfZnVuY1oKbWV0aG9kX29iatoHY29udGV4dNoDcmVzcnMAAABycwAAAHJ0AAAAcoMAAAC8AgAAc0YAAAAAAQoBCAICAQ4BDgEOAgYBDgIKAQ4BDgUCAQwBEAEOAQYCBgEGAQYBBgEGAQYBBgEGAQYBBgEGAQYBBgEGAQYBBgEGAQYCehBDb250ZXh0Ll9faW5pdF9fTmMDAAAAAAAAAAQAAAAEAAAAQwAAAHNOAAAAfAFkAWsIchB0AGoB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AgEAZANTACkEYdkCAAAKICAgICAgICBTcGVjaWZ5IHRoYXQgdGhlIHBsYXRmb3JtIHByb3ZpZGVkIENBIGNlcnRpZmljYXRlcyBhcmUgdG8gYmUgdXNlZCBmb3IKICAgICAgICB2ZXJpZmljYXRpb24gcHVycG9zZXMuIFRoaXMgbWV0aG9kIGhhcyBzb21lIGNhdmVhdHMgcmVsYXRlZCB0byB0aGUKICAgICAgICBiaW5hcnkgd2hlZWxzIHRoYXQgY3J5cHRvZ3JhcGh5IChweU9wZW5TU0wncyBwcmltYXJ5IGRlcGVuZGVuY3kpIHNoaXBzOgoKICAgICAgICAqICAgbWFjT1Mgd2lsbCBvbmx5IGxvYWQgY2VydGlmaWNhdGVzIHVzaW5nIHRoaXMgbWV0aG9kIGlmIHRoZSB1c2VyIGhhcwogICAgICAgICAgICB0aGUgYGBvcGVuc3NsQDEuMWBgIGBIb21lYnJldyA8aHR0cHM6Ly9icmV3LnNoPmBfIGZvcm11bGEgaW5zdGFsbGVkCiAgICAgICAgICAgIGluIHRoZSBkZWZhdWx0IGxvY2F0aW9uLgogICAgICAgICogICBXaW5kb3dzIHdpbGwgbm90IHdvcmsuCiAgICAgICAgKiAgIG1hbnlsaW51eDEgY3J5cHRvZ3JhcGh5IHdoZWVscyB3aWxsIHdvcmsgb24gbW9zdCBjb21tb24gTGludXgKICAgICAgICAgICAgZGlzdHJpYnV0aW9ucyBpbiBweU9wZW5TU0wgMTcuMS4wIGFuZCBhYm92ZS4gIHB5T3BlblNTTCBkZXRlY3RzIHRoZQogICAgICAgICAgICBtYW55bGludXgxIHdoZWVsIGFuZCBhdHRlbXB0cyB0byBsb2FkIHJvb3RzIHZpYSBhIGZhbGxiYWNrIHBhdGguCgogICAgICAgIDpyZXR1cm46IE5vbmUKICAgICAgICBydQAAANoFYXNjaWlOKRFyiAAAAFogU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNy2AAAAHLVAAAAcpYAAAByxwAAAFodWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2Rpcl9lbnbaBmRlY29kZVoeWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW522hNfY2hlY2tfZW52X3ZhcnNfc2V0WhlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyWhpYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZdofX0NSWVBUT0dSQVBIWV9NQU5ZTElOVVgxX0NBX0RJUtogX0NSWVBUT0dSQVBIWV9NQU5ZTElOVVgxX0NBX0ZJTEXaHl9mYWxsYmFja19kZWZhdWx0X3ZlcmlmeV9wYXRoc9obX0NFUlRJRklDQVRFX0ZJTEVfTE9DQVRJT05T2htfQ0VSVElGSUNBVEVfUEFUSF9MT0NBVElPTlMpBnKCAAAA2gpzZXRfcmVzdWx02gtkaXJfZW52X3ZhctoMZmlsZV9lbnZfdmFyWgtkZWZhdWx0X2RpcloMZGVmYXVsdF9maWxlcnMAAABycwAAAHJ0AAAA2hhzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMtAwAAcyAAAAAAFAwBDAYEAQoBBgEEAQoBBgEMAQ4BDgUIAQgDBAECAXogQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNjAwAAAAAAAAADAAAAAgAAAEMAAABzIAAAAHQAagFqAnwCgwFkAWsJcB50AGoBagJ8AYMBZAFrCVMAKQJ6cAogICAgICAgIENoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdCBjZXJ0IGRpci9maWxlIGVudmlyb25tZW50IHZhcnMgYXJlIHByZXNlbnQuCgogICAgICAgIDpyZXR1cm46IGJvb2wKICAgICAgICBOKQPaAm9z2gdlbnZpcm9u2gNnZXQpA3KCAAAAcgEBAAByAgEAAHJzAAAAcnMAAABydAAAAHL6AAAAXgMAAHMEAAAAAAcQAXobQ29udGV4dC5fY2hlY2tfZW52X3ZhcnNfc2V0YwMAAAAAAAAABQAAAAQAAABDAAAAc1IAAAB4JHwBRABdHH0DdABqAWoCfAODAXIGfABqA3wDgwEBAFAAcQZXAHgmfAJEAF0efQR0AGoBagR8BIMBcix8AGoDZAF8BIMCAQBQAHEsVwBkAVMAKQJhVwEAAAogICAgICAgIERlZmF1bHQgdmVyaWZ5IHBhdGhzIGFyZSBiYXNlZCBvbiB0aGUgY29tcGlsZWQgdmVyc2lvbiBvZiBPcGVuU1NMLgogICAgICAgIEhvd2V2ZXIsIHdoZW4gcHlj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ZWN0IHRvICptb2RlKiBhbmQgc3BlY2lmeQogICAgICAgIHRoYXQgKmNhbGxiYWNrKiBzaG91bGQgYmUgdXNlZCBmb3IgdmVyaWZpY2F0aW9uIGNhbGxiYWNrcy4KCiAgICAgICAgOnBhcmFtIG1vZGU6IFRoZSB2ZXJpZnkgbW9kZSwgdGhpcyBzaG91bGQgYmUgb25lIG9mCiAgICAgICAgICAgIDpjb25zdDpgVkVSSUZZX05PTkVgIGFuZCA6Y29uc3Q6YFZFUklGWV9QRUVSYC4gSWYKICAgICAgICAgICAgOmNvbnN0OmBWRVJJRllfUEVFUmAgaXMgdXNlZCwgKm1vZGUqIGNhbiBiZSBPUjplZCB3aXRoCiAgICAgICAgICAgIDpjb25zdDpgVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUYCBhbmQKICAgICAgICAgICAgOmNvbnN0OmBWRVJJRllfQ0xJRU5UX09OQ0VgIHRvIGZ1cnRoZXIgY29udHJvbCB0aGUgYmVoYXZpb3VyLgogICAgICAgIDpwYXJhbSBjYWxsYmFjazogVGhlIFB5dGhvbiBjYWxsYmFjayB0byB1c2UuICBUaGlzIHNob3VsZCB0YWtlIGZpdmUKICAgICAgICAgICAgYXJndW1lbnRzOiBBIENvbm5lY3Rpb24gb2JqZWN0LCBhbiBYNTA5IG9iamVjdCwgYW5kIHRocmVlIGludGVnZXIKICAgICAgICAgICAgdmFyaWFibGVzLCB3aGljaCBhcmUgaW4gdHVybiBwb3RlbnRpYWwgZXJyb3IgbnVtYmVyLCBlcnJvciBkZXB0aAogICAgICAgICAgICBhbmQgcmV0dXJuIGNvZGUuICpjYWxsYmFjayogc2hvdWxkIHJldHVybiBUcnVlIGlmIHZlcmlmaWNhdGlvbgogICAgICAgICAgICBwYXNzZXMgYW5kIEZhbHNlIG90aGVyd2lzZS4KICAgICAgICA6cmV0dXJuOiBOb25lCgogICAgICAgIFNlZSBTU0xfQ1RYX3NldF92ZXJpZnkoM1NTTCkgZm9yIGZ1cnRoZXIgZGV0YWlscy4KICAgICAgICB6F21vZGUgbXVzdCBiZSBhbiBpbnRlZ2VyehljYWxsYmFjayBtdXN0IGJlIGNhbGxhYmxlTikL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YSBjdXJ2ZSB0byB1c2UgZm9yIEVDREhFIGtleSBleGNoYW5nZS4KCiAgICAgICAgOnBhcmFtIGN1cnZlOiBBIGN1cnZlIG9iamVjdCB0byB1c2UgYXMgcmV0dXJuZWQgYnkgZWl0aGVyCiAgICAgICAgICAgIDptZXRoOmBPcGVuU1NMLmNyeXB0by5nZXRfZWxsaXB0aWNfY3VydmVgIG9yCiAgICAgICAgICAgIDptZXRoOmBPcGVuU1NMLmNyeXB0by5nZXRfZWxsaXB0aWNfY3VydmVzYC4KCiAgICAgICAgOnJldHVybjogTm9uZQogICAgICAgIE4pBHKIAAAAWhRTU0xfQ1RYX3NldF90bXBfZWNkaHLYAAAAWgpfdG9fRUNfS0VZKQJyggAAAFoFY3VydmVycwAAAHJzAAAAcnQAAADaDHNldF90bXBfZWNkaIYEAABzAgAAAAAKehRDb250ZXh0LnNldF90bXBfZWNkaGMCAAAAAAAAAAMAAAAFAAAAQwAAAHNWAAAAdABkAXwBgwJ9AXQBfAF0AoMCcxx0A2QCgwGCAXQEdAVqBnwAagd8AYMCZANrAoMBAQB0CHwAZASDAn0CdAR8AmoJgwBkBWQGZAdnA2sDgwEBAGQEUwApCHrzCiAgICAgICAgU2V0IHRoZSBsaXN0IG9mIGNpcGhlcnMgdG8gYmUgdXNlZCBpbiB0aGlzIGNvbnRleHQuCgogICAgICAgIFNlZSB0aGUgT3BlblNTTCBtYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24gKGUuZy4KICAgICAgICA6bWFucGFnZTpgY2lwaGVycygxKWApLgoKICAgICAgICA6cGFyYW0gYnl0ZXMgY2lwaGVyX2xpc3Q6IEFuIE9wZW5TU0wgY2lwaGVyIHN0cmluZy4KICAgICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAg2gtjaXBoZXJfbGlzdHoiY2lwaGVyX2xpc3QgbXVzdCBiZSBhIGJ5dGUgc3RyaW5nLnJ1AAAATloWVExTX0FFU18yNTZfR0NNX1NIQTM4NFocVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NloWVExTX0FFU18xMjhfR0NNX1NIQTI1NikKchoBAABysgAAANoFYnl0ZXNytAAAAHLVAAAAcogAAABa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ZyBtYXRlcmlhbC4KCiAgICAgICAgOnBhcmFtIGJ5dGVzIHByb2ZpbGVzOiBBIGNvbG9uIGRlbGltaXRlZCBsaXN0IG9mIHByb3RlY3Rpb24gcHJvZmlsZQogICAgICAgICAgICBuYW1lcywgbGlrZSBgYGInU1JUUF9BRVMxMjhfQ01fU0hBMV84MDpTUlRQX0FFUzEyOF9DTV9TSEExXzMyJ2BgLgogICAgICAgIDpyZXR1cm46IE5vbmUKICAgICAgICB6H3Byb2ZpbGVzIG11c3QgYmUgYSBieXRlIHN0cmluZy5yAQAAAE4pB3KyAAAAciwBAABytAAAAHLVAAAAcogAAABaG1NTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cHLYAAAAKQJyggAAAFoIcHJvZmlsZXNycwAAAHJzAAAAcnQAAADaE3NldF90bHNleHRfdXNlX3NydHBmBQAAcwgAAAAACAoBCAICAXobQ29udGV4dC5zZXRfdGxzZXh0X3VzZV9zcnRwYwIAAAAAAAAAAgAAAAQAAABDAAAAcywAAAB0AHwBgwF8AF8BfABqAWoCfABfA3QEagV8AGoGfABqA3QHagiDAwEAZAFTACkCYfIBAAAKICAgICAgICBTcGVjaWZ5IGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIG9mZmVyaW5nIGBOZXh0CiAgICAgICAgUHJvdG9jb2wgTmVnb3RpYXRpb24KICAgICAgICA8aHR0cHM6Ly90ZWNobm90ZXMuZ29vZ2xlY29kZS5jb20vZ2l0L25leHRwcm90b25lZy5odG1sPmBfIGFzIGEgc2VydmVyLgoKICAgICAgICA6cGFyYW0gY2FsbGJhY2s6IFRoZSBjYWxsYmFjayBmdW5jdGlvbi4gIEl0IHdpbGwgYmUgaW52b2tlZCB3aXRoIG9uZQogICAgICAgICAgICBhcmd1bWVudCwgdGhlIDpjbGFzczpgQ29ubmVjdGlvbmAgaW5zdGFuY2UuICBJdCBzaG91bGQgcmV0dXJuIGEKICAgICAgICAgICAgbGlzdCBvZiBieXRlc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGFkdmVydGlzZWQgcHJvdG9jb2xzLCBsaWtlCiAgICAgICAgICAg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cGFxdWUgZGF0YSB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIGNhbGxiYWNrCiAgICAgICAgICAgIGZ1bmN0aW9uIHdoZW4gY2FsbGVkLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIG5lZWRpbmcgdG8gZG8KICAgICAgICAgICAgY29tcGxleCBkYXRhIGxvb2t1cHMgb3IgdG8ga2VlcCB0cmFjayBvZiB3aGF0IGNvbnRleHQgaXMgYmVpbmcKICAgICAgICAgICAgdXNlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCiAgICAgICAgTikCcrYAAAByRgEAACkEcoIAAABylAAAAHK6AAAAckQBAABycwAAAHJzAAAAcnQAAADaGHNldF9vY3NwX3NlcnZlcl9jYWxsYmFja9QFAABzBAAAAAAPCAF6IENvbnRleHQuc2V0X29jc3Bfc2VydmVyX2NhbGxiYWNrYwMAAAAAAAAABAAAAAMAAABDAAAAcxgAAAB0AHwBgwF9A3wAagF8A3wCgwIBAGQBUwApAmGNAwAACiAgICAgICAgU2V0IGEgY2FsbGJhY2sgdG8gdmFsaWRhdGUgT0NTUCBkYXRhIHN0YXBsZWQgdG8gdGhlIFRMUyBoYW5kc2hha2Ugb24KICAgICAgICB0aGUgY2xpZW50IHNpZGUuCgogICAgICAgIDpwYXJhbSBjYWxsYmFjazogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiBJdCB3aWxsIGJlIGludm9rZWQgd2l0aCB0aHJlZQogICAgICAgICAgICBhcmd1bWVudHM6IHRoZSBDb25uZWN0aW9uLCBhIGJ5dGVzdHJpbmcgY29udGFpbmluZyB0aGUgc3RhcGxlZCBPQ1NQCiAgICAgICAgICAgIGFzc2VydGlvbiwgYW5kIHRoZSBvcHRpb25hbCBhcmJpdHJhcnkgZGF0YSB5b3UgaGF2ZSBwcm92aWRlZC4gVGhlCiAgICAgICAgICAgIGNhbGxiYWNrIG11c3QgcmV0dXJuIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGUgcmVzdWx0IG9mCiAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIE9DU1AgZGF0YTogYGBUcnVlYGAgaWYgdGhlIE9DU1AgZGF0YSBpcyB2YWxpZCBhbmQKICAgICAgICAgICAgdGhlIGNlcnRpZmljYXRlIGNhbiBiZSB0cnVzdGVkLCBvciBgYEZhbHNlYGAgaWYgZWl0aGVyIHRoZSBPQ1NQCiAgICAgICAgICAgIGRhdGEgaXMgaW52YWxpZCBvciB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZC4KICAgICAgICA6cGFyYW0gZGF0YTogU29tZSBvcGFxdWUgZGF0YSB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIGNhbGxiYWNrCiAgICAgICAgICAgIGZ1bmN0aW9uIHdoZW4gY2FsbGVkLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkIG5lZWRpbmcgdG8gZG8KICAgICAgICAgICAgY29tcGxleCBkYXRhIGxvb2t1cHMgb3IgdG8ga2VlcCB0cmFjayBvZiB3aGF0IGNvbnRleHQgaXMgYmVpbmcKICAgICAgICAgICAgdXNlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCiAgICAgICAgTikCcrwAAAByRgEAACkEcoIAAABylAAAAHK6AAAAckQBAABycwAAAHJzAAAAcnQAAADaGHNldF9vY3NwX2NsaWVudF9jYWxsYmFja+YFAABzBAAAAAARCAF6IENvbnRleHQuc2V0X29jc3BfY2xpZW50X2NhbGxiYWNrKQFOKQFOKQFOKQFOKT9ycAAAAHJxAAAAcnIAAAByfwAAAHIlAAAAciYAAAByJwAAAHIoAAAAcikAAAByKgAAAHLTAAAA2gRkaWN02gVpdGVtc3KDAAAAcvEAAABy9QAAAHL3AAAAcgMBAABy+gAAAHL9AAAAcgsBAAByFwAAAHIOAQAAchABAAByFAEAAHIVAQAAchYBAAByFwEAAHIYAQAAchkBAAByHAEAAHIeAQAAciABAAByIQEAAHIiAQAAciQBAAByJQEAAHImAQAAcikBAAByKgEAAHIuAQAAcjIBAAByMwEAAHI0AQAAcjUBAAByNwEAAHI4AQAAcjkBAAByOwEAAHI8AQAAcuoAAADaDV9yZXF1aXJlc19zbmlyPQEAAHI+AQAA2g1fcmVxdWlyZXNfbnBucj8BAAByQAEAANoOX3JlcXVpcmVzX2FscG5yQgEAAHJDAQAAckYBAAByRwEAAHJIAQAAcnMAAABycwAAAHJzAAAAcnQAAABybQAAAKcCAABzbgAAAAgHBAIEAQQBBAEEAQQBCAICAQYBDgMILgogCAcKHAgxCAsIFAgRDBYIDggRCAYMFwgOCAoIDwgUCBEICggdCA0ICQgJCBQIDAggCCUIFAgOCAkIEwgICAkIEQgNCA0MFQgPDBMMEgwWDBAIFAoSejRDb250ZXh0VHlwZSBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgQ29udGV4dCBpbnN0ZWFkYwAAAAAAAAAAAAAAAAMAAABAAAAAcw4CAABlAFoBZABaAmQBWgNlBIMAWgVkeGQDZASEAVoGZAVkBoQAWgdkB2QIhABaCGQJZAqEAFoJZAtkDIQAWgplC2QNZA6EAIMBWgxlC2QPZBCEAIMBWg1kEWQShABaDmR5ZBRkFYQBWg9lD1oQZHpkFmQXhAFaEWR7ZBhkGYQBWhJlEloTZHxkGmQbhAFaFGQcZB2EAFoVZB5kH4QAWhZkIGQhhABaF2QiZCOEAFoYZCRkJYQAWhlkJmQnhABaGmQoZCmEAFobZCpkK4QAWhxkLGQthABaHWQuZC+EAFoeZDBkMYQAWh9kMmQzhABaIGQ0ZDWEAFohZDZkN4QAWiJkOGQ5hABaI2Q6ZDuEAFokZDxkPYQAWiVkPmQ/hABaJmRAZEGEAFonZEJkQ4QAWihkRGRFhABaKWRGZEeEAFoqZEhkSYQAWitkfWRKZEuEAVosZExkTYQAWi1kTmRPhABaLmRQZFGEAFovZFJkU4QAWjBkVGRVhABaMWRWZFeEAFoyZFhkWYQAWjNkWmRbhABaNGRcZF2EAFo1ZF5kX4QAWjZkYGRhhABaN2RiZGOEAFo4ZGRkZYQAWjlkZmRnhABaOmRoZGmEAFo7ZGpka4QAWjxkbGRthABaPWRuZG+EAFo+ZT9kcGRxhACDAVpAZUFkcmRzhACDAVpCZUFkdGR1hACDAVpDZHZkd4QAWkRkAlMAKX5ybgAAAHoFCiAgICBOYwMAAAAAAAAABQAAAAQAAABDAAAAcwIBAAB0AHwBdAGDAnMSdAJkAYMBggF0A2oEfAFqBYMBfQN0BmoHfAN0A2oIgwJ8AF8JdANqCnwAagl0A2oLgwIBAHwBfABfBWQCfABfDGQCfABfDWQC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AAAAWh1TU0xfT1BfTkVUU0NBUEVfQ0hBTExFTkdFX0JVR3I1AAAAWidTU0xfT1BfTkVUU0NBUEVfUkVVU0VfQ0lQSEVSX0NIQU5HRV9CVUdyNgAAAFoiU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVR3I3AAAAWiFTU0xfT1BfTUlDUk9TT0ZUX0JJR19TU0xWM19CVUZGRVJyOAAAAFodU1NMX09QX01TSUVfU1NMVjJfUlNBX1BBRERJTkdyOQAAAFofU1NMX09QX1NTTEVBWV8wODBfQ0xJRU5UX0RIX0JVR3I6AAAAWhFTU0xfT1BfVExTX0Q1X0JVR3I7AAAAWhxTU0xfT1BfVExTX0JMT0NLX1BBRERJTkdfQlVHcjwAAABaIlNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFNyPQAAAFofU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRXI+AAAAWhdTU0xfT1BfVExTX1JPTExCQUNLX0JVR3I/AAAAWhRTU0xfT1BfUEtDUzFfQ0hFQ0tfMXJAAAAAWhRTU0xfT1BfUEtDUzFfQ0hFQ0tfMnJBAAAAWhlTU0xfT1BfTkVUU0NBUEVfQ0FfRE5fQlVHckIAAABaJlNTTF9PUF9ORVRTQ0FQRV9ERU1PX0NJUEhFUl9DSEFOR0VfQlVHckMAAABaFVNTTF9PUF9OT19DT01QUkVTU0lPTnJEAAAAWhNTU0xfT1BfTk9fUVVFUllfTVRVckUAAABaFlNTTF9PUF9DT09LSUVfRVhDSEFOR0VyRgAAAFoQU1NMX09QX05PX1RJQ0tFVHJHAAAAWgpTU0xfT1BfQUxMckgAAABaD1NTTF9WRVJJRllfUEVFUnJJAAAAWh9TU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUckoAAABaFlNTTF9WRVJJRllfQ0xJRU5UX09OQ0VySwAAAFoPU1NMX1ZFUklGWV9OT05FckwAAABaElNTTF9TRVNTX0NBQ0hFX09GRnJNAAAAWhVTU0xfU0VTU19DQUNIRV9DTElFTlRyTgAAAFoVU1NMX1NFU1NfQ0FDSEVfU0VSVkVSck8AAABaE1NTTF9TRVNTX0NBQ0hFX0JPVEhyUAAAAFocU1NMX1NFU1NfQ0FDSEVfTk9fQVVUT19DTEVBUnJRAAAAWiFTU0xfU0VTU19DQUNIRV9OT19JTlRFUk5BTF9MT09LVVByUgAAAFogU1NMX1NFU1NfQ0FDSEVfTk9fSU5URVJOQUxfU1RPUkVyUwAAAFoaU1NMX1NFU1NfQ0FDSEVfTk9fSU5URVJOQUxyVAAAAHJVAAAAclYAAAByVwAAAFoXQ3J5cHRvZ3JhcGh5X0hBU19TU0xfU1RyewAAAHJ8AAAAcn0AAAByfgAAANoGZXh0ZW5kclgAAAByWQAAAHJaAAAAclsAAAByXAAAAHJdAAAAcl4AAAByXwAAAHJgAAAAcmEAAAByYgAAAHJjAAAAcmQAAABy/gAAAHL/AAAAcvsAAABy/AAAAHKMAAAAcmUAAAByhAAAAHLVAAAAcmYAAAByZwAAAHJoAAAAcmkAAAByagAAAHKAAAAAcocAAABylwAAAHKnAAAAcrEAAABytgAAAHK8AAAAcsYAAAByawAAAHLRAAAAWh1DcnlwdG9ncmFwaHlfSEFTX05FWFRQUk9UT05FR3JMAQAAWhVDcnlwdG9ncmFwaHlfSEFTX0FMUE5yTQEAAFogQ3J5cHRvZ3JhcGh5X0hBU19UTFNFWFRfSE9TVE5BTUVySwEAAHJsAAAAcm0AAABycAAAANoSRGVwcmVjYXRpb25XYXJuaW5nWgtDb250ZXh0VHlwZXJuAAAAWg5Db25uZWN0aW9uVHlwZVoQU1NMX2xpYnJhcnlfaW5pdHJzAAAAcnMAAABycwAAAHJ0AAAA2gg8bW9kdWxlPgEAAABz1AEAAAgBCAEMARABEAEMAQwCDAIYBCwMIAQCAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgEGAwIBCAEQARYDBgEGAQYBBgEGAQYCBgEGAgQBBAEEAQQBBAEEAgYBBgEGAQYBBgIGAgYBBgEGAQYBBgIGAgYBBgEGAQYBBgEGAQYBBgEGAQYBBgEGAgYCBgIGAQYBBgIGAgYBBgEGAQYCBgEGAQYBBgEGAQYBBgEGAgYBBgEGAQgBBgEGAQYBBgEEAQIBAgECAQgDBgEGAQYBBgEGAQYBBgEGAQYBBgEGAQYBBgQCAQIBAgECAQYEBgUEAQQDEAYKAQgDEAQQBBAEEAQQBBAcECcQKRAxEDMQQxA7CBMICQgWAgEKBAIBCgQCAQoEEAsQfwB/AH8AfwB/AH8AWgIBBAEIBBB/AH8AfwB/AH8AfwB/AEkCAQQBAgEGBQ==
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
crypto.cpython-36.opt-1.pyc
87.87 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crypto.cpython-36.pyc
87.93 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.opt-1.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.opt-1.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.opt-1.pyc
75.75 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.pyc
75.82 KB
lrw-r--r--
2021-04-09 04:52:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.opt-1.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.opt-1.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.opt-1.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
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).