f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAoCQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHVybDsKcGtncGF0aCBuZXQvdXJsOwpwcmlvcml0eSA1OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmluaXQgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQ7CnR5cGUgPHR5cGUgMSAiRXJyb3IiIDx0eXBlIDIgc3RydWN0IHsgT3AgPHR5cGUgLTE2PjsgVVJMIDx0eXBlIC0xNj47IEVyciA8dHlwZSAtMTk+OyB9PgogZnVuYyAoZSA8dHlwZSAzICo8dHlwZSAxPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgNCAiRXNjYXBlRXJyb3IiIDx0eXBlIC0xNj4KIGZ1bmMgKGUgPHR5cGUgND4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgUGFyc2UgKHJhd3VybCA8dHlwZSAtMTY+KSAodXJsIDx0eXBlIDUgKjx0eXBlIDYgIlVSTCIgPHR5cGUgNyBzdHJ1Y3QgeyBTY2hlbWUgPHR5cGUgLTE2PjsgT3BhcXVlIDx0eXBlIC0xNj47IFVzZXIgPHR5cGUgOCAqPHR5cGUgOSAiVXNlcmluZm8iIDx0eXBlIDEwIHN0cnVjdCB7IC5uZXQvdXJsLnVzZXJuYW1lIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkU2V0IDx0eXBlIC0xNT47IH0+CiBmdW5jICh1IDx0eXBlIDExICo8dHlwZSA5Pj4pIFVzZXJuYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDExPikgUGFzc3dvcmQgKCkgKD8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHUgPHR5cGUgMTE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IEhvc3QgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBSYXdRdWVyeSA8dHlwZSAtMTY+OyBGcmFnbWVudCA8dHlwZSAtMTY+OyB9PgogZnVuYyAodSA8dHlwZSAxMiAqPHR5cGUgNj4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHUgPHR5cGUgMTI+KSBJc0FicyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodSA8dHlwZSAxMj4pIFBhcnNlIChyZWYgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTI+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodSA8dHlwZSAxMj4pIFJlc29sdmVSZWZlcmVuY2UgKHJlZiA8dHlwZSAxMj4pIDx0eXBlIDEyPjsKIGZ1bmMgKHUgPHR5cGUgMTI+KSBRdWVyeSAoKSA8dHlwZSAxMyAiVmFsdWVzIiA8dHlwZSAxNCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDE1IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAodiA8dHlwZSAxMz4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDEzPikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDEzPikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDEzPikgRGVsIChrZXkgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDEzPikgRW5jb2RlICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh1IDx0eXBlIDEyPikgUmVxdWVzdFVSSSAoKSA8dHlwZSAtMTY+Owo+PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlUXVlcnkgKHF1ZXJ5IDx0eXBlIC0xNj4pIChtIDx0eXBlIDEzPiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlUmVxdWVzdFVSSSAocmF3dXJsIDx0eXBlIC0xNj4pICh1cmwgPHR5cGUgNT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBRdWVyeUVzY2FwZSAocyA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIFF1ZXJ5VW5lc2NhcGUgKHMgPHR5cGUgLTE2PikgKD8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSA2PjsKZnVuYyBVc2VyICh1c2VybmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxNiAqPHR5cGUgOT4+OwpmdW5jIFVzZXJQYXNzd29yZCAodXNlcm5hbWUgPHR5cGUgLTE2PiwgcGFzc3dvcmQgPHR5cGUgLTE2PikgPHR5cGUgMTcgKjx0eXBlIDk+PjsKdHlwZSA8dHlwZSA5PjsKdHlwZSA8dHlwZSAxMz47CmNoZWNrc3VtIDY4OUNGNTBCRkI3OTJFNThDM0U1Q0U5ODMwNkQxQ0EwNDlFRjUwNjI7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAKkIAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAN0IAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAECQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAJAkAAAEAAAAAAAAAAAAAAAEAAAAAAAAA