From: marko.makela Date: June 16 2011 12:14pm Subject: bzr commit into mysql-5.5 branch (marko.makela:3456) List-Archive: http://lists.mysql.com/commits/139322 Message-Id: <201106161215.p5GCFihJ025698@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0771030633==" --===============0771030633== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS9teXNxbC01LjUvIGJh c2VkIG9uIHJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFm cTBkcmFnbmg1a2wKCiAzNDU2IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDYtMTYgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEgdG8gbXlzcWwtNS41LgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9y YWdlL2lubm9iYXNlL2J1Zi9idWYwYnVkZHkuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9i dWYwYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnVmMGJ1Zi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwbHJ1LmgKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9y ZW0vcmVtMHJlYy5jCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYw YnVkZHkuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1ZGR5LmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbAorKysg Yi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVkZHkuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDYxNjEyMTMyNC1oemRibWQxMHh5Z2NvaHAyCkBAIC0xLDYgKzEsNiBAQAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMjAwNiwgMjAxMCwgSW5ub2Jh c2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMzUyLDcgKzM1Miw5IEBA IGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAlidWZfcGFnZV90KglicGFnZSwJLyohPCBpbjog YmxvY2sgdG8gcmVsb2NhdGUgKi8KIAlidWZfcGFnZV90KglkcGFnZSkJLyohPCBpbjogZnJlZSBi bG9jayB0byByZWxvY2F0ZSB0byAqLwogeworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZp bmVkIFVOSVZfQlVGX0RFQlVHCiAJYnVmX3BhZ2VfdCoJYjsKKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQlVGX0RFQlVHICovCiAJYnVmX3Bvb2xfdCoJYnVmX3Bvb2wgPSBidWZfcG9vbF9m cm9tX2JwYWdlKGJwYWdlKTsKIAogCXV0X2FkKGJ1Zl9wb29sX211dGV4X293bihidWZfcG9vbCkp OwpAQCAtMzgyLDcgKzM4NCw3IEBAIGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAogCWJ1Zl9y ZWxvY2F0ZShicGFnZSwgZHBhZ2UpOwogCXV0X2QoYnBhZ2UtPnN0YXRlID0gQlVGX0JMT0NLX1pJ UF9GUkVFKTsKLQorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RF QlVHCiAJLyogcmVsb2NhdGUgYnVmX3Bvb2wtPnppcF9jbGVhbiAqLwogCWIgPSBVVF9MSVNUX0dF VF9QUkVWKGxpc3QsIGRwYWdlKTsKIAlVVF9MSVNUX1JFTU9WRShsaXN0LCBidWZfcG9vbC0+emlw X2NsZWFuLCBkcGFnZSk7CkBAIC0zOTIsNiArMzk0LDcgQEAgYnVmX2J1ZGR5X3JlbG9jYXRlX2Js b2NrKAogCX0gZWxzZSB7CiAJCVVUX0xJU1RfQUREX0ZJUlNUKGxpc3QsIGJ1Zl9wb29sLT56aXBf Y2xlYW4sIGRwYWdlKTsKIAl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJV RyAqLwogCiAJVU5JVl9NRU1fSU5WQUxJRChicGFnZSwgc2l6ZW9mICpicGFnZSk7CiAKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVm L2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMTMyNC1o emRibWQxMHh5Z2NvaHAyCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAK LUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMCwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMu CiAKIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBjb250YWluIG1vZGlmaWNhdGlvbnMgY29udHJpYnV0 ZWQgYW5kIGNvcHlyaWdodGVkIGJ5CkBAIC0xMDk5LDcwICsxMDk5LDYgQEAgYnVmX2NodW5rX25v dF9mcmVlZCgKIAlyZXR1cm4oTlVMTCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DaGVja3Mg dGhhdCBhbGwgYmxvY2tzIGluIHRoZSBidWZmZXIgY2h1bmsgYXJlIGluIEJVRl9CTE9DS19OT1Rf VVNFRCBzdGF0ZS4KLUByZXR1cm4JVFJVRSBpZiBhbGwgZnJlZWQgKi8KLXN0YXRpYwotaWJvb2wK LWJ1Zl9jaHVua19hbGxfZnJlZSgKLS8qPT09PT09PT09PT09PT09Ki8KLQljb25zdCBidWZfY2h1 bmtfdCoJY2h1bmspCS8qITwgaW46IGNodW5rIGJlaW5nIGNoZWNrZWQgKi8KLXsKLQljb25zdCBi dWZfYmxvY2tfdCoJYmxvY2s7Ci0JdWxpbnQJCQlpOwotCi0JYmxvY2sgPSBjaHVuay0+YmxvY2tz OwotCi0JZm9yIChpID0gY2h1bmstPnNpemU7IGktLTsgYmxvY2srKykgewotCi0JCWlmIChidWZf YmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSAhPSBCVUZfQkxPQ0tfTk9UX1VTRUQpIHsKLQotCQkJcmV0 dXJuKEZBTFNFKTsKLQkJfQotCX0KLQotCXJldHVybihUUlVFKTsKLX0KLQotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotRnJlZXMgYSBjaHVuayBvZiBidWZmZXIgZnJhbWVzLiAqLwotc3RhdGljCi12b2lkCi1i dWZfY2h1bmtfZnJlZSgKLS8qPT09PT09PT09PT0qLwotCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sLAkv KiE8IGluOiBidWZmZXIgcG9vbCBpbnN0YW5jZSAqLwotCWJ1Zl9jaHVua190KgljaHVuaykJCS8q ITwgb3V0OiBjaHVuayBvZiBidWZmZXJzICovCi17Ci0JYnVmX2Jsb2NrX3QqCQlibG9jazsKLQlj b25zdCBidWZfYmxvY2tfdCoJYmxvY2tfZW5kOwotCi0JdXRfYWQoYnVmX3Bvb2xfbXV0ZXhfb3du KGJ1Zl9wb29sKSk7Ci0KLQlibG9ja19lbmQgPSBjaHVuay0+YmxvY2tzICsgY2h1bmstPnNpemU7 Ci0KLQlmb3IgKGJsb2NrID0gY2h1bmstPmJsb2NrczsgYmxvY2sgPCBibG9ja19lbmQ7IGJsb2Nr KyspIHsKLQkJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfTk9U X1VTRUQpOwotCQl1dF9hKCFibG9jay0+cGFnZS56aXAuZGF0YSk7Ci0KLQkJdXRfYWQoIWJsb2Nr LT5wYWdlLmluX0xSVV9saXN0KTsKLQkJdXRfYWQoIWJsb2NrLT5pbl91bnppcF9MUlVfbGlzdCk7 Ci0JCXV0X2FkKCFibG9jay0+cGFnZS5pbl9mbHVzaF9saXN0KTsKLQkJLyogUmVtb3ZlIHRoZSBi bG9jayBmcm9tIHRoZSBmcmVlIGxpc3QuICovCi0JCXV0X2FkKGJsb2NrLT5wYWdlLmluX2ZyZWVf bGlzdCk7Ci0JCVVUX0xJU1RfUkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT5mcmVlLCAoJmJsb2NrLT5w YWdlKSk7Ci0KLQkJLyogRnJlZSB0aGUgbGF0Y2hlcy4gKi8KLQkJbXV0ZXhfZnJlZSgmYmxvY2st Pm11dGV4KTsKLQkJcndfbG9ja19mcmVlKCZibG9jay0+bG9jayk7Ci0jaWZkZWYgVU5JVl9TWU5D X0RFQlVHCi0JCXJ3X2xvY2tfZnJlZSgmYmxvY2stPmRlYnVnX2xhdGNoKTsKLSNlbmRpZiAvKiBV TklWX1NZTkNfREVCVUcgKi8KLQkJVU5JVl9NRU1fVU5ERVNDKGJsb2NrKTsKLQl9Ci0KLQlvc19t ZW1fZnJlZV9sYXJnZShjaHVuay0+bWVtLCBjaHVuay0+bWVtX3NpemUpOwotfQotCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBTZXQgYnVmZmVyIHBvb2wgc2l6ZSB2YXJpYWJsZXMgYWZ0ZXIgcmVzaXppbmcg aXQgKi8KIHN0YXRpYwpAQCAtMTI3Miw4ICsxMjA4LDYgQEAgYnVmX3Bvb2xfZnJlZV9pbnN0YW5j ZSgKIAljaHVuayA9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKIAogCXdoaWxlICgtLWNo dW5rID49IGNodW5rcykgewotCQkvKiBCeXBhc3MgdGhlIGNoZWNrcyBvZiBidWZfY2h1bmtfZnJl ZSgpLCBzaW5jZSB0aGV5Ci0JCXdvdWxkIGZhaWwgYXQgc2h1dGRvd24uICovCiAJCW9zX21lbV9m cmVlX2xhcmdlKGNodW5rLT5tZW0sIGNodW5rLT5tZW1fc2l6ZSk7CiAJfQogCkBAIC0xNTMzLDI4 MSArMTQ2Nyw2IEBAIGJ1Zl9yZWxvY2F0ZSgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2hyaW5r cyBhIGJ1ZmZlciBwb29sIGluc3RhbmNlLiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9zaHJp bmtfaW5zdGFuY2UoCi0vKj09PT09PT09PT09PT09PT09PT09PSovCi0JYnVmX3Bvb2xfdCoJYnVm X3Bvb2wsCS8qITwgaW46IGJ1ZmZlciBwb29sIGluc3RhbmNlICovCi0JdWxpbnQJCWNodW5rX3Np emUpCS8qITwgaW46IG51bWJlciBvZiBwYWdlcyB0byByZW1vdmUgKi8KLXsKLQlidWZfY2h1bmtf dCoJY2h1bmtzOwotCWJ1Zl9jaHVua190KgljaHVuazsKLQl1bGludAkJbWF4X3NpemU7Ci0JdWxp bnQJCW1heF9mcmVlX3NpemU7Ci0JYnVmX2NodW5rX3QqCW1heF9jaHVuazsKLQlidWZfY2h1bmtf dCoJbWF4X2ZyZWVfY2h1bms7Ci0KLQl1dF9hZCghYnVmX3Bvb2xfbXV0ZXhfb3duKGJ1Zl9wb29s KSk7Ci0KLXRyeV9hZ2FpbjoKLQlidHJfc2VhcmNoX2Rpc2FibGUoKTsgLyogRW1wdHkgdGhlIGFk YXB0aXZlIGhhc2ggaW5kZXggYWdhaW4gKi8KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9v bCk7Ci0KLXNocmlua19hZ2FpbjoKLQlpZiAoYnVmX3Bvb2wtPm5fY2h1bmtzIDw9IDEpIHsKLQot CQkvKiBDYW5ub3Qgc2hyaW5rIGlmIHRoZXJlIGlzIG9ubHkgb25lIGNodW5rICovCi0JCWdvdG8g ZnVuY19kb25lOwotCX0KLQotCS8qIFNlYXJjaCBmb3IgdGhlIGxhcmdlc3QgZnJlZSBjaHVuawot CW5vdCBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBkaWZmZXJlbmNlICovCi0JY2h1bmtzID0gYnVmX3Bv b2wtPmNodW5rczsKLQljaHVuayA9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKLQltYXhf c2l6ZSA9IG1heF9mcmVlX3NpemUgPSAwOwotCW1heF9jaHVuayA9IG1heF9mcmVlX2NodW5rID0g TlVMTDsKLQotCXdoaWxlICgtLWNodW5rID49IGNodW5rcykgewotCQlpZiAoY2h1bmstPnNpemUg PD0gY2h1bmtfc2l6ZQotCQkgICAgJiYgY2h1bmstPnNpemUgPiBtYXhfZnJlZV9zaXplKSB7Ci0J CQlpZiAoY2h1bmstPnNpemUgPiBtYXhfc2l6ZSkgewotCQkJCW1heF9zaXplID0gY2h1bmstPnNp emU7Ci0JCQkJbWF4X2NodW5rID0gY2h1bms7Ci0JCQl9Ci0KLQkJCWlmIChidWZfY2h1bmtfYWxs X2ZyZWUoY2h1bmspKSB7Ci0JCQkJbWF4X2ZyZWVfc2l6ZSA9IGNodW5rLT5zaXplOwotCQkJCW1h eF9mcmVlX2NodW5rID0gY2h1bms7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoIW1heF9mcmVlX3Np emUpIHsKLQotCQl1bGludAkJZGlydHkJPSAwOwotCQl1bGludAkJbm9uZnJlZQk9IDA7Ci0JCWJ1 Zl9ibG9ja190KglibG9jazsKLQkJYnVmX2Jsb2NrX3QqCWJlbmQ7Ci0KLQkJLyogQ2Fubm90IHNo cmluazogdHJ5IGFnYWluIGxhdGVyCi0JCShkbyBub3QgYXNzaWduIHNydl9idWZfcG9vbF9vbGRf c2l6ZSkgKi8KLQkJaWYgKCFtYXhfY2h1bmspIHsKLQotCQkJZ290byBmdW5jX2V4aXQ7Ci0JCX0K LQotCQlibG9jayA9IG1heF9jaHVuay0+YmxvY2tzOwotCQliZW5kID0gYmxvY2sgKyBtYXhfY2h1 bmstPnNpemU7Ci0KLQkJLyogTW92ZSB0aGUgYmxvY2tzIG9mIGNodW5rIHRvIHRoZSBlbmQgb2Yg dGhlCi0JCUxSVSBsaXN0IGFuZCB0cnkgdG8gZmx1c2ggdGhlbS4gKi8KLQkJZm9yICg7IGJsb2Nr IDwgYmVuZDsgYmxvY2srKykgewotCQkJc3dpdGNoIChidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2Nr KSkgewotCQkJY2FzZSBCVUZfQkxPQ0tfTk9UX1VTRUQ6Ci0JCQkJY29udGludWU7Ci0JCQljYXNl IEJVRl9CTE9DS19GSUxFX1BBR0U6Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW5vbmZy ZWUrKzsKLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJbXV0ZXhfZW50ZXIoJmJsb2NrLT5tdXRl eCk7Ci0JCQkvKiBUaGUgZm9sbG93aW5nIGNhbGxzIHdpbGwgdGVtcG9yYXJpbHkKLQkJCXJlbGVh c2UgYmxvY2stPm11dGV4IGFuZCBidWZfcG9vbC0+bXV0ZXguCi0JCQlUaGVyZWZvcmUsIHdlIGhh dmUgdG8gYWx3YXlzIHJldHJ5LAotCQkJZXZlbiBpZiAhZGlydHkgJiYgIW5vbmZyZWUuICovCi0K LQkJCWlmICghYnVmX2ZsdXNoX3JlYWR5X2Zvcl9yZXBsYWNlKCZibG9jay0+cGFnZSkpIHsKLQot CQkJCWJ1Zl9MUlVfbWFrZV9ibG9ja19vbGQoJmJsb2NrLT5wYWdlKTsKLQkJCQlkaXJ0eSsrOwot CQkJfSBlbHNlIGlmIChidWZfTFJVX2ZyZWVfYmxvY2soJmJsb2NrLT5wYWdlLCBUUlVFKQotCQkJ CSAgICE9IEJVRl9MUlVfRlJFRUQpIHsKLQkJCQlub25mcmVlKys7Ci0JCQl9Ci0KLQkJCW11dGV4 X2V4aXQoJmJsb2NrLT5tdXRleCk7Ci0JCX0KLQotCQlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9w b29sKTsKLQotCQkvKiBSZXF1ZXN0IGZvciBhIGZsdXNoIG9mIHRoZSBjaHVuayBpZiBpdCBoZWxw cy4KLQkJRG8gbm90IGZsdXNoIGlmIHRoZXJlIGFyZSBub24tZnJlZSBibG9ja3MsIHNpbmNlCi0J CWZsdXNoaW5nIHdpbGwgbm90IG1ha2UgdGhlIGNodW5rIGZyZWVhYmxlLiAqLwotCQlpZiAobm9u ZnJlZSkgewotCQkJLyogQXZvaWQgYnVzeS13YWl0aW5nLiAqLwotCQkJb3NfdGhyZWFkX3NsZWVw KDEwMDAwMCk7Ci0JCX0gZWxzZSBpZiAoZGlydHkKLQkJCSAgICYmIGJ1Zl9mbHVzaF9MUlUoYnVm X3Bvb2wsIGRpcnR5KQotCQkJICAgICAgPT0gVUxJTlRfVU5ERUZJTkVEKSB7Ci0KLQkJCWJ1Zl9m bHVzaF93YWl0X2JhdGNoX2VuZChidWZfcG9vbCwgQlVGX0ZMVVNIX0xSVSk7Ci0JCX0KLQotCQln b3RvIHRyeV9hZ2FpbjsKLQl9Ci0KLQltYXhfc2l6ZSA9IG1heF9mcmVlX3NpemU7Ci0JbWF4X2No dW5rID0gbWF4X2ZyZWVfY2h1bms7Ci0KLQlidWZfcG9vbC0+b2xkX3Bvb2xfc2l6ZSA9IGJ1Zl9w b29sLT5jdXJyX3Bvb2xfc2l6ZTsKLQotCS8qIFJld3JpdGUgYnVmX3Bvb2wtPmNodW5rcy4gIENv cHkgZXZlcnl0aGluZyBidXQgbWF4X2NodW5rLiAqLwotCWNodW5rcyA9IG1lbV9hbGxvYygoYnVm X3Bvb2wtPm5fY2h1bmtzIC0gMSkgKiBzaXplb2YgKmNodW5rcyk7Ci0JbWVtY3B5KGNodW5rcywg YnVmX3Bvb2wtPmNodW5rcywKLQkgICAgICAgKG1heF9jaHVuayAtIGJ1Zl9wb29sLT5jaHVua3Mp ICogc2l6ZW9mICpjaHVua3MpOwotCW1lbWNweShjaHVua3MgKyAobWF4X2NodW5rIC0gYnVmX3Bv b2wtPmNodW5rcyksCi0JICAgICAgIG1heF9jaHVuayArIDEsCi0JICAgICAgIGJ1Zl9wb29sLT5j aHVua3MgKyBidWZfcG9vbC0+bl9jaHVua3MKLQkgICAgICAgLSAobWF4X2NodW5rICsgMSkpOwot CXV0X2EoYnVmX3Bvb2wtPmN1cnJfc2l6ZSA+IG1heF9jaHVuay0+c2l6ZSk7Ci0JYnVmX3Bvb2wt PmN1cnJfc2l6ZSAtPSBtYXhfY2h1bmstPnNpemU7Ci0JYnVmX3Bvb2wtPmN1cnJfcG9vbF9zaXpl ID0gYnVmX3Bvb2wtPmN1cnJfc2l6ZSAqIFVOSVZfUEFHRV9TSVpFOwotCWNodW5rX3NpemUgLT0g bWF4X2NodW5rLT5zaXplOwotCWJ1Zl9jaHVua19mcmVlKGJ1Zl9wb29sLCBtYXhfY2h1bmspOwot CW1lbV9mcmVlKGJ1Zl9wb29sLT5jaHVua3MpOwotCWJ1Zl9wb29sLT5jaHVua3MgPSBjaHVua3M7 Ci0JYnVmX3Bvb2wtPm5fY2h1bmtzLS07Ci0KLQkvKiBBbGxvdyBhIHNsYWNrIG9mIG9uZSBtZWdh Ynl0ZS4gKi8KLQlpZiAoY2h1bmtfc2l6ZSA+IDEwNDg1NzYgLyBVTklWX1BBR0VfU0laRSkgewot Ci0JCWdvdG8gc2hyaW5rX2FnYWluOwotCX0KLQlnb3RvIGZ1bmNfZXhpdDsKLQotZnVuY19kb25l OgotCWJ1Zl9wb29sLT5vbGRfcG9vbF9zaXplID0gYnVmX3Bvb2wtPmN1cnJfcG9vbF9zaXplOwot ZnVuY19leGl0OgotCWJ1Zl9wb29sX211dGV4X2V4aXQoYnVmX3Bvb2wpOwotCWJ0cl9zZWFyY2hf ZW5hYmxlKCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVNocmlua3MgdGhlIGJ1ZmZlciBwb29s LiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9zaHJpbmsoCi0vKj09PT09PT09PT09PSovCi0J dWxpbnQJY2h1bmtfc2l6ZSkJLyohPCBpbjogbnVtYmVyIG9mIHBhZ2VzIHRvIHJlbW92ZSAqLwot ewotCXVsaW50CWk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgc3J2X2J1Zl9wb29sX2luc3RhbmNlczsg aSsrKSB7Ci0JCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sOwotCQl1bGludAkJaW5zdGFuY2VfY2h1bmtf c2l6ZTsKLQotCQlpbnN0YW5jZV9jaHVua19zaXplID0gY2h1bmtfc2l6ZSAvIHNydl9idWZfcG9v bF9pbnN0YW5jZXM7Ci0JCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZnJvbV9hcnJheShpKTsKLQkJYnVm X3Bvb2xfc2hyaW5rX2luc3RhbmNlKGJ1Zl9wb29sLCBpbnN0YW5jZV9jaHVua19zaXplKTsKLQl9 Ci0KLQlidWZfcG9vbF9zZXRfc2l6ZXMoKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmVidWls ZCBidWZfcG9vbC0+cGFnZV9oYXNoIGZvciBhIGJ1ZmZlciBwb29sIGluc3RhbmNlLiAqLwotc3Rh dGljCi12b2lkCi1idWZfcG9vbF9wYWdlX2hhc2hfcmVidWlsZF9pbnN0YW5jZSgKLS8qPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sKQkJLyoh PCBpbjogYnVmZmVyIHBvb2wgaW5zdGFuY2UgKi8KLXsKLQl1bGludAkJaTsKLQlidWZfcGFnZV90 KgliOwotCWJ1Zl9jaHVua190KgljaHVuazsKLQl1bGludAkJbl9jaHVua3M7Ci0JaGFzaF90YWJs ZV90Kgl6aXBfaGFzaDsKLQloYXNoX3RhYmxlX3QqCXBhZ2VfaGFzaDsKLQotCWJ1Zl9wb29sX211 dGV4X2VudGVyKGJ1Zl9wb29sKTsKLQotCS8qIEZyZWUsIGNyZWF0ZSwgYW5kIHBvcHVsYXRlIHRo ZSBoYXNoIHRhYmxlLiAqLwotCWhhc2hfdGFibGVfZnJlZShidWZfcG9vbC0+cGFnZV9oYXNoKTsK LQlidWZfcG9vbC0+cGFnZV9oYXNoID0gcGFnZV9oYXNoID0gaGFzaF9jcmVhdGUoMiAqIGJ1Zl9w b29sLT5jdXJyX3NpemUpOwotCXppcF9oYXNoID0gaGFzaF9jcmVhdGUoMiAqIGJ1Zl9wb29sLT5j dXJyX3NpemUpOwotCi0JSEFTSF9NSUdSQVRFKGJ1Zl9wb29sLT56aXBfaGFzaCwgemlwX2hhc2gs IGJ1Zl9wYWdlX3QsIGhhc2gsCi0JCSAgICAgQlVGX1BPT0xfWklQX0ZPTERfQlBBR0UpOwotCi0J aGFzaF90YWJsZV9mcmVlKGJ1Zl9wb29sLT56aXBfaGFzaCk7Ci0JYnVmX3Bvb2wtPnppcF9oYXNo ID0gemlwX2hhc2g7Ci0KLQkvKiBJbnNlcnQgdGhlIHVuY29tcHJlc3NlZCBmaWxlIHBhZ2VzIHRv IGJ1Zl9wb29sLT5wYWdlX2hhc2guICovCi0KLQljaHVuayA9IGJ1Zl9wb29sLT5jaHVua3M7Ci0J bl9jaHVua3MgPSBidWZfcG9vbC0+bl9jaHVua3M7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbl9jaHVu a3M7IGkrKywgY2h1bmsrKykgewotCQl1bGludAkJajsKLQkJYnVmX2Jsb2NrX3QqCWJsb2NrID0g Y2h1bmstPmJsb2NrczsKLQotCQlmb3IgKGogPSAwOyBqIDwgY2h1bmstPnNpemU7IGorKywgYmxv Y2srKykgewotCQkJaWYgKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spCi0JCQkgICAgPT0gQlVG X0JMT0NLX0ZJTEVfUEFHRSkgewotCQkJCXV0X2FkKCFibG9jay0+cGFnZS5pbl96aXBfaGFzaCk7 Ci0JCQkJdXRfYWQoYmxvY2stPnBhZ2UuaW5fcGFnZV9oYXNoKTsKLQotCQkJCUhBU0hfSU5TRVJU KGJ1Zl9wYWdlX3QsIGhhc2gsIHBhZ2VfaGFzaCwKLQkJCQkJICAgIGJ1Zl9wYWdlX2FkZHJlc3Nf Zm9sZCgKLQkJCQkJCSAgICBibG9jay0+cGFnZS5zcGFjZSwKLQkJCQkJCSAgICBibG9jay0+cGFn ZS5vZmZzZXQpLAotCQkJCQkgICAgJmJsb2NrLT5wYWdlKTsKLQkJCX0KLQkJfQotCX0KLQotCS8q IEluc2VydCB0aGUgY29tcHJlc3NlZC1vbmx5IHBhZ2VzIHRvIGJ1Zl9wb29sLT5wYWdlX2hhc2gu Ci0JQWxsIHN1Y2ggYmxvY2tzIGFyZSBlaXRoZXIgaW4gYnVmX3Bvb2wtPnppcF9jbGVhbiBvcgot CWluIGJ1Zl9wb29sLT5mbHVzaF9saXN0LiAqLwotCi0JZm9yIChiID0gVVRfTElTVF9HRVRfRklS U1QoYnVmX3Bvb2wtPnppcF9jbGVhbik7IGI7Ci0JICAgICBiID0gVVRfTElTVF9HRVRfTkVYVChs aXN0LCBiKSkgewotCQl1dF9hKGJ1Zl9wYWdlX2dldF9zdGF0ZShiKSA9PSBCVUZfQkxPQ0tfWklQ X1BBR0UpOwotCQl1dF9hZCghYi0+aW5fZmx1c2hfbGlzdCk7Ci0JCXV0X2FkKGItPmluX0xSVV9s aXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFnZV9oYXNoKTsKLQkJdXRfYWQoIWItPmluX3ppcF9oYXNo KTsKLQotCQlIQVNIX0lOU0VSVChidWZfcGFnZV90LCBoYXNoLCBwYWdlX2hhc2gsCi0JCQkgICAg YnVmX3BhZ2VfYWRkcmVzc19mb2xkKGItPnNwYWNlLCBiLT5vZmZzZXQpLCBiKTsKLQl9Ci0KLQli dWZfZmx1c2hfbGlzdF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0JZm9yIChiID0gVVRfTElTVF9H RVRfRklSU1QoYnVmX3Bvb2wtPmZsdXNoX2xpc3QpOyBiOwotCSAgICAgYiA9IFVUX0xJU1RfR0VU X05FWFQobGlzdCwgYikpIHsKLQkJdXRfYWQoYi0+aW5fZmx1c2hfbGlzdCk7Ci0JCXV0X2FkKGIt PmluX0xSVV9saXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFnZV9oYXNoKTsKLQkJdXRfYWQoIWItPmlu X3ppcF9oYXNoKTsKLQotCQlzd2l0Y2ggKGJ1Zl9wYWdlX2dldF9zdGF0ZShiKSkgewotCQljYXNl IEJVRl9CTE9DS19aSVBfRElSVFk6Ci0JCQlIQVNIX0lOU0VSVChidWZfcGFnZV90LCBoYXNoLCBw YWdlX2hhc2gsCi0JCQkJICAgIGJ1Zl9wYWdlX2FkZHJlc3NfZm9sZChiLT5zcGFjZSwKLQkJCQkJ CQkgIGItPm9mZnNldCksIGIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgQlVGX0JMT0NLX0ZJTEVfUEFH RToKLQkJCS8qIHVuY29tcHJlc3NlZCBwYWdlICovCi0JCQlicmVhazsKLQkJY2FzZSBCVUZfQkxP Q0tfWklQX0ZSRUU6Ci0JCWNhc2UgQlVGX0JMT0NLX1pJUF9QQUdFOgotCQljYXNlIEJVRl9CTE9D S19OT1RfVVNFRDoKLQkJY2FzZSBCVUZfQkxPQ0tfUkVBRFlfRk9SX1VTRToKLQkJY2FzZSBCVUZf QkxPQ0tfTUVNT1JZOgotCQljYXNlIEJVRl9CTE9DS19SRU1PVkVfSEFTSDoKLQkJCXV0X2Vycm9y OwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQlidWZfZmx1c2hfbGlzdF9tdXRleF9leGl0KGJ1Zl9w b29sKTsKLQlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKLX0KLQotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiBEZXRlcm1pbmUgaWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZlciBwb29sIHdh dGNoLgogQHJldHVybglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBvb2wgd2F0Y2gs IEZBTFNFIGlmIG5vdCAqLwogVU5JVl9JTlRFUk4KQEAgLTE5MTMsMTIzICsxNTcyLDYgQEAgYnVm X3Bvb2xfd2F0Y2hfc2V0KAogCXJldHVybihOVUxMKTsKIH0KIAotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot UmVidWlsZCBidWZfcG9vbC0+cGFnZV9oYXNoLiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9w YWdlX2hhc2hfcmVidWlsZCh2b2lkKQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K LXsKLQl1bGludCAgIGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgc3J2X2J1Zl9wb29sX2luc3RhbmNl czsgaSsrKSB7Ci0JCWJ1Zl9wb29sX3BhZ2VfaGFzaF9yZWJ1aWxkX2luc3RhbmNlKGJ1Zl9wb29s X2Zyb21fYXJyYXkoaSkpOwotCX0KLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotSW5jcmVhc2UgdGhl IGJ1ZmZlciBwb29sIHNpemUgb2Ygb25lIGJ1ZmZlciBwb29sIGluc3RhbmNlLiAqLwotc3RhdGlj Ci12b2lkCi1idWZfcG9vbF9pbmNyZWFzZV9pbnN0YW5jZSgKLS8qPT09PT09PT09PT09PT09PT09 PT09PT0qLwotCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sLAkvKiE8IGluOiBidWZmZXIgcG9vbCBpbnN0 YW5lICovCi0JdWxpbnQJCWNoYW5nZV9zaXplKQkvKiE8IGluOiBuZXcgc2l6ZSBvZiB0aGUgcG9v bCAqLwotewotCWJ1Zl9jaHVua190KgljaHVua3M7Ci0JYnVmX2NodW5rX3QqCWNodW5rOwotCi0J YnVmX3Bvb2xfbXV0ZXhfZW50ZXIoYnVmX3Bvb2wpOwotCWNodW5rcyA9IG1lbV9hbGxvYygoYnVm X3Bvb2wtPm5fY2h1bmtzICsgMSkgKiBzaXplb2YgKmNodW5rcyk7Ci0KLQltZW1jcHkoY2h1bmtz LCBidWZfcG9vbC0+Y2h1bmtzLCBidWZfcG9vbC0+bl9jaHVua3MgKiBzaXplb2YgKmNodW5rcyk7 Ci0KLQljaHVuayA9ICZjaHVua3NbYnVmX3Bvb2wtPm5fY2h1bmtzXTsKLQotCWlmICghYnVmX2No dW5rX2luaXQoYnVmX3Bvb2wsIGNodW5rLCBjaGFuZ2Vfc2l6ZSkpIHsKLQkJbWVtX2ZyZWUoY2h1 bmtzKTsKLQl9IGVsc2UgewotCQlidWZfcG9vbC0+b2xkX3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5j dXJyX3Bvb2xfc2l6ZTsKLQkJYnVmX3Bvb2wtPmN1cnJfc2l6ZSArPSBjaHVuay0+c2l6ZTsKLQkJ YnVmX3Bvb2wtPmN1cnJfcG9vbF9zaXplID0gYnVmX3Bvb2wtPmN1cnJfc2l6ZSAqIFVOSVZfUEFH RV9TSVpFOwotCQltZW1fZnJlZShidWZfcG9vbC0+Y2h1bmtzKTsKLQkJYnVmX3Bvb2wtPmNodW5r cyA9IGNodW5rczsKLQkJYnVmX3Bvb2wtPm5fY2h1bmtzKys7Ci0JfQotCi0JYnVmX3Bvb2xfbXV0 ZXhfZXhpdChidWZfcG9vbCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUluY3JlYXNlIHRoZSBi dWZmZXIgcG9vbCBzaXplLiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9pbmNyZWFzZSgKLS8q PT09PT09PT09PT09PT0qLwotCXVsaW50ICAgY2hhbmdlX3NpemUpCi17Ci0JdWxpbnQgICBpOwot Ci0JZm9yIChpID0gMDsgaSA8IHNydl9idWZfcG9vbF9pbnN0YW5jZXM7IGkrKykgewotCQlidWZf cG9vbF9pbmNyZWFzZV9pbnN0YW5jZSgKLQkJCWJ1Zl9wb29sX2Zyb21fYXJyYXkoaSksCi0JCQlj aGFuZ2Vfc2l6ZSAvIHNydl9idWZfcG9vbF9pbnN0YW5jZXMpOwotCX0KLQotCWJ1Zl9wb29sX3Nl dF9zaXplcygpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXNpemVzIHRoZSBidWZmZXIgcG9v bC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idWZfcG9vbF9yZXNpemUodm9pZCkKLS8qPT09PT09 PT09PT09PT09PT0qLwotewotCXVsaW50CWNoYW5nZV9zaXplOwotCXVsaW50CW1pbl9jaGFuZ2Vf c2l6ZSA9IDEwNDg1NzYgKiBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzOwotCi0JYnVmX3Bvb2xfbXV0 ZXhfZW50ZXJfYWxsKCk7Ci0KLSAgCWlmIChzcnZfYnVmX3Bvb2xfb2xkX3NpemUgPT0gc3J2X2J1 Zl9wb29sX3NpemUpIHsKLQotCQlidWZfcG9vbF9tdXRleF9leGl0X2FsbCgpOwotCi0gIAkJcmV0 dXJuOwotCi0gIAl9IGVsc2UgaWYgKHNydl9idWZfcG9vbF9jdXJyX3NpemUgKyBtaW5fY2hhbmdl X3NpemUKLQkJICAgPiBzcnZfYnVmX3Bvb2xfc2l6ZSkgewotCi0JCWNoYW5nZV9zaXplID0gKHNy dl9idWZfcG9vbF9jdXJyX3NpemUgLSBzcnZfYnVmX3Bvb2xfc2l6ZSkKLQkJCSAgICAvIFVOSVZf UEFHRV9TSVpFOwotCi0JCWJ1Zl9wb29sX211dGV4X2V4aXRfYWxsKCk7Ci0KLSAgCQkvKiBEaXNh YmxlIGFkYXB0aXZlIGhhc2ggaW5kZXhlcyBhbmQgZW1wdHkgdGhlIGluZGV4Ci0gIAkJaW4gb3Jk ZXIgdG8gZnJlZSB1cCBtZW1vcnkgaW4gdGhlIGJ1ZmZlciBwb29sIGNodW5rcy4gKi8KLQkJYnVm X3Bvb2xfc2hyaW5rKGNoYW5nZV9zaXplKTsKLQotCX0gZWxzZSBpZiAoc3J2X2J1Zl9wb29sX2N1 cnJfc2l6ZSArIG1pbl9jaGFuZ2Vfc2l6ZQotCQkgICA8IHNydl9idWZfcG9vbF9zaXplKSB7Ci0K LSAgCQkvKiBFbmxhcmdlIHRoZSBidWZmZXIgcG9vbCBieSBhdCBsZWFzdCBvbmUgbWVnYWJ5dGUg Ki8KLQotCQljaGFuZ2Vfc2l6ZSA9IHNydl9idWZfcG9vbF9zaXplIC0gc3J2X2J1Zl9wb29sX2N1 cnJfc2l6ZTsKLQotCQlidWZfcG9vbF9tdXRleF9leGl0X2FsbCgpOwotCi0JCWJ1Zl9wb29sX2lu Y3JlYXNlKGNoYW5nZV9zaXplKTsKLQl9IGVsc2UgewotCQlzcnZfYnVmX3Bvb2xfc2l6ZSA9IHNy dl9idWZfcG9vbF9vbGRfc2l6ZTsKLQotCQlidWZfcG9vbF9tdXRleF9leGl0X2FsbCgpOwotCi0J CXJldHVybjsKLQl9Ci0KLSAgCWJ1Zl9wb29sX3BhZ2VfaGFzaF9yZWJ1aWxkKCk7Ci19Ci0KIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgogUmVtb3ZlIHRoZSBzZW50aW5lbCBibG9jayBmb3IgdGhlIHdhdGNoIGJlZm9y ZSByZXBsYWNpbmcgaXQgd2l0aCBhIHJlYWwgYmxvY2suCiBidWZfcGFnZV93YXRjaF9jbGVhcigp IG9yIGJ1Zl9wYWdlX3dhdGNoX29jY3VycmVkKCkgd2lsbCBub3RpY2UgdGhhdApAQCAtMjk1MSw4 ICsyNDkzLDEwIEBAIHdhaXRfdW50aWxfdW5maXhlZDoKIAogCQlpZiAoYnVmX3BhZ2VfZ2V0X3N0 YXRlKCZibG9jay0+cGFnZSkKIAkJICAgID09IEJVRl9CTE9DS19aSVBfUEFHRSkgeworI2lmIGRl ZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJCQlVVF9MSVNUX1JF TU9WRShsaXN0LCBidWZfcG9vbC0+emlwX2NsZWFuLAogCQkJCSAgICAgICAmYmxvY2stPnBhZ2Up OworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KIAkJCXV0X2FkKCFi bG9jay0+cGFnZS5pbl9mbHVzaF9saXN0KTsKIAkJfSBlbHNlIHsKIAkJCS8qIFJlbG9jYXRlIGJ1 Zl9wb29sLT5mbHVzaF9saXN0LiAqLwpAQCAtMzc2NCw3ICszMzA4LDkgQEAgZXJyX2V4aXQ6CiAK IAkJLyogVGhlIGJsb2NrIG11c3QgYmUgcHV0IHRvIHRoZSBMUlUgbGlzdCwgdG8gdGhlIG9sZCBi bG9ja3MgKi8KIAkJYnVmX0xSVV9hZGRfYmxvY2soYnBhZ2UsIFRSVUUvKiB0byBvbGQgYmxvY2tz ICovKTsKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JVRl9ERUJVRwog CQlidWZfTFJVX2luc2VydF96aXBfY2xlYW4oYnBhZ2UpOworI2VuZGlmIC8qIFVOSVZfREVCVUcg fHwgVU5JVl9CVUZfREVCVUcgKi8KIAogCQlidWZfcGFnZV9zZXRfaW9fZml4KGJwYWdlLCBCVUZf SU9fUkVBRCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYw Zmx1LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDYxNjEyMTMyNC1oemRibWQxMHh5Z2NvaHAyCkBAIC0xLDYgKzEsNiBAQAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMCwgSW5ub2Jhc2UgT3ku IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTI0LDcgKzUyNCw5IEBAIGJ1Zl9m bHVzaF9yZW1vdmUoCiAJY2FzZSBCVUZfQkxPQ0tfWklQX0RJUlRZOgogCQlidWZfcGFnZV9zZXRf c3RhdGUoYnBhZ2UsIEJVRl9CTE9DS19aSVBfUEFHRSk7CiAJCVVUX0xJU1RfUkVNT1ZFKGxpc3Qs IGJ1Zl9wb29sLT5mbHVzaF9saXN0LCBicGFnZSk7CisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8 IGRlZmluZWQgVU5JVl9CVUZfREVCVUcKIAkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKGJwYWdl KTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJCWJyZWFrOwog CWNhc2UgQlVGX0JMT0NLX0ZJTEVfUEFHRToKIAkJVVRfTElTVF9SRU1PVkUobGlzdCwgYnVmX3Bv b2wtPmZsdXNoX2xpc3QsIGJwYWdlKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwbHJ1LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25o NWtsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMTMyNC1oemRibWQxMHh5Z2NvaHAyCkBAIC0xLDYgKzEs NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMCwg SW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIw MTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAK IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTI1LDYgKzUy NSw3IEBAIGJ1Zl9MUlVfaW52YWxpZGF0ZV90YWJsZXNwYWNlKAogCX0KIH0KIAorI2lmIGRlZmlu ZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBJbnNlcnQgYSBjb21wcmVzc2VkIGJsb2NrIGludG8gYnVmX3Bvb2wtPnppcF9jbGVhbiBpbiB0 aGUgTFJVIG9yZGVyLiAqLwogVU5JVl9JTlRFUk4KQEAgLTU1Nyw2ICs1NTgsNyBAQCBidWZfTFJV X2luc2VydF96aXBfY2xlYW4oCiAJCVVUX0xJU1RfQUREX0ZJUlNUKGxpc3QsIGJ1Zl9wb29sLT56 aXBfY2xlYW4sIGJwYWdlKTsKIAl9CiB9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JV Rl9ERUJVRyAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVHJ5IHRvIGZyZWUgYW4gdW5jb21wcmVzc2Vk IHBhZ2Ugb2YgYSBjb21wcmVzc2VkIGJsb2NrIGZyb20gdGhlIHVuemlwCkBAIC0xNTk4LDcgKzE2 MDAsOSBAQCBhbGxvYzoKIAkJCX0KIAogCQkJaWYgKGItPnN0YXRlID09IEJVRl9CTE9DS19aSVBf UEFHRSkgeworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVH CiAJCQkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKGIpOworI2VuZGlmIC8qIFVOSVZfREVCVUcg fHwgVU5JVl9CVUZfREVCVUcgKi8KIAkJCX0gZWxzZSB7CiAJCQkJLyogUmVsb2NhdGUgb24gYnVm X3Bvb2wtPmZsdXNoX2xpc3QuICovCiAJCQkJYnVmX2ZsdXNoX3JlbG9jYXRlX29uX2ZsdXNoX2xp c3QoYnBhZ2UsIGIpOwpAQCAtMTg4NCw3ICsxODg4LDkgQEAgYnVmX0xSVV9ibG9ja19yZW1vdmVf aGFzaGVkX3BhZ2UoCiAJCXV0X2EoYnBhZ2UtPnppcC5kYXRhKTsKIAkJdXRfYShidWZfcGFnZV9n ZXRfemlwX3NpemUoYnBhZ2UpKTsKIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQlVGX0RFQlVHCiAJCVVUX0xJU1RfUkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT56aXBfY2xl YW4sIGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAK IAkJbXV0ZXhfZXhpdCgmYnVmX3Bvb2wtPnppcF9tdXRleCk7CiAJCWJ1Zl9wb29sX211dGV4X2V4 aXRfZm9yYmlkKGJ1Zl9wb29sKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvYnVmMGJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1 Zi5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBk cmFnbmg1a2wKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMTMyNC1oemRibWQxMHh5Z2NvaHAyCkBA IC0yNDYsMTIgKzI0Niw2IEBAIGJ1Zl9yZWxvY2F0ZSgKIAkJCQlCVUZfQkxPQ0tfWklQX0RJUlRZ IG9yIEJVRl9CTE9DS19aSVBfUEFHRSAqLwogCWJ1Zl9wYWdlX3QqCWRwYWdlKQkvKiE8IGluL291 dDogZGVzdGluYXRpb24gY29udHJvbCBibG9jayAqLwogCV9fYXR0cmlidXRlX18oKG5vbm51bGwp KTsKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLVJlc2l6ZXMgdGhlIGJ1ZmZlciBwb29sLiAqLwotVU5JVl9J TlRFUk4KLXZvaWQKLWJ1Zl9wb29sX3Jlc2l6ZSh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT0q LwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIGN1cnJlbnQgc2l6ZSBvZiBidWZmZXIgYnVm X3Bvb2wgaW4gYnl0ZXMuCiBAcmV0dXJuCXNpemUgaW4gYnl0ZXMgKi8KQEAgLTEyMjEsNyArMTIx NSw3IEBAIHVsaW50CiBidWZfZ2V0X2ZyZWVfbGlzdF9sZW4odm9pZCk7CiAvKj09PT09PT09PT09 PT09PT09PT09PT09Ki8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1p bmUgaWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZlciBwb29sIHdhdGNoLgogQHJl dHVybglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBvb2wgd2F0Y2gsIEZBTFNFIGlm IG5vdCAqLwogVU5JVl9JTlRFUk4KQEAgLTE3NTcsOCArMTc1MSwxMCBAQCBzdHJ1Y3QgYnVmX3Bv b2xfc3RydWN0ewogCWZyYW1lcyBhbmQgYnVmX3BhZ2VfdCBkZXNjcmlwdG9ycyBvZiBibG9ja3Mg dGhhdCBleGlzdAogCWluIHRoZSBidWZmZXIgcG9vbCBvbmx5IGluIGNvbXByZXNzZWQgZm9ybS4g Ki8KIAkvKiBAeyAqLworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVG X0RFQlVHCiAJVVRfTElTVF9CQVNFX05PREVfVChidWZfcGFnZV90KQl6aXBfY2xlYW47CiAJCQkJ CS8qITwgdW5tb2RpZmllZCBjb21wcmVzc2VkIHBhZ2VzICovCisjZW5kaWYgLyogVU5JVl9ERUJV RyB8fCBVTklWX0JVRl9ERUJVRyAqLwogCVVUX0xJU1RfQkFTRV9OT0RFX1QoYnVmX3BhZ2VfdCkg emlwX2ZyZWVbQlVGX0JVRERZX1NJWkVTXTsKIAkJCQkJLyohPCBidWRkeSBmcmVlIGxpc3RzICov CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBscnUuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDYxNjEyMTMyNC1oemRibWQxMHh5Z2NvaHAyCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAwOSwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtODUsNiArODUsNyBAQCB2b2lk CiBidWZfTFJVX2ludmFsaWRhdGVfdGFibGVzcGFjZSgKIC8qPT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwogCXVsaW50CWlkKTsJLyohPCBpbjogc3BhY2UgaWQgKi8KKyNpZiBkZWZpbmVkIFVO SVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JVRl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogSW5z ZXJ0IGEgY29tcHJlc3NlZCBibG9jayBpbnRvIGJ1Zl9wb29sLT56aXBfY2xlYW4gaW4gdGhlIExS VSBvcmRlci4gKi8KIFVOSVZfSU5URVJOCkBAIC05Miw2ICs5Myw3IEBAIHZvaWQKIGJ1Zl9MUlVf aW5zZXJ0X3ppcF9jbGVhbigKIC8qPT09PT09PT09PT09PT09PT09PT09Ki8KIAlidWZfcGFnZV90 KglicGFnZSk7CS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGJsb2NrIGluIHF1ZXN0aW9uICovCisj ZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJVRyAqLwogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogVHJ5IHRvIGZyZWUgYSBibG9jay4gIElmIGJwYWdlIGlzIGEgZGVzY3JpcHRvciBvZiBhIGNv bXByZXNzZWQtb25seQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9w YWdlMHppcC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNjE2MTIxMzI0LWh6ZGJtZDEweHlnY29ocDIKQEAgLTEsNiArMSw2IEBA CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA5LCBJbm5v YmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMjAwNSwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0zOTEyLDE3ICszOTEy LDkgQEAgcGFnZV96aXBfd3JpdGVfdHJ4X2lkX2FuZF9yb2xsX3B0cigKIAlVTklWX01FTV9BU1NF UlRfUlcocGFnZV96aXAtPmRhdGEsIHBhZ2VfemlwX2dldF9zaXplKHBhZ2VfemlwKSk7CiB9CiAK LSNpZmRlZiBVTklWX1pJUF9ERUJVRwotLyoqIFNldCB0aGlzIHZhcmlhYmxlIGluIGEgZGVidWdn ZXIgdG8gZGlzYWJsZSBwYWdlX3ppcF9jbGVhcl9yZWMoKS4KLVRoZSBvbmx5IG9ic2VydmFibGUg ZWZmZWN0IHNob3VsZCBiZSB0aGUgY29tcHJlc3Npb24gcmF0aW8gZHVlIHRvCi1kZWxldGVkIHJl Y29yZHMgbm90IGJlaW5nIHplcm9lZCBvdXQuICBJbiByYXJlIGNhc2VzLCB0aGVyZSBjYW4gYmUK LXBhZ2VfemlwX3ZhbGlkYXRlKCkgZmFpbHVyZXMgb24gdGhlIG5vZGVfcHRyLCB0cnhfaWQgYW5k IHJvbGxfcHRyCi1jb2x1bW5zIGlmIHRoZSBzcGFjZSBpcyByZWFsbG9jYXRlZCBmb3IgYSBzbWFs bGVyIHJlY29yZC4gKi8KLVVOSVZfSU5URVJOIGlib29sCXBhZ2VfemlwX2NsZWFyX3JlY19kaXNh YmxlOwotI2VuZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCi0KIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot Q2xlYXIgYW4gYXJlYSBvbiB0aGUgdW5jb21wcmVzc2VkIGFuZCBjb21wcmVzc2VkIHBhZ2UsIGlm IHBvc3NpYmxlLiAqLworQ2xlYXIgYW4gYXJlYSBvbiB0aGUgdW5jb21wcmVzc2VkIGFuZCBjb21w cmVzc2VkIHBhZ2UuCitEbyBub3QgY2xlYXIgdGhlIGRhdGEgcGF5bG9hZCwgYXMgdGhhdCB3b3Vs ZCBncm93IHRoZSBtb2RpZmljYXRpb24gbG9nLiAqLwogc3RhdGljCiB2b2lkCiBwYWdlX3ppcF9j bGVhcl9yZWMoCkBAIC0zOTM0LDYgKzM5MjYsOSBAQCBwYWdlX3ppcF9jbGVhcl9yZWMoCiB7CiAJ dWxpbnQJaGVhcF9ubzsKIAlwYWdlX3QqCXBhZ2UJPSBwYWdlX2FsaWduKHJlYyk7CisJYnl0ZSoJ c3RvcmFnZTsKKwlieXRlKglmaWVsZDsKKwl1bGludAlsZW47CiAJLyogcGFnZV96aXBfdmFsaWRh dGUoKSB3b3VsZCBmYWlsIGhlcmUgaWYgYSByZWNvcmQKIAljb250YWluaW5nIGV4dGVybmFsbHkg c3RvcmVkIGNvbHVtbnMgaXMgYmVpbmcgZGVsZXRlZC4gKi8KIAl1dF9hZChyZWNfb2Zmc192YWxp ZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CkBAIC0zOTQ5LDYwICszOTQ0LDQ2IEBAIHBhZ2Vf emlwX2NsZWFyX3JlYygKIAlVTklWX01FTV9BU1NFUlRfUlcocmVjIC0gcmVjX29mZnNfZXh0cmFf c2l6ZShvZmZzZXRzKSwKIAkJCSAgIHJlY19vZmZzX2V4dHJhX3NpemUob2Zmc2V0cykpOwogCi0J aWYgKAotI2lmZGVmIFVOSVZfWklQX0RFQlVHCi0JICAgICFwYWdlX3ppcF9jbGVhcl9yZWNfZGlz YWJsZSAmJgotI2VuZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCi0JICAgIHBhZ2VfemlwLT5tX2Vu ZAotCSAgICArIDEgKyAoKGhlYXBfbm8gLSAxKSA+PSA2NCkvKiBzaXplIG9mIHRoZSBsb2cgZW50 cnkgKi8KLQkgICAgKyBwYWdlX3ppcF9nZXRfdHJhaWxlcl9sZW4ocGFnZV96aXAsCi0JCQkJICAg ICAgIGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpLCBOVUxMKQotCSAgICA8IHBhZ2VfemlwX2dl dF9zaXplKHBhZ2VfemlwKSkgewotCQlieXRlKglkYXRhOwotCi0JCS8qIENsZWFyIG9ubHkgdGhl IGRhdGEgYnl0ZXMsIGJlY2F1c2UgdGhlIGFsbG9jYXRvciBhbmQKLQkJdGhlIGRlY29tcHJlc3Nv ciBkZXBlbmQgb24gdGhlIGV4dHJhIGJ5dGVzLiAqLwotCQltZW1zZXQocmVjLCAwLCByZWNfb2Zm c19kYXRhX3NpemUob2Zmc2V0cykpOwotCi0JCWlmICghcGFnZV9pc19sZWFmKHBhZ2UpKSB7Ci0J CQkvKiBDbGVhciBub2RlX3B0ciBvbiB0aGUgY29tcHJlc3NlZCBwYWdlLiAqLwotCQkJYnl0ZSoJ c3RvcmFnZQk9IHBhZ2VfemlwLT5kYXRhCi0JCQkJKyBwYWdlX3ppcF9nZXRfc2l6ZShwYWdlX3pp cCkKLQkJCQktIChwYWdlX2Rpcl9nZXRfbl9oZWFwKHBhZ2UpCi0JCQkJICAgLSBQQUdFX0hFQVBf Tk9fVVNFUl9MT1cpCi0JCQkJKiBQQUdFX1pJUF9ESVJfU0xPVF9TSVpFOwotCi0JCQltZW1zZXQo c3RvcmFnZSAtIChoZWFwX25vIC0gMSkgKiBSRUNfTk9ERV9QVFJfU0laRSwKLQkJCSAgICAgICAw LCBSRUNfTk9ERV9QVFJfU0laRSk7Ci0JCX0gZWxzZSBpZiAoZGljdF9pbmRleF9pc19jbHVzdChp bmRleCkpIHsKLQkJCS8qIENsZWFyIHRyeF9pZCBhbmQgcm9sbF9wdHIgb24gdGhlIGNvbXByZXNz ZWQgcGFnZS4gKi8KLQkJCWJ5dGUqCXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQotCQkJCSsgcGFn ZV96aXBfZ2V0X3NpemUocGFnZV96aXApCi0JCQkJLSAocGFnZV9kaXJfZ2V0X25faGVhcChwYWdl KQotCQkJCSAgIC0gUEFHRV9IRUFQX05PX1VTRVJfTE9XKQotCQkJCSogUEFHRV9aSVBfRElSX1NM T1RfU0laRTsKLQotCQkJbWVtc2V0KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpCi0JCQkgICAgICAg KiAoREFUQV9UUlhfSURfTEVOICsgREFUQV9ST0xMX1BUUl9MRU4pLAotCQkJICAgICAgIDAsIERB VEFfVFJYX0lEX0xFTiArIERBVEFfUk9MTF9QVFJfTEVOKTsKLQkJfQorCWlmICghcGFnZV9pc19s ZWFmKHBhZ2UpKSB7CisJCS8qIENsZWFyIG5vZGVfcHRyLiBPbiB0aGUgY29tcHJlc3NlZCBwYWdl LAorCQl0aGVyZSBpcyBhbiBhcnJheSBvZiBub2RlX3B0ciBpbW1lZGlhdGVseSBiZWZvcmUgdGhl CisJCWRlbnNlIHBhZ2UgZGlyZWN0b3J5LCBhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIHBhZ2UuICov CisJCXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQorCQkJKyBwYWdlX3ppcF9nZXRfc2l6ZShwYWdl X3ppcCkKKwkJCS0gKHBhZ2VfZGlyX2dldF9uX2hlYXAocGFnZSkKKwkJCSAgIC0gUEFHRV9IRUFQ X05PX1VTRVJfTE9XKQorCQkJKiBQQUdFX1pJUF9ESVJfU0xPVF9TSVpFOworCQl1dF9hZChkaWN0 X2luZGV4X2dldF9uX3VuaXF1ZV9pbl90cmVlKGluZGV4KSA9PQorCQkgICAgICByZWNfb2Zmc19u X2ZpZWxkcyhvZmZzZXRzKSAtIDEpOworCQlmaWVsZAk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywg b2Zmc2V0cywKKwkJCQkJICAgIHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpIC0gMSwKKwkJCQkJ ICAgICZsZW4pOworCQl1dF9hZChsZW4gPT0gUkVDX05PREVfUFRSX1NJWkUpOwogCi0JCS8qIExv ZyB0aGF0IHRoZSBkYXRhIHdhcyB6ZXJvZWQgb3V0LiAqLwotCQlkYXRhID0gcGFnZV96aXAtPmRh dGEgKyBwYWdlX3ppcC0+bV9lbmQ7Ci0JCXV0X2FkKCEqZGF0YSk7Ci0JCWlmIChVTklWX1VOTElL RUxZKGhlYXBfbm8gLSAxID49IDY0KSkgewotCQkJKmRhdGErKyA9IChieXRlKSAoMHg4MCB8ICho ZWFwX25vIC0gMSkgPj4gNyk7Ci0JCQl1dF9hZCghKmRhdGEpOwotCQl9Ci0JCSpkYXRhKysgPSAo Ynl0ZSkgKChoZWFwX25vIC0gMSkgPDwgMSB8IDEpOwotCQl1dF9hZCghKmRhdGEpOwotCQl1dF9h ZCgodWxpbnQpIChkYXRhIC0gcGFnZV96aXAtPmRhdGEpCi0JCSAgICAgIDwgcGFnZV96aXBfZ2V0 X3NpemUocGFnZV96aXApKTsKLQkJcGFnZV96aXAtPm1fZW5kID0gZGF0YSAtIHBhZ2VfemlwLT5k YXRhOwotCQlwYWdlX3ppcC0+bV9ub25lbXB0eSA9IFRSVUU7Ci0JfSBlbHNlIGlmIChwYWdlX2lz X2xlYWYocGFnZSkgJiYgZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKLQkJLyogRG8gbm90 IGNsZWFyIHRoZSByZWNvcmQsIGJlY2F1c2UgdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZQotCQl0 byBsb2cgdGhlIG9wZXJhdGlvbi4gKi8KKwkJdXRfYWQoIXJlY19vZmZzX2FueV9leHRlcm4ob2Zm c2V0cykpOworCQltZW1zZXQoZmllbGQsIDAsIFJFQ19OT0RFX1BUUl9TSVpFKTsKKwkJbWVtc2V0 KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpICogUkVDX05PREVfUFRSX1NJWkUsCisJCSAgICAgICAw LCBSRUNfTk9ERV9QVFJfU0laRSk7CisJfSBlbHNlIGlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGlu ZGV4KSkgeworCQkvKiBDbGVhciB0cnhfaWQgYW5kIHJvbGxfcHRyLiBPbiB0aGUgY29tcHJlc3Nl ZCBwYWdlLAorCQl0aGVyZSBpcyBhbiBhcnJheSBvZiB0aGVzZSBmaWVsZHMgaW1tZWRpYXRlbHkg YmVmb3JlIHRoZQorCQlkZW5zZSBwYWdlIGRpcmVjdG9yeSwgYXQgdGhlIHZlcnkgZW5kIG9mIHRo ZSBwYWdlLiAqLworCQljb25zdCB1bGludAl0cnhfaWRfcG9zCisJCQk9IGRpY3RfY29sX2dldF9j bHVzdF9wb3MoCisJCQlkaWN0X3RhYmxlX2dldF9zeXNfY29sKAorCQkJCWluZGV4LT50YWJsZSwg REFUQV9UUlhfSUQpLCBpbmRleCk7CisJCXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQorCQkJKyBw YWdlX3ppcF9nZXRfc2l6ZShwYWdlX3ppcCkKKwkJCS0gKHBhZ2VfZGlyX2dldF9uX2hlYXAocGFn ZSkKKwkJCSAgIC0gUEFHRV9IRUFQX05PX1VTRVJfTE9XKQorCQkJKiBQQUdFX1pJUF9ESVJfU0xP VF9TSVpFOworCQlmaWVsZAk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgdHJ4X2lk X3BvcywgJmxlbik7CisJCXV0X2FkKGxlbiA9PSBEQVRBX1RSWF9JRF9MRU4pOworCisJCW1lbXNl dChmaWVsZCwgMCwgREFUQV9UUlhfSURfTEVOICsgREFUQV9ST0xMX1BUUl9MRU4pOworCQltZW1z ZXQoc3RvcmFnZSAtIChoZWFwX25vIC0gMSkKKwkJICAgICAgICogKERBVEFfVFJYX0lEX0xFTiAr IERBVEFfUk9MTF9QVFJfTEVOKSwKKwkJICAgICAgIDAsIERBVEFfVFJYX0lEX0xFTiArIERBVEFf Uk9MTF9QVFJfTEVOKTsKIAogCQlpZiAocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgewog CQkJdWxpbnQJaTsKQEAgLTQwMTEsMTUgKzM5OTIsMTggQEAgcGFnZV96aXBfY2xlYXJfcmVjKAog CQkJCS8qIENsZWFyIGFsbCBCTE9CIHBvaW50ZXJzIGluIG9yZGVyIHRvIG1ha2UKIAkJCQlwYWdl X3ppcF92YWxpZGF0ZSgpIHBhc3MuICovCiAJCQkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zm c2V0cywgaSkpIHsKLQkJCQkJdWxpbnQJbGVuOwotCQkJCQlieXRlKglmaWVsZCA9IHJlY19nZXRf bnRoX2ZpZWxkKAorCQkJCQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkKAogCQkJCQkJcmVjLCBv ZmZzZXRzLCBpLCAmbGVuKTsKKwkJCQkJdXRfYWQobGVuCisJCQkJCSAgICAgID09IEJUUl9FWFRF Uk5fRklFTERfUkVGX1NJWkUpOwogCQkJCQltZW1zZXQoZmllbGQgKyBsZW4KIAkJCQkJICAgICAg IC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSwKIAkJCQkJICAgICAgIDAsIEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkUpOwogCQkJCX0KIAkJCX0KIAkJfQorCX0gZWxzZSB7CisJCXV0X2FkKCFy ZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKIAl9CiAKICNpZmRlZiBVTklWX1pJUF9ERUJV RwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcmVtL3JlbTByZWMuYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2 MTIxMzI0LWh6ZGJtZDEweHlnY29ocDIKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMg YWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIK IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00MDgsNyArNDA4LDcgQEAgcmVjX2luaXRfb2Zmc2V0 cygKIAkJZG8gewogCQkJdWxpbnQJbGVuOwogCQkJaWYgKFVOSVZfVU5MSUtFTFkoaSA9PSBuX25v ZGVfcHRyX2ZpZWxkKSkgewotCQkJCWxlbiA9IG9mZnMgKz0gNDsKKwkJCQlsZW4gPSBvZmZzICs9 IFJFQ19OT0RFX1BUUl9TSVpFOwogCQkJCWdvdG8gcmVzb2x2ZWQ7CiAJCQl9CiAKQEAgLTY0MCw3 ICs2NDAsNyBAQCByZWNfZ2V0X29mZnNldHNfcmV2ZXJzZSgKIAlkbyB7CiAJCXVsaW50CWxlbjsK IAkJaWYgKFVOSVZfVU5MSUtFTFkoaSA9PSBuX25vZGVfcHRyX2ZpZWxkKSkgewotCQkJbGVuID0g b2ZmcyArPSA0OworCQkJbGVuID0gb2ZmcyArPSBSRUNfTk9ERV9QVFJfU0laRTsKIAkJCWdvdG8g cmVzb2x2ZWQ7CiAJCX0KIApAQCAtMTEzMSw5ICsxMTMxLDkgQEAgcmVjX2NvbnZlcnRfZHR1cGxl X3RvX3JlY19jb21wKAogCiAJCWlmIChVTklWX1VOTElLRUxZKGkgPT0gbl9ub2RlX3B0cl9maWVs ZCkpIHsKIAkJCXV0X2FkKGR0eXBlX2dldF9wcnR5cGUodHlwZSkgJiBEQVRBX05PVF9OVUxMKTsK LQkJCXV0X2FkKGxlbiA9PSA0KTsKKwkJCXV0X2FkKGxlbiA9PSBSRUNfTk9ERV9QVFJfU0laRSk7 CiAJCQltZW1jcHkoZW5kLCBkZmllbGRfZ2V0X2RhdGEoZmllbGQpLCBsZW4pOwotCQkJZW5kICs9 IDQ7CisJCQllbmQgKz0gUkVDX05PREVfUFRSX1NJWkU7CiAJCQlicmVhazsKIAkJfQogCgo= --===============0771030633== 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/mysql-5.5/ # testament_sha1: ae4e3ae7f266ac5e0abad69ebf30e0e6072325e0 # timestamp: 2011-06-16 15:15:19 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/mysql-trunk/ # base_revision_id: marko.makela@stripped\ # x7n1fq0dragnh5kl # # Begin bundle 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 --===============0771030633==--