From: marko.makela Date: June 2 2010 11:37am Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3137) List-Archive: http://lists.mysql.com/commits/109953 Message-Id: <201006021137.o52BDxpX010380@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1520049489==" --===============1520049489== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzQ0MS05NmZu eTc0c201b3MybDJzCgogMzEzNyBNYXJrbyBNw6RrZWzDpAkyMDEwLTA2LTAyCiAgICAgIE1lcmdl IGZyb20gbXlzcWwtNS4xLWlubm9kYjoKICAgICAgCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICByZXZubzogMzQ5 NQogICAgICBjb21taXR0ZXI6IE1hcmtvIE3DpGtlbMOkIDxtYXJrby5tYWtlbGFAb3JhY2xlLmNv bT4KICAgICAgYnJhbmNoIG5pY2s6IDUuMS1pbm5vZGIKICAgICAgdGltZXN0YW1wOiBXZWQgMjAx MC0wNi0wMiAxMzozNzoxNCArMDMwMAogICAgICBtZXNzYWdlOgogICAgICAgIEJ1ZyM1MzY3NDog SW5ub0RCOiBFcnJvcjogdW5sb2NrIHJvdyBjb3VsZCBub3QgZmluZCBhIDQgbW9kZSBsb2NrIG9u IHRoZSByZWNvcmQKICAgICAgCiAgICAgICAgSW4gc2VtaS1jb25zaXN0ZW50IHJlYWQsIG9ubHkg dW5sb2NrIGZyZXNobHkgbG9ja2VkIG5vbi1tYXRjaGluZyByZWNvcmRzLgogICAgICAKICAgICAg ICBsb2NrX3JlY19sb2NrX2Zhc3QoKTogUmV0dXJuIExPQ0tfUkVDX1NVQ0NFU1MsCiAgICAgICAg TE9DS19SRUNfU1VDQ0VTU19DUkVBVEVELCBvciBMT0NLX1JFQ19GQUlMIGluc3RlYWQgb2YgVFJV RS9GQUxTRS4KICAgICAgCiAgICAgICAgZW51bSBkYl9lcnI6IEFkZCBEQl9TVUNDRVNTX0xPQ0tF RF9SRUMgZm9yIGluZGljYXRpbmcgYSBzdWNjZXNzZnVsCiAgICAgICAgb3BlcmF0aW9uIHdoZXJl IGEgcmVjb3JkIGxvY2sgd2FzIGNyZWF0ZWQuCiAgICAgIAogICAgICAgIGxvY2tfc2VjX3JlY19y ZWFkX2NoZWNrX2FuZF9sb2NrKCksCiAgICAgICAgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19h bmRfbG9jaygpLCBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoKSwKICAgICAgICBsb2NrX3JlY19s b2NrX3Nsb3coKSwgbG9ja19yZWNfbG9jaygpLCByb3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2so KSwKICAgICAgICByb3dfaW5zX3NldF9leGNsdXNpdmVfcmVjX2xvY2soKSwgc2VsX3NldF9yZWNf bG9jaygpLAogICAgICAgIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoKTogUmV0dXJu IERCX1NVQ0NFU1NfTE9DS0VEX1JFQyBpZiBhCiAgICAgICAgbmV3IHJlY29yZCBsb2NrIHdhcyBj cmVhdGVkLiBBZGp1c3QgY2FsbGVycy4KICAgICAgCiAgICAgICAgcm93X3VubG9ja19mb3JfbXlz cWwoKTogQ29ycmVjdCB0aGUgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4KICAgICAgCiAgICAgICAg cm93X3ByZWJ1aWx0X3Q6Om5ld19yZWNfbG9ja3M6IENvcnJlY3QgdGhlIGRvY3VtZW50YXRpb24u CgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzUz Njc0LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3 NC1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUz Njc0LnRlc3QKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGIw ZXJyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvY2swbG9jay5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2xvY2svbG9jazBsb2NrLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBzZWwuYwo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIv ci9pbm5vZGJfYnVnNTM2NzQucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9y L2lubm9kYl9idWc1MzY3NC5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9t eXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3M25oaTBkMTd0NApAQCAt MCwwICsxLDExIEBACitjcmVhdGUgdGFibGUgYnVnNTM2NzQoYSBpbnQpZW5naW5lPWlubm9kYjsK K2luc2VydCBpbnRvIGJ1ZzUzNjc0IHZhbHVlcyAoMSksKDIpOworc3RhcnQgdHJhbnNhY3Rpb247 CitzZWxlY3QgKiBmcm9tIGJ1ZzUzNjc0IGZvciB1cGRhdGU7CithCisxCisyCitzZWxlY3QgKiBm cm9tIGJ1ZzUzNjc0IHdoZXJlIGE9KHNlbGVjdCBhIGZyb20gYnVnNTM2NzQgd2hlcmUgYSA+IDEp OworYQorMgorZHJvcCB0YWJsZSBidWc1MzY3NDsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0 L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0JwotLS0gYS9teXNxbC10 ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0ZXIub3B0CTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVn NTM2NzQtbWFzdGVyLm9wdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEx MzczMy1mc2xmdjczbmhpMGQxN3Q0CkBAIC0wLDAgKzEgQEAKKy0tbG9nLWJpbiAtLWlubm9kYi1s b2Nrcy11bnNhZmUtZm9yLWJpbmxvZyAtLWJpbmxvZy1mb3JtYXQ9bWl4ZWQKCj09PSBhZGRlZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50ZXN0JwotLS0g YS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50ZXN0CTE5NzAtMDEt MDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJf YnVnNTM2NzQudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzcz My1mc2xmdjczbmhpMGQxN3Q0CkBAIC0wLDAgKzEsOCBAQAorLS0gc291cmNlIGluY2x1ZGUvaGF2 ZV9pbm5vZGIuaW5jCisKK2NyZWF0ZSB0YWJsZSBidWc1MzY3NChhIGludCllbmdpbmU9aW5ub2Ri OworaW5zZXJ0IGludG8gYnVnNTM2NzQgdmFsdWVzICgxKSwoMik7CitzdGFydCB0cmFuc2FjdGlv bjsKK3NlbGVjdCAqIGZyb20gYnVnNTM2NzQgZm9yIHVwZGF0ZTsKK3NlbGVjdCAqIGZyb20gYnVn NTM2NzQgd2hlcmUgYT0oc2VsZWN0IGEgZnJvbSBidWc1MzY3NCB3aGVyZSBhID4gMSk7Citkcm9w IHRhYmxlIGJ1ZzUzNjc0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9kYjBlcnIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNDQxLTk2Zm55NzRzbTVvczJs MnMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQKQEAgLTI4LDYg KzI4LDggQEAgQ3JlYXRlZCA1LzI0LzE5OTYgSGVpa2tpIFR1dXJpCiAKIAogZW51bSBkYl9lcnIg eworCURCX1NVQ0NFU1NfTE9DS0VEX1JFQyA9IDksCS8qITwgbGlrZSBEQl9TVUNDRVNTLCBidXQg YSBuZXcKKwkJCQkJZXhwbGljaXQgcmVjb3JkIGxvY2sgd2FzIGNyZWF0ZWQgKi8KIAlEQl9TVUND RVNTID0gMTAsCiAKIAkvKiBUaGUgZm9sbG93aW5nIGFyZSBlcnJvciBjb2RlcyAqLwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2NrMGxvY2suaCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvY2swbG9jay5oCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTAwNjAyMTEzNDQxLTk2Zm55NzRzbTVvczJsMnMKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2xvY2swbG9jay5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQKQEAgLTM0MCwxMSArMzQwLDEyIEBAIGxv Y2tfc2VjX3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2soCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwg aW46IHF1ZXJ5IHRocmVhZCAqLwogCW10cl90KgkJbXRyKTsJLyohPCBpbi9vdXQ6IG1pbmktdHJh bnNhY3Rpb24gKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1MaWtlIHRoZSBjb3VudGVycGFydCBmb3Ig YSBjbHVzdGVyZWQgaW5kZXggYmVsb3csIGJ1dCBub3cgd2UgcmVhZCBhCitMaWtlIGxvY2tfY2x1 c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soKSwgYnV0IHJlYWRzIGEKIHNlY29uZGFyeSBpbmRl eCByZWNvcmQuCi1AcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ss IG9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NF U1NfTE9DS0VEX1JFQywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9USFJf U1VTUEVOREVEICovCiBVTklWX0lOVEVSTgotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX3NlY19y ZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwogCXVsaW50CQkJZmxhZ3MsCS8qITwgaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcKQEAgLTM3 MSw5ICszNzIsMTAgQEAgaWYgdGhlIHF1ZXJ5IHRocmVhZCBzaG91bGQgYW55d2F5IGJlIHN1cwog cHV0cyB0aGUgdHJhbnNhY3Rpb24gYW5kIHRoZSBxdWVyeSB0aHJlYWQgdG8gdGhlIGxvY2sgd2Fp dCBzdGF0ZSBhbmQgaW5zZXJ0cyBhCiB3YWl0aW5nIHJlcXVlc3QgZm9yIGEgcmVjb3JkIGxvY2sg dG8gdGhlIGxvY2sgcXVldWUuIFNldHMgdGhlIHJlcXVlc3RlZCBtb2RlCiBsb2NrIG9uIHRoZSBy ZWNvcmQuCi1AcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssIG9y IERCX1FVRV9USFJfU1VTUEVOREVEICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1Nf TE9DS0VEX1JFQywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9USFJfU1VT UEVOREVEICovCiBVTklWX0lOVEVSTgotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX2NsdXN0X3Jl Y19yZWFkX2NoZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAl1bGludAkJCWZsYWdzLAkvKiE8IGluOiBpZiBCVFJfTk9fTE9DS0lOR19GTEFHCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDIxMTM0NDEtOTZmbnk3NHNtNW9zMmwycworKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3M25oaTBkMTd0NApAQCAtMjY0LDI3ICsyNjQsMjYgQEAg cm93X3VwZGF0ZV9mb3JfbXlzcWwoCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0KTsJLyohPCBp bjogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCiAJCQkJCWhhbmRsZSAqLwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLVRoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191bnNhZmVfZm9yX2Jp bmxvZyBpcyBUUlVFIG9yCi1zZXNzaW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRURUQgaXNvbGF0 aW9uIGxldmVsLiBCZWZvcmUKLWNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3ZSBtdXN0IHVzZSB0cnhf cmVzZXRfbmV3X3JlY19sb2NrX2luZm8oKSBhbmQKLXRyeF9yZWdpc3Rlcl9uZXdfcmVjX2xvY2so KSB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3IHJlY29yZCBsb2NrcwotcmVhbGx5 IHdlcmUgc2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQgbG9jayB1bmRlciBw cmVidWlsdC0+cGN1ciwKLWFuZCBhbHNvIHVuZGVyIHByZWJ1aWx0LT5jbHVzdF9wY3VyLiBDdXJy ZW50bHksIHRoaXMgaXMgb25seSB1c2VkIGFuZCB0ZXN0ZWQKLWluIHRoZSBjYXNlIG9mIGFuIFVQ REFURSBvciBhIERFTEVURSBzdGF0ZW1lbnQsIHdoZXJlIHRoZSByb3cgbG9jayBpcyBvZiB0aGUK LUxPQ0tfWCB0eXBlLgotVGh1cywgdGhpcyBpbXBsZW1lbnRzIGEgJ21pbmktcm9sbGJhY2snIHRo YXQgcmVsZWFzZXMgdGhlIGxhdGVzdCByZWNvcmQKLWxvY2tzIHdlIHNldC4KLUByZXR1cm4JZXJy b3IgY29kZSBvciBEQl9TVUNDRVNTICovCitUaGlzIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcnZf bG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMgVFJVRSBvciB0aGlzCitzZXNzaW9uIGlzIHVzaW5n IGEgUkVBRCBDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuCitC ZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJvd19zZWFyY2hfZm9yX215c3FsKCkgbXVzdCBo YXZlCitpbml0aWFsaXplZCBwcmVidWlsdC0+bmV3X3JlY19sb2NrcyB0byBzdG9yZSB0aGUgaW5m b3JtYXRpb24gd2hpY2ggbmV3CityZWNvcmQgbG9ja3MgcmVhbGx5IHdlcmUgc2V0LiBUaGlzIGZ1 bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQKK2NsdXN0ZXJlZCBpbmRleCByZWNvcmQgbG9jayB1 bmRlciBwcmVidWlsdC0+cGN1ciBvcgorcHJlYnVpbHQtPmNsdXN0X3BjdXIuICBUaHVzLCB0aGlz IGltcGxlbWVudHMgYSAnbWluaS1yb2xsYmFjaycgdGhhdAorcmVsZWFzZXMgdGhlIGxhdGVzdCBj bHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgd2Ugc2V0LgorQHJldHVybiBlcnJvciBjb2RlIG9y IERCX1NVQ0NFU1MgKi8KIFVOSVZfSU5URVJOCiBpbnQKIHJvd191bmxvY2tfZm9yX215c3FsKAog Lyo9PT09PT09PT09PT09PT09PSovCi0Jcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiE8IGlu OiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlTUUwKKwlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsCS8q ITwgaW4vb3V0OiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlTUUwKIAkJCQkJaGFuZGxlICovCi0JaWJv b2wJCWhhc19sYXRjaGVzX29uX3JlY3MpOy8qITwgVFJVRSBpZiBjYWxsZWQgc28gdGhhdCB3ZSBo YXZlCi0JCQkJCXRoZSBsYXRjaGVzIG9uIHRoZSByZWNvcmRzIHVuZGVyIHBjdXIKLQkJCQkJYW5k IGNsdXN0X3BjdXIsIGFuZCB3ZSBkbyBub3QgbmVlZCB0bwotCQkJCQlyZXBvc2l0aW9uIHRoZSBj dXJzb3JzLiAqLworCWlib29sCQloYXNfbGF0Y2hlc19vbl9yZWNzKTsvKiE8IGluOiBUUlVFIGlm IGNhbGxlZAorCQkJCQlzbyB0aGF0IHdlIGhhdmUgdGhlIGxhdGNoZXMgb24KKwkJCQkJdGhlIHJl Y29yZHMgdW5kZXIgcGN1ciBhbmQKKwkJCQkJY2x1c3RfcGN1ciwgYW5kIHdlIGRvIG5vdCBuZWVk CisJCQkJCXRvIHJlcG9zaXRpb24gdGhlIGN1cnNvcnMuICovCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog Q3JlYXRlcyBhbiBxdWVyeSBncmFwaCBub2RlIG9mICd1cGRhdGUnIHR5cGUgdG8gYmUgdXNlZCBp biB0aGUgTXlTUUwKIGludGVyZmFjZS4KQEAgLTcwMiwxOCArNzAxLDE3IEBAIHN0cnVjdCByb3df cHJlYnVpbHRfc3RydWN0IHsKIAl1bGludAkJbmV3X3JlY19sb2NrczsJLyohPCBub3JtYWxseSAw OyBpZgogCQkJCQlzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMKIAkJCQkJVFJVRSBvciBz ZXNzaW9uIGlzIHVzaW5nIFJFQUQKLQkJCQkJQ09NTUlUVEVEIGlzb2xhdGlvbiBsZXZlbCwgaW4g YQotCQkJCQljdXJzb3Igc2VhcmNoLCBpZiB3ZSBzZXQgYSBuZXcKLQkJCQkJcmVjb3JkIGxvY2sg b24gYW4gaW5kZXgsIHRoaXMgaXMKLQkJCQkJaW5jcmVtZW50ZWQ7IHRoaXMgaXMgdXNlZCBpbgot CQkJCQlyZWxlYXNpbmcgdGhlIGxvY2tzIHVuZGVyIHRoZQotCQkJCQljdXJzb3JzIGlmIHdlIGFy ZSBwZXJmb3JtaW5nIGFuCi0JCQkJCVVQREFURSBhbmQgd2UgZGV0ZXJtaW5lIGFmdGVyCi0JCQkJ CXJldHJpZXZpbmcgdGhlIHJvdyB0aGF0IGl0IGRvZXMKLQkJCQkJbm90IG5lZWQgdG8gYmUgbG9j a2VkOyB0aHVzLAotCQkJCQl0aGVzZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgYQotCQkJCQkn bWluaS1yb2xsYmFjaycgdGhhdCByZWxlYXNlcwotCQkJCQl0aGUgbGF0ZXN0IHJlY29yZCBsb2Nr cyAqLworCQkJCQlDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRFRAorCQkJCQlpc29sYXRpb24g bGV2ZWwsIHNldCBpbgorCQkJCQlyb3dfc2VhcmNoX2Zvcl9teXNxbCgpIGlmIHdlIHNldCBhIG5l dworCQkJCQlyZWNvcmQgbG9jayBvbiB0aGUgc2Vjb25kYXJ5CisJCQkJCW9yIGNsdXN0ZXJlZCBp bmRleDsgdGhpcyBpcworCQkJCQl1c2VkIGluIHJvd191bmxvY2tfZm9yX215c3FsKCkKKwkJCQkJ d2hlbiByZWxlYXNpbmcgdGhlIGxvY2sgdW5kZXIKKwkJCQkJdGhlIGN1cnNvciBpZiB3ZSBkZXRl cm1pbmUKKwkJCQkJYWZ0ZXIgcmV0cmlldmluZyB0aGUgcm93IHRoYXQKKwkJCQkJaXQgZG9lcyBu b3QgbmVlZCB0byBiZSBsb2NrZWQKKwkJCQkJKCdtaW5pLXJvbGxiYWNrJykgKi8KIAl1bGludAkJ bXlzcWxfcHJlZml4X2xlbjsvKiE8IGJ5dGUgb2Zmc2V0IG9mIHRoZSBlbmQgb2YKIAkJCQkJdGhl IGxhc3QgcmVxdWVzdGVkIGNvbHVtbiAqLwogCXVsaW50CQlteXNxbF9yb3dfbGVuOwkvKiE8IGxl bmd0aCBpbiBieXRlcyBvZiBhIHJvdyBpbiB0aGUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9s b2NrMGxvY2suYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzQ0MS05 NmZueTc0c201b3MybDJzCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzczMy1mc2xmdjczbmhpMGQx N3Q0CkBAIC0xNzMzLDExICsxNzMzLDExIEBAIGxvY2tfcmVjX2NyZWF0ZSgKIEVucXVldWVzIGEg d2FpdGluZyByZXF1ZXN0IGZvciBhIGxvY2sgd2hpY2ggY2Fubm90IGJlIGdyYW50ZWQgaW1tZWRp YXRlbHkuCiBDaGVja3MgZm9yIGRlYWRsb2Nrcy4KIEByZXR1cm4gREJfTE9DS19XQUlULCBEQl9E RUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQsIG9yCi1EQl9TVUNDRVNTOyBEQl9TVUND RVNTIG1lYW5zIHRoYXQgdGhlcmUgd2FzIGEgZGVhZGxvY2ssIGJ1dCBhbm90aGVyCi10cmFuc2Fj dGlvbiB3YXMgY2hvc2VuIGFzIGEgdmljdGltLCBhbmQgd2UgZ290IHRoZSBsb2NrIGltbWVkaWF0 ZWx5Ogotbm8gbmVlZCB0byB3YWl0IHRoZW4gKi8KK0RCX1NVQ0NFU1NfTE9DS0VEX1JFQzsgREJf U1VDQ0VTU19MT0NLRURfUkVDIG1lYW5zIHRoYXQKK3RoZXJlIHdhcyBhIGRlYWRsb2NrLCBidXQg YW5vdGhlciB0cmFuc2FjdGlvbiB3YXMgY2hvc2VuIGFzIGEgdmljdGltLAorYW5kIHdlIGdvdCB0 aGUgbG9jayBpbW1lZGlhdGVseTogbm8gbmVlZCB0byB3YWl0IHRoZW4gKi8KIHN0YXRpYwotdWxp bnQKK2VudW0gZGJfZXJyCiBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAvKj09PT09PT09PT09 PT09PT09PT09PSovCiAJdWxpbnQJCQl0eXBlX21vZGUsLyohPCBpbjogbG9jayBtb2RlIHRoaXMK QEAgLTE4MDksNyArMTgwOSw3IEBAIGxvY2tfcmVjX2VucXVldWVfd2FpdGluZygKIAogCWlmICh0 cngtPndhaXRfbG9jayA9PSBOVUxMKSB7CiAKLQkJcmV0dXJuKERCX1NVQ0NFU1MpOworCQlyZXR1 cm4oREJfU1VDQ0VTU19MT0NLRURfUkVDKTsKIAl9CiAKIAl0cngtPnF1ZV9zdGF0ZSA9IFRSWF9R VUVfTE9DS19XQUlUOwpAQCAtMTkyNSw2ICsxOTI1LDE2IEBAIHNvbWVib2R5X3dhaXRzOgogCXJl dHVybihsb2NrX3JlY19jcmVhdGUodHlwZV9tb2RlLCBibG9jaywgaGVhcF9ubywgaW5kZXgsIHRy eCkpOwogfQogCisvKiogUmVjb3JkIGxvY2tpbmcgcmVxdWVzdCBzdGF0dXMgKi8KK2VudW0gbG9j a19yZWNfcmVxX3N0YXR1cyB7CisJLyoqIEZhaWxlZCB0byBhY3F1aXJlIGEgbG9jayAqLworCUxP Q0tfUkVDX0ZBSUwsCisJLyoqIFN1Y2NlZWRlZCBpbiBhY3F1aXJpbmcgYSBsb2NrIChpbXBsaWNp dCBvciBhbHJlYWR5IGFjcXVpcmVkKSAqLworCUxPQ0tfUkVDX1NVQ0NFU1MsCisJLyoqIEV4cGxp Y2l0bHkgY3JlYXRlZCBhIG5ldyBsb2NrICovCisJTE9DS19SRUNfU1VDQ0VTU19DUkVBVEVECit9 OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogVGhpcyBpcyBhIGZhc3Qgcm91dGluZSBmb3IgbG9ja2lu ZyBhIHJlY29yZCBpbiB0aGUgbW9zdCBjb21tb24gY2FzZXM6CiB0aGVyZSBhcmUgbm8gZXhwbGlj aXQgbG9ja3Mgb24gdGhlIHBhZ2UsIG9yIHRoZXJlIGlzIGp1c3Qgb25lIGxvY2ssIG93bmVkCkBA IC0xOTMyLDkgKzE5NDIsOSBAQCBieSB0aGlzIHRyYW5zYWN0aW9uLCBhbmQgb2YgdGhlIHJpZ2h0 IHR5CiB3aGljaCBkb2VzIE5PVCBsb29rIGF0IGltcGxpY2l0IGxvY2tzISBDaGVja3MgbG9jayBj b21wYXRpYmlsaXR5IHdpdGhpbgogZXhwbGljaXQgbG9ja3MuIFRoaXMgZnVuY3Rpb24gc2V0cyBh IG5vcm1hbCBuZXh0LWtleSBsb2NrLCBvciBpbiB0aGUgY2FzZSBvZgogYSBwYWdlIHN1cHJlbXVt IHJlY29yZCwgYSBnYXAgdHlwZSBsb2NrLgotQHJldHVybglUUlVFIGlmIGxvY2tpbmcgc3VjY2Vl ZGVkICovCitAcmV0dXJuIHdoZXRoZXIgdGhlIGxvY2tpbmcgc3VjY2VlZGVkICovCiBVTklWX0lO TElORQotaWJvb2wKK2VudW0gbG9ja19yZWNfcmVxX3N0YXR1cwogbG9ja19yZWNfbG9ja19mYXN0 KAogLyo9PT09PT09PT09PT09PT0qLwogCWlib29sCQkJaW1wbCwJLyohPCBpbjogaWYgVFJVRSwg bm8gbG9jayBpcyBzZXQKQEAgLTE5NzMsMTkgKzE5ODMsMTkgQEAgbG9ja19yZWNfbG9ja19mYXN0 KAogCQkJbG9ja19yZWNfY3JlYXRlKG1vZGUsIGJsb2NrLCBoZWFwX25vLCBpbmRleCwgdHJ4KTsK IAkJfQogCi0JCXJldHVybihUUlVFKTsKKwkJcmV0dXJuKExPQ0tfUkVDX1NVQ0NFU1NfQ1JFQVRF RCk7CiAJfQogCiAJaWYgKGxvY2tfcmVjX2dldF9uZXh0X29uX3BhZ2UobG9jaykpIHsKIAotCQly ZXR1cm4oRkFMU0UpOworCQlyZXR1cm4oTE9DS19SRUNfRkFJTCk7CiAJfQogCiAJaWYgKGxvY2st PnRyeCAhPSB0cngKIAkgICAgfHwgbG9jay0+dHlwZV9tb2RlICE9IChtb2RlIHwgTE9DS19SRUMp CiAJICAgIHx8IGxvY2tfcmVjX2dldF9uX2JpdHMobG9jaykgPD0gaGVhcF9ubykgewogCi0JCXJl dHVybihGQUxTRSk7CisJCXJldHVybihMT0NLX1JFQ19GQUlMKTsKIAl9CiAKIAlpZiAoIWltcGwp IHsKQEAgLTE5OTQsMTAgKzIwMDQsMTEgQEAgbG9ja19yZWNfbG9ja19mYXN0KAogCiAJCWlmICgh bG9ja19yZWNfZ2V0X250aF9iaXQobG9jaywgaGVhcF9ubykpIHsKIAkJCWxvY2tfcmVjX3NldF9u dGhfYml0KGxvY2ssIGhlYXBfbm8pOworCQkJcmV0dXJuKExPQ0tfUkVDX1NVQ0NFU1NfQ1JFQVRF RCk7CiAJCX0KIAl9CiAKLQlyZXR1cm4oVFJVRSk7CisJcmV0dXJuKExPQ0tfUkVDX1NVQ0NFU1Mp OwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjAwNSw5ICsyMDE2LDEwIEBAIFRoaXMgaXMg dGhlIGdlbmVyYWwsIGFuZCBzbG93ZXIsIHJvdXRpbmUKIGxvdy1sZXZlbCBmdW5jdGlvbiB3aGlj aCBkb2VzIE5PVCBsb29rIGF0IGltcGxpY2l0IGxvY2tzISBDaGVja3MgbG9jawogY29tcGF0aWJp bGl0eSB3aXRoaW4gZXhwbGljaXQgbG9ja3MuIFRoaXMgZnVuY3Rpb24gc2V0cyBhIG5vcm1hbCBu ZXh0LWtleQogbG9jaywgb3IgaW4gdGhlIGNhc2Ugb2YgYSBwYWdlIHN1cHJlbXVtIHJlY29yZCwg YSBnYXAgdHlwZSBsb2NrLgotQHJldHVybglEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIG9yIGVy cm9yIGNvZGUgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBE Ql9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIHN0 YXRpYwotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX3JlY19sb2NrX3Nsb3coCiAvKj09PT09PT09 PT09PT09PSovCiAJaWJvb2wJCQlpbXBsLAkvKiE8IGluOiBpZiBUUlVFLCBubyBsb2NrIGlzIHNl dApAQCAtMjAyNCw3ICsyMDM2LDYgQEAgbG9ja19yZWNfbG9ja19zbG93KAogCXF1ZV90aHJfdCoJ CXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiB7CiAJdHJ4X3QqCXRyeDsKLQl1bGludAll cnI7CiAKIAl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRleCkpOwogCXV0X2FkKChMT0NLX01P REVfTUFTSyAmIG1vZGUpICE9IExPQ0tfUwpAQCAtMjA0MywyNyArMjA1NCwyMyBAQCBsb2NrX3Jl Y19sb2NrX3Nsb3coCiAJCS8qIFRoZSB0cnggYWxyZWFkeSBoYXMgYSBzdHJvbmcgZW5vdWdoIGxv Y2sgb24gcmVjOiBkbwogCQlub3RoaW5nICovCiAKLQkJZXJyID0gREJfU1VDQ0VTUzsKIAl9IGVs c2UgaWYgKGxvY2tfcmVjX290aGVyX2hhc19jb25mbGljdGluZyhtb2RlLCBibG9jaywgaGVhcF9u bywgdHJ4KSkgewogCiAJCS8qIElmIGFub3RoZXIgdHJhbnNhY3Rpb24gaGFzIGEgbm9uLWdhcCBj b25mbGljdGluZyByZXF1ZXN0IGluCiAJCXRoZSBxdWV1ZSwgYXMgdGhpcyB0cmFuc2FjdGlvbiBk b2VzIG5vdCBoYXZlIGEgbG9jayBzdHJvbmcKIAkJZW5vdWdoIGFscmVhZHkgZ3JhbnRlZCBvbiB0 aGUgcmVjb3JkLCB3ZSBoYXZlIHRvIHdhaXQuICovCiAKLQkJZXJyID0gbG9ja19yZWNfZW5xdWV1 ZV93YWl0aW5nKG1vZGUsIGJsb2NrLCBoZWFwX25vLAotCQkJCQkgICAgICAgaW5kZXgsIHRocik7 Ci0JfSBlbHNlIHsKLQkJaWYgKCFpbXBsKSB7Ci0JCQkvKiBTZXQgdGhlIHJlcXVlc3RlZCBsb2Nr IG9uIHRoZSByZWNvcmQgKi8KLQotCQkJbG9ja19yZWNfYWRkX3RvX3F1ZXVlKExPQ0tfUkVDIHwg bW9kZSwgYmxvY2ssCi0JCQkJCSAgICAgIGhlYXBfbm8sIGluZGV4LCB0cngpOwotCQl9Ci0KLQkJ ZXJyID0gREJfU1VDQ0VTUzsKKwkJcmV0dXJuKGxvY2tfcmVjX2VucXVldWVfd2FpdGluZyhtb2Rl LCBibG9jaywgaGVhcF9ubywKKwkJCQkJCWluZGV4LCB0aHIpKTsKKwl9IGVsc2UgaWYgKCFpbXBs KSB7CisJCS8qIFNldCB0aGUgcmVxdWVzdGVkIGxvY2sgb24gdGhlIHJlY29yZCAqLworCisJCWxv Y2tfcmVjX2FkZF90b19xdWV1ZShMT0NLX1JFQyB8IG1vZGUsIGJsb2NrLAorCQkJCSAgICAgIGhl YXBfbm8sIGluZGV4LCB0cngpOworCQlyZXR1cm4oREJfU1VDQ0VTU19MT0NLRURfUkVDKTsKIAl9 CiAKLQlyZXR1cm4oZXJyKTsKKwlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCkBAIC0yMDcyLDkgKzIwNzksMTAgQEAgcG9zc2libGUsIGVucXVldWVzIGEgd2FpdGlu ZyBsb2NrIHJlcXVlcwogd2hpY2ggZG9lcyBOT1QgbG9vayBhdCBpbXBsaWNpdCBsb2NrcyEgQ2hl Y2tzIGxvY2sgY29tcGF0aWJpbGl0eSB3aXRoaW4KIGV4cGxpY2l0IGxvY2tzLiBUaGlzIGZ1bmN0 aW9uIHNldHMgYSBub3JtYWwgbmV4dC1rZXkgbG9jaywgb3IgaW4gdGhlIGNhc2UKIG9mIGEgcGFn ZSBzdXByZW11bSByZWNvcmQsIGEgZ2FwIHR5cGUgbG9jay4KLUByZXR1cm4JREJfU1VDQ0VTUywg REJfTE9DS19XQUlULCBvciBlcnJvciBjb2RlICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NV Q0NFU1NfTE9DS0VEX1JFQywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9U SFJfU1VTUEVOREVEICovCiBzdGF0aWMKLXVsaW50CitlbnVtIGRiX2VycgogbG9ja19yZWNfbG9j aygKIC8qPT09PT09PT09PSovCiAJaWJvb2wJCQlpbXBsLAkvKiE8IGluOiBpZiBUUlVFLCBubyBs b2NrIGlzIHNldApAQCAtMjA5MCw4ICsyMDk4LDYgQEAgbG9ja19yZWNfbG9jaygKIAlkaWN0X2lu ZGV4X3QqCQlpbmRleCwJLyohPCBpbjogaW5kZXggb2YgcmVjb3JkICovCiAJcXVlX3Rocl90KgkJ dGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQl1bGludAllcnI7Ci0KIAl1dF9hZCht dXRleF9vd24oJmtlcm5lbF9tdXRleCkpOwogCXV0X2FkKChMT0NLX01PREVfTUFTSyAmIG1vZGUp ICE9IExPQ0tfUwogCSAgICAgIHx8IGxvY2tfdGFibGVfaGFzKHRocl9nZXRfdHJ4KHRociksIGlu ZGV4LT50YWJsZSwgTE9DS19JUykpOwpAQCAtMjEwMywxOCArMjEwOSwyMCBAQCBsb2NrX3JlY19s b2NrKAogCSAgICAgIHx8IG1vZGUgLSAoTE9DS19NT0RFX01BU0sgJiBtb2RlKSA9PSBMT0NLX1JF Q19OT1RfR0FQCiAJICAgICAgfHwgbW9kZSAtIChMT0NLX01PREVfTUFTSyAmIG1vZGUpID09IDAp OwogCi0JaWYgKGxvY2tfcmVjX2xvY2tfZmFzdChpbXBsLCBtb2RlLCBibG9jaywgaGVhcF9ubywg aW5kZXgsIHRocikpIHsKLQotCQkvKiBXZSB0cnkgYSBzaW1wbGlmaWVkIGFuZCBmYXN0ZXIgc3Vi cm91dGluZSBmb3IgdGhlIG1vc3QKLQkJY29tbW9uIGNhc2VzICovCi0KLQkJZXJyID0gREJfU1VD Q0VTUzsKLQl9IGVsc2UgewotCQllcnIgPSBsb2NrX3JlY19sb2NrX3Nsb3coaW1wbCwgbW9kZSwg YmxvY2ssCi0JCQkJCSBoZWFwX25vLCBpbmRleCwgdGhyKTsKKwkvKiBXZSB0cnkgYSBzaW1wbGlm aWVkIGFuZCBmYXN0ZXIgc3Vicm91dGluZSBmb3IgdGhlIG1vc3QKKwljb21tb24gY2FzZXMgKi8K Kwlzd2l0Y2ggKGxvY2tfcmVjX2xvY2tfZmFzdChpbXBsLCBtb2RlLCBibG9jaywgaGVhcF9ubywg aW5kZXgsIHRocikpIHsKKwljYXNlIExPQ0tfUkVDX1NVQ0NFU1M6CisJCXJldHVybihEQl9TVUND RVNTKTsKKwljYXNlIExPQ0tfUkVDX1NVQ0NFU1NfQ1JFQVRFRDoKKwkJcmV0dXJuKERCX1NVQ0NF U1NfTE9DS0VEX1JFQyk7CisJY2FzZSBMT0NLX1JFQ19GQUlMOgorCQlyZXR1cm4obG9ja19yZWNf bG9ja19zbG93KGltcGwsIG1vZGUsIGJsb2NrLAorCQkJCQkgIGhlYXBfbm8sIGluZGV4LCB0aHIp KTsKIAl9CiAKLQlyZXR1cm4oZXJyKTsKKwl1dF9lcnJvcjsKKwlyZXR1cm4oREJfRVJST1IpOwog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNTA3Miw3ICs1MDgwLDE0IEBAIGxvY2tfcmVjX2lu c2VydF9jaGVja19hbmRfbG9jaygKIAogCWxvY2tfbXV0ZXhfZXhpdF9rZXJuZWwoKTsKIAotCWlm ICgoZXJyID09IERCX1NVQ0NFU1MpICYmICFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgewor CXN3aXRjaCAoZXJyKSB7CisJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCWVyciA9IERC X1NVQ0NFU1M7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgREJfU1VDQ0VTUzoKKwkJaWYg KGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7CisJCQlicmVhazsKKwkJfQogCQkvKiBVcGRh dGUgdGhlIHBhZ2UgbWF4IHRyeCBpZCBmaWVsZCAqLwogCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lk KGJsb2NrLAogCQkJCSAgICAgICBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKGJsb2NrKSwKQEAgLTUx OTUsNiArNTIxMCwxMCBAQCBsb2NrX2NsdXN0X3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2soCiAK IAl1dF9hZChsb2NrX3JlY19xdWV1ZV92YWxpZGF0ZShibG9jaywgcmVjLCBpbmRleCwgb2Zmc2V0 cykpOwogCisJaWYgKFVOSVZfVU5MSUtFTFkoZXJyID09IERCX1NVQ0NFU1NfTE9DS0VEX1JFQykp IHsKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwl9CisKIAlyZXR1cm4oZXJyKTsKIH0KIApAQCAtNTI2 MSwyMiArNTI4MCwyNyBAQCBsb2NrX3NlY19yZWNfbW9kaWZ5X2NoZWNrX2FuZF9sb2NrKAogCX0K ICNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKLQlpZiAoZXJyID09IERCX1NVQ0NFU1MpIHsKKwlp ZiAoZXJyID09IERCX1NVQ0NFU1MgfHwgZXJyID09IERCX1NVQ0NFU1NfTE9DS0VEX1JFQykgewog CQkvKiBVcGRhdGUgdGhlIHBhZ2UgbWF4IHRyeCBpZCBmaWVsZCAqLworCQkvKiBJdCBtaWdodCBu b3QgYmUgbmVjZXNzYXJ5IHRvIGRvIHRoaXMgaWYKKwkJZXJyID09IERCX1NVQ0NFU1MgKG5vIG5l dyBsb2NrIGNyZWF0ZWQpLAorCQlidXQgaXQgc2hvdWxkIG5vdCBjb3N0IHRvbyBtdWNoIHBlcmZv cm1hbmNlLiAqLwogCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJsb2NrLAogCQkJCSAgICAgICBi dWZfYmxvY2tfZ2V0X3BhZ2VfemlwKGJsb2NrKSwKIAkJCQkgICAgICAgdGhyX2dldF90cngodGhy KS0+aWQsIG10cik7CisJCWVyciA9IERCX1NVQ0NFU1M7CiAJfQogCiAJcmV0dXJuKGVycik7CiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCi1MaWtlIHRoZSBjb3VudGVycGFydCBmb3IgYSBjbHVzdGVy ZWQgaW5kZXggYmVsb3csIGJ1dCBub3cgd2UgcmVhZCBhCitMaWtlIGxvY2tfY2x1c3RfcmVjX3Jl YWRfY2hlY2tfYW5kX2xvY2soKSwgYnV0IHJlYWRzIGEKIHNlY29uZGFyeSBpbmRleCByZWNvcmQu Ci1AcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssIG9yIERCX1FV RV9USFJfU1VTUEVOREVEICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VE X1JFQywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9USFJfU1VTUEVOREVE ICovCiBVTklWX0lOVEVSTgotdWxpbnQKK2VudW0gZGJfZXJyCiBsb2NrX3NlY19yZWNfcmVhZF9j aGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50 CQkJZmxhZ3MsCS8qITwgaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcKQEAgLTUyOTcsOCArNTMy MSw4IEBAIGxvY2tfc2VjX3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogCQkJCQlMT0NLX1JFQ19O T1RfR0FQICovCiAJcXVlX3Rocl90KgkJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsK LQl1bGludAllcnI7Ci0JdWxpbnQJaGVhcF9ubzsKKwllbnVtIGRiX2VycgllcnI7CisJdWxpbnQJ CWhlYXBfbm87CiAKIAl1dF9hZCghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwogCXV0X2Fk KGJsb2NrLT5mcmFtZSA9PSBwYWdlX2FsaWduKHJlYykpOwpAQCAtNTM0OSw5ICs1MzczLDEwIEBA IGlmIHRoZSBxdWVyeSB0aHJlYWQgc2hvdWxkIGFueXdheSBiZSBzdXMKIHB1dHMgdGhlIHRyYW5z YWN0aW9uIGFuZCB0aGUgcXVlcnkgdGhyZWFkIHRvIHRoZSBsb2NrIHdhaXQgc3RhdGUgYW5kIGlu c2VydHMgYQogd2FpdGluZyByZXF1ZXN0IGZvciBhIHJlY29yZCBsb2NrIHRvIHRoZSBsb2NrIHF1 ZXVlLiBTZXRzIHRoZSByZXF1ZXN0ZWQgbW9kZQogbG9jayBvbiB0aGUgcmVjb3JkLgotQHJldHVy bglEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLCBvciBEQl9RVUVfVEhSX1NV U1BFTkRFRCAqLworQHJldHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsIERC X0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCitvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogVU5J Vl9JTlRFUk4KLXVsaW50CitlbnVtIGRiX2VycgogbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19h bmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCQlm bGFncywJLyohPCBpbjogaWYgQlRSX05PX0xPQ0tJTkdfRkxBRwpAQCAtNTM3Miw4ICs1Mzk3LDgg QEAgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIAkJCQkJTE9DS19SRUNfTk9U X0dBUCAqLwogCXF1ZV90aHJfdCoJCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiB7Ci0J dWxpbnQJZXJyOwotCXVsaW50CWhlYXBfbm87CisJZW51bSBkYl9lcnIJZXJyOworCXVsaW50CQlo ZWFwX25vOwogCiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwogCXV0X2FkKGJs b2NrLT5mcmFtZSA9PSBwYWdlX2FsaWduKHJlYykpOwpAQCAtNTQ0NCwxNyArNTQ2OSwyMiBAQCBs b2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrX2FsdCgKIAltZW1faGVhcF90Kgl0bXBf aGVhcAk9IE5VTEw7CiAJdWxpbnQJCW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKIAl1 bGludCoJCW9mZnNldHMJCT0gb2Zmc2V0c187Ci0JdWxpbnQJCXJldDsKKwl1bGludAkJZXJyOwog CXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCiAJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmdG1wX2hlYXApOwot CXJldCA9IGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soZmxhZ3MsIGJsb2NrLCBy ZWMsIGluZGV4LAorCWVyciA9IGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soZmxh Z3MsIGJsb2NrLCByZWMsIGluZGV4LAogCQkJCQkJIG9mZnNldHMsIG1vZGUsIGdhcF9tb2RlLCB0 aHIpOwogCWlmICh0bXBfaGVhcCkgewogCQltZW1faGVhcF9mcmVlKHRtcF9oZWFwKTsKIAl9Ci0J cmV0dXJuKHJldCk7CisKKwlpZiAoVU5JVl9VTkxJS0VMWShlcnIgPT0gREJfU1VDQ0VTU19MT0NL RURfUkVDKSkgeworCQllcnIgPSBEQl9TVUNDRVNTOworCX0KKworCXJldHVybihlcnIpOwogfQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwaW5zLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzQ0MS05NmZueTc0c201b3MybDJzCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMDYwMjExMzczMy1mc2xmdjczbmhpMGQxN3Q0CkBAIC0xMTIxLDkgKzExMjEs OSBAQCBub25zdGFuZGFyZF9leGl0X2Z1bmM6CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyBhIHNo YXJlZCBsb2NrIG9uIGEgcmVjb3JkLiBVc2VkIGluIGxvY2tpbmcgcG9zc2libGUgZHVwbGljYXRl IGtleQogcmVjb3JkcyBhbmQgYWxzbyBpbiBjaGVja2luZyBmb3JlaWduIGtleSBjb25zdHJhaW50 cy4KLUByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICovCitAcmV0dXJuCURCX1NVQ0NF U1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywgb3IgZXJyb3IgY29kZSAqLwogc3RhdGljCi11bGlu dAorZW51bSBkYl9lcnIKIHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIC8qPT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJCXR5cGUsCS8qITwgaW46IExPQ0tfT1JESU5BUlks IExPQ0tfR0FQLCBvcgpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgcm93X2luc19zZXRfc2hhcmVkX3Jl Y19sb2NrKAogCWNvbnN0IHVsaW50KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMo cmVjLCBpbmRleCkgKi8KIAlxdWVfdGhyX3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAq LwogewotCXVsaW50CWVycjsKKwllbnVtIGRiX2VycgllcnI7CiAKIAl1dF9hZChyZWNfb2Zmc192 YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAKQEAgLTExNTIsOSArMTE1Miw5IEBAIHJv d19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIGEgZXhj bHVzaXZlIGxvY2sgb24gYSByZWNvcmQuIFVzZWQgaW4gbG9ja2luZyBwb3NzaWJsZSBkdXBsaWNh dGUga2V5CiByZWNvcmRzCi1AcmV0dXJuCURCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLworQHJl dHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsIG9yIGVycm9yIGNvZGUgKi8K IHN0YXRpYwotdWxpbnQKK2VudW0gZGJfZXJyCiByb3dfaW5zX3NldF9leGNsdXNpdmVfcmVjX2xv Y2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJCQl0eXBlLAkvKiE8 IGluOiBMT0NLX09SRElOQVJZLCBMT0NLX0dBUCwgb3IKQEAgLTExNjUsNyArMTE2NSw3IEBAIHJv d19pbnNfc2V0X2V4Y2x1c2l2ZV9yZWNfbG9jaygKIAljb25zdCB1bGludCoJCW9mZnNldHMsLyoh PCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgpICovCiAJcXVlX3Rocl90KgkJdGhyKQkv KiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQl1bGludAllcnI7CisJZW51bSBkYl9lcnIJZXJy OwogCiAJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCkBA IC0xMjA1LDcgKzEyMDUsNiBAQCByb3dfaW5zX2NoZWNrX2ZvcmVpZ25fY29uc3RyYWludCgKIAlk aWN0X2luZGV4X3QqCWNoZWNrX2luZGV4OwogCXVsaW50CQluX2ZpZWxkc19jbXA7CiAJYnRyX3Bj dXJfdAlwY3VyOwotCWlib29sCQltb3ZlZDsKIAlpbnQJCWNtcDsKIAl1bGludAkJZXJyOwogCXVs aW50CQlpOwpAQCAtMTMzNiwxMyArMTMzNSwxMyBAQCBydW5fYWdhaW46CiAKIAkvKiBTY2FuIGlu ZGV4IHJlY29yZHMgYW5kIGNoZWNrIGlmIHRoZXJlIGlzIGEgbWF0Y2hpbmcgcmVjb3JkICovCiAK LQlmb3IgKDs7KSB7CisJZG8gewogCQljb25zdCByZWNfdCoJCXJlYyA9IGJ0cl9wY3VyX2dldF9y ZWMoJnBjdXIpOwogCQljb25zdCBidWZfYmxvY2tfdCoJYmxvY2sgPSBidHJfcGN1cl9nZXRfYmxv Y2soJnBjdXIpOwogCiAJCWlmIChwYWdlX3JlY19pc19pbmZpbXVtKHJlYykpIHsKIAotCQkJZ290 byBuZXh0X3JlYzsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zm c2V0cyhyZWMsIGNoZWNrX2luZGV4LApAQCAtMTM1MywxMiArMTM1MiwxMyBAQCBydW5fYWdhaW46 CiAJCQllcnIgPSByb3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soTE9DS19PUkRJTkFSWSwgYmxv Y2ssCiAJCQkJCQkJICByZWMsIGNoZWNrX2luZGV4LAogCQkJCQkJCSAgb2Zmc2V0cywgdGhyKTsK LQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJYnJlYWs7CisJCQlzd2l0Y2ggKGVy cikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQljYXNlIERCX1NVQ0NFU1M6 CisJCQkJY29udGludWU7CisJCQlkZWZhdWx0OgorCQkJCWdvdG8gZW5kX3NjYW47CiAJCQl9Ci0K LQkJCWdvdG8gbmV4dF9yZWM7CiAJCX0KIAogCQljbXAgPSBjbXBfZHR1cGxlX3JlYyhlbnRyeSwg cmVjLCBvZmZzZXRzKTsKQEAgLTEzNjksOSArMTM2OSwxMiBAQCBydW5fYWdhaW46CiAJCQkJZXJy ID0gcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogCQkJCQlMT0NLX09SRElOQVJZLCBibG9j aywKIAkJCQkJcmVjLCBjaGVja19pbmRleCwgb2Zmc2V0cywgdGhyKTsKLQkJCQlpZiAoZXJyICE9 IERCX1NVQ0NFU1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUNDRVNT X0xPQ0tFRF9SRUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgogCQkJCQlicmVhazsKKwkJCQlkZWZh dWx0OgorCQkJCQlnb3RvIGVuZF9zY2FuOwogCQkJCX0KIAkJCX0gZWxzZSB7CiAJCQkJLyogRm91 bmQgYSBtYXRjaGluZyByZWNvcmQuIExvY2sgb25seQpAQCAtMTM4MiwxNSArMTM4NSwxOCBAQCBy dW5fYWdhaW46CiAJCQkJCUxPQ0tfUkVDX05PVF9HQVAsIGJsb2NrLAogCQkJCQlyZWMsIGNoZWNr X2luZGV4LCBvZmZzZXRzLCB0aHIpOwogCi0JCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0K KwkJCQlzd2l0Y2ggKGVycikgeworCQkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJ CWNhc2UgREJfU1VDQ0VTUzoKIAkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJZ290byBl bmRfc2NhbjsKIAkJCQl9CiAKIAkJCQlpZiAoY2hlY2tfcmVmKSB7CiAJCQkJCWVyciA9IERCX1NV Q0NFU1M7CiAKLQkJCQkJYnJlYWs7CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfSBlbHNlIGlm IChmb3JlaWduLT50eXBlICE9IDApIHsKIAkJCQkJLyogVGhlcmUgaXMgYW4gT04gVVBEQVRFIG9y IE9OIERFTEVURQogCQkJCQljb25kaXRpb246IGNoZWNrIHRoZW0gaW4gYSBzZXBhcmF0ZQpAQCAt MTQxNiw3ICsxNDIyLDcgQEAgcnVuX2FnYWluOgogCQkJCQkJCWVyciA9IERCX0ZPUkVJR05fRFVQ TElDQVRFX0tFWTsKIAkJCQkJCX0KIAotCQkJCQkJYnJlYWs7CisJCQkJCQlnb3RvIGVuZF9zY2Fu OwogCQkJCQl9CiAKIAkJCQkJLyogcm93X2luc19mb3JlaWduX2NoZWNrX29uX2NvbnN0cmFpbnQK QEAgLTE0MjksNDkgKzE0MzUsNDEgQEAgcnVuX2FnYWluOgogCQkJCQkJdGhyLCBmb3JlaWduLCBy ZWMsIGVudHJ5KTsKIAogCQkJCQllcnIgPSBEQl9ST1dfSVNfUkVGRVJFTkNFRDsKLQkJCQkJYnJl YWs7CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJfQotCQl9CisJCX0gZWxzZSB7CisJ CQl1dF9hKGNtcCA8IDApOwogCi0JCWlmIChjbXAgPCAwKSB7CiAJCQllcnIgPSByb3dfaW5zX3Nl dF9zaGFyZWRfcmVjX2xvY2soCiAJCQkJTE9DS19HQVAsIGJsb2NrLAogCQkJCXJlYywgY2hlY2tf aW5kZXgsIG9mZnNldHMsIHRocik7Ci0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQotCQkJ CWJyZWFrOwotCQkJfQogCi0JCQlpZiAoY2hlY2tfcmVmKSB7Ci0JCQkJZXJyID0gREJfTk9fUkVG RVJFTkNFRF9ST1c7Ci0JCQkJcm93X2luc19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAotCQkJCQl0 cngsIGZvcmVpZ24sIHJlYywgZW50cnkpOwotCQkJfSBlbHNlIHsKLQkJCQllcnIgPSBEQl9TVUND RVNTOworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgor CQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWlmIChjaGVja19yZWYpIHsKKwkJCQkJZXJyID0gREJf Tk9fUkVGRVJFTkNFRF9ST1c7CisJCQkJCXJvd19pbnNfZm9yZWlnbl9yZXBvcnRfYWRkX2VycigK KwkJCQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZXJy ID0gREJfU1VDQ0VTUzsKKwkJCQl9CiAJCQl9CiAKLQkJCWJyZWFrOworCQkJZ290byBlbmRfc2Nh bjsKIAkJfQorCX0gd2hpbGUgKGJ0cl9wY3VyX21vdmVfdG9fbmV4dCgmcGN1ciwgJm10cikpOwog Ci0JCXV0X2EoY21wID09IDApOwotbmV4dF9yZWM6Ci0JCW1vdmVkID0gYnRyX3BjdXJfbW92ZV90 b19uZXh0KCZwY3VyLCAmbXRyKTsKLQotCQlpZiAoIW1vdmVkKSB7Ci0JCQlpZiAoY2hlY2tfcmVm KSB7Ci0JCQkJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7Ci0JCQkJcm93X2luc19mb3Jl aWduX3JlcG9ydF9hZGRfZXJyKAotCQkJCQl0cngsIGZvcmVpZ24sIHJlYywgZW50cnkpOwotCQkJ CWVyciA9IERCX05PX1JFRkVSRU5DRURfUk9XOwotCQkJfSBlbHNlIHsKLQkJCQllcnIgPSBEQl9T VUNDRVNTOwotCQkJfQotCi0JCQlicmVhazsKLQkJfQorCWlmIChjaGVja19yZWYpIHsKKwkJcm93 X2luc19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAorCQkJdHJ4LCBmb3JlaWduLCBidHJfcGN1cl9n ZXRfcmVjKCZwY3VyKSwgZW50cnkpOworCQllcnIgPSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKKwl9 IGVsc2UgeworCQllcnIgPSBEQl9TVUNDRVNTOwogCX0KIAorZW5kX3NjYW46CiAJYnRyX3BjdXJf Y2xvc2UoJnBjdXIpOwogCiAJbXRyX2NvbW1pdCgmbXRyKTsKQEAgLTE3MTksOSArMTcxNywxMyBA QCByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9kdXBsaWNhdGUoCiAJCQkJcmVjLCBpbmRleCwg b2Zmc2V0cywgdGhyKTsKIAkJfQogCi0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCXN3 aXRjaCAoZXJyKSB7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJZXJyID0gREJf U1VDQ0VTUzsKKwkJY2FzZSBEQl9TVUNDRVNTOgogCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQln b3RvIGVuZF9zY2FuOwogCQl9CiAKIAkJaWYgKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKHJlYykpIHsK QEAgLTE3MzgsMTcgKzE3NDAsMTUgQEAgcm93X2luc19zY2FuX3NlY19pbmRleF9mb3JfZHVwbGlj YXRlKAogCiAJCQkJdGhyX2dldF90cngodGhyKS0+ZXJyb3JfaW5mbyA9IGluZGV4OwogCi0JCQkJ YnJlYWs7CisJCQkJZ290byBlbmRfc2NhbjsKIAkJCX0KKwkJfSBlbHNlIHsKKwkJCXV0X2EoY21w IDwgMCk7CisJCQlnb3RvIGVuZF9zY2FuOwogCQl9Ci0KLQkJaWYgKGNtcCA8IDApIHsKLQkJCWJy ZWFrOwotCQl9Ci0KLQkJdXRfYShjbXAgPT0gMCk7CiAJfSB3aGlsZSAoYnRyX3BjdXJfbW92ZV90 b19uZXh0KCZwY3VyLCAmbXRyKSk7CiAKK2VuZF9zY2FuOgogCWlmIChVTklWX0xJS0VMWV9OVUxM KGhlYXApKSB7CiAJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJfQpAQCAtMTgzNyw3ICsxODM3LDEx IEBAIHJvd19pbnNfZHVwbGljYXRlX2Vycm9yX2luX2NsdXN0KAogCQkJCQljdXJzb3ItPmluZGV4 LCBvZmZzZXRzLCB0aHIpOwogCQkJfQogCi0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJ CXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWNhc2Ug REJfU1VDQ0VTUzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CiAJCQkJZ290byBmdW5jX2V4aXQ7 CiAJCQl9CiAKQEAgLTE4NzcsNyArMTg4MSwxMSBAQCByb3dfaW5zX2R1cGxpY2F0ZV9lcnJvcl9p bl9jbHVzdCgKIAkJCQkJcmVjLCBjdXJzb3ItPmluZGV4LCBvZmZzZXRzLCB0aHIpOwogCQkJfQog Ci0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNl IERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQlicmVhazsK KwkJCWRlZmF1bHQ6CiAJCQkJZ290byBmdW5jX2V4aXQ7CiAJCQl9CiAKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MG15c3FsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2 MDIxMTM0NDEtOTZmbnk3NHNtNW9zMmwycworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw bXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzczMy1mc2xm djczbmhpMGQxN3Q0CkBAIC0xNDMwLDI3ICsxNDMwLDI2IEBAIHJ1bl9hZ2FpbjoKIH0KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKLVRoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191bnNh ZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yCi10aGlzIHNlc3Npb24gaXMgdXNpbmcgYSBSRUFEIENP TU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuIEJlZm9yZQotY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdl IG11c3QgdXNlIHRyeF9yZXNldF9uZXdfcmVjX2xvY2tfaW5mbygpIGFuZAotdHJ4X3JlZ2lzdGVy X25ld19yZWNfbG9jaygpIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcgcmVjb3Jk IGxvY2tzCi1yZWFsbHkgd2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5IHNl dCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5wY3VyLAotYW5kIGFsc28gdW5kZXIgcHJlYnVpbHQtPmNs dXN0X3BjdXIuIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IHVzZWQgYW5kIHRlc3RlZAotaW4gdGhl IGNhc2Ugb2YgYW4gVVBEQVRFIG9yIGEgREVMRVRFIHN0YXRlbWVudCwgd2hlcmUgdGhlIHJvdyBs b2NrIGlzIG9mIHRoZQotTE9DS19YIHR5cGUuCi1UaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWlu aS1yb2xsYmFjaycgdGhhdCByZWxlYXNlcyB0aGUgbGF0ZXN0IHJlY29yZAotbG9ja3Mgd2Ugc2V0 LgotQHJldHVybgllcnJvciBjb2RlIG9yIERCX1NVQ0NFU1MgKi8KK1RoaXMgY2FuIG9ubHkgYmUg dXNlZCB3aGVuIHNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yIHRoaXMKK3Nl c3Npb24gaXMgdXNpbmcgYSBSRUFEIENPTU1JVFRFRCBvciBSRUFEIFVOQ09NTUlUVEVEIGlzb2xh dGlvbiBsZXZlbC4KK0JlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcm93X3NlYXJjaF9mb3Jf bXlzcWwoKSBtdXN0IGhhdmUKK2luaXRpYWxpemVkIHByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzIHRv IHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcKK3JlY29yZCBsb2NrcyByZWFsbHkgd2Vy ZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5IHNldAorY2x1c3RlcmVkIGluZGV4 IHJlY29yZCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5wY3VyIG9yCitwcmVidWlsdC0+Y2x1c3RfcGN1 ci4gIFRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0CityZWxlYXNl cyB0aGUgbGF0ZXN0IGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgbG9jayB3ZSBzZXQuCitAcmV0dXJu IGVycm9yIGNvZGUgb3IgREJfU1VDQ0VTUyAqLwogVU5JVl9JTlRFUk4KIGludAogcm93X3VubG9j a19mb3JfbXlzcWwoCiAvKj09PT09PT09PT09PT09PT09Ki8KLQlyb3dfcHJlYnVpbHRfdCoJcHJl YnVpbHQsCS8qITwgaW46IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAorCXJvd19wcmVidWlsdF90 KglwcmVidWlsdCwJLyohPCBpbi9vdXQ6IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJCQlo YW5kbGUgKi8KLQlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcykvKiE8IFRSVUUgaWYgY2FsbGVk IHNvIHRoYXQgd2UgaGF2ZQotCQkJCQl0aGUgbGF0Y2hlcyBvbiB0aGUgcmVjb3JkcyB1bmRlciBw Y3VyCi0JCQkJCWFuZCBjbHVzdF9wY3VyLCBhbmQgd2UgZG8gbm90IG5lZWQgdG8KLQkJCQkJcmVw b3NpdGlvbiB0aGUgY3Vyc29ycy4gKi8KKwlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcykvKiE8 IGluOiBUUlVFIGlmIGNhbGxlZCBzbworCQkJCQl0aGF0IHdlIGhhdmUgdGhlIGxhdGNoZXMgb24K KwkJCQkJdGhlIHJlY29yZHMgdW5kZXIgcGN1ciBhbmQKKwkJCQkJY2x1c3RfcGN1ciwgYW5kIHdl IGRvIG5vdCBuZWVkCisJCQkJCXRvIHJlcG9zaXRpb24gdGhlIGN1cnNvcnMuICovCiB7CiAJYnRy X3BjdXJfdCoJcGN1cgkJPSBwcmVidWlsdC0+cGN1cjsKIAlidHJfcGN1cl90KgljbHVzdF9wY3Vy CT0gcHJlYnVpbHQtPmNsdXN0X3BjdXI7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MHNlbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMTM0NDEtOTZmbnk3NHNtNW9z MmwycworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3M25oaTBkMTd0NApAQCAtODYzLDgg Kzg2MywxNCBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWMoCiAJCQljbHVzdF9yZWMsIGluZGV4LCBv ZmZzZXRzLAogCQkJbm9kZS0+cm93X2xvY2tfbW9kZSwgbG9ja190eXBlLCB0aHIpOwogCi0JCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgREJfU1VD Q0VTUzoKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQkvKiBEZWNsYXJlIHRoZSB2 YXJpYWJsZSB1bmluaXRpYWxpemVkIGluIFZhbGdyaW5kLgorCQkJSXQgc2hvdWxkIGJlIHNldCB0 byBEQl9TVUNDRVNTIGF0IGZ1bmNfZXhpdC4gKi8KKwkJCVVOSVZfTUVNX0lOVkFMSUQoJmVyciwg c2l6ZW9mIGVycik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKIAkJCWdvdG8gZXJyX2V4aXQ7CiAJ CX0KIAl9IGVsc2UgewpAQCAtOTM0LDkgKzk0MCw5IEBAIGVycl9leGl0OgogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogU2V0cyBhIGxvY2sgb24gYSByZWNvcmQuCi1AcmV0dXJuCURCX1NVQ0NFU1Mgb3Ig ZXJyb3IgY29kZSAqLworQHJldHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMs IG9yIGVycm9yIGNvZGUgKi8KIFVOSVZfSU5MSU5FCi11bGludAorZW51bSBkYl9lcnIKIHNlbF9z ZXRfcmVjX2xvY2soCiAvKj09PT09PT09PT09PT0qLwogCWNvbnN0IGJ1Zl9ibG9ja190KglibG9j aywJLyohPCBpbjogYnVmZmVyIGJsb2NrIG9mIHJlYyAqLwpAQCAtOTQ4LDggKzk1NCw4IEBAIHNl bF9zZXRfcmVjX2xvY2soCiAJCQkJCUxPQ19SRUNfTk9UX0dBUCAqLwogCXF1ZV90aHJfdCoJCXRo cikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiB7Ci0JdHJ4X3QqCXRyeDsKLQl1bGludAllcnI7 CisJdHJ4X3QqCQl0cng7CisJZW51bSBkYl9lcnIJZXJyOwogCiAJdHJ4ID0gdGhyX2dldF90cngo dGhyKTsKIApAQCAtMTQ4MiwxMSArMTQ4OCwxNSBAQCByZWNfbG9vcDoKIAkJCQkJICAgICAgIG5v ZGUtPnJvd19sb2NrX21vZGUsCiAJCQkJCSAgICAgICBsb2NrX3R5cGUsIHRocik7CiAKLQkJCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VD Q0VTU19MT0NLRURfUkVDOgorCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQljYXNlIERCX1NVQ0NF U1M6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCS8qIE5vdGUgdGhhdCBpbiB0aGlzIGNh c2Ugd2Ugd2lsbCBzdG9yZSBpbiBwY3VyCiAJCQkJdGhlIFBSRURFQ0VTU09SIG9mIHRoZSByZWNv cmQgd2UgYXJlIHdhaXRpbmcKIAkJCQl0aGUgbG9jayBmb3IgKi8KLQogCQkJCWdvdG8gbG9ja193 YWl0X29yX2Vycm9yOwogCQkJfQogCQl9CkBAIC0xNTM4LDggKzE1NDgsMTIgQEAgc2tpcF9sb2Nr OgogCQkJCSAgICAgICByZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCSAgICAgICBub2RlLT5yb3df bG9ja19tb2RlLCBsb2NrX3R5cGUsIHRocik7CiAKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7 Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQll cnIgPSBEQl9TVUNDRVNTOworCQljYXNlIERCX1NVQ0NFU1M6CisJCQlicmVhazsKKwkJZGVmYXVs dDoKIAkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQl9CiAJfQpAQCAtMjgwMSw5ICsyODE1 LDkgQEAgcm93X3NlbF9idWlsZF9wcmV2X3ZlcnNfZm9yX215c3FsKAogUmV0cmlldmVzIHRoZSBj bHVzdGVyZWQgaW5kZXggcmVjb3JkIGNvcnJlc3BvbmRpbmcgdG8gYSByZWNvcmQgaW4gYQogbm9u LWNsdXN0ZXJlZCBpbmRleC4gRG9lcyB0aGUgbmVjZXNzYXJ5IGxvY2tpbmcuIFVzZWQgaW4gdGhl IE15U1FMCiBpbnRlcmZhY2UuCi1AcmV0dXJuCURCX1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLwor QHJldHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsIG9yIGVycm9yIGNvZGUg Ki8KIHN0YXRpYwotdWxpbnQKK2VudW0gZGJfZXJyCiByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9y X215c3FsKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlyb3dfcHJlYnVpbHRf dCoJcHJlYnVpbHQsLyohPCBpbjogcHJlYnVpbHQgc3RydWN0IGluIHRoZSBoYW5kbGUgKi8KQEAg LTI4MzAsNyArMjg0NCw3IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAJZGlj dF9pbmRleF90KgljbHVzdF9pbmRleDsKIAljb25zdCByZWNfdCoJY2x1c3RfcmVjOwogCXJlY190 KgkJb2xkX3ZlcnM7Ci0JdWxpbnQJCWVycjsKKwllbnVtIGRiX2VycgllcnI7CiAJdHJ4X3QqCQl0 cng7CiAKIAkqb3V0X3JlYyA9IE5VTEw7CkBAIC0yODg5LDYgKzI5MDMsNyBAQCByb3dfc2VsX2dl dF9jbHVzdF9yZWNfZm9yX215c3FsKAogCiAJCWNsdXN0X3JlYyA9IE5VTEw7CiAKKwkJZXJyID0g REJfU1VDQ0VTUzsKIAkJZ290byBmdW5jX2V4aXQ7CiAJfQogCkBAIC0yOTA0LDggKzI5MTksMTEg QEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNxbCgKIAkJCTAsIGJ0cl9wY3VyX2dldF9i bG9jayhwcmVidWlsdC0+Y2x1c3RfcGN1ciksCiAJCQljbHVzdF9yZWMsIGNsdXN0X2luZGV4LCAq b2Zmc2V0cywKIAkJCXByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLCBMT0NLX1JFQ19OT1RfR0FQ LCB0aHIpOwotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQlzd2l0Y2ggKGVycikgewor CQljYXNlIERCX1NVQ0NFU1M6CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJYnJl YWs7CisJCWRlZmF1bHQ6CiAJCQlnb3RvIGVycl9leGl0OwogCQl9CiAJfSBlbHNlIHsKQEAgLTI5 NjUsNiArMjk4Myw4IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAJCQkJICAg ICByZWMsIHNlY19pbmRleCwgY2x1c3RfcmVjLCBjbHVzdF9pbmRleCkpOwogI2VuZGlmCiAJCX0K KworCQllcnIgPSBEQl9TVUNDRVNTOwogCX0KIAogZnVuY19leGl0OgpAQCAtMjk3Nyw3ICsyOTk3 LDYgQEAgZnVuY19leGl0OgogCQlidHJfcGN1cl9zdG9yZV9wb3NpdGlvbihwcmVidWlsdC0+Y2x1 c3RfcGN1ciwgbXRyKTsKIAl9CiAKLQllcnIgPSBEQl9TVUNDRVNTOwogZXJyX2V4aXQ6CiAJcmV0 dXJuKGVycik7CiB9CkBAIC0zNzAyLDggKzM3MjEsMTIgQEAgc2hvcnRjdXRfZmFpbHNfdG9vX2Jp Z19yZWM6CiAJCQkJCSAgICAgICBwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSwKIAkJCQkJICAg ICAgIExPQ0tfR0FQLCB0aHIpOwogCi0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJ c3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJCWVyciA9 IERCX1NVQ0NFU1M7CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0 OgogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJfQogCQl9CkBAIC0zODAxLDggKzM4 MjQsMTIgQEAgcmVjX2xvb3A6CiAJCQkJCSAgICAgICBwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlw ZSwKIAkJCQkJICAgICAgIExPQ0tfT1JESU5BUlksIHRocik7CiAKLQkJCWlmIChlcnIgIT0gREJf U1VDQ0VTUykgewotCisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tF RF9SRUM6CisJCQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CiAJCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCQl9CiAJ CX0KQEAgLTM5MzIsOCArMzk1OSwxMSBAQCB3cm9uZ19vZmZzOgogCQkJCQlwcmVidWlsdC0+c2Vs ZWN0X2xvY2tfdHlwZSwgTE9DS19HQVAsCiAJCQkJCXRocik7CiAKLQkJCQlpZiAoZXJyICE9IERC X1NVQ0NFU1MpIHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUNDRVNTX0xP Q0tFRF9SRUM6CisJCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0 OgogCQkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJCQl9CiAJCQl9CkBAIC0zOTY4LDgg KzM5OTgsMTEgQEAgd3Jvbmdfb2ZmczoKIAkJCQkJcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUs IExPQ0tfR0FQLAogCQkJCQl0aHIpOwogCi0JCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0K KwkJCQlzd2l0Y2ggKGVycikgeworCQkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJ CWNhc2UgREJfU1VDQ0VTUzoKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKIAkJCQkJZ290byBs b2NrX3dhaXRfb3JfZXJyb3I7CiAJCQkJfQogCQkJfQpAQCAtNDAzOSwxNSArNDA3MiwyMSBAQCBu b19nYXBfbG9jazoKIAogCQlzd2l0Y2ggKGVycikgewogCQkJY29uc3QgcmVjX3QqCW9sZF92ZXJz OwotCQljYXNlIERCX1NVQ0NFU1M6CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgogCQkJ aWYgKHNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZwotCQkJICAgIHx8IHRyeC0+aXNvbGF0aW9u X2xldmVsIDw9IFRSWF9JU09fUkVBRF9DT01NSVRURUQpIHsKKwkJCSAgICB8fCB0cngtPmlzb2xh dGlvbl9sZXZlbAorCQkJICAgIDw9IFRSWF9JU09fUkVBRF9DT01NSVRURUQpIHsKIAkJCQkvKiBO b3RlIHRoYXQgYSByZWNvcmQgb2YKIAkJCQlwcmVidWlsdC0+aW5kZXggd2FzIGxvY2tlZC4gKi8K IAkJCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDE7CiAJCQl9CisJCQllcnIgPSBEQl9TVUND RVNTOworCQljYXNlIERCX1NVQ0NFU1M6CiAJCQlicmVhazsKIAkJY2FzZSBEQl9MT0NLX1dBSVQ6 CisJCQkvKiBOZXZlciB1bmxvY2sgcm93cyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvbmZsaWN0LiAq LworCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAwOworCiAJCQlpZiAoVU5JVl9MSUtFTFko cHJlYnVpbHQtPnJvd19yZWFkX3R5cGUKIAkJCQkJIT0gUk9XX1JFQURfVFJZX1NFTUlfQ09OU0lT VEVOVCkKIAkJCSAgICB8fCB1bmlxdWVfc2VhcmNoCkBAIC00MDc3LDcgKzQxMTYsNiBAQCBub19n YXBfbG9jazoKIAkJCWlmIChVTklWX0xJS0VMWSh0cngtPndhaXRfbG9jayAhPSBOVUxMKSkgewog CQkJCWxvY2tfY2FuY2VsX3dhaXRpbmdfYW5kX3JlbGVhc2UoCiAJCQkJCXRyeC0+d2FpdF9sb2Nr KTsKLQkJCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDA7CiAJCQl9IGVsc2UgewogCQkJCW11 dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7CiAKQEAgLTQwODksOSArNDEyNyw2IEBAIG5vX2dhcF9s b2NrOgogCQkJCQkJCSAgVUxJTlRfVU5ERUZJTkVELAogCQkJCQkJCSAgJmhlYXApOwogCQkJCWVy ciA9IERCX1NVQ0NFU1M7Ci0JCQkJLyogTm90ZSB0aGF0IGEgcmVjb3JkIG9mCi0JCQkJcHJlYnVp bHQtPmluZGV4IHdhcyBsb2NrZWQuICovCi0JCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAx OwogCQkJCWJyZWFrOwogCQkJfQogCQkJbXV0ZXhfZXhpdCgma2VybmVsX211dGV4KTsKQEAgLTQy MjgsMjcgKzQyNjMsMzAgQEAgcmVxdWlyZXNfY2x1c3RfcmVjOgogCQllcnIgPSByb3dfc2VsX2dl dF9jbHVzdF9yZWNfZm9yX215c3FsKHByZWJ1aWx0LCBpbmRleCwgcmVjLAogCQkJCQkJICAgICAg dGhyLCAmY2x1c3RfcmVjLAogCQkJCQkJICAgICAgJm9mZnNldHMsICZoZWFwLCAmbXRyKTsKLQkJ aWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgREJfU1VD Q0VTUzoKKwkJCWlmIChjbHVzdF9yZWMgPT0gTlVMTCkgeworCQkJCS8qIFRoZSByZWNvcmQgZGlk IG5vdCBleGlzdCBpbiB0aGUgcmVhZCB2aWV3ICovCisJCQkJdXRfYWQocHJlYnVpbHQtPnNlbGVj dF9sb2NrX3R5cGUgPT0gTE9DS19OT05FKTsKIAorCQkJCWdvdG8gbmV4dF9yZWM7CisJCQl9CisJ CQlicmVhazsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQl1dF9hKGNsdXN0X3Jl YyAhPSBOVUxMKTsKKwkJCWlmIChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKKwkJCSAgICAg fHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwKKwkJCSAgICA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVE KSB7CisJCQkJLyogTm90ZSB0aGF0IHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkCisJCQkJd2Fz IGxvY2tlZC4gKi8KKwkJCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDI7CisJCQl9CisJCQll cnIgPSBEQl9TVUNDRVNTOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CiAJCQlnb3RvIGxvY2tfd2Fp dF9vcl9lcnJvcjsKIAkJfQogCi0JCWlmIChjbHVzdF9yZWMgPT0gTlVMTCkgewotCQkJLyogVGhl IHJlY29yZCBkaWQgbm90IGV4aXN0IGluIHRoZSByZWFkIHZpZXcgKi8KLQkJCXV0X2FkKHByZWJ1 aWx0LT5zZWxlY3RfbG9ja190eXBlID09IExPQ0tfTk9ORSk7Ci0KLQkJCWdvdG8gbmV4dF9yZWM7 Ci0JCX0KLQotCQlpZiAoKHNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZwotCQkgICAgIHx8IHRy eC0+aXNvbGF0aW9uX2xldmVsIDw9IFRSWF9JU09fUkVBRF9DT01NSVRURUQpCi0JCSAgICAmJiBw cmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSAhPSBMT0NLX05PTkUpIHsKLQkJCS8qIE5vdGUgdGhh dCBib3RoIHRoZSBzZWNvbmRhcnkgaW5kZXggcmVjb3JkCi0JCQlhbmQgdGhlIGNsdXN0ZXJlZCBp bmRleCByZWNvcmQgd2VyZSBsb2NrZWQuICovCi0JCQl1dF9hZChwcmVidWlsdC0+bmV3X3JlY19s b2NrcyA9PSAxKTsKLQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMjsKLQkJfQotCiAJCWlm IChVTklWX1VOTElLRUxZKHJlY19nZXRfZGVsZXRlZF9mbGFnKGNsdXN0X3JlYywgY29tcCkpKSB7 CiAKIAkJCS8qIFRoZSByZWNvcmQgaXMgZGVsZXRlIG1hcmtlZDogd2UgY2FuIHNraXAgaXQgKi8K Cg== --===============1520049489== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: 12b11fe9da6b0f01b931fe90a4d15ada1a6238da # timestamp: 2010-06-02 14:37:40 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: marko.makela@stripped\ # 96fny74sm5os2l2s # # Begin bundle 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 --===============1520049489==--