From: marko.makela Date: February 2 2011 2:13pm Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3696 to 3700) Bug#55284 List-Archive: http://lists.mysql.com/commits/130235 X-Bug: 55284 Message-Id: <201102021413.p12EA5WH007728@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1067219615==" --===============1067219615== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM3MDAgTWFya28gTcOka2Vsw6QJMjAxMS0wMi0wMgogICAgICBCdWcgIzU1Mjg0IGRpYWdub3N0 aWNzOiBJbnRyb2R1Y2UgVU5JVl9CTE9CX0xJR0hUX0RFQlVHLCBlbmFibGVkIGJ5IFVOSVZfREVC VUcKICAgICAgCiAgICAgIGJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZl9vZmZzKCksIGJ0cl9yZWNfZ2V0 X2ZpZWxkX3JlZigpOiBOZXcgZnVuY3Rpb25zLgogICAgICBHZXQgdGhlIHBvaW50ZXIgdG8gYW4g ZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQuCiAgICAgIAogICAgICBidHJfY3VyX3NldF9vd25lcnNo aXBfb2ZfZXh0ZXJuX2ZpZWxkKCk6IEFzc2VydCB0aGF0IHRoZSBCTE9CIGhhcyBub3QKICAgICAg YWxyZWFkeSBiZWVuIGRpc293bmVkLgogICAgICAKICAgICAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0 ZXJuX2ZpZWxkcygpOiBSZW5hbWUgdG8KICAgICAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2Zp ZWxkc19mdW5jKCkgYW5kIGFkZCB0aGUgZGVidWcgcGFyYW1ldGVyCiAgICAgIHVwZGF0ZV9pbl9w bGFjZS4gQWxsIHBvaW50ZXJzIHRvIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgaW4gdGhlCiAg ICAgIHJlY29yZCBtdXN0IGVpdGhlciBiZSB6ZXJvIG9yIHRoZXkgbXVzdCBiZSBwb2ludGVycyB0 byBpbmhlcml0ZWQKICAgICAgY29sdW1ucywgb3duZWQgYnkgdGhpcyByZWNvcmQgb3IgYW4gZWFy bGllciByZWNvcmQgdmVyc2lvbi4gRm9yIGFueQogICAgICBCTE9CIHRoYXQgaXMgc3RvcmVkLCB0 aGUgQkxPQiBwb2ludGVyIG11c3QgcHJldmlvdXNseSBoYXZlIGJlZW4KICAgICAgemVyby4gV2hl biB0aGUgZnVuY3Rpb24gY29tcGxldGVzLCBhbGwgQkxPQiBwb2ludGVycyBtdXN0IGJlIG5vbnpl cm8KICAgICAgYW5kIG93bmVkIGJ5IHRoZSByZWNvcmQuCiAgICAgIAogICAgICByYjovLzU0OSBh cHByb3ZlZCBieSBKaW1teSBZYW5nCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9idHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRl L2J0cjBjdXIuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2LmkKICAg ICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMKIDM2OTkgTWFya28gTcOka2Vsw6QJMjAxMS0wMi0wMgog ICAgICBOb24tZnVuY3Rpb25hbCBjaGFuZ2VzIChjbGVhbnVwKSBtYWRlIHdoaWxlIG5hcnJvd2lu ZyBkb3duIEJ1ZyAjNTUyODQ6CiAgICAgIAogICAgICByb3dfcHVyZ2UoKTogQ2hhbmdlIHRoZSBy ZXR1cm4gdHlwZSB0byB2b2lkLiAoVGhlIHJldHVybiB2YWx1ZSBhbHdheXMKICAgICAgd2FzIERC X1NVQ0NFU1MuKSBSZW1vdmUgc29tZSBsb2NhbCB2YXJpYWJsZXMuCiAgICAgIAogICAgICByb3df dW5kb19tb2RfcmVtb3ZlX2NsdXN0X2xvdygpOiBSZW1vdmUgc29tZSBsb2NhbCB2YXJpYWJsZXMu CiAgICAgIAogICAgICByYjovLzU0NyBhcHByb3ZlZCBieSBKaW1teSBZYW5nCgogICAgbW9kaWZp ZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHB1cmdlLmMKICAgICAgc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdW1vZC5jCiAzNjk4IE1hcmtvIE3DpGtlbMOkCTIw MTEtMDItMDIKICAgICAgQnVnICM1NTI4NCBkaWFnbm9zdGljczogV2hlbiBVTklWX0RFQlVHLCBk byBub3QgdG9sZXJhdGUgZ2FyYmFnZSBpbgogICAgICBBbnRlbG9wZSBmaWxlcyBpbiBidHJfY2hl Y2tfYmxvYl9maWxfcGFnZV90eXBlKCkuIFVuZm9ydHVuYXRlbHksIHdlCiAgICAgIG11c3Qga2Vl cCB0aGUgY2hlY2sgaW4gcHJvZHVjdGlvbiBidWlsZHMsIGJlY2F1c2UgSW5ub0RCIHdyb3RlCiAg ICAgIHVuaW5pdGlhbGl6ZWQgZ2FyYmFnZSB0byBGSUxfUEFHRV9UWVBFIHVudGlsIGZhaXJseSBy ZWNlbnRseSAoNS4xLngpLgogICAgICAKICAgICAgcmI6Ly81NDYgYXBwcm92ZWQgYnkgSmltbXkg WWFuZwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBj dXIuYwogMzY5NyBNYXJrbyBNw6RrZWzDpAkyMDExLTAyLTAyCiAgICAgIEJ1ZyAjNTUyODQgZGlh Z25vc3RpY3M6IEVuYWJsZSBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgYnkgVU5JVl9ERUJVRwog ICAgICAKICAgICAgSXQgd2FzIHRoZSBlbmFibGluZyBvZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNT RVMgdGhhdCBjYXVnaHQgQnVnICM1NTI4NAogICAgICBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMg aXMgYSB2ZXJ5IGxpZ2h0IHBpZWNlIG9mIG9mIGRlYnVnIGNvZGUsIGFuZAogICAgICB0aGVyZSBy ZWFsbHkgaXMgbm8gcmVhc29uIHdoeSBpdCBpcyBub3QgZW5hYmxlZCBpbiBhbGwgZGVidWcgYnVp bGRzLgogICAgICAKICAgICAgcmI6Ly81NTEgYXBwcm92ZWQgYnkgSmltbXkgWWFuZwoKICAgIG1v ZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1ZjBidWYuYwogICAgICBz dG9yYWdlL2lubm9kYl9wbHVnaW4vZnNwL2ZzcDBmc3AuYwogICAgICBzdG9yYWdlL2lubm9kYl9w bHVnaW4vaWJ1Zi9pYnVmMGlidWYuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVk ZS9idWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdW5pdi5pCiAz Njk2IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDEtMzEKICAgICAgQnVnIzU5MjMwIGFzc2VydCAwIHJv d191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KCkgaW4gcG9zdC1jcmFzaAogICAgICB0cngg cm9sbGJhY2sgb3IgcHVyZ2UKICAgICAgCiAgICAgIFRoaXMgcGF0Y2ggZG9lcyBub3QgcmVsYXgg dGhlIGZhaWxpbmcgZGVidWcgYXNzZXJ0aW9uIGR1cmluZyBwdXJnZS4KICAgICAgVGhhdCB3aWxs IGJlIHJldmlzaXRlZCBvbmNlIHdlIGhhdmUgbWFuYWdlZCB0byByZXBlYXQgdGhlIGFzc2VydGlv biBmYWlsdXJlLgogICAgICAKICAgICAgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnlf ZnVuYygpOiBSZW5hbWVkIGZyb20KICAgICAgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5h cnkoKS4gQWRkIHRoZSBwYXJhbWV0ZXIgcXVlX3Rocl90KiBpbgogICAgICBVTklWX0RFQlVHIGJ1 aWxkcy4gV2hlbiB0aGUgb2ZmLXBhZ2UgY29sdW1uIGNhbm5vdCBiZSByZXRyaWV2ZWQsCiAgICAg IGFzc2VydCB0aGF0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlzIGEgcmVjb3ZlcmVkIG9uZSBh bmQgdGhhdCBpdCBpcwogICAgICB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHJvbGxl ZCBiYWNrLgogICAgICAKICAgICAgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoKTog QSB3cmFwcGVyIG1hY3JvIGZvcgogICAgICByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFy eV9mdW5jKCkgdGhhdCBkaXNjYXJkcyB0aGUgcXVlX3Rocl90KgogICAgICBwYXJhbWV0ZXIgdW5s ZXNzIFVOSVZfREVCVUcgaXMgZGVmaW5lZC4KICAgICAgCiAgICAgIHJvd19wdXJnZV91cGRfZXhp c3Rfb3JfZXh0ZXJuX2Z1bmMoKTogUmVuYW1lZCBmcm9tCiAgICAgIHJvd19wdXJnZV91cGRfZXhp c3Rfb3JfZXh0ZXJuKCkuIEFkZCB0aGUgcGFyYW1ldGVyIHF1ZV90aHJfdCogaW4KICAgICAgVU5J Vl9ERUJVRyBidWlsZHMuCiAgICAgIAogICAgICByb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVy bigpOiBBIHdyYXBwZXIgbWFjcm8gZm9yCiAgICAgIHJvd19wdXJnZV91cGRfZXhpc3Rfb3JfZXh0 ZXJuX2Z1bmMoKSB0aGF0IGRpc2NhcmRzIHRoZSBxdWVfdGhyX3QqCiAgICAgIHBhcmFtZXRlciB1 bmxlc3MgVU5JVl9ERUJVRyBpcyBkZWZpbmVkLgogICAgICAKICAgICAgTWFrZSB0cnhfcm9sbF9j cmFzaF9yZWN2X3RyeCBjb25zdC4gSWYgdGhlcmUgd2VyZSBhICdkbyBub3QKICAgICAgZGVyZWZl cmVuY2UnIGF0dHJpYnV0ZSwgaXQgd291bGQgYmUgYXBwcm9wcmlhdGUgYXMgd2VsbC4KICAgICAg CiAgICAgIHJiOi8vNTg4IGFwcHJvdmVkIGJ5IEppbW15IFlhbmcKCiAgICBtb2RpZmllZDoKICAg ICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwogICAgICBzdG9yYWdlL2lubm9kYl9w bHVnaW4vYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9y b3cwdXBkLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwcHVyZ2UuYwogICAg ICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMKICAgICAgc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3RyeC90 cngwcm9sbC5jCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0 cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAxMzEwNzU2NTEtMDM5NHQzcHByNmFvMmVzMwor KysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTEwOC1rNXFxdnJpMTNidzg1ZHN2CkBAIC0xODYsNyAr MTg2LDcgQEAgc3RhdGljCiB1bGludAogYnRyX3JlY19nZXRfZXh0ZXJuYWxseV9zdG9yZWRfbGVu KAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCXJlY190KgkJcmVjLAkvKiE8 IGluOiByZWNvcmQgKi8KKwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KIAlj b25zdCB1bGludCoJb2Zmc2V0cyk7LyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9v ZmZzZXRzKCkgKi8KICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIApAQCAtMzQ4NCwzNCAr MzQ4NCw2MiBAQCBidHJfZXN0aW1hdGVfbnVtYmVyX29mX2RpZmZlcmVudF9rZXlfdmFsCiAvKj09 PT09PT09PT09PT09PT09PSBFWFRFUk5BTCBTVE9SQUdFIE9GIEJJRyBGSUVMRFMgPT09PT09PT09 PT09PT09PT09PSovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKK0dldHMgdGhlIG9mZnNldCBvZiB0aGUgcG9pbnRlciB0 byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCBvZiBhIGZpZWxkLgorQHJldHVybglvZmZzZXQg b2YgdGhlIHBvaW50ZXIgdG8gdGhlIGV4dGVybmFsbHkgc3RvcmVkIHBhcnQgKi8KK3N0YXRpYwor dWxpbnQKK2J0cl9yZWNfZ2V0X2ZpZWxkX3JlZl9vZmZzKAorLyo9PT09PT09PT09PT09PT09PT09 PT09PSovCisJY29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkg cmVjX2dldF9vZmZzZXRzKCkgKi8KKwl1bGludAkJbikJLyohPCBpbjogaW5kZXggb2YgdGhlIGV4 dGVybmFsIGZpZWxkICovCit7CisJdWxpbnQJZmllbGRfcmVmX29mZnM7CisJdWxpbnQJbG9jYWxf bGVuOworCisJdXRfYShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIG4pKTsKKwlmaWVsZF9y ZWZfb2ZmcyA9IHJlY19nZXRfbnRoX2ZpZWxkX29mZnMob2Zmc2V0cywgbiwgJmxvY2FsX2xlbik7 CisJdXRfYShsb2NhbF9sZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJdXRfYShsb2NhbF9sZW4gPj0g QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisKKwlyZXR1cm4oZmllbGRfcmVmX29mZnMgKyBs b2NhbF9sZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKK30KKworLyoqIEdldHMgYSBw b2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBwYXJ0IG9mIGEgZmllbGQuCitAcGFyYW0g cmVjCXJlY29yZAorQHBhcmFtIG9mZnNldHMJcmVjX2dldF9vZmZzZXRzKHJlYykKK0BwYXJhbSBu CWluZGV4IG9mIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBmaWVsZAorQHJldHVybiBwb2ludGVyIHRv IHRoZSBleHRlcm5hbGx5IHN0b3JlZCBwYXJ0ICovCisjZGVmaW5lIGJ0cl9yZWNfZ2V0X2ZpZWxk X3JlZihyZWMsIG9mZnNldHMsIG4pCQkJXAorCSgocmVjKSArIGJ0cl9yZWNfZ2V0X2ZpZWxkX3Jl Zl9vZmZzKG9mZnNldHMsIG4pKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSBleHRlcm5hbGx5IHN0b3Jl ZCBzaXplIG9mIGEgcmVjb3JkLCBpbiB1bml0cyBvZiBhIGRhdGFiYXNlIHBhZ2UuCiBAcmV0dXJu CWV4dGVybmFsbHkgc3RvcmVkIHBhcnQsIGluIHVuaXRzIG9mIGEgZGF0YWJhc2UgcGFnZSAqLwog c3RhdGljCiB1bGludAogYnRyX3JlY19nZXRfZXh0ZXJuYWxseV9zdG9yZWRfbGVuKAogLyo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCXJlY190KgkJcmVjLAkvKiE8IGluOiByZWNv cmQgKi8KKwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KIAljb25zdCB1bGlu dCoJb2Zmc2V0cykvKiE8IGluOiBhcnJheSByZXR1cm5lZCBieSByZWNfZ2V0X29mZnNldHMoKSAq LwogewogCXVsaW50CW5fZmllbGRzOwotCWJ5dGUqCWRhdGE7Ci0JdWxpbnQJbG9jYWxfbGVuOwot CXVsaW50CWV4dGVybl9sZW47CiAJdWxpbnQJdG90YWxfZXh0ZXJuX2xlbiA9IDA7CiAJdWxpbnQJ aTsKIAogCXV0X2FkKCFyZWNfb2Zmc19jb21wKG9mZnNldHMpIHx8ICFyZWNfZ2V0X25vZGVfcHRy X2ZsYWcocmVjKSk7CisKKwlpZiAoIXJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJ cmV0dXJuKDApOworCX0KKwogCW5fZmllbGRzID0gcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVsZHM7IGkrKykgewogCQlpZiAocmVjX29mZnNfbnRo X2V4dGVybihvZmZzZXRzLCBpKSkgewogCi0JCQlkYXRhID0gcmVjX2dldF9udGhfZmllbGQocmVj LCBvZmZzZXRzLCBpLCAmbG9jYWxfbGVuKTsKLQotCQkJbG9jYWxfbGVuIC09IEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkU7Ci0KLQkJCWV4dGVybl9sZW4gPSBtYWNoX3JlYWRfZnJvbV80KGRhdGEg KyBsb2NhbF9sZW4KLQkJCQkJCSAgICAgICsgQlRSX0VYVEVSTl9MRU4gKyA0KTsKKwkJCXVsaW50 CWV4dGVybl9sZW4gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWJ0cl9yZWNfZ2V0X2ZpZWxkX3Jl ZihyZWMsIG9mZnNldHMsIGkpCisJCQkJKyBCVFJfRVhURVJOX0xFTiArIDQpOwogCiAJCQl0b3Rh bF9leHRlcm5fbGVuICs9IHV0X2NhbGNfYWxpZ24oZXh0ZXJuX2xlbiwKIAkJCQkJCQkgIFVOSVZf UEFHRV9TSVpFKTsKQEAgLTM1NDEsNyArMzU2OSw3IEBAIGJ0cl9jdXJfc2V0X293bmVyc2hpcF9v Zl9leHRlcm5fZmllbGQoCiAJdWxpbnQJYnl0ZV92YWw7CiAKIAlkYXRhID0gcmVjX2dldF9udGhf ZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbG9jYWxfbGVuKTsKLQorCXV0X2FkKHJlY19vZmZzX250 aF9leHRlcm4ob2Zmc2V0cywgaSkpOwogCXV0X2EobG9jYWxfbGVuID49IEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUpOwogCiAJbG9jYWxfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7 CkBAIC0zNTUxLDYgKzM1NzksOSBAQCBidHJfY3VyX3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2Zp ZWxkKAogCWlmICh2YWwpIHsKIAkJYnl0ZV92YWwgPSBieXRlX3ZhbCAmICh+QlRSX0VYVEVSTl9P V05FUl9GTEFHKTsKIAl9IGVsc2UgeworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCQl1dF9hKCEoYnl0ZV92YWwgJiBCVFJfRVhURVJOX09X TkVSX0ZMQUcpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJV RyAqLwogCQlieXRlX3ZhbCA9IGJ5dGVfdmFsIHwgQlRSX0VYVEVSTl9PV05FUl9GTEFHOwogCX0K IApAQCAtMzc4OCw4ICszODE5LDggQEAgZmlsZSBzZWdtZW50IG9mIHRoZSBpbmRleCB0cmVlLgog QHJldHVybglEQl9TVUNDRVNTIG9yIERCX09VVF9PRl9GSUxFX1NQQUNFICovCiBVTklWX0lOVEVS TgogdWxpbnQKLWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCi0vKj09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLworYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5j KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiByZWM7IHRoZSBpbmRleCB0cmVlCiAJCQkJCU1VU1Qg YmUgWC1sYXRjaGVkICovCiAJYnVmX2Jsb2NrX3QqCXJlY19ibG9jaywJLyohPCBpbi9vdXQ6IGJs b2NrIGNvbnRhaW5pbmcgcmVjICovCkBAIC0zNzk4LDExICszODI5LDE3IEBAIGJ0cl9zdG9yZV9i aWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQkJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3Mg aW4gb2Zmc2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNwb25kIHRvIHJlYyB3aGVuCiAJCQkJCXRo aXMgZnVuY3Rpb24gcmV0dXJucyAqLwotCWJpZ19yZWNfdCoJYmlnX3JlY192ZWMsCS8qITwgaW46 IHZlY3RvciBjb250YWluaW5nIGZpZWxkcworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJfdCoJCWxv Y2FsX210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlCisJCQkJCWxhdGNoIHRvIHJlYyBh bmQgdG8gdGhlIHRyZWUgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisjaWYgZGVmaW5lZCBV TklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJaWJvb2wJCXVwZGF0 ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCisJCQkJCWlu IHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQkxPQl9MSUdIVF9ERUJVRyAqLworCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYykJLyoh PCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCiAJCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5h bGx5ICovCi0JbXRyX3QqCQlsb2NhbF9tdHIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpIC8qITwg aW46IG10cgotCQkJCQljb250YWluaW5nIHRoZSBsYXRjaCB0byByZWMgYW5kIHRvIHRoZQotCQkJ CQl0cmVlICovCisKIHsKIAl1bGludAlyZWNfcGFnZV9ubzsKIAlieXRlKglmaWVsZF9yZWY7CkBA IC0zODIwLDYgKzM4NTcsNyBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCXpf c3RyZWFtIGNfc3RyZWFtOwogCiAJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwg b2Zmc2V0cykpOworCXV0X2FkKHJlY19vZmZzX2FueV9leHRlcm4ob2Zmc2V0cykpOwogCXV0X2Fk KG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210ciwgZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCks CiAJCQkJTVRSX01FTU9fWF9MT0NLKSk7CiAJdXRfYWQobXRyX21lbW9fY29udGFpbnMobG9jYWxf bXRyLCByZWNfYmxvY2ssIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKQEAgLTM4NTEsMjEgKzM4ODks MzcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAkJdXRfYShlcnIgPT0gWl9P Syk7CiAJfQogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJ R0hUX0RFQlVHCisJLyogQWxsIHBvaW50ZXJzIHRvIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMg aW4gdGhlIHJlY29yZAorCW11c3QgZWl0aGVyIGJlIHplcm8gb3IgdGhleSBtdXN0IGJlIHBvaW50 ZXJzIHRvIGluaGVyaXRlZAorCWNvbHVtbnMsIG93bmVkIGJ5IHRoaXMgcmVjb3JkIG9yIGFuIGVh cmxpZXIgcmVjb3JkIHZlcnNpb24uICovCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmll bGRzKG9mZnNldHMpOyBpKyspIHsKKwkJaWYgKCFyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMs IGkpKSB7CisJCQljb250aW51ZTsKKwkJfQorCQlmaWVsZF9yZWYgPSBidHJfcmVjX2dldF9maWVs ZF9yZWYocmVjLCBvZmZzZXRzLCBpKTsKKworCQl1dF9hKCEoZmllbGRfcmVmW0JUUl9FWFRFUk5f TEVOXSAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRykpOworCQkvKiBFaXRoZXIgdGhpcyBtdXN0IGJl IGFuIHVwZGF0ZSBpbiBwbGFjZSwKKwkJb3IgdGhlIEJMT0IgbXVzdCBiZSBpbmhlcml0ZWQsIG9y IHRoZSBCTE9CIHBvaW50ZXIKKwkJbXVzdCBiZSB6ZXJvICh3aWxsIGJlIHdyaXR0ZW4gaW4gdGhp cyBmdW5jdGlvbikuICovCisJCXV0X2EodXBkYXRlX2luX3BsYWNlCisJCSAgICAgfHwgKGZpZWxk X3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHKQorCQkgICAg IHx8ICFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZfemVybywKKwkJCQlCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFKSk7CisJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJ R0hUX0RFQlVHICovCiAJLyogV2UgaGF2ZSB0byBjcmVhdGUgYSBmaWxlIHNlZ21lbnQgdG8gdGhl IHRhYmxlc3BhY2UKIAlmb3IgZWFjaCBmaWVsZCBhbmQgcHV0IHRoZSBwb2ludGVyIHRvIHRoZSBm aWVsZCBpbiByZWMgKi8KIAogCWZvciAoaSA9IDA7IGkgPCBiaWdfcmVjX3ZlYy0+bl9maWVsZHM7 IGkrKykgewotCQl1dF9hZChyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsCi0JCQkJCSAgYmln X3JlY192ZWMtPmZpZWxkc1tpXS5maWVsZF9ubykpOwotCQl7Ci0JCQl1bGludAlsb2NhbF9sZW47 Ci0JCQlmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9maWVsZCgKLQkJCQlyZWMsIG9mZnNldHMsIGJp Z19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8sCi0JCQkJJmxvY2FsX2xlbik7Ci0JCQl1dF9h KGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKLQkJCWxvY2FsX2xlbiAt PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOwotCQkJZmllbGRfcmVmICs9IGxvY2FsX2xlbjsK LQkJfQorCQlmaWVsZF9yZWYgPSBidHJfcmVjX2dldF9maWVsZF9yZWYoCisJCQlyZWMsIG9mZnNl dHMsIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8pOworI2lmIGRlZmluZWQgVU5JVl9E RUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCQkvKiBBIHplcm8gQkxPQiBw b2ludGVyIHNob3VsZCBoYXZlIGJlZW4gaW5pdGlhbGx5IGluc2VydGVkLiAqLworCQl1dF9hKCFt ZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZfemVybywKKwkJCSAgICAgQlRSX0VYVEVSTl9GSUVM RF9SRUZfU0laRSkpOworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RF QlVHICovCiAJCWV4dGVybl9sZW4gPSBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmxlbjsKIAkJVU5J Vl9NRU1fQVNTRVJUX1JXKGJpZ19yZWNfdmVjLT5maWVsZHNbaV0uZGF0YSwKIAkJCQkgICBleHRl cm5fbGVuKTsKQEAgLTQxNDcsNiArNDIwMSwyMyBAQCBuZXh0X3ppcF9wYWdlOgogCQltZW1faGVh cF9mcmVlKGhlYXApOwogCX0KIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVO SVZfQkxPQl9MSUdIVF9ERUJVRworCS8qIEFsbCBwb2ludGVycyB0byBleHRlcm5hbGx5IHN0b3Jl ZCBjb2x1bW5zIGluIHRoZSByZWNvcmQKKwltdXN0IGJlIHZhbGlkLiAqLworCWZvciAoaSA9IDA7 IGkgPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmICghcmVjX29mZnNf bnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJY29udGludWU7CisJCX0KKworCQlmaWVsZF9y ZWYgPSBidHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZzZXRzLCBpKTsKKworCQkvKiBUaGUg cG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1dF9hKDAgIT0gbWVtY21wKGZpZWxkX3Jl ZiwgZmllbGRfcmVmX3plcm8sCisJCQkJIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpKTsKKwkJ LyogVGhlIGNvbHVtbiBtdXN0IG5vdCBiZSBkaXNvd25lZCBieSB0aGlzIHJlY29yZC4gKi8KKwkJ dXRfYSghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcp KTsKKwl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8K IAlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKQEAgLTQxNjksNiArNDI0MCw3IEBAIGJ0cl9jaGVj a19ibG9iX2ZpbF9wYWdlX3R5cGUoCiAJaWYgKFVOSVZfVU5MSUtFTFkodHlwZSAhPSBGSUxfUEFH RV9UWVBFX0JMT0IpKSB7CiAJCXVsaW50CWZsYWdzID0gZmlsX3NwYWNlX2dldF9mbGFncyhzcGFj ZV9pZCk7CiAKKyNpZm5kZWYgVU5JVl9ERUJVRyAvKiBJbXByb3ZlIGRlYnVnIHRlc3QgY292ZXJh Z2UgKi8KIAkJaWYgKFVOSVZfTElLRUxZCiAJCSAgICAoKGZsYWdzICYgRElDVF9URl9GT1JNQVRf TUFTSykgPT0gRElDVF9URl9GT1JNQVRfNTEpKSB7CiAJCQkvKiBPbGQgdmVyc2lvbnMgb2YgSW5u b0RCIGRpZCBub3QgaW5pdGlhbGl6ZQpAQCAtNDE3Nyw2ICs0MjQ5LDcgQEAgYnRyX2NoZWNrX2Js b2JfZmlsX3BhZ2VfdHlwZSgKIAkJCWEgQkxPQiBwYWdlIHRoYXQgaXMgaW4gQW50ZWxvcGUgZm9y bWF0LiovCiAJCQlyZXR1cm47CiAJCX0KKyNlbmRpZiAvKiAhVU5JVl9ERUJVRyAqLwogCiAJCXV0 X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTQyMjYsMjMg KzQyOTksMTMgQEAgYnRyX2ZyZWVfZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoCiAJdWxpbnQJCXBh Z2Vfbm87CiAJdWxpbnQJCW5leHRfcGFnZV9ubzsKIAltdHJfdAkJbXRyOwotI2lmZGVmIFVOSVZf REVCVUcKKwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210ciwgZGljdF9pbmRleF9n ZXRfbG9jayhpbmRleCksCiAJCQkJTVRSX01FTU9fWF9MT0NLKSk7CiAJdXRfYWQobXRyX21lbW9f Y29udGFpbnNfcGFnZShsb2NhbF9tdHIsIGZpZWxkX3JlZiwKIAkJCQkgICAgIE1UUl9NRU1PX1BB R0VfWF9GSVgpKTsKIAl1dF9hZCghcmVjIHx8IHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgs IG9mZnNldHMpKTsKLQotCWlmIChyZWMpIHsKLQkJdWxpbnQJbG9jYWxfbGVuOwotCQljb25zdCBi eXRlKglmID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLAotCQkJCQkJICAgICAgaSwg JmxvY2FsX2xlbik7Ci0JCXV0X2EobG9jYWxfbGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJ WkUpOwotCQlsb2NhbF9sZW4gLT0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKLQkJZiArPSBs b2NhbF9sZW47Ci0JCXV0X2FkKGYgPT0gZmllbGRfcmVmKTsKLQl9Ci0jZW5kaWYgLyogVU5JVl9E RUJVRyAqLworCXV0X2FkKCFyZWMgfHwgZmllbGRfcmVmID09IGJ0cl9yZWNfZ2V0X2ZpZWxkX3Jl ZihyZWMsIG9mZnNldHMsIGkpKTsKIAogCWlmIChVTklWX1VOTElLRUxZKCFtZW1jbXAoZmllbGRf cmVmLCBmaWVsZF9yZWZfemVybywKIAkJCQkgIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpKSkg ewpAQCAtNDQwNywxMyArNDQ3MCw4IEBAIGJ0cl9yZWNfZnJlZV9leHRlcm5hbGx5X3N0b3JlZF9m aWVsZHMoCiAKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVsZHM7IGkrKykgewogCQlpZiAocmVjX29m ZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgewotCQkJdWxpbnQJbGVuOwotCQkJYnl0ZSoJZGF0 YQotCQkJCT0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKLQkJCXV0 X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwotCiAJCQlidHJfZnJlZV9leHRl cm5hbGx5X3N0b3JlZF9maWVsZCgKLQkJCQlpbmRleCwgZGF0YSArIGxlbiAtIEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkUsCisJCQkJaW5kZXgsIGJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZihyZWMsIG9m ZnNldHMsIGkpLAogCQkJCXJlYywgb2Zmc2V0cywgcGFnZV96aXAsIGksIHJiX2N0eCwgbXRyKTsK IAkJfQogCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1 ZjBidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J1Zi9idWYwYnVmLmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAxMzEwNzU2NTEtMDM5NHQzcHByNmFvMmVzMwor KysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTEwOC1rNXFxdnJpMTNidzg1ZHN2CkBAIC02NTcsOSAr NjU3LDkgQEAgYnVmX2Jsb2NrX2luaXQoCiAKIAlibG9jay0+bW9kaWZ5X2Nsb2NrID0gMDsKIAot I2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19G SUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJsb2NrLT5wYWdlLmZpbGVfcGFn ZV93YXNfZnJlZWQgPSBGQUxTRTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMg Ki8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwog CiAJYmxvY2stPmNoZWNrX2luZGV4X3BhZ2VfYXRfZmx1c2ggPSBGQUxTRTsKIAlibG9jay0+aW5k ZXggPSBOVUxMOwpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgYnVmX3BhZ2VfcGVla19pZl9zZWFyY2hf aGFzaGVkKAogCXJldHVybihpc19oYXNoZWQpOwogfQogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5l ZCBVTklWX0RFQlVHCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRzIGZpbGVfcGFnZV93YXNfZnJlZWQg VFJVRSBpZiB0aGUgcGFnZSBpcyBmb3VuZCBpbiB0aGUgYnVmZmVyIHBvb2wuCiBUaGlzIGZ1bmN0 aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB3ZSBmcmVlIGEgZmlsZSBwYWdlIGFuZCB3YW50IHRo ZQpAQCAtMTYyMSw2ICsxNjIxLDggQEAgYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQo CiAJYnBhZ2UgPSBidWZfcGFnZV9oYXNoX2dldChzcGFjZSwgb2Zmc2V0KTsKIAogCWlmIChicGFn ZSkgeworCQkvKiBicGFnZS0+ZmlsZV9wYWdlX3dhc19mcmVlZCBjYW4gYWxyZWFkeSBob2xkCisJ CXdoZW4gdGhpcyBjb2RlIGlzIGludm9rZWQgZnJvbSBkaWN0X2Ryb3BfaW5kZXhfdHJlZSgpICov CiAJCWJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gVFJVRTsKIAl9CiAKQEAgLTE2NTYsNyAr MTY1OCw3IEBAIGJ1Zl9wYWdlX3Jlc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoCiAKIAlyZXR1cm4o YnBhZ2UpOwogfQotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLworI2VuZGlm IC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIEdldCByZWFkIGFjY2VzcyB0byBhIGNvbXByZXNzZWQgcGFnZSAodXN1YWxseSBv ZiB0eXBlCkBAIC0xNzUzLDcgKzE3NTUsNyBAQCBnb3RfYmxvY2s6CiAKIAlidWZfcGFnZV9zZXRf YWNjZXNzZWRfbWFrZV95b3VuZyhicGFnZSwgYWNjZXNzX3RpbWUpOwogCi0jaWZkZWYgVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMg fHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYSghYnBhZ2UtPmZpbGVfcGFnZV93YXNfZnJlZWQp OwogI2VuZGlmCiAKQEAgLTIzMjEsNyArMjMyMyw3IEBAIHdhaXRfdW50aWxfdW5maXhlZDoKIAog CWJ1Zl9wYWdlX3NldF9hY2Nlc3NlZF9tYWtlX3lvdW5nKCZibG9jay0+cGFnZSwgYWNjZXNzX3Rp bWUpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklW X0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYSghYmxvY2st PnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCk7CiAjZW5kaWYKIApAQCAtMjQ3OSw3ICsyNDgxLDcg QEAgYnVmX3BhZ2Vfb3B0aW1pc3RpY19nZXQoCiAJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJs b2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQlVGX0RFQlVHICovCiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBk ZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1 dF9hKGJsb2NrLT5wYWdlLmZpbGVfcGFnZV93YXNfZnJlZWQgPT0gRkFMU0UpOwogI2VuZGlmCiAJ aWYgKFVOSVZfVU5MSUtFTFkoIWFjY2Vzc190aW1lKSkgewpAQCAtMjU4Nyw3ICsyNTg5LDcgQEAg YnVmX3BhZ2VfZ2V0X2tub3duX25vd2FpdCgKIAl1dF9hKGJsb2NrLT5wYWdlLmJ1Zl9maXhfY291 bnQgPiAwKTsKIAl1dF9hKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19G SUxFX1BBR0UpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KLSNp ZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklM RV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKGJsb2NrLT5wYWdlLmZpbGVf cGFnZV93YXNfZnJlZWQgPT0gRkFMU0UpOwogI2VuZGlmCiAKQEAgLTI2NzAsOSArMjY3Miw5IEBA IGJ1Zl9wYWdlX3RyeV9nZXRfZnVuYygKIAl1dF9hKGJsb2NrLT5wYWdlLmJ1Zl9maXhfY291bnQg PiAwKTsKIAl1dF9hKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxF X1BBR0UpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KLSNpZmRl ZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9B Q0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKGJsb2NrLT5wYWdlLmZpbGVfcGFn ZV93YXNfZnJlZWQgPT0gRkFMU0UpOwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICov CiAJYnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwoYmxvY2ssIFNZTkNfTk9fT1JERVJfQ0hFQ0spOwog CiAJYnVmX3Bvb2wtPnN0YXQubl9wYWdlX2dldHMrKzsKQEAgLTI3MDEsOSArMjcwMyw5IEBAIGJ1 Zl9wYWdlX2luaXRfbG93KAogCWJwYWdlLT5uZXdlc3RfbW9kaWZpY2F0aW9uID0gMDsKIAlicGFn ZS0+b2xkZXN0X21vZGlmaWNhdGlvbiA9IDA7CiAJSEFTSF9JTlZBTElEQVRFKGJwYWdlLCBoYXNo KTsKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVC VUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlicGFnZS0+ZmlsZV9wYWdl X3dhc19mcmVlZCA9IEZBTFNFOwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAq LworI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKQEAgLTMwMDksOSArMzAxMSw5IEBAIGJ1Zl9wYWdlX2NyZWF0 ZSgKICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcKIAkJdXRfYShpYnVmX2NvdW50X2dldChz cGFjZSwgb2Zmc2V0KSA9PSAwKTsKICNlbmRpZgotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NF U1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5J Vl9ERUJVRwogCQlibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gRkFMU0U7Ci0jZW5k aWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19G SUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIAogCQkvKiBQYWdlIGNhbiBiZSBmb3VuZCBp biBidWZfcG9vbCAqLwogCQlidWZfcG9vbF9tdXRleF9leGl0KCk7Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2ZzcC9mc3AwZnNwLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9mc3AvZnNwMGZzcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMTMxMDc1NjUxLTAzOTR0M3BwcjZhbzJlczMKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2ZzcC9mc3AwZnNwLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzUx MDgtazVxcXZyaTEzYnc4NWRzdgpAQCAtMzQ0NCw5ICszNDQ0LDkgQEAgZnNlZ19mcmVlX3BhZ2Uo CiAKIAlmc2VnX2ZyZWVfcGFnZV9sb3coc2VnX2lub2RlLCBzcGFjZSwgemlwX3NpemUsIHBhZ2Us IG10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfcGFnZV9z ZXRfZmlsZV9wYWdlX3dhc19mcmVlZChzcGFjZSwgcGFnZSk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKQEAgLTM1MTMsMTMgKzM1MTMsMTMgQEAgZnNlZ19mcmVlX2V4dGVudCgKIAogCWZz cF9mcmVlX2V4dGVudChzcGFjZSwgemlwX3NpemUsIHBhZ2UsIG10cik7CiAKLSNpZmRlZiBVTklW X0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlmb3IgKGkgPSAwOyBpIDwgRlNQX0VYVEVOVF9TSVpF OyBpKyspIHsKIAogCQlidWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dhc19mcmVlZChzcGFjZSwKIAkJ CQkJCSBmaXJzdF9wYWdlX2luX2V4dGVudCArIGkpOwogCX0KLSNlbmRpZgorI2VuZGlmIC8qIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiB9CiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2li dWYwaWJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaWJ1Zi9pYnVmMGlidWYuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDEzMTA3NTY1MS0wMzk0dDNwcHI2YW8y ZXMzCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjAyMTM1MTA4LWs1cXF2cmkxM2J3ODVkc3YKQEAg LTE4NzgsOSArMTg3OCw5IEBAIGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWZzZWdfZnJl ZV9wYWdlKGhlYWRlcl9wYWdlICsgSUJVRl9IRUFERVIgKyBJQlVGX1RSRUVfU0VHX0hFQURFUiwK IAkJICAgICAgIElCVUZfU1BBQ0VfSUQsIHBhZ2Vfbm8sICZtdHIpOwogCi0jaWZkZWYgVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMg fHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dhc19mcmVl ZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAKIAlpYnVmX2VudGVyKCk7CiAKQEAgLTE5 MjIsOSArMTkyMiw5IEBAIGlidWZfcmVtb3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWlidWZfYml0bWFw X3BhZ2Vfc2V0X2JpdHMoCiAJCWJpdG1hcF9wYWdlLCBwYWdlX25vLCB6aXBfc2l6ZSwgSUJVRl9C SVRNQVBfSUJVRiwgRkFMU0UsICZtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklW X0RFQlVHCiAJYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoSUJVRl9TUEFDRV9JRCwg cGFnZV9ubyk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwg VU5JVl9ERUJVRyAqLwogCW10cl9jb21taXQoJm10cik7CiAKIAltdXRleF9leGl0KCZpYnVmX211 dGV4KTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9i dHIwY3VyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDEzMTA3NTY1MS0wMzk0dDNwcHI2YW8y ZXMzCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTEwOC1rNXFxdnJpMTNidzg1ZHN2CkBA IC01MTIsOCArNTEyLDggQEAgZmlsZSBzZWdtZW50IG9mIHRoZSBpbmRleCB0cmVlLgogQHJldHVy bglEQl9TVUNDRVNTIG9yIERCX09VVF9PRl9GSUxFX1NQQUNFICovCiBVTklWX0lOVEVSTgogdWxp bnQKLWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLworYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAorLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgs CQkvKiE8IGluOiBpbmRleCBvZiByZWM7IHRoZSBpbmRleCB0cmVlCiAJCQkJCU1VU1QgYmUgWC1s YXRjaGVkICovCiAJYnVmX2Jsb2NrX3QqCXJlY19ibG9jaywJLyohPCBpbi9vdXQ6IGJsb2NrIGNv bnRhaW5pbmcgcmVjICovCkBAIC01MjIsMTAgKzUyMiw0MiBAQCBidHJfc3RvcmVfYmlnX3JlY19l eHRlcm5fZmllbGRzKAogCQkJCQl0aGUgImV4dGVybmFsIHN0b3JhZ2UiIGZsYWdzIGluIG9mZnNl dHMKIAkJCQkJd2lsbCBub3QgY29ycmVzcG9uZCB0byByZWMgd2hlbgogCQkJCQl0aGlzIGZ1bmN0 aW9uIHJldHVybnMgKi8KLQliaWdfcmVjX3QqCWJpZ19yZWNfdmVjLAkvKiE8IGluOiB2ZWN0b3Ig Y29udGFpbmluZyBmaWVsZHMKKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQlsb2NhbF9tdHIs CS8qITwgaW46IG10ciBjb250YWluaW5nIHRoZQorCQkJCQlsYXRjaCB0byByZWMgYW5kIHRvIHRo ZSB0cmVlICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworI2lmIGRlZmluZWQgVU5JVl9ERUJV RyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCWlib29sCQl1cGRhdGVfaW5fcGxh Y2UsLyohIGluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMgdXBkYXRlZAorCQkJCQlpbiBwbGFjZSAo bm90IGRlbGV0ZStpbnNlcnQpICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0Jf TElHSFRfREVCVUcgKi8KKwljb25zdCBiaWdfcmVjX3QqYmlnX3JlY192ZWMpCS8qITwgaW46IHZl Y3RvciBjb250YWluaW5nIGZpZWxkcwogCQkJCQl0byBiZSBzdG9yZWQgZXh0ZXJuYWxseSAqLwot CW10cl90KgkJbG9jYWxfbXRyKTsJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlIGxhdGNoIHRv Ci0JCQkJCXJlYyBhbmQgdG8gdGhlIHRyZWUgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7 CisKKy8qKiBTdG9yZXMgdGhlIGZpZWxkcyBpbiBiaWdfcmVjX3ZlYyB0byB0aGUgdGFibGVzcGFj ZSBhbmQgcHV0cyBwb2ludGVycyB0bwordGhlbSBpbiByZWMuICBUaGUgZXh0ZXJuIGZsYWdzIGlu IHJlYyB3aWxsIGhhdmUgdG8gYmUgc2V0IGJlZm9yZWhhbmQuCitUaGUgZmllbGRzIGFyZSBzdG9y ZWQgb24gcGFnZXMgYWxsb2NhdGVkIGZyb20gbGVhZiBub2RlCitmaWxlIHNlZ21lbnQgb2YgdGhl IGluZGV4IHRyZWUuCitAcGFyYW0gaW5kZXgJaW46IGNsdXN0ZXJlZCBpbmRleDsgTVVTVCBiZSBY LWxhdGNoZWQgYnkgbXRyCitAcGFyYW0gYglpbi9vdXQ6IGJsb2NrIGNvbnRhaW5pbmcgcmVjOyBN VVNUIGJlIFgtbGF0Y2hlZCBieSBtdHIKK0BwYXJhbSByZWMJaW4vb3V0OiBjbHVzdGVyZWQgaW5k ZXggcmVjb3JkCitAcGFyYW0gb2Zmc2V0cwlpbjogcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgp OworCQl0aGUgImV4dGVybmFsIHN0b3JhZ2UiIGZsYWdzIGluIG9mZnNldHMgd2lsbCBub3QgYmUg YWRqdXN0ZWQKK0BwYXJhbSBtdHIJaW46IG1pbmktdHJhbnNhY3Rpb24gdGhhdCBob2xkcyB4LWxh dGNoIG9uIGluZGV4IGFuZCBiCitAcGFyYW0gdXBkCWluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMg dXBkYXRlZCBpbiBwbGFjZSAobm90IGRlbGV0ZStpbnNlcnQpCitAcGFyYW0gYmlnCWluOiB2ZWN0 b3IgY29udGFpbmluZyBmaWVsZHMgdG8gYmUgc3RvcmVkIGV4dGVybmFsbHkKK0ByZXR1cm4JREJf U1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9TUEFDRSAqLworI2lmZGVmIFVOSVZfREVCVUcKKyMg ZGVmaW5lIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoaW5kZXgsYixyZWMsb2Zmc2V0 cyxtdHIsdXBkLGJpZykgXAorCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYyhp bmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKQorI2VsaWYgZGVmaW5lZCBVTklWX0JMT0Jf TElHSFRfREVCVUcKKyMgZGVmaW5lIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoaW5k ZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJpZykgXAorCWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVy bl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzZXRzLHVwZCxiaWcpCisjZWxzZQorIyBkZWZp bmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzZXRzLG10 cix1cGQsYmlnKSBcCisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKGluZGV4 LGIscmVjLG9mZnNldHMsYmlnKQorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRnJlZXMgdGhl IHNwYWNlIGluIGFuIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIHRvIHRoZSBmaWxlIHNwYWNlCiBt YW5hZ2VtZW50IGlmIHRoZSBmaWVsZCBpbiBkYXRhIGlzIG93bmVkIHRoZSBleHRlcm5hbGx5IHN0 b3JlZCBmaWVsZCwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5j bHVkZS9idWYwYnVmLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J1ZjBi dWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDEzMTA3NTY1MS0wMzk0dDNw cHI2YW8yZXMzCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J1ZjBidWYuaAly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTEwOC1rNXFxdnJpMTNidzg1 ZHN2CkBAIC0zNjgsNyArMzY4LDcgQEAgYnVmX3Jlc2V0X2NoZWNrX2luZGV4X3BhZ2VfYXRfZmx1 c2goCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGludAlzcGFjZSwJ LyohPCBpbjogc3BhY2UgaWQgKi8KIAl1bGludAlvZmZzZXQpOy8qITwgaW46IHBhZ2UgbnVtYmVy ICovCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RF QlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBTZXRzIGZpbGVfcGFnZV93YXNfZnJlZWQgVFJVRSBpZiB0aGUgcGFnZSBpcyBmb3VuZCBpbiB0 aGUgYnVmZmVyIHBvb2wuCiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB3ZSBm cmVlIGEgZmlsZSBwYWdlIGFuZCB3YW50IHRoZQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJ1Zl9wYWdl X3Jlc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwogCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwogCXVsaW50CW9mZnNl dCk7CS8qITwgaW46IHBhZ2UgbnVtYmVyICovCi0jZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FD Q0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVC VUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIFJlYWRzIHRoZSBmcmVlZF9wYWdlX2Nsb2NrIG9mIGEg YnVmZmVyIGJsb2NrLgogQHJldHVybglmcmVlZF9wYWdlX2Nsb2NrICovCkBAIC0xMTM1LDExICsx MTM1LDExIEBAIHN0cnVjdCBidWZfcGFnZV9zdHJ1Y3R7CiAJCQkJCTAgaWYgdGhlIGJsb2NrIHdh cyBuZXZlciBhY2Nlc3NlZAogCQkJCQlpbiB0aGUgYnVmZmVyIHBvb2wgKi8KIAkvKiBAfSAqLwot IyBpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyMgaWYgZGVmaW5lZCBVTklWX0RFQlVH X0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJaWJvb2wJCWZpbGVfcGFnZV93 YXNfZnJlZWQ7CiAJCQkJCS8qITwgdGhpcyBpcyBzZXQgdG8gVFJVRSB3aGVuIGZzcAogCQkJCQlm cmVlcyBhIHBhZ2UgaW4gYnVmZmVyIHBvb2wgKi8KLSMgZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTICovCisjIGVuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklW X0RFQlVHICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiB9OwogCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdW5pdi5pJwotLS0gYS9zdG9y YWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTAxMzEwNzU2NTEtMDM5NHQzcHByNmFvMmVzMworKysgYi9zdG9yYWdlL2lubm9k Yl9wbHVnaW4vaW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTAyMDIxMzUxMDgtazVxcXZyaTEzYnc4NWRzdgpAQCAtMTc3LDE0ICsxNzcsMTUgQEAgY29tbWFu ZC4gTm90IHRlc3RlZCBvbiBXaW5kb3dzLiAqLwogCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5J Vl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0JVRl9ERUJVRwkJCQkvKiBFbmFibGUgYnVmZmVyIHBv b2wKIAkJCQkJCWRlYnVnZ2luZyB3aXRob3V0IFVOSVZfREVCVUcgKi8KKyNkZWZpbmUgVU5JVl9C TE9CX0xJR0hUX0RFQlVHCQkJLyogRW5hYmxlIG9mZi1wYWdlIGNvbHVtbgorCQkJCQkJZGVidWdn aW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0RFQlVHCQkJCS8qIEVuYWJs ZSB1dF9hZCgpIGFzc2VydGlvbnMKIAkJCQkJCWFuZCBkaXNhYmxlIFVOSVZfSU5MSU5FICovCiAj ZGVmaW5lIFVOSVZfREVCVUdfTE9DS19WQUxJREFURQkJLyogRW5hYmxlCiAJCQkJCQl1dF9hZChs b2NrX3JlY192YWxpZGF0ZV9wYWdlKCkpCiAJCQkJCQlhc3NlcnRpb25zLiAqLwotI2RlZmluZSBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMJCS8qIERlYnVnIC5pYmQgZmlsZSBhY2Nlc3MKLQkJCQkJ CShmaWVsZCBmaWxlX3BhZ2Vfd2FzX2ZyZWVkCi0JCQkJCQlpbiBidWZfcGFnZV90KSAqLworI2Rl ZmluZSBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMJCS8qIEVuYWJsZSBmcmVlZCBibG9jayBhY2Nl c3MKKwkJCQkJCWRlYnVnZ2luZyB3aXRob3V0IFVOSVZfREVCVUcgKi8KICNkZWZpbmUgVU5JVl9M UlVfREVCVUcJCQkJLyogZGVidWcgdGhlIGJ1ZmZlciBwb29sIExSVSAqLwogI2RlZmluZSBVTklW X0hBU0hfREVCVUcJCQkJLyogZGVidWcgSEFTSF8gbWFjcm9zICovCiAjZGVmaW5lIFVOSVZfTElT VF9ERUJVRwkJCQkvKiBkZWJ1ZyBVVF9MSVNUXyBtYWNyb3MgKi8KCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBpbnMuYycKLS0tIGEvc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL3Jvdy9yb3cwaW5zLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTAxMzEwNzU2NTEtMDM5NHQzcHByNmFvMmVzMworKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4v cm93L3JvdzBpbnMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTEw OC1rNXFxdnJpMTNidzg1ZHN2CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBmdW5jdGlvbl9leGl0Ogog CiAJCWVyciA9IGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQlpbmRleCwgYnRy X2N1cl9nZXRfYmxvY2soJmN1cnNvciksCi0JCQlyZWMsIG9mZnNldHMsIGJpZ19yZWMsICZtdHIp OworCQkJcmVjLCBvZmZzZXRzLCAmbXRyLCBGQUxTRSwgYmlnX3JlYyk7CiAKIAkJaWYgKG1vZGlm eSkgewogCQkJZHR1cGxlX2JpZ19yZWNfZnJlZShiaWdfcmVjKTsKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBwdXJnZS5jJwotLS0gYS9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vcm93L3JvdzBwdXJnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMTMxMDc1NjUxLTAzOTR0M3BwcjZhbzJlczMKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL3Jvdy9yb3cwcHVyZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIw MjEzNTEwOC1rNXFxdnJpMTNidzg1ZHN2CkBAIC02MTMsNDcgKzYxMywzMiBAQCBlcnJfZXhpdDoK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIEZldGNoZXMgYW4gdW5kbyBsb2cgcmVjb3JkIGFuZCBkb2VzIHRoZSBwdXJnZSBm b3IgdGhlIHJlY29yZGVkIG9wZXJhdGlvbi4KIElmIG5vbmUgbGVmdCwgb3IgdGhlIGN1cnJlbnQg cHVyZ2UgY29tcGxldGVkLCByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZQotcGFyZW50IG5vZGUs IHdoaWNoIGlzIGFsd2F5cyBhIHF1ZXJ5IHRocmVhZCBub2RlLgotQHJldHVybglEQl9TVUNDRVNT IGlmIG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkLCBlbHNlIGVycm9yIGNvZGUgKi8K LXN0YXRpYwotdWxpbnQKK3BhcmVudCBub2RlLCB3aGljaCBpcyBhbHdheXMgYSBxdWVyeSB0aHJl YWQgbm9kZS4gKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKK3ZvaWQKIHJvd19w dXJnZSgKIC8qPT09PT09Ki8KIAlwdXJnZV9ub2RlX3QqCW5vZGUsCS8qITwgaW46IHJvdyBwdXJn ZSBub2RlICovCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewot CXJvbGxfcHRyX3QJcm9sbF9wdHI7Ci0JaWJvb2wJCXB1cmdlX25lZWRlZDsKIAlpYm9vbAkJdXBk YXRlZF9leHRlcm47Ci0JdHJ4X3QqCQl0cng7CiAKLQl1dF9hZChub2RlICYmIHRocik7Ci0KLQl0 cnggPSB0aHJfZ2V0X3RyeCh0aHIpOworCXV0X2FkKG5vZGUpOworCXV0X2FkKHRocik7CiAKLQlu b2RlLT51bmRvX3JlYyA9IHRyeF9wdXJnZV9mZXRjaF9uZXh0X3JlYygmcm9sbF9wdHIsCi0JCQkJ CQkgICYobm9kZS0+cmVzZXJ2YXRpb24pLAorCW5vZGUtPnVuZG9fcmVjID0gdHJ4X3B1cmdlX2Zl dGNoX25leHRfcmVjKCZub2RlLT5yb2xsX3B0ciwKKwkJCQkJCSAgJm5vZGUtPnJlc2VydmF0aW9u LAogCQkJCQkJICBub2RlLT5oZWFwKTsKIAlpZiAoIW5vZGUtPnVuZG9fcmVjKSB7CiAJCS8qIFB1 cmdlIGNvbXBsZXRlZCBmb3IgdGhpcyBxdWVyeSB0aHJlYWQgKi8KIAogCQl0aHItPnJ1bl9ub2Rl ID0gcXVlX25vZGVfZ2V0X3BhcmVudChub2RlKTsKIAotCQlyZXR1cm4oREJfU1VDQ0VTUyk7CisJ CXJldHVybjsKIAl9CiAKLQlub2RlLT5yb2xsX3B0ciA9IHJvbGxfcHRyOwotCi0JaWYgKG5vZGUt PnVuZG9fcmVjID09ICZ0cnhfcHVyZ2VfZHVtbXlfcmVjKSB7Ci0JCXB1cmdlX25lZWRlZCA9IEZB TFNFOwotCX0gZWxzZSB7Ci0JCXB1cmdlX25lZWRlZCA9IHJvd19wdXJnZV9wYXJzZV91bmRvX3Jl Yyhub2RlLCAmdXBkYXRlZF9leHRlcm4sCi0JCQkJCQkJdGhyKTsKLQkJLyogSWYgcHVyZ2VfbmVl ZGVkID09IFRSVUUsIHdlIG11c3QgYWxzbyByZW1lbWJlciB0byB1bmZyZWV6ZQotCQlkYXRhIGRp Y3Rpb25hcnkhICovCi0JfQotCi0JaWYgKHB1cmdlX25lZWRlZCkgeworCWlmIChub2RlLT51bmRv X3JlYyAhPSAmdHJ4X3B1cmdlX2R1bW15X3JlYworCSAgICAmJiByb3dfcHVyZ2VfcGFyc2VfdW5k b19yZWMobm9kZSwgJnVwZGF0ZWRfZXh0ZXJuLCB0aHIpKSB7CiAJCW5vZGUtPmZvdW5kX2NsdXN0 ID0gRkFMU0U7CiAKIAkJbm9kZS0+aW5kZXggPSBkaWN0X3RhYmxlX2dldF9uZXh0X2luZGV4KApA QCAtNjcyLDcgKzY1Nyw3IEBAIHJvd19wdXJnZSgKIAkJCWJ0cl9wY3VyX2Nsb3NlKCYobm9kZS0+ cGN1cikpOwogCQl9CiAKLQkJcm93X215c3FsX3VuZnJlZXplX2RhdGFfZGljdGlvbmFyeSh0cngp OworCQlyb3dfbXlzcWxfdW5mcmVlemVfZGF0YV9kaWN0aW9uYXJ5KHRocl9nZXRfdHJ4KHRocikp OwogCX0KIAogCS8qIERvIHNvbWUgY2xlYW51cCAqLwpAQCAtNjgwLDggKzY2NSw2IEBAIHJvd19w dXJnZSgKIAltZW1faGVhcF9lbXB0eShub2RlLT5oZWFwKTsKIAogCXRoci0+cnVuX25vZGUgPSBu b2RlOwotCi0JcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC02OTUsOSArNjc4 LDYgQEAgcm93X3B1cmdlX3N0ZXAoCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRo cmVhZCAqLwogewogCXB1cmdlX25vZGVfdCoJbm9kZTsKLSNpZmRlZiBVTklWX0RFQlVHCi0JdWxp bnQJCWVycjsKLSNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKIAl1dF9hZCh0aHIpOwogCkBAIC03 MDUsMTIgKzY4NSw3IEBAIHJvd19wdXJnZV9zdGVwKAogCiAJdXRfYWQocXVlX25vZGVfZ2V0X3R5 cGUobm9kZSkgPT0gUVVFX05PREVfUFVSR0UpOwogCi0jaWZkZWYgVU5JVl9ERUJVRwotCWVyciA9 Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCXJvd19wdXJnZShub2RlLCB0aHIpOwogCi0JdXRf YWQoZXJyID09IERCX1NVQ0NFU1MpOwotCiAJcmV0dXJuKHRocik7CiB9Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdW1vZC5jJwotLS0gYS9zdG9yYWdl L2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTAxMzEwNzU2NTEtMDM5NHQzcHByNmFvMmVzMworKysgYi9zdG9yYWdlL2lubm9kYl9w bHVnaW4vcm93L3JvdzB1bW9kLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAy MDIxMzUxMDgtazVxcXZyaTEzYnc4NWRzdgpAQCAtMTczLDQwICsxNzMsMjYgQEAgcm93X3VuZG9f bW9kX3JlbW92ZV9jbHVzdF9sb3coCiAJbXRyX3QqCQltdHIsCS8qITwgaW46IG10ciAqLwogCXVs aW50CQltb2RlKQkvKiE8IGluOiBCVFJfTU9ESUZZX0xFQUYgb3IgQlRSX01PRElGWV9UUkVFICov CiB7Ci0JYnRyX3BjdXJfdCoJcGN1cjsKIAlidHJfY3VyX3QqCWJ0cl9jdXI7CiAJdWxpbnQJCWVy cjsKLQlpYm9vbAkJc3VjY2VzczsKIAogCXV0X2FkKG5vZGUtPnJlY190eXBlID09IFRSWF9VTkRP X1VQRF9ERUxfUkVDKTsKLQlwY3VyID0gJihub2RlLT5wY3VyKTsKLQlidHJfY3VyID0gYnRyX3Bj dXJfZ2V0X2J0cl9jdXIocGN1cik7CiAKLQlzdWNjZXNzID0gYnRyX3BjdXJfcmVzdG9yZV9wb3Np dGlvbihtb2RlLCBwY3VyLCBtdHIpOworCS8qIEZpbmQgb3V0IGlmIHRoZSByZWNvcmQgaGFzIGJl ZW4gcHVyZ2VkIGFscmVhZHkKKwlvciBpZiB3ZSBjYW4gcmVtb3ZlIGl0LiAqLwogCi0JaWYgKCFz dWNjZXNzKSB7CisJaWYgKCFidHJfcGN1cl9yZXN0b3JlX3Bvc2l0aW9uKG1vZGUsICZub2RlLT5w Y3VyLCBtdHIpCisJICAgIHx8IHJvd192ZXJzX211c3RfcHJlc2VydmVfZGVsX21hcmtlZChub2Rl LT5uZXdfdHJ4X2lkLCBtdHIpKSB7CiAKIAkJcmV0dXJuKERCX1NVQ0NFU1MpOwogCX0KIAotCS8q IEZpbmQgb3V0IGlmIHdlIGNhbiByZW1vdmUgdGhlIHdob2xlIGNsdXN0ZXJlZCBpbmRleCByZWNv cmQgKi8KLQotCWlmIChub2RlLT5yZWNfdHlwZSA9PSBUUlhfVU5ET19VUERfREVMX1JFQwotCSAg ICAmJiAhcm93X3ZlcnNfbXVzdF9wcmVzZXJ2ZV9kZWxfbWFya2VkKG5vZGUtPm5ld190cnhfaWQs IG10cikpIHsKLQotCQkvKiBPaywgd2UgY2FuIHJlbW92ZSAqLwotCX0gZWxzZSB7Ci0JCXJldHVy bihEQl9TVUNDRVNTKTsKLQl9CisJYnRyX2N1ciA9IGJ0cl9wY3VyX2dldF9idHJfY3VyKCZub2Rl LT5wY3VyKTsKIAogCWlmIChtb2RlID09IEJUUl9NT0RJRllfTEVBRikgewotCQlzdWNjZXNzID0g YnRyX2N1cl9vcHRpbWlzdGljX2RlbGV0ZShidHJfY3VyLCBtdHIpOwotCi0JCWlmIChzdWNjZXNz KSB7Ci0JCQllcnIgPSBEQl9TVUNDRVNTOwotCQl9IGVsc2UgewotCQkJZXJyID0gREJfRkFJTDsK LQkJfQorCQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfZGVsZXRlKGJ0cl9jdXIsIG10cikKKwkJ CT8gREJfU1VDQ0VTUworCQkJOiBEQl9GQUlMOwogCX0gZWxzZSB7CiAJCXV0X2FkKG1vZGUgPT0g QlRSX01PRElGWV9UUkVFKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1 cGQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDEzMTA3NTY1MS0wMzk0dDNw cHI2YW8yZXMzCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjAyMTM1MTA4LWs1cXF2cmkxM2J3ODVkc3YK QEAgLTE5NTIsNyArMTk1Miw3IEBAIHJvd191cGRfY2x1c3RfcmVjKAogCQkJaW5kZXgsIGJ0cl9j dXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLCByZWMsCiAJCQlyZWNfZ2V0X29mZnNldHMocmVjLCBpbmRl eCwgb2Zmc2V0c18sCiAJCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApLAotCQkJYmlnX3JlYywg bXRyKTsKKwkJCW10ciwgVFJVRSwgYmlnX3JlYyk7CiAJCW10cl9jb21taXQobXRyKTsKIAl9CiAK Cg== --===============1067219615== 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.1-innodb/ # testament_sha1: af3398260db13cc846559e889984aed6a7ce1472 # timestamp: 2011-02-02 16:13:13 +0200 # base_revision_id: marko.makela@stripped\ # 0394t3ppr6ao2es3 # # Begin bundle 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 --===============1067219615==--