f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAABwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGNyeXB0bzsKcGtncGF0aCBjcnlwdG87CnByaW9yaXR5IDU7CmltcG9ydCBoYXNoIGhhc2ggImhhc2giOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmluaXQgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDM7CnR5cGUgPHR5cGUgMSAiSGFzaCIgPHR5cGUgLTEyPgogZnVuYyAoaCA8dHlwZSAxPikgSGFzaEZ1bmMgKCkgPHR5cGUgMT47CiBmdW5jIChoIDx0eXBlIDE+KSBTaXplICgpIDx0eXBlIC0xMT47CiBmdW5jIChoIDx0eXBlIDE+KSBOZXcgKCkgPHR5cGUgMiAiaGFzaC5IYXNoIiA8dHlwZSAzIGludGVyZmFjZSB7ID8gPHR5cGUgNCAiaW8uV3JpdGVyIiA8dHlwZSA1IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyBTdW0gKGIgPHR5cGUgNyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgOCBbXSA8dHlwZSAtMjA+PjsgUmVzZXQgKCk7IFNpemUgKCkgPHR5cGUgLTExPjsgQmxvY2tTaXplICgpIDx0eXBlIC0xMT47IH0+PjsKIGZ1bmMgKGggPHR5cGUgMT4pIEF2YWlsYWJsZSAoKSA8dHlwZSAtMTU+Owo+Owpjb25zdCBNRDQgPHR5cGUgMT4gPSAxIDsKY29uc3QgTUQ1IDx0eXBlIDE+ID0gMiA7CmNvbnN0IE1ENVNIQTEgPHR5cGUgMT4gPSA4IDsKdHlwZSA8dHlwZSA5ICJQcml2YXRlS2V5IiA8dHlwZSAxMCBpbnRlcmZhY2UgeyB9Pj47CnR5cGUgPHR5cGUgMTEgIlB1YmxpY0tleSIgPHR5cGUgMTIgaW50ZXJmYWNlIHsgfT4+Owpjb25zdCBSSVBFTUQxNjAgPHR5cGUgMT4gPSA5IDsKZnVuYyBSZWdpc3Rlckhhc2ggKGggPHR5cGUgMT4sIGYgPHR5cGUgMTMgKCkgPHR5cGUgMj4+KTsKY29uc3QgU0hBMSA8dHlwZSAxPiA9IDMgOwpjb25zdCBTSEEyMjQgPHR5cGUgMT4gPSA0IDsKY29uc3QgU0hBMjU2IDx0eXBlIDE+ID0gNSA7CmNvbnN0IFNIQTM4NCA8dHlwZSAxPiA9IDYgOwpjb25zdCBTSEEzXzIyNCA8dHlwZSAxPiA9IDEwIDsKY29uc3QgU0hBM18yNTYgPHR5cGUgMT4gPSAxMSA7CmNvbnN0IFNIQTNfMzg0IDx0eXBlIDE+ID0gMTIgOwpjb25zdCBTSEEzXzUxMiA8dHlwZSAxPiA9IDEzIDsKY29uc3QgU0hBNTEyIDx0eXBlIDE+ID0gNyA7CnR5cGUgPHR5cGUgMTQgIlNpZ25lciIgPHR5cGUgMTUgaW50ZXJmYWNlIHsgUHVibGljICgpIDx0eXBlIDExPjsgU2lnbiAocmFuZCA8dHlwZSAxNiAiaW8uUmVhZGVyIiA8dHlwZSAxNyBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDE4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgbXNnIDx0eXBlIDE5IFtdIDx0eXBlIC0yMD4+LCBvcHRzIDx0eXBlIDIwICJTaWduZXJPcHRzIiA8dHlwZSAyMSBpbnRlcmZhY2UgeyBIYXNoRnVuYyAoKSA8dHlwZSAxPjsgfT4+KSAoc2lnbmF0dXJlIDx0eXBlIDIyIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsKdHlwZSA8dHlwZSAyMD47CmNoZWNrc3VtIDQ2RUQwMERBRUQxRkRCRTdCMDI4QUE3QkZBREU5QjgwRjkxN0M5QjY7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAIEGAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAALUGAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAADcBgAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAA/AYAAAEAAAAAAAAAAAAAAAEAAAAAAAAA