From: marko.makela Date: December 21 2010 12:54pm Subject: bzr push into mysql-5.5-innodb branch (marko.makela:3263 to 3264) List-Archive: http://lists.mysql.com/commits/127433 Message-Id: <201012211255.oBLChSYR009680@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0006206872==" --===============0006206872== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMyNjQgTWFya28gTcOka2Vsw6QJMjAxMC0xMi0yMSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMS1pbm5vZGIgdG8gbXlzcWwtNS41LWlubm9kYi4KCiAgICBtb2RpZmllZDoKICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvaW5ub2RiL3QvaW5ub2RiLnRlc3QKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1 ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9kYXRhMGRhdGEuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL3Jvdy9yb3cwdW1vZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQu YwogMzI2MyBTdW5ueSBCYWlucwkyMDEwLTEyLTE3CiAgICAgIEJ1ZyAjMTgyNzQgLSBJbm5vREIg YXV0b19pbmNyZW1lbnQgZmllbGQgcmVzZXQgb24gT1BUSU1JWkUgVEFCTEUKICAgICAgV2l0aCB0 aGUgYWJvdmUgYnVnIGZpeCwgdGhlIG1heGltdW0gYXV0b2luYyB2YWx1ZSBpcyBwcmVzZXJ2ZWQg d2hlbgogICAgICBhIHRhYmxlIGlzIG9wdGltaXplZC4gVXBkYXRlIHJlc3V0IGZpbGUgdG8gcmVm bGVjdCB0aGF0LgoKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL3BhcnRzL3Iv cGFydGl0aW9uX2F1dG9faW5jcmVtZW50X2lubm9kYi5yZXN1bHQKPT09IG1vZGlmaWVkIGZpbGUg J215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvci9pbm5vZGIucmVzdWx0CXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5j b20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9teXNxbC10ZXN0L3N1aXRl L2lubm9kYi9yL2lubm9kYi5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDEyMjExMjA1MTAtaXpqaWEzMTdsZTNhOGY1awpAQCAtMSw1ICsxLDggQEAKIGRyb3AgdGFibGUg aWYgZXhpc3RzIHQxLHQyLHQzLHQ0OwogZHJvcCBkYXRhYmFzZSBpZiBleGlzdHMgbXlzcWx0ZXN0 OworQ1JFQVRFIFRBQkxFIGJ1ZzU4OTEyIChhIEJMT0IsIGIgVEVYVCwgUFJJTUFSWSBLRVkoYSgx KSkpIEVOR0lORT1Jbm5vREI7CitJTlNFUlQgSU5UTyBidWc1ODkxMiBWQUxVRVMoUkVQRUFUKCdh Jyw4MDAwKSxSRVBFQVQoJ2InLDgwMDApKTsKK1VQREFURSBidWc1ODkxMiBTRVQgYT1SRVBFQVQo J2EnLDc5OTkpOwogY3JlYXRlIHRhYmxlIHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0 b19pbmNyZW1lbnQsIGNvZGUgdGlueWludCB1bnNpZ25lZCBub3QgbnVsbCwgbmFtZSBjaGFyKDIw KSBub3QgbnVsbCwgcHJpbWFyeSBrZXkgKGlkKSwga2V5IChjb2RlKSwgdW5pcXVlIChuYW1lKSkg ZW5naW5lPWlubm9kYjsKIGluc2VydCBpbnRvIHQxIChjb2RlLCBuYW1lKSB2YWx1ZXMgKDEsICdU aW0nKSwgKDEsICdNb250eScpLCAoMiwgJ0RhdmlkJyksICgyLCAnRXJpaycpLCAoMywgJ1Nhc2hh JyksICgzLCAnSmVyZW15JyksICg0LCAnTWF0dCcpOwogc2VsZWN0IGlkLCBjb2RlLCBuYW1lIGZy b20gdDEgb3JkZXIgYnkgaWQ7CkBAIC0xNjcwLDEwICsxNjczLDEwIEBAIHZhcmlhYmxlX3ZhbHVl IC0gQGlubm9kYl9yb3dzX2RlbGV0ZWRfb3IKIDcxCiBTRUxFQ1QgdmFyaWFibGVfdmFsdWUgLSBA aW5ub2RiX3Jvd3NfaW5zZXJ0ZWRfb3JpZyBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxf c3RhdHVzIFdIRVJFIExPV0VSKHZhcmlhYmxlX25hbWUpID0gJ2lubm9kYl9yb3dzX2luc2VydGVk JzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX2luc2VydGVkX29yaWcKLTEwNjUKKzEw NjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93c191cGRhdGVkX29yaWcgRlJP TSBpbmZvcm1hdGlvbl9zY2hlbWEuZ2xvYmFsX3N0YXR1cyBXSEVSRSBMT1dFUih2YXJpYWJsZV9u YW1lKSA9ICdpbm5vZGJfcm93c191cGRhdGVkJzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9y b3dzX3VwZGF0ZWRfb3JpZwotODY1Cis4NjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5v ZGJfcm93X2xvY2tfd2FpdHNfb3JpZyBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxfc3Rh dHVzIFdIRVJFIExPV0VSKHZhcmlhYmxlX25hbWUpID0gJ2lubm9kYl9yb3dfbG9ja193YWl0cyc7 CiB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93X2xvY2tfd2FpdHNfb3JpZwogMApAQCAtMzE3 MywzICszMTc2LDQgQEAgVmFyaWFibGVfbmFtZQlWYWx1ZQogSGFuZGxlcl91cGRhdGUJMQogVmFy aWFibGVfbmFtZQlWYWx1ZQogSGFuZGxlcl9kZWxldGUJMQorRFJPUCBUQUJMRSBidWc1ODkxMjsK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0CXJldmlkOnN1bm55 LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9t eXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6amlhMzE3bGUzYThmNWsKQEAgLTQ5LDYgKzQ5LDE1 IEBAIGRyb3AgdGFibGUgaWYgZXhpc3RzIHQxLHQyLHQzLHQ0OwogZHJvcCBkYXRhYmFzZSBpZiBl eGlzdHMgbXlzcWx0ZXN0OwogLS1lbmFibGVfd2FybmluZ3MKIAorIyBCdWcjNTg5MTIgSW5ub0RC IHVubmVjZXNzYXJpbHkgYXZvaWRzIHVwZGF0ZS1pbi1wbGFjZSBvbiBjb2x1bW4gcHJlZml4ZXMK K0NSRUFURSBUQUJMRSBidWc1ODkxMiAoYSBCTE9CLCBiIFRFWFQsIFBSSU1BUlkgS0VZKGEoMSkp KSBFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gYnVnNTg5MTIgVkFMVUVTKFJFUEVBVCgnYScs ODAwMCksUkVQRUFUKCdiJyw4MDAwKSk7CitVUERBVEUgYnVnNTg5MTIgU0VUIGE9UkVQRUFUKCdh Jyw3OTk5KTsKKyMgVGhlIGFib3ZlIHN0YXRlbWVudHMgdXNlZCB0byB0cmlnZ2VyIGEgZmFpbHVy ZSBkdXJpbmcgcHVyZ2Ugd2hlbgorIyBCdWcjNTUyODQgd2FzIGZpeGVkIHdoaWxlIEJ1ZyM1ODkx MiB3YXMgbm90LiBEZWZlciB0aGUgRFJPUCBUQUJMRSwKKyMgc28gdGhhdCBwdXJnZSBnZXRzIGEg Y2hhbmNlIHRvIHJ1biAoYW5kIGEgZG91YmxlIGZyZWUgb2YgdGhlCisjIG9mZi1wYWdlIGNvbHVt biBjYW4gYmUgZGV0ZWN0ZWQsIGlmIG9uZSBpcyB0byBvY2N1ci4pCisKICMKICMgU21hbGwgYmFz aWMgdGVzdCB3aXRoIGlnbm9yZQogIwpAQCAtMjU0OCw2ICsyNTU3LDkgQEAgU0VUIEdMT0JBTCBp bm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5ID0gQAogCiAtLSBlbmFibGVfcXVlcnlfbG9nCiAKKyMg Q2xlYW4gdXAgYWZ0ZXIgdGhlIEJ1ZyM1NTI4NC9CdWcjNTg5MTIgdGVzdCBjYXNlLgorRFJPUCBU QUJMRSBidWc1ODkxMjsKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjIFBsZWFz ZSwgRE8gTk9UIFRPVUNIIHRoaXMgZmlsZSBhcyB3ZWxsIGFzIHRoZSBpbm5vZGIucmVzdWx0IGZp bGUuICAgIwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCXJldmlkOnN1bm55LmJhaW5z QG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9yYWdl L2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MDEyMjExMjA1MTAtaXpqaWEzMTdsZTNhOGY1awpAQCAtMTg3NCw3ICsxODc0LDggQEAgYnRyX2N1 cl91cGRhdGVfaW5fcGxhY2UoCiAJCU5PVCBjYWxsIGl0IGlmIGluZGV4IGlzIHNlY29uZGFyeSAq LwogCiAJCWlmICghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkKLQkJICAgIHx8IHJvd191cGRf Y2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEwsIGluZGV4LCB1cGRhdGUpKSB7CisJCSAgICB8 fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBOVUxMLAorCQkJCQkJCWlu ZGV4LCB1cGRhdGUpKSB7CiAKIAkJCS8qIFJlbW92ZSBwb3NzaWJsZSBoYXNoIGluZGV4IHBvaW50 ZXIgdG8gdGhpcyByZWNvcmQgKi8KIAkJCWJ0cl9zZWFyY2hfdXBkYXRlX2hhc2hfb25fZGVsZXRl KGN1cnNvcik7CkBAIC0yNjI2LDI3ICsyNjI3LDI0IEBAIHVsaW50CiBidHJfY3VyX2RlbF9tYXJr X3NldF9jbHVzdF9yZWMoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJ CWZsYWdzLAkvKiE8IGluOiB1bmRvIGxvZ2dpbmcgYW5kIGxvY2tpbmcgZmxhZ3MgKi8KLQlidHJf Y3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yICovCisJYnVmX2Jsb2NrX3QqCWJsb2NrLAkv KiE8IGluL291dDogYnVmZmVyIGJsb2NrIG9mIHRoZSByZWNvcmQgKi8KKwlyZWNfdCoJCXJlYywJ LyohPCBpbi9vdXQ6IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNs dXN0ZXJlZCBpbmRleCBvZiB0aGUgcmVjb3JkICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMsLyoh PCBpbjogcmVjX2dldF9vZmZzZXRzKHJlYykgKi8KIAlpYm9vbAkJdmFsLAkvKiE8IGluOiB2YWx1 ZSB0byBzZXQgKi8KIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJ bXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwogewotCWRpY3RfaW5kZXhfdCoJaW5kZXg7Ci0J YnVmX2Jsb2NrX3QqCWJsb2NrOwogCXJvbGxfcHRyX3QJcm9sbF9wdHI7CiAJdWxpbnQJCWVycjsK LQlyZWNfdCoJCXJlYzsKIAlwYWdlX3ppcF9kZXNfdCoJcGFnZV96aXA7CiAJdHJ4X3QqCQl0cng7 Ci0JbWVtX2hlYXBfdCoJaGVhcAkJPSBOVUxMOwotCXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19O T1JNQUxfU0laRV07Ci0JdWxpbnQqCQlvZmZzZXRzCQk9IG9mZnNldHNfOwotCXJlY19vZmZzX2lu aXQob2Zmc2V0c18pOwogCi0JcmVjID0gYnRyX2N1cl9nZXRfcmVjKGN1cnNvcik7Ci0JaW5kZXgg PSBjdXJzb3ItPmluZGV4OworCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwl1 dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CiAJdXRfYWQoISFw YWdlX3JlY19pc19jb21wKHJlYykgPT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkp OwotCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0cywgVUxJTlRf VU5ERUZJTkVELCAmaGVhcCk7CisJdXRfYWQoYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jaykgPT0g cGFnZV9hbGlnbihyZWMpKTsKKwl1dF9hZChwYWdlX2lzX2xlYWYocGFnZV9hbGlnbihyZWMpKSk7 CiAKICNpZmRlZiBVTklWX0RFQlVHCiAJaWYgKGJ0cl9jdXJfcHJpbnRfcmVjb3JkX29wcyAmJiB0 aHIpIHsKQEAgLTI2NTgsMTMgKzI2NTYsMTIgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3Rf cmVjKAogCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCghcmVjX2dl dF9kZWxldGVkX2ZsYWcocmVjLCByZWNfb2Zmc19jb21wKG9mZnNldHMpKSk7CiAKLQllcnIgPSBs b2NrX2NsdXN0X3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2soZmxhZ3MsCi0JCQkJCQkgICBidHJf Y3VyX2dldF9ibG9jayhjdXJzb3IpLAorCWVyciA9IGxvY2tfY2x1c3RfcmVjX21vZGlmeV9jaGVj a19hbmRfbG9jayhmbGFncywgYmxvY2ssCiAJCQkJCQkgICByZWMsIGluZGV4LCBvZmZzZXRzLCB0 aHIpOwogCiAJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CiAKLQkJZ290byBmdW5jX2V4aXQ7CisJ CXJldHVybihlcnIpOwogCX0KIAogCWVyciA9IHRyeF91bmRvX3JlcG9ydF9yb3dfb3BlcmF0aW9u KGZsYWdzLCBUUlhfVU5ET19NT0RJRllfT1AsIHRociwKQEAgLTI2NzIsMTEgKzI2NjksOSBAQCBi dHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAJCQkJCSAgICAmcm9sbF9wdHIpOwogCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgewogCi0JCWdvdG8gZnVuY19leGl0OworCQlyZXR1cm4oZXJy KTsKIAl9CiAKLQlibG9jayA9IGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvcik7Ci0KIAlpZiAoYmxv Y2stPmlzX2hhc2hlZCkgewogCQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAJ fQpAQCAtMjY5OSwxMCArMjY5NCw2IEBAIGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygK IAlidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWNfbG9nKGZsYWdzLCByZWMsIGluZGV4LCB2 YWwsIHRyeCwKIAkJCQkJICAgcm9sbF9wdHIsIG10cik7CiAKLWZ1bmNfZXhpdDoKLQlpZiAoVU5J Vl9MSUtFTFlfTlVMTChoZWFwKSkgewotCQltZW1faGVhcF9mcmVlKGhlYXApOwotCX0KIAlyZXR1 cm4oZXJyKTsKIH0KIApAQCAtMzc1NCwxMDggKzM3NDUsMzYgQEAgYnRyX2N1cl9zZXRfb3duZXJz aGlwX29mX2V4dGVybl9maWVsZCgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1NYXJrcyBub3QgdXBk YXRlZCBleHRlcm4gZmllbGRzIGFzIG5vdC1vd25lZCBieSB0aGlzIHJlY29yZC4gVGhlIG93bmVy c2hpcAotaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlzIGluc2Vy dGVkIGVsc2V3aGVyZSBpbiB0aGUKK01hcmtzIG5vbi11cGRhdGVkIG9mZi1wYWdlIGZpZWxkcyBh cyBkaXNvd25lZCBieSB0aGlzIHJlY29yZC4gVGhlIG93bmVyc2hpcAorbXVzdCBiZSB0cmFuc2Zl cnJlZCB0byB0aGUgdXBkYXRlZCByZWNvcmQgd2hpY2ggaXMgaW5zZXJ0ZWQgZWxzZXdoZXJlIGlu IHRoZQogaW5kZXggdHJlZS4gSW4gcHVyZ2Ugb25seSB0aGUgb3duZXIgb2YgZXh0ZXJuYWxseSBz dG9yZWQgZmllbGQgaXMgYWxsb3dlZAotdG8gZnJlZSB0aGUgZmllbGQuCi1AcmV0dXJuIFRSVUUg aWYgQkxPQiBvd25lcnNoaXAgd2FzIHRyYW5zZmVycmVkICovCit0byBmcmVlIHRoZSBmaWVsZC4g Ki8KIFVOSVZfSU5URVJOCi1pYm9vbAotYnRyX2N1cl9tYXJrX2V4dGVybl9pbmhlcml0ZWRfZmll bGRzKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwordm9pZAorYnRyX2N1 cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxkcygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCiAJcGFnZV96aXBfZGVzX3QqCXBhZ2VfemlwLC8qITwgaW4vb3V0OiBjb21wcmVzc2VkIHBh Z2Ugd2hvc2UgdW5jb21wcmVzc2VkCiAJCQkJcGFydCB3aWxsIGJlIHVwZGF0ZWQsIG9yIE5VTEwg Ki8KIAlyZWNfdCoJCXJlYywJLyohPCBpbi9vdXQ6IHJlY29yZCBpbiBhIGNsdXN0ZXJlZCBpbmRl eCAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSBwYWdlICov CiAJY29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dl dF9vZmZzZXRzKCkgKi8KIAljb25zdCB1cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRhdGUgdmVj dG9yICovCi0JbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciwgb3IgTlVMTCBpZiBub3QgbG9nZ2Vk ICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCiB7Ci0J dWxpbnQJbjsKLQl1bGludAlqOwogCXVsaW50CWk7Ci0JaWJvb2wJY2hhbmdlX293bmVyc2hpcCA9 IEZBTFNFOwogCi0JdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBOVUxMLCBvZmZzZXRzKSk7 CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCXV0X2Fk KCFyZWNfb2Zmc19jb21wKG9mZnNldHMpIHx8ICFyZWNfZ2V0X25vZGVfcHRyX2ZsYWcocmVjKSk7 CisJdXRfYWQocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSk7CisJdXRfYWQobXRyKTsKIAot CWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgewotCi0JCXJldHVybihGQUxTRSk7 Ci0JfQotCi0JbiA9IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOwotCi0JZm9yIChpID0gMDsg aSA8IG47IGkrKykgewotCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgewot Ci0JCQkvKiBDaGVjayBpdCBpcyBub3QgaW4gdXBkYXRlZCBmaWVsZHMgKi8KLQotCQkJaWYgKHVw ZGF0ZSkgewotCQkJCWZvciAoaiA9IDA7IGogPCB1cGRfZ2V0X25fZmllbGRzKHVwZGF0ZSk7Ci0J CQkJICAgICBqKyspIHsKLQkJCQkJaWYgKHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgaikKLQkJ CQkJICAgIC0+ZmllbGRfbm8gPT0gaSkgewotCi0JCQkJCQlnb3RvIHVwZGF0ZWQ7Ci0JCQkJCX0K LQkJCQl9Ci0JCQl9Ci0KKwlmb3IgKGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0 cyk7IGkrKykgeworCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKQorCQkgICAg JiYgIXVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRlLCBpKSkgewogCQkJYnRyX2N1cl9z ZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIAkJCQlwYWdlX3ppcCwgcmVjLCBpbmRleCwg b2Zmc2V0cywgaSwgRkFMU0UsIG10cik7Ci0KLQkJCWNoYW5nZV9vd25lcnNoaXAgPSBUUlVFOwot dXBkYXRlZDoKLQkJCTsKIAkJfQogCX0KLQotCXJldHVybihjaGFuZ2Vfb3duZXJzaGlwKTsKLX0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCi1UaGUgY29tcGxlbWVudCBvZiB0aGUgcHJldmlvdXMgZnVuY3Rp b246IGluIGFuIHVwZGF0ZSBlbnRyeSBtYXkgaW5oZXJpdAotc29tZSBleHRlcm5hbGx5IHN0b3Jl ZCBmaWVsZHMgZnJvbSBhIHJlY29yZC4gV2UgbXVzdCBtYXJrIHRoZW0gYXMgaW5oZXJpdGVkCi1p biBlbnRyeSwgc28gdGhhdCB0aGV5IGFyZSBub3QgZnJlZWQgaW4gYSByb2xsYmFjay4gKi8KLVVO SVZfSU5URVJOCi12b2lkCi1idHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oCi0v Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxlX3QqCWVudHJ5LAkJ LyohPCBpbi9vdXQ6IHVwZGF0ZWQgZW50cnkgdG8gYmUKLQkJCQkJaW5zZXJ0ZWQgdG8gY2x1c3Rl cmVkIGluZGV4ICovCi0JY29uc3QgdXBkX3QqCXVwZGF0ZSkJCS8qITwgaW46IHVwZGF0ZSB2ZWN0 b3IgKi8KLXsKLQl1bGludAkJaTsKLQotCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmll bGRzKGVudHJ5KTsgaSsrKSB7Ci0KLQkJZGZpZWxkX3QqCWRmaWVsZCA9IGR0dXBsZV9nZXRfbnRo X2ZpZWxkKGVudHJ5LCBpKTsKLQkJYnl0ZSoJCWRhdGE7Ci0JCXVsaW50CQlsZW47Ci0JCXVsaW50 CQlqOwotCi0JCWlmICghZGZpZWxkX2lzX2V4dChkZmllbGQpKSB7Ci0JCQljb250aW51ZTsKLQkJ fQotCi0JCS8qIENoZWNrIGlmIGl0IGlzIGluIHVwZGF0ZWQgZmllbGRzICovCi0KLQkJZm9yIChq ID0gMDsgaiA8IHVwZF9nZXRfbl9maWVsZHModXBkYXRlKTsgaisrKSB7Ci0JCQlpZiAodXBkX2dl dF9udGhfZmllbGQodXBkYXRlLCBqKS0+ZmllbGRfbm8gPT0gaSkgewotCi0JCQkJZ290byBpc191 cGRhdGVkOwotCQkJfQotCQl9Ci0KLQkJZGF0YSA9IGRmaWVsZF9nZXRfZGF0YShkZmllbGQpOwot CQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOwotCQlkYXRhW2xlbiAtIEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkUgKyBCVFJfRVhURVJOX0xFTl0KLQkJCXw9IEJUUl9FWFRFUk5fSU5IRVJJ VEVEX0ZMQUc7Ci0KLWlzX3VwZGF0ZWQ6Ci0JCTsKLQl9CiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpA QCAtMzg5MiwyOSArMzgxMSw2IEBAIGJ0cl9jdXJfdW5tYXJrX2V4dGVybl9maWVsZHMoCiAJCX0K IAl9CiB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgotTWFya3MgYWxsIGV4dGVybiBmaWVsZHMgaW4gYSBk dHVwbGUgYXMgb3duZWQgYnkgdGhlIHJlY29yZC4gKi8KLVVOSVZfSU5URVJOCi12b2lkCi1idHJf Y3VyX3VubWFya19kdHVwbGVfZXh0ZXJuX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSkJCS8qITwgaW4vb3V0OiBjbHVzdGVyZWQg aW5kZXggZW50cnkgKi8KLXsKLQl1bGludAlpOwotCi0JZm9yIChpID0gMDsgaSA8IGR0dXBsZV9n ZXRfbl9maWVsZHMoZW50cnkpOyBpKyspIHsKLQkJZGZpZWxkX3QqIGRmaWVsZCA9IGR0dXBsZV9n ZXRfbnRoX2ZpZWxkKGVudHJ5LCBpKTsKLQotCQlpZiAoZGZpZWxkX2lzX2V4dChkZmllbGQpKSB7 Ci0JCQlieXRlKglkYXRhID0gZGZpZWxkX2dldF9kYXRhKGRmaWVsZCk7Ci0JCQl1bGludAlsZW4g PSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOwotCi0JCQlkYXRhW2xlbiAtIEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUgKyBCVFJfRVhURVJOX0xFTl0KLQkJCQkmPSB+QlRSX0VYVEVSTl9PV05FUl9G TEFHOwotCQl9Ci0JfQotfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZsYWdzIHRoZSBkYXRhIHR1cGxl IGZpZWxkcyB0aGF0IGFyZSBtYXJrZWQgYXMgZXh0ZXJuIHN0b3JhZ2UgaW4gdGhlCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaCcKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUu Y29tLTIwMTAxMjE3MDYyNzQxLTZwb3N3YzJ1YzM1ZXh4bm8KKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIy MTEyMDUxMC1pemppYTMxN2xlM2E4ZjVrCkBAIC0zMzMsMTAgKzMzMywxNCBAQCB1bGludAogYnRy X2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZs YWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciAqLworCWJ1Zl9ibG9j a190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1ZmZlciBibG9jayBvZiB0aGUgcmVjb3JkICovCisJ cmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4 LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggb2YgdGhlIHJlY29yZCAqLworCWNvbnN0IHVsaW50 KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMpICovCiAJaWJvb2wJCXZhbCwJ LyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5 IHRocmVhZCAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIp CS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNl dHMgYSBzZWNvbmRhcnkgaW5kZXggcmVjb3JkIGRlbGV0ZSBtYXJrIHRvIFRSVUUgb3IgRkFMU0Uu CiBAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgb3IgZXJyb3IgbnVtYmVyICovCkBA IC00NjksNDAgKzQ3MywyMiBAQCBidHJfZXN0aW1hdGVfbnVtYmVyX29mX2RpZmZlcmVudF9rZXlf dmFsCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2lu ZGV4X3QqCWluZGV4KTsJLyohPCBpbjogaW5kZXggKi8KIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotTWFya3Mg bm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBhcyBub3Qtb3duZWQgYnkgdGhpcyByZWNvcmQuIFRo ZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVkIHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3aGljaCBp cyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCitNYXJrcyBub24tdXBkYXRlZCBvZmYtcGFnZSBm aWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKK211c3QgYmUg dHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3JkIHdoaWNoIGlzIGluc2VydGVkIGVsc2V3 aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIEluIHB1cmdlIG9ubHkgdGhlIG93bmVyIG9mIGV4dGVy bmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93ZWQKLXRvIGZyZWUgdGhlIGZpZWxkLgotQHJldHVy biBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdhcyB0cmFuc2ZlcnJlZCAqLwordG8gZnJlZSB0aGUg ZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJp dGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3ZvaWQK K2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMoCisvKj09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190KglwYWdlX3ppcCwvKiE8IGluL291dDogY29tcHJl c3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3NlZAogCQkJCXBhcnQgd2lsbCBiZSB1cGRhdGVkLCBv ciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgaW4gYSBjbHVzdGVy ZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBpbmRleCBvZiB0aGUg cGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5 IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29uc3QgdXBkX3QqCXVwZGF0ZSwJLyohPCBpbjogdXBk YXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyLCBvciBOVUxMIGlmIG5v dCBsb2dnZWQgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhlIGNvbXBsZW1lbnQgb2YgdGhlIHByZXZp b3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUgZW50cnkgbWF5IGluaGVyaXQKLXNvbWUgZXh0ZXJu YWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSByZWNvcmQuIFdlIG11c3QgbWFyayB0aGVtIGFzIGlu aGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90IGZyZWVkIGluIGEgcm9sbGJh Y2suICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl9tYXJrX2R0dXBsZV9pbmhlcml0ZWRf ZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWR0dXBsZV90 KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCi0JCQkJCWluc2VydGVk IHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpOwkvKiE8IGluOiB1 cGRhdGUgdmVjdG9yICovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLU1hcmtzIGFsbCBleHRlcm4gZmllbGRz IGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5IHRoZSByZWNvcmQuICovCi1VTklWX0lOVEVSTgotdm9p ZAotYnRyX2N1cl91bm1hcmtfZHR1cGxlX2V4dGVybl9maWVsZHMoCi0vKj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJZW50cnkpOwkJLyohPCBpbi9vdXQ6IGNs dXN0ZXJlZCBpbmRleCBlbnRyeSAqLworCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10 cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiwzLDQsNSw2KSkpOwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCiBTdG9yZXMgdGhlIGZpZWxkcyBpbiBiaWdfcmVjX3ZlYyB0byB0aGUgdGFi bGVzcGFjZSBhbmQgcHV0cyBwb2ludGVycyB0bwogdGhlbSBpbiByZWMuICBUaGUgZXh0ZXJuIGZs YWdzIGluIHJlYyB3aWxsIGhhdmUgdG8gYmUgc2V0IGJlZm9yZWhhbmQuCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5oJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmgJcmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNv bS0yMDEwMTIxNzA2Mjc0MS02cG9zd2MydWMzNWV4eG5vCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9kYXRhMGRhdGEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIy MTEyMDUxMC1pemppYTMxN2xlM2E4ZjVrCkBAIC0xNTQsMTQgKzE1NCwxOSBAQCBkZmllbGRfZHVw KAogCWRmaWVsZF90KglmaWVsZCwJLyohPCBpbi9vdXQ6IGRhdGEgZmllbGQgKi8KIAltZW1faGVh cF90KgloZWFwKTsJLyohPCBpbjogbWVtb3J5IGhlYXAgd2hlcmUgYWxsb2NhdGVkICovCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgotVGVzdHMgaWYgZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgaXMgZXF1YWwg Zm9yIHR3byBkZmllbGRzLgotQHJldHVybglUUlVFIGlmIGVxdWFsICovCitUZXN0cyBpZiB0d28g ZGF0YSBmaWVsZHMgYXJlIGVxdWFsLgorSWYgbGVuPT0wLCB0ZXN0cyB0aGUgZGF0YSBsZW5ndGgg YW5kIGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorSWYgbGVuPjAsIHRlc3RzIHRoZSBmaXJzdCBsZW4g Ynl0ZXMgb2YgdGhlIGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorQHJldHVybglUUlVFIGlmIGJvdGgg ZmllbGRzIGFyZSBOVUxMIG9yIGlmIHRoZXkgYXJlIGVxdWFsICovCiBVTklWX0lOTElORQogaWJv b2wKIGRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAogLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PSovCiAJY29uc3QgZGZpZWxkX3QqCWZpZWxkMSwJLyohPCBpbjogZmllbGQgKi8KLQlj b25zdCBkZmllbGRfdCoJZmllbGQyKTsvKiE8IGluOiBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90 KglmaWVsZDIsCS8qITwgaW46IGZpZWxkICovCisJdWxpbnQJCWxlbikJLyohPCBpbjogbWF4aW11 bSBwcmVmaXggdG8gY29tcGFyZSwKKwkJCQlvciAwIHRvIGNvbXBhcmUgdGhlIHdob2xlIGZpZWxk IGxlbmd0aCAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkp OwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFRlc3RzIGlmIGRmaWVsZCBkYXRhIGxlbmd0aCBhbmQgY29u dGVudCBpcyBlcXVhbCB0byB0aGUgZ2l2ZW4uCiBAcmV0dXJuCVRSVUUgaWYgZXF1YWwgKi8KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOnN1bm55LmJh aW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6amlhMzE3bGUzYThmNWsKQEAgLTIyOSwyMCArMjI5LDMw IEBAIGRmaWVsZF9kdXAoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1UZXN0cyBpZiBkYXRhIGxl bmd0aCBhbmQgY29udGVudCBpcyBlcXVhbCBmb3IgdHdvIGRmaWVsZHMuCi1AcmV0dXJuCVRSVUUg aWYgZXF1YWwgKi8KK1Rlc3RzIGlmIHR3byBkYXRhIGZpZWxkcyBhcmUgZXF1YWwuCitJZiBsZW49 PTAsIHRlc3RzIHRoZSBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBmb3IgZXF1YWxpdHkuCitJZiBs ZW4+MCwgdGVzdHMgdGhlIGZpcnN0IGxlbiBieXRlcyBvZiB0aGUgY29udGVudCBmb3IgZXF1YWxp dHkuCitAcmV0dXJuCVRSVUUgaWYgYm90aCBmaWVsZHMgYXJlIE5VTEwgb3IgaWYgdGhleSBhcmUg ZXF1YWwgKi8KIFVOSVZfSU5MSU5FCiBpYm9vbAogZGZpZWxkX2RhdGFzX2FyZV9iaW5hcnlfZXF1 YWwoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAljb25zdCBkZmllbGRfdCoJZmll bGQxLAkvKiE8IGluOiBmaWVsZCAqLwotCWNvbnN0IGRmaWVsZF90KglmaWVsZDIpCS8qITwgaW46 IGZpZWxkICovCisJY29uc3QgZGZpZWxkX3QqCWZpZWxkMiwJLyohPCBpbjogZmllbGQgKi8KKwl1 bGludAkJbGVuKQkvKiE8IGluOiBtYXhpbXVtIHByZWZpeCB0byBjb21wYXJlLAorCQkJCW9yIDAg dG8gY29tcGFyZSB0aGUgd2hvbGUgZmllbGQgbGVuZ3RoICovCiB7Ci0JdWxpbnQJbGVuOworCXVs aW50CWxlbjIgPSBsZW47CiAKLQlsZW4gPSBmaWVsZDEtPmxlbjsKKwlpZiAoZmllbGQxLT5sZW4g PT0gVU5JVl9TUUxfTlVMTCB8fCBsZW4gPT0gMCB8fCBmaWVsZDEtPmxlbiA8IGxlbikgeworCQls ZW4gPSBmaWVsZDEtPmxlbjsKKwl9CiAKLQlyZXR1cm4obGVuID09IGZpZWxkMi0+bGVuCisJaWYg KGZpZWxkMi0+bGVuID09IFVOSVZfU1FMX05VTEwgfHwgbGVuMiA9PSAwIHx8IGZpZWxkMi0+bGVu IDwgbGVuMikgeworCQlsZW4yID0gZmllbGQyLT5sZW47CisJfQorCisJcmV0dXJuKGxlbiA9PSBs ZW4yCiAJICAgICAgICYmIChsZW4gPT0gVU5JVl9TUUxfTlVMTAogCQkgICB8fCAhbWVtY21wKGZp ZWxkMS0+ZGF0YSwgZmllbGQyLT5kYXRhLCBsZW4pKSk7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDpzdW5ueS5iYWluc0BvcmFjbGUuY29tLTIwMTAxMjE3 MDYyNzQxLTZwb3N3YzJ1YzM1ZXh4bm8KKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jv dzB1cGQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyMDUxMC1pempp YTMxN2xlM2E4ZjVrCkBAIC0yODYsMTAgKzI4NiwxMyBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2Zp ZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5v dAogCQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJ Y29tcGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVm aXhlcyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93 ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAq LwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpOy8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSBy b3c7IE5PVEU6IHRoZQorCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0 b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQogCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNU IGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJCXBvc2l0aW9ucyEgKi8KKwlfX2F0dHJpYnV0ZV9fKChu b25udWxsKDMsNCksIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogQ2hlY2tzIGlmIGFu IHVwZGF0ZSB2ZWN0b3IgY2hhbmdlcyBhbiBvcmRlcmluZyBmaWVsZCBvZiBhbiBpbmRleCByZWNv cmQuCiBUaGlzIGZ1bmN0aW9uIGlzIGZhc3QgaWYgdGhlIHVwZGF0ZSB2ZWN0b3IgaXMgc2hvcnQg b3IgdGhlIG51bWJlciBvZiBvcmRlcmluZwpAQCAtNDYyLDExICs0NjUsMTYgQEAgc3RydWN0IHVw ZF9ub2RlX3N0cnVjdHsKICNkZWZpbmUgVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRCAgMwkvKiBj bHVzdGVyZWQgaW5kZXggcmVjb3JkIHNob3VsZCBiZQogCQkJCQlpbnNlcnRlZCwgb2xkIHJlY29y ZCBpcyBhbHJlYWR5IGRlbGV0ZQogCQkJCQltYXJrZWQgKi8KLSNkZWZpbmUgVVBEX05PREVfVVBE QVRFX0FMTF9TRUMJICAgNAkvKiBhbiBvcmRlcmluZyBmaWVsZCBvZiB0aGUgY2x1c3RlcmVkCisj ZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9CTE9CCSAgIDQJLyogY2x1c3RlcmVkIGluZGV4IHJlY29y ZCBzaG91bGQgYmUKKwkJCQkJaW5zZXJ0ZWQsIG9sZCByZWNvcmQgaXMgYWxyZWFkeQorCQkJCQlk ZWxldGUtbWFya2VkOyBub24tdXBkYXRlZCBCTE9CcworCQkJCQlzaG91bGQgYmUgaW5oZXJpdGVk IGJ5IHRoZSBuZXcgcmVjb3JkCisJCQkJCWFuZCBkaXNvd25lZCBieSB0aGUgb2xkIHJlY29yZCAq LworI2RlZmluZSBVUERfTk9ERV9VUERBVEVfQUxMX1NFQwkgICA1CS8qIGFuIG9yZGVyaW5nIGZp ZWxkIG9mIHRoZSBjbHVzdGVyZWQKIAkJCQkJaW5kZXggcmVjb3JkIHdhcyBjaGFuZ2VkLCBvciB0 aGlzIGlzCiAJCQkJCWEgZGVsZXRlIG9wZXJhdGlvbjogc2hvdWxkIHVwZGF0ZQogCQkJCQlhbGwg dGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmRzICovCi0jZGVmaW5lCVVQRF9OT0RFX1VQREFURV9T T01FX1NFQyAgIDUJLyogc2Vjb25kYXJ5IGluZGV4IGVudHJpZXMgc2hvdWxkIGJlCisjZGVmaW5l IFVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDYJLyogc2Vjb25kYXJ5IGluZGV4IGVudHJpZXMg c2hvdWxkIGJlCiAJCQkJCWxvb2tlZCBhdCBhbmQgdXBkYXRlZCBpZiBhbiBvcmRlcmluZwogCQkJ CQlmaWVsZCBjaGFuZ2VkICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwcHVyZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMJ cmV2aWQ6c3VubnkuYmFpbnNAb3JhY2xlLmNvbS0yMDEwMTIxNzA2Mjc0MS02cG9zd2MydWMzNWV4 eG5vCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6amlhMzE3bGUzYThmNWsKQEAgLTUxNSw3 ICs1MTUsNyBAQCByb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybigKIAl3aGlsZSAobm9kZS0+ aW5kZXggIT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUtPmluZGV4OwogCi0JCWlmIChyb3dfdXBk X2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBub2RlLT5pbmRleCwKKwkJaWYgKHJvd191 cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEwsIE5VTEwsIG5vZGUtPmluZGV4LAogCQkJ CQkJICAgICBub2RlLT51cGRhdGUpKSB7CiAJCQkvKiBCdWlsZCB0aGUgb2xkZXIgdmVyc2lvbiBv ZiB0aGUgaW5kZXggZW50cnkgKi8KIAkJCWVudHJ5ID0gcm93X2J1aWxkX2luZGV4X2VudHJ5KG5v ZGUtPnJvdywgTlVMTCwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdW1vZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jCXJldmlkOnN1 bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEyMTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysg Yi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTAxMjIxMTIwNTEwLWl6amlhMzE3bGUzYThmNWsKQEAgLTY5MywxOSArNjkzLDE4 IEBAIHJvd191bmRvX21vZF91cGRfZXhpc3Rfc2VjKAogCXdoaWxlIChub2RlLT5pbmRleCAhPSBO VUxMKSB7CiAJCWluZGV4ID0gbm9kZS0+aW5kZXg7CiAKLQkJaWYgKHJvd191cGRfY2hhbmdlc19v cmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJCQkgICAgIG5vZGUt PnVwZGF0ZSkpIHsKKwkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAorCQkJ ICAgIG5vZGUtPnJvdywgbm9kZS0+ZXh0LCBub2RlLT5pbmRleCwgbm9kZS0+dXBkYXRlKSkgewog CiAJCQkvKiBCdWlsZCB0aGUgbmV3ZXN0IHZlcnNpb24gb2YgdGhlIGluZGV4IGVudHJ5ICovCiAJ CQllbnRyeSA9IHJvd19idWlsZF9pbmRleF9lbnRyeShub2RlLT5yb3csIG5vZGUtPmV4dCwKIAkJ CQkJCSAgICAgIGluZGV4LCBoZWFwKTsKIAkJCWlmIChVTklWX1VOTElLRUxZKCFlbnRyeSkpIHsK IAkJCQkvKiBUaGUgc2VydmVyIG11c3QgaGF2ZSBjcmFzaGVkIGluCi0JCQkJcm93X3VwZF9jbHVz dF9yZWNfYnlfaW5zZXJ0KCksIGluCi0JCQkJcm93X2luc19pbmRleF9lbnRyeV9sb3coKSBiZWZv cmUKLQkJCQlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkKLQkJCQloYXMgd3JpdHRl biB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucwotCQkJCShCTE9Ccykgb2YgdGhlIG5ldyBj bHVzdGVyZWQgaW5kZXggZW50cnkuICovCisJCQkJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0 KCkgYmVmb3JlCisJCQkJdGhlIHVwZGF0ZWQgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAoQkxP QnMpCisJCQkJb2YgdGhlIG5ldyBjbHVzdGVyZWQgaW5kZXggZW50cnkgd2VyZQorCQkJCXdyaXR0 ZW4uICovCiAKIAkJCQkvKiBUaGUgdGFibGUgbXVzdCBiZSBpbiBEWU5BTUlDIG9yIENPTVBSRVNT RUQKIAkJCQlmb3JtYXQuICBSRURVTkRBTlQgYW5kIENPTVBBQ1QgZm9ybWF0cwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYycKLS0tIGEvc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHVwZC5jCXJldmlkOnN1bm55LmJhaW5zQG9yYWNsZS5jb20tMjAxMDEy MTcwNjI3NDEtNnBvc3djMnVjMzVleHhubworKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw dXBkLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjA1MTAtaXpqaWEz MTdsZTNhOGY1awpAQCAtMTE5OCwyMCArMTE5OCwyMSBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2Zp ZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBkYXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5v dAogCQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJ Y29tcGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVm aXhlcyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93 ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAq LwogCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSBy b3c7IE5PVEU6IHRoZQogCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJl ZCBpbmRleAogCQkJCXBvc2l0aW9ucyEgKi8KIHsKLQl1bGludAkJbl91bmlxdWU7Ci0JdWxpbnQJ CW5fdXBkX2ZpZWxkczsKLQl1bGludAkJaSwgajsKLQlkaWN0X2luZGV4X3QqCWNsdXN0X2luZGV4 OworCXVsaW50CQkJbl91bmlxdWU7CisJdWxpbnQJCQlpOworCWNvbnN0IGRpY3RfaW5kZXhfdCoJ Y2x1c3RfaW5kZXg7CiAKLQl1dF9hZCh1cGRhdGUgJiYgaW5kZXgpOworCXV0X2FkKHVwZGF0ZSk7 CisJdXRfYWQoaW5kZXgpOwogCiAJbl91bmlxdWUgPSBkaWN0X2luZGV4X2dldF9uX3VuaXF1ZShp bmRleCk7Ci0Jbl91cGRfZmllbGRzID0gdXBkX2dldF9uX2ZpZWxkcyh1cGRhdGUpOwogCiAJY2x1 c3RfaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChpbmRleC0+dGFibGUpOwogCkBA IC0xMjE5LDMzICsxMjIwLDcyIEBAIHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAog CiAJCWNvbnN0IGRpY3RfZmllbGRfdCoJaW5kX2ZpZWxkOwogCQljb25zdCBkaWN0X2NvbF90Kglj b2w7Ci0JCXVsaW50CQkJY29sX3BvczsKIAkJdWxpbnQJCQljb2xfbm87CisJCWNvbnN0IHVwZF9m aWVsZF90Kgl1cGRfZmllbGQ7CisJCWNvbnN0IGRmaWVsZF90KgkJZGZpZWxkOworCQlkZmllbGRf dAkJZGZpZWxkX2V4dDsKKwkJdWxpbnQJCQlkZmllbGRfbGVuOworCQljb25zdCBieXRlKgkJYnVm OwogCiAJCWluZF9maWVsZCA9IGRpY3RfaW5kZXhfZ2V0X250aF9maWVsZChpbmRleCwgaSk7CiAJ CWNvbCA9IGRpY3RfZmllbGRfZ2V0X2NvbChpbmRfZmllbGQpOwotCQljb2xfcG9zID0gZGljdF9j b2xfZ2V0X2NsdXN0X3Bvcyhjb2wsIGNsdXN0X2luZGV4KTsKIAkJY29sX25vID0gZGljdF9jb2xf Z2V0X25vKGNvbCk7CiAKLQkJZm9yIChqID0gMDsgaiA8IG5fdXBkX2ZpZWxkczsgaisrKSB7CisJ CXVwZF9maWVsZCA9IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8oCisJCQl1cGRhdGUsIGRpY3Rf Y29sX2dldF9jbHVzdF9wb3MoY29sLCBjbHVzdF9pbmRleCkpOwogCi0JCQljb25zdCB1cGRfZmll bGRfdCoJdXBkX2ZpZWxkCi0JCQkJPSB1cGRfZ2V0X250aF9maWVsZCh1cGRhdGUsIGopOworCQlp ZiAodXBkX2ZpZWxkID09IE5VTEwpIHsKKwkJCWNvbnRpbnVlOworCQl9CiAKLQkJCS8qIE5vdGUg dGhhdCBpZiB0aGUgaW5kZXggZmllbGQgaXMgYSBjb2x1bW4gcHJlZml4Ci0JCQl0aGVuIGl0IG1h eSBiZSB0aGF0IHJvdyBkb2VzIG5vdCBjb250YWluIGFuIGV4dGVybmFsbHkKLQkJCXN0b3JlZCBw YXJ0IG9mIHRoZSBjb2x1bW4gdmFsdWUsIGFuZCB3ZSBjYW5ub3QgY29tcGFyZQotCQkJdGhlIGRh dGFzICovCisJCWlmIChyb3cgPT0gTlVMTCkgeworCQkJdXRfYWQoZXh0ID09IE5VTEwpOworCQkJ cmV0dXJuKFRSVUUpOworCQl9CiAKLQkJCWlmIChjb2xfcG9zID09IHVwZF9maWVsZC0+ZmllbGRf bm8KLQkJCSAgICAmJiAocm93ID09IE5VTEwKLQkJCQl8fCBpbmRfZmllbGQtPnByZWZpeF9sZW4g PiAwCi0JCQkJfHwgIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAotCQkJCQlkdHVwbGVf Z2V0X250aF9maWVsZChyb3csIGNvbF9ubyksCi0JCQkJCSYodXBkX2ZpZWxkLT5uZXdfdmFsKSkp KSB7CisJCWRmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHJvdywgY29sX25vKTsKIAotCQkJ CXJldHVybihUUlVFKTsKKwkJLyogVGhpcyB0cmVhdG1lbnQgb2YgY29sdW1uIHByZWZpeCBpbmRl eGVzIGlzIGxvb3NlbHkKKwkJYmFzZWQgb24gcm93X2J1aWxkX2luZGV4X2VudHJ5KCkuICovCisK KwkJaWYgKFVOSVZfTElLRUxZKGluZF9maWVsZC0+cHJlZml4X2xlbiA9PSAwKQorCQkgICAgfHwg ZGZpZWxkX2lzX251bGwoZGZpZWxkKSkgeworCQkJLyogZG8gbm90aGluZyBzcGVjaWFsICovCisJ CX0gZWxzZSBpZiAoVU5JVl9MSUtFTFlfTlVMTChleHQpKSB7CisJCQkvKiBTZWUgaWYgdGhlIGNv bHVtbiBpcyBzdG9yZWQgZXh0ZXJuYWxseS4gKi8KKwkJCWJ1ZiA9IHJvd19leHRfbG9va3VwKGV4 dCwgY29sX25vLCAmZGZpZWxkX2xlbik7CisKKwkJCXV0X2FkKGNvbC0+b3JkX3BhcnQpOworCisJ CQlpZiAoVU5JVl9MSUtFTFlfTlVMTChidWYpKSB7CisJCQkJaWYgKFVOSVZfVU5MSUtFTFkoYnVm ID09IGZpZWxkX3JlZl96ZXJvKSkgeworCQkJCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4s IGJ1dAorCQkJCQl3ZSB0cnkgdG8gZmFpbCBzYWZlIGhlcmUuICovCisJCQkJCXV0X2FkKDApOwor CQkJCQlyZXR1cm4oVFJVRSk7CisJCQkJfQorCisJCQkJZ290byBjb3B5X2RmaWVsZDsKIAkJCX0K KwkJfSBlbHNlIGlmIChkZmllbGRfaXNfZXh0KGRmaWVsZCkpIHsKKwkJCWRmaWVsZF9sZW4gPSBk ZmllbGRfZ2V0X2xlbihkZmllbGQpOworCQkJdXRfYShkZmllbGRfbGVuID4gQlRSX0VYVEVSTl9G SUVMRF9SRUZfU0laRSk7CisJCQlkZmllbGRfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJ WkU7CisJCQl1dF9hKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpCisJCQkgICAgIHx8IGluZF9m aWVsZC0+cHJlZml4X2xlbiA8PSBkZmllbGRfbGVuKTsKKwkJCWJ1ZiA9IGRmaWVsZF9nZXRfZGF0 YShkZmllbGQpOworY29weV9kZmllbGQ6CisJCQl1dF9hKGRmaWVsZF9sZW4gPiAwKTsKKwkJCWRm aWVsZF9jb3B5KCZkZmllbGRfZXh0LCBkZmllbGQpOworCQkJZGZpZWxkX3NldF9kYXRhKCZkZmll bGRfZXh0LCBidWYsIGRmaWVsZF9sZW4pOworCQkJZGZpZWxkID0gJmRmaWVsZF9leHQ7CisJCX0K KworCQlpZiAoIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAorCQkJICAgIGRmaWVsZCwg JnVwZF9maWVsZC0+bmV3X3ZhbCwKKwkJCSAgICBpbmRfZmllbGQtPnByZWZpeF9sZW4pKSB7CisK KwkJCXJldHVybihUUlVFKTsKIAkJfQogCX0KIApAQCAtMTMyOSw3ICsxMzY5LDcgQEAgcm93X3Vw ZF9jaGFuZ2VzX2ZpcnN0X2ZpZWxkc19iaW5hcnkoCiAJCQlpZiAoY29sX3BvcyA9PSB1cGRfZmll bGQtPmZpZWxkX25vCiAJCQkgICAgJiYgIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAog CQkJCSAgICBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSksCi0JCQkJICAgICYodXBkX2Zp ZWxkLT5uZXdfdmFsKSkpIHsKKwkJCQkgICAgJnVwZF9maWVsZC0+bmV3X3ZhbCwgMCkpIHsKIAog CQkJCXJldHVybihUUlVFKTsKIAkJCX0KQEAgLTE1OTYsMTQgKzE2MzYsOTkgQEAgcm93X3VwZF9z ZWNfc3RlcCgKIAl1dF9hZCghZGljdF9pbmRleF9pc19jbHVzdChub2RlLT5pbmRleCkpOwogCiAJ aWYgKG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX1VQREFURV9BTExfU0VDCi0JICAgIHx8IHJvd191 cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJ CQlub2RlLT51cGRhdGUpKSB7CisJICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmlu YXJ5KG5vZGUtPnJvdywgbm9kZS0+ZXh0LAorCQkJCQkJbm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0 ZSkpIHsKIAkJcmV0dXJuKHJvd191cGRfc2VjX2luZGV4X2VudHJ5KG5vZGUsIHRocikpOwogCX0K IAogCXJldHVybihEQl9TVUNDRVNTKTsKIH0KIAorI2lmZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5l IHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KHJlYyxvZmZzZXRzLGVudHJ5LHVw ZGF0ZSkJXAorCXJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0X2Z1bmMocmVjLG9m ZnNldHMsZW50cnksdXBkYXRlKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLworIyBkZWZpbmUgcm93 X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQocmVjLG9mZnNldHMsZW50cnksdXBkYXRl KQlcCisJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYyhlbnRyeSx1cGRh dGUpCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitNYXJrIG5vbi11 cGRhdGVkIG9mZi1wYWdlIGNvbHVtbnMgaW5oZXJpdGVkIHdoZW4gdGhlIHByaW1hcnkga2V5IGlz Cit1cGRhdGVkLiBXZSBtdXN0IG1hcmsgdGhlbSBhcyBpbmhlcml0ZWQgaW4gZW50cnksIHNvIHRo YXQgdGhleSBhcmUgbm90CitmcmVlZCBpbiBhIHJvbGxiYWNrLiBBIGxpbWl0ZWQgdmVyc2lvbiBv ZiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUKK2NhbGxlZCBidHJfY3VyX21hcmtfZHR1cGxlX2lu aGVyaXRlZF9leHRlcm4oKS4KK0ByZXR1cm4gVFJVRSBpZiBhbnkgY29sdW1ucyB3ZXJlIGluaGVy aXRlZCAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCitpYm9v bAorcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXRfZnVuYygKKy8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0 IHJlY190KglyZWMsCS8qITwgaW46IG9sZCByZWNvcmQsIG9yIE5VTEwgKi8KKwljb25zdCB1bGlu dCoJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMocmVjKSwgb3IgTlVMTCAqLworI2Vu ZGlmIC8qIFVOSVZfREVCVUcgKi8KKwlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiB1cGRh dGVkIGVudHJ5IHRvIGJlCisJCQkJaW5zZXJ0ZWQgaW50byB0aGUgY2x1c3RlcmVkIGluZGV4ICov CisJY29uc3QgdXBkX3QqCXVwZGF0ZSkJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLworeworCWli b29sCWluaGVyaXQJPSBGQUxTRTsKKwl1bGludAlpOworCisJdXRfYWQoIXJlYyA9PSAhb2Zmc2V0 cyk7CisJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKKworCWZv ciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7CisJCWRmaWVs ZF90KglkZmllbGQJPSBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7CisJCWJ5dGUqCQlk YXRhOworCQl1bGludAkJbGVuOworCisJCXV0X2FkKCFvZmZzZXRzCisJCSAgICAgIHx8ICFyZWNf b2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpCisJCSAgICAgID09ICFkZmllbGRfaXNfZXh0KGRm aWVsZCkKKwkJICAgICAgfHwgdXBkX2dldF9maWVsZF9ieV9maWVsZF9ubyh1cGRhdGUsIGkpKTsK KwkJaWYgKCFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJICAgIHx8IHVwZF9nZXRfZmllbGRfYnlf ZmllbGRfbm8odXBkYXRlLCBpKSkgeworCQkJY29udGludWU7CisJCX0KKworI2lmZGVmIFVOSVZf REVCVUcKKwkJaWYgKFVOSVZfTElLRUxZKHJlYyAhPSBOVUxMKSkgeworCQkJY29uc3QgYnl0ZSog cmVjX2RhdGEKKwkJCQk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7 CisJCQl1dF9hZChsZW4gPT0gZGZpZWxkX2dldF9sZW4oZGZpZWxkKSk7CisJCQl1dF9hZChsZW4g IT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hZChsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZf U0laRSk7CisKKwkJCXJlY19kYXRhICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7 CisKKwkJCS8qIFRoZSBwb2ludGVyIG11c3Qgbm90IGJlIHplcm8uICovCisJCQl1dF9hZChtZW1j bXAocmVjX2RhdGEsIGZpZWxkX3JlZl96ZXJvLAorCQkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9S RUZfU0laRSkpOworCQkJLyogVGhlIEJMT0IgbXVzdCBiZSBvd25lZC4gKi8KKwkJCXV0X2FkKCEo cmVjX2RhdGFbQlRSX0VYVEVSTl9MRU5dCisJCQkJJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsK KwkJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKworCQlsZW4gPSBkZmllbGRfZ2V0X2xlbihk ZmllbGQpOworCQl1dF9hKGxlbiAhPSBVTklWX1NRTF9OVUxMKTsKKwkJdXRfYShsZW4gPj0gQlRS X0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCWRhdGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxk KSArIGxlbgorCQkJLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOworCQkvKiBUaGUgcG9pbnRl ciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1dF9hKG1lbWNtcChkYXRhLCBmaWVsZF9yZWZfemVy bywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkvKiBUaGUgQkxPQiBtdXN0IGJlIG93 bmVkLiAqLworCQl1dF9hKCEoZGF0YVtCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVS X0ZMQUcpKTsKKworCQlkYXRhW0JUUl9FWFRFUk5fTEVOXSB8PSBCVFJfRVhURVJOX0lOSEVSSVRF RF9GTEFHOworCQkvKiBUaGUgQlRSX0VYVEVSTl9JTkhFUklURURfRkxBRyBvbmx5IG1hdHRlcnMg aW4KKwkJcm9sbGJhY2suIFB1cmdlIHdpbGwgYWx3YXlzIGZyZWUgdGhlIGV4dGVybiBmaWVsZHMg b2YKKwkJYSBkZWxldGUtbWFya2VkIHJvdy4gKi8KKworCQlpbmhlcml0ID0gVFJVRTsKKwl9CisK KwlyZXR1cm4oaW5oZXJpdCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIE1hcmtzIHRoZSBjbHVzdGVyZWQgaW5k ZXggcmVjb3JkIGRlbGV0ZWQgYW5kIGluc2VydHMgdGhlIHVwZGF0ZWQgdmVyc2lvbgogb2YgdGhl IHJlY29yZCB0byB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0 aGUgb3JkZXJpbmcKQEAgLTE2MjIsMTQgKzE3NDcsMTYgQEAgcm93X3VwZF9jbHVzdF9yZWNfYnlf aW5zZXJ0KAogCQkJCWEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAqLwogCW10cl90KgkJbXRyKQkv KiE8IGluL291dDogbXRyOyBnZXRzIGNvbW1pdHRlZCBoZXJlICovCiB7Ci0JbWVtX2hlYXBfdCoJ aGVhcAk9IE5VTEw7CisJbWVtX2hlYXBfdCoJaGVhcDsKIAlidHJfcGN1cl90KglwY3VyOwogCWJ0 cl9jdXJfdCoJYnRyX2N1cjsKIAl0cnhfdCoJCXRyeDsKIAlkaWN0X3RhYmxlX3QqCXRhYmxlOwog CWR0dXBsZV90KgllbnRyeTsKIAl1bGludAkJZXJyOwotCWlib29sCQljaGFuZ2Vfb3duZXJzaGlw ID0gRkFMU0U7CisJaWJvb2wJCWNoYW5nZV9vd25lcnNoaXAJPSBGQUxTRTsKKwlyZWNfdCoJCXJl YzsKKwl1bGludCoJCW9mZnNldHMJCQk9IE5VTEw7CiAKIAl1dF9hZChub2RlKTsKIAl1dF9hZChk aWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CkBAIC0xNjM5LDM0ICsxNzY2LDY0IEBAIHJvd191 cGRfY2x1c3RfcmVjX2J5X2luc2VydCgKIAlwY3VyID0gbm9kZS0+cGN1cjsKIAlidHJfY3VyCT0g YnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cik7CiAKLQlpZiAobm9kZS0+c3RhdGUgIT0gVVBEX05P REVfSU5TRVJUX0NMVVNURVJFRCkgewotCQlyZWNfdCoJCXJlYzsKLQkJZGljdF9pbmRleF90Kglp bmRleDsKLQkJdWxpbnQJCW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKLQkJdWxpbnQq CQlvZmZzZXRzOwotCQlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKKwloZWFwID0gbWVtX2hlYXBf Y3JlYXRlKDEwMDApOworCisJZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+dXBk X3Jvdywgbm9kZS0+dXBkX2V4dCwKKwkJCQkgICAgICBpbmRleCwgaGVhcCk7CisJdXRfYShlbnRy eSk7CisKKwlyb3dfdXBkX2luZGV4X2VudHJ5X3N5c19maWVsZChlbnRyeSwgaW5kZXgsIERBVEFf VFJYX0lELCB0cngtPmlkKTsKIAotCQllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9y ZWMoQlRSX05PX0xPQ0tJTkdfRkxBRywKLQkJCQkJCSAgICAgYnRyX2N1ciwgVFJVRSwgdGhyLCBt dHIpOworCXN3aXRjaCAobm9kZS0+c3RhdGUpIHsKKwlkZWZhdWx0OgorCQl1dF9lcnJvcjsKKwlj YXNlIFVQRF9OT0RFX0lOU0VSVF9CTE9COgorCQkvKiBBIGxvY2sgd2FpdCBvY2N1cnJlZCBpbiBy b3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJdGhlIHByZXZpb3VzIGludm9jYXRpb24gb2YgdGhp cyBmdW5jdGlvbi4gTWFyayB0aGUKKwkJb2ZmLXBhZ2UgY29sdW1ucyBpbiB0aGUgZW50cnkgaW5o ZXJpdGVkLiAqLworCisJCWNoYW5nZV9vd25lcnNoaXAgPSByb3dfdXBkX2NsdXN0X3JlY19ieV9p bnNlcnRfaW5oZXJpdCgKKwkJCU5VTEwsIE5VTEwsIGVudHJ5LCBub2RlLT51cGRhdGUpOworCQl1 dF9hKGNoYW5nZV9vd25lcnNoaXApOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIFVQRF9O T0RFX0lOU0VSVF9DTFVTVEVSRUQ6CisJCS8qIEEgbG9jayB3YWl0IG9jY3VycmVkIGluIHJvd19p bnNfaW5kZXhfZW50cnkoKSBpbgorCQl0aGUgcHJldmlvdXMgaW52b2NhdGlvbiBvZiB0aGlzIGZ1 bmN0aW9uLiAqLworCQlicmVhazsKKwljYXNlIFVQRF9OT0RFX1VQREFURV9DTFVTVEVSRUQ6CisJ CS8qIFRoaXMgaXMgdGhlIGZpcnN0IGludm9jYXRpb24gb2YgdGhlIGZ1bmN0aW9uIHdoZXJlCisJ CXdlIHVwZGF0ZSB0aGUgcHJpbWFyeSBrZXkuICBEZWxldGUtbWFyayB0aGUgb2xkIHJlY29yZAor CQlpbiB0aGUgY2x1c3RlcmVkIGluZGV4IGFuZCBwcmVwYXJlIHRvIGluc2VydCBhIG5ldyBlbnRy eS4gKi8KKwkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOworCQlvZmZzZXRzID0gcmVj X2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIE5VTEwsCisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAm aGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOworCisJCWVyciA9IGJ0 cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKKwkJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0 cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLAorCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgVFJVRSwg dGhyLCBtdHIpOwogCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKK2Vycl9leGl0OgogCQkJbXRy X2NvbW1pdChtdHIpOworCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAkJCXJldHVybihlcnIpOwog CQl9CiAKLQkJLyogTWFyayBhcyBub3Qtb3duZWQgdGhlIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxk cyB3aGljaCB0aGUgbmV3Ci0JCXJvdyBpbmhlcml0cyBmcm9tIHRoZSBkZWxldGUgbWFya2VkIHJl Y29yZDogcHVyZ2Ugc2hvdWxkIG5vdAotCQlmcmVlIHRob3NlIGV4dGVybmFsbHkgc3RvcmVkIGZp ZWxkcyBldmVuIGlmIHRoZSBkZWxldGUgbWFya2VkCi0JCXJlY29yZCBpcyByZW1vdmVkIGZyb20g dGhlIGluZGV4IHRyZWUsIG9yIHVwZGF0ZWQuICovCisJCS8qIElmIHRoZSB0aGUgbmV3IHJvdyBp bmhlcml0cyBleHRlcm5hbGx5IHN0b3JlZAorCQlmaWVsZHMgKG9mZi1wYWdlIGNvbHVtbnMgYS5r LmEuIEJMT0JzKSBmcm9tIHRoZQorCQlkZWxldGUtbWFya2VkIG9sZCByZWNvcmQsIG1hcmsgdGhl bSBkaXNvd25lZCBieSB0aGUKKwkJb2xkIHJlY29yZCBhbmQgb3duZWQgYnkgdGhlIG5ldyBlbnRy eS4gKi8KKworCQlpZiAocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgeworCQkJY2hhbmdl X293bmVyc2hpcCA9IHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhlcml0KAorCQkJCXJl Yywgb2Zmc2V0cywgZW50cnksIG5vZGUtPnVwZGF0ZSk7CiAKLQkJcmVjID0gYnRyX2N1cl9nZXRf cmVjKGJ0cl9jdXIpOwotCQlpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxl KTsKLQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKLQkJ CQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLQkJY2hhbmdlX293bmVyc2hpcCA9IGJ0cl9j dXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLQkJCWJ0cl9jdXJfZ2V0X3BhZ2Vfemlw KGJ0cl9jdXIpLAotCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgbm9kZS0+dXBkYXRlLCBtdHIpOwot CQlpZiAocmVmZXJlbmNlZCkgeworCQkJaWYgKGNoYW5nZV9vd25lcnNoaXApIHsKKwkJCQlidHJf cGN1cl9zdG9yZV9wb3NpdGlvbihwY3VyLCBtdHIpOworCQkJfQorCQl9CiAKKwkJaWYgKHJlZmVy ZW5jZWQpIHsKIAkJCS8qIE5PVEUgdGhhdCB0aGUgZm9sbG93aW5nIGNhbGwgbG9zZXMKIAkJCXRo ZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8KIApAQCAtMTY3NCw0OCArMTgzMSw0OSBAQCByb3dfdXBk X2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJCQkJbm9kZSwgcGN1ciwgdGFibGUsIGluZGV4LCBvZmZz ZXRzLCB0aHIsIG10cik7CiAKIAkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJbXRy X2NvbW1pdChtdHIpOwotCi0JCQkJaWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKLQkJCQkJ bWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJCQl9Ci0KLQkJCQlyZXR1cm4oZXJyKTsKKwkJCQlnb3Rv IGVycl9leGl0OwogCQkJfQogCQl9CiAJfQogCiAJbXRyX2NvbW1pdChtdHIpOwogCi0JaWYgKCFo ZWFwKSB7Ci0JCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoNTAwKTsKLQl9Ci0Jbm9kZS0+c3RhdGUg PSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOwotCi0JZW50cnkgPSByb3dfYnVpbGRfaW5kZXhf ZW50cnkobm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4dCwKLQkJCQkgICAgICBpbmRleCwgaGVh cCk7Ci0JdXRfYShlbnRyeSk7CisJZXJyID0gcm93X2luc19pbmRleF9lbnRyeShpbmRleCwgZW50 cnksCisJCQkJICBub2RlLT51cGRfZXh0ID8gbm9kZS0+dXBkX2V4dC0+bl9leHQgOiAwLAorCQkJ CSAgVFJVRSwgdGhyKTsKKwlub2RlLT5zdGF0ZSA9IGNoYW5nZV9vd25lcnNoaXAKKwkJPyBVUERf Tk9ERV9JTlNFUlRfQkxPQgorCQk6IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ7CisKKwlpZiAo ZXJyID09IERCX1NVQ0NFU1MgJiYgY2hhbmdlX293bmVyc2hpcCkgeworCQkvKiBNYXJrIHRoZSBu b24tdXBkYXRlZCBmaWVsZHMgZGlzb3duZWQgYnkgdGhlIG9sZCByZWNvcmQuICovCisKKwkJLyog Tk9URTogdGhpcyB0cmFuc2FjdGlvbiBoYXMgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQKKwkJYW5k IHRoZXJlZm9yZSBvdGhlciB0cmFuc2FjdGlvbnMgY2Fubm90IG1vZGlmeSB0aGUKKwkJcmVjb3Jk IHdoZW4gd2UgaGF2ZSBubyBsYXRjaCBvbiB0aGUgcGFnZS4gSW4gYWRkaXRpb24sCisJCXdlIGFz c3VtZSB0aGF0IG90aGVyIHF1ZXJ5IHRocmVhZHMgb2YgdGhlIHNhbWUKKwkJdHJhbnNhY3Rpb24g ZG8gbm90IG1vZGlmeSB0aGUgcmVjb3JkIGluIHRoZSBtZWFudGltZS4KKwkJVGhlcmVmb3JlIHdl IGNhbiBhc3NlcnQgdGhhdCB0aGUgcmVzdG9yYXRpb24gb2YgdGhlCisJCWN1cnNvciBzdWNjZWVk cy4gKi8KIAotCXJvd191cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxkKGVudHJ5LCBpbmRleCwgREFU QV9UUlhfSUQsIHRyeC0+aWQpOworCQltdHJfc3RhcnQobXRyKTsKIAotCWlmIChjaGFuZ2Vfb3du ZXJzaGlwKSB7Ci0JCS8qIElmIHdlIHJldHVybiBmcm9tIGEgbG9jayB3YWl0LCBmb3IgZXhhbXBs ZSwgd2UgbWF5IGhhdmUKLQkJZXh0ZXJuIGZpZWxkcyBtYXJrZWQgYXMgbm90LW93bmVkIGluIGVu dHJ5IChtYXJrZWQgaW4gdGhlCi0JCWlmLWJyYW5jaCBhYm92ZSkuIFdlIG11c3QgdW5tYXJrIHRo ZW0sIHRha2UgdGhlIG93bmVyc2hpcAotCQliYWNrLiAqLworCQlpZiAoIWJ0cl9wY3VyX3Jlc3Rv cmVfcG9zaXRpb24oQlRSX01PRElGWV9MRUFGLCBwY3VyLCBtdHIpKSB7CisJCQl1dF9lcnJvcjsK KwkJfQogCi0JCWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9leHRlcm5fZmllbGRzKGVudHJ5KTsKKwkJ cmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZz ZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCisJCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7 CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykpOwogCi0JCS8qIFdlIG11c3QgbWFy ayBub24tdXBkYXRlZCBleHRlcm4gZmllbGRzIGluIGVudHJ5IGFzCi0JCWluaGVyaXRlZCwgc28g dGhhdCBhIHBvc3NpYmxlIHJvbGxiYWNrIHdpbGwgbm90IGZyZWUgdGhlbS4gKi8KKwkJYnRyX2N1 cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxkcygKKwkJCWJ0cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9j dXIpLAorCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgbm9kZS0+dXBkYXRlLCBtdHIpOwogCi0JCWJ0 cl9jdXJfbWFya19kdHVwbGVfaW5oZXJpdGVkX2V4dGVybihlbnRyeSwgbm9kZS0+dXBkYXRlKTsK KwkJbXRyX2NvbW1pdChtdHIpOwogCX0KIAotCWVyciA9IHJvd19pbnNfaW5kZXhfZW50cnkoaW5k ZXgsIGVudHJ5LAotCQkJCSAgbm9kZS0+dXBkX2V4dCA/IG5vZGUtPnVwZF9leHQtPm5fZXh0IDog MCwKLQkJCQkgIFRSVUUsIHRocik7CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCXJldHVybihl cnIpOwpAQCAtMTg2MCw4ICsyMDE4LDkgQEAgcm93X3VwZF9kZWxfbWFya19jbHVzdF9yZWMoCiAJ LyogTWFyayB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZCBkZWxldGVkOyB3ZSBkbyBub3QgaGF2 ZSB0byBjaGVjawogCWxvY2tzLCBiZWNhdXNlIHdlIGFzc3VtZSB0aGF0IHdlIGhhdmUgYW4geC1s b2NrIG9uIHRoZSByZWNvcmQgKi8KIAotCWVyciA9IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0 X3JlYyhCVFJfTk9fTE9DS0lOR19GTEFHLAotCQkJCQkgICAgIGJ0cl9jdXIsIFRSVUUsIHRociwg bXRyKTsKKwllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCisJCUJUUl9OT19M T0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLAorCQlidHJfY3VyX2dldF9y ZWMoYnRyX2N1ciksIGluZGV4LCBvZmZzZXRzLCBUUlVFLCB0aHIsIG10cik7CiAJaWYgKGVyciA9 PSBEQl9TVUNDRVNTICYmIHJlZmVyZW5jZWQpIHsKIAkJLyogTk9URSB0aGF0IHRoZSBmb2xsb3dp bmcgY2FsbCBsb3NlcyB0aGUgcG9zaXRpb24gb2YgcGN1ciAhICovCiAKQEAgLTIwMDYsNyArMjE2 NSw4IEBAIGV4aXRfZnVuYzoKIAogCXJvd191cGRfc3RvcmVfcm93KG5vZGUpOwogCi0JaWYgKHJv d191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgaW5kZXgsIG5vZGUtPnVw ZGF0ZSkpIHsKKwlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93 LCBub2RlLT5leHQsIGluZGV4LAorCQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKIAogCQkvKiBV cGRhdGUgY2F1c2VzIGFuIG9yZGVyaW5nIGZpZWxkIChvcmRlcmluZyBmaWVsZHMgd2l0aGluCiAJ CXRoZSBCLXRyZWUpIG9mIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHRvIGNoYW5nZTogcGVy Zm9ybQpAQCAtMjA3Niw3ICsyMjM2LDggQEAgcm93X3VwZCgKIAl9CiAKIAlpZiAobm9kZS0+c3Rh dGUgPT0gVVBEX05PREVfVVBEQVRFX0NMVVNURVJFRAotCSAgICB8fCBub2RlLT5zdGF0ZSA9PSBV UERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEKSB7CisJICAgIHx8IG5vZGUtPnN0YXRlID09IFVQRF9O T0RFX0lOU0VSVF9DTFVTVEVSRUQKKwkgICAgfHwgbm9kZS0+c3RhdGUgPT0gVVBEX05PREVfSU5T RVJUX0JMT0IpIHsKIAogCQlsb2dfZnJlZV9jaGVjaygpOwogCQllcnIgPSByb3dfdXBkX2NsdXN0 X3N0ZXAobm9kZSwgdGhyKTsKCg== --===============0006206872== 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: ef71af4e89ffe476f8835410451bf72099432af2 # timestamp: 2010-12-21 14:54:56 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: sunny.bains@stripped\ # 6poswc2uc35exxno # # Begin bundle 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 --===============0006206872==--