From: Date: July 19 2008 4:22pm Subject: bzr commit into mysql-6.0-opt branch (sergefp:2674) List-Archive: http://lists.mysql.com/commits/50078 Message-Id: <20080719142212.0ABBC22B0C5@pslp.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9wc2VyZ2V5L2Rldi9teXNxbC02LjAtb3B0LXIyLwoKIDI2NzQgU2Vy Z2V5IFBldHJ1bmlhCTIwMDgtMDctMTkgW21lcmdlXQogICAgICBteXNxbC02LjAgPC0+IG15c3Fs LTYuMC1vcHQgbWVyZ2UKbW9kaWZpZWQ6CiAgLmJ6ci1teXNxbC9kZWZhdWx0LmNvbmYKICBjb25m aWd1cmUuaW4KICBteXNxbC10ZXN0L3IvY29uc3RyYWludHMucmVzdWx0CiAgbXlzcWwtdGVzdC9y L3NwLWVycm9yLnJlc3VsdAogIG15c3FsLXRlc3Qvci9zdWJzZWxlY3QucmVzdWx0CiAgbXlzcWwt dGVzdC9yL3N1YnNlbGVjdF9ub19tYXQucmVzdWx0CiAgbXlzcWwtdGVzdC9yL3N1YnNlbGVjdF9u b19vcHRzLnJlc3VsdAogIG15c3FsLXRlc3Qvci9zdWJzZWxlY3Rfbm9fc2VtaWpvaW4ucmVzdWx0 CiAgbXlzcWwtdGVzdC9yL3N1YnNlbGVjdF9zai5yZXN1bHQKICBteXNxbC10ZXN0L3Ivc3Vic2Vs ZWN0X3NqMi5yZXN1bHQKICBteXNxbC10ZXN0L3QvY29uc3RyYWludHMudGVzdAogIG15c3FsLXRl c3QvdC9zcC1lcnJvci50ZXN0CiAgbXlzcWwtdGVzdC90L3N1YnNlbGVjdC50ZXN0CiAgbXlzcWwt dGVzdC90L3N1YnNlbGVjdF9zai50ZXN0CiAgbXlzcWwtdGVzdC90L3N1YnNlbGVjdF9zajIudGVz dAogIHNxbC9oYW5kbGVyLmNjCiAgc3FsL2hhbmRsZXIuaAogIHNxbC9teXNxbF9wcml2LmgKICBz cWwvbXlzcWxkLmNjCiAgc3FsL3NwX3Bjb250ZXh0LmNjCiAgc3FsL3NxbF9zZWxlY3QuY2MKICBz cWwvc3FsX3NlbGVjdC5oCiAgc3FsL3NxbF95YWNjLnl5CiAgc3FsL3N0cnVjdHMuaAoKPT09IG1v ZGlmaWVkIGZpbGUgJy5ienItbXlzcWwvZGVmYXVsdC5jb25mJwotLS0gYS8uYnpyLW15c3FsL2Rl ZmF1bHQuY29uZgkyMDA4LTA3LTE1IDIwOjAyOjI5ICswMDAwCisrKyBiLy5ienItbXlzcWwvZGVm YXVsdC5jb25mCTIwMDgtMDctMTkgMTQ6MjE6NTEgKzAwMDAKQEAgLTEsNSArMSw1IEBACi1bTVlT UUxdDQotdHJlZV9sb2NhdGlvbiA9IGJ6citzc2g6Ly9iay1pbnRlcm5hbC5teXNxbC5jb20vYnpy cm9vdC9zZXJ2ZXIvbXlzcWwtNi4wLWJhY2t1cC8NCi1wb3N0X2NvbW1pdF90byA9IGNvbW1pdHNA bGlzdHMubXlzcWwuY29tDQotcG9zdF9wdXNoX3RvID0gY29tbWl0c0BsaXN0cy5teXNxbC5jb20N Ci10cmVlX25hbWUgPSBteXNxbC02LjAtYmFja3VwDQorW01ZU1FMXQordHJlZV9sb2NhdGlvbiA9 IGJ6citzc2g6Ly9iay1pbnRlcm5hbC5teXNxbC5jb20vYnpycm9vdC9zZXJ2ZXIvbXlzcWwtNi4w LW9wdC8KK3Bvc3RfY29tbWl0X3RvID0gY29tbWl0c0BsaXN0cy5teXNxbC5jb20KK3Bvc3RfcHVz aF90byA9IGNvbW1pdHNAbGlzdHMubXlzcWwuY29tCit0cmVlX25hbWUgPSAibXlzcWwtNi4wLW9w dCIKCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1cmUuaW4nCi0tLSBhL2NvbmZpZ3VyZS5pbgky MDA4LTA3LTE3IDEwOjM1OjM4ICswMDAwCisrKyBiL2NvbmZpZ3VyZS5pbgkyMDA4LTA3LTE5IDE0 OjIxOjUxICswMDAwCkBAIC04MzUsNyArODM1LDcgQEAgQUNfVFlQRV9TSVpFX1QKIEFDX0hFQURF Ul9ESVJFTlQKIEFDX0hFQURFUl9TVERDCiBBQ19IRUFERVJfU1lTX1dBSVQKLUFDX0NIRUNLX0hF QURFUlMoZmNudGwuaCBmZW52LmggZmxvYXQuaCBmbG9hdGluZ3BvaW50LmggZnB1X2NvbnRyb2wu aCBcCitBQ19DSEVDS19IRUFERVJTKGZjbnRsLmggZmVudi5oIGZsb2F0LmggZmxvYXRpbmdwb2lu dC5oIGZwdV9jb250cm9sLmggaWVlZWZwLmggXAogIGxpbWl0cy5oIG1lbW9yeS5oIHB3ZC5oIHNl bGVjdC5oIFwKICBzdGRsaWIuaCBzdGRkZWYuaCBzeXMvZnB1Lmggc3lzL3N0YXQuaCBcCiAgc3Ry aW5ncy5oIHN0cmluZy5oIHN5bmNoLmggc3lzL21tYW4uaCBzeXMvc29ja2V0LmggbmV0aW5ldC9p bi5oIGFycGEvaW5ldC5oIFwKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvY29uc3Ry YWludHMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvY29uc3RyYWludHMucmVzdWx0CTIwMDYt MDItMjIgMDk6MDk6NTkgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2NvbnN0cmFpbnRzLnJlc3Vs dAkyMDA4LTA2LTEyIDE1OjIxOjQ5ICswMDAwCkBAIC0zLDcgKzMsNyBAQCBjcmVhdGUgdGFibGUg dDEgKGEgaW50IGNoZWNrIChhPjApKTsKIGluc2VydCBpbnRvIHQxIHZhbHVlcyAoMSk7CiBpbnNl cnQgaW50byB0MSB2YWx1ZXMgKDApOwogZHJvcCB0YWJsZSB0MTsKLWNyZWF0ZSB0YWJsZSB0MSAo YSBpbnQgLGIgaW50LCBjaGVjayBhPmIpOworY3JlYXRlIHRhYmxlIHQxIChhIGludCwgYiBpbnQs IGNoZWNrIChhPmIpKTsKIGluc2VydCBpbnRvIHQxIHZhbHVlcyAoMSwwKTsKIGluc2VydCBpbnRv IHQxIHZhbHVlcyAoMCwxKTsKIGRyb3AgdGFibGUgdDE7CkBAIC0yNywzICsyNywxMCBAQCB0MQlD UkVBVEUgVEFCTEUgYHQxYCAoCiAgIFVOSVFVRSBLRVkgYGtleV8yYCAoYGFgKQogKSBFTkdJTkU9 TXlJU0FNIERFRkFVTFQgQ0hBUlNFVD1sYXRpbjEKIGRyb3AgdGFibGUgdDE7Citkcm9wIHRhYmxl IGlmIGV4aXN0cyB0X2lsbGVnYWw7CitjcmVhdGUgdGFibGUgdF9pbGxlZ2FsIChhIGludCwgYiBp bnQsIGNoZWNrIGE+Yik7CitFUlJPUiA0MjAwMDogWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBT UUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNR TCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnYT5iKScg YXQgbGluZSAxCitjcmVhdGUgdGFibGUgdF9pbGxlZ2FsIChhIGludCwgYiBpbnQsIGNvbnN0cmFp bnQgYWJjIGNoZWNrIGE+Yik7CitFUlJPUiA0MjAwMDogWW91IGhhdmUgYW4gZXJyb3IgaW4geW91 ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBN eVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnYT5i KScgYXQgbGluZSAxCitjcmVhdGUgdGFibGUgdF9pbGxlZ2FsIChhIGludCwgYiBpbnQsIGNvbnN0 cmFpbnQgYWJjKTsKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBz eW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNl cnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICcpJyBhdCBsaW5l IDEKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Ivc3AtZXJyb3IucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3Ivc3AtZXJyb3IucmVzdWx0CTIwMDgtMDctMDMgMTk6NDI6MjcgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC9yL3NwLWVycm9yLnJlc3VsdAkyMDA4LTA3LTE5IDE0OjIxOjUxICsw MDAwCkBAIC0xNjI0LDYgKzE2MjQsMjkgQEAgYmVnaW4KIGRlY2xhcmUgY29udGludWUgaGFuZGxl ciBmb3Igc3Fsc3RhdGUgJzAwMDAwJyBzZXQgQHg9MDsKIGVuZCQkCiBFUlJPUiA0MjAwMDogQmFk IFNRTFNUQVRFOiAnMDAwMDAnCitkcm9wIHByb2NlZHVyZSBpZiBleGlzdHMgcHJvY18zNjUxMDsK K2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18zNjUxMCgpCitiZWdpbgorZGVjbGFyZSBzaG91bGRfYmVf aWxsZWdhbCBjb25kaXRpb24gZm9yIHNxbHN0YXRlICcwMDEyMyc7CitkZWNsYXJlIGNvbnRpbnVl IGhhbmRsZXIgZm9yIHNob3VsZF9iZV9pbGxlZ2FsIHNldCBAeD0wOworZW5kJCQKK0VSUk9SIDQy MDAwOiBCYWQgU1FMU1RBVEU6ICcwMDEyMycKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18zNjUxMCgp CitiZWdpbgorZGVjbGFyZSBjb250aW51ZSBoYW5kbGVyIGZvciBzcWxzdGF0ZSAnMDAxMjMnIHNl dCBAeD0wOworZW5kJCQKK0VSUk9SIDQyMDAwOiBCYWQgU1FMU1RBVEU6ICcwMDEyMycKK2NyZWF0 ZSBwcm9jZWR1cmUgcHJvY18zNjUxMCgpCitiZWdpbgorZGVjbGFyZSBzaG91bGRfYmVfaWxsZWdh bCBjb25kaXRpb24gZm9yIDA7CitkZWNsYXJlIGNvbnRpbnVlIGhhbmRsZXIgZm9yIHNob3VsZF9i ZV9pbGxlZ2FsIHNldCBAeD0wOworZW5kJCQKK0VSUk9SIEhZMDAwOiBJbmNvcnJlY3QgQ09ORElU SU9OIHZhbHVlOiAnMCcKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18zNjUxMCgpCitiZWdpbgorZGVj bGFyZSBjb250aW51ZSBoYW5kbGVyIGZvciAwIHNldCBAeD0wOworZW5kJCQKK0VSUk9SIEhZMDAw OiBJbmNvcnJlY3QgQ09ORElUSU9OIHZhbHVlOiAnMCcKIGRyb3AgcHJvY2VkdXJlIGlmIGV4aXN0 cyBwMTsKIHNldCBAb2xkX3JlY3Vyc2lvbl9kZXB0aCA9IEBAbWF4X3NwX3JlY3Vyc2lvbl9kZXB0 aDsKIHNldCBAQG1heF9zcF9yZWN1cnNpb25fZGVwdGggPSAyNTU7Cgo9PT0gbW9kaWZpZWQgZmls ZSAnbXlzcWwtdGVzdC9yL3N1YnNlbGVjdC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9zdWJz ZWxlY3QucmVzdWx0CTIwMDgtMDctMTAgMjM6Mjk6MjcgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9y L3N1YnNlbGVjdC5yZXN1bHQJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAwMApAQCAtMTMyMyw2ICsx MzIzLDEwIEBAIGNyZWF0ZSB0YWJsZSB0MSAoYSBpbnQsIGIgaW50LCBpbmRleCBhICgKIGNyZWF0 ZSB0YWJsZSB0MiAoYSBpbnQsIGluZGV4IGEgKGEpKTsKIGNyZWF0ZSB0YWJsZSB0MyAoYSBpbnQs IGIgaW50LCBpbmRleCBhIChhKSk7CiBpbnNlcnQgaW50byB0MSB2YWx1ZXMgKDEsMTApLCAoMiwy MCksICgzLDMwKSwgKDQsNDApOworY3JlYXRlIHRhYmxlIHQwKGEgaW50KTsKK2luc2VydCBpbnRv IHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcpLCg4KSwoOSk7CitpbnNl cnQgaW50byB0MQorc2VsZWN0IHJhbmQoKSoxMDAwMDArMjAwLHJhbmQoKSoxMDAwMDAgZnJvbSB0 MCBBLCB0MCBCLCB0MCBDLCB0MCBEOwogaW5zZXJ0IGludG8gdDIgdmFsdWVzICgyKSwgKDMpLCAo NCksICg1KTsKIGluc2VydCBpbnRvIHQzIHZhbHVlcyAoMTAsMyksICgyMCw0KSwgKDMwLDUpOwog c2VsZWN0ICogZnJvbSB0MiB3aGVyZSB0Mi5hIGluIChzZWxlY3QgYSBmcm9tIHQxKTsKQEAgLTEz NzMsNyArMTM3Nyw3IEBAIGlkCXNlbGVjdF90eXBlCXRhYmxlCXR5cGUJcG9zc2libGVfa2V5cwkK IDEJUFJJTUFSWQl0MQlyZWYJYQlhCTUJdGVzdC50Mi5hCTEwMQkxMDAuMDAJVXNpbmcgd2hlcmU7 IFVzaW5nIGluZGV4OyBGaXJzdE1hdGNoKHQyKQogV2FybmluZ3M6CiBOb3RlCTEwMDMJc2VsZWN0 IGB0ZXN0YC5gdDJgLmBhYCBBUyBgYWAgZnJvbSBgdGVzdGAuYHQyYCBzZW1pIGpvaW4gKGB0ZXN0 YC5gdDFgKSB3aGVyZSAoKGB0ZXN0YC5gdDFgLmBhYCA9IGB0ZXN0YC5gdDJgLmBhYCkgYW5kIChg dGVzdGAuYHQxYC5gYmAgPD4gMzApKQotZHJvcCB0YWJsZSB0MSwgdDIsIHQzOworZHJvcCB0YWJs ZSB0MCwgdDEsIHQyLCB0MzsKIGNyZWF0ZSB0YWJsZSB0MSAoYSBpbnQsIGIgaW50KTsKIGNyZWF0 ZSB0YWJsZSB0MiAoYSBpbnQsIGIgaW50KTsKIGNyZWF0ZSB0YWJsZSB0MyAoYSBpbnQsIGIgaW50 KTsKQEAgLTQyODcsMTUgKzQyOTEsMjAgQEAgTm90ZQkxMjc2CUZpZWxkIG9yIHJlZmVyZW5jZSAn dGVzdC50MS5hJwogTm90ZQkxMjc2CUZpZWxkIG9yIHJlZmVyZW5jZSAndGVzdC50MS5hJyBvZiBT RUxFQ1QgIzMgd2FzIHJlc29sdmVkIGluIFNFTEVDVCAjMQogTm90ZQkxMDAzCXNlbGVjdCAyIEFT IGAyYCBmcm9tIGB0ZXN0YC5gdDFgIHdoZXJlIGV4aXN0cygoc2VsZWN0IDEgQVMgYDFgIGZyb20g YHRlc3RgLmB0MmAgd2hlcmUgKGB0ZXN0YC5gdDFgLmBhYCA9IGB0ZXN0YC5gdDJgLmBhYCkpIHVu aW9uIChzZWxlY3QgMSBBUyBgMWAgZnJvbSBgdGVzdGAuYHQyYCB3aGVyZSAoYHRlc3RgLmB0MWAu YGFgID0gYHRlc3RgLmB0MmAuYGFgKSkpCiBEUk9QIFRBQkxFIHQxLHQyOworY3JlYXRlIHRhYmxl IHQwKGEgaW50KTsKK2luc2VydCBpbnRvIHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1 KSwoNiksKDcpLCg4KSwoOSk7CiBjcmVhdGUgdGFibGUgdDEoZjExIGludCwgZjEyIGludCk7CiBj cmVhdGUgdGFibGUgdDIoZjIxIGludCB1bnNpZ25lZCBub3QgbnVsbCwgZjIyIGludCwgZjIzIHZh cmNoYXIoMTApKTsKIGluc2VydCBpbnRvIHQxIHZhbHVlcygxLDEpLCgyLDIpLCAoMywgMyk7Citp bnNlcnQgaW50byB0MiAKK3NlbGVjdCAtMSAsIChAYTo9KEEuYSArIDEwICogKEIuYSArIDEwICog KEMuYSsxMCpELmEpKSkpLzUwMDAgKyAxLCBAYSAKK2Zyb20gdDAgQSwgdDAgQiwgdDAgQywgdDAg RDsKIHNldCBzZXNzaW9uIHNvcnRfYnVmZmVyX3NpemU9IDMzKjEwMjQ7CiBzZWxlY3QgY291bnQo KikgZnJvbSB0MSB3aGVyZSBmMTIgPSAKIChzZWxlY3QgZjIyIGZyb20gdDIgd2hlcmUgZjIyID0g ZjEyIG9yZGVyIGJ5IGYyMSBkZXNjLCBmMjIsIGYyMyBsaW1pdCAxKTsKIGNvdW50KCopCiAzCi1k cm9wIHRhYmxlIHQxLHQyOworZHJvcCB0YWJsZSB0MCx0MSx0MjsKIENSRUFURSBUQUJMRSB0NCAo CiBmNyB2YXJjaGFyKDMyKSBjb2xsYXRlIHV0ZjhfYmluIE5PVCBOVUxMIGRlZmF1bHQgJycsCiBm MTAgdmFyY2hhcigzMikgY29sbGF0ZSB1dGY4X2JpbiBkZWZhdWx0IE5VTEwsCgo9PT0gbW9kaWZp ZWQgZmlsZSAnbXlzcWwtdGVzdC9yL3N1YnNlbGVjdF9ub19tYXQucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3Ivc3Vic2VsZWN0X25vX21hdC5yZXN1bHQJMjAwOC0wNy0xMCAyMzoyOToyNyArMDAw MAorKysgYi9teXNxbC10ZXN0L3Ivc3Vic2VsZWN0X25vX21hdC5yZXN1bHQJMjAwOC0wNy0xOSAx NDoyMTo1MSArMDAwMApAQCAtMTMyNyw2ICsxMzI3LDEwIEBAIGNyZWF0ZSB0YWJsZSB0MSAoYSBp bnQsIGIgaW50LCBpbmRleCBhICgKIGNyZWF0ZSB0YWJsZSB0MiAoYSBpbnQsIGluZGV4IGEgKGEp KTsKIGNyZWF0ZSB0YWJsZSB0MyAoYSBpbnQsIGIgaW50LCBpbmRleCBhIChhKSk7CiBpbnNlcnQg aW50byB0MSB2YWx1ZXMgKDEsMTApLCAoMiwyMCksICgzLDMwKSwgKDQsNDApOworY3JlYXRlIHRh YmxlIHQwKGEgaW50KTsKK2luc2VydCBpbnRvIHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQp LCg1KSwoNiksKDcpLCg4KSwoOSk7CitpbnNlcnQgaW50byB0MQorc2VsZWN0IHJhbmQoKSoxMDAw MDArMjAwLHJhbmQoKSoxMDAwMDAgZnJvbSB0MCBBLCB0MCBCLCB0MCBDLCB0MCBEOwogaW5zZXJ0 IGludG8gdDIgdmFsdWVzICgyKSwgKDMpLCAoNCksICg1KTsKIGluc2VydCBpbnRvIHQzIHZhbHVl cyAoMTAsMyksICgyMCw0KSwgKDMwLDUpOwogc2VsZWN0ICogZnJvbSB0MiB3aGVyZSB0Mi5hIGlu IChzZWxlY3QgYSBmcm9tIHQxKTsKQEAgLTEzNzcsNyArMTM4MSw3IEBAIGlkCXNlbGVjdF90eXBl CXRhYmxlCXR5cGUJcG9zc2libGVfa2V5cwkKIDEJUFJJTUFSWQl0MQlyZWYJYQlhCTUJdGVzdC50 Mi5hCTEwMQkxMDAuMDAJVXNpbmcgd2hlcmU7IFVzaW5nIGluZGV4OyBGaXJzdE1hdGNoKHQyKQog V2FybmluZ3M6CiBOb3RlCTEwMDMJc2VsZWN0IGB0ZXN0YC5gdDJgLmBhYCBBUyBgYWAgZnJvbSBg dGVzdGAuYHQyYCBzZW1pIGpvaW4gKGB0ZXN0YC5gdDFgKSB3aGVyZSAoKGB0ZXN0YC5gdDFgLmBh YCA9IGB0ZXN0YC5gdDJgLmBhYCkgYW5kIChgdGVzdGAuYHQxYC5gYmAgPD4gMzApKQotZHJvcCB0 YWJsZSB0MSwgdDIsIHQzOworZHJvcCB0YWJsZSB0MCwgdDEsIHQyLCB0MzsKIGNyZWF0ZSB0YWJs ZSB0MSAoYSBpbnQsIGIgaW50KTsKIGNyZWF0ZSB0YWJsZSB0MiAoYSBpbnQsIGIgaW50KTsKIGNy ZWF0ZSB0YWJsZSB0MyAoYSBpbnQsIGIgaW50KTsKQEAgLTQyOTEsMTUgKzQyOTUsMjAgQEAgTm90 ZQkxMjc2CUZpZWxkIG9yIHJlZmVyZW5jZSAndGVzdC50MS5hJwogTm90ZQkxMjc2CUZpZWxkIG9y IHJlZmVyZW5jZSAndGVzdC50MS5hJyBvZiBTRUxFQ1QgIzMgd2FzIHJlc29sdmVkIGluIFNFTEVD VCAjMQogTm90ZQkxMDAzCXNlbGVjdCAyIEFTIGAyYCBmcm9tIGB0ZXN0YC5gdDFgIHdoZXJlIGV4 aXN0cygoc2VsZWN0IDEgQVMgYDFgIGZyb20gYHRlc3RgLmB0MmAgd2hlcmUgKGB0ZXN0YC5gdDFg LmBhYCA9IGB0ZXN0YC5gdDJgLmBhYCkpIHVuaW9uIChzZWxlY3QgMSBBUyBgMWAgZnJvbSBgdGVz dGAuYHQyYCB3aGVyZSAoYHRlc3RgLmB0MWAuYGFgID0gYHRlc3RgLmB0MmAuYGFgKSkpCiBEUk9Q IFRBQkxFIHQxLHQyOworY3JlYXRlIHRhYmxlIHQwKGEgaW50KTsKK2luc2VydCBpbnRvIHQwIHZh bHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcpLCg4KSwoOSk7CiBjcmVhdGUgdGFi bGUgdDEoZjExIGludCwgZjEyIGludCk7CiBjcmVhdGUgdGFibGUgdDIoZjIxIGludCB1bnNpZ25l ZCBub3QgbnVsbCwgZjIyIGludCwgZjIzIHZhcmNoYXIoMTApKTsKIGluc2VydCBpbnRvIHQxIHZh bHVlcygxLDEpLCgyLDIpLCAoMywgMyk7CitpbnNlcnQgaW50byB0MiAKK3NlbGVjdCAtMSAsIChA YTo9KEEuYSArIDEwICogKEIuYSArIDEwICogKEMuYSsxMCpELmEpKSkpLzUwMDAgKyAxLCBAYSAK K2Zyb20gdDAgQSwgdDAgQiwgdDAgQywgdDAgRDsKIHNldCBzZXNzaW9uIHNvcnRfYnVmZmVyX3Np emU9IDMzKjEwMjQ7CiBzZWxlY3QgY291bnQoKikgZnJvbSB0MSB3aGVyZSBmMTIgPSAKIChzZWxl Y3QgZjIyIGZyb20gdDIgd2hlcmUgZjIyID0gZjEyIG9yZGVyIGJ5IGYyMSBkZXNjLCBmMjIsIGYy MyBsaW1pdCAxKTsKIGNvdW50KCopCiAzCi1kcm9wIHRhYmxlIHQxLHQyOworZHJvcCB0YWJsZSB0 MCx0MSx0MjsKIENSRUFURSBUQUJMRSB0NCAoCiBmNyB2YXJjaGFyKDMyKSBjb2xsYXRlIHV0Zjhf YmluIE5PVCBOVUxMIGRlZmF1bHQgJycsCiBmMTAgdmFyY2hhcigzMikgY29sbGF0ZSB1dGY4X2Jp biBkZWZhdWx0IE5VTEwsCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL3N1YnNlbGVj dF9ub19vcHRzLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3N1YnNlbGVjdF9ub19vcHRzLnJl c3VsdAkyMDA4LTA3LTEwIDIzOjI5OjI3ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9zdWJzZWxl Y3Rfbm9fb3B0cy5yZXN1bHQJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAwMApAQCAtMTMyNyw2ICsx MzI3LDEwIEBAIGNyZWF0ZSB0YWJsZSB0MSAoYSBpbnQsIGIgaW50LCBpbmRleCBhICgKIGNyZWF0 ZSB0YWJsZSB0MiAoYSBpbnQsIGluZGV4IGEgKGEpKTsKIGNyZWF0ZSB0YWJsZSB0MyAoYSBpbnQs IGIgaW50LCBpbmRleCBhIChhKSk7CiBpbnNlcnQgaW50byB0MSB2YWx1ZXMgKDEsMTApLCAoMiwy MCksICgzLDMwKSwgKDQsNDApOworY3JlYXRlIHRhYmxlIHQwKGEgaW50KTsKK2luc2VydCBpbnRv IHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcpLCg4KSwoOSk7CitpbnNl cnQgaW50byB0MQorc2VsZWN0IHJhbmQoKSoxMDAwMDArMjAwLHJhbmQoKSoxMDAwMDAgZnJvbSB0 MCBBLCB0MCBCLCB0MCBDLCB0MCBEOwogaW5zZXJ0IGludG8gdDIgdmFsdWVzICgyKSwgKDMpLCAo NCksICg1KTsKIGluc2VydCBpbnRvIHQzIHZhbHVlcyAoMTAsMyksICgyMCw0KSwgKDMwLDUpOwog c2VsZWN0ICogZnJvbSB0MiB3aGVyZSB0Mi5hIGluIChzZWxlY3QgYSBmcm9tIHQxKTsKQEAgLTEz NzcsNyArMTM4MSw3IEBAIGlkCXNlbGVjdF90eXBlCXRhYmxlCXR5cGUJcG9zc2libGVfa2V5cwkK IDIJREVQRU5ERU5UIFNVQlFVRVJZCXQxCWluZGV4X3N1YnF1ZXJ5CWEJYQk1CWZ1bmMJMTAwMQkx MDAuMDAJVXNpbmcgaW5kZXg7IFVzaW5nIHdoZXJlCiBXYXJuaW5nczoKIE5vdGUJMTAwMwlzZWxl Y3QgYHRlc3RgLmB0MmAuYGFgIEFTIGBhYCBmcm9tIGB0ZXN0YC5gdDJgIHdoZXJlIDxpbl9vcHRp bWl6ZXI+KGB0ZXN0YC5gdDJgLmBhYCw8ZXhpc3RzPig8aW5kZXhfbG9va3VwPig8Y2FjaGU+KGB0 ZXN0YC5gdDJgLmBhYCkgaW4gdDEgb24gYSB3aGVyZSAoKGB0ZXN0YC5gdDFgLmBiYCA8PiAzMCkg YW5kICg8Y2FjaGU+KGB0ZXN0YC5gdDJgLmBhYCkgPSBgdGVzdGAuYHQxYC5gYWApKSkpKQotZHJv cCB0YWJsZSB0MSwgdDIsIHQzOworZHJvcCB0YWJsZSB0MCwgdDEsIHQyLCB0MzsKIGNyZWF0ZSB0 YWJsZSB0MSAoYSBpbnQsIGIgaW50KTsKIGNyZWF0ZSB0YWJsZSB0MiAoYSBpbnQsIGIgaW50KTsK IGNyZWF0ZSB0YWJsZSB0MyAoYSBpbnQsIGIgaW50KTsKQEAgLTQyOTEsMTUgKzQyOTUsMjAgQEAg Tm90ZQkxMjc2CUZpZWxkIG9yIHJlZmVyZW5jZSAndGVzdC50MS5hJwogTm90ZQkxMjc2CUZpZWxk IG9yIHJlZmVyZW5jZSAndGVzdC50MS5hJyBvZiBTRUxFQ1QgIzMgd2FzIHJlc29sdmVkIGluIFNF TEVDVCAjMQogTm90ZQkxMDAzCXNlbGVjdCAyIEFTIGAyYCBmcm9tIGB0ZXN0YC5gdDFgIHdoZXJl IGV4aXN0cygoc2VsZWN0IDEgQVMgYDFgIGZyb20gYHRlc3RgLmB0MmAgd2hlcmUgKGB0ZXN0YC5g dDFgLmBhYCA9IGB0ZXN0YC5gdDJgLmBhYCkpIHVuaW9uIChzZWxlY3QgMSBBUyBgMWAgZnJvbSBg dGVzdGAuYHQyYCB3aGVyZSAoYHRlc3RgLmB0MWAuYGFgID0gYHRlc3RgLmB0MmAuYGFgKSkpCiBE Uk9QIFRBQkxFIHQxLHQyOworY3JlYXRlIHRhYmxlIHQwKGEgaW50KTsKK2luc2VydCBpbnRvIHQw IHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcpLCg4KSwoOSk7CiBjcmVhdGUg dGFibGUgdDEoZjExIGludCwgZjEyIGludCk7CiBjcmVhdGUgdGFibGUgdDIoZjIxIGludCB1bnNp Z25lZCBub3QgbnVsbCwgZjIyIGludCwgZjIzIHZhcmNoYXIoMTApKTsKIGluc2VydCBpbnRvIHQx IHZhbHVlcygxLDEpLCgyLDIpLCAoMywgMyk7CitpbnNlcnQgaW50byB0MiAKK3NlbGVjdCAtMSAs IChAYTo9KEEuYSArIDEwICogKEIuYSArIDEwICogKEMuYSsxMCpELmEpKSkpLzUwMDAgKyAxLCBA YSAKK2Zyb20gdDAgQSwgdDAgQiwgdDAgQywgdDAgRDsKIHNldCBzZXNzaW9uIHNvcnRfYnVmZmVy X3NpemU9IDMzKjEwMjQ7CiBzZWxlY3QgY291bnQoKikgZnJvbSB0MSB3aGVyZSBmMTIgPSAKIChz ZWxlY3QgZjIyIGZyb20gdDIgd2hlcmUgZjIyID0gZjEyIG9yZGVyIGJ5IGYyMSBkZXNjLCBmMjIs IGYyMyBsaW1pdCAxKTsKIGNvdW50KCopCiAzCi1kcm9wIHRhYmxlIHQxLHQyOworZHJvcCB0YWJs ZSB0MCx0MSx0MjsKIENSRUFURSBUQUJMRSB0NCAoCiBmNyB2YXJjaGFyKDMyKSBjb2xsYXRlIHV0 ZjhfYmluIE5PVCBOVUxMIGRlZmF1bHQgJycsCiBmMTAgdmFyY2hhcigzMikgY29sbGF0ZSB1dGY4 X2JpbiBkZWZhdWx0IE5VTEwsCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL3N1YnNl bGVjdF9ub19zZW1pam9pbi5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9zdWJzZWxlY3Rfbm9f c2VtaWpvaW4ucmVzdWx0CTIwMDgtMDctMTAgMjM6Mjk6MjcgKzAwMDAKKysrIGIvbXlzcWwtdGVz dC9yL3N1YnNlbGVjdF9ub19zZW1pam9pbi5yZXN1bHQJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAw MApAQCAtMTMyNyw2ICsxMzI3LDEwIEBAIGNyZWF0ZSB0YWJsZSB0MSAoYSBpbnQsIGIgaW50LCBp bmRleCBhICgKIGNyZWF0ZSB0YWJsZSB0MiAoYSBpbnQsIGluZGV4IGEgKGEpKTsKIGNyZWF0ZSB0 YWJsZSB0MyAoYSBpbnQsIGIgaW50LCBpbmRleCBhIChhKSk7CiBpbnNlcnQgaW50byB0MSB2YWx1 ZXMgKDEsMTApLCAoMiwyMCksICgzLDMwKSwgKDQsNDApOworY3JlYXRlIHRhYmxlIHQwKGEgaW50 KTsKK2luc2VydCBpbnRvIHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcp LCg4KSwoOSk7CitpbnNlcnQgaW50byB0MQorc2VsZWN0IHJhbmQoKSoxMDAwMDArMjAwLHJhbmQo KSoxMDAwMDAgZnJvbSB0MCBBLCB0MCBCLCB0MCBDLCB0MCBEOwogaW5zZXJ0IGludG8gdDIgdmFs dWVzICgyKSwgKDMpLCAoNCksICg1KTsKIGluc2VydCBpbnRvIHQzIHZhbHVlcyAoMTAsMyksICgy MCw0KSwgKDMwLDUpOwogc2VsZWN0ICogZnJvbSB0MiB3aGVyZSB0Mi5hIGluIChzZWxlY3QgYSBm cm9tIHQxKTsKQEAgLTEzNzcsNyArMTM4MSw3IEBAIGlkCXNlbGVjdF90eXBlCXRhYmxlCXR5cGUJ cG9zc2libGVfa2V5cwkKIDIJU1VCUVVFUlkJdDEJaW5kZXgJTlVMTAlhCTEwCU5VTEwJMTAwMDUJ MTAwLjAwCVVzaW5nIHdoZXJlOyBVc2luZyBpbmRleAogV2FybmluZ3M6CiBOb3RlCTEwMDMJc2Vs ZWN0IGB0ZXN0YC5gdDJgLmBhYCBBUyBgYWAgZnJvbSBgdGVzdGAuYHQyYCB3aGVyZSA8aW5fb3B0 aW1pemVyPihgdGVzdGAuYHQyYC5gYWAsYHRlc3RgLmB0MmAuYGFgIGluICggPG1hdGVyaWFsaXpl PiAoc2VsZWN0IGB0ZXN0YC5gdDFgLmBhYCBBUyBgYWAgZnJvbSBgdGVzdGAuYHQxYCB3aGVyZSAo YHRlc3RgLmB0MWAuYGJgIDw+IDMwKSApLCA8cHJpbWFyeV9pbmRleF9sb29rdXA+KGB0ZXN0YC5g dDJgLmBhYCBpbiA8dGVtcG9yYXJ5IHRhYmxlPiBvbiBkaXN0aW5jdF9rZXkpKSkKLWRyb3AgdGFi bGUgdDEsIHQyLCB0MzsKK2Ryb3AgdGFibGUgdDAsIHQxLCB0MiwgdDM7CiBjcmVhdGUgdGFibGUg dDEgKGEgaW50LCBiIGludCk7CiBjcmVhdGUgdGFibGUgdDIgKGEgaW50LCBiIGludCk7CiBjcmVh dGUgdGFibGUgdDMgKGEgaW50LCBiIGludCk7CkBAIC00MjkxLDE1ICs0Mjk1LDIwIEBAIE5vdGUJ MTI3NglGaWVsZCBvciByZWZlcmVuY2UgJ3Rlc3QudDEuYScKIE5vdGUJMTI3NglGaWVsZCBvciBy ZWZlcmVuY2UgJ3Rlc3QudDEuYScgb2YgU0VMRUNUICMzIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1Qg IzEKIE5vdGUJMTAwMwlzZWxlY3QgMiBBUyBgMmAgZnJvbSBgdGVzdGAuYHQxYCB3aGVyZSBleGlz dHMoKHNlbGVjdCAxIEFTIGAxYCBmcm9tIGB0ZXN0YC5gdDJgIHdoZXJlIChgdGVzdGAuYHQxYC5g YWAgPSBgdGVzdGAuYHQyYC5gYWApKSB1bmlvbiAoc2VsZWN0IDEgQVMgYDFgIGZyb20gYHRlc3Rg LmB0MmAgd2hlcmUgKGB0ZXN0YC5gdDFgLmBhYCA9IGB0ZXN0YC5gdDJgLmBhYCkpKQogRFJPUCBU QUJMRSB0MSx0MjsKK2NyZWF0ZSB0YWJsZSB0MChhIGludCk7CitpbnNlcnQgaW50byB0MCB2YWx1 ZXMgKDApLCgxKSwoMiksKDMpLCg0KSwoNSksKDYpLCg3KSwoOCksKDkpOwogY3JlYXRlIHRhYmxl IHQxKGYxMSBpbnQsIGYxMiBpbnQpOwogY3JlYXRlIHRhYmxlIHQyKGYyMSBpbnQgdW5zaWduZWQg bm90IG51bGwsIGYyMiBpbnQsIGYyMyB2YXJjaGFyKDEwKSk7CiBpbnNlcnQgaW50byB0MSB2YWx1 ZXMoMSwxKSwoMiwyKSwgKDMsIDMpOworaW5zZXJ0IGludG8gdDIgCitzZWxlY3QgLTEgLCAoQGE6 PShBLmEgKyAxMCAqIChCLmEgKyAxMCAqIChDLmErMTAqRC5hKSkpKS81MDAwICsgMSwgQGEgCitm cm9tIHQwIEEsIHQwIEIsIHQwIEMsIHQwIEQ7CiBzZXQgc2Vzc2lvbiBzb3J0X2J1ZmZlcl9zaXpl PSAzMyoxMDI0Owogc2VsZWN0IGNvdW50KCopIGZyb20gdDEgd2hlcmUgZjEyID0gCiAoc2VsZWN0 IGYyMiBmcm9tIHQyIHdoZXJlIGYyMiA9IGYxMiBvcmRlciBieSBmMjEgZGVzYywgZjIyLCBmMjMg bGltaXQgMSk7CiBjb3VudCgqKQogMwotZHJvcCB0YWJsZSB0MSx0MjsKK2Ryb3AgdGFibGUgdDAs dDEsdDI7CiBDUkVBVEUgVEFCTEUgdDQgKAogZjcgdmFyY2hhcigzMikgY29sbGF0ZSB1dGY4X2Jp biBOT1QgTlVMTCBkZWZhdWx0ICcnLAogZjEwIHZhcmNoYXIoMzIpIGNvbGxhdGUgdXRmOF9iaW4g ZGVmYXVsdCBOVUxMLAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9zdWJzZWxlY3Rf c2oucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Ivc3Vic2VsZWN0X3NqLnJlc3VsdAkyMDA4LTA1 LTAxIDAzOjUzOjM2ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9zdWJzZWxlY3Rfc2oucmVzdWx0 CTIwMDgtMDYtMTEgMjM6MTY6NTMgKzAwMDAKQEAgLTE5Nyw1ICsxOTcsNDQgQEAgaWQJc2VsZWN0 X3R5cGUJdGFibGUJdHlwZQlwb3NzaWJsZV9rZXlzCQogMQlQUklNQVJZCXQxCUFMTAlOVUxMCU5V TEwJTlVMTAlOVUxMCTEwMwkxMDAuMDAJVXNpbmcgd2hlcmU7IFVzaW5nIGpvaW4gYnVmZmVyCiBX YXJuaW5nczoKIE5vdGUJMTAwMwlzZWxlY3QgYHRlc3RgLmB0MWAuYGFgIEFTIGBhYCxgdGVzdGAu YHQxYC5gYmAgQVMgYGJgIGZyb20gYHRlc3RgLmB0MTBgIGpvaW4gYHRlc3RgLmB0MWAgd2hlcmUg KChgdGVzdGAuYHQxYC5gYWAgPSBgdGVzdGAuYHQxMGAuYHBrYCkgYW5kIChgdGVzdGAuYHQxMGAu YHBrYCA8IDMpKQorCitCVUcjMzcxMjAgb3B0aW1pemVyX3N3aXRjaCBhbGxvd2FibGUgdmFsdWVz IG5vdCBhY2NvcmRpbmcgdG8gc3BlY2lmaWNhdGlvbgorCitzZWxlY3QgQEBvcHRpbWl6ZXJfc3dp dGNoOworQEBvcHRpbWl6ZXJfc3dpdGNoCisKK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19tYXRl cmlhbGl6YXRpb24nOworc2VsZWN0IEBAb3B0aW1pemVyX3N3aXRjaDsKK0BAb3B0aW1pemVyX3N3 aXRjaAorbm9fbWF0ZXJpYWxpemF0aW9uCitzZXQgb3B0aW1pemVyX3N3aXRjaD0nbm9fc2VtaWpv aW4nOworc2VsZWN0IEBAb3B0aW1pemVyX3N3aXRjaDsKK0BAb3B0aW1pemVyX3N3aXRjaAorbm9f c2VtaWpvaW4KK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19sb29zZXNjYW4nOworc2VsZWN0IEBA b3B0aW1pemVyX3N3aXRjaDsKK0BAb3B0aW1pemVyX3N3aXRjaAorbm9fbG9vc2VzY2FuCitzZXQg b3B0aW1pemVyX3N3aXRjaD0nbm9fc2VtaWpvaW4sbm9fbWF0ZXJpYWxpemF0aW9uJzsKK3NlbGVj dCBAQG9wdGltaXplcl9zd2l0Y2g7CitAQG9wdGltaXplcl9zd2l0Y2gKK25vX21hdGVyaWFsaXph dGlvbixub19zZW1pam9pbgorc2V0IG9wdGltaXplcl9zd2l0Y2g9J25vX21hdGVyaWFsaXphdGlv bixub19zZW1pam9pbic7CitzZWxlY3QgQEBvcHRpbWl6ZXJfc3dpdGNoOworQEBvcHRpbWl6ZXJf c3dpdGNoCitub19tYXRlcmlhbGl6YXRpb24sbm9fc2VtaWpvaW4KK3NldCBvcHRpbWl6ZXJfc3dp dGNoPSdub19zZW1pam9pbixub19tYXRlcmlhbGl6YXRpb24sbm9fbG9vc2VzY2FuJzsKK3NlbGVj dCBAQG9wdGltaXplcl9zd2l0Y2g7CitAQG9wdGltaXplcl9zd2l0Y2gKK25vX21hdGVyaWFsaXph dGlvbixub19zZW1pam9pbixub19sb29zZXNjYW4KK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19z ZW1pam9pbixub19sb29zZXNjYW4nOworc2VsZWN0IEBAb3B0aW1pemVyX3N3aXRjaDsKK0BAb3B0 aW1pemVyX3N3aXRjaAorbm9fc2VtaWpvaW4sbm9fbG9vc2VzY2FuCitzZXQgb3B0aW1pemVyX3N3 aXRjaD0nbm9fbWF0ZXJpYWxpemF0aW9uLG5vX2xvb3Nlc2Nhbic7CitzZWxlY3QgQEBvcHRpbWl6 ZXJfc3dpdGNoOworQEBvcHRpbWl6ZXJfc3dpdGNoCitub19tYXRlcmlhbGl6YXRpb24sbm9fbG9v c2VzY2FuCitzZXQgb3B0aW1pemVyX3N3aXRjaD0nJzsKIGRyb3AgdGFibGUgdDAsIHQxOwogZHJv cCB0YWJsZSB0MTAsIHQxMSwgdDEyOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9z dWJzZWxlY3Rfc2oyLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3N1YnNlbGVjdF9zajIucmVz dWx0CTIwMDgtMDUtMDMgMDg6Mjc6NDcgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL3N1YnNlbGVj dF9zajIucmVzdWx0CTIwMDgtMDUtMzEgMDc6MTQ6NTcgKzAwMDAKQEAgLTY1NCwzICs2NTQsMzAg QEAgY2FsbCBwMSgpOwogYQogZHJvcCBwcm9jZWR1cmUgcDE7CiBkcm9wIHRhYmxlIHQxOworY3Jl YXRlIHRhYmxlIHQwIChhIGludCk7CitpbnNlcnQgaW50byB0MCB2YWx1ZXMgKDApLCgxKSwoMiks KDMpLCg0KSwoNSksKDYpLCg3KSwoOCksKDkpOworY3JlYXRlIHRhYmxlIHQxIChhIGludCkgYXMg c2VsZWN0IEEuYSArIDEwICooQi5hICsgMTAqQy5hKSBhcyBhICBmcm9tIHQwIEEsIHQwIEIsIHQw IEM7CitjcmVhdGUgdGFibGUgdDIgKGlkIGludCwgYSBpbnQsIHByaW1hcnkga2V5KGlkKSwga2V5 KGEpKSBhcyBzZWxlY3QgYSBhcyBpZCwgYSBhcyBhICBmcm9tIHQxOworc2hvdyBjcmVhdGUgdGFi bGUgdDI7CitUYWJsZQlDcmVhdGUgVGFibGUKK3QyCUNSRUFURSBUQUJMRSBgdDJgICgKKyAgYGlk YCBpbnQoMTEpIE5PVCBOVUxMIERFRkFVTFQgJzAnLAorICBgYWAgaW50KDExKSBERUZBVUxUIE5V TEwsCisgIFBSSU1BUlkgS0VZIChgaWRgKSwKKyAgS0VZIGBhYCAoYGFgKQorKSBFTkdJTkU9TXlJ U0FNIERFRkFVTFQgQ0hBUlNFVD1sYXRpbjEKK3NldCBAYT0wOworY3JlYXRlIHRhYmxlIHQzIGFz IHNlbGVjdCAqIGZyb20gdDIgbGltaXQgMDsKK2luc2VydCBpbnRvIHQzIHNlbGVjdCBAYTo9QGEr MSwgdDIuYSBmcm9tIHQyLCB0MDsKK2luc2VydCBpbnRvIHQzIHNlbGVjdCBAYTo9QGErMSwgdDIu YSBmcm9tIHQyLCB0MDsKK2luc2VydCBpbnRvIHQzIHNlbGVjdCBAYTo9QGErMSwgdDIuYSBmcm9t IHQyLCB0MDsKK2FsdGVyIHRhYmxlIHQzIGFkZCBwcmltYXJ5IGtleShpZCksIGFkZCBrZXkoYSk7 CitUaGUgZm9sbG93aW5nIG11c3QgdXNlIGxvb3NlIGluZGV4IHNjYW4gb3ZlciB0Mywga2V5IGE6 CitleHBsYWluIHNlbGVjdCBjb3VudChhKSBmcm9tIHQyIHdoZXJlIGEgaW4gKCBTRUxFQ1QgIGEg RlJPTSB0Myk7CitpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBvc3NpYmxlX2tleXMJa2V5CWtl eV9sZW4JcmVmCXJvd3MJRXh0cmEKKzEJUFJJTUFSWQl0MwlpbmRleAlhCWEJNQlOVUxMCTMwMDAw CVVzaW5nIGluZGV4OyBMb29zZVNjYW4KKzEJUFJJTUFSWQl0MglyZWYJYQlhCTUJdGVzdC50My5h CTEJVXNpbmcgaW5kZXgKK3NlbGVjdCBjb3VudChhKSBmcm9tIHQyIHdoZXJlIGEgaW4gKCBTRUxF Q1QgIGEgRlJPTSB0Myk7Citjb3VudChhKQorMTAwMAorZHJvcCB0YWJsZSB0MCx0MSx0Mix0MzsK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvY29uc3RyYWludHMudGVzdCcKLS0tIGEv bXlzcWwtdGVzdC90L2NvbnN0cmFpbnRzLnRlc3QJMjAwNS0wNy0yOCAwMDoyMjo0NyArMDAwMAor KysgYi9teXNxbC10ZXN0L3QvY29uc3RyYWludHMudGVzdAkyMDA4LTA2LTEyIDE1OjIxOjQ5ICsw MDAwCkBAIC0xMCw3ICsxMCw3IEBAIGNyZWF0ZSB0YWJsZSB0MSAoYSBpbnQgY2hlY2sgKGE+MCkp OwogaW5zZXJ0IGludG8gdDEgdmFsdWVzICgxKTsKIGluc2VydCBpbnRvIHQxIHZhbHVlcyAoMCk7 CiBkcm9wIHRhYmxlIHQxOwotY3JlYXRlIHRhYmxlIHQxIChhIGludCAsYiBpbnQsIGNoZWNrIGE+ Yik7CitjcmVhdGUgdGFibGUgdDEgKGEgaW50LCBiIGludCwgY2hlY2sgKGE+YikpOwogaW5zZXJ0 IGludG8gdDEgdmFsdWVzICgxLDApOwogaW5zZXJ0IGludG8gdDEgdmFsdWVzICgwLDEpOwogZHJv cCB0YWJsZSB0MTsKQEAgLTI5LDMgKzI5LDIxIEBAIHNob3cgY3JlYXRlIHRhYmxlIHQxOwogZHJv cCB0YWJsZSB0MTsKIAogIyBFbmQgb2YgNC4xIHRlc3RzCisKKyMKKyMgQnVnIzM1NTc4IChQYXJz ZXIgYWxsb3dzIHVzZWxlc3MvaWxsZWdhbCBDUkVBVEUgVEFCTEUgc3ludGF4KQorIworCistLWRp c2FibGVfd2FybmluZ3MKK2Ryb3AgdGFibGUgaWYgZXhpc3RzIHRfaWxsZWdhbDsKKy0tZW5hYmxl X3dhcm5pbmdzCisKKy0tZXJyb3IgRVJfUEFSU0VfRVJST1IKK2NyZWF0ZSB0YWJsZSB0X2lsbGVn YWwgKGEgaW50LCBiIGludCwgY2hlY2sgYT5iKTsKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgor Y3JlYXRlIHRhYmxlIHRfaWxsZWdhbCAoYSBpbnQsIGIgaW50LCBjb25zdHJhaW50IGFiYyBjaGVj ayBhPmIpOworCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgdGFibGUgdF9pbGxlZ2Fs IChhIGludCwgYiBpbnQsIGNvbnN0cmFpbnQgYWJjKTsKKwoKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3QvdC9zcC1lcnJvci50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3Qvc3AtZXJyb3IudGVz dAkyMDA4LTA3LTAzIDE5OjQyOjI3ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9zcC1lcnJvci50 ZXN0CTIwMDgtMDctMTkgMTQ6MjE6NTEgKzAwMDAKQEAgLTIzOTIsNiArMjM5Miw0MiBAQCBlbmQk JAogCiBkZWxpbWl0ZXIgOyQkCiAKKyMKKyMgQnVnIzM2NTEwIChTdG9yZWQgUHJvY2VkdXJlczog bXlzcWxfZXJyb3JfY29kZSAwIHNob3VsZCBiZSBpbGxlZ2FsKQorIworCistLWRpc2FibGVfd2Fy bmluZ3MKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0cyBwcm9jXzM2NTEwOworLS1lbmFibGVfd2Fy bmluZ3MKKworZGVsaW1pdGVyICQkOworCistLWVycm9yIEVSX1NQX0JBRF9TUUxTVEFURQorY3Jl YXRlIHByb2NlZHVyZSBwcm9jXzM2NTEwKCkKK2JlZ2luCisgIGRlY2xhcmUgc2hvdWxkX2JlX2ls bGVnYWwgY29uZGl0aW9uIGZvciBzcWxzdGF0ZSAnMDAxMjMnOworICBkZWNsYXJlIGNvbnRpbnVl IGhhbmRsZXIgZm9yIHNob3VsZF9iZV9pbGxlZ2FsIHNldCBAeD0wOworZW5kJCQKKworLS1lcnJv ciBFUl9TUF9CQURfU1FMU1RBVEUKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18zNjUxMCgpCitiZWdp bgorICBkZWNsYXJlIGNvbnRpbnVlIGhhbmRsZXIgZm9yIHNxbHN0YXRlICcwMDEyMycgc2V0IEB4 PTA7CitlbmQkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFCitjcmVhdGUgcHJvY2VkdXJlIHBy b2NfMzY1MTAoKQorYmVnaW4KKyAgZGVjbGFyZSBzaG91bGRfYmVfaWxsZWdhbCBjb25kaXRpb24g Zm9yIDA7CisgIGRlY2xhcmUgY29udGludWUgaGFuZGxlciBmb3Igc2hvdWxkX2JlX2lsbGVnYWwg c2V0IEB4PTA7CitlbmQkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFCitjcmVhdGUgcHJvY2Vk dXJlIHByb2NfMzY1MTAoKQorYmVnaW4KKyAgZGVjbGFyZSBjb250aW51ZSBoYW5kbGVyIGZvciAw IHNldCBAeD0wOworZW5kJCQKK2RlbGltaXRlciA7JCQKIAogIwogIyBCdWcjMTUxOTI6ICJmYXRh bCBlcnJvcnMiIGFyZSBjYXVnaHQgYnkgaGFuZGxlcnMgaW4gc3RvcmVkIHByb2NlZHVyZXMKCj09 PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Qvc3Vic2VsZWN0LnRlc3QnCi0tLSBhL215c3Fs LXRlc3QvdC9zdWJzZWxlY3QudGVzdAkyMDA4LTA3LTEwIDIzOjI5OjI3ICswMDAwCisrKyBiL215 c3FsLXRlc3QvdC9zdWJzZWxlY3QudGVzdAkyMDA4LTA3LTE5IDE0OjIxOjUxICswMDAwCkBAIC04 MTAsMTUgKzgxMCwxMiBAQCBjcmVhdGUgdGFibGUgdDEgKGEgaW50LCBiIGludCwgaW5kZXggYSAo CiBjcmVhdGUgdGFibGUgdDIgKGEgaW50LCBpbmRleCBhIChhKSk7CiBjcmVhdGUgdGFibGUgdDMg KGEgaW50LCBiIGludCwgaW5kZXggYSAoYSkpOwogaW5zZXJ0IGludG8gdDEgdmFsdWVzICgxLDEw KSwgKDIsMjApLCAoMywzMCksICg0LDQwKTsKLWRpc2FibGVfcXVlcnlfbG9nOwogIyBtYWtpbmcg dGFibGUgbGFyZ2UgZW5vdWdoCi1sZXQgJDEgPSAxMDAwMDsKLXdoaWxlICgkMSkKLSB7Ci0gIGV2 YWwgaW5zZXJ0IGludG8gdDEgdmFsdWVzIChyYW5kKCkqMTAwMDAwKzIwMCxyYW5kKCkqMTAwMDAw KTsgCi0gIGRlYyAkMTsKLSB9Ci1lbmFibGVfcXVlcnlfbG9nOworY3JlYXRlIHRhYmxlIHQwKGEg aW50KTsKK2luc2VydCBpbnRvIHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiks KDcpLCg4KSwoOSk7CitpbnNlcnQgaW50byB0MQorc2VsZWN0IHJhbmQoKSoxMDAwMDArMjAwLHJh bmQoKSoxMDAwMDAgZnJvbSB0MCBBLCB0MCBCLCB0MCBDLCB0MCBEOworCiBpbnNlcnQgaW50byB0 MiB2YWx1ZXMgKDIpLCAoMyksICg0KSwgKDUpOwogaW5zZXJ0IGludG8gdDMgdmFsdWVzICgxMCwz KSwgKDIwLDQpLCAoMzAsNSk7CiBzZWxlY3QgKiBmcm9tIHQyIHdoZXJlIHQyLmEgaW4gKHNlbGVj dCBhIGZyb20gdDEpOwpAQCAtODMxLDcgKzgyOCw3IEBAIGluc2VydCBpbnRvIHQxIHZhbHVlcyAo MywzMSk7CiBzZWxlY3QgKiBmcm9tIHQyIHdoZXJlIHQyLmEgaW4gKHNlbGVjdCBhIGZyb20gdDEg d2hlcmUgdDEuYiA8PiAzMCk7CiBzZWxlY3QgKiBmcm9tIHQyIHdoZXJlIHQyLmEgaW4gKHNlbGVj dCBhIGZyb20gdDEgd2hlcmUgdDEuYiA8PiAzMCBhbmQgdDEuYiA8PiAzMSk7CiBleHBsYWluIGV4 dGVuZGVkIHNlbGVjdCAqIGZyb20gdDIgd2hlcmUgdDIuYSBpbiAoc2VsZWN0IGEgZnJvbSB0MSB3 aGVyZSB0MS5iIDw+IDMwKTsKLWRyb3AgdGFibGUgdDEsIHQyLCB0MzsKK2Ryb3AgdGFibGUgdDAs IHQxLCB0MiwgdDM7CiAKICMKICMgYWxsb2NfZ3JvdXBfZmllbGRzKCkgd29ya2luZwpAQCAtMzEy MCwyNCArMzExNywyMSBAQCBEUk9QIFRBQkxFIHQxLHQyOwogIyBCdWcjMzM2NzU6IFVzYWdlIG9m IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJ5IGZpbGVzb3J0IGluIGEgc3VicXVlcnkKICMgICAg ICAgICAgICBjYXVzZWQgc2VydmVyIGNyYXNoLgogIworY3JlYXRlIHRhYmxlIHQwKGEgaW50KTsK K2luc2VydCBpbnRvIHQwIHZhbHVlcyAoMCksKDEpLCgyKSwoMyksKDQpLCg1KSwoNiksKDcpLCg4 KSwoOSk7CiBjcmVhdGUgdGFibGUgdDEoZjExIGludCwgZjEyIGludCk7CiBjcmVhdGUgdGFibGUg dDIoZjIxIGludCB1bnNpZ25lZCBub3QgbnVsbCwgZjIyIGludCwgZjIzIHZhcmNoYXIoMTApKTsK IGluc2VydCBpbnRvIHQxIHZhbHVlcygxLDEpLCgyLDIpLCAoMywgMyk7Ci1sZXQgJGk9MTAwMDA7 Ci0tLWRpc2FibGVfcXVlcnlfbG9nCiAtLWRpc2FibGVfd2FybmluZ3MKLXdoaWxlICgkaSkKLXsK LSAgZXZhbCBpbnNlcnQgaW50byB0MiB2YWx1ZXMgKC0xICwgJGkvNTAwMCArIDEsICckaScpOwot ICBkZWMgJGk7Ci19CitpbnNlcnQgaW50byB0MiAKK3NlbGVjdCAtMSAsIChAYTo9KEEuYSArIDEw ICogKEIuYSArIDEwICogKEMuYSsxMCpELmEpKSkpLzUwMDAgKyAxLCBAYSAKK2Zyb20gdDAgQSwg dDAgQiwgdDAgQywgdDAgRDsKIC0tZW5hYmxlX3dhcm5pbmdzCi0tLWVuYWJsZV9xdWVyeV9sb2cK IHNldCBzZXNzaW9uIHNvcnRfYnVmZmVyX3NpemU9IDMzKjEwMjQ7CiBzZWxlY3QgY291bnQoKikg ZnJvbSB0MSB3aGVyZSBmMTIgPSAKIChzZWxlY3QgZjIyIGZyb20gdDIgd2hlcmUgZjIyID0gZjEy IG9yZGVyIGJ5IGYyMSBkZXNjLCBmMjIsIGYyMyBsaW1pdCAxKTsKIAotZHJvcCB0YWJsZSB0MSx0 MjsKK2Ryb3AgdGFibGUgdDAsdDEsdDI7CiAKICMKICMgQlVHIzMzNzk0ICJNeVNRTCBjcmFzaGVz IGV4ZWN1dGluZyBzcGVjaWZpYyBxdWVyeSBvbiBzcGVjaWZpYyBkdW1wIgoKPT09IG1vZGlmaWVk IGZpbGUgJ215c3FsLXRlc3QvdC9zdWJzZWxlY3Rfc2oudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90 L3N1YnNlbGVjdF9zai50ZXN0CTIwMDgtMDUtMDEgMDM6NTM6MzYgKzAwMDAKKysrIGIvbXlzcWwt dGVzdC90L3N1YnNlbGVjdF9zai50ZXN0CTIwMDgtMDYtMTEgMjM6MTY6NTMgKzAwMDAKQEAgLTky LDUgKzkyLDM2IEBAIGV4ZWN1dGUgczE7CiBpbnNlcnQgaW50byB0MSBzZWxlY3QgKEEuYSArIDEw ICogQi5hKSwxIGZyb20gdDAgQSwgdDAgQjsKIGV4cGxhaW4gZXh0ZW5kZWQgc2VsZWN0ICogZnJv bSB0MSB3aGVyZSBhIGluIChzZWxlY3QgcGsgZnJvbSB0MTAgd2hlcmUgcGs8Myk7CiAKKy0tZWNo bworLS1lY2hvIEJVRyMzNzEyMCBvcHRpbWl6ZXJfc3dpdGNoIGFsbG93YWJsZSB2YWx1ZXMgbm90 IGFjY29yZGluZyB0byBzcGVjaWZpY2F0aW9uCistLWVjaG8KKworc2VsZWN0IEBAb3B0aW1pemVy X3N3aXRjaDsgCisKK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19tYXRlcmlhbGl6YXRpb24nOwor c2VsZWN0IEBAb3B0aW1pemVyX3N3aXRjaDsgCisKK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19z ZW1pam9pbic7CitzZWxlY3QgQEBvcHRpbWl6ZXJfc3dpdGNoOyAKKworc2V0IG9wdGltaXplcl9z d2l0Y2g9J25vX2xvb3Nlc2Nhbic7CitzZWxlY3QgQEBvcHRpbWl6ZXJfc3dpdGNoOyAKKworc2V0 IG9wdGltaXplcl9zd2l0Y2g9J25vX3NlbWlqb2luLG5vX21hdGVyaWFsaXphdGlvbic7CitzZWxl Y3QgQEBvcHRpbWl6ZXJfc3dpdGNoOyAKKworc2V0IG9wdGltaXplcl9zd2l0Y2g9J25vX21hdGVy aWFsaXphdGlvbixub19zZW1pam9pbic7CitzZWxlY3QgQEBvcHRpbWl6ZXJfc3dpdGNoOyAKKwor c2V0IG9wdGltaXplcl9zd2l0Y2g9J25vX3NlbWlqb2luLG5vX21hdGVyaWFsaXphdGlvbixub19s b29zZXNjYW4nOworc2VsZWN0IEBAb3B0aW1pemVyX3N3aXRjaDsgCisKK3NldCBvcHRpbWl6ZXJf c3dpdGNoPSdub19zZW1pam9pbixub19sb29zZXNjYW4nOworc2VsZWN0IEBAb3B0aW1pemVyX3N3 aXRjaDsgCisKK3NldCBvcHRpbWl6ZXJfc3dpdGNoPSdub19tYXRlcmlhbGl6YXRpb24sbm9fbG9v c2VzY2FuJzsKK3NlbGVjdCBAQG9wdGltaXplcl9zd2l0Y2g7IAorc2V0IG9wdGltaXplcl9zd2l0 Y2g9Jyc7CisKIGRyb3AgdGFibGUgdDAsIHQxOwogZHJvcCB0YWJsZSB0MTAsIHQxMSwgdDEyOwoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9zdWJzZWxlY3Rfc2oyLnRlc3QnCi0tLSBh L215c3FsLXRlc3QvdC9zdWJzZWxlY3Rfc2oyLnRlc3QJMjAwOC0wNS0wMyAwODoyNzo0NyArMDAw MAorKysgYi9teXNxbC10ZXN0L3Qvc3Vic2VsZWN0X3NqMi50ZXN0CTIwMDgtMDctMTAgMTY6MDI6 MzggKzAwMDAKQEAgLTI3MSwxMSArMjcxLDExIEBAIGluc2VydCBpbnRvIHQyIChJRCwgTmFtZSwg Q291bnRyeUNvZGUsIFAKICgxLCdLYWJ1bCcsJ0FGRycsMTc4MDAwMCksICgyLCdRYW5kYWhhcics J0FGRycsMjM3NTAwKSwgKDMsJ0hlcmF0JywnQUZHJywxODY4MDApLAogKDQsJ01hemFyLWUtU2hh cmlmJywnQUZHJywxMjc4MDApLCAoMzMsJ1dpbGxlbXN0YWQnLCdBTlQnLDIzNDUpLCAoMzQsJ1Rp cmFuYScsJ0FMQicsMjcwMDAwKSwKICg1NSwnQW5kb3JyYSBsYSBWZWxsYScsJ0FORCcsMjExODkp LCAoNjEsJ1NvdXRoIEhpbGwnLCdBSUEnLDk2MSksICg2MiwnVGhlIFZhbGxleScsJ0FJQScsNTk1 KSwKLSg2MywnU2FpbnQgSm9obu+/vXMnLCdBVEcnLDI0MDAwKSwgKDY0LCdEdWJhaScsJ0FSRScs NjY5MTgxKSwgKDY1LCdBYnUgRGhhYmknLCdBUkUnLDM5ODY5NSksCisoNjMsJ1NhaW50IEpvaG7v v73vv73vv71zJywnQVRHJywyNDAwMCksICg2NCwnRHViYWknLCdBUkUnLDY2OTE4MSksICg2NSwn QWJ1IERoYWJpJywnQVJFJywzOTg2OTUpLAogKDY2LCdTaGFyamEnLCdBUkUnLDMyMDA5NSksICg2 NywnYWwtQXluJywnQVJFJywyMjU5NzApLCAoNjgsJ0FqbWFuJywnQVJFJywxMTQzOTUpLAogKDEy NiwnWWVyZXZhbicsJ0FSTScsMTI0ODcwMCksICgxMjcsJ0dqdW1yaScsJ0FSTScsMjExNzAwKSwg KDEyOCwnVmFuYWR6b3InLCdBUk0nLDE3MjcwMCksCi0oMTI5LCdPcmFuamVzdGFkJywnQUJXJywy OTAzNCksICgxNDQsJ0Jha3UnLCdBWkUnLDE3ODc4MDApLCAoMTQ1LCdH77+9bmPvv70nLCdBWkUn LDI5OTMwMCksCi0oMTQ2LCdTdW1xYXlpdCcsJ0FaRScsMjgzMDAwKSwgKDE0NywnTWluZ++/ve+/ vWV2aXInLCdBWkUnLDkzOTAwKSwgKDE0OCwnTmFzc2F1JywnQkhTJywxNzIwMDApLAorKDEyOSwn T3Jhbmplc3RhZCcsJ0FCVycsMjkwMzQpLCAoMTQ0LCdCYWt1JywnQVpFJywxNzg3ODAwKSwgKDE0 NSwnR++/ve+/ve+/vW5j77+977+977+9JywnQVpFJywyOTkzMDApLAorKDE0NiwnU3VtcWF5aXQn LCdBWkUnLDI4MzAwMCksICgxNDcsJ01pbmfvv73vv73vv73vv73vv73vv71ldmlyJywnQVpFJyw5 MzkwMCksICgxNDgsJ05hc3NhdScsJ0JIUycsMTcyMDAwKSwKICgxNDksJ2FsLU1hbmFtYScsJ0JI UicsMTQ4MDAwKSwgKDE1MCwnRGhha2EnLCdCR0QnLDM2MTI4NTApLCAoMTUxLCdDaGl0dGFnb25n JywnQkdEJywxMzkyODYwKSwKICgxNTIsJ0todWxuYScsJ0JHRCcsNjYzMzQwKSwgKDE1MywnUmFq c2hhaGknLCdCR0QnLDI5NDA1NiksICgxNTQsJ05hcmF5YW5nYW5qJywnQkdEJywyMDIxMzQpLAog KDE1NSwnUmFuZ3B1cicsJ0JHRCcsMTkxMzk4KSwgKDE1NiwnTXltZW5zaW5naCcsJ0JHRCcsMTg4 NzEzKSwgKDE1NywnQmFyaXNhbCcsJ0JHRCcsMTcwMjMyKSwKQEAgLTI4NSw3ICsyODUsNyBAQCBp bnNlcnQgaW50byB0MiAoSUQsIE5hbWUsIENvdW50cnlDb2RlLCBQCiAoMTY3LCdKYW1hbHB1cics J0JHRCcsMTAzNTU2KSwgKDE2OCwnUGFibmEnLCdCR0QnLDEwMzI3NyksICgxNjksJ05hb2dhb24n LCdCR0QnLDEwMTI2NiksCiAoMTcwLCdTaXJhamdhbmonLCdCR0QnLDk5NjY5KSwgKDE3MSwnTmFy c2luZ2hkaScsJ0JHRCcsOTgzNDIpLCAoMTcyLCdTYWlkcHVyJywnQkdEJyw5Njc3NyksCiAoMTcz LCdHYXppcHVyJywnQkdEJyw5NjcxNyksICgxNzQsJ0JyaWRnZXRvd24nLCdCUkInLDYwNzApLCAo MTc1LCdBbnR3ZXJwZW4nLCdCRUwnLDQ0NjUyNSksCi0oMTc2LCdHZW50JywnQkVMJywyMjQxODAp LCAoMTc3LCdDaGFybGVyb2knLCdCRUwnLDIwMDgyNyksICgxNzgsJ0xp77+9Z2UnLCdCRUwnLDE4 NTYzOSksCisoMTc2LCdHZW50JywnQkVMJywyMjQxODApLCAoMTc3LCdDaGFybGVyb2knLCdCRUwn LDIwMDgyNyksICgxNzgsJ0xp77+977+977+9Z2UnLCdCRUwnLDE4NTYzOSksCiAoMTc5LCdCcnV4 ZWxsZXMgW0JydXNzZWxdJywnQkVMJywxMzM4NTkpLCAoMTgwLCdCcnVnZ2UnLCdCRUwnLDExNjI0 NiksICgxODEsJ1NjaGFlcmJlZWsnLCdCRUwnLDEwNTY5MiksCiAoMTgyLCdOYW11cicsJ0JFTCcs MTA1NDE5KSwgKDE4MywnTW9ucycsJ0JFTCcsOTA5MzUpLCAoMTg0LCdCZWxpemUgQ2l0eScsJ0JM WicsNTU4MTApLAogKDE4NSwnQmVsbW9wYW4nLCdCTFonLDcxMDUpLCAoMTkwLCdTYWludCBHZW9y Z2UnLCdCTVUnLDE4MDApLCAoMTkxLCdIYW1pbHRvbicsJ0JNVScsMTIwMCksCkBAIC0yOTMsMTAg KzI5MywxMCBAQCBpbnNlcnQgaW50byB0MiAoSUQsIE5hbWUsIENvdW50cnlDb2RlLCBQCiAoMjAz LCdaZW5pY2EnLCdCSUgnLDk2MDI3KSwgKDUzOCwnQmFuZGFyIFNlcmkgQmVnYXdhbicsJ0JSTics MjE0ODQpLCAoNTM5LCdTb2ZpamEnLCdCR1InLDExMjIzMDIpLAogKDU0MCwnUGxvdmRpdicsJ0JH UicsMzQyNTg0KSwgKDU0MSwnVmFybmEnLCdCR1InLDI5OTgwMSksICg1NDIsJ0J1cmdhcycsJ0JH UicsMTk1MjU1KSwKICg1NDMsJ1J1c2UnLCdCR1InLDE2NjQ2NyksICg1NDQsJ1N0YXJhIFphZ29y YScsJ0JHUicsMTQ3OTM5KSwgKDU0NSwnUGxldmVuJywnQkdSJywxMjE5NTIpLAotKDU0NiwnU2xp dmVuJywnQkdSJywxMDU1MzApLCAoNTQ3LCdEb2JyaWMnLCdCR1InLDEwMDM5OSksICg1NDgsJ++/ vXVtZW4nLCdCR1InLDk0Njg2KSwKLSg1NTMsJ0dlb3JnZSBUb3duJywnQ1lNJywxOTYwMCksICg1 ODQsJ1NhbiBKb3Pvv70nLCdDUkknLDMzOTEzMSksICgxNTIzLCdXaWVuJywnQVVUJywxNjA4MTQ0 KSwKKyg1NDYsJ1NsaXZlbicsJ0JHUicsMTA1NTMwKSwgKDU0NywnRG9icmljJywnQkdSJywxMDAz OTkpLCAoNTQ4LCfvv73vv73vv711bWVuJywnQkdSJyw5NDY4NiksCisoNTUzLCdHZW9yZ2UgVG93 bicsJ0NZTScsMTk2MDApLCAoNTg0LCdTYW4gSm9z77+977+977+9JywnQ1JJJywzMzkxMzEpLCAo MTUyMywnV2llbicsJ0FVVCcsMTYwODE0NCksCiAoMTUyNCwnR3JheicsJ0FVVCcsMjQwOTY3KSwg KDE1MjUsJ0xpbnonLCdBVVQnLDE4ODAyMiksICgxNTI2LCdTYWx6YnVyZycsJ0FVVCcsMTQ0MjQ3 KSwKLSgxNTI3LCdJbm5zYnJ1Y2snLCdBVVQnLDExMTc1MiksICgxNTI4LCdLbGFnZW5mdXJ0Jywn QVVUJyw5MTE0MSksICgxODEwLCdNb250cu+/vWFsJywnQ0FOJywxMDE2Mzc2KSwKKygxNTI3LCdJ bm5zYnJ1Y2snLCdBVVQnLDExMTc1MiksICgxNTI4LCdLbGFnZW5mdXJ0JywnQVVUJyw5MTE0MSks ICgxODEwLCdNb250cu+/ve+/ve+/vWFsJywnQ0FOJywxMDE2Mzc2KSwKICgxODExLCdDYWxnYXJ5 JywnQ0FOJyw3NjgwODIpLCAoMTgxMiwnVG9yb250bycsJ0NBTicsNjg4Mjc1KSwgKDE4MTMsJ05v cnRoIFlvcmsnLCdDQU4nLDYyMjYzMiksCiAoMTgxNCwnV2lubmlwZWcnLCdDQU4nLDYxODQ3Nyks ICgxODE1LCdFZG1vbnRvbicsJ0NBTicsNjE2MzA2KSwgKDE4MTYsJ01pc3Npc3NhdWdhJywnQ0FO Jyw2MDgwNzIpLAogKDE4MTcsJ1NjYXJib3JvdWdoJywnQ0FOJyw1OTQ1MDEpLCAoMTgxOCwnVmFu Y291dmVyJywnQ0FOJyw1MTQwMDgpLCAoMTgxOSwnRXRvYmljb2tlJywnQ0FOJywzNDg4NDUpLApA QCAtMzA0LDI1ICszMDQsMjUgQEAgaW5zZXJ0IGludG8gdDIgKElELCBOYW1lLCBDb3VudHJ5Q29k ZSwgUAogKDE4MjMsJ0xhdmFsJywnQ0FOJywzMzAzOTMpLCAoMTgyNCwnU3VycmV5JywnQ0FOJywz MDQ0NzcpLCAoMTgyNSwnQnJhbXB0b24nLCdDQU4nLDI5NjcxMSksCiAoMTgyNiwnV2luZHNvcics J0NBTicsMjA3NTg4KSwgKDE4MjcsJ1Nhc2thdG9vbicsJ0NBTicsMTkzNjQ3KSwgKDE4MjgsJ0tp dGNoZW5lcicsJ0NBTicsMTg5OTU5KSwKICgxODI5LCdNYXJraGFtJywnQ0FOJywxODkwOTgpLCAo MTgzMCwnUmVnaW5hJywnQ0FOJywxODA0MDApLCAoMTgzMSwnQnVybmFieScsJ0NBTicsMTc5MjA5 KSwKLSgxODMyLCdRde+/vWJlYycsJ0NBTicsMTY3MjY0KSwgKDE4MzMsJ1lvcmsnLCdDQU4nLDE1 NDk4MCksICgxODM0LCdSaWNobW9uZCcsJ0NBTicsMTQ4ODY3KSwKKygxODMyLCdRde+/ve+/ve+/ vWJlYycsJ0NBTicsMTY3MjY0KSwgKDE4MzMsJ1lvcmsnLCdDQU4nLDE1NDk4MCksICgxODM0LCdS aWNobW9uZCcsJ0NBTicsMTQ4ODY3KSwKICgxODM1LCdWYXVnaGFuJywnQ0FOJywxNDc4ODkpLCAo MTgzNiwnQnVybGluZ3RvbicsJ0NBTicsMTQ1MTUwKSwgKDE4MzcsJ09zaGF3YScsJ0NBTicsMTQw MTczKSwKICgxODM4LCdPYWt2aWxsZScsJ0NBTicsMTM5MTkyKSwgKDE4MzksJ1NhaW50IENhdGhh cmluZXMnLCdDQU4nLDEzNjIxNiksICgxODQwLCdMb25ndWV1aWwnLCdDQU4nLDEyNzk3NyksCiAo MTg0MSwnUmljaG1vbmQgSGlsbCcsJ0NBTicsMTE2NDI4KSwgKDE4NDIsJ1RodW5kZXIgQmF5Jywn Q0FOJywxMTU5MTMpLCAoMTg0MywnTmVwZWFuJywnQ0FOJywxMTUxMDApLAogKDE4NDQsJ0NhcGUg QnJldG9uJywnQ0FOJywxMTQ3MzMpLCAoMTg0NSwnRWFzdCBZb3JrJywnQ0FOJywxMTQwMzQpLCAo MTg0NiwnSGFsaWZheCcsJ0NBTicsMTEzOTEwKSwKICgxODQ3LCdDYW1icmlkZ2UnLCdDQU4nLDEw OTE4NiksICgxODQ4LCdHbG91Y2VzdGVyJywnQ0FOJywxMDczMTQpLCAoMTg0OSwnQWJib3RzZm9y ZCcsJ0NBTicsMTA1NDAzKSwKLSgxODUwLCdHdWVscGgnLCdDQU4nLDEwMzU5MyksICgxODUxLCdT YWludCBKb2hu77+9cycsJ0NBTicsMTAxOTM2KSwgKDE4NTIsJ0NvcXVpdGxhbScsJ0NBTicsMTAx ODIwKSwKKygxODUwLCdHdWVscGgnLCdDQU4nLDEwMzU5MyksICgxODUxLCdTYWludCBKb2hu77+9 77+977+9cycsJ0NBTicsMTAxOTM2KSwgKDE4NTIsJ0NvcXVpdGxhbScsJ0NBTicsMTAxODIwKSwK ICgxODUzLCdTYWFuaWNoJywnQ0FOJywxMDEzODgpLCAoMTg1NCwnR2F0aW5lYXUnLCdDQU4nLDEw MDcwMiksICgxODU1LCdEZWx0YScsJ0NBTicsOTU0MTEpLAogKDE4NTYsJ1N1ZGJ1cnknLCdDQU4n LDkyNjg2KSwgKDE4NTcsJ0tlbG93bmEnLCdDQU4nLDg5NDQyKSwgKDE4NTgsJ0JhcnJpZScsJ0NB TicsODkyNjkpLAogKDE4OTAsJ1NoYW5naGFpJywnQ0hOJyw5Njk2MzAwKSwgKDE4OTEsJ1Bla2lu ZycsJ0NITicsNzQ3MjAwMCksICgxODkyLCdDaG9uZ3FpbmcnLCdDSE4nLDYzNTE2MDApLAogKDE4 OTMsJ1RpYW5qaW4nLCdDSE4nLDUyODY4MDApLCAoMTg5NCwnV3VoYW4nLCdDSE4nLDQzNDQ2MDAp LCAoMTg5NSwnSGFyYmluJywnQ0hOJyw0Mjg5ODAwKSwKICgxODk2LCdTaGVueWFuZycsJ0NITics NDI2NTIwMCksICgxODk3LCdLYW50b24gW0d1YW5nemhvdV0nLCdDSE4nLDQyNTYzMDApLCAoMTg5 OCwnQ2hlbmdkdScsJ0NITicsMzM2MTUwMCksCi0oMTg5OSwnTmFua2luZyBbTmFuamluZ10nLCdD SE4nLDI4NzAzMDApLCAoMTkwMCwnQ2hhbmdjaHVuJywnQ0hOJywyODEyMDAwKSwgKDE5MDEsJ1hp 77+9YW4nLCdDSE4nLDI3NjE0MDApLAorKDE4OTksJ05hbmtpbmcgW05hbmppbmddJywnQ0hOJywy ODcwMzAwKSwgKDE5MDAsJ0NoYW5nY2h1bicsJ0NITicsMjgxMjAwMCksICgxOTAxLCdYae+/ve+/ ve+/vWFuJywnQ0hOJywyNzYxNDAwKSwKICgxOTAyLCdEYWxpYW4nLCdDSE4nLDI2OTcwMDApLCAo MTkwMywnUWluZ2RhbycsJ0NITicsMjU5NjAwMCksICgxOTA0LCdKaW5hbicsJ0NITicsMjI3ODEw MCksCiAoMTkwNSwnSGFuZ3pob3UnLCdDSE4nLDIxOTA1MDApLCAoMTkwNiwnWmhlbmd6aG91Jywn Q0hOJywyMTA3MjAwKSwgKDE5MDcsJ1NoaWppYXpodWFuZycsJ0NITicsMjA0MTUwMCksCiAoMTkw OCwnVGFpeXVhbicsJ0NITicsMTk2ODQwMCksICgxOTA5LCdLdW5taW5nJywnQ0hOJywxODI5NTAw KSwgKDE5MTAsJ0NoYW5nc2hhJywnQ0hOJywxODA5ODAwKSwKICgxOTExLCdOYW5jaGFuZycsJ0NI TicsMTY5MTYwMCksICgxOTEyLCdGdXpob3UnLCdDSE4nLDE1OTM4MDApLCAoMTkxMywnTGFuemhv dScsJ0NITicsMTU2NTgwMCksCiAoMTkxNCwnR3VpeWFuZycsJ0NITicsMTQ2NTIwMCksICgxOTE1 LCdOaW5nYm8nLCdDSE4nLDEzNzEyMDApLCAoMTkxNiwnSGVmZWknLCdDSE4nLDEzNjkxMDApLAot KDE5MTcsJ1VydW1077+9aSBb77+9cu+/vW1xaV0nLCdDSE4nLDEzMTAxMDApLCAoMTkxOCwnQW5z aGFuJywnQ0hOJywxMjAwMDAwKSwgKDE5MTksJ0Z1c2h1bicsJ0NITicsMTIwMDAwMCksCisoMTkx NywnVXJ1bXTvv73vv73vv71pIFvvv73vv73vv71y77+977+977+9bXFpXScsJ0NITicsMTMxMDEw MCksICgxOTE4LCdBbnNoYW4nLCdDSE4nLDEyMDAwMDApLCAoMTkxOSwnRnVzaHVuJywnQ0hOJywx MjAwMDAwKSwKICgxOTIwLCdOYW5uaW5nJywnQ0hOJywxMTYxODAwKSwgKDE5MjEsJ1ppYm8nLCdD SE4nLDExNDAwMDApLCAoMTkyMiwnUWlxaWhhcicsJ0NITicsMTA3MDAwMCksCiAoMTkyMywnSmls aW4nLCdDSE4nLDEwNDAwMDApLCAoMTkyNCwnVGFuZ3NoYW4nLCdDSE4nLDEwNDAwMDApLCAoMTky NSwnQmFvdG91JywnQ0hOJyw5ODAwMDApLAogKDE5MjYsJ1NoZW56aGVuJywnQ0hOJyw5NTA1MDAp LCAoMTkyNywnSG9oaG90JywnQ0hOJyw5MTY3MDApLCAoMTkyOCwnSGFuZGFuJywnQ0hOJyw4NDAw MDApLApAQCAtMzQ2LDEyICszNDYsMTIgQEAgaW5zZXJ0IGludG8gdDIgKElELCBOYW1lLCBDb3Vu dHJ5Q29kZSwgUAogKDE5ODAsJ1poZW5qaWFuZycsJ0NITicsMzY4MzE2KSwgKDE5ODEsJ0h1YWli ZWknLCdDSE4nLDM2NjU0OSksICgxOTgyLCdRaW5odWFuZ2RhbycsJ0NITicsMzY0OTcyKSwKICgx OTgzLCdHdWlsaW4nLCdDSE4nLDM2NDEzMCksICgxOTg0LCdMaXVwYW5zaHVpJywnQ0hOJywzNjM5 NTQpLCAoMTk4NSwnUGFuamluJywnQ0hOJywzNjI3NzMpLAogKDE5ODYsJ1lhbmdxdWFuJywnQ0hO JywzNjIyNjgpLCAoMTk4NywnSmlueGknLCdDSE4nLDM1NzA1MiksICgxOTg4LCdMaWFveXVhbics J0NITicsMzU0MTQxKSwKLSgxOTg5LCdMaWFueXVuZ2FuZycsJ0NITicsMzU0MTM5KSwgKDE5OTAs J1hpYW55YW5nJywnQ0hOJywzNTIxMjUpLCAoMTk5MSwnVGFp77+9YW4nLCdDSE4nLDM1MDY5Niks CisoMTk4OSwnTGlhbnl1bmdhbmcnLCdDSE4nLDM1NDEzOSksICgxOTkwLCdYaWFueWFuZycsJ0NI TicsMzUyMTI1KSwgKDE5OTEsJ1Rhae+/ve+/ve+/vWFuJywnQ0hOJywzNTA2OTYpLAogKDE5OTIs J0NoaWZlbmcnLCdDSE4nLDM1MDA3NyksICgxOTkzLCdTaGFvZ3VhbicsJ0NITicsMzUwMDQzKSwg KDE5OTQsJ05hbnRvbmcnLCdDSE4nLDM0MzM0MSksCiAoMTk5NSwnTGVzaGFuJywnQ0hOJywzNDEx MjgpLCAoMTk5NiwnQmFvamknLCdDSE4nLDMzNzc2NSksICgxOTk3LCdMaW55aScsJ0NITicsMzI0 NzIwKSwKICgxOTk4LCdUb25naHVhJywnQ0hOJywzMjQ2MDApLCAoMTk5OSwnU2lwaW5nJywnQ0hO JywzMTcyMjMpLCAoMjAwMCwnQ2hhbmd6aGknLCdDSE4nLDMxNzE0NCksCiAoMjAwMSwnVGVuZ3po b3UnLCdDSE4nLDMxNTA4MyksICgyMDAyLCdDaGFvemhvdScsJ0NITicsMzEzNDY5KSwgKDIwMDMs J1lhbmd6aG91JywnQ0hOJywzMTI4OTIpLAotKDIwMDQsJ0Rvbmd3YW4nLCdDSE4nLDMwODY2OSks ICgyMDA1LCdNYe+/vWFuc2hhbicsJ0NITicsMzA1NDIxKSwgKDIwMDYsJ0Zvc2hhbicsJ0NITics MzAzMTYwKSwKKygyMDA0LCdEb25nd2FuJywnQ0hOJywzMDg2NjkpLCAoMjAwNSwnTWHvv73vv73v v71hbnNoYW4nLCdDSE4nLDMwNTQyMSksICgyMDA2LCdGb3NoYW4nLCdDSE4nLDMwMzE2MCksCiAo MjAwNywnWXVleWFuZycsJ0NITicsMzAyODAwKSwgKDIwMDgsJ1hpbmd0YWknLCdDSE4nLDMwMjc4 OSksICgyMDA5LCdDaGFuZ2RlJywnQ0hOJywzMDEyNzYpLAogKDIwMTAsJ1NoaWhlemknLCdDSE4n LDI5OTY3NiksICgyMDExLCdZYW5jaGVuZycsJ0NITicsMjk2ODMxKSwgKDIwMTIsJ0ppdWppYW5n JywnQ0hOJywyOTExODcpLAogKDIwMTMsJ0Rvbmd5aW5nJywnQ0hOJywyODE3MjgpLCAoMjAxNCwn U2hhc2hpJywnQ0hOJywyODEzNTIpLCAoMjAxNSwnWGludGFpJywnQ0hOJywyODEyNDgpLApAQCAt MzcxLDcgKzM3MSw3IEBAIGluc2VydCBpbnRvIHQyIChJRCwgTmFtZSwgQ291bnRyeUNvZGUsIFAK ICgyMDU1LCdKaWFuZ3lpbicsJ0NITicsMjEzNjU5KSwgKDIwNTYsJ0hlYmknLCdDSE4nLDIxMjk3 NiksICgyMDU3LCdKaWF4aW5nJywnQ0hOJywyMTE1MjYpLAogKDIwNTgsJ1d1emhvdScsJ0NITics MjEwNDUyKSwgKDIwNTksJ01laWhla291JywnQ0hOJywyMDkwMzgpLCAoMjA2MCwnWHVjaGFuZycs J0NITicsMjA4ODE1KSwKICgyMDYxLCdMaWFvY2hlbmcnLCdDSE4nLDIwNzg0NCksICgyMDYyLCdI YWljaGVuZycsJ0NITicsMjA1NTYwKSwgKDIwNjMsJ1FpYW5qaWFuZycsJ0NITicsMjA1NTA0KSwK LSgyMDY0LCdCYWl5aW4nLCdDSE4nLDIwNDk3MCksICgyMDY1LCdCZWnvv71hbicsJ0NITicsMjA0 ODk5KSwgKDIwNjYsJ1lpeGluZycsJ0NITicsMjAwODI0KSwKKygyMDY0LCdCYWl5aW4nLCdDSE4n LDIwNDk3MCksICgyMDY1LCdCZWnvv73vv73vv71hbicsJ0NITicsMjA0ODk5KSwgKDIwNjYsJ1lp eGluZycsJ0NITicsMjAwODI0KSwKICgyMDY3LCdMYWl6aG91JywnQ0hOJywxOTg2NjQpLCAoMjA2 OCwnUWFyYW1heScsJ0NITicsMTk3NjAyKSwgKDIwNjksJ0FjaGVuZycsJ0NITicsMTk3NTk1KSwK ICgyMDcwLCdEZXpob3UnLCdDSE4nLDE5NTQ4NSksICgyMDcxLCdOYW5waW5nJywnQ0hOJywxOTUw NjQpLCAoMjA3MiwnWmhhb3FpbmcnLCdDSE4nLDE5NDc4NCksCiAoMjA3MywnQmVpcGlhbycsJ0NI TicsMTk0MzAxKSwgKDIwNzQsJ0ZlbmdjaGVuZycsJ0NITicsMTkzNzg0KSwgKDIwNzUsJ0Z1eXUn LCdDSE4nLDE5Mjk4MSksCkBAIC0zOTIsMjEgKzM5MiwyMSBAQCBpbnNlcnQgaW50byB0MiAoSUQs IE5hbWUsIENvdW50cnlDb2RlLCBQCiAoMjExOCwnWGlhb3NoYW4nLCdDSE4nLDE2MjkzMCksICgy MTE5LCdaYW95YW5nJywnQ0hOJywxNjIxOTgpLCAoMjEyMCwnWGluZ2h1YScsJ0NITicsMTYxOTEw KSwKICgyMTIxLCdIYW1pJywnQ0hOJywxNjEzMTUpLCAoMjEyMiwnSHVpemhvdScsJ0NITicsMTYx MDIzKSwgKDIxMjMsJ0ppbm1lbicsJ0NITicsMTYwNzk0KSwKICgyMTI0LCdTYW5taW5nJywnQ0hO JywxNjA2OTEpLCAoMjEyNSwnVWxhbmhvdCcsJ0NITicsMTU5NTM4KSwgKDIxMjYsJ0tvcmxhJywn Q0hOJywxNTkzNDQpLAotKDIxMjcsJ1dhbnhpYW4nLCdDSE4nLDE1NjgyMyksICgyMTI4LCdSdWnv v71hbicsJ0NITicsMTU2NDY4KSwgKDIxMjksJ1pob3VzaGFuJywnQ0hOJywxNTYzMTcpLAorKDIx MjcsJ1dhbnhpYW4nLCdDSE4nLDE1NjgyMyksICgyMTI4LCdSdWnvv73vv73vv71hbicsJ0NITics MTU2NDY4KSwgKDIxMjksJ1pob3VzaGFuJywnQ0hOJywxNTYzMTcpLAogKDIxMzAsJ0xpYW5nY2hl bmcnLCdDSE4nLDE1NjMwNyksICgyMTMxLCdKaWFvemhvdScsJ0NITicsMTUzMzY0KSwgKDIxMzIs J1RhaXpob3UnLCdDSE4nLDE1MjQ0MiksCiAoMjEzMywnU3V6aG91JywnQ0hOJywxNTE4NjIpLCAo MjEzNCwnWWljaHVuJywnQ0hOJywxNTE1ODUpLCAoMjEzNSwnVGFvbmFuJywnQ0hOJywxNTAxNjgp LAotKDIxMzYsJ1BpbmdkdScsJ0NITicsMTUwMTIzKSwgKDIxMzcsJ0pp77+9YW4nLCdDSE4nLDE0 ODU4MyksICgyMTM4LCdMb25na291JywnQ0hOJywxNDgzNjIpLAorKDIxMzYsJ1BpbmdkdScsJ0NI TicsMTUwMTIzKSwgKDIxMzcsJ0pp77+977+977+9YW4nLCdDSE4nLDE0ODU4MyksICgyMTM4LCdM b25na291JywnQ0hOJywxNDgzNjIpLAogKDIxMzksJ0xhbmdmYW5nJywnQ0hOJywxNDgxMDUpLCAo MjE0MCwnWmhvdWtvdScsJ0NITicsMTQ2Mjg4KSwgKDIxNDEsJ1N1aW5pbmcnLCdDSE4nLDE0NjA4 NiksCi0oMjE0MiwnWXVsaW4nLCdDSE4nLDE0NDQ2NyksICgyMTQzLCdKaW5odWEnLCdDSE4nLDE0 NDI4MCksICgyMTQ0LCdMaXXvv71hbicsJ0NITicsMTQ0MjQ4KSwKKygyMTQyLCdZdWxpbicsJ0NI TicsMTQ0NDY3KSwgKDIxNDMsJ0ppbmh1YScsJ0NITicsMTQ0MjgwKSwgKDIxNDQsJ0xpde+/ve+/ ve+/vWFuJywnQ0hOJywxNDQyNDgpLAogKDIxNDUsJ1NodWFuZ2NoZW5nJywnQ0hOJywxNDI2NTkp LCAoMjE0NiwnU3VpemhvdScsJ0NITicsMTQyMzAyKSwgKDIxNDcsJ0Fua2FuZycsJ0NITicsMTQy MTcwKSwKLSgyMTQ4LCdXZWluYW4nLCdDSE4nLDE0MDE2OSksICgyMTQ5LCdMb25namluZycsJ0NI TicsMTM5NDE3KSwgKDIxNTAsJ0Rh77+9YW4nLCdDSE4nLDEzODk2MyksCisoMjE0OCwnV2VpbmFu JywnQ0hOJywxNDAxNjkpLCAoMjE0OSwnTG9uZ2ppbmcnLCdDSE4nLDEzOTQxNyksICgyMTUwLCdE Ye+/ve+/ve+/vWFuJywnQ0hOJywxMzg5NjMpLAogKDIxNTEsJ0xlbmdzaHVpamlhbmcnLCdDSE4n LDEzNzk5NCksICgyMTUyLCdMYWl5YW5nJywnQ0hOJywxMzcwODApLCAoMjE1MywnWGlhbm5pbmcn LCdDSE4nLDEzNjgxMSksCiAoMjE1NCwnRGFsaScsJ0NITicsMTM2NTU0KSwgKDIxNTUsJ0FuZGEn LCdDSE4nLDEzNjQ0NiksICgyMTU2LCdKaW5jaGVuZycsJ0NITicsMTM2Mzk2KSwKICgyMTU3LCdM b25neWFuJywnQ0hOJywxMzQ0ODEpLCAoMjE1OCwnWGljaGFuZycsJ0NITicsMTM0NDE5KSwgKDIx NTksJ1dlbmRlbmcnLCdDSE4nLDEzMzkxMCksCiAoMjE2MCwnSGFpbHVuJywnQ0hOJywxMzM1NjUp LCAoMjE2MSwnQmluemhvdScsJ0NITicsMTMzNTU1KSwgKDIxNjIsJ0xpbmhlJywnQ0hOJywxMzMx ODMpLAogKDIxNjMsJ1d1d2VpJywnQ0hOJywxMzMxMDEpLCAoMjE2NCwnRHV5dW4nLCdDSE4nLDEz Mjk3MSksICgyMTY1LCdNaXNoYW4nLCdDSE4nLDEzMjc0NCksCiAoMjE2NiwnU2hhbmdyYW8nLCdD SE4nLDEzMjQ1NSksICgyMTY3LCdDaGFuZ2ppJywnQ0hOJywxMzIyNjApLCAoMjE2OCwnTWVpeGlh bicsJ0NITicsMTMyMTU2KSwKLSgyMTY5LCdZdXNodScsJ0NITicsMTMxODYxKSwgKDIxNzAsJ1Rp ZWZhJywnQ0hOJywxMzE4MDcpLCAoMjE3MSwnSHVhae+/vWFuJywnQ0hOJywxMzExNDkpLAorKDIx NjksJ1l1c2h1JywnQ0hOJywxMzE4NjEpLCAoMjE3MCwnVGllZmEnLCdDSE4nLDEzMTgwNyksICgy MTcxLCdIdWFp77+977+977+9YW4nLCdDSE4nLDEzMTE0OSksCiAoMjE3MiwnTGVpeWFuZycsJ0NI TicsMTMwMTE1KSwgKDIxNzMsJ1phbGFudHVuJywnQ0hOJywxMzAwMzEpLCAoMjE3NCwnV2VpaGFp JywnQ0hOJywxMjg4ODgpLAogKDIxNzUsJ0xvdWRpJywnQ0hOJywxMjg0MTgpLCAoMjE3NiwnUWlu Z3pob3UnLCdDSE4nLDEyODI1OCksICgyMTc3LCdRaWRvbmcnLCdDSE4nLDEyNjg3MiksCiAoMjE3 OCwnSHVhaWh1YScsJ0NITicsMTI2Nzg1KSwgKDIxNzksJ0x1b2hlJywnQ0hOJywxMjY0MzgpLCAo MjE4MCwnQ2h1emhvdScsJ0NITicsMTI1MzQxKSwKQEAgLTQxNywzOSArNDE3LDM5IEBAIGluc2Vy dCBpbnRvIHQyIChJRCwgTmFtZSwgQ291bnRyeUNvZGUsIFAKICgyMTkzLCdMaWFueXVhbicsJ0NI TicsMTE4ODU4KSwgKDIxOTQsJ0t1eXR1bicsJ0NITicsMTE4NTUzKSwgKDIxOTUsJ1B1cWknLCdD SE4nLDExNzI2NCksCiAoMjE5NiwnSG9uZ2ppYW5nJywnQ0hOJywxMTYxODgpLCAoMjE5NywnUWlu emhvdScsJ0NITicsMTE0NTg2KSwgKDIxOTgsJ1JlbnFpdScsJ0NITicsMTE0MjU2KSwKICgyMTk5 LCdZdXlhbycsJ0NITicsMTE0MDY1KSwgKDIyMDAsJ0d1aWdhbmcnLCdDSE4nLDExNDAyNSksICgy MjAxLCdLYWlsaScsJ0NITicsMTEzOTU4KSwKLSgyMjAyLCdZYW7vv71hbicsJ0NITicsMTEzMjc3 KSwgKDIyMDMsJ0JlaWhhaScsJ0NITicsMTEyNjczKSwgKDIyMDQsJ1h1YW5nemhvdScsJ0NITics MTEyNjczKSwKLSgyMjA1LCdRdXpob3UnLCdDSE4nLDExMjM3MyksICgyMjA2LCdZb25n77+9YW4n LCdDSE4nLDExMTc2MiksICgyMjA3LCdaaXhpbmcnLCdDSE4nLDExMDA0OCksCisoMjIwMiwnWWFu 77+977+977+9YW4nLCdDSE4nLDExMzI3NyksICgyMjAzLCdCZWloYWknLCdDSE4nLDExMjY3Myks ICgyMjA0LCdYdWFuZ3pob3UnLCdDSE4nLDExMjY3MyksCisoMjIwNSwnUXV6aG91JywnQ0hOJywx MTIzNzMpLCAoMjIwNiwnWW9uZ++/ve+/ve+/vWFuJywnQ0hOJywxMTE3NjIpLCAoMjIwNywnWml4 aW5nJywnQ0hOJywxMTAwNDgpLAogKDIyMDgsJ0xpeWFuZycsJ0NITicsMTA5NTIwKSwgKDIyMDks J1lpemhlbmcnLCdDSE4nLDEwOTI2OCksICgyMjEwLCdZdW1lbicsJ0NITicsMTA5MjM0KSwKICgy MjExLCdMaWxpbmcnLCdDSE4nLDEwODUwNCksICgyMjEyLCdZdW5jaGVuZycsJ0NITicsMTA4MzU5 KSwgKDIyMTMsJ1NoYW53ZWknLCdDSE4nLDEwNzg0NyksCiAoMjIxNCwnQ2l4aScsJ0NITicsMTA3 MzI5KSwgKDIyMTUsJ1l1YW5qaWFuZycsJ0NITicsMTA3MDA0KSwgKDIyMTYsJ0JvemhvdScsJ0NI TicsMTA2MzQ2KSwKLSgyMjE3LCdKaW5jaGFuZycsJ0NITicsMTA1Mjg3KSwgKDIyMTgsJ0Z177+9 YW4nLCdDSE4nLDEwNTI2NSksICgyMjE5LCdTdXFpYW4nLCdDSE4nLDEwNTAyMSksCisoMjIxNywn SmluY2hhbmcnLCdDSE4nLDEwNTI4NyksICgyMjE4LCdGde+/ve+/ve+/vWFuJywnQ0hOJywxMDUy NjUpLCAoMjIxOSwnU3VxaWFuJywnQ0hOJywxMDUwMjEpLAogKDIyMjAsJ1NoaXNob3UnLCdDSE4n LDEwNDU3MSksICgyMjIxLCdIZW5nc2h1aScsJ0NITicsMTA0MjY5KSwgKDIyMjIsJ0RhbmppYW5n a291JywnQ0hOJywxMDMyMTEpLAogKDIyMjMsJ0Z1amluJywnQ0hOJywxMDMxMDQpLCAoMjIyNCwn U2FueWEnLCdDSE4nLDEwMjgyMCksICgyMjI1LCdHdWFuZ3NodWknLCdDSE4nLDEwMjc3MCksCiAo MjIyNiwnSHVhbmdzaGFuJywnQ0hOJywxMDI2MjgpLCAoMjIyNywnWGluZ2NoZW5nJywnQ0hOJywx MDIzODQpLCAoMjIyOCwnWmh1Y2hlbmcnLCdDSE4nLDEwMjEzNCksCiAoMjIyOSwnS3Vuc2hhbics J0NITicsMTAyMDUyKSwgKDIyMzAsJ0hhaW5pbmcnLCdDSE4nLDEwMDQ3OCksICgyMjMxLCdQaW5n bGlhbmcnLCdDSE4nLDk5MjY1KSwKICgyMjMyLCdGdXFpbmcnLCdDSE4nLDk5MTkzKSwgKDIyMzMs J1hpbnpob3UnLCdDSE4nLDk4NjY3KSwgKDIyMzQsJ0ppZXlhbmcnLCdDSE4nLDk4NTMxKSwKLSgy MjM1LCdaaGFuZ2ppYWdhbmcnLCdDSE4nLDk3OTk0KSwgKDIyMzYsJ1RvbmcgWGlhbicsJ0NITics OTcxNjgpLCAoMjIzNywnWWHvv71hbicsJ0NITicsOTU5MDApLAorKDIyMzUsJ1poYW5namlhZ2Fu ZycsJ0NITicsOTc5OTQpLCAoMjIzNiwnVG9uZyBYaWFuJywnQ0hOJyw5NzE2OCksICgyMjM3LCdZ Ye+/ve+/ve+/vWFuJywnQ0hOJyw5NTkwMCksCiAoMjIzOCwnSmluemhvdScsJ0NITicsOTU3NjEp LCAoMjIzOSwnRW1laXNoYW4nLCdDSE4nLDk0MDAwKSwgKDIyNDAsJ0Vuc2hpJywnQ0hOJyw5MzA1 NiksCiAoMjI0MSwnQm9zZScsJ0NITicsOTMwMDkpLCAoMjI0MiwnWXV6aG91JywnQ0hOJyw5Mjg4 OSksICgyMjQzLCdLYWl5dWFuJywnQ0hOJyw5MTk5OSksCiAoMjI0NCwnVHVtZW4nLCdDSE4nLDkx NDcxKSwgKDIyNDUsJ1B1dGlhbicsJ0NITicsOTEwMzApLCAoMjI0NiwnTGluaGFpJywnQ0hOJyw5 MDg3MCksCiAoMjI0NywnWGlsaW4gSG90JywnQ0hOJyw5MDY0NiksICgyMjQ4LCdTaGFvd3UnLCdD SE4nLDkwMjg2KSwgKDIyNDksJ0p1bmFuJywnQ0hOJyw5MDIyMiksCiAoMjI1MCwnSHVheWluZycs J0NITicsODk0MDApLCAoMjI1MSwnUGluZ3lpJywnQ0hOJyw4OTM3MyksICgyMjUyLCdIdWFuZ3lh bicsJ0NITicsODkyODgpLAotKDI0MTMsJ0xhIEhhYmFuYScsJ0NVQicsMjI1NjAwMCksICgyNDE0 LCdTYW50aWFnbyBkZSBDdWJhJywnQ1VCJyw0MzMxODApLCAoMjQxNSwnQ2FtYWfvv71leScsJ0NV QicsMjk4NzI2KSwKLSgyNDE2LCdIb2xnde+/vW4nLCdDVUInLDI0OTQ5MiksICgyNDE3LCdTYW50 YSBDbGFyYScsJ0NVQicsMjA3MzUwKSwgKDI0MTgsJ0d1YW5077+9bmFtbycsJ0NVQicsMjA1MDc4 KSwKLSgyNDE5LCdQaW5hciBkZWwgUu+/vW8nLCdDVUInLDE0MjEwMCksICgyNDIwLCdCYXlhbW8n LCdDVUInLDE0MTAwMCksICgyNDIxLCdDaWVuZnVlZ29zJywnQ1VCJywxMzI3NzApLAorKDI0MTMs J0xhIEhhYmFuYScsJ0NVQicsMjI1NjAwMCksICgyNDE0LCdTYW50aWFnbyBkZSBDdWJhJywnQ1VC Jyw0MzMxODApLCAoMjQxNSwnQ2FtYWfvv73vv73vv71leScsJ0NVQicsMjk4NzI2KSwKKygyNDE2 LCdIb2xnde+/ve+/ve+/vW4nLCdDVUInLDI0OTQ5MiksICgyNDE3LCdTYW50YSBDbGFyYScsJ0NV QicsMjA3MzUwKSwgKDI0MTgsJ0d1YW5077+977+977+9bmFtbycsJ0NVQicsMjA1MDc4KSwKKygy NDE5LCdQaW5hciBkZWwgUu+/ve+/ve+/vW8nLCdDVUInLDE0MjEwMCksICgyNDIwLCdCYXlhbW8n LCdDVUInLDE0MTAwMCksICgyNDIxLCdDaWVuZnVlZ29zJywnQ1VCJywxMzI3NzApLAogKDI0MjIs J1ZpY3RvcmlhIGRlIGxhcyBUdW5hcycsJ0NVQicsMTMyMzUwKSwgKDI0MjMsJ01hdGFuemFzJywn Q1VCJywxMjMyNzMpLCAoMjQyNCwnTWFuemFuaWxsbycsJ0NVQicsMTA5MzUwKSwKLSgyNDI1LCdT YW5jdGktU3Dvv71yaXR1cycsJ0NVQicsMTAwNzUxKSwgKDI0MjYsJ0NpZWdvIGRlIO+/vXZpbGEn LCdDVUInLDk4NTA1KSwgKDI0MzAsJ05pY29zaWEnLCdDWVAnLDE5NTAwMCksCi0oMjQzMSwnTGlt YXNzb2wnLCdDWVAnLDE1NDQwMCksICgzMjQ1LCda77+9cmljaCcsJ0NIRScsMzM2ODAwKSwgKDMy NDYsJ0dlbmV2ZScsJ0NIRScsMTczNTAwKSwKKygyNDI1LCdTYW5jdGktU3Dvv73vv73vv71yaXR1 cycsJ0NVQicsMTAwNzUxKSwgKDI0MjYsJ0NpZWdvIGRlIO+/ve+/ve+/vXZpbGEnLCdDVUInLDk4 NTA1KSwgKDI0MzAsJ05pY29zaWEnLCdDWVAnLDE5NTAwMCksCisoMjQzMSwnTGltYXNzb2wnLCdD WVAnLDE1NDQwMCksICgzMjQ1LCda77+977+977+9cmljaCcsJ0NIRScsMzM2ODAwKSwgKDMyNDYs J0dlbmV2ZScsJ0NIRScsMTczNTAwKSwKICgzMjQ3LCdCYXNlbCcsJ0NIRScsMTY2NzAwKSwgKDMy NDgsJ0Jlcm4nLCdDSEUnLDEyMjcwMCksICgzMjQ5LCdMYXVzYW5uZScsJ0NIRScsMTE0NTAwKSwK ICgzMzM5LCdQcmFoYScsJ0NaRScsMTE4MTEyNiksICgzMzQwLCdCcm5vJywnQ1pFJywzODE4NjIp LCAoMzM0MSwnT3N0cmF2YScsJ0NaRScsMzIwMDQxKSwKICgzMzQyLCdQbHplbicsJ0NaRScsMTY2 NzU5KSwgKDMzNDMsJ09sb21vdWMnLCdDWkUnLDEwMjcwMiksICgzMzQ0LCdMaWJlcmVjJywnQ1pF Jyw5OTE1NSksCi0oMzM0NSwnQ2Vza++/vSBCdWRlam92aWNlJywnQ1pFJyw5ODE4NiksICgzMzQ2 LCdIcmFkZWMgS3Lvv71sb3bvv70nLCdDWkUnLDk4MDgwKSwgKDMzNDcsJ++/vXN077+9IG5hZCBM YWJlbScsJ0NaRScsOTU0OTEpLAorKDMzNDUsJ0Nlc2vvv73vv73vv70gQnVkZWpvdmljZScsJ0Na RScsOTgxODYpLCAoMzM0NiwnSHJhZGVjIEty77+977+977+9bG9277+977+977+9JywnQ1pFJyw5 ODA4MCksICgzMzQ3LCfvv73vv73vv71zdO+/ve+/ve+/vSBuYWQgTGFiZW0nLCdDWkUnLDk1NDkx KSwKICgzMzQ4LCdQYXJkdWJpY2UnLCdDWkUnLDkxMzA5KSwgKDM1MjAsJ01pbnNrJywnQkxSJywx Njc0MDAwKSwgKDM1MjEsJ0dvbWVsJywnQkxSJyw0NzUwMDApLAogKDM1MjIsJ01vZ2lsam92Jywn QkxSJywzNTYwMDApLCAoMzUyMywnVml0ZWJzaycsJ0JMUicsMzQwMDAwKSwgKDM1MjQsJ0dyb2Ru bycsJ0JMUicsMzAyMDAwKSwKLSgzNTI1LCdCcmVzdCcsJ0JMUicsMjg2MDAwKSwgKDM1MjYsJ0Jv YnJ1aXNrJywnQkxSJywyMjEwMDApLCAoMzUyNywnQmFyYW5vdml077+9aScsJ0JMUicsMTY3MDAw KSwKLSgzNTI4LCdCb3Jpc292JywnQkxSJywxNTEwMDApLCAoMzUyOSwnUGluc2snLCdCTFInLDEz MDAwMCksICgzNTMwLCdPcu+/vWEnLCdCTFInLDEyNDAwMCksCisoMzUyNSwnQnJlc3QnLCdCTFIn LDI4NjAwMCksICgzNTI2LCdCb2JydWlzaycsJ0JMUicsMjIxMDAwKSwgKDM1MjcsJ0JhcmFub3Zp dO+/ve+/ve+/vWknLCdCTFInLDE2NzAwMCksCisoMzUyOCwnQm9yaXNvdicsJ0JMUicsMTUxMDAw KSwgKDM1MjksJ1BpbnNrJywnQkxSJywxMzAwMDApLCAoMzUzMCwnT3Lvv73vv73vv71hJywnQkxS JywxMjQwMDApLAogKDM1MzEsJ01venlyJywnQkxSJywxMTAwMDApLCAoMzUzMiwnTm92b3BvbG90 c2snLCdCTFInLDEwNjAwMCksICgzNTMzLCdMaWRhJywnQkxSJywxMDEwMDApLAotKDM1MzQsJ1Nv bGlnb3JzaycsJ0JMUicsMTAxMDAwKSwgKDM1MzUsJ01vbG9kZXTvv71ubycsJ0JMUicsOTcwMDAp OworKDM1MzQsJ1NvbGlnb3JzaycsJ0JMUicsMTAxMDAwKSwgKDM1MzUsJ01vbG9kZXTvv73vv73v v71ubycsJ0JMUicsOTcwMDApOwogCiBpbnNlcnQgaW50byB0MSAoQ29kZSwgTmFtZSwgQ29udGlu ZW50KSB2YWx1ZXMgCiAoJ0FGRycsJ0FmZ2hhbmlzdGFuJywnQXNpYScpLCAoJ0FOVCcsJ05ldGhl cmxhbmRzIEFudGlsbGVzJywnTm9ydGggQW1lcmljYScpLApAQCAtODM3LDMgKzgzNywyNSBAQCBk ZWxpbWl0ZXIgO3wKIGNhbGwgcDEoKTsKIGRyb3AgcHJvY2VkdXJlIHAxOwogZHJvcCB0YWJsZSB0 MTsKKworIworIyBCVUcjMzU0NjggIlNsb3dkb3duIGFuZCB3cm9uZyByZXN1bHQgZm9yIHVuY29y cmVsYXRlZCBzdWJxdWVyeSB3L28gd2hlcmUiCisjCisKK2NyZWF0ZSB0YWJsZSB0MCAoYSBpbnQp OworaW5zZXJ0IGludG8gdDAgdmFsdWVzICgwKSwoMSksKDIpLCgzKSwoNCksKDUpLCg2KSwoNyks KDgpLCg5KTsKK2NyZWF0ZSB0YWJsZSB0MSAoYSBpbnQpIGFzIHNlbGVjdCBBLmEgKyAxMCAqKEIu YSArIDEwKkMuYSkgYXMgYSAgZnJvbSB0MCBBLCB0MCBCLCB0MCBDOworY3JlYXRlIHRhYmxlIHQy IChpZCBpbnQsIGEgaW50LCBwcmltYXJ5IGtleShpZCksIGtleShhKSkgYXMgc2VsZWN0IGEgYXMg aWQsIGEgYXMgYSAgZnJvbSB0MTsKK3Nob3cgY3JlYXRlIHRhYmxlIHQyOworc2V0IEBhPTA7Citj cmVhdGUgdGFibGUgdDMgYXMgc2VsZWN0ICogZnJvbSB0MiBsaW1pdCAwOworaW5zZXJ0IGludG8g dDMgc2VsZWN0IEBhOj1AYSsxLCB0Mi5hIGZyb20gdDIsIHQwOworaW5zZXJ0IGludG8gdDMgc2Vs ZWN0IEBhOj1AYSsxLCB0Mi5hIGZyb20gdDIsIHQwOworaW5zZXJ0IGludG8gdDMgc2VsZWN0IEBh Oj1AYSsxLCB0Mi5hIGZyb20gdDIsIHQwOworCithbHRlciB0YWJsZSB0MyBhZGQgcHJpbWFyeSBr ZXkoaWQpLCBhZGQga2V5KGEpOworLS1lY2hvIFRoZSBmb2xsb3dpbmcgbXVzdCB1c2UgbG9vc2Ug aW5kZXggc2NhbiBvdmVyIHQzLCBrZXkgYToKK2V4cGxhaW4gc2VsZWN0IGNvdW50KGEpIGZyb20g dDIgd2hlcmUgYSBpbiAoIFNFTEVDVCAgYSBGUk9NIHQzKTsKK3NlbGVjdCBjb3VudChhKSBmcm9t IHQyIHdoZXJlIGEgaW4gKCBTRUxFQ1QgIGEgRlJPTSB0Myk7CisKK2Ryb3AgdGFibGUgdDAsdDEs dDIsdDM7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2hhbmRsZXIuY2MnCi0tLSBhL3NxbC9oYW5k bGVyLmNjCTIwMDgtMDctMDkgMDc6MTI6NDMgKzAwMDAKKysrIGIvc3FsL2hhbmRsZXIuY2MJMjAw OC0wNy0xOSAxNDoyMTo1MSArMDAwMApAQCAtNDU4NCw3ICs0NTg0LDcgQEAgaGFfcm93cyBEc01y cl9pbXBsOjpkc21ycl9pbmZvX2NvbnN0KHVpbgogICBAcmV0dmFsIEZBTFNFICBObwogKi8KIAot Ym9vbCBEc01ycl9pbXBsOjprZXlfdXNlc19wYXJ0aWFsX2NvbHModWludCBrZXlubykKK2Jvb2wg a2V5X3VzZXNfcGFydGlhbF9jb2xzKFRBQkxFICp0YWJsZSwgdWludCBrZXlubykKIHsKICAgS0VZ X1BBUlRfSU5GTyAqa3A9IHRhYmxlLT5rZXlfaW5mb1trZXlub10ua2V5X3BhcnQ7CiAgIEtFWV9Q QVJUX0lORk8gKmtwX2VuZD0ga3AgKyB0YWJsZS0+a2V5X2luZm9ba2V5bm9dLmtleV9wYXJ0czsK QEAgLTQ1OTYsNyArNDU5Niw2IEBAIGJvb2wgRHNNcnJfaW1wbDo6a2V5X3VzZXNfcGFydGlhbF9j b2xzKHUKICAgcmV0dXJuIEZBTFNFOwogfQogCi0KIC8qKgogICBEUy1NUlIgSW50ZXJuYWxzOiBD aG9vc2UgYmV0d2VlbiBEZWZhdWx0IE1SUiBpbXBsZW1lbnRhdGlvbiBhbmQgRFMtTVJSCiAKQEAg LTQ2MzAsNyArNDYyOSw3IEBAIGJvb2wgRHNNcnJfaW1wbDo6Y2hvb3NlX21ycl9pbXBsKHVpbnQg a2UKICAgICAgICgqZmxhZ3MgJiBIQV9NUlJfSU5ERVhfT05MWSkgfHwgKCpmbGFncyAmIEhBX01S Ul9TT1JURUQpIHx8CiAgICAgICAoa2V5bm8gPT0gdGFibGUtPnMtPnByaW1hcnlfa2V5ICYmIAog ICAgICAgIGgtPnByaW1hcnlfa2V5X2lzX2NsdXN0ZXJlZCgpKSB8fCAKLSAgICAgICBrZXlfdXNl c19wYXJ0aWFsX2NvbHMoa2V5bm8pKQorICAgICAgIGtleV91c2VzX3BhcnRpYWxfY29scyh0YWJs ZSwga2V5bm8pKQogICB7CiAgICAgLyogVXNlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICov CiAgICAgKmZsYWdzIHw9IEhBX01SUl9VU0VfREVGQVVMVF9JTVBMOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3NxbC9oYW5kbGVyLmgnCi0tLSBhL3NxbC9oYW5kbGVyLmgJMjAwOC0wNi0zMCAyMDoyMTo0 MSArMDAwMAorKysgYi9zcWwvaGFuZGxlci5oCTIwMDgtMDctMTAgMTY6MDI6MzggKzAwMDAKQEAg LTIzMzEsNiArMjMzMSw3IEBAIHByaXZhdGU6CiB9OwogCiAKK2Jvb2wga2V5X3VzZXNfcGFydGlh bF9jb2xzKFRBQkxFICp0YWJsZSwgdWludCBrZXlubyk7CiAKIC8qKgogICBBIERpc2stU3dlZXAg TVJSIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgpAQCAtMjM5MSw3ICsyMzkyLDYgQEAgcHVibGlj OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcV9pbml0X3BhcmFtLCB1aW50 IG5fcmFuZ2VzLCB1aW50ICpidWZzeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 ICpmbGFncywgQ09TVF9WRUNUICpjb3N0KTsKIHByaXZhdGU6Ci0gIGJvb2wga2V5X3VzZXNfcGFy dGlhbF9jb2xzKHVpbnQga2V5bm8pOwogICBib29sIGNob29zZV9tcnJfaW1wbCh1aW50IGtleW5v LCBoYV9yb3dzIHJvd3MsIHVpbnQgKmZsYWdzLCB1aW50ICpidWZzeiwgCiAgICAgICAgICAgICAg ICAgICAgICAgIENPU1RfVkVDVCAqY29zdCk7CiAgIGJvb2wgZ2V0X2Rpc2tfc3dlZXBfbXJyX2Nv c3QodWludCBrZXluciwgaGFfcm93cyByb3dzLCB1aW50IGZsYWdzLCAKCj09PSBtb2RpZmllZCBm aWxlICdzcWwvbXlzcWxfcHJpdi5oJwotLS0gYS9zcWwvbXlzcWxfcHJpdi5oCTIwMDgtMDctMDkg MDc6MTI6NDMgKzAwMDAKKysrIGIvc3FsL215c3FsX3ByaXYuaAkyMDA4LTA3LTE5IDE0OjIxOjUx ICswMDAwCkBAIC01NjgsNiArNTY4LDcgQEAgZW51bSBvcGVuX3RhYmxlX21vZGUKIC8qIEBAb3B0 aW1pemVyX3N3aXRjaCBmbGFncyAqLwogI2RlZmluZSBPUFRJTUlaRVJfU1dJVENIX05PX01BVEVS SUFMSVpBVElPTiAxCiAjZGVmaW5lIE9QVElNSVpFUl9TV0lUQ0hfTk9fU0VNSUpPSU4gMgorI2Rl ZmluZSBPUFRJTUlaRVJfU1dJVENIX05PX0xPT1NFX1NDQU4gNAogCiAKIC8qCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3FsL215c3FsZC5jYycKLS0tIGEvc3FsL215c3FsZC5jYwkyMDA4LTA3LTA5IDA3 OjEyOjQzICswMDAwCisrKyBiL3NxbC9teXNxbGQuY2MJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAw MApAQCAtMzMwLDE1ICszMzAsMTYgQEAgVFlQRUxJQiBzcWxfbW9kZV90eXBlbGliPSB7IGFycmF5 X2VsZW1lbgogCiBzdGF0aWMgY29uc3QgY2hhciAqb3B0aW1pemVyX3N3aXRjaF9uYW1lc1tdPQog ewotICAibm9fbWF0ZXJpYWxpemF0aW9uIiwgIm5vX3NlbWlqb2luIiwKKyAgIm5vX21hdGVyaWFs aXphdGlvbiIsICJub19zZW1pam9pbiIsICJub19sb29zZXNjYW4iLAogICBOdWxsUwogfTsKIAog LyogQ29ycmVzcG9uZGluZyBkZWZpbmVzIGFyZSBuYW1lZCBPUFRJTUlaRVJfU1dJVENIX1hYWCAq Lwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBvcHRpbWl6ZXJfc3dpdGNoX25hbWVzX2xlbltd PQogewotICAvKm5vX21hdGVyaWFsaXphdGlvbiovICAgICAgICAgIDE5LAotICAvKm5vX3NlbWlq b2luKi8gICAgICAgICAgICAgICAgIDExCisgIC8qbm9fbWF0ZXJpYWxpemF0aW9uKi8gICAgICAg ICAgMTgsCisgIC8qbm9fc2VtaWpvaW4qLyAgICAgICAgICAgICAgICAgMTEsCisgIC8qbm9fbG9v c2VzY2FuKi8gICAgICAgICAgICAgICAgMTIsCiB9OwogCiBUWVBFTElCIG9wdGltaXplcl9zd2l0 Y2hfdHlwZWxpYj0geyBhcnJheV9lbGVtZW50cyhvcHRpbWl6ZXJfc3dpdGNoX25hbWVzKS0xLCIi LAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcF9wY29udGV4dC5jYycKLS0tIGEvc3FsL3NwX3Bj b250ZXh0LmNjCTIwMDgtMDQtMDkgMDA6NTY6NDkgKzAwMDAKKysrIGIvc3FsL3NwX3Bjb250ZXh0 LmNjCTIwMDgtMDYtMTIgMjA6MjA6NDcgKzAwMDAKQEAgLTUxLDcgKzUxLDggQEAgc3BfY29uZF9j aGVjayhMRVhfU1RSSU5HICpzcWxzdGF0ZSkKIAkoYyA8ICdBJyB8fCAnWicgPCBjKSkKICAgICAg IHJldHVybiBGQUxTRTsKICAgfQotICBpZiAoc3RyY21wKHNxbHN0YXRlLT5zdHIsICIwMDAwMCIp ID09IDApCisgIC8qIFNRTFNUQVRFIGNsYXNzICcwMCcgOiBjb21wbGV0aW9uIGNvbmRpdGlvbiAq LworICBpZiAoc3RybmNtcChzcWxzdGF0ZS0+c3RyLCAiMDAiLCAyKSA9PSAwKQogICAgIHJldHVy biBGQUxTRTsKICAgcmV0dXJuIFRSVUU7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9z ZWxlY3QuY2MnCi0tLSBhL3NxbC9zcWxfc2VsZWN0LmNjCTIwMDgtMDctMTAgMjM6Mjk6MjcgKzAw MDAKKysrIGIvc3FsL3NxbF9zZWxlY3QuY2MJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAwMApAQCAt MTY5LDEzICsxNjksMTEgQEAgc3RhdGljIGludCBqb2luX3JlYWRfYWx3YXlzX2tleShKT0lOX1RB Qgogc3RhdGljIGludCBqb2luX3JlYWRfbGFzdF9rZXkoSk9JTl9UQUIgKnRhYik7CiBzdGF0aWMg aW50IGpvaW5fbm9fbW9yZV9yZWNvcmRzKFJFQURfUkVDT1JEICppbmZvKTsKIHN0YXRpYyBpbnQg am9pbl9yZWFkX25leHQoUkVBRF9SRUNPUkQgKmluZm8pOwotc3RhdGljIGludCBqb2luX3JlYWRf bmV4dF9kaWZmZXJlbnQoUkVBRF9SRUNPUkQgKmluZm8pOwogc3RhdGljIGludCBqb2luX2luaXRf cXVpY2tfcmVhZF9yZWNvcmQoSk9JTl9UQUIgKnRhYik7CiBzdGF0aWMgaW50IHRlc3RfaWZfcXVp Y2tfc2VsZWN0KEpPSU5fVEFCICp0YWIpOwogc3RhdGljIGludCBqb2luX2luaXRfcmVhZF9yZWNv cmQoSk9JTl9UQUIgKnRhYik7CiBzdGF0aWMgaW50IGpvaW5fcmVhZF9maXJzdChKT0lOX1RBQiAq dGFiKTsKIHN0YXRpYyBpbnQgam9pbl9yZWFkX25leHRfc2FtZShSRUFEX1JFQ09SRCAqaW5mbyk7 Ci1zdGF0aWMgaW50IGpvaW5fcmVhZF9uZXh0X3NhbWVfZGlmZihSRUFEX1JFQ09SRCAqaW5mbyk7 CiBzdGF0aWMgaW50IGpvaW5fcmVhZF9sYXN0KEpPSU5fVEFCICp0YWIpOwogc3RhdGljIGludCBq b2luX3JlYWRfcHJldl9zYW1lKFJFQURfUkVDT1JEICppbmZvKTsKIHN0YXRpYyBpbnQgam9pbl9y ZWFkX3ByZXYoUkVBRF9SRUNPUkQgKmluZm8pOwpAQCAtMTA1NSw2ICsxMDUzLDEyIEBAIHN0YXRp YwogaW50IHNldHVwX3NlbWlqb2luX2R1cHNfZWxpbWluYXRpb24oSk9JTiAqam9pbiwgdWxvbmds b25nIG9wdGlvbnMsIHVpbnQgbm9famJ1Zl9hZnRlcikKIHsKICAgdGFibGVfbWFwIGN1cl9tYXA9 IGpvaW4tPmNvbnN0X3RhYmxlX21hcCB8IFBTRVVET19UQUJMRV9CSVRTOworICBlbnVtIHNqX3N0 cmF0ZWd5X2VudW0geyAKKyAgICBTSl9TVFJBVEVHWV9JTlZBTElELAorICAgIFNKX1NUUkFURUdZ X0lOU0lERU9VVCwKKyAgICBTSl9TVFJBVEVHWV9EVVBTX1dFRURPVVQsCisgICAgU0pfU1RSQVRF R1lfRFVQU19XRUVET1VUX0pCVUYKKyAgfTsKICAgc3RydWN0IHsKICAgICAvKiAKICAgICAgIDAg LSBpbnZhbGlkIChFT0YgbWFya2VyKSwgCkBAIC0xMDYyLDcgKzEwNjYsNyBAQCBpbnQgc2V0dXBf c2VtaWpvaW5fZHVwc19lbGltaW5hdGlvbihKT0lOCiAgICAgICAyIC0gVGVtcHRhYmxlIChtYXli ZSBjb25mbHVlbnQpLAogICAgICAgMyAtIFRlbXB0YWJsZSB3aXRoIGpvaW4gYnVmZmVyaW5nCiAg ICAgKi8KLSAgICB1aW50IHN0cmF0ZWd5OworICAgIGVudW0gc2pfc3RyYXRlZ3lfZW51bSBzdHJh dGVneTsKICAgICB1aW50IHN0YXJ0X2lkeDsgLyogTGVmdCByYW5nZSBib3VuZCAqLwogICAgIHVp bnQgZW5kX2lkeDsgICAvKiBSaWdodCByYW5nZSBib3VuZCAqLwogICAgIC8qIApAQCAtMTA4Niw3 ICsxMDkwLDcgQEAgaW50IHNldHVwX3NlbWlqb2luX2R1cHNfZWxpbWluYXRpb24oSk9JTgogICAv KgogICAgIEZpcnN0IHBhc3M6IGxvY2F0ZSB0aGUgZHVwbGljYXRlLWdlbmVyYXRpbmcgcmFuZ2Vz IGFuZCBwaWNrIHRoZSBzdHJhdGVnaWVzLgogICAqLwotICBmb3IgKGk9am9pbi0+Y29uc3RfdGFi bGVzIDsgaSA8IGpvaW4tPnRhYmxlcyA7IGkrKykKKyAgZm9yIChpPSBqb2luLT5jb25zdF90YWJs ZXMgOyBpIDwgam9pbi0+dGFibGVzIDsgaSsrKQogICB7CiAgICAgSk9JTl9UQUIgKnRhYj1qb2lu LT5qb2luX3RhYitpOwogICAgIFRBQkxFICp0YWJsZT10YWItPnRhYmxlOwpAQCAtMTEwNCw3ICsx MTA4LDcgQEAgaW50IHNldHVwX3NlbWlqb2luX2R1cHNfZWxpbWluYXRpb24oSk9JTgogICAgICAg ICAgIGJlIHRoYXQgaXQgb3ZlcmxhcHMgd2l0aCBhbnRoZXIgc2VtaS1qb2luJ3MgcmFuZ2UuIHdl IGRvbid0CiAgICAgICAgICAgc3VwcG9ydCBJbnNpZGVPdXQgZm9yIGpvaW5lZCByYW5nZXMpCiAg ICAgICAgICovCi0gICAgICAgIGlmIChqb2luLT5iZXN0X3Bvc2l0aW9uc1tpXS51c2VfaW5zaWRl b3V0X3NjYW4pCisgICAgICAgIGlmIChqb2luLT5iZXN0X3Bvc2l0aW9uc1tpXS5pbnNpZGVvdXRf a2V5ICE9IE1BWF9LRVkpCiAgICAgICAgICAgZW1iX2luc2lkZW91dF9uZXN0PSB0YWItPmVtYl9z al9uZXN0OwogICAgICAgfQogCkBAIC0xMTc0LDcgKzExNzgsNyBAQCBpbnQgc2V0dXBfc2VtaWpv aW5fZHVwc19lbGltaW5hdGlvbihKT0lOCiAgICAgICAgICAgYml0bWFwX2NvdmVycyhjdXJfbWFw LCBlbWJfaW5zaWRlb3V0X25lc3QtPnNqX2lubmVyX3RhYmxlcykpCiAgICAgICB7CiAgICAgICAg IC8qIFNhdmUgdGhhdCB0aGlzIHJhbmdlIGlzIGhhbmRsZWQgd2l0aCBJbnNpZGVPdXQ6ICovCi0g ICAgICAgIGR1cHNfcmFuZ2VzW2N1cl9yYW5nZV0uc3RyYXRlZ3k9IDE7CisgICAgICAgIGR1cHNf cmFuZ2VzW2N1cl9yYW5nZV0uc3RyYXRlZ3k9IFNKX1NUUkFURUdZX0lOU0lERU9VVDsKICAgICAg ICAgZW5kX29mX3JhbmdlPSBUUlVFOwogICAgICAgfQogICAgICAgZWxzZSBpZiAoYml0bWFwX2Nv dmVycyhjdXJfbWFwLCBlbWJfb3V0ZXJfdGFibGVzIHwgZW1iX3NqX21hcCkpCkBAIC0xMTgzLDcg KzExODcsOSBAQCBpbnQgc2V0dXBfc2VtaWpvaW5fZHVwc19lbGltaW5hdGlvbihKT0lOCiAgICAg ICAgICAgVGhpcyBpcyBhIGNvbXBsZXRlIHJhbmdlIHRvIGJlIGhhbmRsZWQgd2l0aCBlaXRoZXIg RHVwbGljYXRlV2VlZG91dCAKICAgICAgICAgICBvciBGaXJzdE1hdGNoCiAgICAgICAgICovCi0g ICAgICAgIGR1cHNfcmFuZ2VzW2N1cl9yYW5nZV0uc3RyYXRlZ3k9IGRlYWxpbmdfd2l0aF9qYnVm PyAzIDogMjsKKyAgICAgICAgZHVwc19yYW5nZXNbY3VyX3JhbmdlXS5zdHJhdGVneT0gCisgICAg ICAgICAgZGVhbGluZ193aXRoX2pidWY/IFNKX1NUUkFURUdZX0RVUFNfV0VFRE9VVF9KQlVGOiAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0pfU1RSQVRFR1lfRFVQU19XRUVET1VUOwog ICAgICAgICAvKiAKICAgICAgICAgICBUaGlzIHdpbGwgaG9sZCB0YWJsZXMgZnJvbSB3aXRoaW4g dGhlIHJhbmdlIHRoYXQgbmVlZCB0byBiZSBwdXQgCiAgICAgICAgICAgaW50byB0aGUgam9pbiBi dWZmZXIgYmVmb3JlIHdlIGNhbiB1c2UgdGhlIEZpcnN0TWF0Y2ggb24gaXRzIHRhaWwuCkBAIC0x MTk5LDcgKzEyMDUsNyBAQCBpbnQgc2V0dXBfc2VtaWpvaW5fZHVwc19lbGltaW5hdGlvbihKT0lO CiAgICAgICAgIGVtYl9zal9tYXA9IGVtYl9vdXRlcl90YWJsZXM9IDA7CiAgICAgICAgIGVtYl9p bnNpZGVvdXRfbmVzdD0gTlVMTDsKICAgICAgICAgZGVhbGluZ193aXRoX2pidWY9IEZBTFNFOwot ICAgICAgICBkdXBzX3Jhbmdlc1srK2N1cl9yYW5nZV0uc3RyYXRlZ3k9IDA7CisgICAgICAgIGR1 cHNfcmFuZ2VzWysrY3VyX3JhbmdlXS5zdHJhdGVneT0gU0pfU1RSQVRFR1lfSU5WQUxJRDsKICAg ICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKQEAgLTEyMTMsMTggKzEyMTksMjcgQEAgaW50IHNl dHVwX3NlbWlqb2luX2R1cHNfZWxpbWluYXRpb24oSk9JTgogICBUSEQgKnRoZD0gam9pbi0+dGhk OwogICBTSl9UTVBfVEFCTEUgKipuZXh0X3NqdGJsX3B0cj0gJmpvaW4tPnNqX3RtcF90YWJsZXM7 CiAgIC8qCi0gICAgU2Vjb25kIHBhc3M6IHNldHVwIHRoZSBjaG9zZW4gc3RyYXRlZ2llcyAgICAK KyAgICBUaGUgc2Vjb25kIHBhc3M6IHNldHVwIHRoZSBjaG9zZW4gc3RyYXRlZ2llcyAgICAKICAg Ki8KICAgZm9yIChpbnQgaj0gMDsgaiA8IGN1cl9yYW5nZTsgaisrKQogICB7CiAgICAgSk9JTl9U QUIgKnRhYj1qb2luLT5qb2luX3RhYiArIGR1cHNfcmFuZ2VzW2pdLnN0YXJ0X2lkeDsKICAgICBK T0lOX1RBQiAqanVtcF90bzsKLSAgICBpZiAoZHVwc19yYW5nZXNbal0uc3RyYXRlZ3kgPT0gMSkg IC8vIEluc2lkZU91dCBzdHJhdGVneQorICAgIGlmIChkdXBzX3Jhbmdlc1tqXS5zdHJhdGVneSA9 PSBTSl9TVFJBVEVHWV9JTlNJREVPVVQpCiAgICAgeworICAgICAgLyogV2UganVtcCBmcm9tIHRo ZSBsYXN0IHRhYmxlIHRvIHRoZSBmaXJzdCBvbmUgKi8KICAgICAgIHRhYi0+aW5zaWRlb3V0X21h dGNoX3RhYj0gam9pbi0+am9pbl90YWIgKyBkdXBzX3Jhbmdlc1tqXS5lbmRfaWR4IC0gMTsKKyAg ICAgIAorICAgICAgLyogQ2FsY3VsYXRlIGtleSBsZW5ndGggKi8KKyAgICAgIHVpbnQgbnBhcnRz PSBqb2luLT5iZXN0X3Bvc2l0aW9uc1tkdXBzX3Jhbmdlc1tqXS5zdGFydF9pZHhdLmluc2lkZW91 dF9wYXJ0czsKKyAgICAgIHVpbnQga2V5bm89IGpvaW4tPmJlc3RfcG9zaXRpb25zW2R1cHNfcmFu Z2VzW2pdLnN0YXJ0X2lkeF0uaW5zaWRlb3V0X2tleTsKKyAgICAgIHVpbnQga2V5bGVuPSAwOwor ICAgICAgZm9yICh1aW50IGtwPTA7IGtwIDwgbnBhcnRzOyBrcCsrKQorICAgICAgICBrZXlsZW4g Kz0gdGFiLT50YWJsZS0+a2V5X2luZm9ba2V5bm9dLmtleV9wYXJ0W2twXS5zdG9yZV9sZW5ndGg7 CisgICAgICB0YWItPmluc2lkZW91dF9rZXlfbGVuPSBrZXlsZW47CiAgICAgICBqdW1wX3RvPSB0 YWIrKzsKICAgICB9Ci0gICAgZWxzZSAvLyBEdXBsaWNhdGVXZWVkb3V0IHN0cmF0ZWd5CisgICAg ZWxzZSAvLyBEdXBsaWNhdGVXZWVkb3V0IG9yIEZpcnN0TWF0Y2gKICAgICB7CiAgICAgICBTSl9U TVBfVEFCTEU6OlRBQiBzanRhYnNbTUFYX1RBQkxFU107CiAgICAgICB0YWJsZV9tYXAgY3VyX21h cD0gam9pbi0+Y29uc3RfdGFibGVfbWFwIHwgUFNFVURPX1RBQkxFX0JJVFM7CkBAIC01NDE3LDkg KzU0MzIsMTYgQEAgYmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAgKmpvaW4sCiAgIHRhYmxlX21h cCBiZXN0X3JlZl9kZXBlbmRzX21hcD0gMDsKICAgZG91YmxlIHRtcDsKICAgaGFfcm93cyByZWM7 Ci0gIHVpbnQgYmVzdF9pc19zal9pbnNpZGVfb3V0PSAgICAwOworICB1aW50IGJlc3RfaXNfc2pf aW5zaWRlX291dD0gTUFYX0tFWTsKKyAgdWludCBiZXN0X3NqX2tleXBhcnRzOworICBib29sIHRy eV9zal9pbnNpZGVfb3V0PSBGQUxTRTsKKyAgdWludCBzal9pbnNpZGVvdXRfcXVpY2tfc2VsZWN0 PSBGQUxTRTsKKyAgdWludCBzal9pbnNpZGVvdXRfcXVpY2tfbWF4X3NqX2tleXBhcnQ7CisgIHVp bnQgc2pfaW5zaWRlX291dF9zY2FuPSBNQVhfS0VZOwogICBEQlVHX0VOVEVSKCJiZXN0X2FjY2Vz c19wYXRoIik7Ci0KKyAgCisgIExJTlRfSU5JVChiZXN0X3NqX2tleXBhcnRzKTsgLy8gUHJvdGVj dGVkIGJ5IHNqX2luc2lkZV9vdXRfc2NhbgorICBMSU5UX0lOSVQoc2pfaW5zaWRlb3V0X3F1aWNr X21heF9zal9rZXlwYXJ0KTsgLy8gUHJvdGVjdGVkIGJ5IHNqX2luc2lkZW91dF9xdWlja18qCiAg IGlmIChzLT5rZXl1c2UpCiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIFVzZSBrZXkgaWYgcG9zc2libGUgKi8KICAgICBUQUJMRSAqdGFibGU9IHMtPnRh YmxlOwpAQCAtNTQyNywxNCArNTQ0OSwxMyBAQCBiZXN0X2FjY2Vzc19wYXRoKEpPSU4gICAgICAq am9pbiwKICAgICBkb3VibGUgYmVzdF9yZWNvcmRzPSBEQkxfTUFYOwogICAgIHVpbnQgbWF4X2tl eV9wYXJ0PTA7CiAgICAgdWxvbmdsb25nIGJvdW5kX3NqX2VxdWFsaXRpZXM9IDA7Ci0gICAgYm9v bCB0cnlfc2pfaW5zaWRlX291dD0gRkFMU0U7CiAgICAgLyoKICAgICAgIERpc2NvdmVyIHRoZSBi b3VuZCBlcXVhbGl0ZXMuIFdlIG5lZWQgdG8gZG8gdGhpcywgaWYKICAgICAgICAgMS4gVGhlIG5l eHQgdGFibGUgaXMgYW4gU0otaW5uZXIgdGFibGUsIGFuZAogICAgICAgICAyLiBJdCBpcyB0aGUg Zmlyc3QgdGFibGUgZnJvbSB0aGF0IHNlbWlqb2luLCBhbmQKICAgICAgICAgMy4gV2UncmUgbm90 IHdpdGhpbiBhIHNlbWktam9pbiByYW5nZSAoaS5lLiBhbGwgc2VtaS1qb2lucyBlaXRoZXIgaGF2 ZQogICAgICAgICAgICBhbGwgb3Igbm9uZSBvZiB0aGVpciB0YWJsZXMgaW4gam9pbl90YWJsZV9t YXApLCBleGNlcHQKLSAgICAgICAgICAgcy0+ZW1iX3NqX25lc3QgKHdoaWNoIHdlJ3ZlIGp1c3Qg ZW50ZXJlZCkuCisgICAgICAgICAgIHMtPmVtYl9zal9uZXN0ICh3aGljaCB3ZSd2ZSBqdXN0IGVu dGVyZWQsIHNlZSAjMikuCiAgICAgICAgIDQuIEFsbCBub24tSU4tZXF1YWxpdHkgY29ycmVsYXRp b24gcmVmZXJlbmNlcyBmcm9tIHRoaXMgc2otbmVzdCBhcmUgCiAgICAgICAgICAgIGJvdW5kCiAg ICAgICAgIDUuIEJ1dCBzb21lIG9mIHRoZSBJTi1lcXVhbGl0aWVzIGFyZW4ndCAoc28gdGhpcyBj YW4ndCBiZSBoYW5kbGVkIGJ5IApAQCAtNTQ0NywxMiArNTQ2OCwxNSBAQCBiZXN0X2FjY2Vzc19w YXRoKEpPSU4gICAgICAqam9pbiwKICAgICAgICAgam9pbi0+Y3VyX2VtYl9zal9uZXN0cyA9PSBz LT5lbWJfc2pfbmVzdC0+c2pfaW5uZXJfdGFibGVzICYmICAgIC8vICgzKQogICAgICAgICAhKHJl bWFpbmluZ190YWJsZXMgJiAKICAgICAgICAgICBzLT5lbWJfc2pfbmVzdC0+bmVzdGVkX2pvaW4t PnNqX2NvcnJfdGFibGVzKSAmJiAgICAgICAgICAgICAgIC8vICg0KQotICAgICAgICByZW1haW5p bmdfdGFibGVzICYgcy0+ZW1iX3NqX25lc3QtPm5lc3RlZF9qb2luLT5zal9kZXBlbmRzX29uKSAg Ly8gKDUpCisgICAgICAgIHJlbWFpbmluZ190YWJsZXMgJiBzLT5lbWJfc2pfbmVzdC0+bmVzdGVk X2pvaW4tPnNqX2RlcGVuZHNfb24gJiYvLyAoNSkKKyAgICAgICAgIXRlc3QodGhkLT52YXJpYWJs ZXMub3B0aW1pemVyX3N3aXRjaCAmIE9QVElNSVpFUl9TV0lUQ0hfTk9fTE9PU0VfU0NBTikpCiAg ICAgewogICAgICAgLyogVGhpcyB0YWJsZSBpcyBhbiBJbnNpZGVPdXQgc2NhbiBjYW5kaWRhdGUg Ki8KICAgICAgIGJvdW5kX3NqX2VxdWFsaXRpZXM9IGdldF9ib3VuZF9zal9lcXVhbGl0aWVzKHMt PmVtYl9zal9uZXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbWFpbmluZ190YWJsZXMpOwogICAgICAgdHJ5X3NqX2luc2lkZV9vdXQ9IFRS VUU7CisgICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJXaWxsIHRyeSBJbnNpZGVPdXQgc2Nhbiwg Ym91bmRfbWFwPSVsbHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZ2xvbmcpYm91 bmRfc2pfZXF1YWxpdGllcykpOwogICAgIH0KIAogICAgIC8qIFRlc3QgaG93IHdlIGNhbiB1c2Ug a2V5cyAqLwpAQCAtNTQ3Myw2ICs1NDk3LDkgQEAgYmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAg KmpvaW4sCiAgICAgICBzdGFydF9rZXk9IGtleXVzZTsKICAgICAgIHVsb25nbG9uZyBoYW5kbGVk X3NqX2VxdWFsaXRpZXM9MDsKICAgICAgIGtleV9wYXJ0X21hcCBzal9pbnNpZGVvdXRfbWFwPSAw OworICAgICAgdWludCBtYXhfc2pfa2V5cGFydD0gMDsKKyAgICAgIERCVUdfUFJJTlQoImluZm8i LCAoIkNvbnNpZGVyaW5nIHJlZiBhY2Nlc3Mgb24ga2V5ICVzIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAga2V5dXNlLT50YWJsZS0+a2V5X2luZm9ba2V5dXNlLT5rZXldLm5hbWUpKTsKIAog ICAgICAgZG8gLyogRm9yIGVhY2gga2V5cGFydCAqLwogICAgICAgewpAQCAtNTUyMCw2ICs1NTQ3 LDcgQEAgYmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAgKmpvaW4sCiAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgIGhhbmRsZWRfc2pfZXF1YWxpdGllcyB8PSAxVUxMIDw8IGtleXVzZS0+c2pf cHJlZF9ubzsKICAgICAgICAgICAgICAgc2pfaW5zaWRlb3V0X21hcCB8PSAoKGtleV9wYXJ0X21h cCkxKSA8PCBrZXl1c2UtPmtleXBhcnQ7CisgICAgICAgICAgICAgIHNldF9pZl9iaWdnZXIobWF4 X3NqX2tleXBhcnQsIGtleXVzZS0+a2V5cGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg fQogCkBAIC01NTM4LDcgKzU1NjYsNyBAQCBiZXN0X2FjY2Vzc19wYXRoKEpPSU4gICAgICAqam9p biwKICAgICAgIGlmIChyZWMgPCBNQVRDSElOR19ST1dTX0lOX09USEVSX1RBQkxFKQogICAgICAg ICByZWM9IE1BVENISU5HX1JPV1NfSU5fT1RIRVJfVEFCTEU7ICAgICAgLy8gRml4IGZvciBzbWFs bCB0YWJsZXMKIAotICAgICAgYm9vbCBzal9pbnNpZGVfb3V0X3NjYW49IEZBTFNFOworICAgICAg c2pfaW5zaWRlX291dF9zY2FuPSBNQVhfS0VZOwogICAgICAgLyoKICAgICAgICAgZnQta2V5cyBy ZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50CiAgICAgICAqLwpAQCAtNTU1NSw0OSArNTU4Myw2NiBA QCBiZXN0X2FjY2Vzc19wYXRoKEpPSU4gICAgICAqam9pbiwKICAgICAgIHsKICAgICAgICAgZm91 bmRfY29uc3RyYWludD0gdGVzdChmb3VuZF9wYXJ0KTsKICAgICAgICAgLyoKLSAgICAgICAgICBD aGVjayBpZiBJbnNpZGVPdXQgc2NhbiBpcyBhcHBsaWNhYmxlOgotICAgICAgICAgIDEuIEFsbCBJ Ti1lcXVhbGl0aWVzIGFyZSBlaXRoZXIgImJvdW5kIiBvciAiaGFuZGxlZCIKLSAgICAgICAgICAy LiBJbmRleCBrZXlwYXJ0cyBhcmUgCi0gICAgICAgICAgICAgLi4uCisgICAgICAgICAgQ2hlY2sg aWYgd2UgY2FuIHVzZSBJbnNpZGVPdXQgc2VtaS1qb2luIHN0cmF0ZWd5LiBXZSBjYW4gaWYKKyAg ICAgICAgICAxLiBUaGlzIGlzIHRoZSByaWdodCB0YWJsZSBhdCByaWdodCBsb2NhdGlvbgorICAg ICAgICAgIDIuIEFsbCBJTi1lcXVhbGl0aWVzIGFyZSBlaXRoZXIKKyAgICAgICAgICAgICAtICJi b3VuZCIsIGllLiB0aGUgb3V0ZXJfZXhwciBwYXJ0IHJlZmVycyB0byB0aGUgcHJlY2VkaW5nIHRh YmxlcworICAgICAgICAgICAgIC0gImhhbmRsZWQiLCBpZS4gY292ZXJlZCBieSB0aGUgaW5kZXgg d2UncmUgY29uc2lkZXJpbmcKKyAgICAgICAgICAzLiBJbmRleCBvcmRlciBhbGxvd3MgdG8gZW51 bWVyYXRlIHN1YnF1ZXJ5J3MgZHVwbGljYXRlIGdyb3VwcyBpbgorICAgICAgICAgICAgIG9yZGVy LiBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgaW5kZXggZGVmaW5pdGlvbiBtYXRjaGVzIHRoaXMKKyAg ICAgICAgICAgICBwYXR0ZXJuOgorCisgICAgICAgICAgICAgICAoaGFuZGxlZF9jb2x8Ym91bmRf Y29sKSogKG90aGVyX2NvbHxib3VuZF9jb2wpCisKICAgICAgICAgKi8KLSAgICAgICAgaWYgKHRy eV9zal9pbnNpZGVfb3V0ICYmIAotICAgICAgICAgICAgdGFibGUtPmNvdmVyaW5nX2tleXMuaXNf c2V0KGtleSkgJiYKLSAgICAgICAgICAgIChoYW5kbGVkX3NqX2VxdWFsaXRpZXMgfCBib3VuZF9z al9lcXVhbGl0aWVzKSA9PSAgICAgLy8gKDEpCi0gICAgICAgICAgICBQUkVWX0JJVFModWxvbmds b25nLCBzLT5lbWJfc2pfbmVzdC0+c2pfaW5fZXhwcnMpKSAvLyAoMSkKKyAgICAgICAgaWYgKHRy eV9zal9pbnNpZGVfb3V0ICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g KDEpCisgICAgICAgICAgICAoaGFuZGxlZF9zal9lcXVhbGl0aWVzIHwgYm91bmRfc2pfZXF1YWxp dGllcykgPT0gICAgICAvLyAoMikKKyAgICAgICAgICAgIFBSRVZfQklUUyh1bG9uZ2xvbmcsIHMt PmVtYl9zal9uZXN0LT5zal9pbl9leHBycykgJiYgIC8vICgyKQorICAgICAgICAgICAgKFBSRVZf QklUUyhrZXlfcGFydF9tYXAsIG1heF9zal9rZXlwYXJ0KzEpICYgICAgICAgICAgIC8vICgzKQor ICAgICAgICAgICAgIChmb3VuZF9wYXJ0IHwgc2pfaW5zaWRlb3V0X21hcCkpID09ICAgICAgICAg ICAgICAgICAgICAgLy8gKDMpCisgICAgICAgICAgICAgKGZvdW5kX3BhcnQgfCBzal9pbnNpZGVv dXRfbWFwKSAmJiAgICAgICAgICAgICAgICAgICAgIC8vICgzKQorICAgICAgICAgICAgIWtleV91 c2VzX3BhcnRpYWxfY29scyhzLT50YWJsZSwga2V5KSkKICAgICAgICAgewotICAgICAgICAgIHVp bnQgbl9maXhlZF9wYXJ0cz0gbWF4X3BhcnRfYml0KGZvdW5kX3BhcnQpOwotICAgICAgICAgIGlm IChuX2ZpeGVkX3BhcnRzICE9IGtleWluZm8tPmtleV9wYXJ0cyAmJgotICAgICAgICAgICAgICAo UFJFVl9CSVRTKHVpbnQsIG5fZml4ZWRfcGFydHMpIHwgc2pfaW5zaWRlb3V0X21hcCkgPT0KLSAg ICAgICAgICAgICAgIFBSRVZfQklUUyh1aW50LCBrZXlpbmZvLT5rZXlfcGFydHMpKQorICAgICAg ICAgIC8qIE9rLCBjYW4gdXNlIHRoZSBzdHJhdGVneSAqLworICAgICAgICAgIHNqX2luc2lkZV9v dXRfc2Nhbj0ga2V5OworICAgICAgICAgIGlmIChzLT5xdWljayAmJiBzLT5xdWljay0+aW5kZXgg PT0ga2V5ICYmIAorICAgICAgICAgICAgICBzLT5xdWljay0+Z2V0X3R5cGUoKSA9PSBRVUlDS19T RUxFQ1RfSTo6UVNfVFlQRV9SQU5HRSkKICAgICAgICAgICB7Ci0gICAgICAgICAgICAvKgotICAg ICAgICAgICAgICBOb3QgYWxsIHBhcnRzIGFyZSBmaXhlZC4gUHJvZHVjZSBiaXRtYXAgb2YgcmVt YWluaW5nIGJpdHMgYW5kCi0gICAgICAgICAgICAgIGNoZWNrIGlmIGFsbCBvZiB0aGVtIGFyZSBj b3ZlcmVkLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNqX2luc2lkZV9vdXRfc2Nhbj0g VFJVRTsKLSAgICAgICAgICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlVzaW5nIHNqIEluc2lkZU91 dCBzY2FuIikpOwotICAgICAgICAgICAgaWYgKCFuX2ZpeGVkX3BhcnRzKQotICAgICAgICAgICAg ewotICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIEl0J3MgYSBjb25mbHVlbnQgcmVm IHNjYW4uCisgICAgICAgICAgICBzal9pbnNpZGVvdXRfcXVpY2tfc2VsZWN0PSBUUlVFOworICAg ICAgICAgICAgc2pfaW5zaWRlb3V0X3F1aWNrX21heF9zal9rZXlwYXJ0PSBtYXhfc2pfa2V5cGFy dDsKKyAgICAgICAgICB9CisgICAgICAgICAgREJVR19QUklOVCgiaW5mbyIsICgiQ2FuIHVzZSBJ bnNpZGVPdXQgc2NhbiIpKTsKIAotICAgICAgICAgICAgICAgIFRoYXQgaXMsIGFsbCBmb3VuZCBL RVlVU0UgZWxlbWVudHMgcmVmZXIgdG8gSU4tZXF1YWxpdGllcywKLSAgICAgICAgICAgICAgICBh bmQgdGhlcmUgaXMgcmVhbGx5IG5vIHJlZiBhY2Nlc3MgYmVjYXVzZSB0aGVyZSBpcyBubwotICAg ICAgICAgICAgICAgICAgdC5rZXlwYXJ0MCA9IHtib3VuZCBleHByZXNzaW9ufQorICAgICAgICAg IC8qIAorICAgICAgICAgICAgQ2hlY2sgaWYgdGhpcyBpcyBhIGNvbmZsdWVudCB3aGVyZSB0aGVy ZSBhcmUgbm8gdXNhYmxlIGJvdW5kCisgICAgICAgICAgICBJTi1lcXVhbGl0aWVzLCBlLmcuIHdl IGhhdmUKIAotICAgICAgICAgICAgICAgIENhbGN1bGF0ZSB0aGUgY29zdCBvZiBjb21wbGV0ZSBs b29zZSBpbmRleCBzY2FuLgotICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICByZWNvcmRz PSAoZG91YmxlKXMtPnRhYmxlLT5maWxlLT5zdGF0cy5yZWNvcmRzOworICAgICAgICAgICAgICBv dXRlcl9leHByIElOIChTRUxFQ1QgaW5uZXJ0Ymwua2V5IEZST00gLi4uKSAKKyAgICAgICAgICAg IAorICAgICAgICAgICAgYW5kIG91dGVyX2V4cHIgY2Fubm90IGJlIGV2YWx1YXRlZCB5ZXQsIHNv IGl0J3MgYWN0dWFsbHkgZnVsbAorICAgICAgICAgICAgaW5kZXggc2NhbiBhbmQgbm90IGEgcmVm IGFjY2VzcworICAgICAgICAgICovCisgICAgICAgICAgaWYgKCEoZm91bmRfcGFydCAmIDEgKSAm JiAvKiBubyB1c2FibGUgcmVmIGFjY2VzcyBmb3IgMXN0IGtleSBwYXJ0ICovCisgICAgICAgICAg ICAgIHRhYmxlLT5jb3ZlcmluZ19rZXlzLmlzX3NldChrZXkpKQorICAgICAgICAgIHsKKyAgICAg ICAgICAgIERCVUdfUFJJTlQoImluZm8iLCAoIkNhbiB1c2UgZnVsbCBpbmRleCBzY2FuIGZvciBJ bnNpZGVPdXQiKSk7CisgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIGNvc3Qgb2YgY29tcGxl dGUgbG9vc2UgaW5kZXggc2Nhbi4gICovCisgICAgICAgICAgICByZWNvcmRzPSByb3dzMmRvdWJs ZShzLT50YWJsZS0+ZmlsZS0+c3RhdHMucmVjb3Jkcyk7CiAKLSAgICAgICAgICAgICAgLyogVGhl IGNvc3QgaXMgZW50aXJlIGluZGV4IHNjYW4gY29zdCAoZGl2aWRlZCBieSAyKSAqLwotICAgICAg ICAgICAgICBiZXN0X3RpbWU9IHMtPnRhYmxlLT5maWxlLT5pbmRleF9vbmx5X3JlYWRfdGltZShr ZXksIHJlY29yZHMpOworICAgICAgICAgICAgLyogVGhlIGNvc3QgaXMgZW50aXJlIGluZGV4IHNj YW4gY29zdCAoZGl2aWRlZCBieSAyKSAqLworICAgICAgICAgICAgYmVzdF90aW1lPSBzLT50YWJs ZS0+ZmlsZS0+aW5kZXhfb25seV9yZWFkX3RpbWUoa2V5LCByZWNvcmRzKTsKIAotICAgICAgICAg ICAgICAvKiBOb3cgZmlndXJlIGhvdyBtYW55IGRpZmZlcmVudCBrZXlzIHdlIHdpbGwgZ2V0ICov Ci0gICAgICAgICAgICAgIHVsb25nIHJwYzsKLSAgICAgICAgICAgICAgaWYgKChycGM9IGtleWlu Zm8tPnJlY19wZXJfa2V5W2tleWluZm8tPmtleV9wYXJ0cy0xXSkpCi0gICAgICAgICAgICAgICAg cmVjb3Jkcz0gcmVjb3JkcyAvIHJwYzsKLSAgICAgICAgICAgICAgc3RhcnRfa2V5PSBOVUxMOwot ICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgTm93IGZpbmQgb3V0 IGhvdyBtYW55IGRpZmZlcmVudCBrZXlzIHdlIHdpbGwgZ2V0IChmb3Igbm93IHdlCisgICAgICAg ICAgICAgIGlnbm9yZSB0aGUgZmFjdCB0aGF0IHdlIGhhdmUgImtleXBhcnRfaT1jb25zdCIgcmVz dHJpY3Rpb24gZm9yCisgICAgICAgICAgICAgIHNvbWUga2V5IGNvbXBvbmVudHMsIHRoYXQgbWF5 IG1ha2UgdXMgdGhpbmsgdGhpbmsgdGhhdCBsb29zZQorICAgICAgICAgICAgICBzY2FuIHdpbGwg cHJvZHVjZSBtb3JlIGRpc3RpbmN0IHJlY29yZHMgdGhhbiBpdCBhY3R1YWxseSB3aWxsKQorICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgIHVsb25nIHJwYzsKKyAgICAgICAgICAgIGlmICgocnBj PSBrZXlpbmZvLT5yZWNfcGVyX2tleVttYXhfc2pfa2V5cGFydF0pKQorICAgICAgICAgICAgICBy ZWNvcmRzPSByZWNvcmRzIC8gcnBjOworICAgICAgICAgICAgc3RhcnRfa2V5PSBOVUxMOworICAg ICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAg LTU4NTIsNyArNTg5Nyw3IEBAIGJlc3RfYWNjZXNzX3BhdGgoSk9JTiAgICAgICpqb2luLAogICAg ICAgICAgICAgdG1wPSBiZXN0X3RpbWU7ICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5n CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2pfaW5zaWRlX291dF9zY2FuICYmICFzdGFydF9r ZXkpCisgICAgICAgIGlmICgoc2pfaW5zaWRlX291dF9zY2FuICE9IE1BWF9LRVkpICYmICFzdGFy dF9rZXkpCiAgICAgICAgIHsKICAgICAgICAgICB0bXA9IHRtcC8yOwogICAgICAgICAgIGlmIChy ZWNvcmRzKQpAQCAtNTg2OSw4ICs1OTE0LDkgQEAgYmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAg KmpvaW4sCiAgICAgICAgIGJlc3RfbWF4X2tleV9wYXJ0PSBtYXhfa2V5X3BhcnQ7CiAgICAgICAg IGJlc3RfcmVmX2RlcGVuZHNfbWFwPSBmb3VuZF9yZWY7CiAgICAgICAgIGJlc3RfaXNfc2pfaW5z aWRlX291dD0gc2pfaW5zaWRlX291dF9zY2FuOworICAgICAgICBiZXN0X3NqX2tleXBhcnRzPSBt YXhfc2pfa2V5cGFydDsKICAgICAgIH0KLSAgICB9CisgICAgfSAvKiBmb3IgZWFjaCBrZXkgKi8K ICAgICByZWNvcmRzPSBiZXN0X3JlY29yZHM7CiAgIH0KIApAQCAtNTkwOSw2ICs1OTU1LDcgQEAg YmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAgKmpvaW4sCiAgICAgICAgICEgcy0+dGFibGUtPmNv dmVyaW5nX2tleXMuaXNfY2xlYXJfYWxsKCkgJiYgYmVzdF9rZXkgJiYgIXMtPnF1aWNrKSAmJi8v ICgzKQogICAgICAgIShzLT50YWJsZS0+Zm9yY2VfaW5kZXggJiYgYmVzdF9rZXkgJiYgIXMtPnF1 aWNrKSkgICAgICAgICAgICAgICAgIC8vICg0KQogICB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZnVsbCBqb2luCisgICAgc2pfaW5zaWRlX291 dF9zY2FuPSBNQVhfS0VZOwogICAgIGhhX3Jvd3Mgcm5kX3JlY29yZHM9IHMtPmZvdW5kX3JlY29y ZHM7CiAgICAgLyoKICAgICAgIElmIHRoZXJlIGlzIGEgZmlsdGVyaW5nIGNvbmRpdGlvbiBvbiB0 aGUgdGFibGUgKGkuZS4gcmVmIGFuYWx5emVyIGZvdW5kCkBAIC01OTQ4LDYgKzU5OTUsMTEgQEAg YmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAgKmpvaW4sCiAgICAgICB0bXA9IHJlY29yZF9jb3Vu dCAqCiAgICAgICAgIChzLT5xdWljay0+cmVhZF90aW1lICsKICAgICAgICAgIChzLT5mb3VuZF9y ZWNvcmRzIC0gcm5kX3JlY29yZHMpLyhkb3VibGUpIFRJTUVfRk9SX0NPTVBBUkUpOworICAgICAg CisgICAgICBpZiAoc2pfaW5zaWRlb3V0X3F1aWNrX3NlbGVjdCAmJiBpZHggPT0gam9pbi0+Y29u c3RfdGFibGVzKQorICAgICAgeworICAgICAgICBzal9pbnNpZGVfb3V0X3NjYW49IHMtPnF1aWNr LT5pbmRleDsKKyAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTU5OTksNyArNjA1 MSw4IEBAIGJlc3RfYWNjZXNzX3BhdGgoSk9JTiAgICAgICpqb2luLAogICAgICAgYmVzdF9rZXk9 IDA7CiAgICAgICAvKiByYW5nZS9pbmRleF9tZXJnZS9BTEwvaW5kZXggYWNjZXNzIG1ldGhvZCBh cmUgImluZGVwZW5kZW50Iiwgc286ICovCiAgICAgICBiZXN0X3JlZl9kZXBlbmRzX21hcD0gMDsK LSAgICAgIGJlc3RfaXNfc2pfaW5zaWRlX291dD0gRkFMU0U7CisgICAgICBiZXN0X2lzX3NqX2lu c2lkZV9vdXQ9IHNqX2luc2lkZV9vdXRfc2NhbjsKKyAgICAgIGJlc3Rfc2pfa2V5cGFydHM9IHNq X2luc2lkZW91dF9xdWlja19tYXhfc2pfa2V5cGFydDsKICAgICB9CiAgIH0KIApAQCAtNjAwOSw3 ICs2MDYyLDggQEAgYmVzdF9hY2Nlc3NfcGF0aChKT0lOICAgICAgKmpvaW4sCiAgIGpvaW4tPnBv c2l0aW9uc1tpZHhdLmtleT0gICAgICAgICAgYmVzdF9rZXk7CiAgIGpvaW4tPnBvc2l0aW9uc1tp ZHhdLnRhYmxlPSAgICAgICAgczsKICAgam9pbi0+cG9zaXRpb25zW2lkeF0ucmVmX2RlcGVuZF9t YXA9IGJlc3RfcmVmX2RlcGVuZHNfbWFwOwotICBqb2luLT5wb3NpdGlvbnNbaWR4XS51c2VfaW5z aWRlb3V0X3NjYW49IGJlc3RfaXNfc2pfaW5zaWRlX291dDsKKyAgam9pbi0+cG9zaXRpb25zW2lk eF0uaW5zaWRlb3V0X2tleT0gYmVzdF9pc19zal9pbnNpZGVfb3V0OworICBqb2luLT5wb3NpdGlv bnNbaWR4XS5pbnNpZGVvdXRfcGFydHM9IGJlc3Rfc2pfa2V5cGFydHMgKyAxOwogCiAgIGlmICgh YmVzdF9rZXkgJiYKICAgICAgIGlkeCA9PSBqb2luLT5jb25zdF90YWJsZXMgJiYKQEAgLTY5NTIs NyArNzAwNiw3IEBAIGdldF9iZXN0X2NvbWJpbmF0aW9uKEpPSU4gKmpvaW4pCiAgICAgREJVR19Q UklOVCgiaW5mbyIsKCJ0eXBlOiAlZCIsIGotPnR5cGUpKTsKICAgICBpZiAoai0+dHlwZSA9PSBK VF9DT05TVCkKICAgICAgIGNvbnRpbnVlOwkJCQkJLy8gSGFuZGxlZCBpbiBtYWtlX2pvaW5fc3Rh dC4uCi0KKyAgICBqLT5pbnNpZGVvdXRfbWF0Y2hfdGFiPSBOVUxMOwogICAgIGotPnJlZi5rZXkg PSAtMTsKICAgICBqLT5yZWYua2V5X3BhcnRzPTA7CiAKQEAgLTY5NjEsNiArNzAxNSw3IEBAIGdl dF9iZXN0X2NvbWJpbmF0aW9uKEpPSU4gKmpvaW4pCiAgICAgaWYgKGotPmtleXMuaXNfY2xlYXJf YWxsKCkgfHwgIShrZXl1c2U9IGpvaW4tPmJlc3RfcG9zaXRpb25zW3RhYmxlbnJdLmtleSkpCiAg ICAgewogICAgICAgai0+dHlwZT1KVF9BTEw7CisgICAgICBqLT5pbmRleD0gam9pbi0+YmVzdF9w b3NpdGlvbnNbdGFibGVucl0uaW5zaWRlb3V0X2tleTsKICAgICAgIGlmICh0YWJsZW5yICE9IGpv aW4tPmNvbnN0X3RhYmxlcykKIAlqb2luLT5mdWxsX2pvaW49MTsKICAgICB9CkBAIC03MjU1LDYg KzczMTAsNyBAQCBtYWtlX3NpbXBsZV9qb2luKEpPSU4gKmpvaW4sVEFCTEUgKnRtcF90CiAgIGpv aW5fdGFiLT5yZWYua2V5X3BhcnRzPSAwOwogICBqb2luX3RhYi0+Zmx1c2hfd2VlZG91dF90YWJs ZT0gam9pbl90YWItPmNoZWNrX3dlZWRfb3V0X3RhYmxlPSBOVUxMOwogICBqb2luX3RhYi0+ZG9f Zmlyc3RtYXRjaD0gTlVMTDsKKyAgam9pbl90YWItPmluc2lkZW91dF9tYXRjaF90YWI9IE5VTEw7 CiAgIGJ6ZXJvKChjaGFyKikgJmpvaW5fdGFiLT5yZWFkX3JlY29yZCxzaXplb2Yoam9pbl90YWIt PnJlYWRfcmVjb3JkKSk7CiAgIHRtcF90YWJsZS0+c3RhdHVzPTA7CiAgIHRtcF90YWJsZS0+bnVs bF9yb3c9MDsKQEAgLTc1MjMsNyArNzU3OSwxNSBAQCBtYWtlX2pvaW5fc2VsZWN0KEpPSU4gKmpv aW4sU1FMX1NFTEVDVCAqCiAJICB0aGQtPmxleC0+Y3VycmVudF9zZWxlY3QtPm1hc3Rlcl91bml0 KCkgPT0KIAkgICZ0aGQtPmxleC0+dW5pdCkJCS8vIG5vdCB1cHBlciBsZXZlbCBTRUxFQ1QKICAg ICAgICAgam9pbi0+Y29uc3RfdGFibGVfbWFwfD1SQU5EX1RBQkxFX0JJVDsKLSAgICAgIHsJCQkJ CQkvLyBDaGVjayBjb25zdCB0YWJsZXMKKworICAgICAgLyoKKyAgICAgICAgRXh0cmFjdCBleHBy ZXNzaW9ucyB0aGF0IGRlcGVuZCBvbiBjb25zdGFudCB0YWJsZXMKKyAgICAgICAgMS4gQ29uc3Qg cGFydCBvZiB0aGUgam9pbidzIFdIRVJFIGNsYXVzZSBjYW4gYmUgY2hlY2tlZCBpbW1lZGlhdGVs eQorICAgICAgICAgICBhbmQgaWYgaXQgaXMgbm90IHNhdGlzZmllZCB0aGVuIHRoZSBqb2luIGhh cyBlbXB0eSByZXN1bHQKKyAgICAgICAgMi4gQ29uc3RhbnQgcGFydHMgb2Ygb3V0ZXIgam9pbnMn IE9OIGV4cHJlc3Npb25zIG11c3QgYmUgYXR0YWNoZWQgCisgICAgICAgICAgIHRoZXJlIGluc2lk ZSB0aGUgdHJpZ2dlcnMuCisgICAgICAqLworICAgICAgewogICAgICAgICBDT05EICpjb25zdF9j b25kPQogCSAgbWFrZV9jb25kX2Zvcl90YWJsZShjb25kLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgam9pbi0+Y29uc3RfdGFibGVfbWFwLApAQCAtNzc3MCw5ICs3ODM0LDkgQEAgbWFr ZV9qb2luX3NlbGVjdChKT0lOICpqb2luLFNRTF9TRUxFQ1QgKgogCSAgICB0YWItPmtleXM9c2Vs LT5xdWlja19rZXlzOwogICAgICAgICAgICAgdGFiLT5rZXlzLm1lcmdlKHNlbC0+bmVlZGVkX3Jl Zyk7CiAJICAgIHRhYi0+dXNlX3F1aWNrPSAoIXNlbC0+bmVlZGVkX3JlZy5pc19jbGVhcl9hbGwo KSAmJgotCQkJICAgICAoc2VsZWN0LT5xdWlja19rZXlzLmlzX2NsZWFyX2FsbCgpIHx8Ci0JCQkg ICAgICAoc2VsZWN0LT5xdWljayAmJgotCQkJICAgICAgIChzZWxlY3QtPnF1aWNrLT5yZWNvcmRz ID49IDEwMEwpKSkpID8KKwkJCSAgICAgKHNlbC0+cXVpY2tfa2V5cy5pc19jbGVhcl9hbGwoKSB8 fAorCQkJICAgICAgKHNlbC0+cXVpY2sgJiYKKwkJCSAgICAgICAoc2VsLT5xdWljay0+cmVjb3Jk cyA+PSAxMDBMKSkpKSA/CiAJICAgICAgMiA6IDE7CiAJICAgIHNlbC0+cmVhZF90YWJsZXM9IHVz ZWRfdGFibGVzICYgfmN1cnJlbnRfbWFwOwogCSAgfQpAQCAtODI4OCw5ICs4MzUyLDggQEAgbWFr ZV9qb2luX3JlYWRpbmZvKEpPSU4gKmpvaW4sIHVsb25nbG9uZwogICAgIHNvcnRlZD0gMDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBmaXJzdCBtdXN0IGJlIHNvcnRl ZAogICAgIGlmICh0YWItPmluc2lkZW91dF9tYXRjaF90YWIpCiAgICAgewotICAgICAgaWYgKCEo dGFiLT5pbnNpZGVvdXRfYnVmPSAodWNoYXIqKWpvaW4tPnRoZC0+YWxsb2ModGFiLT50YWJsZS0+ a2V5X2luZm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFt0YWItPmluZGV4XS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9sZW5ndGgpKSkKKyAgICAgIGlmICghKHRhYi0+ aW5zaWRlb3V0X2J1Zj0gCisgICAgICAgICAgICAodWNoYXIqKWpvaW4tPnRoZC0+YWxsb2ModGFi LT5pbnNpZGVvdXRfa2V5X2xlbikpKQogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAgICAg c3dpdGNoICh0YWItPnR5cGUpIHsKQEAgLTgzNTEsOCArODQxNCw3IEBAIG1ha2Vfam9pbl9yZWFk aW5mbyhKT0lOICpqb2luLCB1bG9uZ2xvbmcKICAgICAgIGlmICh0YWItPnR5cGUgPT0gSlRfUkVG KQogICAgICAgewogCXRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IGpvaW5fcmVhZF9hbHdheXNfa2V5 OwotCXRhYi0+cmVhZF9yZWNvcmQucmVhZF9yZWNvcmQ9IHRhYi0+aW5zaWRlb3V0X21hdGNoX3Rh Yj8gCi0gICAgICAgICAgIGpvaW5fcmVhZF9uZXh0X3NhbWVfZGlmZiA6IGpvaW5fcmVhZF9uZXh0 X3NhbWU7CisgICAgICAgIHRhYi0+cmVhZF9yZWNvcmQucmVhZF9yZWNvcmQ9IGpvaW5fcmVhZF9u ZXh0X3NhbWU7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0xMzY0MSw5ICsxMzcw MywyNSBAQCBzdWJfc2VsZWN0KEpPSU4gKmpvaW4sSk9JTl9UQUIgKmpvaW5fdGFiCiAgICAgTm90 ZTogcHNlcmdleSBoYXMgYWRkZWQgdGhlIDJuZCBwYXJ0IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uOyB0aGUgCiAgICAgY2hhbmdlIHNob3VsZCBwcm9iYWJseSBiZSBtYWRlIGluIDUuMSwgdG9v LgogICAqLworICBib29sIHNraXBfb3Zlcj0gRkFMU0U7CiAgIHdoaWxlIChyYyA9PSBORVNURURf TE9PUF9PSyAmJiBqb2luLT5yZXR1cm5fdGFiID49IGpvaW5fdGFiKQogICB7CisgICAgaWYgKGpv aW5fdGFiLT5pbnNpZGVvdXRfbWF0Y2hfdGFiICYmIGpvaW5fdGFiLT5pbnNpZGVvdXRfbWF0Y2hf dGFiLT5mb3VuZF9tYXRjaCkKKyAgICB7CisgICAgICBLRVkgKmtleT0gam9pbl90YWItPnRhYmxl LT5rZXlfaW5mbyArIGpvaW5fdGFiLT5pbmRleDsKKyAgICAgIGtleV9jb3B5KGpvaW5fdGFiLT5p bnNpZGVvdXRfYnVmLCBpbmZvLT5yZWNvcmQsIGtleSwgCisgICAgICAgICAgICAgICBqb2luX3Rh Yi0+aW5zaWRlb3V0X2tleV9sZW4pOworICAgICAgc2tpcF9vdmVyPSBUUlVFOworICAgIH0KICAg ICBlcnJvcj0gaW5mby0+cmVhZF9yZWNvcmQoaW5mbyk7CisKKyAgICBpZiAoc2tpcF9vdmVyICYm ICFlcnJvciAmJiAKKyAgICAgICAgIWtleV9jbXAoam9pbl90YWItPnRhYmxlLT5rZXlfaW5mb1tq b2luX3RhYi0+aW5kZXhdLmtleV9wYXJ0LAorICAgICAgICAgICAgICAgICBqb2luX3RhYi0+aW5z aWRlb3V0X2J1Ziwgam9pbl90YWItPmluc2lkZW91dF9rZXlfbGVuKSkKKyAgICB7CisgICAgICBj b250aW51ZTsKKyAgICB9CisKICAgICByYz0gZXZhbHVhdGVfam9pbl9yZWNvcmQoam9pbiwgam9p bl90YWIsIGVycm9yKTsKICAgfQogCkBAIC0xNDM3MSwzNyArMTQ0NDksNiBAQCBqb2luX25vX21v cmVfcmVjb3JkcyhSRUFEX1JFQ09SRCAqaW5mbyBfCiAgIHJldHVybiAtMTsKIH0KIAotc3RhdGlj IGludAotam9pbl9yZWFkX25leHRfc2FtZV9kaWZmKFJFQURfUkVDT1JEICppbmZvKQotewotICBU QUJMRSAqdGFibGU9IGluZm8tPnRhYmxlOwotICBKT0lOX1RBQiAqdGFiPXRhYmxlLT5yZWdpbmZv LmpvaW5fdGFiOwotICBpZiAodGFiLT5pbnNpZGVvdXRfbWF0Y2hfdGFiLT5mb3VuZF9tYXRjaCkK LSAgewotICAgIEtFWSAqa2V5PSB0YWItPnRhYmxlLT5rZXlfaW5mbyArIHRhYi0+aW5kZXg7Ci0g ICAgZG8gCi0gICAgewotICAgICAgaW50IGVycm9yOwotICAgICAgLyogU2F2ZSBpbmRleCB0dXBs ZSBmcm9tIHJlY29yZCB0byB0aGUgYnVmZmVyICovCi0gICAgICBrZXlfY29weSh0YWItPmluc2lk ZW91dF9idWYsIGluZm8tPnJlY29yZCwga2V5LCAwKTsKLQotICAgICAgaWYgKChlcnJvcj10YWJs ZS0+ZmlsZS0+aW5kZXhfbmV4dF9zYW1lKHRhYmxlLT5yZWNvcmRbMF0sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiLT5yZWYua2V5X2J1ZmYsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiLT5yZWYua2V5X2xl bmd0aCkpKQotICAgICAgewotICAgICAgICBpZiAoZXJyb3IgIT0gSEFfRVJSX0VORF9PRl9GSUxF KQotICAgICAgICAgIHJldHVybiByZXBvcnRfZXJyb3IodGFibGUsIGVycm9yKTsKLSAgICAgICAg dGFibGUtPnN0YXR1cz0gU1RBVFVTX0dBUkJBR0U7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICAg IH0KLSAgICB9IHdoaWxlICgha2V5X2NtcCh0YWItPnRhYmxlLT5rZXlfaW5mb1t0YWItPmluZGV4 XS5rZXlfcGFydCwgCi0gICAgICAgICAgICAgICAgICAgICAgdGFiLT5pbnNpZGVvdXRfYnVmLCBr ZXktPmtleV9sZW5ndGgpKTsKLSAgICB0YWItPmluc2lkZW91dF9tYXRjaF90YWItPmZvdW5kX21h dGNoPSAwOwotICAgIHJldHVybiAwOwotICB9Ci0gIGVsc2UKLSAgICByZXR1cm4gam9pbl9yZWFk X25leHRfc2FtZShpbmZvKTsKLX0KIAogc3RhdGljIGludAogam9pbl9yZWFkX25leHRfc2FtZShS RUFEX1JFQ09SRCAqaW5mbykKQEAgLTE0NDk4LDE3ICsxNDU0NSw3IEBAIGpvaW5fcmVhZF9maXJz dChKT0lOX1RBQiAqdGFiKQogICB0YWItPnJlYWRfcmVjb3JkLmZpbGU9dGFibGUtPmZpbGU7CiAg IHRhYi0+cmVhZF9yZWNvcmQuaW5kZXg9dGFiLT5pbmRleDsKICAgdGFiLT5yZWFkX3JlY29yZC5y ZWNvcmQ9dGFibGUtPnJlY29yZFswXTsKLSAgaWYgKHRhYi0+aW5zaWRlb3V0X21hdGNoX3RhYikK LSAgewotICAgIHRhYi0+cmVhZF9yZWNvcmQuZG9faW5zaWRlb3V0X3NjYW49IHRhYjsKLSAgICB0 YWItPnJlYWRfcmVjb3JkLnJlYWRfcmVjb3JkPWpvaW5fcmVhZF9uZXh0X2RpZmZlcmVudDsKLSAg ICB0YWItPmluc2lkZW91dF9tYXRjaF90YWItPmZvdW5kX21hdGNoPSAwOwotICB9Ci0gIGVsc2UK LSAgewotICAgIHRhYi0+cmVhZF9yZWNvcmQucmVhZF9yZWNvcmQ9am9pbl9yZWFkX25leHQ7Ci0g ICAgdGFiLT5yZWFkX3JlY29yZC5kb19pbnNpZGVvdXRfc2Nhbj0gMDsKLSAgfQorICB0YWItPnJl YWRfcmVjb3JkLnJlYWRfcmVjb3JkPWpvaW5fcmVhZF9uZXh0OwogCiAgIGlmICghdGFibGUtPmZp bGUtPmluaXRlZCkKICAgICB0YWJsZS0+ZmlsZS0+aGFfaW5kZXhfaW5pdCh0YWItPmluZGV4LCB0 YWItPnNvcnRlZCk7CkBAIC0xNDUyMywzMiArMTQ1NjAsNiBAQCBqb2luX3JlYWRfZmlyc3QoSk9J Tl9UQUIgKnRhYikKIAogCiBzdGF0aWMgaW50Ci1qb2luX3JlYWRfbmV4dF9kaWZmZXJlbnQoUkVB RF9SRUNPUkQgKmluZm8pCi17Ci0gIEpPSU5fVEFCICp0YWI9IGluZm8tPmRvX2luc2lkZW91dF9z Y2FuOwotICBpZiAodGFiLT5pbnNpZGVvdXRfbWF0Y2hfdGFiLT5mb3VuZF9tYXRjaCkKLSAgewot ICAgIEtFWSAqa2V5PSB0YWItPnRhYmxlLT5rZXlfaW5mbyArIHRhYi0+aW5kZXg7Ci0gICAgZG8g Ci0gICAgewotICAgICAgaW50IGVycm9yOwotICAgICAgLyogU2F2ZSBpbmRleCB0dXBsZSBmcm9t IHJlY29yZCB0byB0aGUgYnVmZmVyICovCi0gICAgICBrZXlfY29weSh0YWItPmluc2lkZW91dF9i dWYsIGluZm8tPnJlY29yZCwga2V5LCAwKTsKLQotICAgICAgaWYgKChlcnJvcj1pbmZvLT5maWxl LT5pbmRleF9uZXh0KGluZm8tPnJlY29yZCkpKQotICAgICAgICByZXR1cm4gcmVwb3J0X2Vycm9y KGluZm8tPnRhYmxlLCBlcnJvcik7Ci0gICAgICAKLSAgICB9IHdoaWxlICgha2V5X2NtcCh0YWIt PnRhYmxlLT5rZXlfaW5mb1t0YWItPmluZGV4XS5rZXlfcGFydCwgCi0gICAgICAgICAgICAgICAg ICAgICAgdGFiLT5pbnNpZGVvdXRfYnVmLCBrZXktPmtleV9sZW5ndGgpKTsKLSAgICB0YWItPmlu c2lkZW91dF9tYXRjaF90YWItPmZvdW5kX21hdGNoPSAwOwotICAgIHJldHVybiAwOwotICB9Ci0g IGVsc2UKLSAgICByZXR1cm4gam9pbl9yZWFkX25leHQoaW5mbyk7Ci19Ci0KLQotc3RhdGljIGlu dAogam9pbl9yZWFkX25leHQoUkVBRF9SRUNPUkQgKmluZm8pCiB7CiAgIGludCBlcnJvcjsKCj09 PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3NlbGVjdC5oJwotLS0gYS9zcWwvc3FsX3NlbGVjdC5o CTIwMDgtMDYtMDUgMTY6MTE6MjIgKzAwMDAKKysrIGIvc3FsL3NxbF9zZWxlY3QuaAkyMDA4LTA3 LTEwIDE2OjAyOjM4ICswMDAwCkBAIC0yNzIsMTMgKzI3MiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBz dF9qb2luX3RhYmxlIHsKICAgc3RydWN0IHN0X2pvaW5fdGFibGUgICpkb19maXJzdG1hdGNoOwog IAogICAvKiAKLSAgICAgcHRyICAtIHRoaXMgam9pbiB0YWIgc2hvdWxkIGRvIGFuIEluc2lkZU91 dCBzY2FuLiBQb2ludHMgCi0gICAgICAgICAgICB0byB0aGUgdGFiIGZvciB3aGljaCB3ZSdsbCBu ZWVkIHRvIGNoZWNrIHRhYi0+Zm91bmRfbWF0Y2guCi0KKyAgICAgcHRyICAtIFdlJ3JlIGRvaW5n IGFuZCBJbnNpZGVPdXQgc2NhbiwgYW5kIHRoaXMgaXMgdGhlIGZpcnN0IChha2EKKyAgICAgICAg ICAgICJkcml2aW5nIiBqb2luIHRhYikuIHB0ciB0byB0aGUgbGFzdCB0YWIsIGZvciB3aGljaCB3 ZSdsbCBuZWVkIAorICAgICAgICAgICAgdG8gY2hlY2sgdGFiLT5mb3VuZF9tYXRjaCB0byBzZWUg aWYgdGhlIGN1cnJlbnQgdmFsdWUgZ3JvdXAgaGFkCisgICAgICAgICAgICBhIG1hdGNoLgogICAg ICBOVUxMIC0gTm90IGFuIGluc2lkZW91dCBzY2FuLgogICAqLwogICBzdHJ1Y3Qgc3Rfam9pbl90 YWJsZSAqaW5zaWRlb3V0X21hdGNoX3RhYjsKLSAgdWNoYXIgKmluc2lkZW91dF9idWY7IC8vIEJ1 ZmZlciB0byBzYXZlIGluZGV4IHR1cGxlIHRvIGJlIGFibGUgdG8gc2tpcCBkdXBzCisgIC8qIEJ1 ZmZlciB0byBzYXZlIGluZGV4IHR1cGxlIHRvIGJlIGFibGUgdG8gc2tpcCBkdXBsaWNhdGVzICov CisgIHVjaGFyICppbnNpZGVvdXRfYnVmOworICAKKyAgLyogSG93IG1hbnkga2V5IGNvbXBvbmVu dHMgdG8gc3RvcmUgaW4gdGhlIGFib3ZlICovCisgIHVpbnQgaW5zaWRlb3V0X2tleV9sZW47CiAK ICAgLyogVXNlZCBieSBJbnNpZGVPdXQgc2Nhbi4gSnVzdCBzZXQgdG8gdHJ1ZSB3aGVuIGhhdmUg Zm91bmQgYSByb3cuICovCiAgIGJvb2wgZm91bmRfbWF0Y2g7CkBAIC0zNDgsOCArMzUzLDE2IEBA IHR5cGVkZWYgc3RydWN0IHN0X3Bvc2l0aW9uCiAKICAgLyogSWYgcmVmLWJhc2VkIGFjY2VzcyBp cyB1c2VkOiBiaXRtYXAgb2YgdGFibGVzIHRoaXMgdGFibGUgZGVwZW5kcyBvbiAgKi8KICAgdGFi bGVfbWFwIHJlZl9kZXBlbmRfbWFwOwotCi0gIGJvb2wgdXNlX2luc2lkZW91dF9zY2FuOworICAK KyAgLyogCisgICAga2V5bm8gIC0gVGhpcyBpcyBhbiBpbnNpZGVvdXQgc2NhbiBvbiB0aGlzIGtl eS4gSWYga2V5dXNlIGlzIE5VTEwgdGhlbgorICAgICAgICAgICAgICB0aGlzIGlzIGEgZnVsbCBp bmRleCBzY2FuLCBvdGhlcndpc2UgdGhpcyBpcyBhIHJlZiArIGluc2lkZW91dAorICAgICAgICAg ICAgICBzY2FuIChhbmQga2V5bm8gbWF0Y2hlcyB0aGUgS0VVU0UncykKKyAgICBNQVhfS0VZIC0g VGhpcyBpcyBub3QgYW4gSW5zaWRlT3V0IHNjYW4KKyAgKi8KKyAgdWludCBpbnNpZGVvdXRfa2V5 OworICAvKiBOdW1iZXIgb2Yga2V5IHBhcnRzIHRvIGJlIHVzZWQgYnkgaW5zaWRlb3V0ICovCisg IHVpbnQgaW5zaWRlb3V0X3BhcnRzOwogfSBQT1NJVElPTjsKIAogCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3FsL3NxbF95YWNjLnl5JwotLS0gYS9zcWwvc3FsX3lhY2MueXkJMjAwOC0wNy0xNCAxNDo1 Njo0OSArMDAwMAorKysgYi9zcWwvc3FsX3lhY2MueXkJMjAwOC0wNy0xOSAxNDoyMTo1MSArMDAw MApAQCAtNTg5LDEwICs1ODksMTAgQEAgYm9vbCBteV95eW92ZXJmbG93KHNob3J0ICoqYSwgWVlT VFlQRSAqKgogCiAlcHVyZV9wYXJzZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBXZSBoYXZlIHRocmVhZHMgKi8KIC8qCi0gIEN1cnJlbnRseSB0aGVyZSBhcmUgMTcyIHNo aWZ0L3JlZHVjZSBjb25mbGljdHMuCisgIEN1cnJlbnRseSB0aGVyZSBhcmUgMTY5IHNoaWZ0L3Jl ZHVjZSBjb25mbGljdHMuCiAgIFdlIHNob3VsZCBub3QgaW50cm9kdWNlIG5ldyBjb25mbGljdHMg YW55IG1vcmUuCiAqLwotJWV4cGVjdCAxNzIKKyVleHBlY3QgMTY5CiAKIC8qCiAgICBDb21tZW50 cyBmb3IgVE9LRU5TLgpAQCAtMjYxMCw2ICsyNjEwLDExIEBAIHNwX2hjb25kX2VsZW1lbnQ6CiBz cF9jb25kOgogICAgICAgICAgIHVsb25nX251bQogICAgICAgICAgIHsgLyogbXlzcWwgZXJybm8g Ki8KKyAgICAgICAgICAgIGlmICgkMSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICBteV9lcnJvcihFUl9XUk9OR19WQUxVRSwgTVlGKDApLCAiQ09ORElUSU9OIiwgIjAiKTsKKyAg ICAgICAgICAgICAgTVlTUUxfWVlBQk9SVDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICQk PSAoc3BfY29uZF90eXBlX3QgKilZWVRIRC0+YWxsb2Moc2l6ZW9mKHNwX2NvbmRfdHlwZV90KSk7 CiAgICAgICAgICAgICAkJC0+dHlwZT0gc3BfY29uZF90eXBlX3Q6Om51bWJlcjsKICAgICAgICAg ICAgICQkLT5teXNxbGVycj0gJDE7CkBAIC00NzczLDEwICs0Nzc4LDYgQEAga2V5X2RlZjoKICAg ICAgICAgICAgIC8qIE9ubHkgdXNlZCBmb3IgQUxURVIgVEFCTEUuIElnbm9yZWQgb3RoZXJ3aXNl LiAqLwogICAgICAgICAgICAgbGV4LT5hbHRlcl9pbmZvLmZsYWdzfD0gQUxURVJfRk9SRUlHTl9L RVk7CiAgICAgICAgICAgfQotICAgICAgICB8IGNvbnN0cmFpbnQgb3B0X2NoZWNrX2NvbnN0cmFp bnQKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBMZXgtPmNvbF9saXN0LmVtcHR5KCk7IC8qIEFs bG9jZWQgYnkgc3FsX2FsbG9jICovCi0gICAgICAgICAgfQogICAgICAgICB8IG9wdF9jb25zdHJh aW50IGNoZWNrX2NvbnN0cmFpbnQKICAgICAgICAgICB7CiAgICAgICAgICAgICBMZXgtPmNvbF9s aXN0LmVtcHR5KCk7IC8qIEFsbG9jZWQgYnkgc3FsX2FsbG9jICovCkBAIC00Nzg5LDcgKzQ3OTAs NyBAQCBvcHRfY2hlY2tfY29uc3RyYWludDoKICAgICAgICAgOwogCiBjaGVja19jb25zdHJhaW50 OgotICAgICAgICAgIENIRUNLX1NZTSBleHByCisgICAgICAgICAgQ0hFQ0tfU1lNICcoJyBleHBy ICcpJwogICAgICAgICA7CiAKIG9wdF9jb25zdHJhaW50OgoKPT09IG1vZGlmaWVkIGZpbGUgJ3Nx bC9zdHJ1Y3RzLmgnCi0tLSBhL3NxbC9zdHJ1Y3RzLmgJMjAwOC0wNi0yMyAxMTo1NToyNCArMDAw MAorKysgYi9zcWwvc3RydWN0cy5oCTIwMDgtMDctMTAgMTY6MDI6MzggKzAwMDAKQEAgLTEzNyw3 ICsxMzcsNiBAQCB0eXBlZGVmIHN0cnVjdCBzdF9yZWFkX3JlY29yZCB7CQkJLyogUGFyCiAgIHVj aGFyCSpjYWNoZSwqY2FjaGVfcG9zLCpjYWNoZV9lbmQsKnJlYWRfcG9zaXRpb25zOwogICBJT19D QUNIRSAqaW9fY2FjaGU7CiAgIGJvb2wgcHJpbnRfZXJyb3IsIGlnbm9yZV9ub3RfZm91bmRfcm93 czsKLSAgc3RydWN0IHN0X2pvaW5fdGFibGUgKmRvX2luc2lkZW91dF9zY2FuOwogfSBSRUFEX1JF Q09SRDsKIAogCgo=