From: marko.makela Date: April 11 2011 3:01pm Subject: bzr push into mysql-5.5-innodb branch (marko.makela:3363 to 3364) List-Archive: http://lists.mysql.com/commits/135205 Message-Id: <201104111501.p3BF1iCA005357@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1928857920==" --===============1928857920== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMzNjQgTWFya28gTcOka2Vsw6QJMjAxMS0wNC0xMSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMS1pbm5vZGIgdG8gbXlzcWwtNS41LWlubm9kYi4KCiAgICBhZGRlZDoKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QKICAgIG1vZGlmaWVkOgogICAg ICBjbGllbnQvbXlzcWx0ZXN0LmNjCiAgICAgIHNxbC9zcWxfY2xhc3MuY2MKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hh bmRsZXIvaGFfaW5ub2RiLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIw YWx0ZXIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHVuZG8uaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2xvZy9sb2cwbG9nLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHN5cy5jCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Ry eC90cngwdW5kby5jCiAzMzYzIFZhc2lsIERpbW92CTIwMTEtMDQtMDgKICAgICAgSW5jcmVtZW50 IElubm9EQiB2ZXJzaW9uIGZyb20gMS4xLjYgdG8gMS4xLjcKICAgICAgSW5ub0RCIDEuMS42IHdh cyByZWxlYXNlZCB3aXRoIE15U1FMIDUuNS4xMQoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCj09PSBtb2RpZmllZCBmaWxlICdjbGllbnQvbXlzcWx0 ZXN0LmNjJwotLS0gYS9jbGllbnQvbXlzcWx0ZXN0LmNjCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydworKysgYi9jbGllbnQvbXlzcWx0 ZXN0LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBm enk3NzI2Nm92dGwKQEAgLTQ1OTgsMTMgKzQ1OTgsMTQgQEAgc3RhdGljIGludCBteV9raWxsKGlu dCBwaWQsIGludCBzaWcpCiAgIGNvbW1hbmQgIGNhbGxlZCBjb21tYW5kCiAKICAgREVTQ1JJUFRJ T04KLSAgc2h1dGRvd24gWzx0aW1lb3V0Pl0KKyAgc2h1dGRvd25fc2VydmVyIFs8dGltZW91dD5d CiAKICovCiAKIHZvaWQgZG9fc2h1dGRvd25fc2VydmVyKHN0cnVjdCBzdF9jb21tYW5kICpjb21t YW5kKQogewotICBpbnQgdGltZW91dD02MCwgcGlkOworICBsb25nIHRpbWVvdXQ9NjA7CisgIGlu dCBwaWQ7CiAgIERZTkFNSUNfU1RSSU5HIGRzX3BpZGZpbGVfbmFtZTsKICAgTVlTUUwqIG15c3Fs ID0gJmN1cl9jb24tPm15c3FsOwogICBzdGF0aWMgRFlOQU1JQ19TVFJJTkcgZHNfdGltZW91dDsK QEAgLTQ2MTksOCArNDYyMCw5IEBAIHZvaWQgZG9fc2h1dGRvd25fc2VydmVyKHN0cnVjdCBzdF9j b21tYW4KIAogICBpZiAoZHNfdGltZW91dC5sZW5ndGgpCiAgIHsKLSAgICB0aW1lb3V0PSBhdG9p KGRzX3RpbWVvdXQuc3RyKTsKLSAgICBpZiAodGltZW91dCA9PSAwKQorICAgIGNoYXIqIGVuZHB0 cjsKKyAgICB0aW1lb3V0PSBzdHJ0b2woZHNfdGltZW91dC5zdHIsICZlbmRwdHIsIDEwKTsKKyAg ICBpZiAoKmVuZHB0ciAhPSAnXDAnKQogICAgICAgZGllKCJJbGxlZ2FsIGFyZ3VtZW50IGZvciB0 aW1lb3V0OiAnJXMnIiwgZHNfdGltZW91dC5zdHIpOwogICB9CiAgIGR5bnN0cl9mcmVlKCZkc190 aW1lb3V0KTsKQEAgLTQ2NjIsNyArNDY2NCw3IEBAIHZvaWQgZG9fc2h1dGRvd25fc2VydmVyKHN0 cnVjdCBzdF9jb21tYW4KICAgICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlByb2Nlc3MgJWQgZG9l cyBub3QgZXhpc3QgYW55bW9yZSIsIHBpZCkpOwogICAgICAgREJVR19WT0lEX1JFVFVSTjsKICAg ICB9Ci0gICAgREJVR19QUklOVCgiaW5mbyIsICgiU2xlZXBpbmcsIHRpbWVvdXQ6ICVkIiwgdGlt ZW91dCkpOworICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlNsZWVwaW5nLCB0aW1lb3V0OiAlbGQi LCB0aW1lb3V0KSk7CiAgICAgbXlfc2xlZXAoMTAwMDAwMEwpOwogICB9CiAKCj09PSBhZGRlZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQnCi0t LSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU5NjQxLnJlc3VsdAkxOTcw LTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5u b2RiX2J1ZzU5NjQxLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQx MTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC0wLDAgKzEsNTcgQEAKK0NSRUFURSBUQUJMRSB0 KGEgSU5UIFBSSU1BUlkgS0VZLCBiIElOVClFTkdJTkU9SW5ub0RCOworSU5TRVJUIElOVE8gdCBW QUxVRVMoMiwyKSwoNCw0KSwoOCw4KSwoMTYsMTYpLCgzMiwzMik7CitDT01NSVQ7CitYQSBTVEFS VCAnMTIzJzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDEsMSk7CitYQSBFTkQgJzEyMyc7CitYQSBQ UkVQQVJFICcxMjMnOworWEEgU1RBUlQgJzQ1Nic7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygzLDQ3 KSwoNSw2Nyk7CitVUERBVEUgdCBTRVQgYj0yKmIgV0hFUkUgYSBCRVRXRUVOIDUgQU5EIDg7CitY QSBFTkQgJzQ1Nic7CitYQSBQUkVQQVJFICc0NTYnOworWEEgU1RBUlQgJzc4OSc7CitVUERBVEUg dCBTRVQgYj00KmEgV0hFUkUgYT0zMjsKK1hBIEVORCAnNzg5JzsKK1hBIFBSRVBBUkUgJzc4OSc7 CitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJhbnNhY3Rp b25zIik7CitTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7 CitTRUxFQ1QgKiBGUk9NIHQ7CithCWIKKzEJMQorMgkyCiszCTQ3Cis0CTQKKzUJMTM0Cis4CTE2 CisxNgkxNgorMzIJMTI4CitDT01NSVQ7CitTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVM IFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CithCWIKKzEJMQorMgkyCiszCTQ3 Cis0CTQKKzUJMTM0Cis4CTE2CisxNgkxNgorMzIJMTI4CitDT01NSVQ7CitYQSBSRUNPVkVSOwor Zm9ybWF0SUQJZ3RyaWRfbGVuZ3RoCWJxdWFsX2xlbmd0aAlkYXRhCisxCTMJMAk3ODkKKzEJMwkw CTQ1NgorMQkzCTAJMTIzCitYQSBST0xMQkFDSyAnMTIzJzsKK1hBIFJPTExCQUNLICc0NTYnOwor WEEgQ09NTUlUICc3ODknOworU0VMRUNUICogRlJPTSB0OworYQliCisyCTIKKzQJNAorOAk4Cisx NgkxNgorMzIJMTI4CitEUk9QIFRBQkxFIHQ7Cgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9z dWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk2NDEudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0 ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk2NDEudGVzdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAw CisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0 bApAQCAtMCwwICsxLDY2IEBACisjIEJ1ZyAjNTk2NDEgUHJlcGFyZWQgWEEgdHJhbnNhY3Rpb24g Y2F1c2VzIHNodXRkb3duIGhhbmcgYWZ0ZXIgYSBjcmFzaAorCistLSBzb3VyY2UgaW5jbHVkZS9u b3RfZW1iZWRkZWQuaW5jCistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5pbmMKKworQ1JF QVRFIFRBQkxFIHQoYSBJTlQgUFJJTUFSWSBLRVksIGIgSU5UKUVOR0lORT1Jbm5vREI7CitJTlNF UlQgSU5UTyB0IFZBTFVFUygyLDIpLCg0LDQpLCg4LDgpLCgxNiwxNiksKDMyLDMyKTsKK0NPTU1J VDsKK1hBIFNUQVJUICcxMjMnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMSwxKTsKK1hBIEVORCAn MTIzJzsKK1hBIFBSRVBBUkUgJzEyMyc7CisKK0NPTk5FQ1QgKGNvbjEsbG9jYWxob3N0LHJvb3Qs LCk7CitDT05ORUNUSU9OIGNvbjE7CisKK1hBIFNUQVJUICc0NTYnOworSU5TRVJUIElOVE8gdCBW QUxVRVMoMyw0NyksKDUsNjcpOworVVBEQVRFIHQgU0VUIGI9MipiIFdIRVJFIGEgQkVUV0VFTiA1 IEFORCA4OworWEEgRU5EICc0NTYnOworWEEgUFJFUEFSRSAnNDU2JzsKKworQ09OTkVDVCAoY29u Mixsb2NhbGhvc3Qscm9vdCwsKTsKK0NPTk5FQ1RJT04gY29uMjsKKworWEEgU1RBUlQgJzc4OSc7 CitVUERBVEUgdCBTRVQgYj00KmEgV0hFUkUgYT0zMjsKK1hBIEVORCAnNzg5JzsKK1hBIFBSRVBB UkUgJzc4OSc7CisKKyMgVGhlIHNlcnZlciB3b3VsZCBpc3N1ZSB0aGlzIHdhcm5pbmcgb24gcmVz dGFydC4KK2NhbGwgbXRyLmFkZF9zdXBwcmVzc2lvbigiRm91bmQgMyBwcmVwYXJlZCBYQSB0cmFu c2FjdGlvbnMiKTsKKworIyBLaWxsIHRoZSBzZXJ2ZXIgd2l0aG91dCBzZW5kaW5nIGEgc2h1dGRv d24gY29tbWFuZAorLS0gZXhlYyBlY2hvICJ3YWl0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9t eXNxbGQuMS5leHBlY3QKKy0tIHNodXRkb3duX3NlcnZlciAwCistLSBzb3VyY2UgaW5jbHVkZS93 YWl0X3VudGlsX2Rpc2Nvbm5lY3RlZC5pbmMKKworIyBSZXN0YXJ0IHRoZSBzZXJ2ZXIuCistLSBl eGVjIGVjaG8gInJlc3RhcnQiID4gJE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVj dAorLS0gZW5hYmxlX3JlY29ubmVjdAorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9jb25u ZWN0ZWRfYWdhaW4uaW5jCitTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5D T01NSVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CitDT01NSVQ7CisKKyMgU2h1dCBkb3duIHRoZSBz ZXJ2ZXIuIFRoaXMgd291bGQgaGFuZyBiZWNhdXNlIG9mIHRoZSBidWcuCistLSBleGVjIGVjaG8g IndhaXQiID4gJE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAorLS0gc2h1dGRv d25fc2VydmVyCistLSBzb3VyY2UgaW5jbHVkZS93YWl0X3VudGlsX2Rpc2Nvbm5lY3RlZC5pbmMK KworIyBSZXN0YXJ0IHRoZSBzZXJ2ZXIuCistLSBleGVjIGVjaG8gInJlc3RhcnQiID4gJE1ZU1FM VEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAorLS0gZW5hYmxlX3JlY29ubmVjdAorLS0g c291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9jb25uZWN0ZWRfYWdhaW4uaW5jCisKK1NFVCBUUkFO U0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVBRCBVTkNPTU1JVFRFRDsKK1NFTEVDVCAqIEZST00g dDsKK0NPTU1JVDsKK1hBIFJFQ09WRVI7CitYQSBST0xMQkFDSyAnMTIzJzsKK1hBIFJPTExCQUNL ICc0NTYnOworWEEgQ09NTUlUICc3ODknOworU0VMRUNUICogRlJPTSB0OworCitEUk9QIFRBQkxF IHQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9jbGFzcy5jYycKLS0tIGEvc3FsL3NxbF9j bGFzcy5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVo MThpNThyZjRiMncKKysrIGIvc3FsL3NxbF9jbGFzcy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC0zNjc1LDYgKzM2NzUs NyBAQCBib29sIHhpZF9jYWNoZV9pbnNlcnQoWElEICp4aWQsIGVudW0geGFfCiAgICAgeHMtPnhh X3N0YXRlPXhhX3N0YXRlOwogICAgIHhzLT54aWQuc2V0KHhpZCk7CiAgICAgeHMtPmluX3RoZD0w OworICAgIHhzLT5ybV9lcnJvcj0wOwogICAgIHJlcz1teV9oYXNoX2luc2VydCgmeGlkX2NhY2hl LCAodWNoYXIqKXhzKTsKICAgfQogICBteXNxbF9tdXRleF91bmxvY2soJkxPQ0tfeGlkX2NhY2hl KTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2Ri LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydworKysg Yi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTYyNDQsMTAg KzYyNDQsNiBAQCBjcmVhdGVfdGFibGVfZGVmKAogCURCVUdfUFJJTlQoImVudGVyIiwgKCJ0YWJs ZV9uYW1lOiAlcyIsIHRhYmxlX25hbWUpKTsKIAogCXV0X2EodHJ4LT5teXNxbF90aGQgIT0gTlVM TCk7Ci0JaWYgKElTX01BR0lDX1RBQkxFX0FORF9VU0VSX0RFTklFRF9BQ0NFU1ModGFibGVfbmFt ZSwKLQkJCQkJCSAgKFRIRCopIHRyeC0+bXlzcWxfdGhkKSkgewotCQlEQlVHX1JFVFVSTihIQV9F UlJfR0VORVJJQyk7Ci0JfQogCiAJLyogTXlTUUwgZG9lcyB0aGUgbmFtZSBsZW5ndGggY2hlY2su IEJ1dCB3ZSBkbyBhZGRpdGlvbmFsIGNoZWNrCiAJb24gdGhlIG5hbWUgbGVuZ3RoIGhlcmUgKi8K QEAgLTYzNjgsNiArNjM2NCw4IEBAIGVycl9jb2w6CiAJCQljb2xfbGVuKTsKIAl9CiAKKwlzcnZf bG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7CisKIAllcnJv ciA9IHJvd19jcmVhdGVfdGFibGVfZm9yX215c3FsKHRhYmxlLCB0cngpOwogCiAJaWYgKGVycm9y ID09IERCX0RVUExJQ0FURV9LRVkpIHsKQEAgLTY3ODQsMzggKzY3ODIsMTcgQEAgaGFfaW5ub2Jh c2U6OmNyZWF0ZSgKIAkJREJVR19SRVRVUk4oSEFfRVJSX1RPX0JJR19ST1cpOwogCX0KIAotCS8q IEdldCB0aGUgdHJhbnNhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRoZCwgb3Ig Y3JlYXRlIG9uZQotCWlmIG5vdCB5ZXQgY3JlYXRlZCAqLwotCi0JcGFyZW50X3RyeCA9IGNoZWNr X3RyeF9leGlzdHModGhkKTsKLQotCS8qIEluIGNhc2UgTXlTUUwgY2FsbHMgdGhpcyBpbiB0aGUg bWlkZGxlIG9mIGEgU0VMRUNUIHF1ZXJ5LCByZWxlYXNlCi0JcG9zc2libGUgYWRhcHRpdmUgaGFz aCBsYXRjaCB0byBhdm9pZCBkZWFkbG9ja3Mgb2YgdGhyZWFkcyAqLwotCi0JdHJ4X3NlYXJjaF9s YXRjaF9yZWxlYXNlX2lmX3Jlc2VydmVkKHBhcmVudF90cngpOwotCi0JdHJ4ID0gaW5ub2Jhc2Vf dHJ4X2FsbG9jYXRlKHRoZCk7Ci0KLQlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IGxvd2Vy X2Nhc2VfdGFibGVfbmFtZXM7Ci0KIAlzdHJjcHkobmFtZTIsIG5hbWUpOwogCiAJbm9ybWFsaXpl X3RhYmxlX25hbWUobm9ybV9uYW1lLCBuYW1lMik7CiAKLQkvKiBMYXRjaCB0aGUgSW5ub0RCIGRh dGEgZGljdGlvbmFyeSBleGNsdXNpdmVseSBzbyB0aGF0IG5vIGRlYWRsb2NrcwotCW9yIGxvY2sg d2FpdHMgY2FuIGhhcHBlbiBpbiBpdCBkdXJpbmcgYSB0YWJsZSBjcmVhdGUgb3BlcmF0aW9uLgot CURyb3AgdGFibGUgZXRjLiBkbyB0aGlzIGxhdGNoaW5nIGluIHJvdzBteXNxbC5jLiAqLwotCi0J cm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7Ci0KIAkvKiBDcmVhdGUgdGhlIHRh YmxlIGRlZmluaXRpb24gaW4gSW5ub0RCICovCiAKIAlmbGFncyA9IDA7CiAKIAkvKiBWYWxpZGF0 ZSBjcmVhdGUgb3B0aW9ucyBpZiBpbm5vZGJfc3RyaWN0X21vZGUgaXMgc2V0LiAqLwogCWlmICgh Y3JlYXRlX29wdGlvbnNfYXJlX3ZhbGlkKHRoZCwgZm9ybSwgY3JlYXRlX2luZm8pKSB7Ci0JCWVy cm9yID0gRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OOwotCQlnb3RvIGNsZWFudXA7CisJCURC VUdfUkVUVVJOKEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTik7CiAJfQogCiAJaWYgKGNyZWF0 ZV9pbmZvLT5rZXlfYmxvY2tfc2l6ZSkgewpAQCAtNjk1NywxNiArNjkzNCwzNyBAQCBoYV9pbm5v YmFzZTo6Y3JlYXRlKAogCiAJLyogQ2hlY2sgZm9yIG5hbWUgY29uZmxpY3RzICh3aXRoIHJlc2Vy dmVkIG5hbWUpIGZvcgogCWFueSB1c2VyIGluZGljZXMgdG8gYmUgY3JlYXRlZC4gKi8KLQlpZiAo aW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh0cngsIGZvcm0tPmtleV9pbmZvLAorCWlm IChpbm5vYmFzZV9pbmRleF9uYW1lX2lzX3Jlc2VydmVkKHRoZCwgZm9ybS0+a2V5X2luZm8sCiAJ CQkJCSAgICBmb3JtLT5zLT5rZXlzKSkgewotCQllcnJvciA9IC0xOwotCQlnb3RvIGNsZWFudXA7 CisJCURCVUdfUkVUVVJOKC0xKTsKKwl9CisKKwlpZiAoSVNfTUFHSUNfVEFCTEVfQU5EX1VTRVJf REVOSUVEX0FDQ0VTUyhub3JtX25hbWUsIHRoZCkpIHsKKwkJREJVR19SRVRVUk4oSEFfRVJSX0dF TkVSSUMpOwogCX0KIAogCWlmIChjcmVhdGVfaW5mby0+b3B0aW9ucyAmIEhBX0xFWF9DUkVBVEVf VE1QX1RBQkxFKSB7CiAJCWZsYWdzIHw9IERJQ1RfVEYyX1RFTVBPUkFSWSA8PCBESUNUX1RGMl9T SElGVDsKIAl9CiAKKwkvKiBHZXQgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUg Y3VycmVudCB0aGQsIG9yIGNyZWF0ZSBvbmUKKwlpZiBub3QgeWV0IGNyZWF0ZWQgKi8KKworCXBh cmVudF90cnggPSBjaGVja190cnhfZXhpc3RzKHRoZCk7CisKKwkvKiBJbiBjYXNlIE15U1FMIGNh bGxzIHRoaXMgaW4gdGhlIG1pZGRsZSBvZiBhIFNFTEVDVCBxdWVyeSwgcmVsZWFzZQorCXBvc3Np YmxlIGFkYXB0aXZlIGhhc2ggbGF0Y2ggdG8gYXZvaWQgZGVhZGxvY2tzIG9mIHRocmVhZHMgKi8K KworCXRyeF9zZWFyY2hfbGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwYXJlbnRfdHJ4KTsKKwor CXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh0aGQpOworCisJLyogTGF0Y2ggdGhlIElubm9E QiBkYXRhIGRpY3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKKwlvciBs b2NrIHdhaXRzIGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGEgdGFibGUgY3JlYXRlIG9wZXJhdGlv bi4KKwlEcm9wIHRhYmxlIGV0Yy4gZG8gdGhpcyBsYXRjaGluZyBpbiByb3cwbXlzcWwuYy4gKi8K KworCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOworCiAJZXJyb3IgPSBjcmVh dGVfdGFibGVfZGVmKHRyeCwgZm9ybSwgbm9ybV9uYW1lLAogCQljcmVhdGVfaW5mby0+b3B0aW9u cyAmIEhBX0xFWF9DUkVBVEVfVE1QX1RBQkxFID8gbmFtZTIgOiBOVUxMLAogCQlmbGFncyk7CkBA IC03MjIxLDE0ICs3MjE5LDE0IEBAIGhhX2lubm9iYXNlOjpkZWxldGVfdGFibGUoCiAKIAl0cngg PSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodGhkKTsKIAotCXNydl9sb3dlcl9jYXNlX3RhYmxlX25h bWVzID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKLQogCW5hbWVfbGVuID0gc3RybGVuKG5hbWUp OwogCiAJdXRfYShuYW1lX2xlbiA8IDEwMDApOwogCiAJLyogRHJvcCB0aGUgdGFibGUgaW4gSW5u b0RCICovCiAKKwlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IGxvd2VyX2Nhc2VfdGFibGVf bmFtZXM7CisKIAllcnJvciA9IHJvd19kcm9wX3RhYmxlX2Zvcl9teXNxbChub3JtX25hbWUsIHRy eCwKIAkJCQkJIHRoZF9zcWxfY29tbWFuZCh0aGQpCiAJCQkJCSA9PSBTUUxDT01fRFJPUF9EQik7 CkBAIC03MzQ0LDggKzczNDIsNiBAQCBpbm5vYmFzZV9yZW5hbWVfdGFibGUoCiAJY2hhcioJbm9y bV90bzsKIAljaGFyKglub3JtX2Zyb207CiAKLQlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9 IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7Ci0KIAkvLyBNYWdpYyBudW1iZXIgNjQgYXJiaXRyYXJ5 CiAJbm9ybV90byA9IChjaGFyKikgbXlfbWFsbG9jKHN0cmxlbih0bykgKyA2NCwgTVlGKDApKTsK IAlub3JtX2Zyb20gPSAoY2hhciopIG15X21hbGxvYyhzdHJsZW4oZnJvbSkgKyA2NCwgTVlGKDAp KTsKQEAgLTczNjAsNiArNzM1Niw4IEBAIGlubm9iYXNlX3JlbmFtZV90YWJsZSgKIAkJcm93X215 c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CiAJfQogCisJc3J2X2xvd2VyX2Nhc2VfdGFi bGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOworCiAJZXJyb3IgPSByb3dfcmVuYW1l X3RhYmxlX2Zvcl9teXNxbCgKIAkJbm9ybV9mcm9tLCBub3JtX3RvLCB0cngsIGxvY2tfYW5kX2Nv bW1pdCk7CiAKQEAgLTEwMjY1LDcgKzEwMjYzLDcgQEAgaW5ub2Jhc2VfY29tbWl0X2J5X3hpZCgK IAogCWlmICh0cngpIHsKIAkJaW5ub2Jhc2VfY29tbWl0X2xvdyh0cngpOwotCisJCXRyeF9mcmVl X2Zvcl9iYWNrZ3JvdW5kKHRyeCk7CiAJCXJldHVybihYQV9PSyk7CiAJfSBlbHNlIHsKIAkJcmV0 dXJuKFhBRVJfTk9UQSk7CkBAIC0xMDI5MSw3ICsxMDI4OSw5IEBAIGlubm9iYXNlX3JvbGxiYWNr X2J5X3hpZCgKIAl0cnggPSB0cnhfZ2V0X3RyeF9ieV94aWQoeGlkKTsKIAogCWlmICh0cngpIHsK LQkJcmV0dXJuKGlubm9iYXNlX3JvbGxiYWNrX3RyeCh0cngpKTsKKwkJaW50CXJldCA9IGlubm9i YXNlX3JvbGxiYWNrX3RyeCh0cngpOworCQl0cnhfZnJlZV9mb3JfYmFja2dyb3VuZCh0cngpOwor CQlyZXR1cm4ocmV0KTsKIAl9IGVsc2UgewogCQlyZXR1cm4oWEFFUl9OT1RBKTsKIAl9CkBAIC0x MDkyNCwxOSArMTA5MjQsMTkgQEAgc3RhdGljIGludCBzaG93X2lubm9kYl92YXJzKFRIRCAqdGhk LCBTSAogICByZXR1cm4gMDsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogVGhpcyBmdW5jdGlvbiBjaGVja3MgZWFjaCBpbmRleCBuYW1lIGZvciBhIHRhYmxlIGFnYWlu c3QgcmVzZXJ2ZWQKLXN5c3RlbSBkZWZhdWx0IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNU X0lOREVYJy4gSWYgYSBuYW1lIG1hdGNoZXMsCi10aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJu aW5nIG1lc3NhZ2UgdG8gdGhlIGNsaWVudCwgYW5kIHJldHVybnMgdHJ1ZS4gKi8KK3N5c3RlbSBk ZWZhdWx0IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lCitt YXRjaGVzLCB0aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNs aWVudCwKK2FuZCByZXR1cm5zIHRydWUuCitAcmV0dXJuIHRydWUgaWYgdGhlIGluZGV4IG5hbWUg bWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwogZXh0ZXJuICJDIiBVTklWX0lOVEVSTgogYm9v bAogaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKIC8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PSovCi0JCQkJCS8qIG91dDogdHJ1ZSBpZiBhbiBpbmRleCBuYW1lCi0JCQkJCW1h dGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KLQljb25zdCB0cnhfdCoJdHJ4LAkJLyogaW46IElu bm9EQiB0cmFuc2FjdGlvbiBoYW5kbGUgKi8KLQljb25zdCBLRVkqCWtleV9pbmZvLAkvKiBpbjog SW5kZXhlcyB0byBiZSBjcmVhdGVkICovCi0JdWxpbnQJCW51bV9vZl9rZXlzKQkvKiBpbjogTnVt YmVyIG9mIGluZGV4ZXMgdG8KKwlUSEQqCQl0aGQsCQkvKiE8IGluL291dDogTXlTUUwgY29ubmVj dGlvbiAqLworCWNvbnN0IEtFWSoJa2V5X2luZm8sCS8qITwgaW46IEluZGV4ZXMgdG8gYmUgY3Jl YXRlZCAqLworCXVsaW50CQludW1fb2Zfa2V5cykJLyohPCBpbjogTnVtYmVyIG9mIGluZGV4ZXMg dG8KIAkJCQkJYmUgY3JlYXRlZC4gKi8KIHsKIAljb25zdCBLRVkqCWtleTsKQEAgLTEwOTQ4LDcg KzEwOTQ4LDcgQEAgaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKIAkJaWYgKGlubm9i YXNlX3N0cmNhc2VjbXAoa2V5LT5uYW1lLAogCQkJCQlpbm5vYmFzZV9pbmRleF9yZXNlcnZlX25h bWUpID09IDApIHsKIAkJCS8qIFB1c2ggd2FybmluZyB0byBteXNxbCAqLwotCQkJcHVzaF93YXJu aW5nX3ByaW50ZigoVEhEKikgdHJ4LT5teXNxbF90aGQsCisJCQlwdXNoX3dhcm5pbmdfcHJpbnRm KHRoZCwKIAkJCQkJICAgIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4sCiAJCQkJCSAgICBF Ul9XUk9OR19OQU1FX0ZPUl9JTkRFWCwKIAkJCQkJICAgICJDYW5ub3QgQ3JlYXRlIEluZGV4IHdp dGggbmFtZSAiCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hh X2lubm9kYi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuaAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC0zMjEs MTUgKzMyMSwxNCBAQCBpbm5vYmFzZV90cnhfYWxsb2NhdGUoCiBUaGlzIGZ1bmN0aW9uIGNoZWNr cyBlYWNoIGluZGV4IG5hbWUgZm9yIGEgdGFibGUgYWdhaW5zdCByZXNlcnZlZAogc3lzdGVtIGRl ZmF1bHQgcHJpbWFyeSBpbmRleCBuYW1lICdHRU5fQ0xVU1RfSU5ERVgnLiBJZiBhIG5hbWUKIG1h dGNoZXMsIHRoaXMgZnVuY3Rpb24gcHVzaGVzIGFuIHdhcm5pbmcgbWVzc2FnZSB0byB0aGUgY2xp ZW50LAotYW5kIHJldHVybnMgdHJ1ZS4gKi8KK2FuZCByZXR1cm5zIHRydWUuCitAcmV0dXJuIHRy dWUgaWYgdGhlIGluZGV4IG5hbWUgbWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwogZXh0ZXJu ICJDIgogYm9vbAogaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKIC8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PSovCi0JCQkJCS8qIG91dDogdHJ1ZSBpZiB0aGUgaW5kZXggbmFt ZQotCQkJCQltYXRjaGVzIHRoZSByZXNlcnZlZCBuYW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJ CS8qIGluOiBJbm5vREIgdHJhbnNhY3Rpb24gaGFuZGxlICovCi0JY29uc3QgS0VZKglrZXlfaW5m bywJLyogaW46IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwotCXVsaW50CQludW1fb2Zfa2V5cyk7 CS8qIGluOiBOdW1iZXIgb2YgaW5kZXhlcyB0bworCVRIRCoJCXRoZCwJCS8qITwgaW4vb3V0OiBN eVNRTCBjb25uZWN0aW9uICovCisJY29uc3QgS0VZKglrZXlfaW5mbywJLyohPCBpbjogSW5kZXhl cyB0byBiZSBjcmVhdGVkICovCisJdWxpbnQJCW51bV9vZl9rZXlzKTsJLyohPCBpbjogTnVtYmVy IG9mIGluZGV4ZXMgdG8KIAkJCQkJYmUgY3JlYXRlZC4gKi8KIAoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtNjUzLDQ0ICs2NTMsMzcgQEAg aGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAogCXVwZGF0ZV90aGQoKTsKIAotCWhlYXAgPSBtZW1f aGVhcF9jcmVhdGUoMTAyNCk7Ci0KIAkvKiBJbiBjYXNlIE15U1FMIGNhbGxzIHRoaXMgaW4gdGhl IG1pZGRsZSBvZiBhIFNFTEVDVCBxdWVyeSwgcmVsZWFzZQogCXBvc3NpYmxlIGFkYXB0aXZlIGhh c2ggbGF0Y2ggdG8gYXZvaWQgZGVhZGxvY2tzIG9mIHRocmVhZHMuICovCiAJdHJ4X3NlYXJjaF9s YXRjaF9yZWxlYXNlX2lmX3Jlc2VydmVkKHByZWJ1aWx0LT50cngpOwotCXRyeF9zdGFydF9pZl9u b3Rfc3RhcnRlZChwcmVidWlsdC0+dHJ4KTsKIAotCS8qIENyZWF0ZSBhIGJhY2tncm91bmQgdHJh bnNhY3Rpb24gZm9yIHRoZSBvcGVyYXRpb25zIG9uCi0JdGhlIGRhdGEgZGljdGlvbmFyeSB0YWJs ZXMuICovCi0JdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHVzZXJfdGhkKTsKLQl0cnhfc3Rh cnRfaWZfbm90X3N0YXJ0ZWQodHJ4KTsKKwkvKiBDaGVjayBpZiB0aGUgaW5kZXggbmFtZSBpcyBy ZXNlcnZlZC4gKi8KKwlpZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh1c2VyX3Ro ZCwga2V5X2luZm8sIG51bV9vZl9rZXlzKSkgeworCQlEQlVHX1JFVFVSTigtMSk7CisJfQogCiAJ aW5ub2RiX3RhYmxlID0gaW5kZXhlZF90YWJsZQogCQk9IGRpY3RfdGFibGVfZ2V0KHByZWJ1aWx0 LT50YWJsZS0+bmFtZSwgRkFMU0UpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoIWlubm9kYl90YWJs ZSkpIHsKLQkJZXJyb3IgPSBIQV9FUlJfTk9fU1VDSF9UQUJMRTsKLQkJZ290byBlcnJfZXhpdDsK KwkJREJVR19SRVRVUk4oSEFfRVJSX05PX1NVQ0hfVEFCTEUpOwogCX0KIAotCS8qIENoZWNrIGlm IHRoZSBpbmRleCBuYW1lIGlzIHJlc2VydmVkLiAqLwotCWlmIChpbm5vYmFzZV9pbmRleF9uYW1l X2lzX3Jlc2VydmVkKHRyeCwga2V5X2luZm8sIG51bV9vZl9rZXlzKSkgewotCQllcnJvciA9IC0x OwotCX0gZWxzZSB7Ci0JCS8qIENoZWNrIHRoYXQgaW5kZXgga2V5cyBhcmUgc2Vuc2libGUgKi8K LQkJZXJyb3IgPSBpbm5vYmFzZV9jaGVja19pbmRleF9rZXlzKGtleV9pbmZvLCBudW1fb2Zfa2V5 cywKLQkJCQkJCSAgaW5ub2RiX3RhYmxlKTsKLQl9CisJLyogQ2hlY2sgdGhhdCBpbmRleCBrZXlz IGFyZSBzZW5zaWJsZSAqLworCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfaW5kZXhfa2V5cyhrZXlf aW5mbywgbnVtX29mX2tleXMsIGlubm9kYl90YWJsZSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShl cnJvcikpIHsKLWVycl9leGl0OgotCQltZW1faGVhcF9mcmVlKGhlYXApOwotCQl0cnhfZ2VuZXJh bF9yb2xsYmFja19mb3JfbXlzcWwodHJ4LCBOVUxMKTsKLQkJdHJ4X2ZyZWVfZm9yX215c3FsKHRy eCk7Ci0JCXRyeF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOwogCQlEQlVHX1JFVFVS TihlcnJvcik7CiAJfQogCisJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDI0KTsKKwl0cnhfc3Rh cnRfaWZfbm90X3N0YXJ0ZWQocHJlYnVpbHQtPnRyeCk7CisKKwkvKiBDcmVhdGUgYSBiYWNrZ3Jv dW5kIHRyYW5zYWN0aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgorCXRoZSBkYXRhIGRpY3Rpb25h cnkgdGFibGVzLiAqLworCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7CisJ dHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkKHRyeCk7CisKIAkvKiBDcmVhdGUgdGFibGUgY29udGFp bmluZyBhbGwgaW5kZXhlcyB0byBiZSBidWlsdCBpbiB0aGlzCiAJYWx0ZXIgdGFibGUgYWRkIGlu ZGV4IHNvIHRoYXQgdGhleSBhcmUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIKIAlpbiB0aGUgdGFibGUu ICovCkBAIC03NjIsOCArNzU1LDEyIEBAIGVycl9leGl0OgogCiAJCQl1dF9kKGRpY3RfdGFibGVf Y2hlY2tfZm9yX2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwKIAkJCQkJCQkgICAgICBGQUxTRSkp OworCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKKwkJCXRyeF9nZW5lcmFsX3JvbGxiYWNrX2Zvcl9t eXNxbCh0cngsIE5VTEwpOwogCQkJcm93X215c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4 KTsKLQkJCWdvdG8gZXJyX2V4aXQ7CisJCQl0cnhfZnJlZV9mb3JfbXlzcWwodHJ4KTsKKwkJCXRy eF9jb21taXRfZm9yX215c3FsKHByZWJ1aWx0LT50cngpOworCQkJREJVR19SRVRVUk4oZXJyb3Ip OwogCQl9CiAKIAkJdHJ4LT50YWJsZV9pZCA9IGluZGV4ZWRfdGFibGUtPmlkOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTEx NDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtNDQsNiArNDQsOSBAQCBleHRlcm4gc2Vzc190Kgl0 cnhfZHVtbXlfc2VzczsKIC8qKiBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIGN1cnJlbnRseSBhbGxv Y2F0ZWQgZm9yIE15U1FMOiBwcm90ZWN0ZWQgYnkKIHRoZSBrZXJuZWwgbXV0ZXggKi8KIGV4dGVy biB1bGludAl0cnhfbl9teXNxbF90cmFuc2FjdGlvbnM7CisvKiogTnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBjdXJyZW50bHkgaW4gdGhlIFhBIFBSRVBBUkVEIHN0YXRlOiBwcm90ZWN0ZWQgYnkKK3Ro ZSBrZXJuZWwgbXV0ZXggKi8KK2V4dGVybiB1bGludAl0cnhfbl9wcmVwYXJlZDsKIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgogUmVsZWFzZXMgdGhlIHNlYXJjaCBsYXRjaCBpZiB0cnggaGFzIHJlc2VydmVk IGl0LiAqLwpAQCAtMTA4LDYgKzExMSwxNCBAQCB0cnhfZnJlZSgKIC8qPT09PT0qLwogCXRyeF90 Kgl0cngpOwkvKiE8IGluLCBvd246IHRyeCBvYmplY3QgKi8KIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0F0 IHNodXRkb3duLCBmcmVlcyBhIHRyYW5zYWN0aW9uIG9iamVjdCB0aGF0IGlzIGluIHRoZSBQUkVQ QVJFRCBzdGF0ZS4gKi8KK1VOSVZfSU5URVJOCit2b2lkCit0cnhfZnJlZV9wcmVwYXJlZCgKKy8q PT09PT09PT09PT09PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4sIG93bjogdHJ4IG9iamVjdCAq LworCVVOSVZfQ09MRCBfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBGcmVlcyBhIHRyYW5zYWN0aW9uIG9iamVjdCBmb3IgTXlTUUwuICovCiBVTklWX0lOVEVSTgog dm9pZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdW5k by5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHVuZG8uaAlyZXZpZDp2YXNp bC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB1bmRvLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtMjk2LDYgKzI5Niwx NSBAQCB2b2lkCiB0cnhfdW5kb19pbnNlcnRfY2xlYW51cCgKIC8qPT09PT09PT09PT09PT09PT09 PT0qLwogCXRyeF90Kgl0cngpOwkvKiE8IGluOiB0cmFuc2FjdGlvbiBoYW5kbGUgKi8KKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgorQXQgc2h1dGRvd24sIGZyZWVzIHRoZSB1bmRvIGxvZ3Mgb2YgYSBQUkVQ QVJFRCB0cmFuc2FjdGlvbi4gKi8KK1VOSVZfSU5URVJOCit2b2lkCit0cnhfdW5kb19mcmVlX3By ZXBhcmVkKAorLyo9PT09PT09PT09PT09PT09PT09Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluL291 dDogUFJFUEFSRUQgdHJhbnNhY3Rpb24gKi8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUGFyc2VzIHRo ZSByZWRvIGxvZyBlbnRyeSBvZiBhbiB1bmRvIGxvZyBwYWdlIGluaXRpYWxpemF0aW9uLgoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20t MjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydworKysgYi9zdG9yYWdlL2lubm9iYXNlL2xv Zy9sb2cwbG9nLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExNDAzMzIt NzdpMGZ6eTc3MjY2b3Z0bApAQCAtMzEwOSwxMiArMzEwOSwxMyBAQCBsb29wOgogCQlnb3RvIGxv b3A7CiAJfQogCi0JLyogQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbG9uZ2VyIHRyYW5zYWN0aW9u cy4gV2UgbmVlZCB0aGlzIHdhaXQgZXZlbgotCWZvciB0aGUgJ3ZlcnkgZmFzdCcgc2h1dGRvd24s IGJlY2F1c2UgdGhlIElubm9EQiBsYXllciBtYXkgaGF2ZQotCWNvbW1pdHRlZCBvciBwcmVwYXJl ZCB0cmFuc2FjdGlvbnMgYW5kIHdlIGRvbid0IHdhbnQgdG8gbG9zZSB0aGVtLiAqLworCS8qIENo ZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGxvbmdlciB0cmFuc2FjdGlvbnMsIGV4Y2VwdCBmb3IKKwlQ UkVQQVJFRCBvbmVzLiBXZSBuZWVkIHRoaXMgd2FpdCBldmVuIGZvciB0aGUgJ3ZlcnkgZmFzdCcK KwlzaHV0ZG93biwgYmVjYXVzZSB0aGUgSW5ub0RCIGxheWVyIG1heSBoYXZlIGNvbW1pdHRlZCBv cgorCXByZXBhcmVkIHRyYW5zYWN0aW9ucyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBsb3NlIHRoZW0u ICovCiAKIAlzZXJ2ZXJfYnVzeSA9IHRyeF9uX215c3FsX3RyYW5zYWN0aW9ucyA+IDAKLQkJfHwg VVRfTElTVF9HRVRfTEVOKHRyeF9zeXMtPnRyeF9saXN0KSA+IDA7CisJCXx8IFVUX0xJU1RfR0VU X0xFTih0cnhfc3lzLT50cnhfbGlzdCkgPiB0cnhfbl9wcmVwYXJlZDsKIAltdXRleF9leGl0KCZr ZXJuZWxfbXV0ZXgpOwogCiAJaWYgKHNlcnZlcl9idXN5IHx8IHNydl9pc19hbnlfYmFja2dyb3Vu ZF90aHJlYWRfYWN0aXZlKCkpIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3RyeC90cngwc3lzLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBzeXMuYwlyZXZp ZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHN5cy5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTM3LDYgKzM3LDcg QEAgQ3JlYXRlZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAidHJ4MHJzZWcuaCIK ICNpbmNsdWRlICJ0cngwdW5kby5oIgogI2luY2x1ZGUgInNydjBzcnYuaCIKKyNpbmNsdWRlICJz cnYwc3RhcnQuaCIKICNpbmNsdWRlICJ0cngwcHVyZ2UuaCIKICNpbmNsdWRlICJsb2cwbG9nLmgi CiAjaW5jbHVkZSAibG9nMHJlY3YuaCIKQEAgLTE2MTcsMTAgKzE2MTgsMTIgQEAgdm9pZAogdHJ4 X3N5c19jbG9zZSh2b2lkKQogLyo9PT09PT09PT09PT09PT0qLwogeworCXRyeF90KgkJdHJ4Owog CXRyeF9yc2VnX3QqCXJzZWc7CiAJcmVhZF92aWV3X3QqCXZpZXc7CiAKIAl1dF9hZCh0cnhfc3lz ICE9IE5VTEwpOworCXV0X2FkKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJ VF9USFJFQURTKTsKIAogCS8qIENoZWNrIHRoYXQgYWxsIHJlYWQgdmlld3MgYXJlIGNsb3NlZCBl eGNlcHQgcmVhZCB2aWV3IG93bmVkCiAJYnkgYSBwdXJnZS4gKi8KQEAgLTE2NTIsNiArMTY1NSwx MyBAQCB0cnhfc3lzX2Nsb3NlKHZvaWQpCiAJbWVtX2ZyZWUodHJ4X2RvdWJsZXdyaXRlKTsKIAl0 cnhfZG91Ymxld3JpdGUgPSBOVUxMOwogCisJLyogT25seSBwcmVwYXJlZCB0cmFuc2FjdGlvbnMg bWF5IGJlIGxlZnQgaW4gdGhlIHN5c3RlbS4gRnJlZSB0aGVtLiAqLworCXV0X2EoVVRfTElTVF9H RVRfTEVOKHRyeF9zeXMtPnRyeF9saXN0KSA9PSB0cnhfbl9wcmVwYXJlZCk7CisKKwl3aGlsZSAo KHRyeCA9IFVUX0xJU1RfR0VUX0ZJUlNUKHRyeF9zeXMtPnRyeF9saXN0KSkgIT0gTlVMTCkgewor CQl0cnhfZnJlZV9wcmVwYXJlZCh0cngpOworCX0KKwogCS8qIFRoZXJlIGNhbid0IGJlIGFueSBh Y3RpdmUgdHJhbnNhY3Rpb25zLiAqLwogCXJzZWcgPSBVVF9MSVNUX0dFVF9GSVJTVCh0cnhfc3lz LT5yc2VnX2xpc3QpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90cngv dHJ4MHRyeC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3CisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC01MCw2ICs1MCw5IEBAIFVO SVZfSU5URVJOIHNlc3NfdCoJCXRyeF9kdW1teV9zZXNzID0gTlUKIC8qKiBOdW1iZXIgb2YgdHJh bnNhY3Rpb25zIGN1cnJlbnRseSBhbGxvY2F0ZWQgZm9yIE15U1FMOiBwcm90ZWN0ZWQgYnkKIHRo ZSBrZXJuZWwgbXV0ZXggKi8KIFVOSVZfSU5URVJOIHVsaW50CXRyeF9uX215c3FsX3RyYW5zYWN0 aW9ucyA9IDA7CisvKiogTnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBjdXJyZW50bHkgaW4gdGhlIFhB IFBSRVBBUkVEIHN0YXRlOiBwcm90ZWN0ZWQgYnkKK3RoZSBrZXJuZWwgbXV0ZXggKi8KK1VOSVZf SU5URVJOIHVsaW50CXRyeF9uX3ByZXBhcmVkID0gMDsKIAogI2lmZGVmIFVOSVZfUEZTX01VVEVY CiAvKiBLZXkgdG8gcmVnaXN0ZXIgdGhlIG11dGV4IHdpdGggcGVyZm9ybWFuY2Ugc2NoZW1hICov CkBAIC0zMzgsNiArMzQxLDYwIEBAIHRyeF9mcmVlKAogfQogCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitB dCBzaHV0ZG93biwgZnJlZXMgYSB0cmFuc2FjdGlvbiBvYmplY3QgdGhhdCBpcyBpbiB0aGUgUFJF UEFSRUQgc3RhdGUuICovCitVTklWX0lOVEVSTgordm9pZAordHJ4X2ZyZWVfcHJlcGFyZWQoCisv Kj09PT09PT09PT09PT09Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluLCBvd246IHRyeCBvYmplY3Qg Ki8KK3sKKwl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRleCkpOworCXV0X2EodHJ4LT5jb25j X3N0YXRlID09IFRSWF9QUkVQQVJFRCk7CisJdXRfYSh0cngtPm1hZ2ljX24gPT0gVFJYX01BR0lD X04pOworCisJLyogUHJlcGFyZWQgdHJhbnNhY3Rpb25zIGFyZSBzb3J0IG9mIGFjdGl2ZTsgdGhl eSBhbGxvdworCVJPTExCQUNLIGFuZCBDT01NSVQgb3BlcmF0aW9ucy4gQmVjYXVzZSB0aGUgc3lz dGVtIGRvZXMgbm90CisJY29udGFpbiBhbnkgb3RoZXIgdHJhbnNhY3Rpb25zIHRoYW4gcHJlcGFy ZWQgdHJhbnNhY3Rpb25zIGF0CisJdGhlIHNodXRkb3duIHN0YWdlIGFuZCBiZWNhdXNlIGEgdHJh bnNhY3Rpb24gY2Fubm90IGJlY29tZQorCVBSRVBBUkVEIHdoaWxlIGhvbGRpbmcgbG9ja3MsIGl0 IGlzIHNhZmUgdG8gcmVsZWFzZSB0aGUgbG9ja3MKKwloZWxkIGJ5IFBSRVBBUkVEIHRyYW5zYWN0 aW9ucyBoZXJlIGF0IHNodXRkb3duLiovCisJbG9ja19yZWxlYXNlX29mZl9rZXJuZWwodHJ4KTsK KworCXRyeF91bmRvX2ZyZWVfcHJlcGFyZWQodHJ4KTsKKworCW11dGV4X2ZyZWUoJnRyeC0+dW5k b19tdXRleCk7CisKKwlpZiAodHJ4LT51bmRvX25vX2FycikgeworCQl0cnhfdW5kb19hcnJfZnJl ZSh0cngtPnVuZG9fbm9fYXJyKTsKKwl9CisKKwl1dF9hKFVUX0xJU1RfR0VUX0xFTih0cngtPnNp Z25hbHMpID09IDApOworCXV0X2EoVVRfTElTVF9HRVRfTEVOKHRyeC0+cmVwbHlfc2lnbmFscykg PT0gMCk7CisKKwl1dF9hKHRyeC0+d2FpdF9sb2NrID09IE5VTEwpOworCXV0X2EoVVRfTElTVF9H RVRfTEVOKHRyeC0+d2FpdF90aHJzKSA9PSAwKTsKKworCXV0X2EoIXRyeC0+aGFzX3NlYXJjaF9s YXRjaCk7CisKKwl1dF9hKHRyeC0+ZGljdF9vcGVyYXRpb25fbG9ja19tb2RlID09IDApOworCisJ aWYgKHRyeC0+bG9ja19oZWFwKSB7CisJCW1lbV9oZWFwX2ZyZWUodHJ4LT5sb2NrX2hlYXApOwor CX0KKworCWlmICh0cngtPmdsb2JhbF9yZWFkX3ZpZXdfaGVhcCkgeworCQltZW1faGVhcF9mcmVl KHRyeC0+Z2xvYmFsX3JlYWRfdmlld19oZWFwKTsKKwl9CisKKwl1dF9hKGliX3ZlY3Rvcl9pc19l bXB0eSh0cngtPmF1dG9pbmNfbG9ja3MpKTsKKwlpYl92ZWN0b3JfZnJlZSh0cngtPmF1dG9pbmNf bG9ja3MpOworCisJVVRfTElTVF9SRU1PVkUodHJ4X2xpc3QsIHRyeF9zeXMtPnRyeF9saXN0LCB0 cngpOworCisJbWVtX2ZyZWUodHJ4KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRnJlZXMgYSB0 cmFuc2FjdGlvbiBvYmplY3QgZm9yIE15U1FMLiAqLwogVU5JVl9JTlRFUk4KIHZvaWQKQEAgLTQ2 Nyw2ICs1MjQsNyBAQCB0cnhfbGlzdHNfaW5pdF9hdF9kYl9zdGFydCh2b2lkKQogCQkJCQlpZiAo c3J2X2ZvcmNlX3JlY292ZXJ5ID09IDApIHsKIAogCQkJCQkJdHJ4LT5jb25jX3N0YXRlID0gVFJY X1BSRVBBUkVEOworCQkJCQkJdHJ4X25fcHJlcGFyZWQrKzsKIAkJCQkJfSBlbHNlIHsKIAkJCQkJ CWZwcmludGYoc3RkZXJyLAogCQkJCQkJCSJJbm5vREI6IFNpbmNlIgpAQCAtNTQzLDYgKzYwMSw3 IEBAIHRyeF9saXN0c19pbml0X2F0X2RiX3N0YXJ0KHZvaWQpCiAKIAkJCQkJCQl0cngtPmNvbmNf c3RhdGUKIAkJCQkJCQkJPSBUUlhfUFJFUEFSRUQ7CisJCQkJCQkJdHJ4X25fcHJlcGFyZWQrKzsK IAkJCQkJCX0gZWxzZSB7CiAJCQkJCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCQkJCSJJbm5vREI6 IFNpbmNlIgpAQCAtODc3LDYgKzkzNiwxMSBAQCB0cnhfY29tbWl0X29mZl9rZXJuZWwoCiAJdXRf YWQodHJ4LT5jb25jX3N0YXRlID09IFRSWF9BQ1RJVkUgfHwgdHJ4LT5jb25jX3N0YXRlID09IFRS WF9QUkVQQVJFRCk7CiAJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKIAorCWlmIChV TklWX1VOTElLRUxZKHRyeC0+Y29uY19zdGF0ZSA9PSBUUlhfUFJFUEFSRUQpKSB7CisJCXV0X2Eo dHJ4X25fcHJlcGFyZWQgPiAwKTsKKwkJdHJ4X25fcHJlcGFyZWQtLTsKKwl9CisKIAkvKiBUaGUg Zm9sbG93aW5nIGFzc2lnbm1lbnQgbWFrZXMgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHRlZCBpbiBt ZW1vcnkKIAlhbmQgbWFrZXMgaXRzIGNoYW5nZXMgdG8gZGF0YSB2aXNpYmxlIHRvIG90aGVyIHRy YW5zYWN0aW9ucy4KIAlOT1RFIHRoYXQgdGhlcmUgaXMgYSBzbWFsbCBkaXNjcmVwYW5jeSBmcm9t IHRoZSBzdHJpY3QgZm9ybWFsCkBAIC0xOTAxLDYgKzE5NjUsNyBAQCB0cnhfcHJlcGFyZV9vZmZf a2VybmVsKAogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAJ dHJ4LT5jb25jX3N0YXRlID0gVFJYX1BSRVBBUkVEOworCXRyeF9uX3ByZXBhcmVkKys7CiAJLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIAlpZiAobHNuKSB7CkBA IC0yMDc3LDcgKzIxNDIsOCBAQCB0cnhfZ2V0X3RyeF9ieV94aWQoCiAJCW9mIGd0cmlkX2xlbmd0 aCticXVhbF9sZW5ndGggYnl0ZXMgc2hvdWxkIGJlCiAJCXRoZSBzYW1lICovCiAKLQkJaWYgKHRy eC0+Y29uY19zdGF0ZSA9PSBUUlhfUFJFUEFSRUQKKwkJaWYgKHRyeC0+aXNfcmVjb3ZlcmVkCisJ CSAgICAmJiB0cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVECiAJCSAgICAmJiB4aWQtPmd0 cmlkX2xlbmd0aCA9PSB0cngtPnhpZC5ndHJpZF9sZW5ndGgKIAkJICAgICYmIHhpZC0+YnF1YWxf bGVuZ3RoID09IHRyeC0+eGlkLmJxdWFsX2xlbmd0aAogCQkgICAgJiYgbWVtY21wKHhpZC0+ZGF0 YSwgdHJ4LT54aWQuZGF0YSwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Ry eC90cngwdW5kby5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdW5kby5jCXJldmlk OnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydwor KysgYi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdW5kby5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTM2LDYgKzM2LDcg QEAgQ3JlYXRlZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAidHJ4MHJzZWcuaCIK ICNpbmNsdWRlICJ0cngwdHJ4LmgiCiAjaW5jbHVkZSAic3J2MHNydi5oIgorI2luY2x1ZGUgInNy djBzdGFydC5oIgogI2luY2x1ZGUgInRyeDByZWMuaCIKICNpbmNsdWRlICJ0cngwcHVyZ2UuaCIK IApAQCAtMTk3NSw0ICsxOTc2LDMxIEBAIHRyeF91bmRvX2luc2VydF9jbGVhbnVwKAogCiAJbXV0 ZXhfZXhpdCgmKHJzZWctPm11dGV4KSk7CiB9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0F0IHNodXRk b3duLCBmcmVlcyB0aGUgdW5kbyBsb2dzIG9mIGEgUFJFUEFSRUQgdHJhbnNhY3Rpb24uICovCitV TklWX0lOVEVSTgordm9pZAordHJ4X3VuZG9fZnJlZV9wcmVwYXJlZCgKKy8qPT09PT09PT09PT09 PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbi9vdXQ6IFBSRVBBUkVEIHRyYW5zYWN0aW9u ICovCit7CisJbXV0ZXhfZW50ZXIoJnRyeC0+cnNlZy0+bXV0ZXgpOworCisJdXRfYWQoc3J2X3No dXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpOworCisJaWYgKHRyeC0+ dXBkYXRlX3VuZG8pIHsKKwkJdXRfYSh0cngtPnVwZGF0ZV91bmRvLT5zdGF0ZSA9PSBUUlhfVU5E T19QUkVQQVJFRCk7CisJCVVUX0xJU1RfUkVNT1ZFKHVuZG9fbGlzdCwgdHJ4LT5yc2VnLT51cGRh dGVfdW5kb19saXN0LAorCQkJICAgICAgIHRyeC0+dXBkYXRlX3VuZG8pOworCQl0cnhfdW5kb19t ZW1fZnJlZSh0cngtPnVwZGF0ZV91bmRvKTsKKwl9CisJaWYgKHRyeC0+aW5zZXJ0X3VuZG8pIHsK KwkJdXRfYSh0cngtPmluc2VydF91bmRvLT5zdGF0ZSA9PSBUUlhfVU5ET19QUkVQQVJFRCk7CisJ CVVUX0xJU1RfUkVNT1ZFKHVuZG9fbGlzdCwgdHJ4LT5yc2VnLT5pbnNlcnRfdW5kb19saXN0LAor CQkJICAgICAgIHRyeC0+aW5zZXJ0X3VuZG8pOworCQl0cnhfdW5kb19tZW1fZnJlZSh0cngtPmlu c2VydF91bmRvKTsKKwl9CisJbXV0ZXhfZXhpdCgmdHJ4LT5yc2VnLT5tdXRleCk7Cit9CiAjZW5k aWYgLyogIVVOSVZfSE9UQkFDS1VQICovCgo= --===============1928857920== 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: 06db0cde04dc7256176d75f31d6fa22cbb8171e2 # timestamp: 2011-04-11 18:01:36 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # y1leh18i58rf4b2w # # Begin bundle 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 --===============1928857920==--