From: Jon Olav Hauglid Date: May 30 2011 12:11pm Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3412) Bug#11853126 List-Archive: http://lists.mysql.com/commits/138411 X-Bug: 11853126 Message-Id: <201105301212.p4UCCA2W027674@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2946950811346075088==" --===============2946950811346075088== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUveC9teXNxbC01LjUtYnVnMTE4NTMxMjYvIGJhc2VkIG9u IHJldmlkOmRhdmkuYXJuYXV0QG9yYWNsZS5jb20tMjAxMTA1MzAxMTE0MzgtbjQ4N2F0Zzd6Nm1i dm96eQoKIDM0MTIgSm9uIE9sYXYgSGF1Z2xpZAkyMDExLTA1LTMwCiAgICAgIEJ1ZyMxMTg1MzEy 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 eXNxbC10ZXN0L3IvaW5ub2RiX215c3FsX2xvY2sucmVzdWx0CTIwMTEtMDUtMzAgMTI6MTE6NTIg KzAwMDAKQEAgLTE1Myw2ICsxNTMsNyBAQCBEUk9QIFZJRVcgdjE7CiAjICAgICAgICAgICAgICBL RVkgTk8gMCBGT1IgVEFCTEUgSU4gRVJST1IgTE9HIAogIwogRFJPUCBUQUJMRSBJRiBFWElTVFMg dDE7CisjIFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4CiAjIENvbm5lY3Rpb24gZGVmYXVsdAogQ1JF QVRFIFRBQkxFIHQxIChpZCBJTlQgUFJJTUFSWSBLRVksIHZhbHVlIElOVCkgRU5HSU5FID0gSW5u b0RCOwogSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxLCAxMjM0NSk7CkBAIC0xNjQsOSArMTY1LDIw IEBAIGlkCXZhbHVlCiBTRVQgbG9ja193YWl0X3RpbWVvdXQ9MTsKIEFMVEVSIFRBQkxFIHQxIEFE RCBJTkRFWCBpZHgodmFsdWUpOwogRVJST1IgSFkwMDA6IExvY2sgd2FpdCB0aW1lb3V0IGV4Y2Vl ZGVkOyB0cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgorQUxURVIgVEFCTEUgdDEgQUREIElOREVY IGlkeCh2YWx1ZSk7CitFUlJPUiBIWTAwMDogTG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQ7IHRy eSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uCiAjIENvbm5lY3Rpb24gZGVmYXVsdAogU0VMRUNUICog RlJPTSB0MTsKIGlkCXZhbHVlCiAxCTEyMzQ1CiBDT01NSVQ7CiBEUk9QIFRBQkxFIHQxOworIyBU ZXN0IDI6IFByaW1hcnkgaW5kZXgKK0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwgYiBJ TlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsIDEy MzQ1KSwgKDIsIDIzNDU2KTsKKyMgQ29ubmVjdGlvbiBjb24xCitTRVQgU0VTU0lPTiBkZWJ1Zz0g IitkLGFsdGVyX3RhYmxlX3JvbGxiYWNrX25ld19pbmRleCI7CitBTFRFUiBUQUJMRSB0MSBBREQg UFJJTUFSWSBLRVkoYSk7CitFUlJPUiBIWTAwMDogVW5rbm93biBlcnJvcgorIyBDb25uZWN0aW9u IGRlZmF1bHQKK0RST1AgVEFCTEUgdDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9y L2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2lubm9kYl9teXNx bF9zeW5jLnJlc3VsdAkyMDExLTA0LTA3IDA5OjQxOjIwICswMDAwCisrKyBiL215c3FsLXRlc3Qv ci9pbm5vZGJfbXlzcWxfc3luYy5yZXN1bHQJMjAxMS0wNS0zMCAxMjoxMTo1MiArMDAwMApAQCAt OTQsNiArOTQsNzQgQEAgU0VUIERFQlVHX1NZTkM9ICdSRVNFVCc7CiAjIEJ1ZyM0MjIzMCBkdXJp bmcgYWRkIGluZGV4LCBjYW5ub3QgZG8gcXVlcmllcyBvbiBzdG9yYWdlIGVuZ2luZXMKICMgICAg ICAgICAgIHRoYXQgaW1wbGVtZW50IGFkZF9pbmRleAogIwotIwotIyBESVNBQkxFRCBkdWUgdG8g QnVnIzExODE1NjAwCi0jCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7CitEUk9QIFRBQkxF IElGIEVYSVNUUyB0MTsKKyMgVGVzdCAxOiBTZWNvbmRhcnkgaW5kZXgsIHNob3VsZCBub3QgYmxv Y2sgcmVhZHMgKG9yaWdpbmFsIHRlc3QgY2FzZSkuCisjIENvbm5lY3Rpb24gZGVmYXVsdAorQ1JF QVRFIERBVEFCQVNFIGRiMTsKK0NSRUFURSBUQUJMRSBkYjEudDEoaWQgSU5UIE5PVCBOVUxMIEFV VE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1ZSBJTlQpIGVuZ2luZT1pbm5vZGI7CitJTlNF UlQgSU5UTyBkYjEudDEodmFsdWUpIFZBTFVFUyAoMSksICgyKTsKK1NFVCBERUJVR19TWU5DPSAi YWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBxdWVyeSI7Cisj IFNlbmRpbmc6CitBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKTsKKyMgQ29ubmVj dGlvbiBjb24xCitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIGRi MTsKK1NFTEVDVCAqIEZST00gdDE7CitpZAl2YWx1ZQorMQkxCisyCTIKK1NFVCBERUJVR19TWU5D PSAibm93IFNJR05BTCBxdWVyeSI7CisjIENvbm5lY3Rpb24gZGVmYXVsdAorIyBSZWFwaW5nOiBB TFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQorRFJPUCBEQVRBQkFTRSBkYjE7Cisj IFRlc3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCitD UkVBVEUgVEFCTEUgdDEoYSBJTlQgTk9UIE5VTEwsIGIgSU5UIE5PVCBOVUxMKSBlbmdpbmU9aW5u b2RiOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFu YWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBVTklR VUUgSU5ERVgoYSk7CisjIENvbm5lY3Rpb24gY29uMQorU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJ VF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworIyBTZW5kaW5nOgorU0VMRUNUICogRlJPTSB0MTsK KyMgQ29ubmVjdGlvbiBjb24yCisjIFdhaXRpbmcgZm9yIFNFTEVDVCB0byBiZSBibG9ja2VkIGJ5 IHRoZSBtZXRhZGF0YSBsb2NrIG9uIHQxCitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVl cnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQURE IFVOSVFVRSBJTkRFWChhKQorIyBDb25uZWN0aW9uIGNvbjEKKyMgUmVhcGluZzogU0VMRUNUICog RlJPTSB0MQorYQliCisjIFRlc3QgMzogUHJpbWFyeSBpbmRleCAoZXhwbGljaXQpLCBzaG91bGQg YmxvY2sgcmVhZHMuCisjIENvbm5lY3Rpb24gZGVmYXVsdAorQUxURVIgVEFCTEUgdDEgRFJPUCBJ TkRFWCBhOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwg bWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBQ UklNQVJZIEtFWSAoYSk7CisjIENvbm5lY3Rpb24gY29uMQorU0VUIERFQlVHX1NZTkM9ICJub3cg V0FJVF9GT1IgbWFuYWdlIjsKKyMgU2VuZGluZzoKK1NFTEVDVCAqIEZST00gdDE7CisjIENvbm5l Y3Rpb24gY29uMgorIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0aGUgbWV0 YWRhdGEgbG9jayBvbiB0MQorU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKyMg Q29ubmVjdGlvbiBkZWZhdWx0CisjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZ IEtFWSAoYSkKKyMgQ29ubmVjdGlvbiBjb24xCisjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00gdDEK K2EJYgorIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlxdWUgaW5kZXgsIHNob3VsZCBub3QgYmxvY2sg cmVhZHMuCisjIENvbm5lY3Rpb24gZGVmYXVsdAorU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJs ZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoK K0FMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgKGIpOworIyBDb25uZWN0aW9uIGNvbjEKK1NFVCBE RUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CitTRUxFQ1QgKiBGUk9NIHQxOworYQli CitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1 bHQKKyMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKK1NFVCBERUJVR19T WU5DPSAiUkVTRVQiOworRFJPUCBUQUJMRSB0MTsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10 ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L2lubm9kYl9t eXNxbF9sb2NrLnRlc3QJMjAxMS0wMy0wOSAxNTowNjoxMyArMDAwMAorKysgYi9teXNxbC10ZXN0 L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAkyMDExLTA1LTMwIDEyOjExOjUyICswMDAwCkBAIC0y OTAsNiArMjkwLDggQEAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CiAKIC0tY29ubmVjdCAoY29u MSxsb2NhbGhvc3Qscm9vdCkKIAorLS1lY2hvICMgVGVzdCAxOiBTZWNvbmRhcnkgaW5kZXgKKwog LS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0CiBjb25uZWN0aW9uIGRlZmF1bHQ7CiBDUkVBVEUg VEFCTEUgdDEgKGlkIElOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBFTkdJTkUgPSBJbm5vREI7 CkBAIC0zMDAsNiArMzAyLDEwIEBAIFNFTEVDVCAqIEZST00gdDE7CiAtLWVjaG8gIyBDb25uZWN0 aW9uIGNvbjEKIC0tY29ubmVjdGlvbiBjb24xCiBTRVQgbG9ja193YWl0X3RpbWVvdXQ9MTsKKyMg VGVzdCB3aXRoIHR3byB0aW1lb3V0cywgYXMgdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhpcyBwYXRj aAorIyBvbmx5IHdvcmtlZCB3aXRoIG9uZSB0aW1lb3V0LgorLS1lcnJvciBFUl9MT0NLX1dBSVRf VElNRU9VVAorQUxURVIgVEFCTEUgdDEgQUREIElOREVYIGlkeCh2YWx1ZSk7CiAtLWVycm9yIEVS X0xPQ0tfV0FJVF9USU1FT1VUCiBBTFRFUiBUQUJMRSB0MSBBREQgSU5ERVggaWR4KHZhbHVlKTsK IApAQCAtMzA4LDYgKzMxNCwyMCBAQCBBTFRFUiBUQUJMRSB0MSBBREQgSU5ERVggaWR4KHZhbHVl KTsKIFNFTEVDVCAqIEZST00gdDE7CiBDT01NSVQ7CiBEUk9QIFRBQkxFIHQxOworCistLWVjaG8g IyBUZXN0IDI6IFByaW1hcnkgaW5kZXgKK0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwg YiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEs IDEyMzQ1KSwgKDIsIDIzNDU2KTsKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCistLWNvbm5l Y3Rpb24gY29uMQorU0VUIFNFU1NJT04gZGVidWc9ICIrZCxhbHRlcl90YWJsZV9yb2xsYmFja19u ZXdfaW5kZXgiOworLS1lcnJvciBFUl9VTktOT1dOX0VSUk9SCitBTFRFUiBUQUJMRSB0MSBBREQg UFJJTUFSWSBLRVkoYSk7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorLS1jb25uZWN0 aW9uIGRlZmF1bHQKK0RST1AgVEFCTEUgdDE7CiBkaXNjb25uZWN0IGNvbjE7CiAKIAoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0JwotLS0gYS9t eXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAkyMDExLTAzLTIyIDEzOjM0OjA0ICsw MDAwCisrKyBiL215c3FsLXRlc3QvdC9pbm5vZGJfbXlzcWxfc3luYy50ZXN0CTIwMTEtMDUtMzAg MTI6MTE6NTIgKzAwMDAKQEAgLTE1MiwxMzMgKzE1MiwxMjkgQEAgZGlzY29ubmVjdCBjb24xOwog LS1lY2hvICMgICAgICAgICAgIHRoYXQgaW1wbGVtZW50IGFkZF9pbmRleAogLS1lY2hvICMKIAot LS1lY2hvICMKLS0tZWNobyAjIERJU0FCTEVEIGR1ZSB0byBCdWcjMTE4MTU2MDAKLS0tZWNobyAj CistLWRpc2FibGVfd2FybmluZ3MKK0RST1AgREFUQUJBU0UgSUYgRVhJU1RTIGRiMTsKK0RST1Ag VEFCTEUgSUYgRVhJU1RTIHQxOworLS1lbmFibGVfd2FybmluZ3MKKworY29ubmVjdChjb24xLGxv Y2FsaG9zdCxyb290KTsKK2Nvbm5lY3QoY29uMixsb2NhbGhvc3Qscm9vdCk7CisKKy0tZWNobyAj IFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRzIChvcmlnaW5h bCB0ZXN0IGNhc2UpLgorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nvbm5lY3Rpb24g ZGVmYXVsdDsKK0NSRUFURSBEQVRBQkFTRSBkYjE7CitDUkVBVEUgVEFCTEUgZGIxLnQxKGlkIElO VCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBlbmdpbmU9 aW5ub2RiOworSU5TRVJUIElOVE8gZGIxLnQxKHZhbHVlKSBWQUxVRVMgKDEpLCAoMik7CitTRVQg REVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9G T1IgcXVlcnkiOworLS1lY2hvICMgU2VuZGluZzoKKy0tc2VuZCBBTFRFUiBUQUJMRSBkYjEudDEg QUREIElOREVYKHZhbHVlKQorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nvbm5lY3Rpb24g Y29uMTsKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CisjIE5laXRoZXIg b2YgdGhlc2UgdHdvIHN0YXRlbWVudHMgc2hvdWxkIGJlIGJsb2NrZWQKK1VTRSBkYjE7CitTRUxF Q1QgKiBGUk9NIHQxOworU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKworLS1l Y2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9uIGRlZmF1bHQ7CistLWVjaG8gIyBS ZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQorLS1yZWFwCitEUk9Q IERBVEFCQVNFIGRiMTsKKworLS1lY2hvICMgVGVzdCAyOiBQcmltYXJ5IGluZGV4IChpbXBsaWNp dCksIHNob3VsZCBibG9jayByZWFkcy4KKworQ1JFQVRFIFRBQkxFIHQxKGEgSU5UIE5PVCBOVUxM LCBiIElOVCBOT1QgTlVMTCkgZW5naW5lPWlubm9kYjsKK1NFVCBERUJVR19TWU5DPSAiYWx0ZXJf dGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBxdWVyeSI7CistLWVjaG8g IyBTZW5kaW5nOgorLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSkKKwor LS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lO Qz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworVVNFIHRlc3Q7CistLWVjaG8gIyBTZW5kaW5nOgor LS1zZW5kIFNFTEVDVCAqIEZST00gdDEKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24yCitjb25u ZWN0aW9uIGNvbjI7CistLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBi eSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorbGV0ICR3YWl0X2NvbmRpdGlvbj0gU0VMRUNUIENP VU5UKCopPSAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0CisgIFdIRVJFIHN0 YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRhdGEgbG9jaycKKyAgQU5EIGluZm89J1NFTEVD VCAqIEZST00gdDEnOworLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5pbmMKK1NFVCBE RUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVm YXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUg dDEgQUREIFVOSVFVRSBJTkRFWChhKQorLS1yZWFwCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29u MQorY29ubmVjdGlvbiBjb24xOworLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQor LS1yZWFwCisKKy0tZWNobyAjIFRlc3QgMzogUHJpbWFyeSBpbmRleCAoZXhwbGljaXQpLCBzaG91 bGQgYmxvY2sgcmVhZHMuCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlv biBkZWZhdWx0OworQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOworU0VUIERFQlVHX1NZTkM9 ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsK Ky0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZ IChhKQorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nvbm5lY3Rpb24gY29uMTsKK1NFVCBE RUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CistLWVjaG8gIyBTZW5kaW5nOgorLS1z ZW5kIFNFTEVDVCAqIEZST00gdDEKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24yCitjb25uZWN0 aW9uIGNvbjI7CistLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0 aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorbGV0ICR3YWl0X2NvbmRpdGlvbj0gU0VMRUNUIENPVU5U KCopPSAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0CisgIFdIRVJFIHN0YXRl PSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRhdGEgbG9jaycKKyAgQU5EIGluZm89J1NFTEVDVCAq IEZST00gdDEnOworLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5pbmMKK1NFVCBERUJV R19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVs dAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEg QUREIFBSSU1BUlkgS0VZIChhKQorLS1yZWFwCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQor Y29ubmVjdGlvbiBjb24xOworLS1lY2hvICMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQorLS1y ZWFwCisKKy0tZWNobyAjIFRlc3QgNDogU2Vjb25kYXJ5IHVuaXF1ZSBpbmRleCwgc2hvdWxkIG5v dCBibG9jayByZWFkcy4KKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9u IGRlZmF1bHQ7CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05B TCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworLS1lY2hvICMgU2VuZGluZzoKKy0tc2VuZCBBTFRF UiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nv bm5lY3Rpb24gY29uMTsKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CitT RUxFQ1QgKiBGUk9NIHQxOworU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKKwor LS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9uIGRlZmF1bHQ7CistLWVjaG8g IyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQorLS1yZWFwCiAKLSMtLWRp c2FibGVfd2FybmluZ3MKLSNEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7Ci0jRFJPUCBUQUJM RSBJRiBFWElTVFMgdDE7Ci0jLS1lbmFibGVfd2FybmluZ3MKLSMKLSNjb25uZWN0KGNvbjEsbG9j YWxob3N0LHJvb3QpOwotI2Nvbm5lY3QoY29uMixsb2NhbGhvc3Qscm9vdCk7Ci0jCi0jLS1lY2hv ICMgVGVzdCAxOiBTZWNvbmRhcnkgaW5kZXgsIHNob3VsZCBub3QgYmxvY2sgcmVhZHMgKG9yaWdp bmFsIHRlc3QgY2FzZSkuCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Ci0jY29ubmVj dGlvbiBkZWZhdWx0OwotI0NSRUFURSBEQVRBQkFTRSBkYjE7Ci0jQ1JFQVRFIFRBQkxFIGRiMS50 MShpZCBJTlQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZhbHVlIElOVCkg ZW5naW5lPWlubm9kYjsKLSNJTlNFUlQgSU5UTyBkYjEudDEodmFsdWUpIFZBTFVFUyAoMSksICgy KTsKLSNTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5h Z2UgV0FJVF9GT1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIEFMVEVSIFRB QkxFIGRiMS50MSBBREQgSU5ERVgodmFsdWUpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24x Ci0jY29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFn ZSI7Ci0jICMgTmVpdGhlciBvZiB0aGVzZSB0d28gc3RhdGVtZW50cyBzaG91bGQgYmUgYmxvY2tl ZAotI1VTRSBkYjE7Ci0jU0VMRUNUICogRlJPTSB0MTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBT SUdOQUwgcXVlcnkiOwotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rp b24gZGVmYXVsdDsKLSMtLWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEudDEgQUREIElO REVYKHZhbHVlKQotIy0tcmVhcAotI0RST1AgREFUQUJBU0UgZGIxOwotIwotIy0tZWNobyAjIFRl c3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCi0jCi0j Q1JFQVRFIFRBQkxFIHQxKGEgSU5UIE5PVCBOVUxMLCBiIElOVCBOT1QgTlVMTCkgZW5naW5lPWlu bm9kYjsKLSNTRVQgREVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBt YW5hZ2UgV0FJVF9GT1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIEFMVEVS IFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSkKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGNv bjEKLSNjb25uZWN0aW9uIGNvbjE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFu YWdlIjsKLSNVU0UgdGVzdDsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBTRUxFQ1QgKiBG Uk9NIHQxCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24yCi0jY29ubmVjdGlvbiBjb24yOwot Iy0tZWNobyAjIFdhaXRpbmcgZm9yIFNFTEVDVCB0byBiZSBibG9ja2VkIGJ5IHRoZSBtZXRhZGF0 YSBsb2NrIG9uIHQxCi0jbGV0ICR3YWl0X2NvbmRpdGlvbj0gU0VMRUNUIENPVU5UKCopPSAxIEZS T00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0Ci0jICBXSEVSRSBzdGF0ZT0gJ1dhaXRp bmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCi0jICBBTkQgaW5mbz0nU0VMRUNUICogRlJPTSB0 MSc7Ci0jLS1zb3VyY2UgaW5jbHVkZS93YWl0X2NvbmRpdGlvbi5pbmMKLSNTRVQgREVCVUdfU1lO Qz0gIm5vdyBTSUdOQUwgcXVlcnkiOwotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAot I2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSMtLWVjaG8gIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBB REQgVU5JUVVFIElOREVYKGEpCi0jLS1yZWFwCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24x Ci0jY29ubmVjdGlvbiBjb24xOwotIy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00gdDEK LSMtLXJlYXAKLSMKLSMtLWVjaG8gIyBUZXN0IDM6IFByaW1hcnkgaW5kZXggKGV4cGxpY2l0KSwg c2hvdWxkIGJsb2NrIHJlYWRzLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nv bm5lY3Rpb24gZGVmYXVsdDsKLSNBTFRFUiBUQUJMRSB0MSBEUk9QIElOREVYIGE7Ci0jU0VUIERF QlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9S IHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJMRSB0MSBBREQg UFJJTUFSWSBLRVkgKGEpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCi0jY29ubmVjdGlv biBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7Ci0jLS1lY2hv ICMgU2VuZGluZzoKLSMtLXNlbmQgU0VMRUNUICogRlJPTSB0MQotIwotIy0tZWNobyAjIENvbm5l Y3Rpb24gY29uMgotI2Nvbm5lY3Rpb24gY29uMjsKLSMtLWVjaG8gIyBXYWl0aW5nIGZvciBTRUxF Q1QgdG8gYmUgYmxvY2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQotI2xldCAkd2FpdF9j b25kaXRpb249IFNFTEVDVCBDT1VOVCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9j ZXNzbGlzdAotIyAgV0hFUkUgc3RhdGU9ICdXYWl0aW5nIGZvciB0YWJsZSBtZXRhZGF0YSBsb2Nr JwotIyAgQU5EIGluZm89J1NFTEVDVCAqIEZST00gdDEnOwotIy0tc291cmNlIGluY2x1ZGUvd2Fp dF9jb25kaXRpb24uaW5jCi0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMK LSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1l Y2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIChhKQotIy0tcmVh cAotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5lY3Rpb24gY29uMTsKLSMtLWVj aG8gIyBSZWFwaW5nOiBTRUxFQ1QgKiBGUk9NIHQxCi0jLS1yZWFwCi0jCi0jLS1lY2hvICMgVGVz dCA0OiBTZWNvbmRhcnkgdW5pcXVlIGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRzLgotIwot Iy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSNTRVQg REVCVUdfU1lOQz0gImFsdGVyX3RhYmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9G T1IgcXVlcnkiOwotIy0tZWNobyAjIFNlbmRpbmc6Ci0jLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFE RCBVTklRVUUgKGIpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCi0jY29ubmVjdGlvbiBj b24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7Ci0jU0VMRUNUICog RlJPTSB0MTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOwotIwotIy0tZWNo byAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rpb24gZGVmYXVsdDsKLSMtLWVjaG8gIyBS ZWFwaW5nOiBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIChiKQotIy0tcmVhcAotIwotI2Rpc2Nv bm5lY3QgY29uMTsKLSNkaXNjb25uZWN0IGNvbjI7Ci0jU0VUIERFQlVHX1NZTkM9ICJSRVNFVCI7 Ci0jRFJPUCBUQUJMRSB0MTsKK2Rpc2Nvbm5lY3QgY29uMTsKK2Rpc2Nvbm5lY3QgY29uMjsKK1NF VCBERUJVR19TWU5DPSAiUkVTRVQiOworRFJPUCBUQUJMRSB0MTsKIAogCiAjIENoZWNrIHRoYXQg YWxsIGNvbm5lY3Rpb25zIG9wZW5lZCBieSB0ZXN0IGNhc2VzIGluIHRoaXMgZmlsZSBhcmUgcmVh bGx5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2hhX3BhcnRpdGlvbi5jYycKLS0tIGEvc3FsL2hh X3BhcnRpdGlvbi5jYwkyMDExLTA1LTIxIDA4OjIxOjA4ICswMDAwCisrKyBiL3NxbC9oYV9wYXJ0 aXRpb24uY2MJMjAxMS0wNS0zMCAxMjoxMTo1MiArMDAwMApAQCAtNjY1NiwyMiArNjY1NiwyOSBA QCBib29sIGhhX3BhcnRpdGlvbjo6Y2hlY2tfaWZfaW5jb21wYXRpYmxlCiAKIAogLyoqCi0gIFN1 cHBvcnQgb2YgZmFzdCBvciBvbmxpbmUgYWRkL2Ryb3AgaW5kZXgKKyAgU3VwcG9ydCBvZiBpbi1w bGFjZSBhZGQvZHJvcCBpbmRleAogKi8KLWludCBoYV9wYXJ0aXRpb246OmFkZF9pbmRleChUQUJM RSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzKQoraW50IGhhX3Bh cnRpdGlvbjo6YWRkX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQg bnVtX29mX2tleXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hZGRfaW5k ZXggKiphZGQpCiB7CiAgIGhhbmRsZXIgKipmaWxlOwogICBpbnQgcmV0PSAwOwogCiAgIERCVUdf RU5URVIoImhhX3BhcnRpdGlvbjo6YWRkX2luZGV4Iik7CisgICphZGQ9IG5ldyBoYW5kbGVyX2Fk ZF9pbmRleCh0YWJsZSwga2V5X2luZm8sIG51bV9vZl9rZXlzKTsKICAgLyoKICAgICBUaGVyZSBo YXMgYWxyZWFkeSBiZWVuIGEgY2hlY2sgaW4gZml4X3BhcnRpdGlvbl9mdW5jIGluIG15c3FsX2Fs dGVyX3RhYmxlCiAgICAgYmVmb3JlIHRoaXMgY2FsbCwgd2hpY2ggY2hlY2tzIGZvciB1bmlxdWUv cHJpbWFyeSBrZXkgdmlvbGF0aW9ucyBvZiB0aGUKICAgICBwYXJ0aXRpb25pbmcgZnVuY3Rpb24u IFNvIG5vIG5lZWQgZm9yIGV4dHJhIGNoZWNrIGhlcmUuCiAgICovCiAgIGZvciAoZmlsZT0gbV9m aWxlOyAqZmlsZTsgZmlsZSsrKQotICAgIGlmICgocmV0PSAgKCpmaWxlKS0+YWRkX2luZGV4KHRh YmxlX2FyZywga2V5X2luZm8sIG51bV9vZl9rZXlzKSkpCisgIHsKKyAgICBoYW5kbGVyX2FkZF9p bmRleCAqYWRkX2luZGV4OworICAgIGlmICgocmV0PSAoKmZpbGUpLT5hZGRfaW5kZXgodGFibGVf YXJnLCBrZXlfaW5mbywgbnVtX29mX2tleXMsICZhZGRfaW5kZXgpKSkKKyAgICAgIGdvdG8gZXJy OworICAgIGlmICgocmV0PSAoKmZpbGUpLT5maW5hbF9hZGRfaW5kZXgoYWRkX2luZGV4LCB0cnVl KSkpCiAgICAgICBnb3RvIGVycjsKKyAgfQogICBEQlVHX1JFVFVSTihyZXQpOwogZXJyOgogICBp ZiAoZmlsZSA+IG1fZmlsZSkKQEAgLTY2OTYsNiArNjcwMyw0MiBAQCBlcnI6CiB9CiAKIAorLyoq CisgICBTZWNvbmQgcGhhc2Ugb2YgaW4tcGxhY2UgYWRkIGluZGV4LgorCisgICBAbm90ZSBJZiBj b21taXQgaXMgZmFsc2UsIGluZGV4IGNoYW5nZXMgYXJlIHJvbGxlZCBiYWNrIGJ5IGRyb3BwaW5n IHRoZQorICAgICAgICAgYWRkZWQgaW5kZXhlcy4gSWYgY29tbWl0IGlzIHRydWUsIG5vdGhpbmcg aXMgZG9uZSBhcyB0aGUgaW5kZXhlcworICAgICAgICAgd2VyZSBhbHJlYWR5IG1hZGUgYWN0aXZl IGluIDo6YWRkX2luZGV4KCkKKyAqLworCitpbnQgaGFfcGFydGl0aW9uOjpmaW5hbF9hZGRfaW5k ZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFkZCwgYm9vbCBjb21taXQpCit7CisgIERCVUdfRU5URVIo ImhhX3BhcnRpdGlvbjo6ZmluYWxfYWRkX2luZGV4Iik7CisgIC8vIFJvbGxiYWNrIGJ5IGRyb3Bw aW5nIGluZGV4ZXMuCisgIGlmICghY29tbWl0KQorICB7CisgICAgVEFCTEUgKnRhYmxlX2FyZz0g YWRkLT50YWJsZTsKKyAgICB1aW50IG51bV9vZl9rZXlzPSBhZGQtPm51bV9vZl9rZXlzOworICAg IGhhbmRsZXIgKipmaWxlOworICAgIHVpbnQgKmtleV9udW1iZXJzPSAodWludCopIGhhX3RoZCgp LT5hbGxvYyhzaXplb2YodWludCkgKiBudW1fb2Zfa2V5cyk7CisgICAgdWludCBvbGRfbnVtX29m X2tleXM9IHRhYmxlX2FyZy0+cy0+a2V5czsKKyAgICB1aW50IGk7CisgICAgLyogVGhlIG5ld2x5 IGNyZWF0ZWQga2V5cyBoYXZlIHRoZSBsYXN0IGlkJ3MgKi8KKyAgICBmb3IgKGk9IDA7IGkgPCBu dW1fb2Zfa2V5czsgaSsrKQorICAgICAga2V5X251bWJlcnNbaV09IGkgKyBvbGRfbnVtX29mX2tl eXM7CisgICAgaWYgKCF0YWJsZV9hcmctPmtleV9pbmZvKQorICAgICAgdGFibGVfYXJnLT5rZXlf aW5mbz0gYWRkLT5rZXlfaW5mbzsKKyAgICBmb3IgKGZpbGU9IG1fZmlsZTsgKmZpbGU7IGZpbGUr KykKKyAgICB7CisgICAgICAodm9pZCkgKCpmaWxlKS0+cHJlcGFyZV9kcm9wX2luZGV4KHRhYmxl X2FyZywga2V5X251bWJlcnMsIG51bV9vZl9rZXlzKTsKKyAgICAgICh2b2lkKSAoKmZpbGUpLT5m aW5hbF9kcm9wX2luZGV4KHRhYmxlX2FyZyk7CisgICAgfQorICAgIGlmICh0YWJsZV9hcmctPmtl eV9pbmZvID09IGFkZC0+a2V5X2luZm8pCisgICAgICB0YWJsZV9hcmctPmtleV9pbmZvPSBOVUxM OworICB9CisgIERCVUdfUkVUVVJOKDApOworfQorCiBpbnQgaGFfcGFydGl0aW9uOjpwcmVwYXJl X2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgdWludCAqa2V5X251bSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQgbnVtX29mX2tleXMpCiB7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL2hhX3BhcnRpdGlvbi5oJwotLS0gYS9zcWwvaGFfcGFydGl0aW9uLmgJMjAxMS0w NC0yMCAxNzo1MzowOCArMDAwMAorKysgYi9zcWwvaGFfcGFydGl0aW9uLmgJMjAxMS0wNS0zMCAx MjoxMTo1MiArMDAwMApAQCAtMTA1NSw3ICsxMDU1LDkgQEAgcHVibGljOgogICAgIFRoZXkgYXJl IHVzZWQgZm9yIG9uLWxpbmUvZmFzdCBhbHRlciB0YWJsZSBhZGQvZHJvcCBpbmRleDoKICAgICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgICovCi0gIHZpcnR1YWwgaW50IGFkZF9pbmRleChUQUJMRSAqdGFi bGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzKTsKKyAgdmlydHVhbCBpbnQg YWRkX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tl eXMsCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX2FkZF9pbmRleCAqKmFkZCk7Cisg IHZpcnR1YWwgaW50IGZpbmFsX2FkZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRkLCBib29s IGNvbW1pdCk7CiAgIHZpcnR1YWwgaW50IHByZXBhcmVfZHJvcF9pbmRleChUQUJMRSAqdGFibGVf YXJnLCB1aW50ICprZXlfbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dCBudW1fb2Zfa2V5cyk7CiAgIHZpcnR1YWwgaW50IGZpbmFsX2Ryb3BfaW5kZXgoVEFCTEUgKnRh YmxlX2FyZyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2hhbmRsZXIuaCcKLS0tIGEvc3FsL2hh bmRsZXIuaAkyMDExLTA1LTA1IDIzOjUwOjMxICswMDAwCisrKyBiL3NxbC9oYW5kbGVyLmgJMjAx MS0wNS0zMCAxMjoxMTo1MiArMDAwMApAQCAtMTE1OSw2ICsxMTU5LDI3IEBAIHVpbnQgY2FsY3Vs YXRlX2tleV9sZW4oVEFCTEUgKiwgdWludCwgY28KICovCiAjZGVmaW5lIG1ha2VfcHJldl9rZXlw YXJ0X21hcChOKSAoKChrZXlfcGFydF9tYXApMSA8PCAoTikpIC0gMSkKIAorCisvKioKKyAgSW5k ZXggY3JlYXRpb24gY29udGV4dC4KKyAgQ3JlYXRlZCBieSBoYW5kbGVyOjphZGRfaW5kZXgoKSBh bmQgZnJlZWQgYnkgaGFuZGxlcjo6ZmluYWxfYWRkX2luZGV4KCkuCisqLworCitjbGFzcyBoYW5k bGVyX2FkZF9pbmRleAoreworcHVibGljOgorICAvKiBUYWJsZSB3aGVyZSB0aGUgaW5kZXhlcyBh cmUgYWRkZWQgKi8KKyAgVEFCTEUqIGNvbnN0IHRhYmxlOworICAvKiBJbmRleGVzIGJlaW5nIGNy ZWF0ZWQgKi8KKyAgS0VZKiBjb25zdCBrZXlfaW5mbzsKKyAgLyogU2l6ZSBvZiBrZXlfaW5mb1td ICovCisgIGNvbnN0IHVpbnQgbnVtX29mX2tleXM7CisgIGhhbmRsZXJfYWRkX2luZGV4KFRBQkxF ICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm9fYXJnLCB1aW50IG51bV9vZl9rZXlzX2FyZykKKyAg ICA6IHRhYmxlICh0YWJsZV9hcmcpLCBrZXlfaW5mbyAoa2V5X2luZm9fYXJnKSwgbnVtX29mX2tl eXMgKG51bV9vZl9rZXlzX2FyZykKKyAge30KKyAgdmlydHVhbCB+aGFuZGxlcl9hZGRfaW5kZXgo KSB7fQorfTsKKwogLyoqCiAgIFRoZSBoYW5kbGVyIGNsYXNzIGlzIHRoZSBpbnRlcmZhY2UgZm9y IGR5bmFtaWNhbGx5IGxvYWRhYmxlCiAgIHN0b3JhZ2UgZW5naW5lcy4gRG8gbm90IGFkZCBpZmRl ZnMgYW5kIHRha2UgY2FyZSB3aGVuIGFkZGluZyBvcgpAQCAtMTcxNyw4ICsxNzM4LDM2IEBAIHB1 YmxpYzoKIAogICB2aXJ0dWFsIHVsb25nIGluZGV4X2ZsYWdzKHVpbnQgaWR4LCB1aW50IHBhcnQs IGJvb2wgYWxsX3BhcnRzKSBjb25zdCA9MDsKIAotICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFC TEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cykKKy8qKgorICAg Rmlyc3QgcGhhc2Ugb2YgaW4tcGxhY2UgYWRkIGluZGV4LgorICAgSGFuZGxlcnMgYXJlIHN1cHBv c2VkIHRvIGNyZWF0ZSBuZXcgaW5kZXhlcyBoZXJlIGJ1dCBub3QgbWFrZSB0aGVtCisgICB2aXNp YmxlLgorCisgICBAcGFyYW0gdGFibGVfYXJnICAgVGFibGUgdG8gYWRkIGluZGV4IHRvCisgICBA cGFyYW0ga2V5X2luZm8gICAgSW5mb3JtYXRpb24gYWJvdXQgbmV3IGluZGV4ZXMKKyAgIEBwYXJh bSBudW1fb2Zfa2V5ICBOdW1iZXIgb2YgbmV3IGluZGV4ZXMKKyAgIEBwYXJhbSBhZGRbb3V0XSAg ICBDb250ZXh0IG9mIGhhbmRsZXIgc3BlY2lmaWMgaW5mb3JtYXRpb24gbmVlZGVkCisgICAgICAg ICAgICAgICAgICAgICAgZm9yIGZpbmFsX2FkZF9pbmRleCgpLgorCisgICBAbm90ZSBUaGlzIGZ1 bmN0aW9uIGNhbiBiZSBjYWxsZWQgd2l0aCBsZXNzIHRoYW4gZXhjbHVzaXZlIG1ldGFkYXRhCisg ICBsb2NrIGRlcGVuZGluZyBvbiB3aGljaCBmbGFncyBhcmUgbGlzdGVkIGluIGFsdGVyX3RhYmxl X2ZsYWdzLgorKi8KKyAgdmlydHVhbCBpbnQgYWRkX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtF WSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMsCisgICAgICAgICAgICAgICAgICAgICAgICBo YW5kbGVyX2FkZF9pbmRleCAqKmFkZCkKKyAgeyByZXR1cm4gKEhBX0VSUl9XUk9OR19DT01NQU5E KTsgfQorCisvKioKKyAgIFNlY29uZCBhbmQgbGFzdCBwaGFzZSBvZiBpbi1wbGFjZSBhZGQgaW5k ZXguCisgICBDb21taXQgb3Igcm9sbGJhY2sgcGVuZGluZyBuZXcgaW5kZXhlcy4KKworICAgQHBh cmFtIGFkZCAgICAgQ29udGV4dCBvZiBoYW5kbGVyIHNwZWNpZmljIGluZm9ybWF0aW9uIGZyb20g YWRkX2luZGV4KCkuCisgICBAcGFyYW0gY29tbWl0ICBJZiB0cnVlLCBjb21taXQuIElmIGZhbHNl LCByb2xsYmFjayBpbmRleCBjaGFuZ2VzLgorCisgICBAbm90ZSBUaGlzIGZ1bmN0aW9uIGlzIGNh bGxlZCB3aXRoIGV4Y2x1c2l2ZSBtZXRhZGF0YSBsb2NrLgorKi8KKyAgdmlydHVhbCBpbnQgZmlu YWxfYWRkX2luZGV4KGhhbmRsZXJfYWRkX2luZGV4ICphZGQsIGJvb2wgY29tbWl0KQogICB7IHJl dHVybiAoSEFfRVJSX1dST05HX0NPTU1BTkQpOyB9CisKICAgdmlydHVhbCBpbnQgcHJlcGFyZV9k cm9wX2luZGV4KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50IG51bV9vZl9rZXlzKQogICB7IHJldHVybiAoSEFfRVJS X1dST05HX0NPTU1BTkQpOyB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF90YWJsZS5jYycK LS0tIGEvc3FsL3NxbF90YWJsZS5jYwkyMDExLTA1LTIxIDA4OjIxOjA4ICswMDAwCisrKyBiL3Nx bC9zcWxfdGFibGUuY2MJMjAxMS0wNS0zMCAxMjoxMTo1MiArMDAwMApAQCAtNTY4MCw2ICs1Njgw LDggQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRoZCxjaGFyICpuZQogICB1aW50IGlu ZGV4X2Ryb3BfY291bnQ9IDA7CiAgIHVpbnQgKmluZGV4X2Ryb3BfYnVmZmVyPSBOVUxMOwogICB1 aW50IGluZGV4X2FkZF9jb3VudD0gMDsKKyAgaGFuZGxlcl9hZGRfaW5kZXggKmFkZD0gTlVMTDsK KyAgYm9vbCBwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4PSBmYWxzZTsKICAgdWludCAqaW5kZXhf YWRkX2J1ZmZlcj0gTlVMTDsKICAgdWludCBjYW5kaWRhdGVfa2V5X2NvdW50PSAwOwogICBib29s IG5vX3BrOwpAQCAtNjQzNCw2ICs2NDM2LDkgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQg KnRoZCxjaGFyICpuZQogICB9CiAgIHRoZC0+Y291bnRfY3V0ZWRfZmllbGRzPSBDSEVDS19GSUVM RF9JR05PUkU7CiAKKyAgaWYgKGVycm9yKQorICAgIGdvdG8gZXJyX25ld190YWJsZV9jbGVhbnVw OworCiAgIC8qIElmIHdlIGRpZCBub3QgbmVlZCB0byBjb3B5LCB3ZSBtaWdodCBzdGlsbCBuZWVk IHRvIGFkZC9kcm9wIGluZGV4ZXMuICovCiAgIGlmICghIG5ld190YWJsZSkKICAgewpAQCAtNjQ2 NSw3ICs2NDcwLDggQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRoZCxjaGFyICpuZQog ICAgICAgICAgIGtleV9wYXJ0LT5maWVsZD0gdGFibGUtPmZpZWxkW2tleV9wYXJ0LT5maWVsZG5y XTsKICAgICAgIH0KICAgICAgIC8qIEFkZCB0aGUgaW5kZXhlcy4gKi8KLSAgICAgIGlmICgoZXJy b3I9IHRhYmxlLT5maWxlLT5hZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBpbmRleF9hZGRfY291 bnQpKSkKKyAgICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5hZGRfaW5kZXgodGFibGUsIGtl eV9pbmZvLCBpbmRleF9hZGRfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZhZGQpKSkKICAgICAgIHsKICAgICAgICAgLyoKICAgICAgICAgICBFeGNoYW5n ZSB0aGUga2V5X2luZm8gZm9yIHRoZSBlcnJvciBtZXNzYWdlLiBJZiB3ZSBleGNoYW5nZQpAQCAt NjQ3NywxMSArNjQ4MywyNyBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRIRCAqdGhkLGNoYXIg Km5lCiAgICAgICAgIHRhYmxlLT5rZXlfaW5mbz0gc2F2ZV9rZXlfaW5mbzsKICAgICAgICAgZ290 byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7CiAgICAgICB9CisgICAgICBwZW5kaW5nX2lucGxhY2Vf YWRkX2luZGV4PSB0cnVlOwogICAgIH0KICAgICAvKmVuZCBvZiBpZiAoaW5kZXhfYWRkX2NvdW50 KSovCiAKICAgICBpZiAoaW5kZXhfZHJvcF9jb3VudCkKICAgICB7CisgICAgICAvKiBDdXJyZW50 bHkgd2UgbXVzdCBmaW5hbGl6ZSBhZGQgaW5kZXggaWYgd2UgYWxzbyBkcm9wIGluZGV4ZXMgKi8K KyAgICAgIGlmIChwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4KQorICAgICAgeworICAgICAgICAv KiBDb21taXR0aW5nIGluZGV4IGNoYW5nZXMgbmVlZHMgZXhjbHVzaXZlIG1ldGFkYXRhIGxvY2su ICovCisgICAgICAgIERCVUdfQVNTRVJUKHRoZC0+bWRsX2NvbnRleHQuaXNfbG9ja19vd25lcihN RExfa2V5OjpUQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlX2xpc3QtPmRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFibGVfbGlzdC0+dGFibGVfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ETF9FWENMVVNJVkUpKTsK KyAgICAgICAgaWYgKChlcnJvcj0gdGFibGUtPmZpbGUtPmZpbmFsX2FkZF9pbmRleChhZGQsIHRy dWUpKSkKKyAgICAgICAgeworICAgICAgICAgIHRhYmxlLT5maWxlLT5wcmludF9lcnJvcihlcnJv ciwgTVlGKDApKTsKKyAgICAgICAgICBnb3RvIGVycl9uZXdfdGFibGVfY2xlYW51cDsKKyAgICAg ICAgfQorICAgICAgICBwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4PSBmYWxzZTsKKyAgICAgIH0K ICAgICAgIC8qIFRoZSBwcmVwYXJlX2Ryb3BfaW5kZXgoKSBtZXRob2QgdGFrZXMgYW4gYXJyYXkg b2Yga2V5IG51bWJlcnMuICovCiAgICAgICBrZXlfbnVtYmVycz0gKHVpbnQqKSB0aGQtPmFsbG9j KHNpemVvZih1aW50KSAqIGluZGV4X2Ryb3BfY291bnQpOwogICAgICAga2V5bm9fcD0ga2V5X251 bWJlcnM7CkBAIC02NTIyLDExICs2NTQ0LDE0IEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhE ICp0aGQsY2hhciAqbmUKICAgfQogICAvKmVuZCBvZiBpZiAoISBuZXdfdGFibGUpIGZvciBhZGQv ZHJvcCBpbmRleCovCiAKLSAgaWYgKGVycm9yKQotICAgIGdvdG8gZXJyX25ld190YWJsZV9jbGVh bnVwOwotCiAgIGlmICh0YWJsZS0+cy0+dG1wX3RhYmxlICE9IE5PX1RNUF9UQUJMRSkKICAgewor ICAgIC8qCisgICAgICBJbi1wbGFjZSBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciB0 ZW1wb3JhcnkgdGFibGVzLCBzbworICAgICAgd2UgZG9uJ3QgaGF2ZSB0byBjYWxsIGZpbmFsX2Fk ZF9pbmRleCgpIGluIHRoaXMgY2FzZS4gVGhlIGFzc2VydAorICAgICAgdmVyaWZpZXMgdGhhdCBp bi1wbGFjZSBhZGQgaW5kZXggaGFzIG5vdCBiZWVuIGRvbmUuCisgICAgKi8KKyAgICBEQlVHX0FT U0VSVCghcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleCk7CiAgICAgLyogQ2xvc2UgbG9jayBpZiB0 aGlzIGlzIGEgdHJhbnNhY3Rpb25hbCB0YWJsZSAqLwogICAgIGlmICh0aGQtPmxvY2spCiAgICAg ewpAQCAtNjU5Myw4ICs2NjE4LDMwIEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUoVEhEICp0aGQs Y2hhciAqbmUKICAgICBteV9jYXNlZG5fc3RyKGZpbGVzX2NoYXJzZXRfaW5mbywgb2xkX25hbWUp OwogCiAgIGlmICh3YWl0X3doaWxlX3RhYmxlX2lzX3VzZWQodGhkLCB0YWJsZSwgSEFfRVhUUkFf UFJFUEFSRV9GT1JfUkVOQU1FKSkKKyAgeworICAgIGlmIChwZW5kaW5nX2lucGxhY2VfYWRkX2lu ZGV4KQorICAgIHsKKyAgICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IGZhbHNlOworICAg ICAgdGFibGUtPmZpbGUtPmZpbmFsX2FkZF9pbmRleChhZGQsIGZhbHNlKTsKKyAgICB9CisgICAg Ly8gTWFyayB0aGlzIFRBQkxFIGluc3RhbmNlIGFzIHN0YWxlIHRvIGF2b2lkIG91dC1vZi1zeW5j IGluZGV4IGluZm9ybWF0aW9uLgorICAgIHRhYmxlLT5tX25lZWRzX3Jlb3Blbj0gdHJ1ZTsKICAg ICBnb3RvIGVycl9uZXdfdGFibGVfY2xlYW51cDsKLQorICB9CisgIGlmIChwZW5kaW5nX2lucGxh Y2VfYWRkX2luZGV4KQorICB7CisgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7 CisgICAgREJVR19FWEVDVVRFX0lGKCJhbHRlcl90YWJsZV9yb2xsYmFja19uZXdfaW5kZXgiLCB7 CisgICAgICB0YWJsZS0+ZmlsZS0+ZmluYWxfYWRkX2luZGV4KGFkZCwgZmFsc2UpOworICAgICAg bXlfZXJyb3IoRVJfVU5LTk9XTl9FUlJPUiwgTVlGKDApKTsKKyAgICAgIGdvdG8gZXJyX25ld190 YWJsZV9jbGVhbnVwOworICAgIH0pOworICAgIGlmICgoZXJyb3I9IHRhYmxlLT5maWxlLT5maW5h bF9hZGRfaW5kZXgoYWRkLCB0cnVlKSkpCisgICAgeworICAgICAgdGFibGUtPmZpbGUtPnByaW50 X2Vycm9yKGVycm9yLCBNWUYoMCkpOworICAgICAgZ290byBlcnJfbmV3X3RhYmxlX2NsZWFudXA7 CisgICAgfQorICB9CiAKICAgY2xvc2VfYWxsX3RhYmxlc19mb3JfbmFtZSh0aGQsIHRhYmxlLT5z LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19uYW1lICE9IHRhYmxlX25hbWUgfHwg bmV3X2RiICE9IGRiKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRs ZXIvaGFfaW5ub2RiLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2Ri LmNjCTIwMTEtMDUtMjYgMTU6MDk6MTYgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhX2lubm9kYi5jYwkyMDExLTA1LTMwIDEyOjExOjUyICswMDAwCkBAIC0yNjIxLDggKzI2 MjEsMTAgQEAgaW5ub2Jhc2VfYWx0ZXJfdGFibGVfZmxhZ3MoCiAJdWludAlmbGFncykKIHsKIAly ZXR1cm4oSEFfSU5QTEFDRV9BRERfSU5ERVhfTk9fUkVBRF9XUklURQorCQl8IEhBX0lOUExBQ0Vf QUREX0lOREVYX05PX1dSSVRFCiAJCXwgSEFfSU5QTEFDRV9EUk9QX0lOREVYX05PX1JFQURfV1JJ VEUKIAkJfCBIQV9JTlBMQUNFX0FERF9VTklRVUVfSU5ERVhfTk9fUkVBRF9XUklURQorCQl8IEhB X0lOUExBQ0VfQUREX1VOSVFVRV9JTkRFWF9OT19XUklURQogCQl8IEhBX0lOUExBQ0VfRFJPUF9V TklRVUVfSU5ERVhfTk9fUkVBRF9XUklURQogCQl8IEhBX0lOUExBQ0VfQUREX1BLX0lOREVYX05P X1JFQURfV1JJVEUpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFu ZGxlci9oYV9pbm5vZGIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9k Yi5oCTIwMTEtMDQtMTEgMTQ6MDM6MzIgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhX2lubm9kYi5oCTIwMTEtMDUtMzAgMTI6MTE6NTIgKzAwMDAKQEAgLTIxNSw3ICsyMTUs OSBAQCBjbGFzcyBoYV9pbm5vYmFzZTogcHVibGljIGhhbmRsZXIKIAlib29sIHByaW1hcnlfa2V5 X2lzX2NsdXN0ZXJlZCgpOwogCWludCBjbXBfcmVmKGNvbnN0IHVjaGFyICpyZWYxLCBjb25zdCB1 Y2hhciAqcmVmMik7CiAJLyoqIEZhc3QgaW5kZXggY3JlYXRpb24gKHNtYXJ0IEFMVEVSIFRBQkxF KSBAc2VlIGhhbmRsZXIwYWx0ZXIuY2MgQHsgKi8KLQlpbnQgYWRkX2luZGV4KFRBQkxFICp0YWJs ZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMpOworCWludCBhZGRfaW5kZXgo VEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cywKKwkJICAg ICAgaGFuZGxlcl9hZGRfaW5kZXggKiphZGQpOworCWludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxl cl9hZGRfaW5kZXggKmFkZCwgYm9vbCBjb21taXQpOwogCWludCBwcmVwYXJlX2Ryb3BfaW5kZXgo VEFCTEUgKnRhYmxlX2FyZywgdWludCAqa2V5X251bSwKIAkJCSAgICAgICB1aW50IG51bV9vZl9r ZXlzKTsKIAlpbnQgZmluYWxfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJnKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJMjAxMS0wNC0xMSAx NDowMzozMiArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRl ci5jYwkyMDExLTA1LTMwIDEyOjExOjUyICswMDAwCkBAIC02MTksNiArNjE5LDE4IEBAIGlubm9i YXNlX2NyZWF0ZV90ZW1wb3JhcnlfdGFibGVuYW1lKAogCXJldHVybihuYW1lKTsKIH0KIAorY2xh c3MgaGFfaW5ub2Jhc2VfYWRkX2luZGV4IDogcHVibGljIGhhbmRsZXJfYWRkX2luZGV4Cit7Citw dWJsaWM6CisJLyoqIHRhYmxlIHdoZXJlIHRoZSBpbmRleGVzIGFyZSBiZWluZyBjcmVhdGVkICov CisJZGljdF90YWJsZV90KiBpbmRleGVkX3RhYmxlOworCWhhX2lubm9iYXNlX2FkZF9pbmRleChU QUJMRSogdGFibGUsIEtFWSoga2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMsCisJCQkgICAgICBk aWN0X3RhYmxlX3QqIGluZGV4ZWRfdGFibGVfYXJnKSA6CisJCWhhbmRsZXJfYWRkX2luZGV4KHRh YmxlLCBrZXlfaW5mbywgbnVtX29mX2tleXMpLAorCQlpbmRleGVkX3RhYmxlIChpbmRleGVkX3Rh YmxlX2FyZykge30KKwl+aGFfaW5ub2Jhc2VfYWRkX2luZGV4KCkge30KK307CisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogQ3JlYXRlIGluZGV4ZXMuCiBAcmV0dXJuCTAgb3IgZXJyb3IgbnVtYmVyICovCkBA IC02MjYsMTIgKzYzOCwxNSBAQCBVTklWX0lOVEVSTgogaW50CiBoYV9pbm5vYmFzZTo6YWRkX2lu ZGV4KAogLyo9PT09PT09PT09PT09PT09PT09Ki8KLQlUQUJMRSoJdGFibGUsCQkvKiE8IGluOiBU YWJsZSB3aGVyZSBpbmRleGVzIGFyZSBjcmVhdGVkICovCi0JS0VZKglrZXlfaW5mbywJLyohPCBp bjogSW5kZXhlcyB0byBiZSBjcmVhdGVkICovCi0JdWludAludW1fb2Zfa2V5cykJLyohPCBpbjog TnVtYmVyIG9mIGluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLworCVRBQkxFKgkJCXRhYmxlLAkJLyoh PCBpbjogVGFibGUgd2hlcmUgaW5kZXhlcworCQkJCQkJYXJlIGNyZWF0ZWQgKi8KKwlLRVkqCQkJ a2V5X2luZm8sCS8qITwgaW46IEluZGV4ZXMKKwkJCQkJCXRvIGJlIGNyZWF0ZWQgKi8KKwl1aW50 CQkJbnVtX29mX2tleXMsCS8qITwgaW46IE51bWJlciBvZiBpbmRleGVzCisJCQkJCQl0byBiZSBj cmVhdGVkICovCisJaGFuZGxlcl9hZGRfaW5kZXgqKglhZGQpCQkvKiE8IG91dDogY29udGV4dCAq LwogewogCWRpY3RfaW5kZXhfdCoqCWluZGV4OwkJLyohPCBJbmRleCB0byBiZSBjcmVhdGVkICov Ci0JZGljdF90YWJsZV90Kglpbm5vZGJfdGFibGU7CS8qITwgSW5ub0RCIHRhYmxlIGluIGRpY3Rp b25hcnkgKi8KIAlkaWN0X3RhYmxlX3QqCWluZGV4ZWRfdGFibGU7CS8qITwgVGFibGUgd2hlcmUg aW5kZXhlcyBhcmUgY3JlYXRlZCAqLwogCW1lcmdlX2luZGV4X2RlZl90KiBpbmRleF9kZWZzOwkv KiE8IEluZGV4IGRlZmluaXRpb25zICovCiAJbWVtX2hlYXBfdCogICAgIGhlYXA7CQkvKiE8IEhl YXAgZm9yIGluZGV4IGRlZmluaXRpb25zICovCkBAIC02NDcsNiArNjYyLDggQEAgaGFfaW5ub2Jh c2U6OmFkZF9pbmRleCgKIAl1dF9hKGtleV9pbmZvKTsKIAl1dF9hKG51bV9vZl9rZXlzKTsKIAor CSphZGQgPSBOVUxMOworCiAJaWYgKHNydl9jcmVhdGVkX25ld19yYXcgfHwgc3J2X2ZvcmNlX3Jl Y292ZXJ5KSB7CiAJCURCVUdfUkVUVVJOKEhBX0VSUl9XUk9OR19DT01NQU5EKTsKIAl9CkBAIC02 NjIsMTUgKzY3OSwxNiBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCQlEQlVHX1JFVFVSTigt MSk7CiAJfQogCi0JaW5ub2RiX3RhYmxlID0gaW5kZXhlZF90YWJsZQotCQk9IGRpY3RfdGFibGVf Z2V0KHByZWJ1aWx0LT50YWJsZS0+bmFtZSwgRkFMU0UpOworCWluZGV4ZWRfdGFibGUgPSBkaWN0 X3RhYmxlX2dldChwcmVidWlsdC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKIAotCWlmIChVTklWX1VO TElLRUxZKCFpbm5vZGJfdGFibGUpKSB7CisJaWYgKFVOSVZfVU5MSUtFTFkoIWluZGV4ZWRfdGFi bGUpKSB7CiAJCURCVUdfUkVUVVJOKEhBX0VSUl9OT19TVUNIX1RBQkxFKTsKIAl9CiAKKwl1dF9h KGluZGV4ZWRfdGFibGUgPT0gcHJlYnVpbHQtPnRhYmxlKTsKKwogCS8qIENoZWNrIHRoYXQgaW5k ZXgga2V5cyBhcmUgc2Vuc2libGUgKi8KLQllcnJvciA9IGlubm9iYXNlX2NoZWNrX2luZGV4X2tl eXMoa2V5X2luZm8sIG51bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUpOworCWVycm9yID0gaW5ub2Jh c2VfY2hlY2tfaW5kZXhfa2V5cyhrZXlfaW5mbywgbnVtX29mX2tleXMsIHByZWJ1aWx0LT50YWJs ZSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShlcnJvcikpIHsKIAkJREJVR19SRVRVUk4oZXJyb3Ip OwpAQCAtNjkxLDcgKzcwOSw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJbnVtX29mX2lk eCA9IG51bV9vZl9rZXlzOwogCiAJaW5kZXhfZGVmcyA9IGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVm KAotCQl0cngsIGlubm9kYl90YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOworCQl0 cngsIHByZWJ1aWx0LT50YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOwogCiAJbmV3 X3ByaW1hcnkgPSBESUNUX0NMVVNURVJFRCAmIGluZGV4X2RlZnNbMF0uaW5kX3R5cGU7CiAKQEAg LTcwNSw3ICs3MjMsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCXRyeF9zZXRfZGljdF9v cGVyYXRpb24odHJ4LCBUUlhfRElDVF9PUF9JTkRFWCk7CiAKIAkvKiBBY3F1aXJlIGEgbG9jayBv biB0aGUgdGFibGUgYmVmb3JlIGNyZWF0aW5nIGFueSBpbmRleGVzLiAqLwotCWVycm9yID0gcm93 X21lcmdlX2xvY2tfdGFibGUocHJlYnVpbHQtPnRyeCwgaW5ub2RiX3RhYmxlLAorCWVycm9yID0g cm93X21lcmdlX2xvY2tfdGFibGUocHJlYnVpbHQtPnRyeCwgcHJlYnVpbHQtPnRhYmxlLAogCQkJ CSAgICAgbmV3X3ByaW1hcnkgPyBMT0NLX1ggOiBMT0NLX1MpOwogCiAJaWYgKFVOSVZfVU5MSUtF TFkoZXJyb3IgIT0gREJfU1VDQ0VTUykpIHsKQEAgLTcxOSw3ICs3MzcsNyBAQCBoYV9pbm5vYmFz ZTo6YWRkX2luZGV4KAogCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCWRp Y3RfbG9ja2VkID0gVFJVRTsKIAotCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4 ZXMoaW5ub2RiX3RhYmxlLCBGQUxTRSkpOworCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVw X2luZGV4ZXMocHJlYnVpbHQtPnRhYmxlLCBGQUxTRSkpOwogCiAJLyogSWYgYSBuZXcgcHJpbWFy eSBrZXkgaXMgZGVmaW5lZCBmb3IgdGhlIHRhYmxlIHdlIG5lZWQKIAl0byBkcm9wIHRoZSBvcmln aW5hbCB0YWJsZSBhbmQgcmVidWlsZCBhbGwgaW5kZXhlcy4gKi8KQEAgLTcyNywxNSArNzQ1LDE1 IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1h cnkpKSB7CiAJCS8qIFRoaXMgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHRoZSBvbmx5IG9uZQogCQlv cGVyYXRpbmcgb24gdGhlIHRhYmxlLiAqLwotCQl1dF9hKGlubm9kYl90YWJsZS0+bl9teXNxbF9o YW5kbGVzX29wZW5lZCA9PSAxKTsKKwkJdXRfYShwcmVidWlsdC0+dGFibGUtPm5fbXlzcWxfaGFu ZGxlc19vcGVuZWQgPT0gMSk7CiAKIAkJY2hhcioJbmV3X3RhYmxlX25hbWUgPSBpbm5vYmFzZV9j cmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZSgKLQkJCWhlYXAsICcxJywgaW5ub2RiX3RhYmxlLT5u YW1lKTsKKwkJCWhlYXAsICcxJywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKIAogCQkvKiBDbG9u ZSB0aGUgdGFibGUuICovCiAJCXRyeF9zZXRfZGljdF9vcGVyYXRpb24odHJ4LCBUUlhfRElDVF9P UF9UQUJMRSk7CiAJCWluZGV4ZWRfdGFibGUgPSByb3dfbWVyZ2VfY3JlYXRlX3RlbXBvcmFyeV90 YWJsZSgKLQkJCW5ld190YWJsZV9uYW1lLCBpbmRleF9kZWZzLCBpbm5vZGJfdGFibGUsIHRyeCk7 CisJCQluZXdfdGFibGVfbmFtZSwgaW5kZXhfZGVmcywgcHJlYnVpbHQtPnRhYmxlLCB0cngpOwog CiAJCWlmICghaW5kZXhlZF90YWJsZSkgewogCkBAIC03NDksMTEgKzc2NywxMiBAQCBoYV9pbm5v YmFzZTo6YWRkX2luZGV4KAogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllcnJvciA9IGNv bnZlcnRfZXJyb3JfY29kZV90b19teXNxbCgKLQkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwgaW5ub2Ri X3RhYmxlLT5mbGFncywKKwkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwKKwkJCQkJcHJlYnVpbHQtPnRh YmxlLT5mbGFncywKIAkJCQkJdXNlcl90aGQpOwogCQkJfQogCi0JCQl1dF9kKGRpY3RfdGFibGVf Y2hlY2tfZm9yX2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwKKwkJCXV0X2QoZGljdF90YWJsZV9j aGVja19mb3JfZHVwX2luZGV4ZXMocHJlYnVpbHQtPnRhYmxlLAogCQkJCQkJCSAgICAgIEZBTFNF KSk7CiAJCQltZW1faGVhcF9mcmVlKGhlYXApOwogCQkJdHJ4X2dlbmVyYWxfcm9sbGJhY2tfZm9y X215c3FsKHRyeCwgTlVMTCk7CkBAIC03NjgsMTcgKzc4NywxNSBAQCBoYV9pbm5vYmFzZTo6YWRk X2luZGV4KAogCiAJLyogQ3JlYXRlIHRoZSBpbmRleGVzIGluIFNZU19JTkRFWEVTIGFuZCBsb2Fk IGludG8gZGljdGlvbmFyeS4gKi8KIAotCWZvciAodWxpbnQgaSA9IDA7IGkgPCBudW1fb2ZfaWR4 OyBpKyspIHsKKwlmb3IgKG51bV9jcmVhdGVkID0gMDsgbnVtX2NyZWF0ZWQgPCBudW1fb2ZfaWR4 OyBudW1fY3JlYXRlZCsrKSB7CiAKLQkJaW5kZXhbaV0gPSByb3dfbWVyZ2VfY3JlYXRlX2luZGV4 KHRyeCwgaW5kZXhlZF90YWJsZSwKLQkJCQkJCSAgJmluZGV4X2RlZnNbaV0pOworCQlpbmRleFtu dW1fY3JlYXRlZF0gPSByb3dfbWVyZ2VfY3JlYXRlX2luZGV4KAorCQkJdHJ4LCBpbmRleGVkX3Rh YmxlLCAmaW5kZXhfZGVmc1tudW1fY3JlYXRlZF0pOwogCi0JCWlmICghaW5kZXhbaV0pIHsKKwkJ aWYgKCFpbmRleFtudW1fY3JlYXRlZF0pIHsKIAkJCWVycm9yID0gdHJ4LT5lcnJvcl9zdGF0ZTsK IAkJCWdvdG8gZXJyb3JfaGFuZGxpbmc7CiAJCX0KLQotCQludW1fY3JlYXRlZCsrOwogCX0KIAog CXV0X2FkKGVycm9yID09IERCX1NVQ0NFU1MpOwpAQCAtODAwLDcgKzgxNyw3IEBAIGhhX2lubm9i YXNlOjphZGRfaW5kZXgoCiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1hcnkpKSB7CiAJCS8q IEEgcHJpbWFyeSBrZXkgaXMgdG8gYmUgYnVpbHQuICBBY3F1aXJlIGFuIGV4Y2x1c2l2ZQogCQl0 YWJsZSBsb2NrIGFsc28gb24gdGhlIHRhYmxlIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gKi8KLQkJ dXRfYWQoaW5kZXhlZF90YWJsZSAhPSBpbm5vZGJfdGFibGUpOworCQl1dF9hZChpbmRleGVkX3Rh YmxlICE9IHByZWJ1aWx0LT50YWJsZSk7CiAKIAkJZXJyb3IgPSByb3dfbWVyZ2VfbG9ja190YWJs ZShwcmVidWlsdC0+dHJ4LCBpbmRleGVkX3RhYmxlLAogCQkJCQkgICAgIExPQ0tfWCk7CkBAIC04 MTQsNyArODMxLDcgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAkvKiBSZWFkIHRoZSBjbHVz dGVyZWQgaW5kZXggb2YgdGhlIHRhYmxlIGFuZCBidWlsZCBpbmRleGVzCiAJYmFzZWQgb24gdGhp cyBpbmZvcm1hdGlvbiB1c2luZyB0ZW1wb3JhcnkgZmlsZXMgYW5kIG1lcmdlIHNvcnQuICovCiAJ ZXJyb3IgPSByb3dfbWVyZ2VfYnVpbGRfaW5kZXhlcyhwcmVidWlsdC0+dHJ4LAotCQkJCQlpbm5v ZGJfdGFibGUsIGluZGV4ZWRfdGFibGUsCisJCQkJCXByZWJ1aWx0LT50YWJsZSwgaW5kZXhlZF90 YWJsZSwKIAkJCQkJaW5kZXgsIG51bV9vZl9pZHgsIHRhYmxlKTsKIAogZXJyb3JfaGFuZGxpbmc6 CkBAIC04MjIsNjMgKzgzOSwxNSBAQCBlcnJvcl9oYW5kbGluZzoKIAlkaWN0aW9uYXJ5IHdoaWNo IHdlcmUgZGVmaW5lZC4gKi8KIAogCXN3aXRjaCAoZXJyb3IpIHsKLQkJY29uc3QgY2hhcioJb2xk X25hbWU7Ci0JCWNoYXIqCQl0bXBfbmFtZTsKIAljYXNlIERCX1NVQ0NFU1M6CiAJCXV0X2EoIWRp Y3RfbG9ja2VkKTsKLQkJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7Ci0JCWRp Y3RfbG9ja2VkID0gVFJVRTsKIAorCQl1dF9kKG11dGV4X2VudGVyKCZkaWN0X3N5cy0+bXV0ZXgp KTsKIAkJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFi bGUsIFRSVUUpKTsKLQotCQlpZiAoIW5ld19wcmltYXJ5KSB7Ci0JCQllcnJvciA9IHJvd19tZXJn ZV9yZW5hbWVfaW5kZXhlcyh0cngsIGluZGV4ZWRfdGFibGUpOwotCi0JCQlpZiAoZXJyb3IgIT0g REJfU1VDQ0VTUykgewotCQkJCXJvd19tZXJnZV9kcm9wX2luZGV4ZXModHJ4LCBpbmRleGVkX3Rh YmxlLAotCQkJCQkJICAgICAgIGluZGV4LCBudW1fY3JlYXRlZCk7Ci0JCQl9Ci0KLQkJCWdvdG8g Y29udmVydF9lcnJvcjsKLQkJfQotCi0JCS8qIElmIGEgbmV3IHByaW1hcnkga2V5IHdhcyBkZWZp bmVkIGZvciB0aGUgdGFibGUgYW5kCi0JCXRoZXJlIHdhcyBubyBlcnJvciBhdCB0aGlzIHBvaW50 LCB3ZSBjYW4gbm93IHJlbmFtZQotCQl0aGUgb2xkIHRhYmxlIGFzIGEgdGVtcG9yYXJ5IHRhYmxl LCByZW5hbWUgdGhlIG5ldwotCQl0ZW1wb3JhcnkgdGFibGUgYXMgdGhlIG9sZCB0YWJsZSBhbmQg ZHJvcCB0aGUgb2xkIHRhYmxlLiAqLwotCQlvbGRfbmFtZSA9IGlubm9kYl90YWJsZS0+bmFtZTsK LQkJdG1wX25hbWUgPSBpbm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZShoZWFwLCAn MicsCi0JCQkJCQkJICAgICAgIG9sZF9uYW1lKTsKLQotCQllcnJvciA9IHJvd19tZXJnZV9yZW5h bWVfdGFibGVzKGlubm9kYl90YWJsZSwgaW5kZXhlZF90YWJsZSwKLQkJCQkJCXRtcF9uYW1lLCB0 cngpOwotCi0JCWlmIChlcnJvciAhPSBEQl9TVUNDRVNTKSB7Ci0KLQkJCXJvd19tZXJnZV9kcm9w X3RhYmxlKHRyeCwgaW5kZXhlZF90YWJsZSk7Ci0KLQkJCXN3aXRjaCAoZXJyb3IpIHsKLQkJCWNh c2UgREJfVEFCTEVTUEFDRV9BTFJFQURZX0VYSVNUUzoKLQkJCWNhc2UgREJfRFVQTElDQVRFX0tF WToKLQkJCQlpbm5vYmFzZV9jb252ZXJ0X3RhYmxlbmFtZSh0bXBfbmFtZSk7Ci0JCQkJbXlfZXJy b3IoSEFfRVJSX1RBQkxFX0VYSVNULCBNWUYoMCksIHRtcF9uYW1lKTsKLQkJCQllcnJvciA9IEhB X0VSUl9UQUJMRV9FWElTVDsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJZ290byBjb252 ZXJ0X2Vycm9yOwotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQotCQl0cnhfY29tbWl0X2Zvcl9teXNx bChwcmVidWlsdC0+dHJ4KTsKLQkJcm93X3ByZWJ1aWx0X2ZyZWUocHJlYnVpbHQsIFRSVUUpOwot CQlwcmVidWlsdCA9IHJvd19jcmVhdGVfcHJlYnVpbHQoaW5kZXhlZF90YWJsZSk7Ci0KLQkJaW5k ZXhlZF90YWJsZS0+bl9teXNxbF9oYW5kbGVzX29wZW5lZCsrOwotCi0JCWVycm9yID0gcm93X21l cmdlX2Ryb3BfdGFibGUodHJ4LCBpbm5vZGJfdGFibGUpOwotCQlpbm5vZGJfdGFibGUgPSBpbmRl eGVkX3RhYmxlOwotCQlnb3RvIGNvbnZlcnRfZXJyb3I7CisJCXV0X2QobXV0ZXhfZXhpdCgmZGlj dF9zeXMtPm11dGV4KSk7CisgICAgICAgICAgICAgICAgKmFkZCA9IG5ldyBoYV9pbm5vYmFzZV9h ZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBudW1fb2Zfa2V5cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVkX3RhYmxlKTsKKwkJYnJlYWs7 CiAKIAljYXNlIERCX1RPT19CSUdfUkVDT1JEOgogCQlteV9lcnJvcihIQV9FUlJfVE9fQklHX1JP VywgTVlGKDApKTsKQEAgLTg5NCw3ICs4NjMsNyBAQCBlcnJvcjoKIAkJdHJ4LT5lcnJvcl9zdGF0 ZSA9IERCX1NVQ0NFU1M7CiAKIAkJaWYgKG5ld19wcmltYXJ5KSB7Ci0JCQlpZiAoaW5kZXhlZF90 YWJsZSAhPSBpbm5vZGJfdGFibGUpIHsKKwkJCWlmIChpbmRleGVkX3RhYmxlICE9IHByZWJ1aWx0 LT50YWJsZSkgewogCQkJCXJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgaW5kZXhlZF90YWJsZSk7 CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC05MDYsMzggKzg3NSwxNTggQEAgZXJyb3I6CiAJCQlyb3df bWVyZ2VfZHJvcF9pbmRleGVzKHRyeCwgaW5kZXhlZF90YWJsZSwKIAkJCQkJICAgICAgIGluZGV4 LCBudW1fY3JlYXRlZCk7CiAJCX0KLQotY29udmVydF9lcnJvcjoKLQkJaWYgKGVycm9yID09IERC X1NVQ0NFU1MpIHsKLQkJCS8qIEJ1aWxkIGluZGV4IGlzIHN1Y2Nlc3NmdWwuIFdlIHdpbGwgbmVl ZCB0bwotCQkJcmVidWlsZCBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gIFJlc2V0IHRoZQotCQkJ aW5kZXggZW50cnkgY291bnQgaW4gdGhlIHRyYW5zbGF0aW9uIHRhYmxlCi0JCQl0byB6ZXJvLCBz byB0aGF0IHRyYW5zbGF0aW9uIHRhYmxlIHdpbGwgYmUgcmVidWlsdCAqLwotCQkJc2hhcmUtPmlk eF90cmFuc190YmwuaW5kZXhfY291bnQgPSAwOwotCQl9Ci0KLQkJZXJyb3IgPSBjb252ZXJ0X2Vy cm9yX2NvZGVfdG9fbXlzcWwoZXJyb3IsCi0JCQkJCQkgICAgaW5ub2RiX3RhYmxlLT5mbGFncywK LQkJCQkJCSAgICB1c2VyX3RoZCk7CiAJfQogCi0JbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl0cnhf Y29tbWl0X2Zvcl9teXNxbCh0cngpOwogCWlmIChwcmVidWlsdC0+dHJ4KSB7CiAJCXRyeF9jb21t aXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOwogCX0KIAogCWlmIChkaWN0X2xvY2tlZCkgewot CQl1dF9kKGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwgRkFM U0UpKTsKIAkJcm93X215c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKIAl9CiAKIAl0 cnhfZnJlZV9mb3JfbXlzcWwodHJ4KTsKKwltZW1faGVhcF9mcmVlKGhlYXApOworCisJLyogVGhl cmUgbWlnaHQgYmUgd29yayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCisJc3J2X2FjdGl2ZV93YWtl X21hc3Rlcl90aHJlYWQoKTsKKworCURCVUdfUkVUVVJOKGNvbnZlcnRfZXJyb3JfY29kZV90b19t eXNxbChlcnJvciwgcHJlYnVpbHQtPnRhYmxlLT5mbGFncywKKwkJCQkJCXVzZXJfdGhkKSk7Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgorRmluYWxpemUgb3IgdW5kbyBhZGRfaW5kZXgoKS4KK0ByZXR1 cm4JMCBvciBlcnJvciBudW1iZXIgKi8KK1VOSVZfSU5URVJOCitpbnQKK2hhX2lubm9iYXNlOjpm aW5hbF9hZGRfaW5kZXgoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWhhbmRsZXJf YWRkX2luZGV4KglhZGRfYXJnLC8qITwgaW46IGNvbnRleHQgZnJvbSBhZGRfaW5kZXgoKSAqLwor CWJvb2wJCQljb21taXQpCS8qITwgaW46IHRydWU9Y29tbWl0LCBmYWxzZT1yb2xsYmFjayAqLwor eworCWhhX2lubm9iYXNlX2FkZF9pbmRleCoJYWRkOworCXRyeF90KgkJCXRyeDsKKwlpbnQJCQll cnIJPSAwOworCisJREJVR19FTlRFUigiaGFfaW5ub2Jhc2U6OmZpbmFsX2FkZF9pbmRleCIpOwor CisJdXRfYWQoYWRkX2FyZyk7CisJYWRkID0gc3RhdGljX2Nhc3Q8Y2xhc3MgaGFfaW5ub2Jhc2Vf YWRkX2luZGV4Kj4oYWRkX2FyZyk7CisKKwkvKiBDcmVhdGUgYSBiYWNrZ3JvdW5kIHRyYW5zYWN0 aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgorCXRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGVzLiAq LworCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7CisJdHJ4X3N0YXJ0X2lm X25vdF9zdGFydGVkKHRyeCk7CisKKwkvKiBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgYSBkaWN0 aW9uYXJ5IG9wZXJhdGlvbiwgc28gdGhhdAorCXRoZSBkYXRhIGRpY3Rpb25hcnkgd2lsbCBiZSBs b2NrZWQgaW4gY3Jhc2ggcmVjb3ZlcnkuICovCisJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0cngs IFRSWF9ESUNUX09QX0lOREVYKTsKKworCS8qIExhdGNoIHRoZSBJbm5vREIgZGF0YSBkaWN0aW9u YXJ5IGV4Y2x1c2l2ZWx5IHNvIHRoYXQgbm8gZGVhZGxvY2tzCisJb3IgbG9jayB3YWl0cyBjYW4g aGFwcGVuIGluIGl0IGR1cmluZyBhbiBpbmRleCBjcmVhdGUgb3BlcmF0aW9uLiAqLworCXJvd19t eXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOworCisJaWYgKGFkZC0+aW5kZXhlZF90YWJs ZSAhPSBwcmVidWlsdC0+dGFibGUpIHsKKwkJdWxpbnQJZXJyb3I7CisKKwkJLyogV2UgY29waWVk IHRoZSB0YWJsZSAobmV3X3ByaW1hcnkpLiAqLworCQlpZiAoY29tbWl0KSB7CisJCQltZW1faGVh cF90KgloZWFwOworCQkJY2hhcioJCXRtcF9uYW1lOworCisJCQloZWFwID0gbWVtX2hlYXBfY3Jl YXRlKDEwMjQpOworCisJCQkvKiBBIG5ldyBwcmltYXJ5IGtleSB3YXMgZGVmaW5lZCBmb3IgdGhl IHRhYmxlCisJCQlhbmQgdGhlcmUgd2FzIG5vIGVycm9yIGF0IHRoaXMgcG9pbnQuIFdlIGNhbgor CQkJbm93IHJlbmFtZSB0aGUgb2xkIHRhYmxlIGFzIGEgdGVtcG9yYXJ5IHRhYmxlLAorCQkJcmVu YW1lIHRoZSBuZXcgdGVtcG9yYXJ5IHRhYmxlIGFzIHRoZSBvbGQKKwkJCXRhYmxlIGFuZCBkcm9w IHRoZSBvbGQgdGFibGUuICovCisJCQl0bXBfbmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1wb3Jh cnlfdGFibGVuYW1lKAorCQkJCWhlYXAsICcyJywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKKwor CQkJZXJyb3IgPSByb3dfbWVyZ2VfcmVuYW1lX3RhYmxlcygKKwkJCQlwcmVidWlsdC0+dGFibGUs IGFkZC0+aW5kZXhlZF90YWJsZSwKKwkJCQl0bXBfbmFtZSwgdHJ4KTsKKworCQkJc3dpdGNoIChl cnJvcikgeworCQkJY2FzZSBEQl9UQUJMRVNQQUNFX0FMUkVBRFlfRVhJU1RTOgorCQkJY2FzZSBE Ql9EVVBMSUNBVEVfS0VZOgorCQkJCWlubm9iYXNlX2NvbnZlcnRfdGFibGVuYW1lKHRtcF9uYW1l KTsKKwkJCQlteV9lcnJvcihIQV9FUlJfVEFCTEVfRVhJU1QsIE1ZRigwKSwgdG1wX25hbWUpOwor CQkJCWVyciA9IEhBX0VSUl9UQUJMRV9FWElTVDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ CQkJZXJyID0gY29udmVydF9lcnJvcl9jb2RlX3RvX215c3FsKAorCQkJCQllcnJvciwgcHJlYnVp bHQtPnRhYmxlLT5mbGFncywKKwkJCQkJdXNlcl90aGQpOworCQkJCWJyZWFrOworCQkJfQorCisJ CQltZW1faGVhcF9mcmVlKGhlYXApOworCQl9CisKKwkJaWYgKCFjb21taXQgfHwgZXJyKSB7CisJ CQllcnJvciA9IHJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgYWRkLT5pbmRleGVkX3RhYmxlKTsK KwkJCXRyeF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOworCQl9IGVsc2UgeworCQkJ ZGljdF90YWJsZV90KglvbGRfdGFibGUgPSBwcmVidWlsdC0+dGFibGU7CisJCQl0cnhfY29tbWl0 X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKKwkJCXJvd19wcmVidWlsdF9mcmVlKHByZWJ1aWx0 LCBUUlVFKTsKKwkJCWVycm9yID0gcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4LCBvbGRfdGFibGUp OworCQkJYWRkLT5pbmRleGVkX3RhYmxlLT5uX215c3FsX2hhbmRsZXNfb3BlbmVkKys7CisJCQlw cmVidWlsdCA9IHJvd19jcmVhdGVfcHJlYnVpbHQoYWRkLT5pbmRleGVkX3RhYmxlKTsKKwkJfQor CisJCWVyciA9IGNvbnZlcnRfZXJyb3JfY29kZV90b19teXNxbCgKKwkJCWVycm9yLCBwcmVidWls dC0+dGFibGUtPmZsYWdzLCB1c2VyX3RoZCk7CisJfSBlbHNlIHsKKwkJLyogV2UgY3JlYXRlZCBz ZWNvbmRhcnkgaW5kZXhlcyAoIW5ld19wcmltYXJ5KS4gKi8KKworCQlpZiAoY29tbWl0KSB7CisJ CQllcnIgPSBjb252ZXJ0X2Vycm9yX2NvZGVfdG9fbXlzcWwoCisJCQkJcm93X21lcmdlX3JlbmFt ZV9pbmRleGVzKHRyeCwgcHJlYnVpbHQtPnRhYmxlKSwKKwkJCQlwcmVidWlsdC0+dGFibGUtPmZs YWdzLCB1c2VyX3RoZCk7CisJCX0KKworCQlpZiAoIWNvbW1pdCB8fCBlcnIpIHsKKwkJCWRpY3Rf aW5kZXhfdCoJaW5kZXg7CisJCQlkaWN0X2luZGV4X3QqCW5leHRfaW5kZXg7CisKKwkJCWZvciAo aW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCgKKwkJCQkgICAgIHByZWJ1aWx0LT50 YWJsZSk7CisJCQkgICAgIGluZGV4OyBpbmRleCA9IG5leHRfaW5kZXgpIHsKKworCQkJCW5leHRf aW5kZXggPSBkaWN0X3RhYmxlX2dldF9uZXh0X2luZGV4KGluZGV4KTsKKworCQkJCWlmICgqaW5k ZXgtPm5hbWUgPT0gVEVNUF9JTkRFWF9QUkVGSVgpIHsKKwkJCQkJcm93X21lcmdlX2Ryb3BfaW5k ZXgoCisJCQkJCQlpbmRleCwgcHJlYnVpbHQtPnRhYmxlLCB0cngpOworCQkJCX0KKwkJCX0KKwkJ fQorCX0KKworCS8qIFdlIHdpbGwgbmVlZCB0byByZWJ1aWxkIGluZGV4IHRyYW5zbGF0aW9uIHRh YmxlLiBTZXQKKwl2YWxpZCBpbmRleCBlbnRyeSBjb3VudCBpbiB0aGUgdHJhbnNsYXRpb24gdGFi bGUgdG8gemVybyAqLworCXNoYXJlLT5pZHhfdHJhbnNfdGJsLmluZGV4X2NvdW50ID0gMDsKKwor CXRyeF9jb21taXRfZm9yX215c3FsKHRyeCk7CisJaWYgKHByZWJ1aWx0LT50cngpIHsKKwkJdHJ4 X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CisJfQorCisJdXRfZChkaWN0X3RhYmxl X2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsIEZBTFNFKSk7CisJcm93X215 c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKKworCXRyeF9mcmVlX2Zvcl9teXNxbCh0 cngpOwogCiAJLyogVGhlcmUgbWlnaHQgYmUgd29yayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCiAJ c3J2X2FjdGl2ZV93YWtlX21hc3Rlcl90aHJlYWQoKTsKIAotCURCVUdfUkVUVVJOKGVycm9yKTsK KwlkZWxldGUgYWRkOworCURCVUdfUkVUVVJOKGVycik7CiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK --===============2946950811346075088== 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: ae5199405ab9ed50d51e31a9288296955f945642 # timestamp: 2011-05-30 14:11:56 +0200 # base_revision_id: davi.arnaut@stripped\ # n487atg7z6mbvozy # # Begin bundle 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 --===============2946950811346075088==--