From: Jon Olav Hauglid Date: May 27 2011 8:22am Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3407) Bug#11853126 List-Archive: http://lists.mysql.com/commits/138287 X-Bug: 11853126 Message-Id: <201105270822.p4R8MJm2008825@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5107162213678868767==" --===============5107162213678868767== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUveC9teXNxbC01LjUtYnVnMTE4NTMxMjYvIGJhc2VkIG9u IHJldmlkOmFuaXRoYS5nb3BpQG9yYWNsZS5jb20tMjAxMTA1MjcwNDUyMDAtdzFrMWs4YWppdjIz eWsyYQoKIDM0MDcgSm9uIE9sYXYgSGF1Z2xpZAkyMDExLTA1LTI3CiAgICAgIEJ1ZyMxMTg1MzEy NiBSRS1FTkFCTEUgQ09OQ1VSUkVOVCBSRUFEUyBXSElMRSBDUkVBVElORwogICAgICAgICAgICAg ICAgICAgU0VDT05EQVJZIElOREVYIElOIElOTk9EQgogICAgICAKICAgICAgVGhlIHBhdGNoZXMg Zm9yIEJ1ZyMxMTc1MTM4OCBhbmQgQnVnIzExNzg0MDU2IGVuYWJsZWQgY29uY3VycmVudAogICAg ICByZWFkcyB3aGlsZSBjcmVhdGluZyBzZWNvbmRhcnkgaW5kZXhlcyBpbiBJbm5vREIuIEhvd2V2 ZXIsIHRoZXkKICAgICAgaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24uIFRoaXMgcmVncmVzc2lvbiBv Y2N1cmVkIGlmIEFMVEVSIFRBQkxFCiAgICAgIGZhaWxlZCBhZnRlciB0aGUgaW5kZXggaGFkIGJl ZW4gYWRkZWQsIGZvciBleGFtcGxlIGR1cmluZyB0aGUKICAgICAgbG9jayB1cGdyYWRlIG5lZWRl ZCB0byB1cGRhdGUgLkZSTS4gSWYgdGhpcyBoYXBwZW5lZCwgSW5ub0RCCiAgICAgIGFuZCB0aGUg c2VydmVyIGdvdCBvdXQgb2Ygc3luYyB3aXRoIHJlZ2FyZHMgdG8gd2hpY2ggaW5kZXhlcwogICAg ICBhY3R1YWxseSBleGlzdGVkLiBUaGVyZWZvcmUgdGhlIHBhdGNoIGZvciBCdWcjMTE4MTU2MDAg YWdhaW4KICAgICAgZGlzYWJsZWQgY29uY3VycmVudCByZWFkcy4KICAgICAgCiAgICAgIFRoaXMg cGF0Y2ggcmUtZW5hYmxlcyBjb25jdXJyZW50IHJlYWRzLiBUaGUgb3JpZ2luYWwgcmVncmVzc2lv bgogICAgICBpcyBmaXhlZCBieSBzcGxpdHRpbmcgdGhlIEFERCBJTkRFWCBvcGVyYXRpb24gaW50 byB0d28gcGFydHMuCiAgICAgIEZpcnN0IHRoZSBuZXcgaW5kZXggaXMgY3JlYXRlZCBidXQgbm90 IG1hZGUgYWN0aXZlLiBUaGlzIGlzCiAgICAgIGRvbmUgd2hpbGUgY29uY3VycmVudCByZWFkcyBh cmUgYWxsb3dlZC4gVGhlIHNlY29uZCBwYXJ0IG9mCiAgICAgIHRoZSBvcGVyYXRpb24gbWFrZXMg dGhlIGluZGV4IGFjdGl2ZSAob3IgcmV2ZXJ0cyB0aGUgY2hhbmdlKS4KICAgICAgVGhpcyBpcyBk b25lIGFmdGVyIGxvY2sgdXBncmFkZSwgd2hpY2ggcHJldmVudHMgdGhlIG9yaWdpbmFsCiAgICAg IHJlZ3Jlc3Npb24uCiAgICAgIAogICAgICBJbiBvcmRlciB0byBpbXBsZW1lbnQgdGhpcyBjaGFu Z2UsIHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBzdG9yYWdlCiAgICAgIEFQSSBmb3IgaW4tcGxhY2Ug aW5kZXggY3JlYXRpb24uIGhhbmRsZXI6OmFkZF9pbmRleCgpIGlzIHNwbGl0CiAgICAgIGludG8g dHdvIGZ1bmN0aW9ucywgaGFuZGxlcl9hZGRfaW5kZXgoKSBhbmQKICAgICAgaGFuZGxlcjo6Zmlu YWxfYWRkX2luZGV4KCkuIFRoZSBmb3JtZXIgZm9yIGNyZWF0aW5nIGluZGV4ZXMgd2l0aG91dAog ICAgICBtYWtpbmcgdGhlbSB2aXNpYmxlIGFuZCB0aGUgbGF0dGVyIGZvciBjb21taXRpbmcgKGku ZS4gbWFraW5nCiAgICAgIHZpc2libGUpIG5ldyBpbmRleGVzIG9yIHJldmVydGluZyB0aGUgY2hh bmdlcy4KICAgICAgCiAgICAgIExhcmdlIHBhcnRzIG9mIHRoaXMgcGF0Y2ggd2VyZSB3cml0dGVu IGJ5IE1hcmtvIE3DpGtlbMOkLgogICAgICAKICAgICAgVGVzdCBjYXNlIGFkZGVkIHRvIGlubm9k Yl9teXNxbF9sb2NrLnRlc3QuCgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9pbm5v ZGJfbXlzcWxfbG9jay5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5j LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAogICAgICBt eXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAogICAgICBzcWwvaGFfcGFydGl0aW9u LmNjCiAgICAgIHNxbC9oYV9wYXJ0aXRpb24uaAogICAgICBzcWwvaGFuZGxlci5oCiAgICAgIHNx bC9zcWxfdGFibGUuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5j YwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxfbG9jay5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9p bm5vZGJfbXlzcWxfbG9jay5yZXN1bHQJMjAxMS0wMy0wOSAxNTowNjoxMyArMDAwMAorKysgYi9t eXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX2xvY2sucmVzdWx0CTIwMTEtMDUtMjcgMDg6MjI6MDUg KzAwMDAKQEAgLTE3MCwzICsxNzAsMjcgQEAgaWQJdmFsdWUKIDEJMTIzNDUKIENPTU1JVDsKIERS T1AgVEFCTEUgdDE7CisjCisjIEJ1ZyMxMTgxNTYwMCBbRVJST1JdIElOTk9EQiBDT1VMRCBOT1Qg RklORCBJTkRFWCBQUklNQVJZCisjICAgICAgICAgICAgICBLRVkgTk8gMCBGT1IgVEFCTEUgSU4g RVJST1IgTE9HIAorIworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CitDUkVBVEUgVEFCTEUgdDEg KGlkIElOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBFTkdJTkUgPSBJbm5vREI7CitJTlNFUlQg SU5UTyB0MSBWQUxVRVMgKDEsIDEyMzQ1KTsKKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitTVEFSVCBU UkFOU0FDVElPTjsKK1NFTEVDVCAqIEZST00gdDE7CitpZAl2YWx1ZQorMQkxMjM0NQorIyBDb25u ZWN0aW9uIGNvbjEKK1NFVCBsb2NrX3dhaXRfdGltZW91dD0xOworQUxURVIgVEFCTEUgdDEgQURE IElOREVYIGlkeCh2YWx1ZSk7CitFUlJPUiBIWTAwMDogTG9jayB3YWl0IHRpbWVvdXQgZXhjZWVk ZWQ7IHRyeSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uCitBTFRFUiBUQUJMRSB0MSBBREQgSU5ERVgg aWR4KHZhbHVlKTsKK0VSUk9SIEhZMDAwOiBMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5 IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24KKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitTRUxFQ1QgKiBG Uk9NIHQxOworaWQJdmFsdWUKKzEJMTIzNDUKK0NPTU1JVDsKK0RST1AgVEFCTEUgdDE7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdCcKLS0t IGEvbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdAkyMDExLTA0LTA3IDA5OjQx OjIwICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxfc3luYy5yZXN1bHQJMjAx MS0wNS0yNyAwODoyMjowNSArMDAwMApAQCAtOTQsNiArOTQsNzQgQEAgU0VUIERFQlVHX1NZTkM9 ICdSRVNFVCc7CiAjIEJ1ZyM0MjIzMCBkdXJpbmcgYWRkIGluZGV4LCBjYW5ub3QgZG8gcXVlcmll cyBvbiBzdG9yYWdlIGVuZ2luZXMKICMgICAgICAgICAgIHRoYXQgaW1wbGVtZW50IGFkZF9pbmRl eAogIwotIwotIyBESVNBQkxFRCBkdWUgdG8gQnVnIzExODE1NjAwCi0jCitEUk9QIERBVEFCQVNF IElGIEVYSVNUUyBkYjE7CitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKKyMgVGVzdCAxOiBTZWNv bmRhcnkgaW5kZXgsIHNob3VsZCBub3QgYmxvY2sgcmVhZHMgKG9yaWdpbmFsIHRlc3QgY2FzZSku CisjIENvbm5lY3Rpb24gZGVmYXVsdAorQ1JFQVRFIERBVEFCQVNFIGRiMTsKK0NSRUFURSBUQUJM RSBkYjEudDEoaWQgSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1 ZSBJTlQpIGVuZ2luZT1pbm5vZGI7CitJTlNFUlQgSU5UTyBkYjEudDEodmFsdWUpIFZBTFVFUyAo MSksICgyKTsKK1NFVCBERUJVR19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFM IG1hbmFnZSBXQUlUX0ZPUiBxdWVyeSI7CisjIFNlbmRpbmc6CitBTFRFUiBUQUJMRSBkYjEudDEg QUREIElOREVYKHZhbHVlKTsKKyMgQ29ubmVjdGlvbiBjb24xCitTRVQgREVCVUdfU1lOQz0gIm5v dyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIGRiMTsKK1NFTEVDVCAqIEZST00gdDE7CitpZAl2YWx1 ZQorMQkxCisyCTIKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisjIENvbm5l Y3Rpb24gZGVmYXVsdAorIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZh bHVlKQorRFJPUCBEQVRBQkFTRSBkYjE7CisjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGlj aXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCitDUkVBVEUgVEFCTEUgdDEoYSBJTlQgTk9UIE5VTEws IGIgSU5UIE5PVCBOVUxMKSBlbmdpbmU9aW5ub2RiOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90 YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGlu ZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSk7CisjIENvbm5lY3Rpb24gY29u MQorU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworIyBT ZW5kaW5nOgorU0VMRUNUICogRlJPTSB0MTsKKyMgQ29ubmVjdGlvbiBjb24yCisjIFdhaXRpbmcg Zm9yIFNFTEVDVCB0byBiZSBibG9ja2VkIGJ5IHRoZSBtZXRhZGF0YSBsb2NrIG9uIHQxCitTRVQg REVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMg UmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKQorIyBDb25uZWN0aW9u IGNvbjEKKyMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQorYQliCisjIFRlc3QgMzogUHJpbWFy eSBpbmRleCAoZXhwbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCisjIENvbm5lY3Rpb24gZGVm YXVsdAorQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOworU0VUIERFQlVHX1NZTkM9ICJhbHRl cl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2Vu ZGluZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSk7CisjIENvbm5lY3Rpb24g Y29uMQorU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKKyMgU2VuZGluZzoK K1NFTEVDVCAqIEZST00gdDE7CisjIENvbm5lY3Rpb24gY29uMgorIyBXYWl0aW5nIGZvciBTRUxF Q1QgdG8gYmUgYmxvY2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorU0VUIERFQlVHX1NZ TkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKyMgQ29ubmVjdGlvbiBkZWZhdWx0CisjIFJlYXBpbmc6 IEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkKKyMgQ29ubmVjdGlvbiBjb24xCisj IFJlYXBpbmc6IFNFTEVDVCAqIEZST00gdDEKK2EJYgorIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlx dWUgaW5kZXgsIHNob3VsZCBub3QgYmxvY2sgcmVhZHMuCisjIENvbm5lY3Rpb24gZGVmYXVsdAor U0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdB SVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgKGIp OworIyBDb25uZWN0aW9uIGNvbjEKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFn ZSI7CitTRUxFQ1QgKiBGUk9NIHQxOworYQliCitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwg cXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEg QUREIFVOSVFVRSAoYikKK1NFVCBERUJVR19TWU5DPSAiUkVTRVQiOworRFJPUCBUQUJMRSB0MTsK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdCcK LS0tIGEvbXlzcWwtdGVzdC90L2lubm9kYl9teXNxbF9sb2NrLnRlc3QJMjAxMS0wMy0wOSAxNTow NjoxMyArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAkyMDEx LTA1LTI3IDA4OjIyOjA1ICswMDAwCkBAIC0zMTEsNiArMzExLDQ0IEBAIERST1AgVEFCTEUgdDE7 CiBkaXNjb25uZWN0IGNvbjE7CiAKIAorLS1lY2hvICMKKy0tZWNobyAjIEJ1ZyMxMTgxNTYwMCBb RVJST1JdIElOTk9EQiBDT1VMRCBOT1QgRklORCBJTkRFWCBQUklNQVJZCistLWVjaG8gIyAgICAg ICAgICAgICAgS0VZIE5PIDAgRk9SIFRBQkxFIElOIEVSUk9SIExPRyAKKy0tZWNobyAjCisKKy0t ZGlzYWJsZV93YXJuaW5ncworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CistLWVuYWJsZV93YXJu aW5ncworCitDUkVBVEUgVEFCTEUgdDEgKGlkIElOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBF TkdJTkUgPSBJbm5vREI7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsIDEyMzQ1KTsKKworLS1j b25uZWN0IChjb24xLGxvY2FsaG9zdCxyb290KQorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1 bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKK1NUQVJUIFRSQU5TQUNUSU9OOworU0VMRUNUICogRlJP TSB0MTsKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCistLWNvbm5lY3Rpb24gY29uMQorU0VU IGxvY2tfd2FpdF90aW1lb3V0PTE7CisjIFRlc3Qgd2l0aCB0d28gdGltZW91dHMsIGFzIHRoZSBm aXJzdCB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gKKyMgb25seSB3b3JrZWQgd2l0aCBvbmUgdGltZW91 dC4KKy0tZXJyb3IgRVJfTE9DS19XQUlUX1RJTUVPVVQKK0FMVEVSIFRBQkxFIHQxIEFERCBJTkRF WCBpZHgodmFsdWUpOworLS1lcnJvciBFUl9MT0NLX1dBSVRfVElNRU9VVAorQUxURVIgVEFCTEUg dDEgQUREIElOREVYIGlkeCh2YWx1ZSk7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAor LS1jb25uZWN0aW9uIGRlZmF1bHQKK1NFTEVDVCAqIEZST00gdDE7CitDT01NSVQ7CisKK0RST1Ag VEFCTEUgdDE7CitkaXNjb25uZWN0IGNvbjE7CisKKwogIyBDaGVjayB0aGF0IGFsbCBjb25uZWN0 aW9ucyBvcGVuZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUgYXJlIHJlYWxseQogIyBnb25l IHNvIGV4ZWN1dGlvbiBvZiBvdGhlciB0ZXN0cyB3b24ndCBiZSBhZmZlY3RlZCBieSB0aGVpciBw cmVzZW5jZS4KIC0tc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9jb3VudF9zZXNzaW9ucy5pbmMK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdCcK LS0tIGEvbXlzcWwtdGVzdC90L2lubm9kYl9teXNxbF9zeW5jLnRlc3QJMjAxMS0wMy0yMiAxMzoz NDowNCArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAkyMDEx LTA1LTI3IDA4OjIyOjA1ICswMDAwCkBAIC0xNTIsMTMzICsxNTIsMTI5IEBAIGRpc2Nvbm5lY3Qg Y29uMTsKIC0tZWNobyAjICAgICAgICAgICB0aGF0IGltcGxlbWVudCBhZGRfaW5kZXgKIC0tZWNo byAjCiAKLS0tZWNobyAjCi0tLWVjaG8gIyBESVNBQkxFRCBkdWUgdG8gQnVnIzExODE1NjAwCi0t LWVjaG8gIworLS1kaXNhYmxlX3dhcm5pbmdzCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7 CitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2Nvbm5lY3Qo Y29uMSxsb2NhbGhvc3Qscm9vdCk7Citjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOworCist LWVjaG8gIyBUZXN0IDE6IFNlY29uZGFyeSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcyAo b3JpZ2luYWwgdGVzdCBjYXNlKS4KKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25u ZWN0aW9uIGRlZmF1bHQ7CitDUkVBVEUgREFUQUJBU0UgZGIxOworQ1JFQVRFIFRBQkxFIGRiMS50 MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZhbHVlIElOVCkg ZW5naW5lPWlubm9kYjsKK0lOU0VSVCBJTlRPIGRiMS50MSh2YWx1ZSkgVkFMVUVTICgxKSwgKDIp OworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIgVEFCTEUg ZGIxLnQxIEFERCBJTkRFWCh2YWx1ZSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25u ZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworIyBO ZWl0aGVyIG9mIHRoZXNlIHR3byBzdGF0ZW1lbnRzIHNob3VsZCBiZSBibG9ja2VkCitVU0UgZGIx OworU0VMRUNUICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7 CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1l Y2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgZGIxLnQxIEFERCBJTkRFWCh2YWx1ZSkKKy0tcmVh cAorRFJPUCBEQVRBQkFTRSBkYjE7CisKKy0tZWNobyAjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAo aW1wbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCisKK0NSRUFURSBUQUJMRSB0MShhIElOVCBO T1QgTlVMTCwgYiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitTRVQgREVCVUdfU1lOQz0g ImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOwor LS1lY2hvICMgU2VuZGluZzoKKy0tc2VuZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVY KGEpCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQorY29ubmVjdGlvbiBjb24xOworU0VUIERF QlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworLS1lY2hvICMgU2Vu ZGluZzoKKy0tc2VuZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29u MgorY29ubmVjdGlvbiBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJs b2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNF TEVDVCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBX SEVSRSBzdGF0ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZv PSdTRUxFQ1QgKiBGUk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5j CitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0 aW9uIGRlZmF1bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVS IFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0 aW9uIGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZS T00gdDEKKy0tcmVhcAorCistLWVjaG8gIyBUZXN0IDM6IFByaW1hcnkgaW5kZXggKGV4cGxpY2l0 KSwgc2hvdWxkIGJsb2NrIHJlYWRzLgorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nv bm5lY3Rpb24gZGVmYXVsdDsKK0FMVEVSIFRBQkxFIHQxIERST1AgSU5ERVggYTsKK1NFVCBERUJV R19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBx dWVyeSI7CistLWVjaG8gIyBTZW5kaW5nOgorLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBQUklN QVJZIEtFWSAoYSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNvbjE7 CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworLS1lY2hvICMgU2VuZGlu ZzoKKy0tc2VuZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgor Y29ubmVjdGlvbiBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJsb2Nr ZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVD VCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBXSEVS RSBzdGF0ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZvPSdT RUxFQ1QgKiBGUk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCitT RVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0aW9u IGRlZmF1bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRB QkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0aW9u IGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00g dDEKKy0tcmVhcAorCistLWVjaG8gIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlxdWUgaW5kZXgsIHNo b3VsZCBub3QgYmxvY2sgcmVhZHMuCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29u bmVjdGlvbiBkZWZhdWx0OworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5 cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNl bmQgQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKworLS1lY2hvICMgQ29ubmVjdGlvbiBj b24xCitjb25uZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5h Z2UiOworU0VMRUNUICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVy eSI7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0Owor LS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKy0tcmVhcAog Ci0jLS1kaXNhYmxlX3dhcm5pbmdzCi0jRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgZGIxOwotI0RS T1AgVEFCTEUgSUYgRVhJU1RTIHQxOwotIy0tZW5hYmxlX3dhcm5pbmdzCi0jCi0jY29ubmVjdChj b24xLGxvY2FsaG9zdCxyb290KTsKLSNjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOwotIwot Iy0tZWNobyAjIFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRz IChvcmlnaW5hbCB0ZXN0IGNhc2UpLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAot I2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSNDUkVBVEUgREFUQUJBU0UgZGIxOwotI0NSRUFURSBUQUJM RSBkYjEudDEoaWQgSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1 ZSBJTlQpIGVuZ2luZT1pbm5vZGI7Ci0jSU5TRVJUIElOVE8gZGIxLnQxKHZhbHVlKSBWQUxVRVMg KDEpLCAoMik7Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdO QUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBB TFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQotIwotIy0tZWNobyAjIENvbm5lY3Rp b24gY29uMQotI2Nvbm5lY3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZP UiBtYW5hZ2UiOwotIyAjIE5laXRoZXIgb2YgdGhlc2UgdHdvIHN0YXRlbWVudHMgc2hvdWxkIGJl IGJsb2NrZWQKLSNVU0UgZGIxOwotI1NFTEVDVCAqIEZST00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9 ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNj b25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgZGIxLnQx IEFERCBJTkRFWCh2YWx1ZSkKLSMtLXJlYXAKLSNEUk9QIERBVEFCQVNFIGRiMTsKLSMKLSMtLWVj aG8gIyBUZXN0IDI6IFByaW1hcnkgaW5kZXggKGltcGxpY2l0KSwgc2hvdWxkIGJsb2NrIHJlYWRz LgotIwotI0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwgYiBJTlQgTk9UIE5VTEwpIGVu Z2luZT1pbm5vZGI7Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBT SUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2Vu ZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCi0jCi0jLS1lY2hvICMgQ29ubmVj dGlvbiBjb24xCi0jY29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRf Rk9SIG1hbmFnZSI7Ci0jVVNFIHRlc3Q7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgU0VM RUNUICogRlJPTSB0MQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgotI2Nvbm5lY3Rpb24g Y29uMjsKLSMtLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0aGUg bWV0YWRhdGEgbG9jayBvbiB0MQotI2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VOVCgq KT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAotIyAgV0hFUkUgc3RhdGU9 ICdXYWl0aW5nIGZvciB0YWJsZSBtZXRhZGF0YSBsb2NrJwotIyAgQU5EIGluZm89J1NFTEVDVCAq IEZST00gdDEnOwotIy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCi0jU0VUIERF QlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRl ZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFC TEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKQotIy0tcmVhcAotIwotIy0tZWNobyAjIENvbm5lY3Rp b24gY29uMQotI2Nvbm5lY3Rpb24gY29uMTsKLSMtLWVjaG8gIyBSZWFwaW5nOiBTRUxFQ1QgKiBG Uk9NIHQxCi0jLS1yZWFwCi0jCi0jLS1lY2hvICMgVGVzdCAzOiBQcmltYXJ5IGluZGV4IChleHBs aWNpdCksIHNob3VsZCBibG9jayByZWFkcy4KLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1 bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOwot I1NFVCBERUJVR19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBX QUlUX0ZPUiBxdWVyeSI7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgQUxURVIgVEFCTEUg dDEgQUREIFBSSU1BUlkgS0VZIChhKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nv bm5lY3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwot Iy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIFNFTEVDVCAqIEZST00gdDEKLSMKLSMtLWVjaG8g IyBDb25uZWN0aW9uIGNvbjIKLSNjb25uZWN0aW9uIGNvbjI7Ci0jLS1lY2hvICMgV2FpdGluZyBm b3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKLSNsZXQg JHdhaXRfY29uZGl0aW9uPSBTRUxFQ1QgQ09VTlQoKik9IDEgRlJPTSBpbmZvcm1hdGlvbl9zY2hl bWEucHJvY2Vzc2xpc3QKLSMgIFdIRVJFIHN0YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRh dGEgbG9jaycKLSMgIEFORCBpbmZvPSdTRUxFQ1QgKiBGUk9NIHQxJzsKLSMtLXNvdXJjZSBpbmNs dWRlL3dhaXRfY29uZGl0aW9uLmluYwotI1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVy eSI7Ci0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Ci0jY29ubmVjdGlvbiBkZWZhdWx0 OwotIy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkK LSMtLXJlYXAKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKLSNjb25uZWN0aW9uIGNvbjE7 Ci0jLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQotIy0tcmVhcAotIwotIy0tZWNo byAjIFRlc3QgNDogU2Vjb25kYXJ5IHVuaXF1ZSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFk cy4KLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7 Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJM RSB0MSBBREQgVU5JUVVFIChiKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5l Y3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwotI1NF TEVDVCAqIEZST00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMK LSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1l Y2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKLSMtLXJlYXAKLSMK LSNkaXNjb25uZWN0IGNvbjE7Ci0jZGlzY29ubmVjdCBjb24yOwotI1NFVCBERUJVR19TWU5DPSAi UkVTRVQiOwotI0RST1AgVEFCTEUgdDE7CitkaXNjb25uZWN0IGNvbjE7CitkaXNjb25uZWN0IGNv bjI7CitTRVQgREVCVUdfU1lOQz0gIlJFU0VUIjsKK0RST1AgVEFCTEUgdDE7CiAKIAogIyBDaGVj ayB0aGF0IGFsbCBjb25uZWN0aW9ucyBvcGVuZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUg YXJlIHJlYWxseQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uY2MnCi0tLSBh L3NxbC9oYV9wYXJ0aXRpb24uY2MJMjAxMS0wNS0yMSAwODoyMTowOCArMDAwMAorKysgYi9zcWwv aGFfcGFydGl0aW9uLmNjCTIwMTEtMDUtMjcgMDg6MjI6MDUgKzAwMDAKQEAgLTY2NTYsMjIgKzY2 NTYsMjkgQEAgYm9vbCBoYV9wYXJ0aXRpb246OmNoZWNrX2lmX2luY29tcGF0aWJsZQogCiAKIC8q KgotICBTdXBwb3J0IG9mIGZhc3Qgb3Igb25saW5lIGFkZC9kcm9wIGluZGV4CisgIFN1cHBvcnQg b2YgaW4tcGxhY2UgYWRkL2Ryb3AgaW5kZXgKICovCi1pbnQgaGFfcGFydGl0aW9uOjphZGRfaW5k ZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cykKK2lu dCBoYV9wYXJ0aXRpb246OmFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZv LCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJf YWRkX2luZGV4ICoqYWRkKQogewogICBoYW5kbGVyICoqZmlsZTsKICAgaW50IHJldD0gMDsKIAog ICBEQlVHX0VOVEVSKCJoYV9wYXJ0aXRpb246OmFkZF9pbmRleCIpOworICAqYWRkPSBuZXcgaGFu ZGxlcl9hZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBudW1fb2Zfa2V5cyk7CiAgIC8qCiAgICAg VGhlcmUgaGFzIGFscmVhZHkgYmVlbiBhIGNoZWNrIGluIGZpeF9wYXJ0aXRpb25fZnVuYyBpbiBt eXNxbF9hbHRlcl90YWJsZQogICAgIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWNoIGNoZWNrcyBmb3Ig dW5pcXVlL3ByaW1hcnkga2V5IHZpb2xhdGlvbnMgb2YgdGhlCiAgICAgcGFydGl0aW9uaW5nIGZ1 bmN0aW9uLiBTbyBubyBuZWVkIGZvciBleHRyYSBjaGVjayBoZXJlLgogICAqLwogICBmb3IgKGZp bGU9IG1fZmlsZTsgKmZpbGU7IGZpbGUrKykKLSAgICBpZiAoKHJldD0gICgqZmlsZSktPmFkZF9p bmRleCh0YWJsZV9hcmcsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpKQorICB7CisgICAgaGFuZGxl cl9hZGRfaW5kZXggKmFkZF9pbmRleDsKKyAgICBpZiAoKHJldD0gKCpmaWxlKS0+YWRkX2luZGV4 KHRhYmxlX2FyZywga2V5X2luZm8sIG51bV9vZl9rZXlzLCAmYWRkX2luZGV4KSkpCisgICAgICBn b3RvIGVycjsKKyAgICBpZiAoKHJldD0gKCpmaWxlKS0+ZmluYWxfYWRkX2luZGV4KGFkZF9pbmRl eCwgdHJ1ZSkpKQogICAgICAgZ290byBlcnI7CisgIH0KICAgREJVR19SRVRVUk4ocmV0KTsKIGVy cjoKICAgaWYgKGZpbGUgPiBtX2ZpbGUpCkBAIC02Njk2LDYgKzY3MDMsNDIgQEAgZXJyOgogfQog CiAKKy8qKgorICAgU2Vjb25kIHBoYXNlIG9mIGluLXBsYWNlIGFkZCBpbmRleC4KKworICAgQG5v dGUgSWYgY29tbWl0IGlzIGZhbHNlLCBpbmRleCBjaGFuZ2VzIGFyZSByb2xsZWQgYmFjayBieSBk cm9wcGluZyB0aGUKKyAgICAgICAgIGFkZGVkIGluZGV4ZXMuIElmIGNvbW1pdCBpcyB0cnVlLCBu b3RoaW5nIGlzIGRvbmUgYXMgdGhlIGluZGV4ZXMKKyAgICAgICAgIHdlcmUgYWxyZWFkeSBtYWRl IGFjdGl2ZSBpbiA6OmFkZF9pbmRleCgpCisgKi8KKworaW50IGhhX3BhcnRpdGlvbjo6ZmluYWxf YWRkX2luZGV4KGhhbmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KQoreworICBEQlVH X0VOVEVSKCJoYV9wYXJ0aXRpb246OmZpbmFsX2FkZF9pbmRleCIpOworICAvLyBSb2xsYmFjayBi eSBkcm9wcGluZyBpbmRleGVzLgorICBpZiAoIWNvbW1pdCkKKyAgeworICAgIFRBQkxFICp0YWJs ZV9hcmc9IGFkZC0+dGFibGU7CisgICAgdWludCBudW1fb2Zfa2V5cz0gYWRkLT5udW1fb2Zfa2V5 czsKKyAgICBoYW5kbGVyICoqZmlsZTsKKyAgICB1aW50ICprZXlfbnVtYmVycz0gKHVpbnQqKSBo YV90aGQoKS0+YWxsb2Moc2l6ZW9mKHVpbnQpICogbnVtX29mX2tleXMpOworICAgIHVpbnQgb2xk X251bV9vZl9rZXlzPSB0YWJsZV9hcmctPnMtPmtleXM7CisgICAgdWludCBpOworICAgIC8qIFRo ZSBuZXdseSBjcmVhdGVkIGtleXMgaGF2ZSB0aGUgbGFzdCBpZCdzICovCisgICAgZm9yIChpPSAw OyBpIDwgbnVtX29mX2tleXM7IGkrKykKKyAgICAgIGtleV9udW1iZXJzW2ldPSBpICsgb2xkX251 bV9vZl9rZXlzOworICAgIGlmICghdGFibGVfYXJnLT5rZXlfaW5mbykKKyAgICAgIHRhYmxlX2Fy Zy0+a2V5X2luZm89IGFkZC0+a2V5X2luZm87CisgICAgZm9yIChmaWxlPSBtX2ZpbGU7ICpmaWxl OyBmaWxlKyspCisgICAgeworICAgICAgKHZvaWQpICgqZmlsZSktPnByZXBhcmVfZHJvcF9pbmRl eCh0YWJsZV9hcmcsIGtleV9udW1iZXJzLCBudW1fb2Zfa2V5cyk7CisgICAgICAodm9pZCkgKCpm aWxlKS0+ZmluYWxfZHJvcF9pbmRleCh0YWJsZV9hcmcpOworICAgIH0KKyAgICBpZiAodGFibGVf YXJnLT5rZXlfaW5mbyA9PSBhZGQtPmtleV9pbmZvKQorICAgICAgdGFibGVfYXJnLT5rZXlfaW5m bz0gTlVMTDsKKyAgfQorICBEQlVHX1JFVFVSTigwKTsKK30KKwogaW50IGhhX3BhcnRpdGlvbjo6 cHJlcGFyZV9kcm9wX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG51bV9vZl9rZXlzKQogewoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uaCcKLS0tIGEvc3FsL2hhX3BhcnRpdGlvbi5o CTIwMTEtMDQtMjAgMTc6NTM6MDggKzAwMDAKKysrIGIvc3FsL2hhX3BhcnRpdGlvbi5oCTIwMTEt MDUtMjcgMDg6MjI6MDUgKzAwMDAKQEAgLTEwNTUsNyArMTA1NSw5IEBAIHB1YmxpYzoKICAgICBU aGV5IGFyZSB1c2VkIGZvciBvbi1saW5lL2Zhc3QgYWx0ZXIgdGFibGUgYWRkL2Ryb3AgaW5kZXg6 CiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAqLwotICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFC TEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cyk7CisgIHZpcnR1 YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51 bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiph ZGQpOworICB2aXJ0dWFsIGludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFk ZCwgYm9vbCBjb21taXQpOwogICB2aXJ0dWFsIGludCBwcmVwYXJlX2Ryb3BfaW5kZXgoVEFCTEUg KnRhYmxlX2FyZywgdWludCAqa2V5X251bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQgbnVtX29mX2tleXMpOwogICB2aXJ0dWFsIGludCBmaW5hbF9kcm9wX2luZGV4KFRB QkxFICp0YWJsZV9hcmcpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYW5kbGVyLmgnCi0tLSBh L3NxbC9oYW5kbGVyLmgJMjAxMS0wNS0wNSAyMzo1MDozMSArMDAwMAorKysgYi9zcWwvaGFuZGxl ci5oCTIwMTEtMDUtMjcgMDg6MjI6MDUgKzAwMDAKQEAgLTExNTksNiArMTE1OSwyNyBAQCB1aW50 IGNhbGN1bGF0ZV9rZXlfbGVuKFRBQkxFICosIHVpbnQsIGNvCiAqLwogI2RlZmluZSBtYWtlX3By ZXZfa2V5cGFydF9tYXAoTikgKCgoa2V5X3BhcnRfbWFwKTEgPDwgKE4pKSAtIDEpCiAKKworLyoq CisgIEluZGV4IGNyZWF0aW9uIGNvbnRleHQuCisgIENyZWF0ZWQgYnkgaGFuZGxlcjo6YWRkX2lu ZGV4KCkgYW5kIGZyZWVkIGJ5IGhhbmRsZXI6OmZpbmFsX2FkZF9pbmRleCgpLgorKi8KKworY2xh c3MgaGFuZGxlcl9hZGRfaW5kZXgKK3sKK3B1YmxpYzoKKyAgLyogVGFibGUgd2hlcmUgdGhlIGlu ZGV4ZXMgYXJlIGFkZGVkICovCisgIFRBQkxFKiBjb25zdCB0YWJsZTsKKyAgLyogSW5kZXhlcyBi ZWluZyBjcmVhdGVkICovCisgIEtFWSogY29uc3Qga2V5X2luZm87CisgIC8qIFNpemUgb2Yga2V5 X2luZm9bXSAqLworICBjb25zdCB1aW50IG51bV9vZl9rZXlzOworICBoYW5kbGVyX2FkZF9pbmRl eChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvX2FyZywgdWludCBudW1fb2Zfa2V5c19h cmcpCisgICAgOiB0YWJsZSAodGFibGVfYXJnKSwga2V5X2luZm8gKGtleV9pbmZvX2FyZyksIG51 bV9vZl9rZXlzIChudW1fb2Zfa2V5c19hcmcpCisgIHt9CisgIHZpcnR1YWwgfmhhbmRsZXJfYWRk X2luZGV4KCkge30KK307CisKIC8qKgogICBUaGUgaGFuZGxlciBjbGFzcyBpcyB0aGUgaW50ZXJm YWNlIGZvciBkeW5hbWljYWxseSBsb2FkYWJsZQogICBzdG9yYWdlIGVuZ2luZXMuIERvIG5vdCBh ZGQgaWZkZWZzIGFuZCB0YWtlIGNhcmUgd2hlbiBhZGRpbmcgb3IKQEAgLTE3MTcsOCArMTczOCwz NiBAQCBwdWJsaWM6CiAKICAgdmlydHVhbCB1bG9uZyBpbmRleF9mbGFncyh1aW50IGlkeCwgdWlu dCBwYXJ0LCBib29sIGFsbF9wYXJ0cykgY29uc3QgPTA7CiAKLSAgdmlydHVhbCBpbnQgYWRkX2lu ZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMpCisv KioKKyAgIEZpcnN0IHBoYXNlIG9mIGluLXBsYWNlIGFkZCBpbmRleC4KKyAgIEhhbmRsZXJzIGFy ZSBzdXBwb3NlZCB0byBjcmVhdGUgbmV3IGluZGV4ZXMgaGVyZSBidXQgbm90IG1ha2UgdGhlbQor ICAgdmlzaWJsZS4KKworICAgQHBhcmFtIHRhYmxlX2FyZyAgIFRhYmxlIHRvIGFkZCBpbmRleCB0 bworICAgQHBhcmFtIGtleV9pbmZvICAgIEluZm9ybWF0aW9uIGFib3V0IG5ldyBpbmRleGVzCisg ICBAcGFyYW0gbnVtX29mX2tleSAgTnVtYmVyIG9mIG5ldyBpbmRleGVzCisgICBAcGFyYW0gYWRk W291dF0gICAgQ29udGV4dCBvZiBoYW5kbGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIG5lZWRlZAor ICAgICAgICAgICAgICAgICAgICAgIGZvciBmaW5hbF9hZGRfaW5kZXgoKS4KKworICAgQG5vdGUg VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggbGVzcyB0aGFuIGV4Y2x1c2l2ZSBtZXRh ZGF0YQorICAgbG9jayBkZXBlbmRpbmcgb24gd2hpY2ggZmxhZ3MgYXJlIGxpc3RlZCBpbiBhbHRl cl90YWJsZV9mbGFncy4KKyovCisgIHZpcnR1YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVf YXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAg ICAgICAgaGFuZGxlcl9hZGRfaW5kZXggKiphZGQpCisgIHsgcmV0dXJuIChIQV9FUlJfV1JPTkdf Q09NTUFORCk7IH0KKworLyoqCisgICBTZWNvbmQgYW5kIGxhc3QgcGhhc2Ugb2YgaW4tcGxhY2Ug YWRkIGluZGV4LgorICAgQ29tbWl0IG9yIHJvbGxiYWNrIHBlbmRpbmcgbmV3IGluZGV4ZXMuCisK KyAgIEBwYXJhbSBhZGQgICAgIENvbnRleHQgb2YgaGFuZGxlciBzcGVjaWZpYyBpbmZvcm1hdGlv biBmcm9tIGFkZF9pbmRleCgpLgorICAgQHBhcmFtIGNvbW1pdCAgSWYgdHJ1ZSwgY29tbWl0LiBJ ZiBmYWxzZSwgcm9sbGJhY2sgaW5kZXggY2hhbmdlcy4KKworICAgQG5vdGUgVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgd2l0aCBleGNsdXNpdmUgbWV0YWRhdGEgbG9jay4KKyovCisgIHZpcnR1YWwg aW50IGZpbmFsX2FkZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRkLCBib29sIGNvbW1pdCkK ICAgeyByZXR1cm4gKEhBX0VSUl9XUk9OR19DT01NQU5EKTsgfQorCiAgIHZpcnR1YWwgaW50IHBy ZXBhcmVfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCB1aW50ICprZXlfbnVtLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBudW1fb2Zfa2V5cykKICAgeyByZXR1cm4g KEhBX0VSUl9XUk9OR19DT01NQU5EKTsgfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfdGFi bGUuY2MnCi0tLSBhL3NxbC9zcWxfdGFibGUuY2MJMjAxMS0wNS0yMSAwODoyMTowOCArMDAwMAor KysgYi9zcWwvc3FsX3RhYmxlLmNjCTIwMTEtMDUtMjcgMDg6MjI6MDUgKzAwMDAKQEAgLTU2ODAs NiArNTY4MCw4IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hhciAqbmUKICAg dWludCBpbmRleF9kcm9wX2NvdW50PSAwOwogICB1aW50ICppbmRleF9kcm9wX2J1ZmZlcj0gTlVM TDsKICAgdWludCBpbmRleF9hZGRfY291bnQ9IDA7CisgIGhhbmRsZXJfYWRkX2luZGV4ICphZGQ9 IE5VTEw7CisgIGJvb2wgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7CiAgIHVpbnQg KmluZGV4X2FkZF9idWZmZXI9IE5VTEw7CiAgIHVpbnQgY2FuZGlkYXRlX2tleV9jb3VudD0gMDsK ICAgYm9vbCBub19wazsKQEAgLTY0MzQsNiArNjQzNiw5IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFi bGUoVEhEICp0aGQsY2hhciAqbmUKICAgfQogICB0aGQtPmNvdW50X2N1dGVkX2ZpZWxkcz0gQ0hF Q0tfRklFTERfSUdOT1JFOwogCisgIGlmIChlcnJvcikKKyAgICBnb3RvIGVycl9uZXdfdGFibGVf Y2xlYW51cDsKKwogICAvKiBJZiB3ZSBkaWQgbm90IG5lZWQgdG8gY29weSwgd2UgbWlnaHQgc3Rp bGwgbmVlZCB0byBhZGQvZHJvcCBpbmRleGVzLiAqLwogICBpZiAoISBuZXdfdGFibGUpCiAgIHsK QEAgLTY0NjUsNyArNjQ3MCw4IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQsY2hh ciAqbmUKICAgICAgICAgICBrZXlfcGFydC0+ZmllbGQ9IHRhYmxlLT5maWVsZFtrZXlfcGFydC0+ ZmllbGRucl07CiAgICAgICB9CiAgICAgICAvKiBBZGQgdGhlIGluZGV4ZXMuICovCi0gICAgICBp ZiAoKGVycm9yPSB0YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRhYmxlLCBrZXlfaW5mbywgaW5kZXhf YWRkX2NvdW50KSkpCisgICAgICBpZiAoKGVycm9yPSB0YWJsZS0+ZmlsZS0+YWRkX2luZGV4KHRh YmxlLCBrZXlfaW5mbywgaW5kZXhfYWRkX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmYWRkKSkpCiAgICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAg RXhjaGFuZ2UgdGhlIGtleV9pbmZvIGZvciB0aGUgZXJyb3IgbWVzc2FnZS4gSWYgd2UgZXhjaGFu Z2UKQEAgLTY0NzcsMTEgKzY0ODMsMjcgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRo ZCxjaGFyICpuZQogICAgICAgICB0YWJsZS0+a2V5X2luZm89IHNhdmVfa2V5X2luZm87CiAgICAg ICAgIGdvdG8gZXJyX25ld190YWJsZV9jbGVhbnVwOwogICAgICAgfQorICAgICAgcGVuZGluZ19p bnBsYWNlX2FkZF9pbmRleD0gdHJ1ZTsKICAgICB9CiAgICAgLyplbmQgb2YgaWYgKGluZGV4X2Fk ZF9jb3VudCkqLwogCiAgICAgaWYgKGluZGV4X2Ryb3BfY291bnQpCiAgICAgeworICAgICAgLyog Q3VycmVudGx5IHdlIG11c3QgZmluYWxpemUgYWRkIGluZGV4IGlmIHdlIGFsc28gZHJvcCBpbmRl eGVzICovCisgICAgICBpZiAocGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleCkKKyAgICAgIHsKKyAg ICAgICAgLyogQ29tbWl0dGluZyBpbmRleCBjaGFuZ2VzIG5lZWRzIGV4Y2x1c2l2ZSBtZXRhZGF0 YSBsb2NrLiAqLworICAgICAgICBEQlVHX0FTU0VSVCh0aGQtPm1kbF9jb250ZXh0LmlzX2xvY2tf b3duZXIoTURMX2tleTo6VEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YWJsZV9saXN0LT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2xpc3QtPnRhYmxlX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRExfRVhDTFVT SVZFKSk7CisgICAgICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgo YWRkLCB0cnVlKSkpCisgICAgICAgIHsKKyAgICAgICAgICB0YWJsZS0+ZmlsZS0+cHJpbnRfZXJy b3IoZXJyb3IsIE1ZRigwKSk7CisgICAgICAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7 CisgICAgICAgIH0KKyAgICAgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7Cisg ICAgICB9CiAgICAgICAvKiBUaGUgcHJlcGFyZV9kcm9wX2luZGV4KCkgbWV0aG9kIHRha2VzIGFu IGFycmF5IG9mIGtleSBudW1iZXJzLiAqLwogICAgICAga2V5X251bWJlcnM9ICh1aW50KikgdGhk LT5hbGxvYyhzaXplb2YodWludCkgKiBpbmRleF9kcm9wX2NvdW50KTsKICAgICAgIGtleW5vX3A9 IGtleV9udW1iZXJzOwpAQCAtNjUyMiwxMSArNjU0NCwxNCBAQCBib29sIG15c3FsX2FsdGVyX3Rh YmxlKFRIRCAqdGhkLGNoYXIgKm5lCiAgIH0KICAgLyplbmQgb2YgaWYgKCEgbmV3X3RhYmxlKSBm b3IgYWRkL2Ryb3AgaW5kZXgqLwogCi0gIGlmIChlcnJvcikKLSAgICBnb3RvIGVycl9uZXdfdGFi bGVfY2xlYW51cDsKLQogICBpZiAodGFibGUtPnMtPnRtcF90YWJsZSAhPSBOT19UTVBfVEFCTEUp CiAgIHsKKyAgICAvKgorICAgICAgSW4tcGxhY2Ugb3BlcmF0aW9ucyBhcmUgbm90IHN1cHBvcnRl ZCBmb3IgdGVtcG9yYXJ5IHRhYmxlcywgc28KKyAgICAgIHdlIGRvbid0IGhhdmUgdG8gY2FsbCBm aW5hbF9hZGRfaW5kZXgoKSBpbiB0aGlzIGNhc2UuIFRoZSBhc3NlcnQKKyAgICAgIHZlcmlmaWVz IHRoYXQgaW4tcGxhY2UgYWRkIGluZGV4IGhhcyBub3QgYmVlbiBkb25lLgorICAgICovCisgICAg REJVR19BU1NFUlQoIXBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXgpOwogICAgIC8qIENsb3NlIGxv Y2sgaWYgdGhpcyBpcyBhIHRyYW5zYWN0aW9uYWwgdGFibGUgKi8KICAgICBpZiAodGhkLT5sb2Nr KQogICAgIHsKQEAgLTY1OTMsOCArNjYxOCwyNSBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRI RCAqdGhkLGNoYXIgKm5lCiAgICAgbXlfY2FzZWRuX3N0cihmaWxlc19jaGFyc2V0X2luZm8sIG9s ZF9uYW1lKTsKIAogICBpZiAod2FpdF93aGlsZV90YWJsZV9pc191c2VkKHRoZCwgdGFibGUsIEhB X0VYVFJBX1BSRVBBUkVfRk9SX1JFTkFNRSkpCisgIHsKKyAgICBpZiAocGVuZGluZ19pbnBsYWNl X2FkZF9pbmRleCkKKyAgICB7CisgICAgICBwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4PSBmYWxz ZTsKKyAgICAgIHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgoYWRkLCBmYWxzZSk7CisgICAg fQorICAgIC8vIE1hcmsgdGhpcyBUQUJMRSBpbnN0YW5jZSBhcyBzdGFsZSB0byBhdm9pZCBvdXQt b2Ytc3luYyBpbmRleCBpbmZvcm1hdGlvbi4KKyAgICB0YWJsZS0+bV9uZWVkc19yZW9wZW49IHRy dWU7CiAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7Ci0KKyAgfQorICBpZiAocGVuZGlu Z19pbnBsYWNlX2FkZF9pbmRleCkKKyAgeworICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9 IGZhbHNlOworICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5maW5hbF9hZGRfaW5kZXgoYWRk LCB0cnVlKSkpCisgICAgeworICAgICAgdGFibGUtPmZpbGUtPnByaW50X2Vycm9yKGVycm9yLCBN WUYoMCkpOworICAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7CisgICAgfQorICB9CiAK ICAgY2xvc2VfYWxsX3RhYmxlc19mb3JfbmFtZSh0aGQsIHRhYmxlLT5zLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld19uYW1lICE9IHRhYmxlX25hbWUgfHwgbmV3X2RiICE9IGRiKTsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCTIwMTEtMDUtMjYg MTU6MDk6MTYgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5j YwkyMDExLTA1LTI3IDA4OjIyOjA1ICswMDAwCkBAIC0yNjIxLDggKzI2MjEsMTAgQEAgaW5ub2Jh c2VfYWx0ZXJfdGFibGVfZmxhZ3MoCiAJdWludAlmbGFncykKIHsKIAlyZXR1cm4oSEFfSU5QTEFD RV9BRERfSU5ERVhfTk9fUkVBRF9XUklURQorCQl8IEhBX0lOUExBQ0VfQUREX0lOREVYX05PX1dS SVRFCiAJCXwgSEFfSU5QTEFDRV9EUk9QX0lOREVYX05PX1JFQURfV1JJVEUKIAkJfCBIQV9JTlBM QUNFX0FERF9VTklRVUVfSU5ERVhfTk9fUkVBRF9XUklURQorCQl8IEhBX0lOUExBQ0VfQUREX1VO SVFVRV9JTkRFWF9OT19XUklURQogCQl8IEhBX0lOUExBQ0VfRFJPUF9VTklRVUVfSU5ERVhfTk9f UkVBRF9XUklURQogCQl8IEhBX0lOUExBQ0VfQUREX1BLX0lOREVYX05PX1JFQURfV1JJVEUpOwog fQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIu aCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCTIwMTEtMDQtMTEg MTQ6MDM6MzIgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5o CTIwMTEtMDUtMjcgMDg6MjI6MDUgKzAwMDAKQEAgLTIxNSw3ICsyMTUsOSBAQCBjbGFzcyBoYV9p bm5vYmFzZTogcHVibGljIGhhbmRsZXIKIAlib29sIHByaW1hcnlfa2V5X2lzX2NsdXN0ZXJlZCgp OwogCWludCBjbXBfcmVmKGNvbnN0IHVjaGFyICpyZWYxLCBjb25zdCB1Y2hhciAqcmVmMik7CiAJ LyoqIEZhc3QgaW5kZXggY3JlYXRpb24gKHNtYXJ0IEFMVEVSIFRBQkxFKSBAc2VlIGhhbmRsZXIw YWx0ZXIuY2MgQHsgKi8KLQlpbnQgYWRkX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5 X2luZm8sIHVpbnQgbnVtX29mX2tleXMpOworCWludCBhZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2Fy ZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cywKKwkJICAgICAgaGFuZGxlcl9hZGRf aW5kZXggKiphZGQpOworCWludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFk ZCwgYm9vbCBjb21taXQpOwogCWludCBwcmVwYXJlX2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxlX2Fy ZywgdWludCAqa2V5X251bSwKIAkJCSAgICAgICB1aW50IG51bV9vZl9rZXlzKTsKIAlpbnQgZmlu YWxfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJnKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJMjAxMS0wNC0xMSAxNDowMzozMiArMDAwMAor KysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwkyMDExLTA1LTI3 IDA4OjIyOjA1ICswMDAwCkBAIC02MTksNiArNjE5LDE4IEBAIGlubm9iYXNlX2NyZWF0ZV90ZW1w b3JhcnlfdGFibGVuYW1lKAogCXJldHVybihuYW1lKTsKIH0KIAorY2xhc3MgaGFfaW5ub2Jhc2Vf YWRkX2luZGV4IDogcHVibGljIGhhbmRsZXJfYWRkX2luZGV4Cit7CitwdWJsaWM6CisJLyoqIHRh YmxlIHdoZXJlIHRoZSBpbmRleGVzIGFyZSBiZWluZyBjcmVhdGVkICovCisJZGljdF90YWJsZV90 KiBpbmRleGVkX3RhYmxlOworCWhhX2lubm9iYXNlX2FkZF9pbmRleChUQUJMRSogdGFibGUsIEtF WSoga2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMsCisJCQkgICAgICBkaWN0X3RhYmxlX3QqIGlu ZGV4ZWRfdGFibGVfYXJnKSA6CisJCWhhbmRsZXJfYWRkX2luZGV4KHRhYmxlLCBrZXlfaW5mbywg bnVtX29mX2tleXMpLAorCQlpbmRleGVkX3RhYmxlIChpbmRleGVkX3RhYmxlX2FyZykge30KKwl+ aGFfaW5ub2Jhc2VfYWRkX2luZGV4KCkge30KK307CisKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQ3JlYXRl IGluZGV4ZXMuCiBAcmV0dXJuCTAgb3IgZXJyb3IgbnVtYmVyICovCkBAIC02MjYsMTIgKzYzOCwx NSBAQCBVTklWX0lOVEVSTgogaW50CiBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogLyo9PT09PT09 PT09PT09PT09PT09Ki8KLQlUQUJMRSoJdGFibGUsCQkvKiE8IGluOiBUYWJsZSB3aGVyZSBpbmRl eGVzIGFyZSBjcmVhdGVkICovCi0JS0VZKglrZXlfaW5mbywJLyohPCBpbjogSW5kZXhlcyB0byBi ZSBjcmVhdGVkICovCi0JdWludAludW1fb2Zfa2V5cykJLyohPCBpbjogTnVtYmVyIG9mIGluZGV4 ZXMgdG8gYmUgY3JlYXRlZCAqLworCVRBQkxFKgkJCXRhYmxlLAkJLyohPCBpbjogVGFibGUgd2hl cmUgaW5kZXhlcworCQkJCQkJYXJlIGNyZWF0ZWQgKi8KKwlLRVkqCQkJa2V5X2luZm8sCS8qITwg aW46IEluZGV4ZXMKKwkJCQkJCXRvIGJlIGNyZWF0ZWQgKi8KKwl1aW50CQkJbnVtX29mX2tleXMs CS8qITwgaW46IE51bWJlciBvZiBpbmRleGVzCisJCQkJCQl0byBiZSBjcmVhdGVkICovCisJaGFu ZGxlcl9hZGRfaW5kZXgqKglhZGQpCQkvKiE8IG91dDogY29udGV4dCAqLwogewogCWRpY3RfaW5k ZXhfdCoqCWluZGV4OwkJLyohPCBJbmRleCB0byBiZSBjcmVhdGVkICovCi0JZGljdF90YWJsZV90 Kglpbm5vZGJfdGFibGU7CS8qITwgSW5ub0RCIHRhYmxlIGluIGRpY3Rpb25hcnkgKi8KIAlkaWN0 X3RhYmxlX3QqCWluZGV4ZWRfdGFibGU7CS8qITwgVGFibGUgd2hlcmUgaW5kZXhlcyBhcmUgY3Jl YXRlZCAqLwogCW1lcmdlX2luZGV4X2RlZl90KiBpbmRleF9kZWZzOwkvKiE8IEluZGV4IGRlZmlu aXRpb25zICovCiAJbWVtX2hlYXBfdCogICAgIGhlYXA7CQkvKiE8IEhlYXAgZm9yIGluZGV4IGRl ZmluaXRpb25zICovCkBAIC02NDcsNiArNjYyLDggQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgK IAl1dF9hKGtleV9pbmZvKTsKIAl1dF9hKG51bV9vZl9rZXlzKTsKIAorCSphZGQgPSBOVUxMOwor CiAJaWYgKHNydl9jcmVhdGVkX25ld19yYXcgfHwgc3J2X2ZvcmNlX3JlY292ZXJ5KSB7CiAJCURC VUdfUkVUVVJOKEhBX0VSUl9XUk9OR19DT01NQU5EKTsKIAl9CkBAIC02NjIsMTUgKzY3OSwxNiBA QCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCQlEQlVHX1JFVFVSTigtMSk7CiAJfQogCi0JaW5u b2RiX3RhYmxlID0gaW5kZXhlZF90YWJsZQotCQk9IGRpY3RfdGFibGVfZ2V0KHByZWJ1aWx0LT50 YWJsZS0+bmFtZSwgRkFMU0UpOworCWluZGV4ZWRfdGFibGUgPSBkaWN0X3RhYmxlX2dldChwcmVi dWlsdC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKIAotCWlmIChVTklWX1VOTElLRUxZKCFpbm5vZGJf dGFibGUpKSB7CisJaWYgKFVOSVZfVU5MSUtFTFkoIWluZGV4ZWRfdGFibGUpKSB7CiAJCURCVUdf UkVUVVJOKEhBX0VSUl9OT19TVUNIX1RBQkxFKTsKIAl9CiAKKwl1dF9hKGluZGV4ZWRfdGFibGUg PT0gcHJlYnVpbHQtPnRhYmxlKTsKKwogCS8qIENoZWNrIHRoYXQgaW5kZXgga2V5cyBhcmUgc2Vu c2libGUgKi8KLQllcnJvciA9IGlubm9iYXNlX2NoZWNrX2luZGV4X2tleXMoa2V5X2luZm8sIG51 bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUpOworCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfaW5kZXhf a2V5cyhrZXlfaW5mbywgbnVtX29mX2tleXMsIHByZWJ1aWx0LT50YWJsZSk7CiAKIAlpZiAoVU5J Vl9VTkxJS0VMWShlcnJvcikpIHsKIAkJREJVR19SRVRVUk4oZXJyb3IpOwpAQCAtNjkxLDcgKzcw OSw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJbnVtX29mX2lkeCA9IG51bV9vZl9rZXlz OwogCiAJaW5kZXhfZGVmcyA9IGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVmKAotCQl0cngsIGlubm9k Yl90YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOworCQl0cngsIHByZWJ1aWx0LT50 YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOwogCiAJbmV3X3ByaW1hcnkgPSBESUNU X0NMVVNURVJFRCAmIGluZGV4X2RlZnNbMF0uaW5kX3R5cGU7CiAKQEAgLTcwNSw3ICs3MjMsNyBA QCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCXRyeF9zZXRfZGljdF9vcGVyYXRpb24odHJ4LCBU UlhfRElDVF9PUF9JTkRFWCk7CiAKIAkvKiBBY3F1aXJlIGEgbG9jayBvbiB0aGUgdGFibGUgYmVm b3JlIGNyZWF0aW5nIGFueSBpbmRleGVzLiAqLwotCWVycm9yID0gcm93X21lcmdlX2xvY2tfdGFi bGUocHJlYnVpbHQtPnRyeCwgaW5ub2RiX3RhYmxlLAorCWVycm9yID0gcm93X21lcmdlX2xvY2tf dGFibGUocHJlYnVpbHQtPnRyeCwgcHJlYnVpbHQtPnRhYmxlLAogCQkJCSAgICAgbmV3X3ByaW1h cnkgPyBMT0NLX1ggOiBMT0NLX1MpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoZXJyb3IgIT0gREJf U1VDQ0VTUykpIHsKQEAgLTcxOSw3ICs3MzcsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAog CXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCWRpY3RfbG9ja2VkID0gVFJV RTsKIAotCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxl LCBGQUxTRSkpOworCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMocHJlYnVp bHQtPnRhYmxlLCBGQUxTRSkpOwogCiAJLyogSWYgYSBuZXcgcHJpbWFyeSBrZXkgaXMgZGVmaW5l ZCBmb3IgdGhlIHRhYmxlIHdlIG5lZWQKIAl0byBkcm9wIHRoZSBvcmlnaW5hbCB0YWJsZSBhbmQg cmVidWlsZCBhbGwgaW5kZXhlcy4gKi8KQEAgLTcyNywxNSArNzQ1LDE1IEBAIGhhX2lubm9iYXNl OjphZGRfaW5kZXgoCiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1hcnkpKSB7CiAJCS8qIFRo aXMgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHRoZSBvbmx5IG9uZQogCQlvcGVyYXRpbmcgb24gdGhl IHRhYmxlLiAqLwotCQl1dF9hKGlubm9kYl90YWJsZS0+bl9teXNxbF9oYW5kbGVzX29wZW5lZCA9 PSAxKTsKKwkJdXRfYShwcmVidWlsdC0+dGFibGUtPm5fbXlzcWxfaGFuZGxlc19vcGVuZWQgPT0g MSk7CiAKIAkJY2hhcioJbmV3X3RhYmxlX25hbWUgPSBpbm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5 X3RhYmxlbmFtZSgKLQkJCWhlYXAsICcxJywgaW5ub2RiX3RhYmxlLT5uYW1lKTsKKwkJCWhlYXAs ICcxJywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKIAogCQkvKiBDbG9uZSB0aGUgdGFibGUuICov CiAJCXRyeF9zZXRfZGljdF9vcGVyYXRpb24odHJ4LCBUUlhfRElDVF9PUF9UQUJMRSk7CiAJCWlu ZGV4ZWRfdGFibGUgPSByb3dfbWVyZ2VfY3JlYXRlX3RlbXBvcmFyeV90YWJsZSgKLQkJCW5ld190 YWJsZV9uYW1lLCBpbmRleF9kZWZzLCBpbm5vZGJfdGFibGUsIHRyeCk7CisJCQluZXdfdGFibGVf bmFtZSwgaW5kZXhfZGVmcywgcHJlYnVpbHQtPnRhYmxlLCB0cngpOwogCiAJCWlmICghaW5kZXhl ZF90YWJsZSkgewogCkBAIC03NDksMTEgKzc2NywxMiBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4 KAogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllcnJvciA9IGNvbnZlcnRfZXJyb3JfY29k ZV90b19teXNxbCgKLQkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwgaW5ub2RiX3RhYmxlLT5mbGFncywK KwkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwKKwkJCQkJcHJlYnVpbHQtPnRhYmxlLT5mbGFncywKIAkJ CQkJdXNlcl90aGQpOwogCQkJfQogCi0JCQl1dF9kKGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1cF9p bmRleGVzKGlubm9kYl90YWJsZSwKKwkJCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2lu ZGV4ZXMocHJlYnVpbHQtPnRhYmxlLAogCQkJCQkJCSAgICAgIEZBTFNFKSk7CiAJCQltZW1faGVh cF9mcmVlKGhlYXApOwogCQkJdHJ4X2dlbmVyYWxfcm9sbGJhY2tfZm9yX215c3FsKHRyeCwgTlVM TCk7CkBAIC03NjgsMTcgKzc4NywxNSBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCiAJLyog Q3JlYXRlIHRoZSBpbmRleGVzIGluIFNZU19JTkRFWEVTIGFuZCBsb2FkIGludG8gZGljdGlvbmFy eS4gKi8KIAotCWZvciAodWxpbnQgaSA9IDA7IGkgPCBudW1fb2ZfaWR4OyBpKyspIHsKKwlmb3Ig KG51bV9jcmVhdGVkID0gMDsgbnVtX2NyZWF0ZWQgPCBudW1fb2ZfaWR4OyBudW1fY3JlYXRlZCsr KSB7CiAKLQkJaW5kZXhbaV0gPSByb3dfbWVyZ2VfY3JlYXRlX2luZGV4KHRyeCwgaW5kZXhlZF90 YWJsZSwKLQkJCQkJCSAgJmluZGV4X2RlZnNbaV0pOworCQlpbmRleFtudW1fY3JlYXRlZF0gPSBy b3dfbWVyZ2VfY3JlYXRlX2luZGV4KAorCQkJdHJ4LCBpbmRleGVkX3RhYmxlLCAmaW5kZXhfZGVm c1tudW1fY3JlYXRlZF0pOwogCi0JCWlmICghaW5kZXhbaV0pIHsKKwkJaWYgKCFpbmRleFtudW1f Y3JlYXRlZF0pIHsKIAkJCWVycm9yID0gdHJ4LT5lcnJvcl9zdGF0ZTsKIAkJCWdvdG8gZXJyb3Jf aGFuZGxpbmc7CiAJCX0KLQotCQludW1fY3JlYXRlZCsrOwogCX0KIAogCXV0X2FkKGVycm9yID09 IERCX1NVQ0NFU1MpOwpAQCAtODAwLDcgKzgxNyw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgo CiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1hcnkpKSB7CiAJCS8qIEEgcHJpbWFyeSBrZXkg aXMgdG8gYmUgYnVpbHQuICBBY3F1aXJlIGFuIGV4Y2x1c2l2ZQogCQl0YWJsZSBsb2NrIGFsc28g b24gdGhlIHRhYmxlIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gKi8KLQkJdXRfYWQoaW5kZXhlZF90 YWJsZSAhPSBpbm5vZGJfdGFibGUpOworCQl1dF9hZChpbmRleGVkX3RhYmxlICE9IHByZWJ1aWx0 LT50YWJsZSk7CiAKIAkJZXJyb3IgPSByb3dfbWVyZ2VfbG9ja190YWJsZShwcmVidWlsdC0+dHJ4 LCBpbmRleGVkX3RhYmxlLAogCQkJCQkgICAgIExPQ0tfWCk7CkBAIC04MTQsNyArODMxLDcgQEAg aGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAkvKiBSZWFkIHRoZSBjbHVzdGVyZWQgaW5kZXggb2Yg dGhlIHRhYmxlIGFuZCBidWlsZCBpbmRleGVzCiAJYmFzZWQgb24gdGhpcyBpbmZvcm1hdGlvbiB1 c2luZyB0ZW1wb3JhcnkgZmlsZXMgYW5kIG1lcmdlIHNvcnQuICovCiAJZXJyb3IgPSByb3dfbWVy Z2VfYnVpbGRfaW5kZXhlcyhwcmVidWlsdC0+dHJ4LAotCQkJCQlpbm5vZGJfdGFibGUsIGluZGV4 ZWRfdGFibGUsCisJCQkJCXByZWJ1aWx0LT50YWJsZSwgaW5kZXhlZF90YWJsZSwKIAkJCQkJaW5k ZXgsIG51bV9vZl9pZHgsIHRhYmxlKTsKIAogZXJyb3JfaGFuZGxpbmc6CkBAIC04MjIsNjMgKzgz OSwxNSBAQCBlcnJvcl9oYW5kbGluZzoKIAlkaWN0aW9uYXJ5IHdoaWNoIHdlcmUgZGVmaW5lZC4g Ki8KIAogCXN3aXRjaCAoZXJyb3IpIHsKLQkJY29uc3QgY2hhcioJb2xkX25hbWU7Ci0JCWNoYXIq CQl0bXBfbmFtZTsKIAljYXNlIERCX1NVQ0NFU1M6CiAJCXV0X2EoIWRpY3RfbG9ja2VkKTsKLQkJ cm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7Ci0JCWRpY3RfbG9ja2VkID0gVFJV RTsKIAorCQl1dF9kKG11dGV4X2VudGVyKCZkaWN0X3N5cy0+bXV0ZXgpKTsKIAkJdXRfZChkaWN0 X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsIFRSVUUpKTsKLQot CQlpZiAoIW5ld19wcmltYXJ5KSB7Ci0JCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVfaW5kZXhl cyh0cngsIGluZGV4ZWRfdGFibGUpOwotCi0JCQlpZiAoZXJyb3IgIT0gREJfU1VDQ0VTUykgewot CQkJCXJvd19tZXJnZV9kcm9wX2luZGV4ZXModHJ4LCBpbmRleGVkX3RhYmxlLAotCQkJCQkJICAg ICAgIGluZGV4LCBudW1fY3JlYXRlZCk7Ci0JCQl9Ci0KLQkJCWdvdG8gY29udmVydF9lcnJvcjsK LQkJfQotCi0JCS8qIElmIGEgbmV3IHByaW1hcnkga2V5IHdhcyBkZWZpbmVkIGZvciB0aGUgdGFi bGUgYW5kCi0JCXRoZXJlIHdhcyBubyBlcnJvciBhdCB0aGlzIHBvaW50LCB3ZSBjYW4gbm93IHJl bmFtZQotCQl0aGUgb2xkIHRhYmxlIGFzIGEgdGVtcG9yYXJ5IHRhYmxlLCByZW5hbWUgdGhlIG5l dwotCQl0ZW1wb3JhcnkgdGFibGUgYXMgdGhlIG9sZCB0YWJsZSBhbmQgZHJvcCB0aGUgb2xkIHRh YmxlLiAqLwotCQlvbGRfbmFtZSA9IGlubm9kYl90YWJsZS0+bmFtZTsKLQkJdG1wX25hbWUgPSBp bm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZShoZWFwLCAnMicsCi0JCQkJCQkJICAg ICAgIG9sZF9uYW1lKTsKLQotCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVfdGFibGVzKGlubm9k Yl90YWJsZSwgaW5kZXhlZF90YWJsZSwKLQkJCQkJCXRtcF9uYW1lLCB0cngpOwotCi0JCWlmIChl cnJvciAhPSBEQl9TVUNDRVNTKSB7Ci0KLQkJCXJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgaW5k ZXhlZF90YWJsZSk7Ci0KLQkJCXN3aXRjaCAoZXJyb3IpIHsKLQkJCWNhc2UgREJfVEFCTEVTUEFD RV9BTFJFQURZX0VYSVNUUzoKLQkJCWNhc2UgREJfRFVQTElDQVRFX0tFWToKLQkJCQlpbm5vYmFz ZV9jb252ZXJ0X3RhYmxlbmFtZSh0bXBfbmFtZSk7Ci0JCQkJbXlfZXJyb3IoSEFfRVJSX1RBQkxF X0VYSVNULCBNWUYoMCksIHRtcF9uYW1lKTsKLQkJCQllcnJvciA9IEhBX0VSUl9UQUJMRV9FWElT VDsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJZ290byBjb252ZXJ0X2Vycm9yOwotCQkJ fQotCQkJYnJlYWs7Ci0JCX0KLQotCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4 KTsKLQkJcm93X3ByZWJ1aWx0X2ZyZWUocHJlYnVpbHQsIFRSVUUpOwotCQlwcmVidWlsdCA9IHJv d19jcmVhdGVfcHJlYnVpbHQoaW5kZXhlZF90YWJsZSk7Ci0KLQkJaW5kZXhlZF90YWJsZS0+bl9t eXNxbF9oYW5kbGVzX29wZW5lZCsrOwotCi0JCWVycm9yID0gcm93X21lcmdlX2Ryb3BfdGFibGUo dHJ4LCBpbm5vZGJfdGFibGUpOwotCQlpbm5vZGJfdGFibGUgPSBpbmRleGVkX3RhYmxlOwotCQln b3RvIGNvbnZlcnRfZXJyb3I7CisJCXV0X2QobXV0ZXhfZXhpdCgmZGljdF9zeXMtPm11dGV4KSk7 CisgICAgICAgICAgICAgICAgKmFkZCA9IG5ldyBoYV9pbm5vYmFzZV9hZGRfaW5kZXgodGFibGUs IGtleV9pbmZvLCBudW1fb2Zfa2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRleGVkX3RhYmxlKTsKKwkJYnJlYWs7CiAKIAljYXNlIERCX1RP T19CSUdfUkVDT1JEOgogCQlteV9lcnJvcihIQV9FUlJfVE9fQklHX1JPVywgTVlGKDApKTsKQEAg LTg5NCw3ICs4NjMsNyBAQCBlcnJvcjoKIAkJdHJ4LT5lcnJvcl9zdGF0ZSA9IERCX1NVQ0NFU1M7 CiAKIAkJaWYgKG5ld19wcmltYXJ5KSB7Ci0JCQlpZiAoaW5kZXhlZF90YWJsZSAhPSBpbm5vZGJf dGFibGUpIHsKKwkJCWlmIChpbmRleGVkX3RhYmxlICE9IHByZWJ1aWx0LT50YWJsZSkgewogCQkJ CXJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgaW5kZXhlZF90YWJsZSk7CiAJCQl9CiAJCX0gZWxz ZSB7CkBAIC05MDYsMzggKzg3NSwxNTggQEAgZXJyb3I6CiAJCQlyb3dfbWVyZ2VfZHJvcF9pbmRl eGVzKHRyeCwgaW5kZXhlZF90YWJsZSwKIAkJCQkJICAgICAgIGluZGV4LCBudW1fY3JlYXRlZCk7 CiAJCX0KLQotY29udmVydF9lcnJvcjoKLQkJaWYgKGVycm9yID09IERCX1NVQ0NFU1MpIHsKLQkJ CS8qIEJ1aWxkIGluZGV4IGlzIHN1Y2Nlc3NmdWwuIFdlIHdpbGwgbmVlZCB0bwotCQkJcmVidWls ZCBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gIFJlc2V0IHRoZQotCQkJaW5kZXggZW50cnkgY291 bnQgaW4gdGhlIHRyYW5zbGF0aW9uIHRhYmxlCi0JCQl0byB6ZXJvLCBzbyB0aGF0IHRyYW5zbGF0 aW9uIHRhYmxlIHdpbGwgYmUgcmVidWlsdCAqLwotCQkJc2hhcmUtPmlkeF90cmFuc190YmwuaW5k ZXhfY291bnQgPSAwOwotCQl9Ci0KLQkJZXJyb3IgPSBjb252ZXJ0X2Vycm9yX2NvZGVfdG9fbXlz cWwoZXJyb3IsCi0JCQkJCQkgICAgaW5ub2RiX3RhYmxlLT5mbGFncywKLQkJCQkJCSAgICB1c2Vy X3RoZCk7CiAJfQogCi0JbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl0cnhfY29tbWl0X2Zvcl9teXNx bCh0cngpOwogCWlmIChwcmVidWlsdC0+dHJ4KSB7CiAJCXRyeF9jb21taXRfZm9yX215c3FsKHBy ZWJ1aWx0LT50cngpOwogCX0KIAogCWlmIChkaWN0X2xvY2tlZCkgewotCQl1dF9kKGRpY3RfdGFi bGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwgRkFMU0UpKTsKIAkJcm93X215 c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKIAl9CiAKIAl0cnhfZnJlZV9mb3JfbXlz cWwodHJ4KTsKKwltZW1faGVhcF9mcmVlKGhlYXApOworCisJLyogVGhlcmUgbWlnaHQgYmUgd29y ayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCisJc3J2X2FjdGl2ZV93YWtlX21hc3Rlcl90aHJlYWQo KTsKKworCURCVUdfUkVUVVJOKGNvbnZlcnRfZXJyb3JfY29kZV90b19teXNxbChlcnJvciwgcHJl YnVpbHQtPnRhYmxlLT5mbGFncywKKwkJCQkJCXVzZXJfdGhkKSk7Cit9CisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgorRmluYWxpemUgb3IgdW5kbyBhZGRfaW5kZXgoKS4KK0ByZXR1cm4JMCBvciBlcnJvciBu dW1iZXIgKi8KK1VOSVZfSU5URVJOCitpbnQKK2hhX2lubm9iYXNlOjpmaW5hbF9hZGRfaW5kZXgo CisvKj09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWhhbmRsZXJfYWRkX2luZGV4KglhZGRf YXJnLC8qITwgaW46IGNvbnRleHQgZnJvbSBhZGRfaW5kZXgoKSAqLworCWJvb2wJCQljb21taXQp CS8qITwgaW46IHRydWU9Y29tbWl0LCBmYWxzZT1yb2xsYmFjayAqLworeworCWhhX2lubm9iYXNl X2FkZF9pbmRleCoJYWRkOworCXRyeF90KgkJCXRyeDsKKwlpbnQJCQllcnIJPSAwOworCisJREJV R19FTlRFUigiaGFfaW5ub2Jhc2U6OmZpbmFsX2FkZF9pbmRleCIpOworCisJdXRfYWQoYWRkX2Fy Zyk7CisJYWRkID0gc3RhdGljX2Nhc3Q8Y2xhc3MgaGFfaW5ub2Jhc2VfYWRkX2luZGV4Kj4oYWRk X2FyZyk7CisKKwkvKiBDcmVhdGUgYSBiYWNrZ3JvdW5kIHRyYW5zYWN0aW9uIGZvciB0aGUgb3Bl cmF0aW9ucyBvbgorCXRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGVzLiAqLworCXRyeCA9IGlubm9i YXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7CisJdHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkKHRy eCk7CisKKwkvKiBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgYSBkaWN0aW9uYXJ5IG9wZXJhdGlv biwgc28gdGhhdAorCXRoZSBkYXRhIGRpY3Rpb25hcnkgd2lsbCBiZSBsb2NrZWQgaW4gY3Jhc2gg cmVjb3ZlcnkuICovCisJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0cngsIFRSWF9ESUNUX09QX0lO REVYKTsKKworCS8qIExhdGNoIHRoZSBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5IGV4Y2x1c2l2ZWx5 IHNvIHRoYXQgbm8gZGVhZGxvY2tzCisJb3IgbG9jayB3YWl0cyBjYW4gaGFwcGVuIGluIGl0IGR1 cmluZyBhbiBpbmRleCBjcmVhdGUgb3BlcmF0aW9uLiAqLworCXJvd19teXNxbF9sb2NrX2RhdGFf ZGljdGlvbmFyeSh0cngpOworCisJaWYgKGFkZC0+aW5kZXhlZF90YWJsZSAhPSBwcmVidWlsdC0+ dGFibGUpIHsKKwkJdWxpbnQJZXJyb3I7CisKKwkJLyogV2UgY29waWVkIHRoZSB0YWJsZSAobmV3 X3ByaW1hcnkpLiAqLworCQlpZiAoY29tbWl0KSB7CisJCQltZW1faGVhcF90KgloZWFwOworCQkJ Y2hhcioJCXRtcF9uYW1lOworCisJCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOworCisJ CQkvKiBBIG5ldyBwcmltYXJ5IGtleSB3YXMgZGVmaW5lZCBmb3IgdGhlIHRhYmxlCisJCQlhbmQg dGhlcmUgd2FzIG5vIGVycm9yIGF0IHRoaXMgcG9pbnQuIFdlIGNhbgorCQkJbm93IHJlbmFtZSB0 aGUgb2xkIHRhYmxlIGFzIGEgdGVtcG9yYXJ5IHRhYmxlLAorCQkJcmVuYW1lIHRoZSBuZXcgdGVt cG9yYXJ5IHRhYmxlIGFzIHRoZSBvbGQKKwkJCXRhYmxlIGFuZCBkcm9wIHRoZSBvbGQgdGFibGUu ICovCisJCQl0bXBfbmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1wb3JhcnlfdGFibGVuYW1lKAor CQkJCWhlYXAsICcyJywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKKworCQkJZXJyb3IgPSByb3df bWVyZ2VfcmVuYW1lX3RhYmxlcygKKwkJCQlwcmVidWlsdC0+dGFibGUsIGFkZC0+aW5kZXhlZF90 YWJsZSwKKwkJCQl0bXBfbmFtZSwgdHJ4KTsKKworCQkJc3dpdGNoIChlcnJvcikgeworCQkJY2Fz ZSBEQl9UQUJMRVNQQUNFX0FMUkVBRFlfRVhJU1RTOgorCQkJY2FzZSBEQl9EVVBMSUNBVEVfS0VZ OgorCQkJCWlubm9iYXNlX2NvbnZlcnRfdGFibGVuYW1lKHRtcF9uYW1lKTsKKwkJCQlteV9lcnJv cihIQV9FUlJfVEFCTEVfRVhJU1QsIE1ZRigwKSwgdG1wX25hbWUpOworCQkJCWVyciA9IEhBX0VS Ul9UQUJMRV9FWElTVDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJyID0gY29udmVy dF9lcnJvcl9jb2RlX3RvX215c3FsKAorCQkJCQllcnJvciwgcHJlYnVpbHQtPnRhYmxlLT5mbGFn cywKKwkJCQkJdXNlcl90aGQpOworCQkJCWJyZWFrOworCQkJfQorCisJCQltZW1faGVhcF9mcmVl KGhlYXApOworCQl9CisKKwkJaWYgKCFjb21taXQgfHwgZXJyKSB7CisJCQlyb3dfbWVyZ2VfZHJv cF90YWJsZSh0cngsIGFkZC0+aW5kZXhlZF90YWJsZSk7CisJCX0KKworCQl0cnhfY29tbWl0X2Zv cl9teXNxbChwcmVidWlsdC0+dHJ4KTsKKwkJeworCQkJZGljdF90YWJsZV90KglvbGRfdGFibGUg PSBwcmVidWlsdC0+dGFibGU7CisJCQlyb3dfcHJlYnVpbHRfZnJlZShwcmVidWlsdCwgVFJVRSk7 CisJCQllcnJvciA9IHJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgb2xkX3RhYmxlKTsKKwkJfQor CQlhZGQtPmluZGV4ZWRfdGFibGUtPm5fbXlzcWxfaGFuZGxlc19vcGVuZWQrKzsKKwkJcHJlYnVp bHQgPSByb3dfY3JlYXRlX3ByZWJ1aWx0KGFkZC0+aW5kZXhlZF90YWJsZSk7CisJCWVyciA9IGNv bnZlcnRfZXJyb3JfY29kZV90b19teXNxbCgKKwkJCWVycm9yLCBwcmVidWlsdC0+dGFibGUtPmZs YWdzLCB1c2VyX3RoZCk7CisJfSBlbHNlIHsKKwkJLyogV2UgY3JlYXRlZCBzZWNvbmRhcnkgaW5k ZXhlcyAoIW5ld19wcmltYXJ5KS4gKi8KKworCQlpZiAoY29tbWl0KSB7CisJCQllcnIgPSBjb252 ZXJ0X2Vycm9yX2NvZGVfdG9fbXlzcWwoCisJCQkJcm93X21lcmdlX3JlbmFtZV9pbmRleGVzKHRy eCwgcHJlYnVpbHQtPnRhYmxlKSwKKwkJCQlwcmVidWlsdC0+dGFibGUtPmZsYWdzLCB1c2VyX3Ro ZCk7CisJCX0KKworCQlpZiAoIWNvbW1pdCB8fCBlcnIpIHsKKwkJCWRpY3RfaW5kZXhfdCoJaW5k ZXg7CisJCQlkaWN0X2luZGV4X3QqCW5leHRfaW5kZXg7CisKKwkJCWZvciAoaW5kZXggPSBkaWN0 X3RhYmxlX2dldF9maXJzdF9pbmRleCgKKwkJCQkgICAgIHByZWJ1aWx0LT50YWJsZSk7CisJCQkg ICAgIGluZGV4OyBpbmRleCA9IG5leHRfaW5kZXgpIHsKKworCQkJCW5leHRfaW5kZXggPSBkaWN0 X3RhYmxlX2dldF9uZXh0X2luZGV4KGluZGV4KTsKKworCQkJCWlmICgqaW5kZXgtPm5hbWUgPT0g VEVNUF9JTkRFWF9QUkVGSVgpIHsKKwkJCQkJcm93X21lcmdlX2Ryb3BfaW5kZXgoCisJCQkJCQlp bmRleCwgcHJlYnVpbHQtPnRhYmxlLCB0cngpOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8q IFdlIHdpbGwgbmVlZCB0byByZWJ1aWxkIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLiBTZXQKKwl2 YWxpZCBpbmRleCBlbnRyeSBjb3VudCBpbiB0aGUgdHJhbnNsYXRpb24gdGFibGUgdG8gemVybyAq LworCXNoYXJlLT5pZHhfdHJhbnNfdGJsLmluZGV4X2NvdW50ID0gMDsKKworCXRyeF9jb21taXRf Zm9yX215c3FsKHRyeCk7CisJaWYgKHByZWJ1aWx0LT50cngpIHsKKwkJdHJ4X2NvbW1pdF9mb3Jf bXlzcWwocHJlYnVpbHQtPnRyeCk7CisJfQorCisJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9k dXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsIEZBTFNFKSk7CisJcm93X215c3FsX3VubG9ja19k YXRhX2RpY3Rpb25hcnkodHJ4KTsKKworCXRyeF9mcmVlX2Zvcl9teXNxbCh0cngpOwogCiAJLyog VGhlcmUgbWlnaHQgYmUgd29yayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCiAJc3J2X2FjdGl2ZV93 YWtlX21hc3Rlcl90aHJlYWQoKTsKIAotCURCVUdfUkVUVVJOKGVycm9yKTsKKwlkZWxldGUgYWRk OworCURCVUdfUkVUVVJOKGVycik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK --===============5107162213678868767== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-bug11853126/ # testament_sha1: 9fe7f0783f85dd89349aa5bae14c1f36937a73c4 # timestamp: 2011-05-27 10:22:08 +0200 # base_revision_id: anitha.gopi@stripped\ # w1k1k8ajiv23yk2a # # Begin bundle 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 --===============5107162213678868767==--