From: marko.makela Date: April 11 2011 3:01pm Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3723 to 3725) Bug#11760042 List-Archive: http://lists.mysql.com/commits/135206 X-Bug: 11760042 Message-Id: <201104111502.p3BF2OeP012797@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1891718929==" --===============1891718929== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM3MjUgTWFya28gTcOka2Vsw6QJMjAxMS0wNC0xMQogICAgICBCdWcgIzExNzYwMDQyIC0gNTI0 MDk6IEFzc2VydGlvbiBmYWlsdXJlOiBsb25nIHNlbWFwaG9yZSB3YWl0CiAgICAgIAogICAgICBJ biBoYV9pbm5vYmFzZTo6Y3JlYXRlKCksIHdlIGNoZWNrIHNvbWUgdGhpbmdzIHdoaWxlIGhvbGRp bmcgYW4KICAgICAgZXhjbHVzaXZlIGxvY2sgb24gdGhlIGRhdGEgZGljdGlvbmFyeS4gRGVmZXIg dGhlIGxvY2tpbmcgYW5kIHRoZQogICAgICBjcmVhdGlvbiBvZiB0cmFuc2FjdGlvbnMgdW50aWwg YWZ0ZXIgdGhlIGNoZWNrcyBoYXZlIHBhc3NlZC4gVGhlCiAgICAgIFRIRFZBUiBjb3VsZCBoYW5n IGR1ZSB0byBhIG11dGV4IHdhaXQgKHNlZSBCdWcgIzExNzUwNTY5IC0gNDExNjM6CiAgICAgIGRl YWRsb2NrIGluIG15c3FsZDogTE9DS19nbG9iYWxfc3lzdGVtX3ZhcmlhYmxlcyBhbmQgTE9DS19v cGVuKSwgYW5kCiAgICAgIHdlIHdhbnQgdG8gYXZvaWQgd2FpdGluZyB3aGlsZSBob2xkaW5nIElu bm9EQiBtdXRleGVzLgogICAgICAKICAgICAgaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZl ZCgpOiBSZXBsYWNlIHRoZSBwYXJhbWV0ZXIgdHJ4X3Qgd2l0aAogICAgICBUSEQsIHNvIHRoYXQg dGhlIHRlc3QgY2FuIGJlIHBlcmZvcm1lZCBiZWZvcmUgc3RhcnRpbmcgYW4gSW5ub0RCCiAgICAg IHRyYW5zYWN0aW9uLiBXZSBvbmx5IG5lZWRlZCB0cngtPm15c3FsX3RoZC4KICAgICAgCiAgICAg IGhhX2lubm9iYXNlOjpjcmVhdGUoKTogQ3JlYXRlIHRyYW5zYWN0aW9uIGFuZCBsb2NrIHRoZSBk YXRhIGRpY3Rpb25hcnkKICAgICAgb25seSBhZnRlciBwYXNzaW5nIHRoZSBiYXNpYyB0ZXN0cy4K ICAgICAgCiAgICAgIGNyZWF0ZV90YWJsZV9kZWYoKTogTW92ZSB0aGUgSVNfTUFHSUNfVEFCTEVf QU5EX1VTRVJfREVOSUVEX0FDQ0VTUwogICAgICBjaGVjayB0byBoYV9pbm5vYmFzZTo6Y3JlYXRl KCkuIEFzc2lnbiB0byBzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcwogICAgICB3aGlsZSBob2xk aW5nIGRpY3Rfc3lzLT5tdXRleC4KICAgICAgCiAgICAgIGhhX2lubm9iYXNlOjpkZWxldGVfdGFi bGUoKSwgaGFfaW5ub2Jhc2U6OnJlbmFtZV90YWJsZSgpLAogICAgICBpbm5vYmFzZV9yZW5hbWVf dGFibGUoKTogQXNzaWduIHNydl9sb3dlcl9jYXNlX3RhYmxlX25hbWVzIGFzIGxhdGUgYXMKICAg ICAgcG9zc2libGUuIEhlcmUsIHRoZSB2YXJpYWJsZSBpcyBub3QgbmVjZXNzYXJpbHkgcHJvdGVj dGVkIGJ5CiAgICAgIGRpY3Rfc3lzLT5tdXRleC4KICAgICAgCiAgICAgIGhhX2lubm9iYXNlOjph ZGRfaW5kZXgoKTogSW52b2tlIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoKSBhbmQK ICAgICAgaW5ub2Jhc2VfY2hlY2tfaW5kZXhfa2V5cygpIGJlZm9yZSBhbGxvY2F0aW5nIGFueXRo aW5nLgogICAgICAKICAgICAgcmI6NjE4IGFwcHJvdmVkIGJ5IEppbW15IFlhbmcKCiAgICBtb2Rp ZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBz dG9yYWdlL2lubm9kYl9wbHVnaW4vQ2hhbmdlTG9nCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdp bi9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxl ci9oYV9pbm5vZGIuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYW5kbGVy MGFsdGVyLmNjCiAzNzI0IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDQtMDcKICAgICAgQnVnICMxMTc2 NjUxMyAtIDU5NjQxOiBQcmVwYXJlZCBYQSB0cmFuc2FjdGlvbiBpbiBzeXN0ZW0gYWZ0ZXIgaGFy ZCBjcmFzaAogICAgICBjYXVzZXMgZnV0dXJlIHNodXRkb3duIGhhbmcKICAgICAgCiAgICAgIElu bm9EQiB3b3VsZCBoYW5nIG9uIHNodXRkb3duIGlmIGFueSBYQSB0cmFuc2FjdGlvbnMgZXhpc3Qg aW4gdGhlCiAgICAgIHN5c3RlbSBpbiB0aGUgUFJFUEFSRUQgc3RhdGUuIFRoaXMgaGFzIGJlZW4g bWFza2VkIGJ5IHRoZSBmYWN0IHRoYXQKICAgICAgTXlTUUwgd291bGQgcm9sbCBiYWNrIGFueSBQ UkVQQVJFRCB0cmFuc2FjdGlvbiBvbiBzaHV0ZG93biwgaW4gdGhlCiAgICAgIHNwaXJpdCBvZiBC dWcgIzEyMTYxIFhhIHJlY292ZXJ5IGFuZCBjbGllbnQgZGlzY29ubmVjdGlvbi4KICAgICAgCiAg ICAgIFtteXNxbC10ZXN0LXJ1bl0gZG9fc2h1dGRvd25fc2VydmVyOiBJbnRlcnByZXQgLS1zaHV0 ZG93bl9zZXJ2ZXIgMCBhcwogICAgICBhIHJlcXVlc3QgdG8ga2lsbCB0aGUgc2VydmVyIGltbWVk aWF0ZWx5IHdpdGhvdXQgaW5pdGlhdGluZyBhCiAgICAgIHNodXRkb3duIHByb2NlZHVyZS4KICAg ICAgCiAgICAgIHhpZF9jYWNoZV9pbnNlcnQoKTogSW5pdGlhbGl6ZSBYSURfU1RBVEU6OnJtX2Vy cm9yIGluIG9yZGVyIHRvIGF2b2lkIGEKICAgICAgYm9ndXMgZXJyb3IgbWVzc2FnZSBvbiBYQSBS T0xMQkFDSyBvZiBhIHJlY292ZXJlZCBQUkVQQVJFRCB0cmFuc2FjdGlvbi4KICAgICAgCiAgICAg IGlubm9iYXNlX2NvbW1pdF9ieV94aWQoKSwgaW5ub2Jhc2Vfcm9sbGJhY2tfYnlfeGlkKCk6IEZy ZWUgdGhlIElubm9EQgogICAgICB0cmFuc2FjdGlvbiBvYmplY3QgYWZ0ZXIgcm9sbGluZyBiYWNr IGEgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCiAgICAgIAogICAgICB0cnhfZ2V0X3RyeF9ieV94aWQo KTogT25seSBjb25zaWRlciB0cmFuc2FjdGlvbnMgd2hvc2UKICAgICAgdHJ4LT5pc19wcmVwYXJl ZCBmbGFnIGlzIHNldC4gVGhlIE15U1FMIGxheWVyIHNlZW1zIHRvIHByZXZlbnQKICAgICAgYXR0 ZW1wdHMgdG8gcm9sbCBiYWNrIGNvbm5lY3RlZCB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgaW4gdGhl IFBSRVBBUkVECiAgICAgIHN0YXRlIGZyb20gYW5vdGhlciBjb25uZWN0aW9uLCBidXQgaXQgaXMg YmV0dGVyIHRvIHBsYXkgaXQgc2FmZS4gVGhlCiAgICAgIGlzX3ByZXBhcmVkIGZsYWcgd2FzIGlu dHJvZHVjZWQgaW4gdGhlIElubm9EQiBQbHVnaW4uCiAgICAgIAogICAgICB0cnhfbl9wcmVwYXJl ZDogQSBuZXcgY291bnRlciwgY291bnRpbmcgdGhlIG51bWJlciBvZiBJbm5vREIKICAgICAgdHJh bnNhY3Rpb25zIGluIHRoZSBQUkVQQVJFRCBzdGF0ZS4KICAgICAgCiAgICAgIGxvZ3NfZW1wdHlf YW5kX21hcmtfZmlsZXNfYXRfc2h1dGRvd24oKTogT24gc2h1dGRvd24sIGFsbG93CiAgICAgIHRy eF9uX3ByZXBhcmVkIHRyYW5zYWN0aW9ucyB0byBleGlzdCBpbiB0aGUgc3lzdGVtLgogICAgICAK ICAgICAgdHJ4X3VuZG9fZnJlZV9wcmVwYXJlZCgpLCB0cnhfZnJlZV9wcmVwYXJlZCgpOiBOZXcg ZnVuY3Rpb25zLCB0byBmcmVlCiAgICAgIHRoZSBtZW1vcnkgb2JqZWN0cyBvZiBQUkVQQVJFRCB0 cmFuc2FjdGlvbnMgb24gc2h1dGRvd24uIFRoaXMgaXMgbm90CiAgICAgIG5lZWRlZCBpbiB0aGUg YnVpbHQtaW4gSW5ub0RCLCBiZWNhdXNlIGl0IHdvdWxkIGNvbGxlY3QgYWxsIGFsbG9jYXRlZAog ICAgICBtZW1vcnkgb24gc2h1dGRvd24uIFRoZSBJbm5vREIgUGx1Z2luIG5lZWRzIHRoaXMgYmVj YXVzZSBvZgogICAgICBpbm5vZGJfdXNlX3N5c19tYWxsb2MuCiAgICAgIAogICAgICB0cnhfc3lz X2Nsb3NlKCk6IEludm9rZSB0cnhfZnJlZV9wcmVwYXJlZCgpIG9uIGFsbCByZW1haW5pbmcKICAg ICAgdHJhbnNhY3Rpb25zLgoKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9k Yi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIv dC9pbm5vZGJfYnVnNTk2NDEudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVn aW4vci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri X3BsdWdpbi90L2lubm9kYl9idWc1OTY0MS50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgY2xpZW50 L215c3FsdGVzdC5jYwogICAgICBzcWwvc3FsX2NsYXNzLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Ry eDB0cnguaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFu Z2VMb2cKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3RyeDB0cnguaAogICAgICBzdG9yYWdl L2lubm9kYl9wbHVnaW4vaW5jbHVkZS90cngwdW5kby5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9sb2cvbG9nMGxvZy5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi90cngvdHJ4MHN5 cy5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi90cngvdHJ4MHRyeC5jCiAgICAgIHN0b3Jh Z2UvaW5ub2RiX3BsdWdpbi90cngvdHJ4MHVuZG8uYwogMzcyMyBWYXNpbCBEaW1vdgkyMDExLTA0 LTA2CiAgICAgIExvYWQgdGhlIGlubm9kYiBwbHVnaW4gaW5zdGVhZCBvZiBidWlsdGluIGluIGlu bm9kYl9wbHVnaW4uaW5ub2RiX2J1ZzU5NDEwCiAgICAgIAogICAgICBTcG90dGVkIGJ5OglNYXJr bwoKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9p bm5vZGJfYnVnNTk0MTAudGVzdAo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3FsdGVzdC5j YycKLS0tIGEvY2xpZW50L215c3FsdGVzdC5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQKKysrIGIvY2xpZW50L215c3FsdGVzdC5j YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTEzNDAyOC0zMW95Nmw0NDd6 bDA5MTloCkBAIC00NDYxLDEzICs0NDYxLDE0IEBAIHN0YXRpYyBpbnQgbXlfa2lsbChpbnQgcGlk LCBpbnQgc2lnKQogICBjb21tYW5kICBjYWxsZWQgY29tbWFuZAogCiAgIERFU0NSSVBUSU9OCi0g IHNodXRkb3duIFs8dGltZW91dD5dCisgIHNodXRkb3duX3NlcnZlciBbPHRpbWVvdXQ+XQogCiAq LwogCiB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3RfY29tbWFuZCAqY29tbWFuZCkK IHsKLSAgaW50IHRpbWVvdXQ9NjAsIHBpZDsKKyAgbG9uZyB0aW1lb3V0PTYwOworICBpbnQgcGlk OwogICBEWU5BTUlDX1NUUklORyBkc19waWRmaWxlX25hbWU7CiAgIE1ZU1FMKiBteXNxbCA9ICZj dXJfY29uLT5teXNxbDsKICAgc3RhdGljIERZTkFNSUNfU1RSSU5HIGRzX3RpbWVvdXQ7CkBAIC00 NDgyLDggKzQ0ODMsOSBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3RfY29tbWFu CiAKICAgaWYgKGRzX3RpbWVvdXQubGVuZ3RoKQogICB7Ci0gICAgdGltZW91dD0gYXRvaShkc190 aW1lb3V0LnN0cik7Ci0gICAgaWYgKHRpbWVvdXQgPT0gMCkKKyAgICBjaGFyKiBlbmRwdHI7Cisg ICAgdGltZW91dD0gc3RydG9sKGRzX3RpbWVvdXQuc3RyLCAmZW5kcHRyLCAxMCk7CisgICAgaWYg KCplbmRwdHIgIT0gJ1wwJykKICAgICAgIGRpZSgiSWxsZWdhbCBhcmd1bWVudCBmb3IgdGltZW91 dDogJyVzJyIsIGRzX3RpbWVvdXQuc3RyKTsKICAgfQogICBkeW5zdHJfZnJlZSgmZHNfdGltZW91 dCk7CkBAIC00NTI1LDcgKzQ1MjcsNyBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qg c3RfY29tbWFuCiAgICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJQcm9jZXNzICVkIGRvZXMgbm90 IGV4aXN0IGFueW1vcmUiLCBwaWQpKTsKICAgICAgIERCVUdfVk9JRF9SRVRVUk47CiAgICAgfQot ICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlNsZWVwaW5nLCB0aW1lb3V0OiAlZCIsIHRpbWVvdXQp KTsKKyAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJTbGVlcGluZywgdGltZW91dDogJWxkIiwgdGlt ZW91dCkpOwogICAgIG15X3NsZWVwKDEwMDAwMDBMKTsKICAgfQogCgo9PT0gYWRkZWQgZmlsZSAn bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0JwotLS0gYS9t eXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQJMTk3MC0wMS0w MSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9i dWc1OTY0MS5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExMzQw MjgtMzFveTZsNDQ3emwwOTE5aApAQCAtMCwwICsxLDU3IEBACitDUkVBVEUgVEFCTEUgdChhIElO VCBQUklNQVJZIEtFWSwgYiBJTlQpRU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT KDIsMiksKDQsNCksKDgsOCksKDE2LDE2KSwoMzIsMzIpOworQ09NTUlUOworWEEgU1RBUlQgJzEy Myc7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygxLDEpOworWEEgRU5EICcxMjMnOworWEEgUFJFUEFS RSAnMTIzJzsKK1hBIFNUQVJUICc0NTYnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMyw0NyksKDUs NjcpOworVVBEQVRFIHQgU0VUIGI9MipiIFdIRVJFIGEgQkVUV0VFTiA1IEFORCA4OworWEEgRU5E ICc0NTYnOworWEEgUFJFUEFSRSAnNDU2JzsKK1hBIFNUQVJUICc3ODknOworVVBEQVRFIHQgU0VU IGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQQVJFICc3ODknOworY2Fs bCBtdHIuYWRkX3N1cHByZXNzaW9uKCJGb3VuZCAzIHByZXBhcmVkIFhBIHRyYW5zYWN0aW9ucyIp OworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVOQ09NTUlUVEVEOworU0VM RUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0NworNAk0Cis1CTEzNAorOAkxNgorMTYJ MTYKKzMyCTEyOAorQ09NTUlUOworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFE IFVOQ09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0NworNAk0 Cis1CTEzNAorOAkxNgorMTYJMTYKKzMyCTEyOAorQ09NTUlUOworWEEgUkVDT1ZFUjsKK2Zvcm1h dElECWd0cmlkX2xlbmd0aAlicXVhbF9sZW5ndGgJZGF0YQorMQkzCTAJNzg5CisxCTMJMAk0NTYK KzEJMwkwCTEyMworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFDSyAnNDU2JzsKK1hBIENP TU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKK2EJYgorMgkyCis0CTQKKzgJOAorMTYJMTYK KzMyCTEyOAorRFJPUCBUQUJMRSB0OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5u b2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysg Yi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTY0MS50ZXN0CXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAg LTAsMCArMSw2NiBAQAorIyBCdWcgIzU5NjQxIFByZXBhcmVkIFhBIHRyYW5zYWN0aW9uIGNhdXNl cyBzaHV0ZG93biBoYW5nIGFmdGVyIGEgY3Jhc2gKKworLS0gc291cmNlIGluY2x1ZGUvbm90X2Vt YmVkZGVkLmluYworLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCisKK0NSRUFURSBU QUJMRSB0KGEgSU5UIFBSSU1BUlkgS0VZLCBiIElOVClFTkdJTkU9SW5ub0RCOworSU5TRVJUIElO VE8gdCBWQUxVRVMoMiwyKSwoNCw0KSwoOCw4KSwoMTYsMTYpLCgzMiwzMik7CitDT01NSVQ7CitY QSBTVEFSVCAnMTIzJzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDEsMSk7CitYQSBFTkQgJzEyMyc7 CitYQSBQUkVQQVJFICcxMjMnOworCitDT05ORUNUIChjb24xLGxvY2FsaG9zdCxyb290LCwpOwor Q09OTkVDVElPTiBjb24xOworCitYQSBTVEFSVCAnNDU2JzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT KDMsNDcpLCg1LDY3KTsKK1VQREFURSB0IFNFVCBiPTIqYiBXSEVSRSBhIEJFVFdFRU4gNSBBTkQg ODsKK1hBIEVORCAnNDU2JzsKK1hBIFBSRVBBUkUgJzQ1Nic7CisKK0NPTk5FQ1QgKGNvbjIsbG9j YWxob3N0LHJvb3QsLCk7CitDT05ORUNUSU9OIGNvbjI7CisKK1hBIFNUQVJUICc3ODknOworVVBE QVRFIHQgU0VUIGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQQVJFICc3 ODknOworCisjIFRoZSBzZXJ2ZXIgd291bGQgaXNzdWUgdGhpcyB3YXJuaW5nIG9uIHJlc3RhcnQu CitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJhbnNhY3Rp b25zIik7CisKKyMgS2lsbCB0aGUgc2VydmVyIHdpdGhvdXQgc2VuZGluZyBhIHNodXRkb3duIGNv bW1hbmQKKy0tIGV4ZWMgZWNobyAid2FpdCIgPiAkTVlTUUxURVNUX1ZBUkRJUi90bXAvbXlzcWxk LjEuZXhwZWN0CistLSBzaHV0ZG93bl9zZXJ2ZXIgMAorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91 bnRpbF9kaXNjb25uZWN0ZWQuaW5jCisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0gZXhlYyBl Y2hvICJyZXN0YXJ0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0t IGVuYWJsZV9yZWNvbm5lY3QKKy0tIHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVk X2FnYWluLmluYworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVOQ09NTUlU VEVEOworU0VMRUNUICogRlJPTSB0OworQ09NTUlUOworCisjIFNodXQgZG93biB0aGUgc2VydmVy LiBUaGlzIHdvdWxkIGhhbmcgYmVjYXVzZSBvZiB0aGUgYnVnLgorLS0gZXhlYyBlY2hvICJ3YWl0 IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIHNodXRkb3duX3Nl cnZlcgorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5jCisKKyMg UmVzdGFydCB0aGUgc2VydmVyLgorLS0gZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNRTFRFU1Rf VkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0tIHNvdXJj ZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYworCitTRVQgVFJBTlNBQ1RJ T04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CitD T01NSVQ7CitYQSBSRUNPVkVSOworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFDSyAnNDU2 JzsKK1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKKworRFJPUCBUQUJMRSB0OwoK PT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9yL2lubm9kYl9i dWc1OTY0MS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9yL2lu bm9kYl9idWc1OTY0MS5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNx bC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0CXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgK QEAgLTAsMCArMSw1NyBAQAorQ1JFQVRFIFRBQkxFIHQoYSBJTlQgUFJJTUFSWSBLRVksIGIgSU5U KUVOR0lORT1Jbm5vREI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygyLDIpLCg0LDQpLCg4LDgpLCgx NiwxNiksKDMyLDMyKTsKK0NPTU1JVDsKK1hBIFNUQVJUICcxMjMnOworSU5TRVJUIElOVE8gdCBW QUxVRVMoMSwxKTsKK1hBIEVORCAnMTIzJzsKK1hBIFBSRVBBUkUgJzEyMyc7CitYQSBTVEFSVCAn NDU2JzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDMsNDcpLCg1LDY3KTsKK1VQREFURSB0IFNFVCBi PTIqYiBXSEVSRSBhIEJFVFdFRU4gNSBBTkQgODsKK1hBIEVORCAnNDU2JzsKK1hBIFBSRVBBUkUg JzQ1Nic7CitYQSBTVEFSVCAnNzg5JzsKK1VQREFURSB0IFNFVCBiPTQqYSBXSEVSRSBhPTMyOwor WEEgRU5EICc3ODknOworWEEgUFJFUEFSRSAnNzg5JzsKK2NhbGwgbXRyLmFkZF9zdXBwcmVzc2lv bigiRm91bmQgMyBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbnMiKTsKK1NFVCBUUkFOU0FDVElPTiBJ U09MQVRJT04gTEVWRUwgUkVBRCBVTkNPTU1JVFRFRDsKK1NFTEVDVCAqIEZST00gdDsKK2EJYgor MQkxCisyCTIKKzMJNDcKKzQJNAorNQkxMzQKKzgJMTYKKzE2CTE2CiszMgkxMjgKK0NPTU1JVDsK K1NFVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVBRCBVTkNPTU1JVFRFRDsKK1NFTEVD VCAqIEZST00gdDsKK2EJYgorMQkxCisyCTIKKzMJNDcKKzQJNAorNQkxMzQKKzgJMTYKKzE2CTE2 CiszMgkxMjgKK0NPTU1JVDsKK1hBIFJFQ09WRVI7Citmb3JtYXRJRAlndHJpZF9sZW5ndGgJYnF1 YWxfbGVuZ3RoCWRhdGEKKzEJMwkwCTc4OQorMQkzCTAJNDU2CisxCTMJMAkxMjMKK1hBIFJPTExC QUNLICcxMjMnOworWEEgUk9MTEJBQ0sgJzQ1Nic7CitYQSBDT01NSVQgJzc4OSc7CitTRUxFQ1Qg KiBGUk9NIHQ7CithCWIKKzIJMgorNAk0Cis4CTgKKzE2CTE2CiszMgkxMjgKK0RST1AgVEFCTEUg dDsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5v ZGJfYnVnNTk2NDEudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3Qv aW5ub2RiX2J1ZzU5NjQxLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNx bC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGJfYnVnNTk2NDEudGVzdAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTEzNDAyOC0zMW95Nmw0NDd6bDA5MTloCkBA IC0wLDAgKzEsNzAgQEAKKyMgQnVnICM1OTY0MSBQcmVwYXJlZCBYQSB0cmFuc2FjdGlvbiBjYXVz ZXMgc2h1dGRvd24gaGFuZyBhZnRlciBhIGNyYXNoCisKKy0tIHNvdXJjZSBpbmNsdWRlL25vdF9l bWJlZGRlZC5pbmMKKy0tIHNvdXJjZSBpbmNsdWRlL2hhdmVfaW5ub2RiX3BsdWdpbi5pbmMKKwor bGV0ICRpbm5vZGJfZmlsZV9mb3JtYXRfY2hlY2tfb3JpZz1gc2VsZWN0IEBAaW5ub2RiX2ZpbGVf Zm9ybWF0X2NoZWNrYDsKKworQ1JFQVRFIFRBQkxFIHQoYSBJTlQgUFJJTUFSWSBLRVksIGIgSU5U KUVOR0lORT1Jbm5vREI7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygyLDIpLCg0LDQpLCg4LDgpLCgx NiwxNiksKDMyLDMyKTsKK0NPTU1JVDsKK1hBIFNUQVJUICcxMjMnOworSU5TRVJUIElOVE8gdCBW QUxVRVMoMSwxKTsKK1hBIEVORCAnMTIzJzsKK1hBIFBSRVBBUkUgJzEyMyc7CisKK0NPTk5FQ1Qg KGNvbjEsbG9jYWxob3N0LHJvb3QsLCk7CitDT05ORUNUSU9OIGNvbjE7CisKK1hBIFNUQVJUICc0 NTYnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMyw0NyksKDUsNjcpOworVVBEQVRFIHQgU0VUIGI9 MipiIFdIRVJFIGEgQkVUV0VFTiA1IEFORCA4OworWEEgRU5EICc0NTYnOworWEEgUFJFUEFSRSAn NDU2JzsKKworQ09OTkVDVCAoY29uMixsb2NhbGhvc3Qscm9vdCwsKTsKK0NPTk5FQ1RJT04gY29u MjsKKworWEEgU1RBUlQgJzc4OSc7CitVUERBVEUgdCBTRVQgYj00KmEgV0hFUkUgYT0zMjsKK1hB IEVORCAnNzg5JzsKK1hBIFBSRVBBUkUgJzc4OSc7CisKKyMgVGhlIHNlcnZlciB3b3VsZCBpc3N1 ZSB0aGlzIHdhcm5pbmcgb24gcmVzdGFydC4KK2NhbGwgbXRyLmFkZF9zdXBwcmVzc2lvbigiRm91 bmQgMyBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbnMiKTsKKworIyBLaWxsIHRoZSBzZXJ2ZXIgd2l0 aG91dCBzZW5kaW5nIGEgc2h1dGRvd24gY29tbWFuZAorLS0gZXhlYyBlY2hvICJ3YWl0IiA+ICRN WVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIHNodXRkb3duX3NlcnZlciAw CistLSBzb3VyY2UgaW5jbHVkZS93YWl0X3VudGlsX2Rpc2Nvbm5lY3RlZC5pbmMKKworIyBSZXN0 YXJ0IHRoZSBzZXJ2ZXIuCistLSBleGVjIGVjaG8gInJlc3RhcnQiID4gJE1ZU1FMVEVTVF9WQVJE SVIvdG1wL215c3FsZC4xLmV4cGVjdAorLS0gZW5hYmxlX3JlY29ubmVjdAorLS0gc291cmNlIGlu Y2x1ZGUvd2FpdF91bnRpbF9jb25uZWN0ZWRfYWdhaW4uaW5jCitTRVQgVFJBTlNBQ1RJT04gSVNP TEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CitDT01NSVQ7 CisKKyMgU2h1dCBkb3duIHRoZSBzZXJ2ZXIuIFRoaXMgd291bGQgaGFuZyBiZWNhdXNlIG9mIHRo ZSBidWcuCistLSBleGVjIGVjaG8gIndhaXQiID4gJE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3Fs ZC4xLmV4cGVjdAorLS0gc2h1dGRvd25fc2VydmVyCistLSBzb3VyY2UgaW5jbHVkZS93YWl0X3Vu dGlsX2Rpc2Nvbm5lY3RlZC5pbmMKKworIyBSZXN0YXJ0IHRoZSBzZXJ2ZXIuCistLSBleGVjIGVj aG8gInJlc3RhcnQiID4gJE1ZU1FMVEVTVF9WQVJESVIvdG1wL215c3FsZC4xLmV4cGVjdAorLS0g ZW5hYmxlX3JlY29ubmVjdAorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9jb25uZWN0ZWRf YWdhaW4uaW5jCisKK1NFVCBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVBRCBVTkNPTU1J VFRFRDsKK1NFTEVDVCAqIEZST00gdDsKK0NPTU1JVDsKK1hBIFJFQ09WRVI7CitYQSBST0xMQkFD SyAnMTIzJzsKK1hBIFJPTExCQUNLICc0NTYnOworWEEgQ09NTUlUICc3ODknOworU0VMRUNUICog RlJPTSB0OworCitEUk9QIFRBQkxFIHQ7CistLWRpc2FibGVfcXVlcnlfbG9nCitldmFsIHNldCBn bG9iYWwgaW5ub2RiX2ZpbGVfZm9ybWF0X2NoZWNrPSRpbm5vZGJfZmlsZV9mb3JtYXRfY2hlY2tf b3JpZzsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX2NsYXNzLmNjJwotLS0gYS9zcWwvc3Fs X2NsYXNzLmNjCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTM4MjQta3ht M3BzN3ZuMHlyMzNwdAorKysgYi9zcWwvc3FsX2NsYXNzLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTMzODMsNiArMzM4 Myw3IEBAIGJvb2wgeGlkX2NhY2hlX2luc2VydChYSUQgKnhpZCwgZW51bSB4YV8KICAgICB4cy0+ eGFfc3RhdGU9eGFfc3RhdGU7CiAgICAgeHMtPnhpZC5zZXQoeGlkKTsKICAgICB4cy0+aW5fdGhk PTA7CisgICAgeHMtPnJtX2Vycm9yPTA7CiAgICAgcmVzPW15X2hhc2hfaW5zZXJ0KCZ4aWRfY2Fj aGUsICh1Y2hhciopeHMpOwogICB9CiAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZMT0NLX3hpZF9j YWNoZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lu bm9kYi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZp ZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTEzNDAyOC0zMW95Nmw0NDd6bDA5MTloCkBAIC0xODks NyArMTg5LDcgQEAgaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKIC8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PSovCiAJCQkJCS8qIG91dDogdHJ1ZSBpZiBpbmRleCBuYW1lIG1h dGNoZXMgYQogCQkJCQlyZXNlcnZlZCBuYW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJCS8qIGlu OiBJbm5vREIgdHJhbnNhY3Rpb24gaGFuZGxlICovCisJVEhEKgkJdGhkLAkJLyogaW4vb3V0OiBN eVNRTCBjb25uZWN0aW9uICovCiAJY29uc3QgVEFCTEUqCWZvcm0sCQkvKiBpbjogaW5mb3JtYXRp b24gb24gdGFibGUKIAkJCQkJY29sdW1ucyBhbmQgaW5kZXhlcyAqLwogCWNvbnN0IGNoYXIqCW5v cm1fbmFtZSk7CS8qIGluOiB0YWJsZSBuYW1lICovCkBAIC01Mjg1LDEwICs1Mjg1LDYgQEAgY3Jl YXRlX3RhYmxlX2RlZigKIAlEQlVHX1BSSU5UKCJlbnRlciIsICgidGFibGVfbmFtZTogJXMiLCB0 YWJsZV9uYW1lKSk7CiAKIAl1dF9hKHRyeC0+bXlzcWxfdGhkICE9IE5VTEwpOwotCWlmIChJU19N QUdJQ19UQUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKHRhYmxlX25hbWUsCi0JCQkJCQkgIChU SEQqKSB0cngtPm15c3FsX3RoZCkpIHsKLQkJREJVR19SRVRVUk4oSEFfRVJSX0dFTkVSSUMpOwot CX0KIAogCW5fY29scyA9IGZvcm0tPnMtPmZpZWxkczsKIApAQCAtNTM5Nyw2ICs1MzkzLDggQEAg ZXJyX2NvbDoKIAkJCWNvbF9sZW4pOwogCX0KIAorCXNydl9sb3dlcl9jYXNlX3RhYmxlX25hbWVz ID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKKwogCWVycm9yID0gcm93X2NyZWF0ZV90YWJsZV9m b3JfbXlzcWwodGFibGUsIHRyeCk7CiAKIAlpbm5vZGJfY2hlY2tfZm9yX3JlY29yZF90b29fYmln X2Vycm9yKGZsYWdzICYgRElDVF9URl9DT01QQUNULCBlcnJvcik7CkBAIC01NjQyLDYgKzU2NDAs MzUgQEAgaGFfaW5ub2Jhc2U6OmNyZWF0ZSgKIAkJREJVR19SRVRVUk4oSEFfRVJSX1RPX0JJR19S T1cpOwogCX0KIAorCXN0cmNweShuYW1lMiwgbmFtZSk7CisKKwlub3JtYWxpemVfdGFibGVfbmFt ZShub3JtX25hbWUsIG5hbWUyKTsKKworCS8qIENyZWF0ZSB0aGUgdGFibGUgZGVmaW5pdGlvbiBp biBJbm5vREIgKi8KKworCWZsYWdzID0gZm9ybS0+cy0+cm93X3R5cGUgIT0gUk9XX1RZUEVfUkVE VU5EQU5UID8gRElDVF9URl9DT01QQUNUIDogMDsKKworCS8qIExvb2sgZm9yIGEgcHJpbWFyeSBr ZXkgKi8KKworCXByaW1hcnlfa2V5X25vPSAoZm9ybS0+cy0+cHJpbWFyeV9rZXkgIT0gTUFYX0tF WSA/CisJCQkgKGludCkgZm9ybS0+cy0+cHJpbWFyeV9rZXkgOgorCQkJIC0xKTsKKworCS8qIE91 ciBmdW5jdGlvbiByb3dfZ2V0X215c3FsX2tleV9udW1iZXJfZm9yX2luZGV4IGFzc3VtZXMKKwl0 aGUgcHJpbWFyeSBrZXkgaXMgYWx3YXlzIG51bWJlciAwLCBpZiBpdCBleGlzdHMgKi8KKworCURC VUdfQVNTRVJUKHByaW1hcnlfa2V5X25vID09IC0xIHx8IHByaW1hcnlfa2V5X25vID09IDApOwor CisJLyogQ2hlY2sgZm9yIG5hbWUgY29uZmxpY3RzICh3aXRoIHJlc2VydmVkIG5hbWUpIGZvcgor CWFueSB1c2VyIGluZGljZXMgdG8gYmUgY3JlYXRlZC4gKi8KKwlpZiAoaW5ub2Jhc2VfaW5kZXhf bmFtZV9pc19yZXNlcnZlZCh0aGQsIGZvcm0sIG5vcm1fbmFtZSkpIHsKKwkJREJVR19SRVRVUk4o LTEpOworCX0KKworCWlmIChJU19NQUdJQ19UQUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKG5v cm1fbmFtZSwgdGhkKSkgeworCQlEQlVHX1JFVFVSTihIQV9FUlJfR0VORVJJQyk7CisJfQorCiAJ LyogR2V0IHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdGhkLCBv ciBjcmVhdGUgb25lCiAJaWYgbm90IHlldCBjcmVhdGVkICovCiAKQEAgLTU2NjUsNDggKzU2OTIs MTIgQEAgaGFfaW5ub2Jhc2U6OmNyZWF0ZSgKIAkJdHJ4LT5jaGVja191bmlxdWVfc2Vjb25kYXJ5 ID0gRkFMU0U7CiAJfQogCi0JaWYgKGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMpIHsKLQkJc3J2X2xv d2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBUUlVFOwotCX0gZWxzZSB7Ci0JCXNydl9sb3dlcl9jYXNl X3RhYmxlX25hbWVzID0gRkFMU0U7Ci0JfQotCi0Jc3RyY3B5KG5hbWUyLCBuYW1lKTsKLQotCW5v cm1hbGl6ZV90YWJsZV9uYW1lKG5vcm1fbmFtZSwgbmFtZTIpOwotCiAJLyogTGF0Y2ggdGhlIElu bm9EQiBkYXRhIGRpY3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKIAlv ciBsb2NrIHdhaXRzIGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGEgdGFibGUgY3JlYXRlIG9wZXJh dGlvbi4KIAlEcm9wIHRhYmxlIGV0Yy4gZG8gdGhpcyBsYXRjaGluZyBpbiByb3cwbXlzcWwuYy4g Ki8KIAogCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCi0JLyogQ3JlYXRl IHRoZSB0YWJsZSBkZWZpbml0aW9uIGluIElubm9EQiAqLwotCi0JZmxhZ3MgPSAwOwotCi0JaWYg KGZvcm0tPnMtPnJvd190eXBlICE9IFJPV19UWVBFX1JFRFVOREFOVCkgewotCQlmbGFncyB8PSBE SUNUX1RGX0NPTVBBQ1Q7Ci0JfQotCi0JLyogTG9vayBmb3IgYSBwcmltYXJ5IGtleSAqLwotCi0J cHJpbWFyeV9rZXlfbm89IChmb3JtLT5zLT5wcmltYXJ5X2tleSAhPSBNQVhfS0VZID8KLQkJCSAo aW50KSBmb3JtLT5zLT5wcmltYXJ5X2tleSA6Ci0JCQkgLTEpOwotCi0JLyogT3VyIGZ1bmN0aW9u IHJvd19nZXRfbXlzcWxfa2V5X251bWJlcl9mb3JfaW5kZXggYXNzdW1lcwotCXRoZSBwcmltYXJ5 IGtleSBpcyBhbHdheXMgbnVtYmVyIDAsIGlmIGl0IGV4aXN0cyAqLwotCi0JREJVR19BU1NFUlQo cHJpbWFyeV9rZXlfbm8gPT0gLTEgfHwgcHJpbWFyeV9rZXlfbm8gPT0gMCk7Ci0KLQkvKiBDaGVj ayBmb3IgbmFtZSBjb25mbGljdHMgKHdpdGggcmVzZXJ2ZWQgbmFtZSkgZm9yCi0JYW55IHVzZXIg aW5kaWNlcyB0byBiZSBjcmVhdGVkLiAqLwotCWlmIChpbm5vYmFzZV9pbmRleF9uYW1lX2lzX3Jl c2VydmVkKHRyeCwgZm9ybSwgbm9ybV9uYW1lKSkgewotCQllcnJvciA9IC0xOwotCQlnb3RvIGNs ZWFudXA7Ci0JfQotCiAJZXJyb3IgPSBjcmVhdGVfdGFibGVfZGVmKHRyeCwgZm9ybSwgbm9ybV9u YW1lLAogCQljcmVhdGVfaW5mby0+b3B0aW9ucyAmIEhBX0xFWF9DUkVBVEVfVE1QX1RBQkxFID8g bmFtZTIgOiBOVUxMLAogCQlmbGFncyk7CkBAIC01OTM2LDEyICs1OTI3LDYgQEAgaGFfaW5ub2Jh c2U6OmRlbGV0ZV90YWJsZSgKIAogCXRyeF9zZWFyY2hfbGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZl ZChwYXJlbnRfdHJ4KTsKIAotCWlmIChsb3dlcl9jYXNlX3RhYmxlX25hbWVzKSB7Ci0JCXNydl9s b3dlcl9jYXNlX3RhYmxlX25hbWVzID0gVFJVRTsKLQl9IGVsc2UgewotCQlzcnZfbG93ZXJfY2Fz ZV90YWJsZV9uYW1lcyA9IEZBTFNFOwotCX0KLQogCXRyeCA9IHRyeF9hbGxvY2F0ZV9mb3JfbXlz cWwoKTsKIAogCXRyeC0+bXlzcWxfdGhkID0gdGhkOwpAQCAtNTk2MSw2ICs1OTQ2LDggQEAgaGFf aW5ub2Jhc2U6OmRlbGV0ZV90YWJsZSgKIAogCS8qIERyb3AgdGhlIHRhYmxlIGluIElubm9EQiAq LwogCisJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVz OworCiAJZXJyb3IgPSByb3dfZHJvcF90YWJsZV9mb3JfbXlzcWwobm9ybV9uYW1lLCB0cngsCiAJ CQkJCSB0aGRfc3FsX2NvbW1hbmQodGhkKQogCQkJCQkgPT0gU1FMQ09NX0RST1BfREIpOwpAQCAt NjA4OSwxMiArNjA3Niw2IEBAIGhhX2lubm9iYXNlOjpyZW5hbWVfdGFibGUoCiAKIAl0cnhfc2Vh cmNoX2xhdGNoX3JlbGVhc2VfaWZfcmVzZXJ2ZWQocGFyZW50X3RyeCk7CiAKLQlpZiAobG93ZXJf Y2FzZV90YWJsZV9uYW1lcykgewotCQlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IFRSVUU7 Ci0JfSBlbHNlIHsKLQkJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBGQUxTRTsKLQl9Ci0K IAl0cnggPSB0cnhfYWxsb2NhdGVfZm9yX215c3FsKCk7CiAJdHJ4LT5teXNxbF90aGQgPSB0aGQ7 CiAJSU5OT0JBU0VfQ09QWV9TVE1UKHRoZCwgdHJ4KTsKQEAgLTYxMTQsNiArNjA5NSw4IEBAIGhh X2lubm9iYXNlOjpyZW5hbWVfdGFibGUoCiAKIAkvKiBSZW5hbWUgdGhlIHRhYmxlIGluIElubm9E QiAqLwogCisJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25h bWVzOworCiAJZXJyb3IgPSByb3dfcmVuYW1lX3RhYmxlX2Zvcl9teXNxbChub3JtX2Zyb20sIG5v cm1fdG8sIHRyeCk7CiAKIAkvKiBGbHVzaCB0aGUgbG9nIHRvIHJlZHVjZSBwcm9iYWJpbGl0eSB0 aGF0IHRoZSAuZnJtIGZpbGVzIGFuZApAQCAtODU2NSw3ICs4NTQ4LDcgQEAgaW5ub2Jhc2VfY29t bWl0X2J5X3hpZCgKIAogCWlmICh0cngpIHsKIAkJaW5ub2Jhc2VfY29tbWl0X2xvdyh0cngpOwot CisJCXRyeF9mcmVlX2Zvcl9iYWNrZ3JvdW5kKHRyeCk7CiAJCXJldHVybihYQV9PSyk7CiAJfSBl bHNlIHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7CkBAIC04NTg4LDcgKzg1NzEsOSBAQCBpbm5vYmFz ZV9yb2xsYmFja19ieV94aWQoCiAJdHJ4ID0gdHJ4X2dldF90cnhfYnlfeGlkKHhpZCk7CiAKIAlp ZiAodHJ4KSB7Ci0JCXJldHVybihpbm5vYmFzZV9yb2xsYmFja190cngodHJ4KSk7CisJCWludAly ZXQgPSBpbm5vYmFzZV9yb2xsYmFja190cngodHJ4KTsKKwkJdHJ4X2ZyZWVfZm9yX2JhY2tncm91 bmQodHJ4KTsKKwkJcmV0dXJuKHJldCk7CiAJfSBlbHNlIHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7 CiAJfQpAQCAtODgyNCw3ICs4ODA5LDcgQEAgaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZl ZCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJCQkJCS8qIG91dDogdHJ1ZSBp ZiBhbiBpbmRleCBuYW1lCiAJCQkJCW1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KLQljb25z dCB0cnhfdCoJdHJ4LAkJLyogaW46IElubm9EQiB0cmFuc2FjdGlvbiBoYW5kbGUgKi8KKwlUSEQq CQl0aGQsCQkvKiBpbi9vdXQ6IE15U1FMIGNvbm5lY3Rpb24gKi8KIAljb25zdCBUQUJMRSoJZm9y bSwJCS8qIGluOiBpbmZvcm1hdGlvbiBvbiB0YWJsZQogCQkJCQljb2x1bW5zIGFuZCBpbmRleGVz ICovCiAJY29uc3QgY2hhcioJbm9ybV9uYW1lKQkvKiBpbjogdGFibGUgbmFtZSAqLwpAQCAtODgz OCw3ICs4ODIzLDcgQEAgaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKIAkJaWYgKGlu bm9iYXNlX3N0cmNhc2VjbXAoa2V5LT5uYW1lLAogCQkJCQlpbm5vYmFzZV9pbmRleF9yZXNlcnZl X25hbWUpID09IDApIHsKIAkJCS8qIFB1c2ggd2FybmluZyB0byBteXNxbCAqLwotCQkJcHVzaF93 YXJuaW5nX3ByaW50ZigoVEhEKikgdHJ4LT5teXNxbF90aGQsCisJCQlwdXNoX3dhcm5pbmdfcHJp bnRmKHRoZCwKIAkJCQkJICAgIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4sCiAJCQkJCSAg ICBFUl9DQU5UX0NSRUFURV9UQUJMRSwKIAkJCQkJICAgICJDYW5ub3QgQ3JlYXRlIEluZGV4IHdp dGggbmFtZSAiCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Ry eDB0cnguaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQxMTEzNDAyOC0zMW95Nmw0NDd6bDA5MTloCkBAIC0xOSw3ICsxOSwx MiBAQCBDcmVhdGVkIDMvMjYvMTk5NiBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJkaWN0MHR5cGVz LmgiCiAjaW5jbHVkZSAidHJ4MHhhLmgiCiAKKy8qIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3Vy cmVudGx5IGFsbG9jYXRlZCBmb3IgTXlTUUw6IHByb3RlY3RlZCBieQordGhlIGtlcm5lbCBtdXRl eCAqLwogZXh0ZXJuIHVsaW50CXRyeF9uX215c3FsX3RyYW5zYWN0aW9uczsKKy8qIE51bWJlciBv ZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGluIHRoZSBYQSBQUkVQQVJFRCBzdGF0ZTogcHJvdGVj dGVkIGJ5Cit0aGUga2VybmVsIG11dGV4ICovCitleHRlcm4gdWxpbnQJdHJ4X25fcHJlcGFyZWQ7 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKIFJlbGVhc2VzIHRoZSBzZWFyY2ggbGF0Y2ggaWYgdHJ4IGhh cyByZXNlcnZlZCBpdC4gKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xv Zy9sb2cwbG9nLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTMwNTIsMTIgKzMwNTIs MTMgQEAgbG9vcDoKIAkJZ290byBsb29wOwogCX0KIAotCS8qIENoZWNrIHRoYXQgdGhlcmUgYXJl IG5vIGxvbmdlciB0cmFuc2FjdGlvbnMuIFdlIG5lZWQgdGhpcyB3YWl0IGV2ZW4KLQlmb3IgdGhl ICd2ZXJ5IGZhc3QnIHNodXRkb3duLCBiZWNhdXNlIHRoZSBJbm5vREIgbGF5ZXIgbWF5IGhhdmUK LQljb21taXR0ZWQgb3IgcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGFuZCB3ZSBkb24ndCB3YW50IHRv IGxvc2UgdGhlbS4gKi8KKwkvKiBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBsb25nZXIgdHJhbnNh Y3Rpb25zLCBleGNlcHQgZm9yCisJUFJFUEFSRUQgb25lcy4gV2UgbmVlZCB0aGlzIHdhaXQgZXZl biBmb3IgdGhlICd2ZXJ5IGZhc3QnCisJc2h1dGRvd24sIGJlY2F1c2UgdGhlIElubm9EQiBsYXll ciBtYXkgaGF2ZSBjb21taXR0ZWQgb3IKKwlwcmVwYXJlZCB0cmFuc2FjdGlvbnMgYW5kIHdlIGRv bid0IHdhbnQgdG8gbG9zZSB0aGVtLiAqLwogCiAJaWYgKHRyeF9uX215c3FsX3RyYW5zYWN0aW9u cyA+IDAKLQkgICAgfHwgVVRfTElTVF9HRVRfTEVOKHRyeF9zeXMtPnRyeF9saXN0KSA+IDApIHsK KwkgICAgfHwgVVRfTElTVF9HRVRfTEVOKHRyeF9zeXMtPnRyeF9saXN0KSA+IHRyeF9uX3ByZXBh cmVkKSB7CiAKIAkJbXV0ZXhfZXhpdCgma2VybmVsX211dGV4KTsKIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS90cngvdHJ4MHRyeC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTM4 MjQta3htM3BzN3ZuMHlyMzNwdAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExMzQwMjgtMzFveTZsNDQ3emww OTE5aApAQCAtNDEsNiArNDEsOSBAQCBzZXNzX3QqCQl0cnhfZHVtbXlfc2VzcyA9IE5VTEw7CiAv KiBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIGN1cnJlbnRseSBhbGxvY2F0ZWQgZm9yIE15U1FMOiBw cm90ZWN0ZWQgYnkKIHRoZSBrZXJuZWwgbXV0ZXggKi8KIHVsaW50CXRyeF9uX215c3FsX3RyYW5z YWN0aW9ucyA9IDA7CisvKiBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIGN1cnJlbnRseSBpbiB0aGUg WEEgUFJFUEFSRUQgc3RhdGU6IHByb3RlY3RlZCBieQordGhlIGtlcm5lbCBtdXRleCAqLwordWxp bnQJdHJ4X25fcHJlcGFyZWQgPSAwOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFN0YXJ0cyB0aGUgdHJhbnNhY3Rp b24gaWYgaXQgaXMgbm90IHlldCBzdGFydGVkLiAqLwpAQCAtNDgwLDYgKzQ4Myw3IEBAIHRyeF9s aXN0c19pbml0X2F0X2RiX3N0YXJ0KHZvaWQpCiAJCQkJCWlmIChzcnZfZm9yY2VfcmVjb3Zlcnkg PT0gMCkgewogCiAJCQkJCQl0cngtPmNvbmNfc3RhdGUgPSBUUlhfUFJFUEFSRUQ7CisJCQkJCQl0 cnhfbl9wcmVwYXJlZCsrOwogCQkJCQl9IGVsc2UgewogCQkJCQkJZnByaW50ZihzdGRlcnIsCiAJ CQkJCQkJIklubm9EQjogU2luY2UiCkBAIC01NTgsNiArNTYyLDcgQEAgdHJ4X2xpc3RzX2luaXRf YXRfZGJfc3RhcnQodm9pZCkKIAogCQkJCQkJCXRyeC0+Y29uY19zdGF0ZQogCQkJCQkJCQk9IFRS WF9QUkVQQVJFRDsKKwkJCQkJCQl0cnhfbl9wcmVwYXJlZCsrOwogCQkJCQkJfSBlbHNlIHsKIAkJ CQkJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJCQkJIklubm9EQjogU2luY2UiCkBAIC04MzIsNiAr ODM3LDExIEBAIHRyeF9jb21taXRfb2ZmX2tlcm5lbCgKIAkgICAgICB8fCB0cngtPmNvbmNfc3Rh dGUgPT0gVFJYX1BSRVBBUkVEKTsKIAl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRleCkpOwog CisJaWYgKFVOSVZfVU5MSUtFTFkodHJ4LT5jb25jX3N0YXRlID09IFRSWF9QUkVQQVJFRCkpIHsK KwkJdXRfYSh0cnhfbl9wcmVwYXJlZCA+IDApOworCQl0cnhfbl9wcmVwYXJlZC0tOworCX0KKwog CS8qIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCBtYWtlcyB0aGUgdHJhbnNhY3Rpb24gY29tbWl0 dGVkIGluIG1lbW9yeQogCWFuZCBtYWtlcyBpdHMgY2hhbmdlcyB0byBkYXRhIHZpc2libGUgdG8g b3RoZXIgdHJhbnNhY3Rpb25zLgogCU5PVEUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIGRpc2NyZXBh bmN5IGZyb20gdGhlIHN0cmljdCBmb3JtYWwKQEAgLTE4ODIsNiArMTg5Miw3IEBAIHRyeF9wcmVw YXJlX29mZl9rZXJuZWwoCiAKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KIAl0cngtPmNvbmNfc3RhdGUgPSBUUlhfUFJFUEFSRUQ7CisJdHJ4X25fcHJlcGFyZWQr KzsKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogCWlmICht dXN0X2ZsdXNoX2xvZykgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdp bi9DaGFuZ2VMb2cnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNjExMzgyNC1reG0zcHM3dm4weXIzM3B0Cisr KyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MTExMzQwMjgtMzFveTZsNDQ3emwwOTE5aApAQCAtMSwzICsxLDE1IEBA CisyMDExLTA0LTA3CVRoZSBJbm5vREIgVGVhbQorCisJKiBoYW5kbGVyL2hhX2lubm9kYi5jYywg aGFuZGxlci9oYV9pbm5vZGIuaCwgaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjOgorCUZpeCBCdWcg IzUyNDA5IEFzc2VydGlvbiBmYWlsdXJlOiBsb25nIHNlbWFwaG9yZSB3YWl0CisKKzIwMTEtMDQt MDcJVGhlIElubm9EQiBUZWFtCisKKwkqIGhhbmRsZXIvaGFfaW5ub2RiLmNjLCBpbmNsdWRlL3Ry eDB0cnguaCwgaW5jbHVkZS90cngwdW5kby5oLAorCWxvZy9sb2cwbG9nLmMsIHRyeC90cngwc3lz LmMsIHRyeC90cngwdHJ4LmMsIHRyeC90cngwdW5kby5jOgorCUZpeCBCdWcgIzU5NjQxIFByZXBh cmVkIFhBIHRyYW5zYWN0aW9uIGluIHN5c3RlbSBhZnRlciBoYXJkIGNyYXNoCisJY2F1c2VzIGZ1 dHVyZSBzaHV0ZG93biBoYW5nCisKIDIwMTEtMDMtMzAJVGhlIElubm9EQiBUZWFtCiAKIAkqIHNy di9zcnYwc3J2LmMsIHN5bmMvc3luYzBhcnIuaCwgc3luYy9zeW5jMGFyci5jOgoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5jYycKLS0t IGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOnZhc2ls LmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTM4MjQta3htM3BzN3ZuMHlyMzNwdAorKysgYi9z dG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYV9pbm5vZGIuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExMzQwMjgtMzFveTZsNDQ3emwwOTE5aApAQCAtNjAyMywx MCArNjAyMyw2IEBAIGNyZWF0ZV90YWJsZV9kZWYoCiAJREJVR19QUklOVCgiZW50ZXIiLCAoInRh YmxlX25hbWU6ICVzIiwgdGFibGVfbmFtZSkpOwogCiAJdXRfYSh0cngtPm15c3FsX3RoZCAhPSBO VUxMKTsKLQlpZiAoSVNfTUFHSUNfVEFCTEVfQU5EX1VTRVJfREVOSUVEX0FDQ0VTUyh0YWJsZV9u YW1lLAotCQkJCQkJICAoVEhEKikgdHJ4LT5teXNxbF90aGQpKSB7Ci0JCURCVUdfUkVUVVJOKEhB X0VSUl9HRU5FUklDKTsKLQl9CiAKIAkvKiBNeVNRTCBkb2VzIHRoZSBuYW1lIGxlbmd0aCBjaGVj ay4gQnV0IHdlIGRvIGFkZGl0aW9uYWwgY2hlY2sKIAlvbiB0aGUgbmFtZSBsZW5ndGggaGVyZSAq LwpAQCAtNjE0Niw2ICs2MTQyLDggQEAgZXJyX2NvbDoKIAkJCWNvbF9sZW4pOwogCX0KIAorCXNy dl9sb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKKwogCWVy cm9yID0gcm93X2NyZWF0ZV90YWJsZV9mb3JfbXlzcWwodGFibGUsIHRyeCk7CiAKIAlpZiAoZXJy b3IgPT0gREJfRFVQTElDQVRFX0tFWSkgewpAQCAtNjU2Miw0MiArNjU2MCwxNyBAQCBoYV9pbm5v YmFzZTo6Y3JlYXRlKAogCQlEQlVHX1JFVFVSTihIQV9FUlJfVE9fQklHX1JPVyk7CiAJfQogCi0J LyogR2V0IHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdGhkLCBv ciBjcmVhdGUgb25lCi0JaWYgbm90IHlldCBjcmVhdGVkICovCi0KLQlwYXJlbnRfdHJ4ID0gY2hl Y2tfdHJ4X2V4aXN0cyh0aGQpOwotCi0JLyogSW4gY2FzZSBNeVNRTCBjYWxscyB0aGlzIGluIHRo ZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKLQlwb3NzaWJsZSBhZGFwdGl2ZSBo YXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzICovCi0KLQl0cnhfc2VhcmNo X2xhdGNoX3JlbGVhc2VfaWZfcmVzZXJ2ZWQocGFyZW50X3RyeCk7Ci0KLQl0cnggPSBpbm5vYmFz ZV90cnhfYWxsb2NhdGUodGhkKTsKLQotCWlmIChsb3dlcl9jYXNlX3RhYmxlX25hbWVzKSB7Ci0J CXNydl9sb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gVFJVRTsKLQl9IGVsc2UgewotCQlzcnZfbG93 ZXJfY2FzZV90YWJsZV9uYW1lcyA9IEZBTFNFOwotCX0KLQogCXN0cmNweShuYW1lMiwgbmFtZSk7 CiAKIAlub3JtYWxpemVfdGFibGVfbmFtZShub3JtX25hbWUsIG5hbWUyKTsKIAotCS8qIExhdGNo IHRoZSBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5IGV4Y2x1c2l2ZWx5IHNvIHRoYXQgbm8gZGVhZGxv Y2tzCi0Jb3IgbG9jayB3YWl0cyBjYW4gaGFwcGVuIGluIGl0IGR1cmluZyBhIHRhYmxlIGNyZWF0 ZSBvcGVyYXRpb24uCi0JRHJvcCB0YWJsZSBldGMuIGRvIHRoaXMgbGF0Y2hpbmcgaW4gcm93MG15 c3FsLmMuICovCi0KLQlyb3dfbXlzcWxfbG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKLQogCS8q IENyZWF0ZSB0aGUgdGFibGUgZGVmaW5pdGlvbiBpbiBJbm5vREIgKi8KIAogCWZsYWdzID0gMDsK IAogCS8qIFZhbGlkYXRlIGNyZWF0ZSBvcHRpb25zIGlmIGlubm9kYl9zdHJpY3RfbW9kZSBpcyBz ZXQuICovCiAJaWYgKCFjcmVhdGVfb3B0aW9uc19hcmVfdmFsaWQodGhkLCBmb3JtLCBjcmVhdGVf aW5mbykpIHsKLQkJZXJyb3IgPSBFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT047Ci0JCWdvdG8g Y2xlYW51cDsKKwkJREJVR19SRVRVUk4oRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OKTsKIAl9 CiAKIAlpZiAoY3JlYXRlX2luZm8tPmtleV9ibG9ja19zaXplKSB7CkBAIC02NzM5LDE2ICs2NzEy LDM3IEBAIGhhX2lubm9iYXNlOjpjcmVhdGUoCiAKIAkvKiBDaGVjayBmb3IgbmFtZSBjb25mbGlj dHMgKHdpdGggcmVzZXJ2ZWQgbmFtZSkgZm9yCiAJYW55IHVzZXIgaW5kaWNlcyB0byBiZSBjcmVh dGVkLiAqLwotCWlmIChpbm5vYmFzZV9pbmRleF9uYW1lX2lzX3Jlc2VydmVkKHRyeCwgZm9ybS0+ a2V5X2luZm8sCisJaWYgKGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQodGhkLCBmb3Jt LT5rZXlfaW5mbywKIAkJCQkJICAgIGZvcm0tPnMtPmtleXMpKSB7Ci0JCWVycm9yID0gLTE7Ci0J CWdvdG8gY2xlYW51cDsKKwkJREJVR19SRVRVUk4oLTEpOworCX0KKworCWlmIChJU19NQUdJQ19U QUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKG5vcm1fbmFtZSwgdGhkKSkgeworCQlEQlVHX1JF VFVSTihIQV9FUlJfR0VORVJJQyk7CiAJfQogCiAJaWYgKGNyZWF0ZV9pbmZvLT5vcHRpb25zICYg SEFfTEVYX0NSRUFURV9UTVBfVEFCTEUpIHsKIAkJZmxhZ3MgfD0gRElDVF9URjJfVEVNUE9SQVJZ IDw8IERJQ1RfVEYyX1NISUZUOwogCX0KIAorCS8qIEdldCB0aGUgdHJhbnNhY3Rpb24gYXNzb2Np YXRlZCB3aXRoIHRoZSBjdXJyZW50IHRoZCwgb3IgY3JlYXRlIG9uZQorCWlmIG5vdCB5ZXQgY3Jl YXRlZCAqLworCisJcGFyZW50X3RyeCA9IGNoZWNrX3RyeF9leGlzdHModGhkKTsKKworCS8qIElu IGNhc2UgTXlTUUwgY2FsbHMgdGhpcyBpbiB0aGUgbWlkZGxlIG9mIGEgU0VMRUNUIHF1ZXJ5LCBy ZWxlYXNlCisJcG9zc2libGUgYWRhcHRpdmUgaGFzaCBsYXRjaCB0byBhdm9pZCBkZWFkbG9ja3Mg b2YgdGhyZWFkcyAqLworCisJdHJ4X3NlYXJjaF9sYXRjaF9yZWxlYXNlX2lmX3Jlc2VydmVkKHBh cmVudF90cngpOworCisJdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHRoZCk7CisKKwkvKiBM YXRjaCB0aGUgSW5ub0RCIGRhdGEgZGljdGlvbmFyeSBleGNsdXNpdmVseSBzbyB0aGF0IG5vIGRl YWRsb2NrcworCW9yIGxvY2sgd2FpdHMgY2FuIGhhcHBlbiBpbiBpdCBkdXJpbmcgYSB0YWJsZSBj cmVhdGUgb3BlcmF0aW9uLgorCURyb3AgdGFibGUgZXRjLiBkbyB0aGlzIGxhdGNoaW5nIGluIHJv dzBteXNxbC5jLiAqLworCisJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7CisK IAllcnJvciA9IGNyZWF0ZV90YWJsZV9kZWYodHJ4LCBmb3JtLCBub3JtX25hbWUsCiAJCWNyZWF0 ZV9pbmZvLT5vcHRpb25zICYgSEFfTEVYX0NSRUFURV9UTVBfVEFCTEUgPyBuYW1lMiA6IE5VTEws CiAJCWZsYWdzKTsKQEAgLTY5OTIsMTggKzY5ODYsMTQgQEAgaGFfaW5ub2Jhc2U6OmRlbGV0ZV90 YWJsZSgKIAogCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh0aGQpOwogCi0JaWYgKGxvd2Vy X2Nhc2VfdGFibGVfbmFtZXMpIHsKLQkJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBUUlVF OwotCX0gZWxzZSB7Ci0JCXNydl9sb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gRkFMU0U7Ci0JfQot CiAJbmFtZV9sZW4gPSBzdHJsZW4obmFtZSk7CiAKIAl1dF9hKG5hbWVfbGVuIDwgMTAwMCk7CiAK IAkvKiBEcm9wIHRoZSB0YWJsZSBpbiBJbm5vREIgKi8KIAorCXNydl9sb3dlcl9jYXNlX3RhYmxl X25hbWVzID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKKwogCWVycm9yID0gcm93X2Ryb3BfdGFi bGVfZm9yX215c3FsKG5vcm1fbmFtZSwgdHJ4LAogCQkJCQkgdGhkX3NxbF9jb21tYW5kKHRoZCkK IAkJCQkJID09IFNRTENPTV9EUk9QX0RCKTsKQEAgLTcxMTksMTIgKzcxMDksNiBAQCBpbm5vYmFz ZV9yZW5hbWVfdGFibGUoCiAJY2hhcioJbm9ybV90bzsKIAljaGFyKglub3JtX2Zyb207CiAKLQlp ZiAobG93ZXJfY2FzZV90YWJsZV9uYW1lcykgewotCQlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1l cyA9IFRSVUU7Ci0JfSBlbHNlIHsKLQkJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBGQUxT RTsKLQl9Ci0KIAkvLyBNYWdpYyBudW1iZXIgNjQgYXJiaXRyYXJ5CiAJbm9ybV90byA9IChjaGFy KikgbXlfbWFsbG9jKHN0cmxlbih0bykgKyA2NCwgTVlGKDApKTsKIAlub3JtX2Zyb20gPSAoY2hh ciopIG15X21hbGxvYyhzdHJsZW4oZnJvbSkgKyA2NCwgTVlGKDApKTsKQEAgLTcxMzksNiArNzEy Myw4IEBAIGlubm9iYXNlX3JlbmFtZV90YWJsZSgKIAkJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0 aW9uYXJ5KHRyeCk7CiAJfQogCisJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9j YXNlX3RhYmxlX25hbWVzOworCiAJZXJyb3IgPSByb3dfcmVuYW1lX3RhYmxlX2Zvcl9teXNxbCgK IAkJbm9ybV9mcm9tLCBub3JtX3RvLCB0cngsIGxvY2tfYW5kX2NvbW1pdCk7CiAKQEAgLTk5OTgs NyArOTk4NCw3IEBAIGlubm9iYXNlX2NvbW1pdF9ieV94aWQoCiAKIAlpZiAodHJ4KSB7CiAJCWlu bm9iYXNlX2NvbW1pdF9sb3codHJ4KTsKLQorCQl0cnhfZnJlZV9mb3JfYmFja2dyb3VuZCh0cngp OwogCQlyZXR1cm4oWEFfT0spOwogCX0gZWxzZSB7CiAJCXJldHVybihYQUVSX05PVEEpOwpAQCAt MTAwMjQsNyArMTAwMTAsOSBAQCBpbm5vYmFzZV9yb2xsYmFja19ieV94aWQoCiAJdHJ4ID0gdHJ4 X2dldF90cnhfYnlfeGlkKHhpZCk7CiAKIAlpZiAodHJ4KSB7Ci0JCXJldHVybihpbm5vYmFzZV9y b2xsYmFja190cngodHJ4KSk7CisJCWludAlyZXQgPSBpbm5vYmFzZV9yb2xsYmFja190cngodHJ4 KTsKKwkJdHJ4X2ZyZWVfZm9yX2JhY2tncm91bmQodHJ4KTsKKwkJcmV0dXJuKHJldCk7CiAJfSBl bHNlIHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7CiAJfQpAQCAtMTA2OTgsMTkgKzEwNjg2LDE5IEBA IHN0YXRpYyBpbnQgc2hvd19pbm5vZGJfdmFycyhUSEQgKnRoZCwgU0gKICAgcmV0dXJuIDA7CiB9 CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFRoaXMgZnVuY3Rpb24gY2hl Y2tzIGVhY2ggaW5kZXggbmFtZSBmb3IgYSB0YWJsZSBhZ2FpbnN0IHJlc2VydmVkCi1zeXN0ZW0g ZGVmYXVsdCBwcmltYXJ5IGluZGV4IG5hbWUgJ0dFTl9DTFVTVF9JTkRFWCcuIElmIGEgbmFtZSBt YXRjaGVzLAotdGhpcyBmdW5jdGlvbiBwdXNoZXMgYW4gd2FybmluZyBtZXNzYWdlIHRvIHRoZSBj bGllbnQsIGFuZCByZXR1cm5zIHRydWUuICovCitzeXN0ZW0gZGVmYXVsdCBwcmltYXJ5IGluZGV4 IG5hbWUgJ0dFTl9DTFVTVF9JTkRFWCcuIElmIGEgbmFtZQorbWF0Y2hlcywgdGhpcyBmdW5jdGlv biBwdXNoZXMgYW4gd2FybmluZyBtZXNzYWdlIHRvIHRoZSBjbGllbnQsCithbmQgcmV0dXJucyB0 cnVlLgorQHJldHVybiB0cnVlIGlmIHRoZSBpbmRleCBuYW1lIG1hdGNoZXMgdGhlIHJlc2VydmVk IG5hbWUgKi8KIGV4dGVybiAiQyIgVU5JVl9JTlRFUk4KIGJvb2wKIGlubm9iYXNlX2luZGV4X25h bWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCQkJCQkv KiBvdXQ6IHRydWUgaWYgYW4gaW5kZXggbmFtZQotCQkJCQltYXRjaGVzIHRoZSByZXNlcnZlZCBu YW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJCS8qIGluOiBJbm5vREIgdHJhbnNhY3Rpb24gaGFu ZGxlICovCi0JY29uc3QgS0VZKglrZXlfaW5mbywJLyogaW46IEluZGV4ZXMgdG8gYmUgY3JlYXRl ZCAqLwotCXVsaW50CQludW1fb2Zfa2V5cykJLyogaW46IE51bWJlciBvZiBpbmRleGVzIHRvCisJ VEhEKgkJdGhkLAkJLyohPCBpbi9vdXQ6IE15U1FMIGNvbm5lY3Rpb24gKi8KKwljb25zdCBLRVkq CWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KKwl1bGludAkJbnVt X29mX2tleXMpCS8qITwgaW46IE51bWJlciBvZiBpbmRleGVzIHRvCiAJCQkJCWJlIGNyZWF0ZWQu ICovCiB7CiAJY29uc3QgS0VZKglrZXk7CkBAIC0xMDcyMiw3ICsxMDcxMCw3IEBAIGlubm9iYXNl X2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAJCWlmIChpbm5vYmFzZV9zdHJjYXNlY21wKGtleS0+ bmFtZSwKIAkJCQkJaW5ub2Jhc2VfaW5kZXhfcmVzZXJ2ZV9uYW1lKSA9PSAwKSB7CiAJCQkvKiBQ dXNoIHdhcm5pbmcgdG8gbXlzcWwgKi8KLQkJCXB1c2hfd2FybmluZ19wcmludGYoKFRIRCopIHRy eC0+bXlzcWxfdGhkLAorCQkJcHVzaF93YXJuaW5nX3ByaW50Zih0aGQsCiAJCQkJCSAgICBNWVNR TF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLAogCQkJCQkgICAgRVJfV1JPTkdfTkFNRV9GT1JfSU5E RVgsCiAJCQkJCSAgICAiQ2Fubm90IENyZWF0ZSBJbmRleCB3aXRoIG5hbWUgIgoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5oJwotLS0g YS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYV9pbm5vZGIuaAlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQKKysrIGIvc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2hhbmRsZXIvaGFfaW5ub2RiLmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA0MTExMzQwMjgtMzFveTZsNDQ3emwwOTE5aApAQCAtMzE3LDE1ICsz MTcsMTQgQEAgaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKAogVGhpcyBmdW5jdGlvbiBjaGVja3MgZWFj aCBpbmRleCBuYW1lIGZvciBhIHRhYmxlIGFnYWluc3QgcmVzZXJ2ZWQKIHN5c3RlbSBkZWZhdWx0 IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lCiBtYXRjaGVz LCB0aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNsaWVudCwK LWFuZCByZXR1cm5zIHRydWUuICovCithbmQgcmV0dXJucyB0cnVlLgorQHJldHVybiB0cnVlIGlm IHRoZSBpbmRleCBuYW1lIG1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KIGV4dGVybiAiQyIK IGJvb2wKIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09PT09PT09 PT09PT09PT09PT09PT0qLwotCQkJCQkvKiBvdXQ6IHRydWUgaWYgdGhlIGluZGV4IG5hbWUKLQkJ CQkJbWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwotCWNvbnN0IHRyeF90Kgl0cngsCQkvKiBp bjogSW5ub0RCIHRyYW5zYWN0aW9uIGhhbmRsZSAqLwotCWNvbnN0IEtFWSoJa2V5X2luZm8sCS8q IGluOiBJbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KLQl1bGludAkJbnVtX29mX2tleXMpOwkvKiBp bjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KKwlUSEQqCQl0aGQsCQkvKiE8IGluL291dDogTXlTUUwg Y29ubmVjdGlvbiAqLworCWNvbnN0IEtFWSoJa2V5X2luZm8sCS8qITwgaW46IEluZGV4ZXMgdG8g YmUgY3JlYXRlZCAqLworCXVsaW50CQludW1fb2Zfa2V5cyk7CS8qITwgaW46IE51bWJlciBvZiBp bmRleGVzIHRvCiAJCQkJCWJlIGNyZWF0ZWQuICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdl L2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTA0MDYxMTM4MjQta3htM3BzN3ZuMHlyMzNwdAorKysgYi9zdG9yYWdl L2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTY0OSw0NCAr NjQ5LDM3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAKIAl1cGRhdGVfdGhkKCk7CiAKLQlo ZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOwotCiAJLyogSW4gY2FzZSBNeVNRTCBjYWxscyB0 aGlzIGluIHRoZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKIAlwb3NzaWJsZSBh ZGFwdGl2ZSBoYXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzLiAqLwogCXRy eF9zZWFyY2hfbGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwcmVidWlsdC0+dHJ4KTsKLQl0cnhf c3RhcnRfaWZfbm90X3N0YXJ0ZWQocHJlYnVpbHQtPnRyeCk7CiAKLQkvKiBDcmVhdGUgYSBiYWNr Z3JvdW5kIHRyYW5zYWN0aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgotCXRoZSBkYXRhIGRpY3Rp b25hcnkgdGFibGVzLiAqLwotCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7 Ci0JdHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkKHRyeCk7CisJLyogQ2hlY2sgaWYgdGhlIGluZGV4 IG5hbWUgaXMgcmVzZXJ2ZWQuICovCisJaWYgKGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2 ZWQodXNlcl90aGQsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpIHsKKwkJREJVR19SRVRVUk4oLTEp OworCX0KIAogCWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGUKIAkJPSBkaWN0X3RhYmxlX2dl dChwcmVidWlsdC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKIAogCWlmIChVTklWX1VOTElLRUxZKCFp bm5vZGJfdGFibGUpKSB7Ci0JCWVycm9yID0gSEFfRVJSX05PX1NVQ0hfVEFCTEU7Ci0JCWdvdG8g ZXJyX2V4aXQ7CisJCURCVUdfUkVUVVJOKEhBX0VSUl9OT19TVUNIX1RBQkxFKTsKIAl9CiAKLQkv KiBDaGVjayBpZiB0aGUgaW5kZXggbmFtZSBpcyByZXNlcnZlZC4gKi8KLQlpZiAoaW5ub2Jhc2Vf aW5kZXhfbmFtZV9pc19yZXNlcnZlZCh0cngsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpIHsKLQkJ ZXJyb3IgPSAtMTsKLQl9IGVsc2UgewotCQkvKiBDaGVjayB0aGF0IGluZGV4IGtleXMgYXJlIHNl bnNpYmxlICovCi0JCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfaW5kZXhfa2V5cyhrZXlfaW5mbywg bnVtX29mX2tleXMsCi0JCQkJCQkgIGlubm9kYl90YWJsZSk7Ci0JfQorCS8qIENoZWNrIHRoYXQg aW5kZXgga2V5cyBhcmUgc2Vuc2libGUgKi8KKwllcnJvciA9IGlubm9iYXNlX2NoZWNrX2luZGV4 X2tleXMoa2V5X2luZm8sIG51bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUpOwogCiAJaWYgKFVOSVZf VU5MSUtFTFkoZXJyb3IpKSB7Ci1lcnJfZXhpdDoKLQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJ dHJ4X2dlbmVyYWxfcm9sbGJhY2tfZm9yX215c3FsKHRyeCwgTlVMTCk7Ci0JCXRyeF9mcmVlX2Zv cl9teXNxbCh0cngpOwotCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKIAkJ REJVR19SRVRVUk4oZXJyb3IpOwogCX0KIAorCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7 CisJdHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkKHByZWJ1aWx0LT50cngpOworCisJLyogQ3JlYXRl IGEgYmFja2dyb3VuZCB0cmFuc2FjdGlvbiBmb3IgdGhlIG9wZXJhdGlvbnMgb24KKwl0aGUgZGF0 YSBkaWN0aW9uYXJ5IHRhYmxlcy4gKi8KKwl0cnggPSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodXNl cl90aGQpOworCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZCh0cngpOworCiAJLyogQ3JlYXRlIHRh YmxlIGNvbnRhaW5pbmcgYWxsIGluZGV4ZXMgdG8gYmUgYnVpbHQgaW4gdGhpcwogCWFsdGVyIHRh YmxlIGFkZCBpbmRleCBzbyB0aGF0IHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAJaW4g dGhlIHRhYmxlLiAqLwpAQCAtNzU4LDggKzc1MSwxMiBAQCBlcnJfZXhpdDoKIAogCQkJdXRfZChk aWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhpbm5vZGJfdGFibGUsCiAJCQkJCQkJICAg ICAgRkFMU0UpKTsKKwkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJCQl0cnhfZ2VuZXJhbF9yb2xs YmFja19mb3JfbXlzcWwodHJ4LCBOVUxMKTsKIAkJCXJvd19teXNxbF91bmxvY2tfZGF0YV9kaWN0 aW9uYXJ5KHRyeCk7Ci0JCQlnb3RvIGVycl9leGl0OworCQkJdHJ4X2ZyZWVfZm9yX215c3FsKHRy eCk7CisJCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKKwkJCURCVUdfUkVU VVJOKGVycm9yKTsKIAkJfQogCiAJCXRyeC0+dGFibGVfaWQgPSBpbmRleGVkX3RhYmxlLT5pZDsK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS90cngwdHJ4 LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEzODI0LWt4bTNwczd2bjB5cjMzcHQKKysr IGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdHJ4MHRyeC5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTQ0LDYg KzQ0LDkgQEAgZXh0ZXJuIHNlc3NfdCoJdHJ4X2R1bW15X3Nlc3M7CiAvKiogTnVtYmVyIG9mIHRy YW5zYWN0aW9ucyBjdXJyZW50bHkgYWxsb2NhdGVkIGZvciBNeVNRTDogcHJvdGVjdGVkIGJ5CiB0 aGUga2VybmVsIG11dGV4ICovCiBleHRlcm4gdWxpbnQJdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25z OworLyoqIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGluIHRoZSBYQSBQUkVQQVJF RCBzdGF0ZTogcHJvdGVjdGVkIGJ5Cit0aGUga2VybmVsIG11dGV4ICovCitleHRlcm4gdWxpbnQJ dHJ4X25fcHJlcGFyZWQ7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlbGVhc2VzIHRoZSBzZWFyY2gg bGF0Y2ggaWYgdHJ4IGhhcyByZXNlcnZlZCBpdC4gKi8KQEAgLTEwOCw2ICsxMTEsMTQgQEAgdHJ4 X2ZyZWUoCiAvKj09PT09Ki8KIAl0cnhfdCoJdHJ4KTsJLyohPCBpbiwgb3duOiB0cnggb2JqZWN0 ICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCitBdCBzaHV0ZG93biwgZnJlZXMgYSB0cmFuc2FjdGlvbiBv YmplY3QgdGhhdCBpcyBpbiB0aGUgUFJFUEFSRUQgc3RhdGUuICovCitVTklWX0lOVEVSTgordm9p ZAordHJ4X2ZyZWVfcHJlcGFyZWQoCisvKj09PT09PT09PT09PT09Ki8KKwl0cnhfdCoJdHJ4KQkv KiE8IGluLCBvd246IHRyeCBvYmplY3QgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7Cisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCiBGcmVlcyBhIHRyYW5zYWN0aW9uIG9iamVjdCBmb3IgTXlTUUwuICov CiBVTklWX0lOVEVSTgogdm9pZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9pbmNsdWRlL3RyeDB1bmRvLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNs dWRlL3RyeDB1bmRvLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNjExMzgy NC1reG0zcHM3dm4weXIzM3B0CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3Ry eDB1bmRvLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExMzQwMjgtMzFv eTZsNDQ3emwwOTE5aApAQCAtMjk4LDYgKzI5OCwxNSBAQCB2b2lkCiB0cnhfdW5kb19pbnNlcnRf Y2xlYW51cCgKIC8qPT09PT09PT09PT09PT09PT09PT0qLwogCXRyeF90Kgl0cngpOwkvKiE8IGlu OiB0cmFuc2FjdGlvbiBoYW5kbGUgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQXQgc2h1dGRvd24s IGZyZWVzIHRoZSB1bmRvIGxvZ3Mgb2YgYSBQUkVQQVJFRCB0cmFuc2FjdGlvbi4gKi8KK1VOSVZf SU5URVJOCit2b2lkCit0cnhfdW5kb19mcmVlX3ByZXBhcmVkKAorLyo9PT09PT09PT09PT09PT09 PT09Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluL291dDogUFJFUEFSRUQgdHJhbnNhY3Rpb24gKi8K KwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICov CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBQYXJzZXMgdGhlIHJlZG8gbG9nIGVudHJ5IG9mIGFuIHVuZG8gbG9nIHBhZ2Ug aW5pdGlhbGl6YXRpb24uCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2xvZy9sb2cwbG9nLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9sb2cvbG9nMGxvZy5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTM4MjQta3htM3BzN3ZuMHly MzNwdAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vbG9nL2xvZzBsb2cuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTEzNDAyOC0zMW95Nmw0NDd6bDA5MTloCkBAIC0z MDg1LDEyICszMDg1LDEzIEBAIGxvb3A6CiAJCWdvdG8gbG9vcDsKIAl9CiAKLQkvKiBDaGVjayB0 aGF0IHRoZXJlIGFyZSBubyBsb25nZXIgdHJhbnNhY3Rpb25zLiBXZSBuZWVkIHRoaXMgd2FpdCBl dmVuCi0JZm9yIHRoZSAndmVyeSBmYXN0JyBzaHV0ZG93biwgYmVjYXVzZSB0aGUgSW5ub0RCIGxh eWVyIG1heSBoYXZlCi0JY29tbWl0dGVkIG9yIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBhbmQgd2Ug ZG9uJ3Qgd2FudCB0byBsb3NlIHRoZW0uICovCisJLyogQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8g bG9uZ2VyIHRyYW5zYWN0aW9ucywgZXhjZXB0IGZvcgorCVBSRVBBUkVEIG9uZXMuIFdlIG5lZWQg dGhpcyB3YWl0IGV2ZW4gZm9yIHRoZSAndmVyeSBmYXN0JworCXNodXRkb3duLCBiZWNhdXNlIHRo ZSBJbm5vREIgbGF5ZXIgbWF5IGhhdmUgY29tbWl0dGVkIG9yCisJcHJlcGFyZWQgdHJhbnNhY3Rp b25zIGFuZCB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhlbS4gKi8KIAogCWlmICh0cnhfbl9teXNx bF90cmFuc2FjdGlvbnMgPiAwCi0JICAgIHx8IFVUX0xJU1RfR0VUX0xFTih0cnhfc3lzLT50cnhf bGlzdCkgPiAwKSB7CisJICAgIHx8IFVUX0xJU1RfR0VUX0xFTih0cnhfc3lzLT50cnhfbGlzdCkg PiB0cnhfbl9wcmVwYXJlZCkgewogCiAJCW11dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7CiAKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vdHJ4L3RyeDBzeXMuYycKLS0t IGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3RyeC90cngwc3lzLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDQwNjExMzgyNC1reG0zcHM3dm4weXIzM3B0CisrKyBiL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi90cngvdHJ4MHN5cy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTM3LDYgKzM3LDcgQEAgQ3JlYXRl ZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAidHJ4MHJzZWcuaCIKICNpbmNsdWRl ICJ0cngwdW5kby5oIgogI2luY2x1ZGUgInNydjBzcnYuaCIKKyNpbmNsdWRlICJzcnYwc3RhcnQu aCIKICNpbmNsdWRlICJ0cngwcHVyZ2UuaCIKICNpbmNsdWRlICJsb2cwbG9nLmgiCiAjaW5jbHVk ZSAib3MwZmlsZS5oIgpAQCAtMTU0OCwxMCArMTU0OSwxMiBAQCB2b2lkCiB0cnhfc3lzX2Nsb3Nl KHZvaWQpCiAvKj09PT09PT09PT09PT09PSovCiB7CisJdHJ4X3QqCQl0cng7CiAJdHJ4X3JzZWdf dCoJcnNlZzsKIAlyZWFkX3ZpZXdfdCoJdmlldzsKIAogCXV0X2FkKHRyeF9zeXMgIT0gTlVMTCk7 CisJdXRfYWQoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMp OwogCiAJLyogQ2hlY2sgdGhhdCBhbGwgcmVhZCB2aWV3cyBhcmUgY2xvc2VkIGV4Y2VwdCByZWFk IHZpZXcgb3duZWQKIAlieSBhIHB1cmdlLiAqLwpAQCAtMTU4Myw2ICsxNTg2LDEzIEBAIHRyeF9z eXNfY2xvc2Uodm9pZCkKIAltZW1fZnJlZSh0cnhfZG91Ymxld3JpdGUpOwogCXRyeF9kb3VibGV3 cml0ZSA9IE5VTEw7CiAKKwkvKiBPbmx5IHByZXBhcmVkIHRyYW5zYWN0aW9ucyBtYXkgYmUgbGVm dCBpbiB0aGUgc3lzdGVtLiBGcmVlIHRoZW0uICovCisJdXRfYShVVF9MSVNUX0dFVF9MRU4odHJ4 X3N5cy0+dHJ4X2xpc3QpID09IHRyeF9uX3ByZXBhcmVkKTsKKworCXdoaWxlICgodHJ4ID0gVVRf TElTVF9HRVRfRklSU1QodHJ4X3N5cy0+dHJ4X2xpc3QpKSAhPSBOVUxMKSB7CisJCXRyeF9mcmVl X3ByZXBhcmVkKHRyeCk7CisJfQorCiAJLyogVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSB0cmFu c2FjdGlvbnMuICovCiAJcnNlZyA9IFVUX0xJU1RfR0VUX0ZJUlNUKHRyeF9zeXMtPnJzZWdfbGlz dCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vdHJ4L3RyeDB0 cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3RyeC90cngwdHJ4LmMJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNjExMzgyNC1reG0zcHM3dm4weXIzM3B0CisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi90cngvdHJ4MHRyeC5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2bDQ0N3psMDkxOWgKQEAgLTUwLDYgKzUwLDkg QEAgVU5JVl9JTlRFUk4gc2Vzc190KgkJdHJ4X2R1bW15X3Nlc3MgPSBOVQogLyoqIE51bWJlciBv ZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGFsbG9jYXRlZCBmb3IgTXlTUUw6IHByb3RlY3RlZCBi eQogdGhlIGtlcm5lbCBtdXRleCAqLwogVU5JVl9JTlRFUk4gdWxpbnQJdHJ4X25fbXlzcWxfdHJh bnNhY3Rpb25zID0gMDsKKy8qIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGluIHRo ZSBYQSBQUkVQQVJFRCBzdGF0ZTogcHJvdGVjdGVkIGJ5Cit0aGUga2VybmVsIG11dGV4ICovCitV TklWX0lOVEVSTiB1bGludAl0cnhfbl9wcmVwYXJlZCA9IDA7CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0IGRl dGFpbGVkIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSB0cmFuc2FjdGlvbi4gKi8KQEAgLTMzNCw2ICsz MzcsNjAgQEAgdHJ4X2ZyZWUoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0F0IHNodXRkb3duLCBm cmVlcyBhIHRyYW5zYWN0aW9uIG9iamVjdCB0aGF0IGlzIGluIHRoZSBQUkVQQVJFRCBzdGF0ZS4g Ki8KK1VOSVZfSU5URVJOCit2b2lkCit0cnhfZnJlZV9wcmVwYXJlZCgKKy8qPT09PT09PT09PT09 PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4sIG93bjogdHJ4IG9iamVjdCAqLworeworCXV0X2Fk KG11dGV4X293bigma2VybmVsX211dGV4KSk7CisJdXRfYSh0cngtPmNvbmNfc3RhdGUgPT0gVFJY X1BSRVBBUkVEKTsKKwl1dF9hKHRyeC0+bWFnaWNfbiA9PSBUUlhfTUFHSUNfTik7CisKKwkvKiBQ cmVwYXJlZCB0cmFuc2FjdGlvbnMgYXJlIHNvcnQgb2YgYWN0aXZlOyB0aGV5IGFsbG93CisJUk9M TEJBQ0sgYW5kIENPTU1JVCBvcGVyYXRpb25zLiBCZWNhdXNlIHRoZSBzeXN0ZW0gZG9lcyBub3QK Kwljb250YWluIGFueSBvdGhlciB0cmFuc2FjdGlvbnMgdGhhbiBwcmVwYXJlZCB0cmFuc2FjdGlv bnMgYXQKKwl0aGUgc2h1dGRvd24gc3RhZ2UgYW5kIGJlY2F1c2UgYSB0cmFuc2FjdGlvbiBjYW5u b3QgYmVjb21lCisJUFJFUEFSRUQgd2hpbGUgaG9sZGluZyBsb2NrcywgaXQgaXMgc2FmZSB0byBy ZWxlYXNlIHRoZSBsb2NrcworCWhlbGQgYnkgUFJFUEFSRUQgdHJhbnNhY3Rpb25zIGhlcmUgYXQg c2h1dGRvd24uKi8KKwlsb2NrX3JlbGVhc2Vfb2ZmX2tlcm5lbCh0cngpOworCisJdHJ4X3VuZG9f ZnJlZV9wcmVwYXJlZCh0cngpOworCisJbXV0ZXhfZnJlZSgmdHJ4LT51bmRvX211dGV4KTsKKwor CWlmICh0cngtPnVuZG9fbm9fYXJyKSB7CisJCXRyeF91bmRvX2Fycl9mcmVlKHRyeC0+dW5kb19u b19hcnIpOworCX0KKworCXV0X2EoVVRfTElTVF9HRVRfTEVOKHRyeC0+c2lnbmFscykgPT0gMCk7 CisJdXRfYShVVF9MSVNUX0dFVF9MRU4odHJ4LT5yZXBseV9zaWduYWxzKSA9PSAwKTsKKworCXV0 X2EodHJ4LT53YWl0X2xvY2sgPT0gTlVMTCk7CisJdXRfYShVVF9MSVNUX0dFVF9MRU4odHJ4LT53 YWl0X3RocnMpID09IDApOworCisJdXRfYSghdHJ4LT5oYXNfc2VhcmNoX2xhdGNoKTsKKworCXV0 X2EodHJ4LT5kaWN0X29wZXJhdGlvbl9sb2NrX21vZGUgPT0gMCk7CisKKwlpZiAodHJ4LT5sb2Nr X2hlYXApIHsKKwkJbWVtX2hlYXBfZnJlZSh0cngtPmxvY2tfaGVhcCk7CisJfQorCisJaWYgKHRy eC0+Z2xvYmFsX3JlYWRfdmlld19oZWFwKSB7CisJCW1lbV9oZWFwX2ZyZWUodHJ4LT5nbG9iYWxf cmVhZF92aWV3X2hlYXApOworCX0KKworCXV0X2EoaWJfdmVjdG9yX2lzX2VtcHR5KHRyeC0+YXV0 b2luY19sb2NrcykpOworCWliX3ZlY3Rvcl9mcmVlKHRyeC0+YXV0b2luY19sb2Nrcyk7CisKKwlV VF9MSVNUX1JFTU9WRSh0cnhfbGlzdCwgdHJ4X3N5cy0+dHJ4X2xpc3QsIHRyeCk7CisKKwltZW1f ZnJlZSh0cngpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBGcmVlcyBhIHRyYW5zYWN0aW9uIG9i amVjdCBmb3IgTXlTUUwuICovCiBVTklWX0lOVEVSTgogdm9pZApAQCAtNDYzLDYgKzUyMCw3IEBA IHRyeF9saXN0c19pbml0X2F0X2RiX3N0YXJ0KHZvaWQpCiAJCQkJCWlmIChzcnZfZm9yY2VfcmVj b3ZlcnkgPT0gMCkgewogCiAJCQkJCQl0cngtPmNvbmNfc3RhdGUgPSBUUlhfUFJFUEFSRUQ7CisJ CQkJCQl0cnhfbl9wcmVwYXJlZCsrOwogCQkJCQl9IGVsc2UgewogCQkJCQkJZnByaW50ZihzdGRl cnIsCiAJCQkJCQkJIklubm9EQjogU2luY2UiCkBAIC01NDEsNiArNTk5LDcgQEAgdHJ4X2xpc3Rz X2luaXRfYXRfZGJfc3RhcnQodm9pZCkKIAogCQkJCQkJCXRyeC0+Y29uY19zdGF0ZQogCQkJCQkJ CQk9IFRSWF9QUkVQQVJFRDsKKwkJCQkJCQl0cnhfbl9wcmVwYXJlZCsrOwogCQkJCQkJfSBlbHNl IHsKIAkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJCQkJIklubm9EQjogU2luY2UiCkBAIC04 MjAsNiArODc5LDExIEBAIHRyeF9jb21taXRfb2ZmX2tlcm5lbCgKIAkgICAgICB8fCB0cngtPmNv bmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVEKTsKIAl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRl eCkpOwogCisJaWYgKFVOSVZfVU5MSUtFTFkodHJ4LT5jb25jX3N0YXRlID09IFRSWF9QUkVQQVJF RCkpIHsKKwkJdXRfYSh0cnhfbl9wcmVwYXJlZCA+IDApOworCQl0cnhfbl9wcmVwYXJlZC0tOwor CX0KKwogCS8qIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCBtYWtlcyB0aGUgdHJhbnNhY3Rpb24g Y29tbWl0dGVkIGluIG1lbW9yeQogCWFuZCBtYWtlcyBpdHMgY2hhbmdlcyB0byBkYXRhIHZpc2li bGUgdG8gb3RoZXIgdHJhbnNhY3Rpb25zLgogCU5PVEUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIGRp c2NyZXBhbmN5IGZyb20gdGhlIHN0cmljdCBmb3JtYWwKQEAgLTE4NTcsNiArMTkyMSw3IEBAIHRy eF9wcmVwYXJlX29mZl9rZXJuZWwoCiAKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KIAl0cngtPmNvbmNfc3RhdGUgPSBUUlhfUFJFUEFSRUQ7CisJdHJ4X25fcHJl cGFyZWQrKzsKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAog CWlmIChsc24pIHsKQEAgLTIwMzEsMTAgKzIwOTYsMTEgQEAgdHJ4X2dldF90cnhfYnlfeGlkKAog CXdoaWxlICh0cngpIHsKIAkJLyogQ29tcGFyZSB0d28gWC9PcGVuIFhBIHRyYW5zYWN0aW9uIGlk J3M6IHRoZWlyCiAJCWxlbmd0aCBzaG91bGQgYmUgdGhlIHNhbWUgYW5kIGJpbmFyeSBjb21wYXJp c29uCi0JCW9mIGd0cmlkX2xlbmdodCticXVhbF9sZW5ndGggYnl0ZXMgc2hvdWxkIGJlCisJCW9m IGd0cmlkX2xlbmd0aCticXVhbF9sZW5ndGggYnl0ZXMgc2hvdWxkIGJlCiAJCXRoZSBzYW1lICov CiAKLQkJaWYgKHRyeC0+Y29uY19zdGF0ZSA9PSBUUlhfUFJFUEFSRUQKKwkJaWYgKHRyeC0+aXNf cmVjb3ZlcmVkCisJCSAgICAmJiB0cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVECiAJCSAg ICAmJiB4aWQtPmd0cmlkX2xlbmd0aCA9PSB0cngtPnhpZC5ndHJpZF9sZW5ndGgKIAkJICAgICYm IHhpZC0+YnF1YWxfbGVuZ3RoID09IHRyeC0+eGlkLmJxdWFsX2xlbmd0aAogCQkgICAgJiYgbWVt Y21wKHhpZC0+ZGF0YSwgdHJ4LT54aWQuZGF0YSwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9kYl9wbHVnaW4vdHJ4L3RyeDB1bmRvLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdp bi90cngvdHJ4MHVuZG8uYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTEz ODI0LWt4bTNwczd2bjB5cjMzcHQKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3RyeC90cngw dW5kby5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTM0MDI4LTMxb3k2 bDQ0N3psMDkxOWgKQEAgLTM2LDYgKzM2LDcgQEAgQ3JlYXRlZCAzLzI2LzE5OTYgSGVpa2tpIFR1 dXJpCiAjaW5jbHVkZSAidHJ4MHJzZWcuaCIKICNpbmNsdWRlICJ0cngwdHJ4LmgiCiAjaW5jbHVk ZSAic3J2MHNydi5oIgorI2luY2x1ZGUgInNydjBzdGFydC5oIgogI2luY2x1ZGUgInRyeDByZWMu aCIKICNpbmNsdWRlICJ0cngwcHVyZ2UuaCIKIApAQCAtMTk3Niw0ICsxOTc3LDMxIEBAIHRyeF91 bmRvX2luc2VydF9jbGVhbnVwKAogCiAJbXV0ZXhfZXhpdCgmKHJzZWctPm11dGV4KSk7CiB9CisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK0F0IHNodXRkb3duLCBmcmVlcyB0aGUgdW5kbyBsb2dzIG9mIGEg UFJFUEFSRUQgdHJhbnNhY3Rpb24uICovCitVTklWX0lOVEVSTgordm9pZAordHJ4X3VuZG9fZnJl ZV9wcmVwYXJlZCgKKy8qPT09PT09PT09PT09PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBp bi9vdXQ6IFBSRVBBUkVEIHRyYW5zYWN0aW9uICovCit7CisJbXV0ZXhfZW50ZXIoJnRyeC0+cnNl Zy0+bXV0ZXgpOworCisJdXRfYWQoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9F WElUX1RIUkVBRFMpOworCisJaWYgKHRyeC0+dXBkYXRlX3VuZG8pIHsKKwkJdXRfYSh0cngtPnVw ZGF0ZV91bmRvLT5zdGF0ZSA9PSBUUlhfVU5ET19QUkVQQVJFRCk7CisJCVVUX0xJU1RfUkVNT1ZF KHVuZG9fbGlzdCwgdHJ4LT5yc2VnLT51cGRhdGVfdW5kb19saXN0LAorCQkJICAgICAgIHRyeC0+ dXBkYXRlX3VuZG8pOworCQl0cnhfdW5kb19tZW1fZnJlZSh0cngtPnVwZGF0ZV91bmRvKTsKKwl9 CisJaWYgKHRyeC0+aW5zZXJ0X3VuZG8pIHsKKwkJdXRfYSh0cngtPmluc2VydF91bmRvLT5zdGF0 ZSA9PSBUUlhfVU5ET19QUkVQQVJFRCk7CisJCVVUX0xJU1RfUkVNT1ZFKHVuZG9fbGlzdCwgdHJ4 LT5yc2VnLT5pbnNlcnRfdW5kb19saXN0LAorCQkJICAgICAgIHRyeC0+aW5zZXJ0X3VuZG8pOwor CQl0cnhfdW5kb19tZW1fZnJlZSh0cngtPmluc2VydF91bmRvKTsKKwl9CisJbXV0ZXhfZXhpdCgm dHJ4LT5yc2VnLT5tdXRleCk7Cit9CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCgo= --===============1891718929== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # testament_sha1: d24118e16609b077a906078375216e33f2585ac7 # timestamp: 2011-04-11 18:02:12 +0300 # base_revision_id: vasil.dimov@stripped\ # kxm3ps7vn0yr33pt # # Begin bundle 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 --===============1891718929==--