From: marko.makela Date: June 2 2010 11:37am Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3135 to 3137) List-Archive: http://lists.mysql.com/commits/109955 Message-Id: <201006021138.o52BYYM7014942@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0862889819==" --===============0862889819== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMxMzcgTWFya28gTcOka2Vsw6QJMjAxMC0wNi0wMgogICAgICBNZXJnZSBmcm9tIG15c3FsLTUu MS1pbm5vZGI6CiAgICAgIAogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgcmV2bm86IDM0OTUKICAgICAgY29tbWl0 dGVyOiBNYXJrbyBNw6RrZWzDpCA8bWFya28ubWFrZWxhQG9yYWNsZS5jb20+CiAgICAgIGJyYW5j aCBuaWNrOiA1LjEtaW5ub2RiCiAgICAgIHRpbWVzdGFtcDogV2VkIDIwMTAtMDYtMDIgMTM6Mzc6 MTQgKzAzMDAKICAgICAgbWVzc2FnZToKICAgICAgICBCdWcjNTM2NzQ6IElubm9EQjogRXJyb3I6 IHVubG9jayByb3cgY291bGQgbm90IGZpbmQgYSA0IG1vZGUgbG9jayBvbiB0aGUgcmVjb3JkCiAg ICAgIAogICAgICAgIEluIHNlbWktY29uc2lzdGVudCByZWFkLCBvbmx5IHVubG9jayBmcmVzaGx5 IGxvY2tlZCBub24tbWF0Y2hpbmcgcmVjb3Jkcy4KICAgICAgCiAgICAgICAgbG9ja19yZWNfbG9j a19mYXN0KCk6IFJldHVybiBMT0NLX1JFQ19TVUNDRVNTLAogICAgICAgIExPQ0tfUkVDX1NVQ0NF U1NfQ1JFQVRFRCwgb3IgTE9DS19SRUNfRkFJTCBpbnN0ZWFkIG9mIFRSVUUvRkFMU0UuCiAgICAg IAogICAgICAgIGVudW0gZGJfZXJyOiBBZGQgREJfU1VDQ0VTU19MT0NLRURfUkVDIGZvciBpbmRp Y2F0aW5nIGEgc3VjY2Vzc2Z1bAogICAgICAgIG9wZXJhdGlvbiB3aGVyZSBhIHJlY29yZCBsb2Nr IHdhcyBjcmVhdGVkLgogICAgICAKICAgICAgICBsb2NrX3NlY19yZWNfcmVhZF9jaGVja19hbmRf bG9jaygpLAogICAgICAgIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soKSwgbG9j a19yZWNfZW5xdWV1ZV93YWl0aW5nKCksCiAgICAgICAgbG9ja19yZWNfbG9ja19zbG93KCksIGxv Y2tfcmVjX2xvY2soKSwgcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKCksCiAgICAgICAgcm93 X2luc19zZXRfZXhjbHVzaXZlX3JlY19sb2NrKCksIHNlbF9zZXRfcmVjX2xvY2soKSwKICAgICAg ICByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKCk6IFJldHVybiBEQl9TVUNDRVNTX0xP Q0tFRF9SRUMgaWYgYQogICAgICAgIG5ldyByZWNvcmQgbG9jayB3YXMgY3JlYXRlZC4gQWRqdXN0 IGNhbGxlcnMuCiAgICAgIAogICAgICAgIHJvd191bmxvY2tfZm9yX215c3FsKCk6IENvcnJlY3Qg dGhlIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24uCiAgICAgIAogICAgICAgIHJvd19wcmVidWlsdF90 OjpuZXdfcmVjX2xvY2tzOiBDb3JyZWN0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgIGFkZGVkOgog ICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1MzY3NC5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM2NzQtbWFzdGVyLm9wdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50ZXN0CiAgICBt b2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2NrMGxvY2suaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcm93MG15c3FsLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9j ay5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2Vs LmMKIDMxMzYgTWFya28gTcOka2Vsw6QJMjAxMC0wNi0wMgogICAgICBNZXJnZSBmcm9tIG15c3Fs LTUuMS1pbm5vZGI6CiAgICAgIAogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgcmV2bm86IDM0OTMKICAgICAgcmV2 aXNpb24taWQ6IG1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAxOTQwLTYweDMyeGlp dnRxajl2YTEKICAgICAgcGFyZW50OiBtYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMTEz NTgwMi1oZ3BsY3ByODA4OXVyYThnCiAgICAgIGNvbW1pdHRlcjogTWFya28gTcOka2Vsw6QgPG1h cmtvLm1ha2VsYUBvcmFjbGUuY29tPgogICAgICBicmFuY2ggbmljazogNS4xLWlubm9kYgogICAg ICB0aW1lc3RhbXA6IFdlZCAyMDEwLTA2LTAyIDEzOjE5OjQwICswMzAwCiAgICAgIG1lc3NhZ2U6 CiAgICAgICAgZmlsX3ByaW50X29ycGhhbmVkX3RhYmxlc3BhY2VzKCk6IFVudXNlZCBmdW5jdGlv biwgcmVtb3ZlLgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2ZpbC9maWww ZmlsLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2ZpbDBmaWwuaAogMzEzNSBKaW1t eSBZYW5nCTIwMTAtMDYtMDIKICAgICAgUG9ydCBidWcgZml4ICM1MzU5MiBmcm9tIG15c3FsLTUu MS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIGFkZGVkOgogICAgICBteXNxbC10 ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1MzU5Mi5yZXN1bHQKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM1OTIudGVzdAogICAgbW9kaWZpZWQ6CiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3JvdzBteXNxbC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBt eXNxbC5jCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9i dWc1MzY3NC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1 ZzUzNjc0LnJlc3VsdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzUzNjc0LnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEwMDYwMjExMzczMy1mc2xmdjczbmhpMGQxN3Q0CkBAIC0wLDAgKzEsMTEg QEAKK2NyZWF0ZSB0YWJsZSBidWc1MzY3NChhIGludCllbmdpbmU9aW5ub2RiOworaW5zZXJ0IGlu dG8gYnVnNTM2NzQgdmFsdWVzICgxKSwoMik7CitzdGFydCB0cmFuc2FjdGlvbjsKK3NlbGVjdCAq IGZyb20gYnVnNTM2NzQgZm9yIHVwZGF0ZTsKK2EKKzEKKzIKK3NlbGVjdCAqIGZyb20gYnVnNTM2 NzQgd2hlcmUgYT0oc2VsZWN0IGEgZnJvbSBidWc1MzY3NCB3aGVyZSBhID4gMSk7CithCisyCitk cm9wIHRhYmxlIGJ1ZzUzNjc0OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5u b2RiL3QvaW5ub2RiX2J1ZzUzNjc0LW1hc3Rlci5vcHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3QvaW5ub2RiX2J1ZzUzNjc0LW1hc3Rlci5vcHQJMTk3MC0wMS0wMSAwMDowMDowMCAr MDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC1tYXN0 ZXIub3B0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2 NzNuaGkwZDE3dDQKQEAgLTAsMCArMSBAQAorLS1sb2ctYmluIC0taW5ub2RiLWxvY2tzLXVuc2Fm ZS1mb3ItYmlubG9nIC0tYmlubG9nLWZvcm1hdD1taXhlZAoKPT09IGFkZGVkIGZpbGUgJ215c3Fs LXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUzNjc0LnRlc3QnCi0tLSBhL215c3FsLXRl c3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUzNjc0LnRlc3QJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1MzY3NC50 ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNu aGkwZDE3dDQKQEAgLTAsMCArMSw4IEBACistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5p bmMKKworY3JlYXRlIHRhYmxlIGJ1ZzUzNjc0KGEgaW50KWVuZ2luZT1pbm5vZGI7CitpbnNlcnQg aW50byBidWc1MzY3NCB2YWx1ZXMgKDEpLCgyKTsKK3N0YXJ0IHRyYW5zYWN0aW9uOworc2VsZWN0 ICogZnJvbSBidWc1MzY3NCBmb3IgdXBkYXRlOworc2VsZWN0ICogZnJvbSBidWc1MzY3NCB3aGVy ZSBhPShzZWxlY3QgYSBmcm9tIGJ1ZzUzNjc0IHdoZXJlIGEgPiAxKTsKK2Ryb3AgdGFibGUgYnVn NTM2NzQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5j JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMJcmV2aWQ6amltbXkueWFuZ0Bv cmFjbGUuY29tLTIwMTAwNjAyMTEwNDAwLTU2OGEzYjJnZDl1eHh4dmcKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9maWwvZmlsMGZpbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAw NjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQKQEAgLTM1NjQsMzkgKzM1NjQsNiBAQCBuZXh0X2Rh dGFkaXJfaXRlbToKIAlyZXR1cm4oZXJyKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotSWYgd2Ug bmVlZCBjcmFzaCByZWNvdmVyeSwgYW5kIHdlIGhhdmUgY2FsbGVkCi1maWxfbG9hZF9zaW5nbGVf dGFibGVfdGFibGVzcGFjZXMoKSBhbmQgZGljdF9sb2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNl cygpLAotd2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBwcmludCBhbiBlcnJvciBtZXNzYWdl IG9mIG9ycGhhbmVkIC5pYmQgZmlsZXMKLWZvciB3aGljaCB0aGVyZSBpcyBub3QgYSBkYXRhIGRp Y3Rpb25hcnkgZW50cnkgd2l0aCBhIG1hdGNoaW5nIHRhYmxlIG5hbWUKLWFuZCBzcGFjZSBpZC4g Ki8KLVVOSVZfSU5URVJOCi12b2lkCi1maWxfcHJpbnRfb3JwaGFuZWRfdGFibGVzcGFjZXModm9p ZCkKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotewotCWZpbF9zcGFjZV90 KglzcGFjZTsKLQotCW11dGV4X2VudGVyKCZmaWxfc3lzdGVtLT5tdXRleCk7Ci0KLQlzcGFjZSA9 IFVUX0xJU1RfR0VUX0ZJUlNUKGZpbF9zeXN0ZW0tPnNwYWNlX2xpc3QpOwotCi0Jd2hpbGUgKHNw YWNlKSB7Ci0JCWlmIChzcGFjZS0+cHVycG9zZSA9PSBGSUxfVEFCTEVTUEFDRSAmJiBzcGFjZS0+ aWQgIT0gMAotCQkgICAgJiYgIXNwYWNlLT5tYXJrKSB7Ci0JCQlmcHV0cygiSW5ub0RCOiBXYXJu aW5nOiB0YWJsZXNwYWNlICIsIHN0ZGVycik7Ci0JCQl1dF9wcmludF9maWxlbmFtZShzdGRlcnIs IHNwYWNlLT5uYW1lKTsKLQkJCWZwcmludGYoc3RkZXJyLCAiIG9mIGlkICVsdSBoYXMgbm8gbWF0 Y2hpbmcgdGFibGUgaW5cbiIKLQkJCQkiSW5ub0RCOiB0aGUgSW5ub0RCIGRhdGEgZGljdGlvbmFy eS5cbiIsCi0JCQkJKHVsb25nKSBzcGFjZS0+aWQpOwotCQl9Ci0KLQkJc3BhY2UgPSBVVF9MSVNU X0dFVF9ORVhUKHNwYWNlX2xpc3QsIHNwYWNlKTsKLQl9Ci0KLQltdXRleF9leGl0KCZmaWxfc3lz dGVtLT5tdXRleCk7Ci19Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyBUUlVFIGlmIGEgc2lu Z2xlLXRhYmxlIHRhYmxlc3BhY2UgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1lbW9yeSBjYWNoZSwK IG9yIGlzIGJlaW5nIGRlbGV0ZWQgdGhlcmUuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv ZGIwZXJyLmgJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAwNjAyMTEwNDAwLTU2OGEz YjJnZDl1eHh4dmcKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQK QEAgLTI4LDYgKzI4LDggQEAgQ3JlYXRlZCA1LzI0LzE5OTYgSGVpa2tpIFR1dXJpCiAKIAogZW51 bSBkYl9lcnIgeworCURCX1NVQ0NFU1NfTE9DS0VEX1JFQyA9IDksCS8qITwgbGlrZSBEQl9TVUND RVNTLCBidXQgYSBuZXcKKwkJCQkJZXhwbGljaXQgcmVjb3JkIGxvY2sgd2FzIGNyZWF0ZWQgKi8K IAlEQl9TVUNDRVNTID0gMTAsCiAKIAkvKiBUaGUgZm9sbG93aW5nIGFyZSBlcnJvciBjb2RlcyAq LwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9maWwwZmlsLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9maWwwZmlsLmgJcmV2aWQ6amltbXkueWFu Z0BvcmFjbGUuY29tLTIwMTAwNjAyMTEwNDAwLTU2OGEzYjJnZDl1eHh4dmcKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2ZpbDBmaWwuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEwMDYwMjExMzczMy1mc2xmdjczbmhpMGQxN3Q0CkBAIC01MDYsMTYgKzUwNiw2IEBAIFVO SVZfSU5URVJOCiB1bGludAogZmlsX2xvYWRfc2luZ2xlX3RhYmxlX3RhYmxlc3BhY2VzKHZvaWQp OwogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCi1JZiB3ZSBuZWVkIGNyYXNoIHJlY292ZXJ5LCBhbmQgd2UgaGF2ZSBjYWxsZWQKLWZpbF9s b2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlcygpIGFuZCBkaWN0X2xvYWRfc2luZ2xlX3RhYmxl X3RhYmxlc3BhY2VzKCksCi13ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHByaW50IGFuIGVy cm9yIG1lc3NhZ2Ugb2Ygb3JwaGFuZWQgLmliZCBmaWxlcwotZm9yIHdoaWNoIHRoZXJlIGlzIG5v dCBhIGRhdGEgZGljdGlvbmFyeSBlbnRyeSB3aXRoIGEgbWF0Y2hpbmcgdGFibGUgbmFtZQotYW5k IHNwYWNlIGlkLiAqLwotVU5JVl9JTlRFUk4KLXZvaWQKLWZpbF9wcmludF9vcnBoYW5lZF90YWJs ZXNwYWNlcyh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCiBSZXR1cm5zIFRSVUUgaWYgYSBzaW5nbGUtdGFibGUgdGFibGVzcGFjZSBk b2VzIG5vdCBleGlzdCBpbiB0aGUgbWVtb3J5IGNhY2hlLAogb3IgaXMgYmVpbmcgZGVsZXRlZCB0 aGVyZS4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9jazBs b2NrLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2NrMGxvY2suaAlyZXZpZDpq aW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDA2MDIxMTA0MDAtNTY4YTNiMmdkOXV4eHh2ZworKysg Yi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9jazBsb2NrLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3M25oaTBkMTd0NApAQCAtMzQwLDExICsz NDAsMTIgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9jaGVja19hbmRfbG9jaygKIAlxdWVfdGhyX3Qq CXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJbXRyX3QqCQltdHIpOwkvKiE8IGluL291 dDogbWluaS10cmFuc2FjdGlvbiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUxpa2UgdGhlIGNvdW50 ZXJwYXJ0IGZvciBhIGNsdXN0ZXJlZCBpbmRleCBiZWxvdywgYnV0IG5vdyB3ZSByZWFkIGEKK0xp a2UgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBidXQgcmVhZHMgYQogc2Vj b25kYXJ5IGluZGV4IHJlY29yZC4KLUByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBE Ql9ERUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KK0ByZXR1cm4JREJfU1VDQ0VT UywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3Ig REJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KIFVOSVZfSU5URVJOCi11bGludAorZW51bSBkYl9lcnIK IGxvY2tfc2VjX3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSovCiAJdWxpbnQJCQlmbGFncywJLyohPCBpbjogaWYgQlRSX05PX0xPQ0tJTkdf RkxBRwpAQCAtMzcxLDkgKzM3MiwxMCBAQCBpZiB0aGUgcXVlcnkgdGhyZWFkIHNob3VsZCBhbnl3 YXkgYmUgc3VzCiBwdXRzIHRoZSB0cmFuc2FjdGlvbiBhbmQgdGhlIHF1ZXJ5IHRocmVhZCB0byB0 aGUgbG9jayB3YWl0IHN0YXRlIGFuZCBpbnNlcnRzIGEKIHdhaXRpbmcgcmVxdWVzdCBmb3IgYSBy ZWNvcmQgbG9jayB0byB0aGUgbG9jayBxdWV1ZS4gU2V0cyB0aGUgcmVxdWVzdGVkIG1vZGUKIGxv Y2sgb24gdGhlIHJlY29yZC4KLUByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9E RUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywg REJfU1VDQ0VTU19MT0NLRURfUkVDLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3IgREJf UVVFX1RIUl9TVVNQRU5ERUQgKi8KIFVOSVZfSU5URVJOCi11bGludAorZW51bSBkYl9lcnIKIGxv Y2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwogCXVsaW50CQkJZmxhZ3MsCS8qITwgaW46IGlmIEJUUl9OT19MT0NLSU5H X0ZMQUcKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15 c3FsLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbXlzcWwuaAlyZXZpZDpq aW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDA2MDIxMTA0MDAtNTY4YTNiMmdkOXV4eHh2ZworKysg Yi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3M25oaTBkMTd0NApAQCAtMjY0LDI3ICsy NjQsMjYgQEAgcm93X3VwZGF0ZV9mb3JfbXlzcWwoCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0 KTsJLyohPCBpbjogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCiAJCQkJCWhhbmRsZSAqLwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKLVRoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191bnNh ZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yCi1zZXNzaW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRU RUQgaXNvbGF0aW9uIGxldmVsLiBCZWZvcmUKLWNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3ZSBtdXN0 IHVzZSB0cnhfcmVzZXRfbmV3X3JlY19sb2NrX2luZm8oKSBhbmQKLXRyeF9yZWdpc3Rlcl9uZXdf cmVjX2xvY2soKSB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3IHJlY29yZCBsb2Nr cwotcmVhbGx5IHdlcmUgc2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQgbG9j ayB1bmRlciBwcmVidWlsdC0+cGN1ciwKLWFuZCBhbHNvIHVuZGVyIHByZWJ1aWx0LT5jbHVzdF9w Y3VyLiBDdXJyZW50bHksIHRoaXMgaXMgb25seSB1c2VkIGFuZCB0ZXN0ZWQKLWluIHRoZSBjYXNl IG9mIGFuIFVQREFURSBvciBhIERFTEVURSBzdGF0ZW1lbnQsIHdoZXJlIHRoZSByb3cgbG9jayBp cyBvZiB0aGUKLUxPQ0tfWCB0eXBlLgotVGh1cywgdGhpcyBpbXBsZW1lbnRzIGEgJ21pbmktcm9s bGJhY2snIHRoYXQgcmVsZWFzZXMgdGhlIGxhdGVzdCByZWNvcmQKLWxvY2tzIHdlIHNldC4KLUBy ZXR1cm4JZXJyb3IgY29kZSBvciBEQl9TVUNDRVNTICovCitUaGlzIGNhbiBvbmx5IGJlIHVzZWQg d2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMgVFJVRSBvciB0aGlzCitzZXNzaW9u IGlzIHVzaW5nIGEgUkVBRCBDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRpb24g bGV2ZWwuCitCZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJvd19zZWFyY2hfZm9yX215c3Fs KCkgbXVzdCBoYXZlCitpbml0aWFsaXplZCBwcmVidWlsdC0+bmV3X3JlY19sb2NrcyB0byBzdG9y ZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3CityZWNvcmQgbG9ja3MgcmVhbGx5IHdlcmUgc2V0 LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBzZXQKK2NsdXN0ZXJlZCBpbmRleCByZWNv cmQgbG9jayB1bmRlciBwcmVidWlsdC0+cGN1ciBvcgorcHJlYnVpbHQtPmNsdXN0X3BjdXIuICBU aHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xsYmFjaycgdGhhdAorcmVsZWFzZXMgdGhl IGxhdGVzdCBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxvY2sgd2Ugc2V0LgorQHJldHVybiBlcnJv ciBjb2RlIG9yIERCX1NVQ0NFU1MgKi8KIFVOSVZfSU5URVJOCiBpbnQKIHJvd191bmxvY2tfZm9y X215c3FsKAogLyo9PT09PT09PT09PT09PT09PSovCi0Jcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0 LAkvKiE8IGluOiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlTUUwKKwlyb3dfcHJlYnVpbHRfdCoJcHJl YnVpbHQsCS8qITwgaW4vb3V0OiBwcmVidWlsdCBzdHJ1Y3QgaW4gTXlTUUwKIAkJCQkJaGFuZGxl ICovCi0JaWJvb2wJCWhhc19sYXRjaGVzX29uX3JlY3MpOy8qITwgVFJVRSBpZiBjYWxsZWQgc28g dGhhdCB3ZSBoYXZlCi0JCQkJCXRoZSBsYXRjaGVzIG9uIHRoZSByZWNvcmRzIHVuZGVyIHBjdXIK LQkJCQkJYW5kIGNsdXN0X3BjdXIsIGFuZCB3ZSBkbyBub3QgbmVlZCB0bwotCQkJCQlyZXBvc2l0 aW9uIHRoZSBjdXJzb3JzLiAqLworCWlib29sCQloYXNfbGF0Y2hlc19vbl9yZWNzKTsvKiE8IGlu OiBUUlVFIGlmIGNhbGxlZAorCQkJCQlzbyB0aGF0IHdlIGhhdmUgdGhlIGxhdGNoZXMgb24KKwkJ CQkJdGhlIHJlY29yZHMgdW5kZXIgcGN1ciBhbmQKKwkJCQkJY2x1c3RfcGN1ciwgYW5kIHdlIGRv IG5vdCBuZWVkCisJCQkJCXRvIHJlcG9zaXRpb24gdGhlIGN1cnNvcnMuICovCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogQ3JlYXRlcyBhbiBxdWVyeSBncmFwaCBub2RlIG9mICd1cGRhdGUnIHR5cGUgdG8g YmUgdXNlZCBpbiB0aGUgTXlTUUwKIGludGVyZmFjZS4KQEAgLTcwMiwxOCArNzAxLDE3IEBAIHN0 cnVjdCByb3dfcHJlYnVpbHRfc3RydWN0IHsKIAl1bGludAkJbmV3X3JlY19sb2NrczsJLyohPCBu b3JtYWxseSAwOyBpZgogCQkJCQlzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cgaXMKIAkJCQkJ VFJVRSBvciBzZXNzaW9uIGlzIHVzaW5nIFJFQUQKLQkJCQkJQ09NTUlUVEVEIGlzb2xhdGlvbiBs ZXZlbCwgaW4gYQotCQkJCQljdXJzb3Igc2VhcmNoLCBpZiB3ZSBzZXQgYSBuZXcKLQkJCQkJcmVj b3JkIGxvY2sgb24gYW4gaW5kZXgsIHRoaXMgaXMKLQkJCQkJaW5jcmVtZW50ZWQ7IHRoaXMgaXMg dXNlZCBpbgotCQkJCQlyZWxlYXNpbmcgdGhlIGxvY2tzIHVuZGVyIHRoZQotCQkJCQljdXJzb3Jz IGlmIHdlIGFyZSBwZXJmb3JtaW5nIGFuCi0JCQkJCVVQREFURSBhbmQgd2UgZGV0ZXJtaW5lIGFm dGVyCi0JCQkJCXJldHJpZXZpbmcgdGhlIHJvdyB0aGF0IGl0IGRvZXMKLQkJCQkJbm90IG5lZWQg dG8gYmUgbG9ja2VkOyB0aHVzLAotCQkJCQl0aGVzZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQg YQotCQkJCQknbWluaS1yb2xsYmFjaycgdGhhdCByZWxlYXNlcwotCQkJCQl0aGUgbGF0ZXN0IHJl Y29yZCBsb2NrcyAqLworCQkJCQlDT01NSVRURUQgb3IgUkVBRCBVTkNPTU1JVFRFRAorCQkJCQlp c29sYXRpb24gbGV2ZWwsIHNldCBpbgorCQkJCQlyb3dfc2VhcmNoX2Zvcl9teXNxbCgpIGlmIHdl IHNldCBhIG5ldworCQkJCQlyZWNvcmQgbG9jayBvbiB0aGUgc2Vjb25kYXJ5CisJCQkJCW9yIGNs dXN0ZXJlZCBpbmRleDsgdGhpcyBpcworCQkJCQl1c2VkIGluIHJvd191bmxvY2tfZm9yX215c3Fs KCkKKwkJCQkJd2hlbiByZWxlYXNpbmcgdGhlIGxvY2sgdW5kZXIKKwkJCQkJdGhlIGN1cnNvciBp ZiB3ZSBkZXRlcm1pbmUKKwkJCQkJYWZ0ZXIgcmV0cmlldmluZyB0aGUgcm93IHRoYXQKKwkJCQkJ aXQgZG9lcyBub3QgbmVlZCB0byBiZSBsb2NrZWQKKwkJCQkJKCdtaW5pLXJvbGxiYWNrJykgKi8K IAl1bGludAkJbXlzcWxfcHJlZml4X2xlbjsvKiE8IGJ5dGUgb2Zmc2V0IG9mIHRoZSBlbmQgb2YK IAkJCQkJdGhlIGxhc3QgcmVxdWVzdGVkIGNvbHVtbiAqLwogCXVsaW50CQlteXNxbF9yb3dfbGVu OwkvKiE8IGxlbmd0aCBpbiBieXRlcyBvZiBhIHJvdyBpbiB0aGUKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvbG9jay9sb2NrMGxvY2suYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDA2MDIx MTA0MDAtNTY4YTNiMmdkOXV4eHh2ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBs b2NrLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMTM3MzMtZnNsZnY3 M25oaTBkMTd0NApAQCAtMTczMywxMSArMTczMywxMSBAQCBsb2NrX3JlY19jcmVhdGUoCiBFbnF1 ZXVlcyBhIHdhaXRpbmcgcmVxdWVzdCBmb3IgYSBsb2NrIHdoaWNoIGNhbm5vdCBiZSBncmFudGVk IGltbWVkaWF0ZWx5LgogQ2hlY2tzIGZvciBkZWFkbG9ja3MuCiBAcmV0dXJuIERCX0xPQ0tfV0FJ VCwgREJfREVBRExPQ0ssIG9yIERCX1FVRV9USFJfU1VTUEVOREVELCBvcgotREJfU1VDQ0VTUzsg REJfU1VDQ0VTUyBtZWFucyB0aGF0IHRoZXJlIHdhcyBhIGRlYWRsb2NrLCBidXQgYW5vdGhlcgot dHJhbnNhY3Rpb24gd2FzIGNob3NlbiBhcyBhIHZpY3RpbSwgYW5kIHdlIGdvdCB0aGUgbG9jayBp bW1lZGlhdGVseToKLW5vIG5lZWQgdG8gd2FpdCB0aGVuICovCitEQl9TVUNDRVNTX0xPQ0tFRF9S RUM7IERCX1NVQ0NFU1NfTE9DS0VEX1JFQyBtZWFucyB0aGF0Cit0aGVyZSB3YXMgYSBkZWFkbG9j aywgYnV0IGFub3RoZXIgdHJhbnNhY3Rpb24gd2FzIGNob3NlbiBhcyBhIHZpY3RpbSwKK2FuZCB3 ZSBnb3QgdGhlIGxvY2sgaW1tZWRpYXRlbHk6IG5vIG5lZWQgdG8gd2FpdCB0aGVuICovCiBzdGF0 aWMKLXVsaW50CitlbnVtIGRiX2VycgogbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKAogLyo9PT09 PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQkJdHlwZV9tb2RlLC8qITwgaW46IGxvY2sgbW9k ZSB0aGlzCkBAIC0xODA5LDcgKzE4MDksNyBAQCBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAK IAlpZiAodHJ4LT53YWl0X2xvY2sgPT0gTlVMTCkgewogCi0JCXJldHVybihEQl9TVUNDRVNTKTsK KwkJcmV0dXJuKERCX1NVQ0NFU1NfTE9DS0VEX1JFQyk7CiAJfQogCiAJdHJ4LT5xdWVfc3RhdGUg PSBUUlhfUVVFX0xPQ0tfV0FJVDsKQEAgLTE5MjUsNiArMTkyNSwxNiBAQCBzb21lYm9keV93YWl0 czoKIAlyZXR1cm4obG9ja19yZWNfY3JlYXRlKHR5cGVfbW9kZSwgYmxvY2ssIGhlYXBfbm8sIGlu ZGV4LCB0cngpKTsKIH0KIAorLyoqIFJlY29yZCBsb2NraW5nIHJlcXVlc3Qgc3RhdHVzICovCitl bnVtIGxvY2tfcmVjX3JlcV9zdGF0dXMgeworCS8qKiBGYWlsZWQgdG8gYWNxdWlyZSBhIGxvY2sg Ki8KKwlMT0NLX1JFQ19GQUlMLAorCS8qKiBTdWNjZWVkZWQgaW4gYWNxdWlyaW5nIGEgbG9jayAo aW1wbGljaXQgb3IgYWxyZWFkeSBhY3F1aXJlZCkgKi8KKwlMT0NLX1JFQ19TVUNDRVNTLAorCS8q KiBFeHBsaWNpdGx5IGNyZWF0ZWQgYSBuZXcgbG9jayAqLworCUxPQ0tfUkVDX1NVQ0NFU1NfQ1JF QVRFRAorfTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoaXMgaXMgYSBmYXN0IHJvdXRpbmUgZm9y IGxvY2tpbmcgYSByZWNvcmQgaW4gdGhlIG1vc3QgY29tbW9uIGNhc2VzOgogdGhlcmUgYXJlIG5v IGV4cGxpY2l0IGxvY2tzIG9uIHRoZSBwYWdlLCBvciB0aGVyZSBpcyBqdXN0IG9uZSBsb2NrLCBv d25lZApAQCAtMTkzMiw5ICsxOTQyLDkgQEAgYnkgdGhpcyB0cmFuc2FjdGlvbiwgYW5kIG9mIHRo ZSByaWdodCB0eQogd2hpY2ggZG9lcyBOT1QgbG9vayBhdCBpbXBsaWNpdCBsb2NrcyEgQ2hlY2tz IGxvY2sgY29tcGF0aWJpbGl0eSB3aXRoaW4KIGV4cGxpY2l0IGxvY2tzLiBUaGlzIGZ1bmN0aW9u IHNldHMgYSBub3JtYWwgbmV4dC1rZXkgbG9jaywgb3IgaW4gdGhlIGNhc2Ugb2YKIGEgcGFnZSBz dXByZW11bSByZWNvcmQsIGEgZ2FwIHR5cGUgbG9jay4KLUByZXR1cm4JVFJVRSBpZiBsb2NraW5n IHN1Y2NlZWRlZCAqLworQHJldHVybiB3aGV0aGVyIHRoZSBsb2NraW5nIHN1Y2NlZWRlZCAqLwog VU5JVl9JTkxJTkUKLWlib29sCitlbnVtIGxvY2tfcmVjX3JlcV9zdGF0dXMKIGxvY2tfcmVjX2xv Y2tfZmFzdCgKIC8qPT09PT09PT09PT09PT09Ki8KIAlpYm9vbAkJCWltcGwsCS8qITwgaW46IGlm IFRSVUUsIG5vIGxvY2sgaXMgc2V0CkBAIC0xOTczLDE5ICsxOTgzLDE5IEBAIGxvY2tfcmVjX2xv Y2tfZmFzdCgKIAkJCWxvY2tfcmVjX2NyZWF0ZShtb2RlLCBibG9jaywgaGVhcF9ubywgaW5kZXgs IHRyeCk7CiAJCX0KIAotCQlyZXR1cm4oVFJVRSk7CisJCXJldHVybihMT0NLX1JFQ19TVUNDRVNT X0NSRUFURUQpOwogCX0KIAogCWlmIChsb2NrX3JlY19nZXRfbmV4dF9vbl9wYWdlKGxvY2spKSB7 CiAKLQkJcmV0dXJuKEZBTFNFKTsKKwkJcmV0dXJuKExPQ0tfUkVDX0ZBSUwpOwogCX0KIAogCWlm IChsb2NrLT50cnggIT0gdHJ4CiAJICAgIHx8IGxvY2stPnR5cGVfbW9kZSAhPSAobW9kZSB8IExP Q0tfUkVDKQogCSAgICB8fCBsb2NrX3JlY19nZXRfbl9iaXRzKGxvY2spIDw9IGhlYXBfbm8pIHsK IAotCQlyZXR1cm4oRkFMU0UpOworCQlyZXR1cm4oTE9DS19SRUNfRkFJTCk7CiAJfQogCiAJaWYg KCFpbXBsKSB7CkBAIC0xOTk0LDEwICsyMDA0LDExIEBAIGxvY2tfcmVjX2xvY2tfZmFzdCgKIAog CQlpZiAoIWxvY2tfcmVjX2dldF9udGhfYml0KGxvY2ssIGhlYXBfbm8pKSB7CiAJCQlsb2NrX3Jl Y19zZXRfbnRoX2JpdChsb2NrLCBoZWFwX25vKTsKKwkJCXJldHVybihMT0NLX1JFQ19TVUNDRVNT X0NSRUFURUQpOwogCQl9CiAJfQogCi0JcmV0dXJuKFRSVUUpOworCXJldHVybihMT0NLX1JFQ19T VUNDRVNTKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTIwMDUsOSArMjAxNiwxMCBAQCBU aGlzIGlzIHRoZSBnZW5lcmFsLCBhbmQgc2xvd2VyLCByb3V0aW5lCiBsb3ctbGV2ZWwgZnVuY3Rp b24gd2hpY2ggZG9lcyBOT1QgbG9vayBhdCBpbXBsaWNpdCBsb2NrcyEgQ2hlY2tzIGxvY2sKIGNv bXBhdGliaWxpdHkgd2l0aGluIGV4cGxpY2l0IGxvY2tzLiBUaGlzIGZ1bmN0aW9uIHNldHMgYSBu b3JtYWwgbmV4dC1rZXkKIGxvY2ssIG9yIGluIHRoZSBjYXNlIG9mIGEgcGFnZSBzdXByZW11bSBy ZWNvcmQsIGEgZ2FwIHR5cGUgbG9jay4KLUByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlU LCBvciBlcnJvciBjb2RlICovCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VE X1JFQywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKK29yIERCX1FVRV9USFJfU1VTUEVOREVE ICovCiBzdGF0aWMKLXVsaW50CitlbnVtIGRiX2VycgogbG9ja19yZWNfbG9ja19zbG93KAogLyo9 PT09PT09PT09PT09PT0qLwogCWlib29sCQkJaW1wbCwJLyohPCBpbjogaWYgVFJVRSwgbm8gbG9j ayBpcyBzZXQKQEAgLTIwMjQsNyArMjAzNiw2IEBAIGxvY2tfcmVjX2xvY2tfc2xvdygKIAlxdWVf dGhyX3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewogCXRyeF90Kgl0cng7Ci0J dWxpbnQJZXJyOwogCiAJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKIAl1dF9hZCgo TE9DS19NT0RFX01BU0sgJiBtb2RlKSAhPSBMT0NLX1MKQEAgLTIwNDMsMjcgKzIwNTQsMjMgQEAg bG9ja19yZWNfbG9ja19zbG93KAogCQkvKiBUaGUgdHJ4IGFscmVhZHkgaGFzIGEgc3Ryb25nIGVu b3VnaCBsb2NrIG9uIHJlYzogZG8KIAkJbm90aGluZyAqLwogCi0JCWVyciA9IERCX1NVQ0NFU1M7 CiAJfSBlbHNlIGlmIChsb2NrX3JlY19vdGhlcl9oYXNfY29uZmxpY3RpbmcobW9kZSwgYmxvY2ss IGhlYXBfbm8sIHRyeCkpIHsKIAogCQkvKiBJZiBhbm90aGVyIHRyYW5zYWN0aW9uIGhhcyBhIG5v bi1nYXAgY29uZmxpY3RpbmcgcmVxdWVzdCBpbgogCQl0aGUgcXVldWUsIGFzIHRoaXMgdHJhbnNh Y3Rpb24gZG9lcyBub3QgaGF2ZSBhIGxvY2sgc3Ryb25nCiAJCWVub3VnaCBhbHJlYWR5IGdyYW50 ZWQgb24gdGhlIHJlY29yZCwgd2UgaGF2ZSB0byB3YWl0LiAqLwogCi0JCWVyciA9IGxvY2tfcmVj X2VucXVldWVfd2FpdGluZyhtb2RlLCBibG9jaywgaGVhcF9ubywKLQkJCQkJICAgICAgIGluZGV4 LCB0aHIpOwotCX0gZWxzZSB7Ci0JCWlmICghaW1wbCkgewotCQkJLyogU2V0IHRoZSByZXF1ZXN0 ZWQgbG9jayBvbiB0aGUgcmVjb3JkICovCi0KLQkJCWxvY2tfcmVjX2FkZF90b19xdWV1ZShMT0NL X1JFQyB8IG1vZGUsIGJsb2NrLAotCQkJCQkgICAgICBoZWFwX25vLCBpbmRleCwgdHJ4KTsKLQkJ fQotCi0JCWVyciA9IERCX1NVQ0NFU1M7CisJCXJldHVybihsb2NrX3JlY19lbnF1ZXVlX3dhaXRp bmcobW9kZSwgYmxvY2ssIGhlYXBfbm8sCisJCQkJCQlpbmRleCwgdGhyKSk7CisJfSBlbHNlIGlm ICghaW1wbCkgeworCQkvKiBTZXQgdGhlIHJlcXVlc3RlZCBsb2NrIG9uIHRoZSByZWNvcmQgKi8K KworCQlsb2NrX3JlY19hZGRfdG9fcXVldWUoTE9DS19SRUMgfCBtb2RlLCBibG9jaywKKwkJCQkg ICAgICBoZWFwX25vLCBpbmRleCwgdHJ4KTsKKwkJcmV0dXJuKERCX1NVQ0NFU1NfTE9DS0VEX1JF Qyk7CiAJfQogCi0JcmV0dXJuKGVycik7CisJcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgpAQCAtMjA3Miw5ICsyMDc5LDEwIEBAIHBvc3NpYmxlLCBlbnF1ZXVlcyBh IHdhaXRpbmcgbG9jayByZXF1ZXMKIHdoaWNoIGRvZXMgTk9UIGxvb2sgYXQgaW1wbGljaXQgbG9j a3MhIENoZWNrcyBsb2NrIGNvbXBhdGliaWxpdHkgd2l0aGluCiBleHBsaWNpdCBsb2Nrcy4gVGhp cyBmdW5jdGlvbiBzZXRzIGEgbm9ybWFsIG5leHQta2V5IGxvY2ssIG9yIGluIHRoZSBjYXNlCiBv ZiBhIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkLCBhIGdhcCB0eXBlIGxvY2suCi1AcmV0dXJuCURCX1NV Q0NFU1MsIERCX0xPQ0tfV0FJVCwgb3IgZXJyb3IgY29kZSAqLworQHJldHVybglEQl9TVUNDRVNT LCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCitvciBE Ql9RVUVfVEhSX1NVU1BFTkRFRCAqLwogc3RhdGljCi11bGludAorZW51bSBkYl9lcnIKIGxvY2tf cmVjX2xvY2soCiAvKj09PT09PT09PT0qLwogCWlib29sCQkJaW1wbCwJLyohPCBpbjogaWYgVFJV RSwgbm8gbG9jayBpcyBzZXQKQEAgLTIwOTAsOCArMjA5OCw2IEBAIGxvY2tfcmVjX2xvY2soCiAJ ZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHJlY29yZCAqLwogCXF1ZV90 aHJfdCoJCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiB7Ci0JdWxpbnQJZXJyOwotCiAJ dXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKIAl1dF9hZCgoTE9DS19NT0RFX01BU0sg JiBtb2RlKSAhPSBMT0NLX1MKIAkgICAgICB8fCBsb2NrX3RhYmxlX2hhcyh0aHJfZ2V0X3RyeCh0 aHIpLCBpbmRleC0+dGFibGUsIExPQ0tfSVMpKTsKQEAgLTIxMDMsMTggKzIxMDksMjAgQEAgbG9j a19yZWNfbG9jaygKIAkgICAgICB8fCBtb2RlIC0gKExPQ0tfTU9ERV9NQVNLICYgbW9kZSkgPT0g TE9DS19SRUNfTk9UX0dBUAogCSAgICAgIHx8IG1vZGUgLSAoTE9DS19NT0RFX01BU0sgJiBtb2Rl KSA9PSAwKTsKIAotCWlmIChsb2NrX3JlY19sb2NrX2Zhc3QoaW1wbCwgbW9kZSwgYmxvY2ssIGhl YXBfbm8sIGluZGV4LCB0aHIpKSB7Ci0KLQkJLyogV2UgdHJ5IGEgc2ltcGxpZmllZCBhbmQgZmFz dGVyIHN1YnJvdXRpbmUgZm9yIHRoZSBtb3N0Ci0JCWNvbW1vbiBjYXNlcyAqLwotCi0JCWVyciA9 IERCX1NVQ0NFU1M7Ci0JfSBlbHNlIHsKLQkJZXJyID0gbG9ja19yZWNfbG9ja19zbG93KGltcGws IG1vZGUsIGJsb2NrLAotCQkJCQkgaGVhcF9ubywgaW5kZXgsIHRocik7CisJLyogV2UgdHJ5IGEg c2ltcGxpZmllZCBhbmQgZmFzdGVyIHN1YnJvdXRpbmUgZm9yIHRoZSBtb3N0CisJY29tbW9uIGNh c2VzICovCisJc3dpdGNoIChsb2NrX3JlY19sb2NrX2Zhc3QoaW1wbCwgbW9kZSwgYmxvY2ssIGhl YXBfbm8sIGluZGV4LCB0aHIpKSB7CisJY2FzZSBMT0NLX1JFQ19TVUNDRVNTOgorCQlyZXR1cm4o REJfU1VDQ0VTUyk7CisJY2FzZSBMT0NLX1JFQ19TVUNDRVNTX0NSRUFURUQ6CisJCXJldHVybihE Ql9TVUNDRVNTX0xPQ0tFRF9SRUMpOworCWNhc2UgTE9DS19SRUNfRkFJTDoKKwkJcmV0dXJuKGxv Y2tfcmVjX2xvY2tfc2xvdyhpbXBsLCBtb2RlLCBibG9jaywKKwkJCQkJICBoZWFwX25vLCBpbmRl eCwgdGhyKSk7CiAJfQogCi0JcmV0dXJuKGVycik7CisJdXRfZXJyb3I7CisJcmV0dXJuKERCX0VS Uk9SKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTUwNzIsNyArNTA4MCwxNCBAQCBsb2Nr X3JlY19pbnNlcnRfY2hlY2tfYW5kX2xvY2soCiAKIAlsb2NrX211dGV4X2V4aXRfa2VybmVsKCk7 CiAKLQlpZiAoKGVyciA9PSBEQl9TVUNDRVNTKSAmJiAhZGljdF9pbmRleF9pc19jbHVzdChpbmRl eCkpIHsKKwlzd2l0Y2ggKGVycikgeworCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQll cnIgPSBEQl9TVUNDRVNTOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIERCX1NVQ0NFU1M6 CisJCWlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQkJYnJlYWs7CisJCX0KIAkJ LyogVXBkYXRlIHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KIAkJcGFnZV91cGRhdGVfbWF4 X3RyeF9pZChibG9jaywKIAkJCQkgICAgICAgYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChibG9jayks CkBAIC01MTk1LDYgKzUyMTAsMTAgQEAgbG9ja19jbHVzdF9yZWNfbW9kaWZ5X2NoZWNrX2FuZF9s b2NrKAogCiAJdXRfYWQobG9ja19yZWNfcXVldWVfdmFsaWRhdGUoYmxvY2ssIHJlYywgaW5kZXgs IG9mZnNldHMpKTsKIAorCWlmIChVTklWX1VOTElLRUxZKGVyciA9PSBEQl9TVUNDRVNTX0xPQ0tF RF9SRUMpKSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CisJfQorCiAJcmV0dXJuKGVycik7CiB9CiAK QEAgLTUyNjEsMjIgKzUyODAsMjcgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9jaGVja19hbmRfbG9j aygKIAl9CiAjZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCi0JaWYgKGVyciA9PSBEQl9TVUNDRVNT KSB7CisJaWYgKGVyciA9PSBEQl9TVUNDRVNTIHx8IGVyciA9PSBEQl9TVUNDRVNTX0xPQ0tFRF9S RUMpIHsKIAkJLyogVXBkYXRlIHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KKwkJLyogSXQg bWlnaHQgbm90IGJlIG5lY2Vzc2FyeSB0byBkbyB0aGlzIGlmCisJCWVyciA9PSBEQl9TVUNDRVNT IChubyBuZXcgbG9jayBjcmVhdGVkKSwKKwkJYnV0IGl0IHNob3VsZCBub3QgY29zdCB0b28gbXVj aCBwZXJmb3JtYW5jZS4gKi8KIAkJcGFnZV91cGRhdGVfbWF4X3RyeF9pZChibG9jaywKIAkJCQkg ICAgICAgYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChibG9jayksCiAJCQkJICAgICAgIHRocl9nZXRf dHJ4KHRociktPmlkLCBtdHIpOworCQllcnIgPSBEQl9TVUNDRVNTOwogCX0KIAogCXJldHVybihl cnIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotTGlrZSB0aGUgY291bnRlcnBhcnQgZm9yIGEg Y2x1c3RlcmVkIGluZGV4IGJlbG93LCBidXQgbm93IHdlIHJlYWQgYQorTGlrZSBsb2NrX2NsdXN0 X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKCksIGJ1dCByZWFkcyBhCiBzZWNvbmRhcnkgaW5kZXgg cmVjb3JkLgotQHJldHVybglEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLCBv ciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLworQHJldHVybglEQl9TVUNDRVNTLCBEQl9TVUNDRVNT X0xPQ0tFRF9SRUMsIERCX0xPQ0tfV0FJVCwgREJfREVBRExPQ0ssCitvciBEQl9RVUVfVEhSX1NV U1BFTkRFRCAqLwogVU5JVl9JTlRFUk4KLXVsaW50CitlbnVtIGRiX2VycgogbG9ja19zZWNfcmVj X3JlYWRfY2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IAl1bGludAkJCWZsYWdzLAkvKiE8IGluOiBpZiBCVFJfTk9fTE9DS0lOR19GTEFHCkBAIC01Mjk3 LDggKzUzMjEsOCBAQCBsb2NrX3NlY19yZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIAkJCQkJTE9D S19SRUNfTk9UX0dBUCAqLwogCXF1ZV90aHJfdCoJCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFk ICovCiB7Ci0JdWxpbnQJZXJyOwotCXVsaW50CWhlYXBfbm87CisJZW51bSBkYl9lcnIJZXJyOwor CXVsaW50CQloZWFwX25vOwogCiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsK IAl1dF9hZChibG9jay0+ZnJhbWUgPT0gcGFnZV9hbGlnbihyZWMpKTsKQEAgLTUzNDksOSArNTM3 MywxMCBAQCBpZiB0aGUgcXVlcnkgdGhyZWFkIHNob3VsZCBhbnl3YXkgYmUgc3VzCiBwdXRzIHRo ZSB0cmFuc2FjdGlvbiBhbmQgdGhlIHF1ZXJ5IHRocmVhZCB0byB0aGUgbG9jayB3YWl0IHN0YXRl IGFuZCBpbnNlcnRzIGEKIHdhaXRpbmcgcmVxdWVzdCBmb3IgYSByZWNvcmQgbG9jayB0byB0aGUg bG9jayBxdWV1ZS4gU2V0cyB0aGUgcmVxdWVzdGVkIG1vZGUKIGxvY2sgb24gdGhlIHJlY29yZC4K LUByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywgb3IgREJfUVVF X1RIUl9TVVNQRU5ERUQgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURf UkVDLCBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLAorb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQg Ki8KIFVOSVZfSU5URVJOCi11bGludAorZW51bSBkYl9lcnIKIGxvY2tfY2x1c3RfcmVjX3JlYWRf Y2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVs aW50CQkJZmxhZ3MsCS8qITwgaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcKQEAgLTUzNzIsOCAr NTM5Nyw4IEBAIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAJCQkJCUxPQ0tf UkVDX05PVF9HQVAgKi8KIAlxdWVfdGhyX3QqCQl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAq LwogewotCXVsaW50CWVycjsKLQl1bGludAloZWFwX25vOworCWVudW0gZGJfZXJyCWVycjsKKwl1 bGludAkJaGVhcF9ubzsKIAogCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1 dF9hZChibG9jay0+ZnJhbWUgPT0gcGFnZV9hbGlnbihyZWMpKTsKQEAgLTU0NDQsMTcgKzU0Njks MjIgQEAgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9ja19hbHQoCiAJbWVtX2hlYXBf dCoJdG1wX2hlYXAJPSBOVUxMOwogCXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0la RV07CiAJdWxpbnQqCQlvZmZzZXRzCQk9IG9mZnNldHNfOwotCXVsaW50CQlyZXQ7CisJdWxpbnQJ CWVycjsKIAlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKIAogCW9mZnNldHMgPSByZWNfZ2V0X29m ZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJnRtcF9o ZWFwKTsKLQlyZXQgPSBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKGZsYWdzLCBi bG9jaywgcmVjLCBpbmRleCwKKwllcnIgPSBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9s b2NrKGZsYWdzLCBibG9jaywgcmVjLCBpbmRleCwKIAkJCQkJCSBvZmZzZXRzLCBtb2RlLCBnYXBf bW9kZSwgdGhyKTsKIAlpZiAodG1wX2hlYXApIHsKIAkJbWVtX2hlYXBfZnJlZSh0bXBfaGVhcCk7 CiAJfQotCXJldHVybihyZXQpOworCisJaWYgKFVOSVZfVU5MSUtFTFkoZXJyID09IERCX1NVQ0NF U1NfTE9DS0VEX1JFQykpIHsKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwl9CisKKwlyZXR1cm4oZXJy KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MGlucy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMJ cmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAwNjAyMTEwNDAwLTU2OGEzYjJnZDl1eHh4 dmcKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQKQEAgLTExMjEsOSAr MTEyMSw5IEBAIG5vbnN0YW5kYXJkX2V4aXRfZnVuYzoKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXRz IGEgc2hhcmVkIGxvY2sgb24gYSByZWNvcmQuIFVzZWQgaW4gbG9ja2luZyBwb3NzaWJsZSBkdXBs aWNhdGUga2V5CiByZWNvcmRzIGFuZCBhbHNvIGluIGNoZWNraW5nIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnRzLgotQHJldHVybglEQl9TVUNDRVNTIG9yIGVycm9yIGNvZGUgKi8KK0ByZXR1cm4JREJf U1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBvciBlcnJvciBjb2RlICovCiBzdGF0aWMK LXVsaW50CitlbnVtIGRiX2Vycgogcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogLyo9PT09 PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQkJdHlwZSwJLyohPCBpbjogTE9DS19PUkRJ TkFSWSwgTE9DS19HQVAsIG9yCkBAIC0xMTM0LDcgKzExMzQsNyBAQCByb3dfaW5zX3NldF9zaGFy ZWRfcmVjX2xvY2soCiAJY29uc3QgdWxpbnQqCQlvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zm c2V0cyhyZWMsIGluZGV4KSAqLwogCXF1ZV90aHJfdCoJCXRocikJLyohPCBpbjogcXVlcnkgdGhy ZWFkICovCiB7Ci0JdWxpbnQJZXJyOworCWVudW0gZGJfZXJyCWVycjsKIAogCXV0X2FkKHJlY19v ZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIApAQCAtMTE1Miw5ICsxMTUyLDkg QEAgcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMg YSBleGNsdXNpdmUgbG9jayBvbiBhIHJlY29yZC4gVXNlZCBpbiBsb2NraW5nIHBvc3NpYmxlIGR1 cGxpY2F0ZSBrZXkKIHJlY29yZHMKLUByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICov CitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywgb3IgZXJyb3IgY29k ZSAqLwogc3RhdGljCi11bGludAorZW51bSBkYl9lcnIKIHJvd19pbnNfc2V0X2V4Y2x1c2l2ZV9y ZWNfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJCXR5cGUs CS8qITwgaW46IExPQ0tfT1JESU5BUlksIExPQ0tfR0FQLCBvcgpAQCAtMTE2NSw3ICsxMTY1LDcg QEAgcm93X2luc19zZXRfZXhjbHVzaXZlX3JlY19sb2NrKAogCWNvbnN0IHVsaW50KgkJb2Zmc2V0 cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCkgKi8KIAlxdWVfdGhyX3QqCQl0 aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewotCXVsaW50CWVycjsKKwllbnVtIGRiX2Vy cgllcnI7CiAKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7 CiAKQEAgLTEyMDUsNyArMTIwNSw2IEBAIHJvd19pbnNfY2hlY2tfZm9yZWlnbl9jb25zdHJhaW50 KAogCWRpY3RfaW5kZXhfdCoJY2hlY2tfaW5kZXg7CiAJdWxpbnQJCW5fZmllbGRzX2NtcDsKIAli dHJfcGN1cl90CXBjdXI7Ci0JaWJvb2wJCW1vdmVkOwogCWludAkJY21wOwogCXVsaW50CQllcnI7 CiAJdWxpbnQJCWk7CkBAIC0xMzM2LDEzICsxMzM1LDEzIEBAIHJ1bl9hZ2FpbjoKIAogCS8qIFNj YW4gaW5kZXggcmVjb3JkcyBhbmQgY2hlY2sgaWYgdGhlcmUgaXMgYSBtYXRjaGluZyByZWNvcmQg Ki8KIAotCWZvciAoOzspIHsKKwlkbyB7CiAJCWNvbnN0IHJlY190KgkJcmVjID0gYnRyX3BjdXJf Z2V0X3JlYygmcGN1cik7CiAJCWNvbnN0IGJ1Zl9ibG9ja190KglibG9jayA9IGJ0cl9wY3VyX2dl dF9ibG9jaygmcGN1cik7CiAKIAkJaWYgKHBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewogCi0J CQlnb3RvIG5leHRfcmVjOworCQkJY29udGludWU7CiAJCX0KIAogCQlvZmZzZXRzID0gcmVjX2dl dF9vZmZzZXRzKHJlYywgY2hlY2tfaW5kZXgsCkBAIC0xMzUzLDEyICsxMzUyLDEzIEBAIHJ1bl9h Z2FpbjoKIAkJCWVyciA9IHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jayhMT0NLX09SRElOQVJZ LCBibG9jaywKIAkJCQkJCQkgIHJlYywgY2hlY2tfaW5kZXgsCiAJCQkJCQkJICBvZmZzZXRzLCB0 aHIpOwotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KLQkJCQlicmVhazsKKwkJCXN3aXRj aCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWNhc2UgREJfU1VD Q0VTUzoKKwkJCQljb250aW51ZTsKKwkJCWRlZmF1bHQ6CisJCQkJZ290byBlbmRfc2NhbjsKIAkJ CX0KLQotCQkJZ290byBuZXh0X3JlYzsKIAkJfQogCiAJCWNtcCA9IGNtcF9kdHVwbGVfcmVjKGVu dHJ5LCByZWMsIG9mZnNldHMpOwpAQCAtMTM2OSw5ICsxMzY5LDEyIEBAIHJ1bl9hZ2FpbjoKIAkJ CQllcnIgPSByb3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soCiAJCQkJCUxPQ0tfT1JESU5BUlks IGJsb2NrLAogCQkJCQlyZWMsIGNoZWNrX2luZGV4LCBvZmZzZXRzLCB0aHIpOwotCQkJCWlmIChl cnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NV Q0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CiAJCQkJCWJyZWFrOworCQkJ CWRlZmF1bHQ6CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQkv KiBGb3VuZCBhIG1hdGNoaW5nIHJlY29yZC4gTG9jayBvbmx5CkBAIC0xMzgyLDE1ICsxMzg1LDE4 IEBAIHJ1bl9hZ2FpbjoKIAkJCQkJTE9DS19SRUNfTk9UX0dBUCwgYmxvY2ssCiAJCQkJCXJlYywg Y2hlY2tfaW5kZXgsIG9mZnNldHMsIHRocik7CiAKLQkJCQlpZiAoZXJyICE9IERCX1NVQ0NFU1Mp IHsKLQorCQkJCXN3aXRjaCAoZXJyKSB7CisJCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6 CisJCQkJY2FzZSBEQl9TVUNDRVNTOgogCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQln b3RvIGVuZF9zY2FuOwogCQkJCX0KIAogCQkJCWlmIChjaGVja19yZWYpIHsKIAkJCQkJZXJyID0g REJfU1VDQ0VTUzsKIAotCQkJCQlicmVhazsKKwkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQl9IGVs c2UgaWYgKGZvcmVpZ24tPnR5cGUgIT0gMCkgewogCQkJCQkvKiBUaGVyZSBpcyBhbiBPTiBVUERB VEUgb3IgT04gREVMRVRFCiAJCQkJCWNvbmRpdGlvbjogY2hlY2sgdGhlbSBpbiBhIHNlcGFyYXRl CkBAIC0xNDE2LDcgKzE0MjIsNyBAQCBydW5fYWdhaW46CiAJCQkJCQkJZXJyID0gREJfRk9SRUlH Tl9EVVBMSUNBVEVfS0VZOwogCQkJCQkJfQogCi0JCQkJCQlicmVhazsKKwkJCQkJCWdvdG8gZW5k X3NjYW47CiAJCQkJCX0KIAogCQkJCQkvKiByb3dfaW5zX2ZvcmVpZ25fY2hlY2tfb25fY29uc3Ry YWludApAQCAtMTQyOSw0OSArMTQzNSw0MSBAQCBydW5fYWdhaW46CiAJCQkJCQl0aHIsIGZvcmVp Z24sIHJlYywgZW50cnkpOwogCiAJCQkJCWVyciA9IERCX1JPV19JU19SRUZFUkVOQ0VEOwotCQkJ CQlicmVhazsKKwkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQl9CiAJCQl9Ci0JCX0KKwkJfSBlbHNl IHsKKwkJCXV0X2EoY21wIDwgMCk7CiAKLQkJaWYgKGNtcCA8IDApIHsKIAkJCWVyciA9IHJvd19p bnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIAkJCQlMT0NLX0dBUCwgYmxvY2ssCiAJCQkJcmVjLCBj aGVja19pbmRleCwgb2Zmc2V0cywgdGhyKTsKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewot Ci0JCQkJYnJlYWs7Ci0JCQl9CiAKLQkJCWlmIChjaGVja19yZWYpIHsKLQkJCQllcnIgPSBEQl9O T19SRUZFUkVOQ0VEX1JPVzsKLQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0J CQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9IERC X1NVQ0NFU1M7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9S RUM6CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJaWYgKGNoZWNrX3JlZikgeworCQkJCQllcnIg PSBEQl9OT19SRUZFUkVOQ0VEX1JPVzsKKwkJCQkJcm93X2luc19mb3JlaWduX3JlcG9ydF9hZGRf ZXJyKAorCQkJCQkJdHJ4LCBmb3JlaWduLCByZWMsIGVudHJ5KTsKKwkJCQl9IGVsc2UgeworCQkJ CQllcnIgPSBEQl9TVUNDRVNTOworCQkJCX0KIAkJCX0KIAotCQkJYnJlYWs7CisJCQlnb3RvIGVu ZF9zY2FuOwogCQl9CisJfSB3aGlsZSAoYnRyX3BjdXJfbW92ZV90b19uZXh0KCZwY3VyLCAmbXRy KSk7CiAKLQkJdXRfYShjbXAgPT0gMCk7Ci1uZXh0X3JlYzoKLQkJbW92ZWQgPSBidHJfcGN1cl9t b3ZlX3RvX25leHQoJnBjdXIsICZtdHIpOwotCi0JCWlmICghbW92ZWQpIHsKLQkJCWlmIChjaGVj a19yZWYpIHsKLQkJCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKLQkJCQlyb3dfaW5z X2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0JCQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7 Ci0JCQkJZXJyID0gREJfTk9fUkVGRVJFTkNFRF9ST1c7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9 IERCX1NVQ0NFU1M7Ci0JCQl9Ci0KLQkJCWJyZWFrOwotCQl9CisJaWYgKGNoZWNrX3JlZikgewor CQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCisJCQl0cngsIGZvcmVpZ24sIGJ0cl9w Y3VyX2dldF9yZWMoJnBjdXIpLCBlbnRyeSk7CisJCWVyciA9IERCX05PX1JFRkVSRU5DRURfUk9X OworCX0gZWxzZSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CiAJfQogCitlbmRfc2NhbjoKIAlidHJf cGN1cl9jbG9zZSgmcGN1cik7CiAKIAltdHJfY29tbWl0KCZtdHIpOwpAQCAtMTcxOSw5ICsxNzE3 LDEzIEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgKIAkJCQlyZWMsIGlu ZGV4LCBvZmZzZXRzLCB0aHIpOwogCQl9CiAKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0K KwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQllcnIg PSBEQl9TVUNDRVNTOworCQljYXNlIERCX1NVQ0NFU1M6CiAJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCWdvdG8gZW5kX3NjYW47CiAJCX0KIAogCQlpZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVj KSkgewpAQCAtMTczOCwxNyArMTc0MCwxNSBAQCByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9k dXBsaWNhdGUoCiAKIAkJCQl0aHJfZ2V0X3RyeCh0aHIpLT5lcnJvcl9pbmZvID0gaW5kZXg7CiAK LQkJCQlicmVhazsKKwkJCQlnb3RvIGVuZF9zY2FuOwogCQkJfQorCQl9IGVsc2UgeworCQkJdXRf YShjbXAgPCAwKTsKKwkJCWdvdG8gZW5kX3NjYW47CiAJCX0KLQotCQlpZiAoY21wIDwgMCkgewot CQkJYnJlYWs7Ci0JCX0KLQotCQl1dF9hKGNtcCA9PSAwKTsKIAl9IHdoaWxlIChidHJfcGN1cl9t b3ZlX3RvX25leHQoJnBjdXIsICZtdHIpKTsKIAorZW5kX3NjYW46CiAJaWYgKFVOSVZfTElLRUxZ X05VTEwoaGVhcCkpIHsKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9CkBAIC0xODM3LDcgKzE4 MzcsMTEgQEAgcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3QoCiAJCQkJCWN1cnNvci0+ aW5kZXgsIG9mZnNldHMsIHRocik7CiAJCQl9CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykg eworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJ Y2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGZ1bmNf ZXhpdDsKIAkJCX0KIApAQCAtMTg3Nyw3ICsxODgxLDExIEBAIHJvd19pbnNfZHVwbGljYXRlX2Vy cm9yX2luX2NsdXN0KAogCQkJCQlyZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMsIHRocik7CiAJ CQl9CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJ CWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJy ZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGZ1bmNfZXhpdDsKIAkJCX0KIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAx MDA2MDIxMTA0MDAtNTY4YTNiMmdkOXV4eHh2ZworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwbXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjExMzczMy1m c2xmdjczbmhpMGQxN3Q0CkBAIC0xNDMwLDI3ICsxNDMwLDI2IEBAIHJ1bl9hZ2FpbjoKIH0KIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLVRoaXMgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHNydl9sb2Nrc191 bnNhZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yCi10aGlzIHNlc3Npb24gaXMgdXNpbmcgYSBSRUFE IENPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuIEJlZm9yZQotY2FsbGluZyB0aGlzIGZ1bmN0aW9u IHdlIG11c3QgdXNlIHRyeF9yZXNldF9uZXdfcmVjX2xvY2tfaW5mbygpIGFuZAotdHJ4X3JlZ2lz dGVyX25ld19yZWNfbG9jaygpIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcgcmVj b3JkIGxvY2tzCi1yZWFsbHkgd2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5 IHNldCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5wY3VyLAotYW5kIGFsc28gdW5kZXIgcHJlYnVpbHQt PmNsdXN0X3BjdXIuIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IHVzZWQgYW5kIHRlc3RlZAotaW4g dGhlIGNhc2Ugb2YgYW4gVVBEQVRFIG9yIGEgREVMRVRFIHN0YXRlbWVudCwgd2hlcmUgdGhlIHJv dyBsb2NrIGlzIG9mIHRoZQotTE9DS19YIHR5cGUuCi1UaHVzLCB0aGlzIGltcGxlbWVudHMgYSAn bWluaS1yb2xsYmFjaycgdGhhdCByZWxlYXNlcyB0aGUgbGF0ZXN0IHJlY29yZAotbG9ja3Mgd2Ug c2V0LgotQHJldHVybgllcnJvciBjb2RlIG9yIERCX1NVQ0NFU1MgKi8KK1RoaXMgY2FuIG9ubHkg YmUgdXNlZCB3aGVuIHNydl9sb2Nrc191bnNhZmVfZm9yX2JpbmxvZyBpcyBUUlVFIG9yIHRoaXMK K3Nlc3Npb24gaXMgdXNpbmcgYSBSRUFEIENPTU1JVFRFRCBvciBSRUFEIFVOQ09NTUlUVEVEIGlz b2xhdGlvbiBsZXZlbC4KK0JlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcm93X3NlYXJjaF9m b3JfbXlzcWwoKSBtdXN0IGhhdmUKK2luaXRpYWxpemVkIHByZWJ1aWx0LT5uZXdfcmVjX2xvY2tz IHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiB3aGljaCBuZXcKK3JlY29yZCBsb2NrcyByZWFsbHkg d2VyZSBzZXQuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIG5ld2x5IHNldAorY2x1c3RlcmVkIGlu ZGV4IHJlY29yZCBsb2NrIHVuZGVyIHByZWJ1aWx0LT5wY3VyIG9yCitwcmVidWlsdC0+Y2x1c3Rf cGN1ci4gIFRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJvbGxiYWNrJyB0aGF0CityZWxl YXNlcyB0aGUgbGF0ZXN0IGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgbG9jayB3ZSBzZXQuCitAcmV0 dXJuIGVycm9yIGNvZGUgb3IgREJfU1VDQ0VTUyAqLwogVU5JVl9JTlRFUk4KIGludAogcm93X3Vu bG9ja19mb3JfbXlzcWwoCiAvKj09PT09PT09PT09PT09PT09Ki8KLQlyb3dfcHJlYnVpbHRfdCoJ cHJlYnVpbHQsCS8qITwgaW46IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAorCXJvd19wcmVidWls dF90KglwcmVidWlsdCwJLyohPCBpbi9vdXQ6IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJ CQloYW5kbGUgKi8KLQlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcykvKiE8IFRSVUUgaWYgY2Fs bGVkIHNvIHRoYXQgd2UgaGF2ZQotCQkJCQl0aGUgbGF0Y2hlcyBvbiB0aGUgcmVjb3JkcyB1bmRl ciBwY3VyCi0JCQkJCWFuZCBjbHVzdF9wY3VyLCBhbmQgd2UgZG8gbm90IG5lZWQgdG8KLQkJCQkJ cmVwb3NpdGlvbiB0aGUgY3Vyc29ycy4gKi8KKwlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcykv KiE8IGluOiBUUlVFIGlmIGNhbGxlZCBzbworCQkJCQl0aGF0IHdlIGhhdmUgdGhlIGxhdGNoZXMg b24KKwkJCQkJdGhlIHJlY29yZHMgdW5kZXIgcGN1ciBhbmQKKwkJCQkJY2x1c3RfcGN1ciwgYW5k IHdlIGRvIG5vdCBuZWVkCisJCQkJCXRvIHJlcG9zaXRpb24gdGhlIGN1cnNvcnMuICovCiB7CiAJ YnRyX3BjdXJfdCoJcGN1cgkJPSBwcmVidWlsdC0+cGN1cjsKIAlidHJfcGN1cl90KgljbHVzdF9w Y3VyCT0gcHJlYnVpbHQtPmNsdXN0X3BjdXI7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHNlbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2Vs LmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAwNjAyMTEwNDAwLTU2OGEzYjJnZDl1 eHh4dmcKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTEzNzMzLWZzbGZ2NzNuaGkwZDE3dDQKQEAgLTg2Myw4 ICs4NjMsMTQgQEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjKAogCQkJY2x1c3RfcmVjLCBpbmRleCwg b2Zmc2V0cywKIAkJCW5vZGUtPnJvd19sb2NrX21vZGUsIGxvY2tfdHlwZSwgdGhyKTsKIAotCQlp ZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NV Q0NFU1M6CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJLyogRGVjbGFyZSB0aGUg dmFyaWFibGUgdW5pbml0aWFsaXplZCBpbiBWYWxncmluZC4KKwkJCUl0IHNob3VsZCBiZSBzZXQg dG8gREJfU1VDQ0VTUyBhdCBmdW5jX2V4aXQuICovCisJCQlVTklWX01FTV9JTlZBTElEKCZlcnIs IHNpemVvZiBlcnIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CiAJCQlnb3RvIGVycl9leGl0Owog CQl9CiAJfSBlbHNlIHsKQEAgLTkzNCw5ICs5NDAsOSBAQCBlcnJfZXhpdDoKIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFNldHMgYSBsb2NrIG9uIGEgcmVjb3JkLgotQHJldHVybglEQl9TVUNDRVNTIG9y IGVycm9yIGNvZGUgKi8KK0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVD LCBvciBlcnJvciBjb2RlICovCiBVTklWX0lOTElORQotdWxpbnQKK2VudW0gZGJfZXJyCiBzZWxf c2V0X3JlY19sb2NrKAogLyo9PT09PT09PT09PT09Ki8KIAljb25zdCBidWZfYmxvY2tfdCoJYmxv Y2ssCS8qITwgaW46IGJ1ZmZlciBibG9jayBvZiByZWMgKi8KQEAgLTk0OCw4ICs5NTQsOCBAQCBz ZWxfc2V0X3JlY19sb2NrKAogCQkJCQlMT0NfUkVDX05PVF9HQVAgKi8KIAlxdWVfdGhyX3QqCQl0 aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewotCXRyeF90Kgl0cng7Ci0JdWxpbnQJZXJy OworCXRyeF90KgkJdHJ4OworCWVudW0gZGJfZXJyCWVycjsKIAogCXRyeCA9IHRocl9nZXRfdHJ4 KHRocik7CiAKQEAgLTE0ODIsMTEgKzE0ODgsMTUgQEAgcmVjX2xvb3A6CiAJCQkJCSAgICAgICBu b2RlLT5yb3dfbG9ja19tb2RlLAogCQkJCQkgICAgICAgbG9ja190eXBlLCB0aHIpOwogCi0JCQlp ZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NV Q0NFU1NfTE9DS0VEX1JFQzoKKwkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUND RVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQkvKiBOb3RlIHRoYXQgaW4gdGhpcyBj YXNlIHdlIHdpbGwgc3RvcmUgaW4gcGN1cgogCQkJCXRoZSBQUkVERUNFU1NPUiBvZiB0aGUgcmVj b3JkIHdlIGFyZSB3YWl0aW5nCiAJCQkJdGhlIGxvY2sgZm9yICovCi0KIAkJCQlnb3RvIGxvY2tf d2FpdF9vcl9lcnJvcjsKIAkJCX0KIAkJfQpAQCAtMTUzOCw4ICsxNTQ4LDEyIEBAIHNraXBfbG9j azoKIAkJCQkgICAgICAgcmVjLCBpbmRleCwgb2Zmc2V0cywKIAkJCQkgICAgICAgbm9kZS0+cm93 X2xvY2tfbW9kZSwgbG9ja190eXBlLCB0aHIpOwogCi0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykg ewotCisJCXN3aXRjaCAoZXJyKSB7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJ ZXJyID0gREJfU1VDQ0VTUzsKKwkJY2FzZSBEQl9TVUNDRVNTOgorCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CiAJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJfQogCX0KQEAgLTI4MDEsOSArMjgx NSw5IEBAIHJvd19zZWxfYnVpbGRfcHJldl92ZXJzX2Zvcl9teXNxbCgKIFJldHJpZXZlcyB0aGUg Y2x1c3RlcmVkIGluZGV4IHJlY29yZCBjb3JyZXNwb25kaW5nIHRvIGEgcmVjb3JkIGluIGEKIG5v bi1jbHVzdGVyZWQgaW5kZXguIERvZXMgdGhlIG5lY2Vzc2FyeSBsb2NraW5nLiBVc2VkIGluIHRo ZSBNeVNRTAogaW50ZXJmYWNlLgotQHJldHVybglEQl9TVUNDRVNTIG9yIGVycm9yIGNvZGUgKi8K K0ByZXR1cm4JREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVDLCBvciBlcnJvciBjb2Rl ICovCiBzdGF0aWMKLXVsaW50CitlbnVtIGRiX2Vycgogcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zv cl9teXNxbCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJcm93X3ByZWJ1aWx0 X3QqCXByZWJ1aWx0LC8qITwgaW46IHByZWJ1aWx0IHN0cnVjdCBpbiB0aGUgaGFuZGxlICovCkBA IC0yODMwLDcgKzI4NDQsNyBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCWRp Y3RfaW5kZXhfdCoJY2x1c3RfaW5kZXg7CiAJY29uc3QgcmVjX3QqCWNsdXN0X3JlYzsKIAlyZWNf dCoJCW9sZF92ZXJzOwotCXVsaW50CQllcnI7CisJZW51bSBkYl9lcnIJZXJyOwogCXRyeF90KgkJ dHJ4OwogCiAJKm91dF9yZWMgPSBOVUxMOwpAQCAtMjg4OSw2ICsyOTAzLDcgQEAgcm93X3NlbF9n ZXRfY2x1c3RfcmVjX2Zvcl9teXNxbCgKIAogCQljbHVzdF9yZWMgPSBOVUxMOwogCisJCWVyciA9 IERCX1NVQ0NFU1M7CiAJCWdvdG8gZnVuY19leGl0OwogCX0KIApAQCAtMjkwNCw4ICsyOTE5LDEx IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAJCQkwLCBidHJfcGN1cl9nZXRf YmxvY2socHJlYnVpbHQtPmNsdXN0X3BjdXIpLAogCQkJY2x1c3RfcmVjLCBjbHVzdF9pbmRleCwg Km9mZnNldHMsCiAJCQlwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSwgTE9DS19SRUNfTk9UX0dB UCwgdGhyKTsKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsK KwkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBlcnJfZXhpdDsKIAkJfQogCX0gZWxzZSB7CkBAIC0y OTY1LDYgKzI5ODMsOCBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogCQkJCSAg ICAgcmVjLCBzZWNfaW5kZXgsIGNsdXN0X3JlYywgY2x1c3RfaW5kZXgpKTsKICNlbmRpZgogCQl9 CisKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAl9CiAKIGZ1bmNfZXhpdDoKQEAgLTI5NzcsNyArMjk5 Nyw2IEBAIGZ1bmNfZXhpdDoKIAkJYnRyX3BjdXJfc3RvcmVfcG9zaXRpb24ocHJlYnVpbHQtPmNs dXN0X3BjdXIsIG10cik7CiAJfQogCi0JZXJyID0gREJfU1VDQ0VTUzsKIGVycl9leGl0OgogCXJl dHVybihlcnIpOwogfQpAQCAtMzcwMiw4ICszNzIxLDEyIEBAIHNob3J0Y3V0X2ZhaWxzX3Rvb19i aWdfcmVjOgogCQkJCQkgICAgICAgcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUsCiAJCQkJCSAg ICAgICBMT0NLX0dBUCwgdGhyKTsKIAotCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJ CXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQllcnIg PSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJyZWFrOworCQkJZGVmYXVs dDoKIAkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsKIAkJCX0KIAkJfQpAQCAtMzgwMSw4ICsz ODI0LDEyIEBAIHJlY19sb29wOgogCQkJCQkgICAgICAgcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5 cGUsCiAJCQkJCSAgICAgICBMT0NLX09SRElOQVJZLCB0aHIpOwogCi0JCQlpZiAoZXJyICE9IERC X1NVQ0NFU1MpIHsKLQorCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NL RURfUkVDOgorCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJfQog CQl9CkBAIC0zOTMyLDggKzM5NTksMTEgQEAgd3Jvbmdfb2ZmczoKIAkJCQkJcHJlYnVpbHQtPnNl bGVjdF9sb2NrX3R5cGUsIExPQ0tfR0FQLAogCQkJCQl0aHIpOwogCi0JCQkJaWYgKGVyciAhPSBE Ql9TVUNDRVNTKSB7Ci0KKwkJCQlzd2l0Y2ggKGVycikgeworCQkJCWNhc2UgREJfU1VDQ0VTU19M T0NLRURfUkVDOgorCQkJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVs dDoKIAkJCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCQkJfQogCQkJfQpAQCAtMzk2OCw4 ICszOTk4LDExIEBAIHdyb25nX29mZnM6CiAJCQkJCXByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBl LCBMT0NLX0dBUCwKIAkJCQkJdGhyKTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewot CisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJ CQljYXNlIERCX1NVQ0NFU1M6CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CiAJCQkJCWdvdG8g bG9ja193YWl0X29yX2Vycm9yOwogCQkJCX0KIAkJCX0KQEAgLTQwMzksMTUgKzQwNzIsMjEgQEAg bm9fZ2FwX2xvY2s6CiAKIAkJc3dpdGNoIChlcnIpIHsKIAkJCWNvbnN0IHJlY190KglvbGRfdmVy czsKLQkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKIAkJ CWlmIChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKLQkJCSAgICB8fCB0cngtPmlzb2xhdGlv bl9sZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKSB7CisJCQkgICAgfHwgdHJ4LT5pc29s YXRpb25fbGV2ZWwKKwkJCSAgICA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKSB7CiAJCQkJLyog Tm90ZSB0aGF0IGEgcmVjb3JkIG9mCiAJCQkJcHJlYnVpbHQtPmluZGV4IHdhcyBsb2NrZWQuICov CiAJCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAxOwogCQkJfQorCQkJZXJyID0gREJfU1VD Q0VTUzsKKwkJY2FzZSBEQl9TVUNDRVNTOgogCQkJYnJlYWs7CiAJCWNhc2UgREJfTE9DS19XQUlU OgorCQkJLyogTmV2ZXIgdW5sb2NrIHJvd3MgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb25mbGljdC4g Ki8KKwkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMDsKKwogCQkJaWYgKFVOSVZfTElLRUxZ KHByZWJ1aWx0LT5yb3dfcmVhZF90eXBlCiAJCQkJCSE9IFJPV19SRUFEX1RSWV9TRU1JX0NPTlNJ U1RFTlQpCiAJCQkgICAgfHwgdW5pcXVlX3NlYXJjaApAQCAtNDA3Nyw3ICs0MTE2LDYgQEAgbm9f Z2FwX2xvY2s6CiAJCQlpZiAoVU5JVl9MSUtFTFkodHJ4LT53YWl0X2xvY2sgIT0gTlVMTCkpIHsK IAkJCQlsb2NrX2NhbmNlbF93YWl0aW5nX2FuZF9yZWxlYXNlKAogCQkJCQl0cngtPndhaXRfbG9j ayk7Ci0JCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAwOwogCQkJfSBlbHNlIHsKIAkJCQlt dXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCkBAIC00MDg5LDkgKzQxMjcsNiBAQCBub19nYXBf bG9jazoKIAkJCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwKIAkJCQkJCQkgICZoZWFwKTsKIAkJCQll cnIgPSBEQl9TVUNDRVNTOwotCQkJCS8qIE5vdGUgdGhhdCBhIHJlY29yZCBvZgotCQkJCXByZWJ1 aWx0LT5pbmRleCB3YXMgbG9ja2VkLiAqLwotCQkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0g MTsKIAkJCQlicmVhazsKIAkJCX0KIAkJCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7CkBAIC00 MjI4LDI3ICs0MjYzLDMwIEBAIHJlcXVpcmVzX2NsdXN0X3JlYzoKIAkJZXJyID0gcm93X3NlbF9n ZXRfY2x1c3RfcmVjX2Zvcl9teXNxbChwcmVidWlsdCwgaW5kZXgsIHJlYywKIAkJCQkJCSAgICAg IHRociwgJmNsdXN0X3JlYywKIAkJCQkJCSAgICAgICZvZmZzZXRzLCAmaGVhcCwgJm10cik7Ci0J CWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NV Q0NFU1M6CisJCQlpZiAoY2x1c3RfcmVjID09IE5VTEwpIHsKKwkJCQkvKiBUaGUgcmVjb3JkIGRp ZCBub3QgZXhpc3QgaW4gdGhlIHJlYWQgdmlldyAqLworCQkJCXV0X2FkKHByZWJ1aWx0LT5zZWxl Y3RfbG9ja190eXBlID09IExPQ0tfTk9ORSk7CiAKKwkJCQlnb3RvIG5leHRfcmVjOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJdXRfYShjbHVzdF9y ZWMgIT0gTlVMTCk7CisJCQlpZiAoc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nCisJCQkgICAg IHx8IHRyeC0+aXNvbGF0aW9uX2xldmVsCisJCQkgICAgPD0gVFJYX0lTT19SRUFEX0NPTU1JVFRF RCkgeworCQkJCS8qIE5vdGUgdGhhdCB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZAorCQkJCXdh cyBsb2NrZWQuICovCisJCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAyOworCQkJfQorCQkJ ZXJyID0gREJfU1VDQ0VTUzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBsb2NrX3dh aXRfb3JfZXJyb3I7CiAJCX0KIAotCQlpZiAoY2x1c3RfcmVjID09IE5VTEwpIHsKLQkJCS8qIFRo ZSByZWNvcmQgZGlkIG5vdCBleGlzdCBpbiB0aGUgcmVhZCB2aWV3ICovCi0JCQl1dF9hZChwcmVi dWlsdC0+c2VsZWN0X2xvY2tfdHlwZSA9PSBMT0NLX05PTkUpOwotCi0JCQlnb3RvIG5leHRfcmVj OwotCQl9Ci0KLQkJaWYgKChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKLQkJICAgICB8fCB0 cngtPmlzb2xhdGlvbl9sZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKQotCQkgICAgJiYg cHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUgIT0gTE9DS19OT05FKSB7Ci0JCQkvKiBOb3RlIHRo YXQgYm90aCB0aGUgc2Vjb25kYXJ5IGluZGV4IHJlY29yZAotCQkJYW5kIHRoZSBjbHVzdGVyZWQg aW5kZXggcmVjb3JkIHdlcmUgbG9ja2VkLiAqLwotCQkJdXRfYWQocHJlYnVpbHQtPm5ld19yZWNf bG9ja3MgPT0gMSk7Ci0JCQlwcmVidWlsdC0+bmV3X3JlY19sb2NrcyA9IDI7Ci0JCX0KLQogCQlp ZiAoVU5JVl9VTkxJS0VMWShyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhjbHVzdF9yZWMsIGNvbXApKSkg ewogCiAJCQkvKiBUaGUgcmVjb3JkIGlzIGRlbGV0ZSBtYXJrZWQ6IHdlIGNhbiBza2lwIGl0ICov Cgo= --===============0862889819== 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:38:00 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: jimmy.yang@stripped\ # 568a3b2gd9uxxxvg # # Begin bundle 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 EB82YbNn0jMkzBx/4DAGAP/F3JFOFCQejtd0QA== --===============0862889819==--