REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 79.69 KB
Close
//opt/alt/python37/lib64/python3.7/test/support/__pycache__/__init__.cpython-37.pyc
Text
Base64
Qg0NCgAAAACHCCBmmpUBAOMAAAAAAAAAAAAAAABdAAAAQAAAAHNGDQAAZABaAGUBZAFrA3IUZQJkAoMBggFkA2QEbANaBGQDZARsBVoFZANkBGwGWgZkA2QEbAdaB2QDZARsCFoIZANkBGwJWglkA2QEbApaCmQDZARsC1oLZANkBGwMWgxkA2QEbA1aDGQDZARsDloOZANkBGwPWhBkA2QEbBFaEWQDZARsEloSZANkBGwTWhNkA2QEbBRaFGQDZARsFVoVZANkBGwWWhZkA2QEbBdaF2QDZARsGFoYZANkBGwZWhlkA2QEbBpaGmQDZARsG1obZANkBGwcWhxkA2QEbB1aHWQDZARsHloeZANkBGwfWh9kA2QEbCBaIGQDZARsIVohZANkBGwiWiNkA2QEbCRaJGQFZAZsJW0mWiYBAHkMZANkBGwnWihXAG4aBABlAmsKkAFyPgEAAQABAGQEWihZAG4CWAB5DGQDZARsKVopVwBuGgQAZQJrCpABcmYBAAEAAQBkBFopWQBuAlgAeQxkA2QEbCpaKlcAbhoEAGUCawqQAXKOAQABAAEAZARaKlkAbgJYAHkMZANkBGwrWitXAG4aBABlAmsKkAFytgEAAQABAGQEWitZAG4CWAB5DGQDZARsLFosVwBuGgQAZQJrCpABct4BAAEAAQBkBFosWQBuAlgAeQxkA2QEbC1aLVcAbhoEAGUCawqQAnIGAQABAAEAZARaLVkAbgJYAGQHZAhkCWQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWQuZC9kMGQxZDJkM2Q0ZDVkNmQ3ZDhkOWQ6ZDtkPGQ9ZD5kP2RAZEFkQmRDZERkRWRGZEdkSGRJZEpkS2RMZE1kTmRPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxkXWReZF9kYGRhZGJkY2ddWi5HAGRkZAyEAGQMZS+DA1owRwBkZWQNhABkDWUwgwNaMUcAZGZkDoQAZA5lMIMDWjJHAGRnZA+EAGQPZSFqM4MDWjRlBWo1kAFkZmRpZGqEAYMBWjaQAWRnZGxkbZwBZG5kEIQDWjdkb2RwhABaOGRxZHKEAFo5ZHNkPIQAWjpkdGQ9hABaO5ABZGhkdWQRhAFaPGR2ZDiEAFo9ZAVaPmQEWj9kA2FAZANhQWQEWkJka1pDZARhRGR3ZBWEAFpFZHhkFoQAWkZkeWQThABaR2R6ZHuEAFpIZRpqE6BJZHyhAZADctiQAWRpZH1kfoQBWkpkf2SAhABaS2SBZIKEAFpMZINkhIQAWk1khWSGhABaTm4cZRJqT1pLZRJqUFpMZIdkhIQAWk1kiGSGhABaTmSJZByEAFpPZIpki4QAWlBkjGQdhABaUWSNZI6EAFpSZI9kFIQAWlNkkGSRhABaVGSSZCOEAFpVkAFkamSTZCSEAVpWZJRklYQAWldklmQlhABaWGSXZCaEAFpZZJhkJ4QAWlpkmVpbZJpaXGSbWl1lFmpeZRZqX2YCZJxkSIQBWmBlW2YBZJ1kSYQBWmFknmRLhABaYmSfZKCEAFpjZWODAFpkZKFkooQAWmVko1pmZKRaZ2UhoGhlaaBqZKWhAaBJZKahAWSnoQJaa2UhoGhlKWSooQJabGUhoGhlKmSpoQJabWUhoGhlK2SqoQJabmUhoGhlLGSroQJab2UaahOgSWSsoQFacGVxZRpkrYMCWnJlGmoTZK5rA5AFciJlcpAFchxkr24CZLBac24EZARac2USanRkrGsCkAVyOGSxWnVuBGSyWnVks6B2ZXVlEqB3oQChAlp1ZLRaeGQEWnl4SmS1RABdQlp6eR5lEqB7ZRKgfGV6oQGhAWV6awOQBXJ6ZX2CAVcAbhYEAGV9awqQBXKSAQABAAEAWQBuCFgAZXpaeVAAkAVxWlcAZXVkthcAWn5lGmoTZLdrApAFcshkA2QEbH9af2V/oIBkuGV+oQJafmUaoIGhAFqCZARag2USanRkuWsCkAZyNGUaoIShAGoTZLprBZAGcnZldWS7FwBag3kOZYOghWWCoQEBAFcAbhYEAGWGawqQBnIcAQABAAEAWQBuFlgAZYdkvGWDZYJmAhYAgwEBAGQEWoNuQmUaahNkt2sDkAZydnkOZL2giGWCoQEBAFcAbiYEAGWJawqQBnJ0AQABAAEAZXVkvqCIZYJkv6ECFwBag1kAbgJYAGQEWop4RGTARABdPFp0eQ5ldKCIZYKhAQEAVwBuJgQAZYlrCpAGcrgBAAEAAQBlEqB8ZXWhAWV0FwBailAAWQBuAlgAkAZxgFcAZXmQBnLUZXVkwRcAZXkXAFqLbgRkBFqLZRKgjKEAWo1ka1qOZQVqNZABZGtkwmTDhAGDAVqPZQVqNZABZGxkxGTFhAGDAVqQZQVqNZABZG1kx2QehAGDAVqRZXFlEmTIgwKQB3I0ZQVqNWTJZEyEAIMBWpJlEmqToJRlEmqToJVllqEBoQFal2USapOglGWXoQFamGUSapOgmWWYZMqhAlqakAFkbmTLZB+EAVqbZMxkIIQAWpxkzWRchABanWTOZM+EAFqeZARkBGTQnAJk0WQohAJan2TSZEqEAFqgRwBk02TUhABk1GWhgwNaopABZG9k1WTWhAFao2UFajVk12RThACDAVqkZQVqNWTYZFSEAIMBWqVHAGTZZBKEAGQSZaGDA1qmRwBk2mRVhABkVWUEaqdqqIMDWqlHAGTbZNyEAGTcZaGDA1qqRwBk3WQphABkKWWhgwNaq2WrZaxlB2qtZN6NAlquZatlrGUHaq9k3o0CWrBlq2WsZQdqr2TejQJasWTfZOCEAFqyZQVqNWThZGxk4pwCZONkLYQCgwFas2UFajVk5GTlhACDAVq0ZOZkF4QAWrVk52QZhABatmToZBiEAFq3ZOlk6oQAWrhlBWo1ZOtk7IQAgwFauWTtZO6EAFq6ZO9au2TwWrxlcWUaZPGDApAIcsZk8mW7FwBau2TzWrxlu2T0FwBavWT1ZPaEAFq+ZPdk+IQAWr9k+VrAZPpawWT7ZPyEAFrCZP1kVoQAWsNk/mRdhABaxGT/WsWQAWQAZcUUAFrGZLplxhQAWseQAWQBZcYUAFrIZRpqyVrKkAFkAmRahABay0cAkAFkA5ABZASEAJABZASDAlrMkAFkcJABZAVkNYQBWs2QAWQGZDaEAFrORwCQAWQHZC6EAGQugwJaz5ABZAiQAWQJhABa0JABZAqQAWQLhABa0ZABZAxkN4QAWtKQAWRxkAFkDZABZA6EAVrTkAFkD5ABZBCEAFrUkAFkEWRDhABa1ZABZBKQAWQThABa1pABZBSQAWQVhABa15ABZBaQAWQXhABa2JABZBiQAWQZhABa2WQEYdpkBGHbZARh3JABZBqQAWQbhABa3ZABZByQAWQdhABa3pABZHKQAWQekAFkH4QBWt+QAWQgkAFkIYQAWuCQAWQiZC+EAFrhkAFkI5ABZCSEAFriZdWDAJAKb1hlGmoTZK5rA5AKb1hlG6DjkAFkJaEBDABa5GXiagBkBGsJkApvamXkDABa5WUhoGhl5ZABZCahAlrmkAFkc5ABZCdkMIQBWueQAWQokAFkKYQAWuiQAWQqkAFkK4QAWulka2HqkAFkLGRPhABa65ABZC1kUIQAWuyQAWQuZFGEAFrtZQVqNZABZHSQAWQwkAFkMYQBgwFa7pABZHWQAWQykAFkM4QBWu+QAWQ0ZE2EAFrwZQVqNZABZHaQAWQ1ZFKEAYMBWvFlBWo1kAFkNmRYhACDAVryZQVqNZABZDdkV4QAgwFa85ABZDiQAWQ5hABa9GUhoPVlcWUakAFkOoMCkAFkO6ECWvaQAWQ8kAFkPYQAWveQAWQ+kAFkP4QAWvhHAJABZEBkToQAZE5lEGr5avqDA1r7RwCQAWRBZFmEAGRZZaGDA1r8ZARh/ZABZEJkIYQAWv6QAWRDZDGEAFr/ZASQAWEAkAFkRJABZEWEAJABWgGQAWRGZDqEAJABWgJkBJABYQOQAWRHZECEAJABWgSQAWRIZCKEAJABWgVkbJABZEmcAZABZEpkPoQCkAFaBpABZHeQAWRLZD+EAZABWgdHAJABZExkW4QAZFuDApABWgiQAWRNkAFkToQAkAFaCZABZE+QAWRQhACQAVoKkAFkeJABZFGQAWRShAGQAVoLZwBmAZABZFNkX4QBkAFaDGQEkAFhDZABZFRkRYQAkAFaDmUFajWQAWRVkAFkVoQAgwGQAVoPkAFkV2RghACQAVoQRwCQAWRYkAFkWYQAkAFkWYMCkAFaEZABZFqQAWRbhACQAVoSRwCQAWRckAFkXYQAkAFkXYMCkAFaE0cAkAFkXpABZF+EAJABZF+DApABWhSQAWUUgwCQAVoVZQqQAWoWRwCQAWRgkAFkYYQAkAFkYYMCgwGQAVoXkAFlF4MAkAFaGGUKkAFqFkcAkAFkYpABZGOEAJABZGODAoMBkAFaGZABZRmDAJABWhplBWo1kAFkZJABZGWEAIMBkAFaG2QEUwAoeQEAAHo3U3VwcG9ydGluZyBkZWZpbml0aW9ucyBmb3IgdGhlIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLnoMdGVzdC5zdXBwb3J0ei5zdXBwb3J0IG11c3QgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgdGVzdCBwYWNrYWdl6QAAAABO6QEAAAApAdoPZ2V0X3Rlc3RfcnVubmVy2g1QSVBFX01BWF9TSVpF2gd2ZXJib3Nl2gptYXhfbWVtdXNl2g11c2VfcmVzb3VyY2Vz2ghmYWlsZmFzdNoFRXJyb3LaClRlc3RGYWlsZWTaDVRlc3REaWROb3RSdW7aDlJlc291cmNlRGVuaWVk2g1pbXBvcnRfbW9kdWxl2hNpbXBvcnRfZnJlc2hfbW9kdWxl2gtDbGVhbkltcG9ydNoGdW5sb2Fk2gZmb3JnZXTaFnJlY29yZF9vcmlnaW5hbF9zdGRvdXTaE2dldF9vcmlnaW5hbF9zdGRvdXTaD2NhcHR1cmVkX3N0ZG91dNoOY2FwdHVyZWRfc3RkaW7aD2NhcHR1cmVkX3N0ZGVyctoGVEVTVEZO2ghTQVZFRENXRNoGdW5saW5r2gZybXRyZWXaCHRlbXBfY3dk2ghmaW5kZmlsZdoRY3JlYXRlX2VtcHR5X2ZpbGXaC2Nhbl9zeW1saW5r2hZmc19pc19jYXNlX2luc2Vuc2l0aXZl2hNpc19yZXNvdXJjZV9lbmFibGVk2ghyZXF1aXJlc9oYcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9u2hZyZXF1aXJlc19saW51eF92ZXJzaW9u2hByZXF1aXJlc19tYWNfdmVy2hJjaGVja19zeW50YXhfZXJyb3LaEVRyYW5zaWVudFJlc291cmNl2gh0aW1lX291dNoRc29ja2V0X3BlZXJfcmVzZXTaEmlvZXJyb3JfcGVlcl9yZXNldNoSdHJhbnNpZW50X2ludGVybmV02g9CYXNpY1Rlc3RSdW5uZXLaDHJ1bl91bml0dGVzdNoLcnVuX2RvY3Rlc3TaE3NraXBfdW5sZXNzX3N5bWxpbmvaDXJlcXVpcmVzX2d6aXDaDHJlcXVpcmVzX2J6MtoNcmVxdWlyZXNfbHptYdoKYmlnbWVtdGVzdNoQYmlnYWRkcnNwYWNldGVzdNoMY3B5dGhvbl9vbmx52g1nZXRfYXR0cmlidXRl2hFyZXF1aXJlc19JRUVFXzc1NNoRc2tpcF91bmxlc3NfeGF0dHLaDXJlcXVpcmVzX3psaWLaEmFudGljaXBhdGVfZmFpbHVyZdoSbG9hZF9wYWNrYWdlX3Rlc3Rz2hNkZXRlY3RfYXBpX21pc21hdGNo2gxjaGVja19fYWxsX1/aHHNraXBfdW5sZXNzX2JpbmRfdW5peF9zb2NrZXTaCWlzX2p5dGhvbtoKaXNfYW5kcm9pZNoRY2hlY2tfaW1wbF9kZXRhaWzaCnVuaXhfc2hlbGzaEXNldHN3aXRjaGludGVydmFs2gRIT1NU2gxJUFY2X0VOQUJMRUTaEGZpbmRfdW51c2VkX3BvcnTaCWJpbmRfcG9ydNoQb3Blbl91cmxyZXNvdXJjZdoQYmluZF91bml4X3NvY2tldNoKdGVtcF91bWFza9oNcmVhcF9jaGlsZHJlbtoLVGVzdEhhbmRsZXLaD3RocmVhZGluZ19zZXR1cNoRdGhyZWFkaW5nX2NsZWFudXDaDHJlYXBfdGhyZWFkc9oNc3RhcnRfdGhyZWFkc9oOY2hlY2tfd2FybmluZ3PaGWNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmfaE0Vudmlyb25tZW50VmFyR3VhcmTaD3J1bl93aXRoX2xvY2FsZdoJc3dhcF9pdGVt2glzd2FwX2F0dHLaB01hdGNoZXLaDHNldF9tZW1saW1pdNoTU3VwcHJlc3NDcmFzaFJlcG9ydNoIc29ydGRpY3TaC3J1bl93aXRoX3R62gNQR0/aG21pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZdoIZmRfY291bnTaCUFMV0FZU19FUdoHTEFSR0VTVNoIU01BTExFU1RjAAAAAAAAAAAAAAAAAQAAAEAAAABzEAAAAGUAWgFkAFoCZAFaA2QCUwApA3IJAAAAeipCYXNlIGNsYXNzIGZvciByZWdyZXNzaW9uIHRlc3QgZXhjZXB0aW9ucy5OKQTaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aB19fZG9jX1+pAHJlAAAAcmUAAAD6Oi9vcHQvYWx0L3B5dGhvbjM3L2xpYjY0L3B5dGhvbjMuNy90ZXN0L3N1cHBvcnQvX19pbml0X18ucHlyCQAAAHMAAABzAgAAAAgBYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyCgAAAHoMVGVzdCBmYWlsZWQuTikEcmEAAAByYgAAAHJjAAAAcmQAAAByZQAAAHJlAAAAcmUAAAByZgAAAHIKAAAAdgAAAHMCAAAACAFjAAAAAAAAAAAAAAAAAQAAAEAAAABzEAAAAGUAWgFkAFoC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cmVtb3ZpbmcgdGhlIG5hbWVkIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIGJlZm9yZSBkb2luZyB0aGUgaW1wb3J0LgogICAgTm90ZSB0aGF0IHVubGlrZSByZWxvYWQsIHRoZSBvcmlnaW5hbCBtb2R1bGUgaXMgbm90IGFmZmVjdGVkIGJ5CiAgICB0aGlzIG9wZXJhdGlvbi4KCiAgICAqZnJlc2gqIGlzIGFuIGl0ZXJhYmxlIG9mIGFkZGl0aW9uYWwgbW9kdWxlIG5hbWVzIHRoYXQgYXJlIGFsc28gcmVtb3ZlZAogICAgZnJvbSB0aGUgc3lzLm1vZHVsZXMgY2FjaGUgYmVmb3JlIGRvaW5nIHRoZSBpbXBvcnQuCgogICAgKmJsb2NrZWQqIGlzIGFuIGl0ZXJhYmxlIG9mIG1vZHVsZSBuYW1lcyB0aGF0IGFyZSByZXBsYWNlZCB3aXRoIE5vbmUKICAgIGluIHRoZSBtb2R1bGUgY2FjaGUgZHVyaW5nIHRoZSBpbXBvcnQgdG8gZW5zdXJlIHRoYXQgYXR0ZW1wdHMgdG8gaW1wb3J0CiAgICB0aGVtIHJhaXNlIEltcG9ydEVycm9yLgoKICAgIFRoZSBuYW1lZCBtb2R1bGUgYW5kIGFueSBtb2R1bGVzIG5hbWVkIGluIHRoZSAqZnJlc2gqIGFuZCAqYmxvY2tlZCoKICAgIHBhcmFtZXRlcnMgYXJlIHNhdmVkIGJlZm9yZSBzdGFydGluZyB0aGUgaW1wb3J0IGFuZCB0aGVuIHJlaW5zZXJ0ZWQgaW50bwogICAgc3lzLm1vZHVsZXMgd2hlbiB0aGUgZnJlc2ggaW1wb3J0IGlzIGNvbXBsZXRlLgoKICAgIE1vZHVsZSBhbmQgcGFja2FnZSBkZXByZWNhdGlvbiBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBkdXJpbmcgdGhpcyBpbXBvcnQKICAgIGlmICpkZXByZWNhdGVkKiBpcyBUcnVlLgoKICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSBJbXBvcnRFcnJvciBpZiB0aGUgbmFtZWQgbW9kdWxlIGNhbm5vdCBiZQogICAgaW1wb3J0ZWQuCiAgICBOKQpybAAAAHKAAAAAcoIAAADaBmFwcGVuZHJuAAAAcg0A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AABzLgAAAGUAWgFkAFoCZAGUAGoDagRmAmQClABqA2oEZgJkA5QAagNqBWYCZwNaBmQEUwApBXoqX2lzX2d1aV9hdmFpbGFibGUuPGxvY2Fscz4uVVNFUk9CSkVDVEZMQUdTWghmSW5oZXJpdFoJZlJlc2VydmVk2gdkd0ZsYWdzTikHcmEAAAByYgAAAHJjAAAA2gh3aW50eXBlc1oEQk9PTNoFRFdPUkTaCF9maWVsZHNfcmUAAAApAXK9AAAAcmUAAAByZgAAANoPVVNFUk9CSkVDVEZMQUdT3AEAAHMGAAAACAEKAQoBctYAAAB6LGd1aSBub3QgYXZhaWxhYmxlIChXU0ZfVklTSUJMRSBmbGFnIG5vdCBzZXQp2gZkYXJ3aW4pBNoEY2RsbNoFY19pbnTaB3BvaW50ZXLaCVN0cnVjdHVyZSkB2gxmaW5kX2xpYnJhcnlaE0FwcGxpY2F0aW9uU2VydmljZXN6MGd1aSB0ZXN0cyBjYW5ub3QgcnVuIHdpdGhvdXQgT1MgWCB3aW5kb3cgbWFuYWdlcmMAAAAAAAAAAAAAAAADAAAAAAAAAHMcAAAAZQBaAWQAWgJkAZQAZgJkApQAZgJnAloDZANTACkEei5faXNfZ3VpX2F2YWlsYWJsZS48bG9jYWxzPi5Qcm9jZXNzU2VyaWFsTnVtYmVyWg1oaWdoTG9uZ09mUFNOWgxsb3dMb25nT2ZQU05OKQRyYQAAAHJiAAAAcmMAAABy1QAAAHJlAAAAKQFy2QAAAHJlAAAAcmYAAADaE1Byb2Nlc3NTZXJpYWxOdW1iZXL+AQAAcwQAAAAIAQYBct0AAAB6I2Nhbm5vdCBydW4gd2l0aG91dCBPUyBYIGd1aSBwcm9jZXNzKQHaAlRr6TIAAAB6BiBbLi4uXXocVGsgdW5hdmFpbGFibGUgZHVlIHRvIHt9OiB7fSkp2gdoYXNhdHRy2hFfaXNfZ3VpX2F2YWlsYWJsZXLRAAAAcnAAAABycQAAAHJyAAAAcr0AAABaD2N0eXBlcy53aW50eXBlc3LbAAAAcr8AAABaBnVzZXIzMloXR2V0UHJvY2Vzc1dpbmRvd1N0YXRpb25aCFdpbkVycm9yctMAAABy1AAAAFoZR2V0VXNlck9iamVjdEluZm9ybWF0aW9uV1oFYnlyZWZaBnNpemVvZtoEYm9v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cmVzcyAoZGVmYXVsdHMgdG8gMC4wLjAuMCkgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwKICAgIGVsaWNpdGluZyBhbiB1bnVzZWQgZXBoZW1lcmFsIHBvcnQgZnJvbSB0aGUgT1MuICBUaGUgdGVtcG9yYXJ5IHNvY2tldCBpcwogICAgdGhlbiBjbG9zZWQgYW5kIGRlbGV0ZWQsIGFuZCB0aGUgZXBoZW1lcmFsIHBvcnQgaXMgcmV0dXJuZWQuCgogICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIGJpbmRfcG9ydCgpIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMgd2hlcmUgYQogICAgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlIGR1cmF0aW9uIG9mCiAgICB0aGUgdGVzdC4gIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcKICAgIGEgcHl0aG9uIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgogICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIC1hY2NlcHQgYXJndW1lbnQgdG8gb3BlbnNzbCdzCiAgICBzX3NlcnZlciBtb2RlKS4gIEFsd2F5cyBwcmVmZXIgYmluZF9wb3J0KCkgb3ZlciBmaW5kX3VudXNlZF9wb3J0KCkgd2hlcmUKICAgIHBvc3NpYmxlLiAgSGFyZCBjb2RlZCBwb3J0cyBzaG91bGQgKk5FVkVSKiBiZSB1c2VkLiAgQXMgc29vbiBhcyBhIHNlcnZlcgogICAgc29ja2V0IGlzIGJvdW5kIHRvIGEgaGFyZCBjb2RlZCBwb3J0LCB0aGUgYWJpbGl0eSB0byBydW4gbXVsdGlwbGUgaW5zdGFuY2VzCiAgICBvZiB0aGUgdGVzdCBzaW11bHRhbmVvdXNseSBvbiB0aGUgc2FtZSBob3N0IGlzIGNvbXByb21pc2VkLCB3aGljaCBtYWtlcyB0aGUKICAgIHRlc3QgYSB0aWNraW5nIHRpbWUgYm9tYiBpbiBhIGJ1aWxkYm90IGVudmlyb25tZW50LiBPbiBVbml4IGJ1aWxkYm90cywgdGhpcwogICAgbWF5IHNpbXBseSBtYW5pZmVzdCBhcyBhIGZhaWxlZCB0ZXN0LCB3aGljaCBjYW4gYmUgcmVjb3ZlcmVkIGZyb20gd2l0aG91dAogICAgaW50ZXJ2ZW50aW9uIGluIG1vc3QgY2FzZXMsIGJ1dCBvbiBXaW5kb3dzLCB0aGUgZW50aXJlIHB5dGhvbiBwcm9jZXNzIGNhbgogICAgY29tcGxldGVseSBhbmQgdXR0ZXJseSB3ZWRnZSwgcmVxdWlyaW5nIHNvbWVvbmUgdG8gbG9nIGluIHRvIHRoZSBidWlsZGJvdAogICAgYW5kIG1hbnVhbGx5IGtpbGwgdGhlIGFmZmVjdGVkIHByb2Nlc3MuCgogICAgKFRoaXMgaXMgZWFzeSB0byByZXByb2R1Y2Ugb24gV2luZG93cywgdW5mb3J0dW5hdGVseSwgYW5kIGNhbiBiZSB0cmFjZWQgdG8KICAgIHRoZSBTT19SRVVTRUFERFIgc29ja2V0IG9wdGlvbiBoYXZpbmcgZGlmZmVyZW50IHNlbWFudGljcyBvbiBXaW5kb3dzIHZlcnN1cwogICAgVW5peC9MaW51eC4gIE9uIFVuaXgsIHlvdSBjYW4ndCBoYXZlIHR3byBBRl9JTkVUIFNPQ0tfU1RSRUFNIHNvY2tldHMgYmluZCwKICAgIGxpc3RlbiBhbmQgdGhlbiBhY2NlcHQgY29ubmVjdGlvbnMgb24gaWRlbnRpY2FsIGhvc3QvcG9ydHMuICBBbiBFQUREUklOVVNFCiAgICBPU0Vycm9yIHdpbGwgYmUgcmFpc2VkIGF0IHNvbWUgcG9pbnQgKGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gYW5kCiAgICB0aGUgb3JkZXIgYmluZCBhbmQgbGlzdGVuIHdlcmUgY2FsbGVkIG9uIGVhY2ggc29ja2V0KS4KCiAgICBIb3dldmVyLCBvbiBXaW5kb3dzLCBpZiBTT19SRVVTRUFERFIgaXMgc2V0IG9uIHRoZSBzb2NrZXRzLCBubyBFQUREUklOVVNFCiAgICB3aWxsIGV2ZXIgYmUgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBiaW5kIHR3byBpZGVudGljYWwgaG9zdC9wb3J0cy4gV2hlbgogICAgYWNjZXB0KCkgaXMgY2FsbGVkIG9uIGVhY2ggc29ja2V0LCB0aGUgc2Vjb25kIGNhbGxlcidzIHByb2Nlc3Mgd2lsbCBzdGVhbAogICAgdGhlIHBvcnQgZnJvbSB0aGUgZmlyc3QgY2FsbGVyLCBsZWF2aW5nIHRoZW0gYm90aCBpbiBhbiBhd2t3YXJkbHkgd2VkZ2VkCiAgICBzdGF0ZSB3aGVyZSB0aGV5J2xsIG5vIGxvbmdlciByZXNwb25kIHRvIGFueSBzaWduYWxzIG9yIGdyYWNlZnVsIGtpbGxzLCBhbmQKICAgIG11c3QgYmUgZm9yY2libHkga2lsbGVkIHZpYSBPcGVuUHJvY2VzcygpL1Rlcm1pbmF0ZVByb2Nlc3MoKS4KCiAgICBUaGUgc29sdXRpb24gb24gV2luZG93cyBpcyB0byB1c2UgdGhlIFNPX0VYQ0xVU0lWRUFERFJVU0Ugc29ja2V0IG9wdGlvbgogICAgaW5zdGVhZCBvZiBTT19SRVVTRUFERFIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFmZm9yZHMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCiAgICBTT19SRVVTRUFERFIgb24gVW5peC4gIEdpdmVuIHRoZSBwcm9wZW5zaXR5IG9mIFVuaXggZGV2ZWxvcGVycyBpbiB0aGUgT3BlbgogICAgU291cmNlIHdvcmxkIGNvbXBhcmVkIHRvIFdpbmRvd3Mgb25lcywgdGhpcyBpcyBhIGNvbW1vbiBtaXN0YWtlLiAgQSBxdWljawogICAgbG9vayBvdmVyIE9wZW5TU0wncyAwLjkuOGcgc291cmNlIHNob3dzIHRoYXQgdGhleSB1c2UgU09fUkVVU0VBRERSIHdoZW4KICAgIG9wZW5zc2wuZXhlIGlzIGNhbGxlZCB3aXRoIHRoZSAnc19zZXJ2ZXInIG9wdGlvbiwgZm9yIGV4YW1wbGUuIFNlZQogICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1NTAgZm9yIG1vcmUgaW5mby4gIFRoZSBmb2xsb3dpbmcgc2l0ZSBhbHNvCiAgICBoYXMgYSB2ZXJ5IHRob3JvdWdoIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYm90aCBSRVVTRUFERFIKICAgIGFuZCBFWENMVVNJVkVBRERSVVNFIG9uIFdpbmRvd3M6CiAgICBodHRwOi8vbXNkbjIubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzQwNjIxKFZTLjg1KS5hc3B4KQoKICAgIFhYWDogYWx0aG91Z2ggdGhpcyBhcHByb2FjaCBpcyBhIHZhc3QgaW1wcm92ZW1lbnQgb24gcHJldmlvdXMgYXR0ZW1wdHMgdG8KICAgIGVsaWNpdCB1bnVzZWQgcG9ydHMsIGl0IHJlc3RzIGhlYXZpbHkgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgZXBoZW1lcmFsCiAgICBwb3J0IHJldHVybmVkIHRvIHVzIGJ5IHRoZSBPUyB3b24ndCBpbW1lZGlhdGVseSBiZSBkaXNoZWQgYmFjayBvdXQgdG8gc29tZQogICAgb3RoZXIgcHJvY2VzcyB3aGVuIHdlIGNsb3NlIGFuZCBkZWxldGUgb3VyIHRlbXBvcmFyeSBzb2NrZXQgYnV0IGJlZm9yZSBvdXIKICAgIGNhbGxpbmcgY29kZSBoYXMgYSBjaGFuY2UgdG8gYmluZCB0aGUgcmV0dXJuZWQgcG9ydC4gIFdlIGNhbiBkZWFsIHdpdGggdGhpcwogICAgaXNzdWUgaWYvd2hlbiB3ZSBjb21lIGFjcm9zcyBpdC4KICAgICkD2gZzb2NrZXRyRgAAANoFY2xvc2UpBNoGZmFtaWx5Wghzb2NrdHlwZVoIdGVtcHNvY2vaBHBvcnRyZQAAAHJlAAAAcmYAAAByRQAAAHoCAABzCgAAAAA4DAEIAQgBAgFjAgAAAAAAAAADAAAACAAAAEMAAABzwgAAAHwAagB0AWoCawJypHwAagN0AWoEawJypHQFdAFkAYMCcj58AKAGdAFqB3QBagihAmQCawJyPnQJZAODAYIBdAV0AWQEgwJyiGQFdApqC2sHcoh5IHwAoAZ0AWoHdAFqDKECZAJrAnJwdAlkBoMBggFXAG4UBAB0DWsKcoYBAAEAAQBZAG4CWAB0BXQBZAeDAnKkfACgDnQBagd0AWoPZAKhAwEAfACgEHwBZAhmAqEBAQB8AKARoQBkAhkAfQJ8AlMAKQlhJQMAAEJpbmQgdGhlIHNvY2tldCB0byBhIGZyZWUgcG9ydCBhbmQgcmV0dXJuIHRoZSBwb3J0IG51bWJlci4gIFJlbGllcyBvbgogICAgZXBoZW1lcmFsIHBvcnRzIGluIG9yZGVyIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgYW4gdW5ib3VuZCBwb3J0LiAgVGhpcyBpcwogICAgaW1wb3J0YW50IGFzIG1hbnkgdGVzdHMgbWF5IGJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHksIGVzcGVjaWFsbHkgaW4gYQogICAgYnVpbGRib3QgZW52aXJvbm1lbnQuICBUaGlzIG1ldGhvZCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBzb2NrLmZhbWlseQogICAgaXMgQUZfSU5FVCBhbmQgc29jay50eXBlIGlzIFNPQ0tfU1RSRUFNLCAqYW5kKiB0aGUgc29ja2V0IGhhcyBTT19SRVVTRUFERFIKICAgIG9yIFNPX1JFVVNFUE9SVCBzZXQgb24gaXQuICBUZXN0cyBzaG91bGQgKm5ldmVyKiBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMKICAgIGZvciBUQ1AvSVAgc29ja2V0cy4gIFRoZSBvbmx5IGNhc2UgZm9yIHNldHRpbmcgdGhlc2Ugb3B0aW9ucyBpcyB0ZXN0aW5nCiAgICBtdWx0aWNhc3RpbmcgdmlhIG11bHRpcGxlIFVEUCBzb2NrZXRzLgoKICAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIFNPX0VYQ0xVU0lWRUFERFJVU0Ugc29ja2V0IG9wdGlvbiBpcyBhdmFpbGFibGUgKGkuZS4KICAgIG9uIFdpbmRvd3MpLCBpdCB3aWxsIGJlIHNldCBvbiB0aGUgc29ja2V0LiAgVGhpcyB3aWxsIHByZXZlbnQgYW55b25lIGVsc2UKICAgIGZyb20gYmluZCgpJ2luZyB0byBvdXIgaG9zdC9wb3J0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCiAgICDaDFNPX1JFVVNFQUREUnICAAAAekh0ZXN0cyBzaG91bGQgbmV2ZXIgc2V0IHRoZSBTT19SRVVTRUFERFIgc29ja2V0IG9wdGlvbiBvbiBUQ1AvSVAgc29ja2V0cyHaDFNPX1JFVVNFUE9SVFoXV0lUSElOX1BZVEhPTl9SUE1fQlVJTER6SHRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFUE9SVCBzb2NrZXQgb3B0aW9uIG9uIFRDUC9JUCBzb2NrZXRzIdoTU09fRVhDTFVTSVZFQUREUlVTRXIBAAAAKRJyAgEAAHIAAQAA2gdBRl9JTkVUcuYAAADaC1NPQ0tfU1RSRUFNcuAAAABaCmdldHNvY2tvcHRaClNPTF9TT0NLRVRyBAEAAHIKAAAAcocAAADaB2Vudmlyb25yBQEAAHKVAAAAWgpzZXRzb2Nrb3B0cgYBAADaBGJpbmRaC2dldHNvY2tuYW1lKQPaBHNvY2taBGhvc3RyAwEAAHJlAAAAcmUAAAByZgAAAHJGAAAAuAIAAHMgAAAAAA8YAQoBFAEIAgoBCgECARQBDAIOBAYBCgESAg4BDAFjAgAAAAAAAAACAAAACAAAAEMAAABzSgAAAHwAagB0AWoCawJzEHQDggF5DnwAoAR8AaEBAQBXAG4mBAB0BWsKckQBAAEAAQB8AKAGoQABAHQHoAhkAaEBggFZAG4CWABkAlMAKQN6QkJpbmQgYSB1bml4IHNvY2tldCwgcmFpc2luZyBTa2lwVGVzdCBpZiBQZXJtaXNzaW9uRXJyb3IgaXMgcmFpc2VkLnobY2Fubm90IGJpbmQgQUZfVU5JWCBzb2NrZXRzTikJcgIBAAByAAEAANoHQUZfVU5JWNoOQXNzZXJ0aW9uRXJyb3JyCgEAANoPUGVybWlzc2lvbkVycm9ycgEBAABydAAAAHJ1AAAAKQJyCwEAAFoEYWRkcnJlAAAAcmUAAAByZgAAAHJIAAAA3gIAAHMMAAAAAAIQAQIBDgEOAQgBYwAAAAAAAAAAAQAAAAgAAABDAAAAc1oAAAB0AGoBclZkAX0Aejx5InQAoAB0AGoCdABqA6ECfQB8AKAEdAVkAmYCoQEBAGQDUwAEAHQGawpyQgEAAQABAFkAbgJYAFcAZAF8AHJUfACgB6EAAQBYAGQEUwApBXorQ2hlY2sgd2hldGhlciBJUHY2IGlzIGVuYWJsZWQgb24gdGhpcyBob3N0Lk5yAQAAAFRGKQhyAAEAAFoIaGFzX2lwdjZaCEFGX0lORVQ2cggBAAByCgEAANoGSE9TVHY2cpUAAAByAQEAACkBcgsBAAByZQAAAHJlAAAAcmYAAADaEF9pc19pcHY2X2VuYWJsZWTnAgAAcxYAAAAAAgYBBAEEARABDgEEAQ4BCgIEAQoBchABAABjAQAAAAAAAAACAAAABAAAAAMAAABzGgAAAHQAoAGIAKEBhwBmAWQBZAKECIMBfQF8AVMAKQN6NVNraXAgdGhlIHRlc3Qgb24gVExTIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gZmFpbHVyZXMuYwAAAAAAAAAAAwAAAAoAAAAfAAAAc04AAAB5DogAfAB8AY4BAQBXAG46BAB0AGsKckgBAH0CAQB6HGQBdAF8AoMBawZyNnQCoANkAqEBggGCAFcAZABkAH0CfgJYAFkAbgJYAGQAUwApA05aGUNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUR6LnN5c3RlbSBkb2VzIG5vdCBjb250YWluIG5lY2Vzc2FyeSBjZXJ0aWZpY2F0ZXMpBHKVAAAAcnYAAABydAAAAHJ1AAAAKQNynAAAANoGa3dhcmdzcuoAAAApAXKDAAAAcmUAAAByZgAAANoDZGVj+gIAAHMMAAAAAAICAQ4BEAEMAQoCeiZzeXN0ZW1fbXVzdF92YWxpZGF0ZV9jZXJ0Ljxsb2NhbHM+LmRlYykCcv0AAABy/gAAACkCcoMAAAByEgEAAHJlAAAAKQFygwAAAHJmAAAA2hlzeXN0ZW1fbXVzdF92YWxpZGF0ZV9jZXJ0+AIAAHMEAAAAAAIWCXITAQAAaQEAQABpAQAAAVoGZG91YmxlWgRJRUVFeh50ZXN0IHJlcXVpcmVzIElFRUUgNzU0IGRvdWJsZXN6DXJlcXVpcmVzIHpsaWJ6DXJlcXVpcmVzIGd6aXB6DHJlcXVpcmVzIGJ6MnoNcmVxdWlyZXMgbHptYdoEamF2YVoSZ2V0YW5kcm9pZGFwaWxldmVs2gV3aW4zMnoOL3N5c3RlbS9iaW4vc2h6By9iaW4vc2h6BSR0ZXN0egVAdGVzdHoJe31fe31fdG1wehlodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0KQv1AgAAAMOmdQIAAADEsHUCAAAAxYF1AgAAAM+GdQIAAADQmnUCAAAA15B1AgAAANiMdQIAAADYqnUDAAAA4LiB9QIAAADCoHUDAAAA4oKsdQsAAAAtw6DDssmYxYHEn3LXAAAAWgNORkTaAm50cpQAAAB1DgAAAC3lhbHFgeKZoc2j7bKAenRXQVJOSU5HOiBUaGUgZmlsZW5hbWUgJXIgQ0FOIGJlIGVuY29kZWQgYnkgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKCVzKS4gVW5pY29kZSBmaWxlbmFtZSB0ZXN0cyBtYXkgbm90IGJlIGVmZmVjdGl2ZfMBAAAA/3MCAAAALf/aD3N1cnJvZ2F0ZWVzY2FwZSkFcwMAAADnd/ByGQEAAHMFAAAArtXtsoBzAwAAAO20gHMCAAAAgZhy7QAAAGMCAAAAAAAAAAUAAAAKAAAAYwAAAHO0AAAAZAF9AnwAZAJrCHImdACgAaEAfQBkA30CdAJqA6AEfAChAX0Ablh5EnQCoAV8AKEBAQBkA30CVwBuRAQAdAZrCnJ8AQB9AwEAeiZ8AXNQggB0B2oIZAR8AJsCZAV8A5sAnQR0CWQGZAeNAwEAVwBkAmQCfQN+A1gAWQBuAlgAfAJyinQCoAqhAH0Eegp8AFYAAQBXAGQCfAJyrnwEdAKgCqEAawJyrnQLfACDAQEAWABkAlMAKQhhogEAAFJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IGNyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgoKICAgIEFyZ3VtZW50czoKCiAgICAgIHBhdGg6IHRoZSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRlbXBvcmFyaWx5LiAgSWYgb21pdHRlZCBvciBOb25lLAogICAgICAgIGRlZmF1bHRzIHRvIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1c2luZyB0ZW1wZmlsZS5ta2R0ZW1wLgoKICAgICAgcXVpZXQ6IGlmIEZhbHNlICh0aGUgZGVmYXVsdCksIHRoZSBjb250ZXh0IG1hbmFnZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbgogICAgICAgIG9uIGVycm9yLiAgT3RoZXJ3aXNlLCBpZiB0aGUgcGF0aCBpcyBzcGVjaWZpZWQgYW5kIGNhbm5vdCBiZQogICAgICAgIGNyZWF0ZWQsIG9ubHkgYSB3YXJuaW5nIGlzIGlzc3VlZC4KCiAgICBGTlR6NXRlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgegI6IOkDAAAAKQFyoQAAACkM2gh0ZW1wZmlsZdoHbWtkdGVtcHKHAAAAcogAAADaCHJlYWxwYXRo2gVta2RpcnKVAAAAcmgAAABypgAAAHKnAAAA2gZnZXRwaWRyGgAAACkFcogAAADaBXF1aWV0WgtkaXJfY3JlYXRlZHK5AAAA2gNwaWRyZQAAAHJlAAAAcmYAAADaCHRlbXBfZGlyvQMAAHMmAAAAAA4EAQgBCAEEAQ4CAgEKAQgBEAEEAQIBEgIcAQQBCAECAQoEEAFyIwEAAGMCAAAAAAAAAAQAAAAKAAAAYwAAAHN8AAAAdACgAaEAfQJ5DnQAoAJ8AKEBAQBXAG5EBAB0A2sKcloBAH0DAQB6JnwBcy6CAHQEagVkAXwAmwJkAnwDmwCdBHQGZANkBI0DAQBXAGQFZAV9A34DWABZAG4CWAB6DnQAoAGhAFYAAQBXAGQFdACgAnwCoQEBAFgAZAVTACkGYWcBAABSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjaGFuZ2VzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgoKICAgIEFyZ3VtZW50czoKCiAgICAgIHBhdGg6IHRoZSBkaXJlY3RvcnkgdG8gdXNlIGFzIHRoZSB0ZW1wb3JhcnkgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KCiAgICAgIHF1aWV0OiBpZiBGYWxzZSAodGhlIGRlZmF1bHQpLCB0aGUgY29udGV4dCBtYW5hZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24KICAgICAgICBvbiBlcnJvci4gIE90aGVyd2lzZSwgaXQgaXNzdWVzIG9ubHkgYSB3YXJuaW5nIGFuZCBrZWVwcyB0aGUgY3VycmVudAogICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IHRoZSBzYW1lLgoKICAgIHpCdGVzdHMgbWF5IGZhaWwsIHVuYWJsZSB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gegI6IHIbAQAAKQFyoQAAAE4pB3KHAAAA2gZnZXRjd2TaBWNoZGlycpUAAAByaAAAAHKmAAAAcqcAAAApBHKIAAAAciEBAABaCXNhdmVkX2RpcnK5AAAAcmUAAAByZQAAAHJmAAAA2gpjaGFuZ2VfY3dk5AMAAHMWAAAAAA0IAQIBDgEQAQQBAgESAhwBAgEOAnImAQAA2gd0ZW1wY3dkYwIAAAAAAAAABAAAAAoAAABjAAAAczoAAAB0AHwAfAFkAY0CjyR9AnQBfAJ8AWQCjQKPDH0DfANWAAEAVwBkA1EAUgBYAFcAZANRAFIAWABkA1MAKQRh9gEAAAogICAgQ29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY3JlYXRlcyBhbmQgY2hhbmdlcyB0aGUgQ1dELgoKICAgIFRoZSBmdW5jdGlvbiB0ZW1wb3JhcmlseSBjaGFuZ2VzIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICBhZnRlciBjcmVhdGluZyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpdGgKICAgIG5hbWUgKm5hbWUqLiAgSWYgKm5hbWUqIGlzIE5vbmUsIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlzCiAgICBjcmVhdGVkIHVzaW5nIHRlbXBmaWxlLm1rZHRlbXAuCgogICAgSWYgKnF1aWV0KiBpcyBGYWxzZSAoZGVmYXVsdCkgYW5kIGl0IGlzIG5vdCBwb3NzaWJsZSB0bwogICAgY3JlYXRlIG9yIGNoYW5nZSB0aGUgQ1dELCBhbiBlcnJvciBpcyByYWlzZWQuICBJZiAqcXVpZXQqIGlzIFRydWUsCiAgICBvbmx5IGEgd2FybmluZyBpcyByYWlzZWQgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KCiAgICApAnKIAAAAciEBAAApAXIhAQAATikCciMBAAByJgEAACkEcncAAAByIQEAAFoJdGVtcF9wYXRoWgdjd2RfZGlycmUAAAByZQAAAHJmAAAAchsAAAAABAAAcwYAAAAADw4BDgHaBXVtYXNrYwEAAAAAAAAAAgAAAAkAAABjAAAAcyYAAAB0AKABfAChAX0BegpkAVYAAQBXAGQBdACgAXwBoQEBAFgAZAFTACkCejhDb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBzZXRzIHRoZSBwcm9jZXNzIHVtYXNrLk4pAnKHAAAAcigBAAApAnIoAQAAWgdvbGRtYXNrcmUAAAByZQAAAHJmAAAAckkAAAAUBAAAcwgAAAAAAwoBAgEKAtoEZGF0YWMCAAAAAAAAAAUAAAAFAAAAQwAAAHNiAAAAdABqAaACfAChAXIQfABTAHwBZAFrCXImdABqAaADfAF8AKECfQB0BGcBdAVqARcAfQJ4KnwCRABdIn0DdABqAaADfAN8AKECfQR0AGoBoAZ8BKEBcjh8BFMAcThXAHwAUwApAmFbAQAAVHJ5IHRvIGZpbmQgYSBmaWxlIG9uIHN5cy5wYXRoIG9yIGluIHRoZSB0ZXN0IGRpcmVjdG9yeS4gIElmIGl0IGlzIG5vdAogICAgZm91bmQgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuZWQgKHRoaXMgZG9lcyBub3QKICAgIG5lY2Vzc2FyaWx5IHNpZ25hbCBmYWlsdXJlOyBjb3VsZCBzdGlsbCBiZSB0aGUgbGVnaXRpbWF0ZSBwYXRoKS4KCiAgICBTZXR0aW5nICpzdWJkaXIqIGluZGljYXRlcyBhIHJlbGF0aXZlIHBhdGggdG8gdXNlIHRvIGZpbmQgdGhlIGZpbGUKICAgIHJhdGhlciB0aGFuIGxvb2tpbmcgZGlyZWN0bHkgaW4gdGhlIHBhdGggZGlyZWN0b3JpZXMuCiAgICBOKQdyhwAAAHKIAAAA2gVpc2Fic3KyAAAA2g1URVNUX0hPTUVfRElScnAAAADaBmV4aXN0cykFcq0AAABaBnN1YmRpcnKIAAAAWgJkbtoCZm5yZQAAAHJlAAAAcmYAAAByHAAAACUEAABzFAAAAAAIDAEEAQgBDgEMAQoBDgEMAAgBYwEAAAAAAAAAAgAAAAUAAABDAAAAcygAAAB0AKABfAB0AGoCdABqA0IAdABqBEIAoQJ9AXQAoAV8AaEBAQBkAVMAKQJ6PkNyZWF0ZSBhbiBlbXB0eSBmaWxlLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgdHJ1bmNhdGUgaXQuTikGcocAAADaBG9wZW7aCE9fV1JPTkxZ2gdPX0NSRUFU2gdPX1RSVU5DcgEBAAApAnKtAAAA2gJmZHJlAAAAcmUAAAByZgAAAHIdAAAANwQAAHMEAAAAAAIaAWMBAAAAAAAAAAQAAAADAAAAQwAAAHMsAAAAdAB8AKABoQCDAX0BZAFkAoQAfAFEAIMBfQJkA6ACfAKhAX0DZAR8AxYAUwApBXolTGlrZSByZXByKGRpY3QpLCBidXQgaW4gc29ydGVkIG9yZGVyLmMBAAAAAAAAAAIAAAAEAAAAUwAAAHMUAAAAZwB8AF0MfQFkAHwBFgCRAnEEUwApAXoGJXI6ICVycmUAAAApAtoCLjBaBHBhaXJyZQAAAHJlAAAAcmYAAAD6CjxsaXN0Y29tcD4/BAAAcwIAAAAGAHocc29ydGRpY3QuPGxvY2Fscz4uPGxpc3Rjb21wPnoCLCB6BHslc30pA9oGc29ydGVkco0AAABysgAAACkE2gRkaWN0co0AAABaCXJlcHJwYWlyc1oKd2l0aGNvbW1hc3JlAAAAcmUAAAByZgAAAHJZAAAAPAQAAHMIAAAAAAIMAQ4BCgFjAAAAAAAAAAABAAAACAAAAEMAAABzKgAAAHQAdAFkAYMCfQB6CHwAoAKhAFMAfACgA6EAAQB0BHQBgwEBAFgAZAJTACkDemAKICAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgZmlsZSBhbmQgcmV0dXJuCiAgICBpdHMgZmQuCiAgICDaAndiTikFci4BAAByFwAAANoGZmlsZW5vcgEBAAByGQAAACkBcrEAAAByZQAAAHJlAAAAcmYAAADaC21ha2VfYmFkX2ZkQwQAAHMKAAAAAAUKAQIBCAIIAXI5AQAAKQLaBmxpbmVub9oGb2Zmc2V0YwIAAAACAAAABgAAAAkAAABDAAAAc3AAAAB8AKAAdAGhAY8SfQR0AnwBZAFkAoMDAQBXAGQAUQBSAFgAfARqA30FfACgBHwFagWhAQEAfAJkAGsJckp8AKAGfAVqBXwCoQIBAHwAoAR8BWoHoQEBAHwDZABrCXJsfACgBnwFagd8A6ECAQBkAFMAKQNOeg08dGVzdCBzdHJpbmc+2gRleGVjKQjaDGFzc2VydFJhaXNlc9oLU3ludGF4RXJyb3LaB2NvbXBpbGVaCWV4Y2VwdGlvbloPYXNzZXJ0SXNOb3ROb25lcjoBAADaC2Fzc2VydEVxdWFscjsBAAApBtoIdGVzdGNhc2VaCXN0YXRlbWVudHI6AQAAcjsBAADaAmNtcp0AAAByZQAAAHJlAAAAcmYAAAByJQAAAE8EAABzEgAAAAABDAEWAQYBDAEIAQ4BDAEIAWMBAAAAAAAAAAsAAAAJAAAADwAAAHNUAQAAZAFkAGwAfQNkAWQAbAF9A4gCoAJkAmQAoQKJAXwDagOgBHwAoQFkAxkAoAVkBKEBZAUZAH0EdAZqB6AIdAl8BKECfQWHAIcBhwJmA2QGZAeECH0GdAZqB6AKfAWhAXJ8fAZ8BYMBfQd8B2QAawlydHwHUwB0C3wFgwEBAHQMZAiDAQEAdA1ymnQOZAl8ABYAdA+DAGQKjQIBAHwDahCgEaEAfQh0EnK0fAhqE6AUZAuhAQEAfAhqFXwAZAxkDY0CfQd0EnLifAdqFqAXZA6hAWQPawJy4nQSahh8B2QQjQF9B3pAdBV8BWQRgwKPLH0JfAegGaEAfQp4HHwKkAFyFHwJoBp8CqEBAQB8B6AZoQB9CnH6VwBXAGQAUQBSAFgAVwBkAHwHoBuhAAEAWAB8BnwFgwF9B3wHZABrCZABckR8B1MAdBxkEnwFFgCDAYIBZABTACkTTnIBAAAA2gVjaGVja3KUAAAA+gEv6f////9jAQAAAAAAAAACAAAAAwAAABMAAABzPgAAAHQAfABmAYgAngKIAo4BfQGIAWQAawhyHHwBUwCIAXwBgwFyMnwBoAFkAaEBAQB8AVMAfAGgAqEAAQBkAFMAKQJOcgEAAAApA3IuAQAA2gRzZWVrcgEBAAApAnItAQAAcoMAAAApA3KcAAAAckMBAABy+wAAAHJlAAAAcmYAAADaEGNoZWNrX3ZhbGlkX2ZpbGVjBAAAcw4AAAAAARABCAEEAQgBCgEEAXoqb3Blbl91cmxyZXNvdXJjZS48bG9jYWxzPi5jaGVja192YWxpZF9maWxlWgh1cmxmZXRjaHoQCWZldGNoaW5nICVzIC4uLikBcrEAAAApAnoPQWNjZXB0LUVuY29kaW5n2gRnemlw6Q8AAAApAXKqAAAAehBDb250ZW50LUVuY29kaW5nckgBAAApAVoHZmlsZW9ianI3AQAAehNpbnZhbGlkIHJlc291cmNlICVyKR1aDnVybGxpYi5yZXF1ZXN0Wgx1cmxsaWIucGFyc2XaA3BvcNoFcGFyc2VaCHVybHBhcnNlcqIAAAByhwAAAHKIAAAAcrIAAADaDVRFU1RfREFUQV9ESVJyLAEAAHIZAAAAciEAAAByBQAAAHKWAAAAchMAAABaB3JlcXVlc3RaDGJ1aWxkX29wZW5lcnJIAQAAWgphZGRoZWFkZXJzcowAAAByLgEAAFoHaGVhZGVyc9oDZ2V0WghHemlwRmlsZdoEcmVhZNoFd3JpdGVyAQEAAHIKAAAAKQtaA3VybHKcAAAAcvsAAADaBnVybGxpYnKtAAAAci0BAAByRwEAAHKDAAAA2gZvcGVuZXLaA291dNoBc3JlAAAAKQNynAAAAHJDAQAAcvsAAAByZgAAAHJHAAAAWgQAAHM8AAAAAAEQAgwCGgIOAhAJDAEIAQgBBAEIAwgCBAESAQoBBAEMAQ4BFAEMAQIBDAEIAQgBCgEaAgoCCAEKAQQBYwAAAAAAAAAAAAAAAAMAAABAAAAAczQAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZQZkBmQHhACDAVoHZAhkCYQAWghkClMAKQvaEFdhcm5pbmdzUmVjb3JkZXJ6eUNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHRoZSB3YXJuaW5ncyBsaXN0IHJldHVybmVkIG9uCiAgICAgICBlbnRyeSB0byB0aGUgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSBjb250ZXh0IG1hbmFnZXIuCiAgICBjAgAAAAAAAAACAAAAAgAAAEMAAABzEAAAAHwBfABfAGQBfABfAWQAUwApAk5yAQAAACkC2glfd2FybmluZ3PaBV9sYXN0KQLaBHNlbGZaDXdhcm5pbmdzX2xpc3RyZQAAAHJlAAAAcmYAAADaCF9faW5pdF9fkAQAAHMEAAAAAAEGAXoZV2FybmluZ3NSZWNvcmRlci5fX2luaXRfX2MCAAAAAAAAAAIAAAAEAAAAQwAAAHNEAAAAdAB8AGoBgwF8AGoCawRyIHQDfABqAWQBGQB8AYMCUwB8AXQEagVqBmsGcjBkAFMAdAdkAnwAfAFmAhYAgwGCAWQAUwApA05yRQEAAHoWJXIgaGFzIG5vIGF0dHJpYnV0ZSAlcikIcr4AAAByVQEAAHJWAQAAco8AAAByaAAAANoOV2FybmluZ01lc3NhZ2XaEF9XQVJOSU5HX0RFVEFJTFNykAAAACkCclcBAADaBGF0dHJyZQAAAHJlAAAAcmYAAADaC19fZ2V0YXR0cl9flAQAAHMKAAAAAAEQARABDAEEAXocV2FybmluZ3NSZWNvcmRlci5fX2dldGF0dHJfX2MBAAAAAAAAAAEAAAADAAAAQwAAAHMQAAAAfABqAHwAagFkAIUCGQBTACkBTikCclUBAAByVgEAACkBclcBAAByZQAAAHJlAAAAcmYAAAByaAAAAJsEAABzAgAAAAACehlXYXJuaW5nc1JlY29yZGVyLndhcm5pbmdzYwEAAAAAAAAAAQAAAAIAAABDAAAAcxAAAAB0AHwAagGDAXwAXwJkAFMAKQFOKQNyvgAAAHJVAQAAclYBAAApAXJXAQAAcmUAAAByZQAAAHJmAAAA2gVyZXNldJ8EAABzAgAAAAABehZXYXJuaW5nc1JlY29yZGVyLnJlc2V0TikJcmEAAAByYgAAAHJjAAAAcmQAAAByWAEAAHJcAQAA2ghwcm9wZXJ0eXJoAAAAcl0BAAByZQAAAHJlAAAAcmUAAAByZgAAAHJUAQAAjAQAAHMKAAAACAMEAQgECAcMBHJUAQAAYwIAAAAAAAAACwAAAAkAAABjAAAAcwYBAAB0AKABZAGhAX0CfAJqAqADZAKhAX0DfANyInwDoAShAAEAdAVqBmQDZASNAY8gfQR0AGoHZAUZAKAIZAahAQEAdAl8BIMBVgABAFcAZAdRAFIAWAB0CnwEgwF9BWcAfQZ4dnwARABdblwCfQd9CGQIfQl4SHwFZAdkB4UCGQBEAF04fQR8BGoLfQp0DKANfAd0DnwKgwF0DGoPoQNygHQQfApqEXwIgwJygGQDfQl8BaASfAShAQEAcYBXAHwJc2Z8AXNmfAagE3wHfAhqFGYCoQEBAHFmVwB8BXLsdBVkCXwFZAoZABYAgwGCAXwGkAFyAnQVZAt8BmQKGQAWAIMBggFkB1MAKQx6tkNhdGNoIHRoZSB3YXJuaW5ncywgdGhlbiBjaGVjayBpZiBhbGwgdGhlIGV4cGVjdGVkCiAgICB3YXJuaW5ncyBoYXZlIGJlZW4gcmFpc2VkIGFuZCByZS1yYWlzZSB1bmV4cGVjdGVkIHdhcm5pbmdzLgogICAgSWYgJ3F1aWV0JyBpcyBUcnVlLCBvbmx5IHJlLXJhaXNlIHRoZSB1bmV4cGVjdGVkIHdhcm5pbmdzLgogICAgcpQAAABaE19fd2FybmluZ3JlZ2lzdHJ5X19UKQHaBnJlY29yZHJoAAAA2gZhbHdheXNORnoUdW5oYW5kbGVkIHdhcm5pbmcgJXNyAQAAAHopZmlsdGVyICglciwgJXMpIGRpZCBub3QgY2F0Y2ggYW55IHdhcm5pbmcpFnJwAAAA2glfZ2V0ZnJhbWXaCWZfZ2xvYmFsc3JNAQAA2gVjbGVhcnJoAAAAcmkAAAByewAAANoMc2ltcGxlZmlsdGVyclQBAAByfQAAANoHbWVzc2FnZdoCcmXaBW1hdGNocnYAAADaAUnaCmlzc3ViY2xhc3NylwAAANoGcmVtb3ZlcowAAAByYQAAAHINAQAAKQvaB2ZpbHRlcnNyIQEAANoFZnJhbWXaCHJlZ2lzdHJ52gF3WgdyZXJhaXNlWgdtaXNzaW5ncnkAAADaA2NhdNoEc2VlbloHd2FybmluZ3JlAAAAcmUAAAByZgAAANoPX2ZpbHRlcndhcm5pbmdzowQAAHMwAAAAAAcKAQwBBAEIAQ4EEAEUAggBBAEOAQQBEgEGAhQBDAEEAQ4BCAIUAQQBEAEGAQQBcnEBAABjAAAAAAAAAAADAAAAAwAAAE8AAABzLgAAAHwBoABkAaEBfQJ8AHMkZAJ0AWYCZgF9AHwCZANrCHIkZAR9AnQCfAB8AoMCUwApBWGYAQAAQ29udGV4dCBtYW5hZ2VyIHRvIHNpbGVuY2Ugd2FybmluZ3MuCgogICAgQWNjZXB0IDItdHVwbGVzIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzOgogICAgICAgICgibWVzc2FnZSByZWdleHAiLCBXYXJuaW5nQ2F0ZWdvcnkpCgogICAgT3B0aW9uYWwgYXJndW1lbnQ6CiAgICAgLSBpZiAncXVpZXQnIGlzIFRydWUsIGl0IGRvZXMgbm90IGZhaWwgaWYgYSBmaWx0ZXIgY2F0Y2hlcyBub3RoaW5nCiAgICAgICAgKGRlZmF1bHQgVHJ1ZSB3aXRob3V0IGFyZ3VtZW50LAogICAgICAgICBkZWZhdWx0IEZhbHNlIGlmIHNvbWUgZmlsdGVycyBhcmUgZGVmaW5lZCkKCiAgICBXaXRob3V0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ZiBuYW1lcyB0aGF0IHdvdWxkbid0IG90aGVyd2lzZSBiZQogICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIKICAgICdfX21vZHVsZV9fJyBhdHRyaWJ1dGUuIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQogICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgoKICAgIFRoZSAnYmxhY2tsaXN0JyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCBtdXN0IG5vdCBiZSB0cmVhdGVkCiAgICBhcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KCiAgICBVc2FnZToKICAgICAgICBpbXBvcnQgYmFyCiAgICAgICAgaW1wb3J0IGZvbwogICAgICAgIGltcG9ydCB1bml0dGVzdAogICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoKICAgICAgICBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmb28pCgogICAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CiAgICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgogICAgICAgICAgICAgICAgIyBiYXIgaW1wb3J0cyBwYXJ0IG9mIGl0cyBBUEkgZnJvbSBfYmFyLgogICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKCiAgICBOcmMCAAByYgAAACkNcmEAAAByqwEAAHJ2AAAAcoYBAAByWQIAAHJyAAAAco8AAABy4AAAANoFdHlwZXPaCk1vZHVsZVR5cGXaA2FkZFoQYXNzZXJ0Q291bnRFcXVhbNoHX19hbGxfXykIWgl0ZXN0X2Nhc2VyjgAAAFoObmFtZV9vZl9tb2R1bGVaBWV4dHJhWglibGFja2xpc3RaCGV4cGVjdGVkcncAAABykQAAAHJlAAAAcmUAAAByZgAAAHI8AAAA9wkAAHMcAAAAACkIAQoBCgEGAggCDgESAQIBCgEQAQoBDAEOAWMAAAAAAAAAAAAAAAACAAAAQAAAAHMoAAAAZQBaAWQAWgJkAVoDZAJaBGQCWgVkA2QEhABaBmQFZAaEAFoHZAJTACkHclgAAAB6q1RyeSB0byBwcmV2ZW50IGEgY3Jhc2ggcmVwb3J0IGZyb20gcG9wcGluZyB1cC4KCiAgICBPbiBXaW5kb3dzLCBkb24ndCBkaXNwbGF5IHRoZSBXaW5kb3dzIEVycm9yIFJlcG9ydGluZyBkaWFsb2cuICBPbiBVTklYLAogICAgZGlzYWJsZSB0aGUgY3JlYXRpb24gb2YgY29yZWR1bXAgZmlsZS4KICAgIE5jAQAAAAAAAAAKAAAACQAAAEMAAABzcgEAAHQAagGgAmQBoQFyumQCZANsA30BfAFqBGoFfABfBmQEfQJ8AGoGoAd8AqEBfABfCHwAagagB3wAagh8AkIAoQEBAHkSZAJkA2wJfQN8A2oKAQBXAG4YBAB0C3QMZgJrCnJsAQABAAEAWQBuTFgAaQB8AF8NePh8A2oOfANqD3wDahBnA0QAXS59BHwDoAp8BHwDahGhAn0FfAOgEnwEfANqE6ECfQZ8BXwGZgJ8AGoNfAQ8AHGGVwButHQUZANrCZABcgp5KnQUoBV0FGoWoQF8AF8IdBSgF3QUahZkAnwAaghkBRkAZgKhAgEAVwBuGgQAdBh0GWYCawqQAXIIAQABAAEAWQBuAlgAdABqAWQGawKQAXJuZAdkCGQJZApnBH0HdBpqG3wHdBpqHHQaahxkC40DfQh8CI8SAQB8CKAdoQBkAhkAfQlXAGQDUQBSAFgAfAmgHqEAZAxrApABcm50H2QNZA5kD2QQjQMBAHwAUwApEXq7T24gV2luZG93cywgZGlzYWJsZSBXaW5kb3dzIEVycm9yIFJlcG9ydGluZyBkaWFsb2dzIHVzaW5nCiAgICAgICAgU2V0RXJyb3JNb2RlLgoKICAgICAgICBPbiBVTklYLCB0cnkgdG8gc2F2ZSB0aGUgcHJldmlvdXMgY29yZSBmaWxlIHNpemUgbGltaXQsIHRoZW4gc2V0CiAgICAgICAgc29mdCBsaW1pdCB0byAwLgogICAgICAgIHKfAAAAcgEAAABOcpQAAAByAgAAAHLXAAAAehEvdXNyL2Jpbi9kZWZhdWx0c3JOAQAAehdjb20uYXBwbGUuQ3Jhc2hSZXBvcnRlcloKRGlhbG9nVHlwZSkCcpMAAAByrgEAAHMJAAAAZGV2ZWxvcGVyejp0aGlzIHRlc3QgdHJpZ2dlcnMgdGhlIENyYXNoIFJlcG9ydGVyLCB0aGF0IGlzIGludGVudGlvbmFscs4AAABUKQLaA2VuZHLtAQAAKSBycAAAAHJxAAAAcnIAAAByvQAAAHK/AAAAcsAAAADaBF9rMzLaDFNldEVycm9yTW9kZdoJb2xkX3ZhbHVl2gZtc3ZjcnTaEENydFNldFJlcG9ydE1vZGVykAAAAHJvAAAA2glvbGRfbW9kZXPaCENSVF9XQVJO2glDUlRfRVJST1LaCkNSVF9BU1NFUlRaEENSVERCR19NT0RFX0ZJTEXaEENydFNldFJlcG9ydEZpbGVaEkNSVERCR19GSUxFX1NUREVSUnLrAAAAWglnZXRybGltaXTaC1JMSU1JVF9DT1JF2glzZXRybGltaXRy8gAAAHKVAAAAcu4BAABy7wEAANoEUElQRVoLY29tbXVuaWNhdGVyQgIAAHKWAAAAKQpyVwEAAHK9AAAAWhVTRU1fTk9HUEZBVUxURVJST1JCT1hybwIAANoLcmVwb3J0X3R5cGXaCG9sZF9tb2Rl2ghvbGRfZmlsZdoDY21k2gRwcm9jcpMAAAByZQAAAHJlAAAAcmYAAAByeAEAADsKAABzTgAAAAAHDAQIAQoBBAEOARIEAgEIAQoBEgIGAgYBBgEEAQwBBgEIAQYBCAEUAwoBAgEOAQgBFAEU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CgICAQwBEAEKAgIBDAEQAQoCAgEMARABCgQKAggCBgIEAgYBBAIMAQYCBgEGAQgBCAEIAQgBBgEGAQQCCAECAgoBAgIEAgICCAIGAQQBCgEIAQoDEAMQAxADEggEAQ4PEhIIDggOCAoIFAwyCAkEAQQBBAIEAQQBBAUEAQgECAMIBggKDgEMIQgDCAMIEgoOBgEGAggWCAMIBggGCAYIDQgQCEoICAwJCBsICQgJCBwEAQQBBAMSPgwmCAkIDwYCCBIEBwQDBAEOAQYCDAIMAgwCDAIMAgoCDAEQAgQDDAIGAgQEEAQEBAQBAgYIGwIEFgEIARABBgIEAQgDCAEMBAgBDAEIBQQBDAIQAwgBAgEOARABBgIEAgwBBgIMAQICDgEQAgIBFAwEAQIFCAwCAQ4BEAEOAQ4CBgEOAgQDCAQEAgQBDiYEAQ4bBAEOEgwBDgsUAQwDDgIMEggFCAcIDBALCDIQFwwnDhgOFRAgFDUQGRAcDgEOAQ4DCBMEARJNDgwICQgJCA0IEA4LCAoEAQQBDAEIAQQBCAIIAwgEBAEEAggPCCQIIwQBCgEIAQoCBgIKFRQeDjAKEhAGDAMMCAoGEA0MCgoLDBAMCwwMDBkEAgQBBAMMCAwKECEMHwoXDAMIAQwBDgIMAQYCBgEIBg4bDAMMGQQKCgMKHwoOBAESIhAKCh0EARAjEB8QHwwKDgEIAgwFDAkWHBIiBAEKDwoGBgEOHgwGBgEMFgwNFA8AARA6El8OIg4UEhMQGQYBDA4UEAw7FicOBRYSFgkKAh4KCgIeCgoC
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 3
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__init__.cpython-37.opt-1.pyc
79.54 KB
lrw-r--r--
2024-04-17 17:36:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.opt-2.pyc
56.92 KB
lrw-r--r--
2024-04-17 17:35:55
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
79.69 KB
lrw-r--r--
2024-04-17 17:36:18
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).