From: marko.makela Date: April 7 2011 8:39pm Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3363) List-Archive: http://lists.mysql.com/commits/134995 Message-Id: <201104072039.p37KdhhT011703@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1843811876==" --===============1843811876== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBi ZzlwN2l5ZDU0bnMKCiAzMzYzIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDQtMDcgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEtaW5ub2RiIHRvIG15c3FsLTUuNS1pbm5vZGIuCgogICAgYWRkZWQ6 CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU5NjQxLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTY0MS50ZXN0CiAgICBt b2RpZmllZDoKICAgICAgY2xpZW50L215c3FsdGVzdC5jYwogICAgICBzcWwvc3FsX2NsYXNzLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFu ZGxlci9oYW5kbGVyMGFsdGVyLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngw dHJ4LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB1bmRvLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDBzeXMuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3Fs dGVzdC5jYycKLS0tIGEvY2xpZW50L215c3FsdGVzdC5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBiZzlwN2l5ZDU0bnMKKysrIGIvY2xpZW50L215c3Fs dGVzdC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNzIwMzg0NS1tcWM0 dmRncXQ1bnEwbjh3CkBAIC00NTk4LDEzICs0NTk4LDE0IEBAIHN0YXRpYyBpbnQgbXlfa2lsbChp bnQgcGlkLCBpbnQgc2lnKQogICBjb21tYW5kICBjYWxsZWQgY29tbWFuZAogCiAgIERFU0NSSVBU SU9OCi0gIHNodXRkb3duIFs8dGltZW91dD5dCisgIHNodXRkb3duX3NlcnZlciBbPHRpbWVvdXQ+ XQogCiAqLwogCiB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3RfY29tbWFuZCAqY29t bWFuZCkKIHsKLSAgaW50IHRpbWVvdXQ9NjAsIHBpZDsKKyAgbG9uZyB0aW1lb3V0PTYwOworICBp bnQgcGlkOwogICBEWU5BTUlDX1NUUklORyBkc19waWRmaWxlX25hbWU7CiAgIE1ZU1FMKiBteXNx bCA9ICZjdXJfY29uLT5teXNxbDsKICAgc3RhdGljIERZTkFNSUNfU1RSSU5HIGRzX3RpbWVvdXQ7 CkBAIC00NjE5LDggKzQ2MjAsOSBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3Rf Y29tbWFuCiAKICAgaWYgKGRzX3RpbWVvdXQubGVuZ3RoKQogICB7Ci0gICAgdGltZW91dD0gYXRv aShkc190aW1lb3V0LnN0cik7Ci0gICAgaWYgKHRpbWVvdXQgPT0gMCkKKyAgICBjaGFyKiBlbmRw dHI7CisgICAgdGltZW91dD0gc3RydG9sKGRzX3RpbWVvdXQuc3RyLCAmZW5kcHRyLCAxMCk7Cisg ICAgaWYgKCplbmRwdHIgIT0gJ1wwJykKICAgICAgIGRpZSgiSWxsZWdhbCBhcmd1bWVudCBmb3Ig dGltZW91dDogJyVzJyIsIGRzX3RpbWVvdXQuc3RyKTsKICAgfQogICBkeW5zdHJfZnJlZSgmZHNf dGltZW91dCk7CkBAIC00NjYyLDcgKzQ2NjQsNyBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihz dHJ1Y3Qgc3RfY29tbWFuCiAgICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJQcm9jZXNzICVkIGRv ZXMgbm90IGV4aXN0IGFueW1vcmUiLCBwaWQpKTsKICAgICAgIERCVUdfVk9JRF9SRVRVUk47CiAg ICAgfQotICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlNsZWVwaW5nLCB0aW1lb3V0OiAlZCIsIHRp bWVvdXQpKTsKKyAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJTbGVlcGluZywgdGltZW91dDogJWxk IiwgdGltZW91dCkpOwogICAgIG15X3NsZWVwKDEwMDAwMDBMKTsKICAgfQogCgo9PT0gYWRkZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0Jwot LS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQJMTk3 MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lu bm9kYl9idWc1OTY0MS5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0 MDcyMDM4NDUtbXFjNHZkZ3F0NW5xMG44dwpAQCAtMCwwICsxLDU3IEBACitDUkVBVEUgVEFCTEUg dChhIElOVCBQUklNQVJZIEtFWSwgYiBJTlQpRU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTKDIsMiksKDQsNCksKDgsOCksKDE2LDE2KSwoMzIsMzIpOworQ09NTUlUOworWEEgU1RB UlQgJzEyMyc7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygxLDEpOworWEEgRU5EICcxMjMnOworWEEg UFJFUEFSRSAnMTIzJzsKK1hBIFNUQVJUICc0NTYnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMyw0 NyksKDUsNjcpOworVVBEQVRFIHQgU0VUIGI9MipiIFdIRVJFIGEgQkVUV0VFTiA1IEFORCA4Owor WEEgRU5EICc0NTYnOworWEEgUFJFUEFSRSAnNDU2JzsKK1hBIFNUQVJUICc3ODknOworVVBEQVRF IHQgU0VUIGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQQVJFICc3ODkn OworY2FsbCBtdHIuYWRkX3N1cHByZXNzaW9uKCJGb3VuZCAzIHByZXBhcmVkIFhBIHRyYW5zYWN0 aW9ucyIpOworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVOQ09NTUlUVEVE OworU0VMRUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0NworNAk0Cis1CTEzNAorOAkx NgorMTYJMTYKKzMyCTEyOAorQ09NTUlUOworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZF TCBSRUFEIFVOQ09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0 NworNAk0Cis1CTEzNAorOAkxNgorMTYJMTYKKzMyCTEyOAorQ09NTUlUOworWEEgUkVDT1ZFUjsK K2Zvcm1hdElECWd0cmlkX2xlbmd0aAlicXVhbF9sZW5ndGgJZGF0YQorMQkzCTAJNzg5CisxCTMJ MAk0NTYKKzEJMwkwCTEyMworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFDSyAnNDU2JzsK K1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKK2EJYgorMgkyCis0CTQKKzgJOAor MTYJMTYKKzMyCTEyOAorRFJPUCBUQUJMRSB0OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3Vp dGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAw MAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTY0MS50ZXN0CXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA3MjAzODQ1LW1xYzR2ZGdxdDVucTBu OHcKQEAgLTAsMCArMSw2NiBAQAorIyBCdWcgIzU5NjQxIFByZXBhcmVkIFhBIHRyYW5zYWN0aW9u IGNhdXNlcyBzaHV0ZG93biBoYW5nIGFmdGVyIGEgY3Jhc2gKKworLS0gc291cmNlIGluY2x1ZGUv bm90X2VtYmVkZGVkLmluYworLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCisKK0NS RUFURSBUQUJMRSB0KGEgSU5UIFBSSU1BUlkgS0VZLCBiIElOVClFTkdJTkU9SW5ub0RCOworSU5T RVJUIElOVE8gdCBWQUxVRVMoMiwyKSwoNCw0KSwoOCw4KSwoMTYsMTYpLCgzMiwzMik7CitDT01N SVQ7CitYQSBTVEFSVCAnMTIzJzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDEsMSk7CitYQSBFTkQg JzEyMyc7CitYQSBQUkVQQVJFICcxMjMnOworCitDT05ORUNUIChjb24xLGxvY2FsaG9zdCxyb290 LCwpOworQ09OTkVDVElPTiBjb24xOworCitYQSBTVEFSVCAnNDU2JzsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTKDMsNDcpLCg1LDY3KTsKK1VQREFURSB0IFNFVCBiPTIqYiBXSEVSRSBhIEJFVFdFRU4g NSBBTkQgODsKK1hBIEVORCAnNDU2JzsKK1hBIFBSRVBBUkUgJzQ1Nic7CisKK0NPTk5FQ1QgKGNv bjIsbG9jYWxob3N0LHJvb3QsLCk7CitDT05ORUNUSU9OIGNvbjI7CisKK1hBIFNUQVJUICc3ODkn OworVVBEQVRFIHQgU0VUIGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQ QVJFICc3ODknOworCisjIFRoZSBzZXJ2ZXIgd291bGQgaXNzdWUgdGhpcyB3YXJuaW5nIG9uIHJl c3RhcnQuCitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJh bnNhY3Rpb25zIik7CisKKyMgS2lsbCB0aGUgc2VydmVyIHdpdGhvdXQgc2VuZGluZyBhIHNodXRk b3duIGNvbW1hbmQKKy0tIGV4ZWMgZWNobyAid2FpdCIgPiAkTVlTUUxURVNUX1ZBUkRJUi90bXAv bXlzcWxkLjEuZXhwZWN0CistLSBzaHV0ZG93bl9zZXJ2ZXIgMAorLS0gc291cmNlIGluY2x1ZGUv d2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5jCisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0g ZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBl Y3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0tIHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29u bmVjdGVkX2FnYWluLmluYworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVO Q09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworQ09NTUlUOworCisjIFNodXQgZG93biB0aGUg c2VydmVyLiBUaGlzIHdvdWxkIGhhbmcgYmVjYXVzZSBvZiB0aGUgYnVnLgorLS0gZXhlYyBlY2hv ICJ3YWl0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIHNodXRk b3duX3NlcnZlcgorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5j CisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0gZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNR TFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0t IHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYworCitTRVQgVFJB TlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9N IHQ7CitDT01NSVQ7CitYQSBSRUNPVkVSOworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFD SyAnNDU2JzsKK1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKKworRFJPUCBUQUJM RSB0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfY2xhc3MuY2MnCi0tLSBhL3NxbC9zcWxf Y2xhc3MuY2MJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNjExNDA1Ny1oeDBw Ymc5cDdpeWQ1NG5zCisrKyBiL3NxbC9zcWxfY2xhc3MuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MDcyMDM4NDUtbXFjNHZkZ3F0NW5xMG44dwpAQCAtMzY3NSw2ICszNjc1 LDcgQEAgYm9vbCB4aWRfY2FjaGVfaW5zZXJ0KFhJRCAqeGlkLCBlbnVtIHhhXwogICAgIHhzLT54 YV9zdGF0ZT14YV9zdGF0ZTsKICAgICB4cy0+eGlkLnNldCh4aWQpOwogICAgIHhzLT5pbl90aGQ9 MDsKKyAgICB4cy0+cm1fZXJyb3I9MDsKICAgICByZXM9bXlfaGFzaF9pbnNlcnQoJnhpZF9jYWNo ZSwgKHVjaGFyKil4cyk7CiAgIH0KICAgbXlzcWxfbXV0ZXhfdW5sb2NrKCZMT0NLX3hpZF9jYWNo ZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9k Yi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBiZzlwN2l5ZDU0bnMKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDQwNzIwMzg0NS1tcWM0dmRncXQ1bnEwbjh3CkBAIC02MjQ0LDEw ICs2MjQ0LDYgQEAgY3JlYXRlX3RhYmxlX2RlZigKIAlEQlVHX1BSSU5UKCJlbnRlciIsICgidGFi bGVfbmFtZTogJXMiLCB0YWJsZV9uYW1lKSk7CiAKIAl1dF9hKHRyeC0+bXlzcWxfdGhkICE9IE5V TEwpOwotCWlmIChJU19NQUdJQ19UQUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKHRhYmxlX25h bWUsCi0JCQkJCQkgIChUSEQqKSB0cngtPm15c3FsX3RoZCkpIHsKLQkJREJVR19SRVRVUk4oSEFf RVJSX0dFTkVSSUMpOwotCX0KIAogCS8qIE15U1FMIGRvZXMgdGhlIG5hbWUgbGVuZ3RoIGNoZWNr LiBCdXQgd2UgZG8gYWRkaXRpb25hbCBjaGVjawogCW9uIHRoZSBuYW1lIGxlbmd0aCBoZXJlICov CkBAIC02MzY4LDYgKzYzNjQsOCBAQCBlcnJfY29sOgogCQkJY29sX2xlbik7CiAJfQogCisJc3J2 X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOworCiAJZXJy b3IgPSByb3dfY3JlYXRlX3RhYmxlX2Zvcl9teXNxbCh0YWJsZSwgdHJ4KTsKIAogCWlmIChlcnJv ciA9PSBEQl9EVVBMSUNBVEVfS0VZKSB7CkBAIC02Nzg0LDM4ICs2NzgyLDE3IEBAIGhhX2lubm9i YXNlOjpjcmVhdGUoCiAJCURCVUdfUkVUVVJOKEhBX0VSUl9UT19CSUdfUk9XKTsKIAl9CiAKLQkv KiBHZXQgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0aGQsIG9y IGNyZWF0ZSBvbmUKLQlpZiBub3QgeWV0IGNyZWF0ZWQgKi8KLQotCXBhcmVudF90cnggPSBjaGVj a190cnhfZXhpc3RzKHRoZCk7Ci0KLQkvKiBJbiBjYXNlIE15U1FMIGNhbGxzIHRoaXMgaW4gdGhl IG1pZGRsZSBvZiBhIFNFTEVDVCBxdWVyeSwgcmVsZWFzZQotCXBvc3NpYmxlIGFkYXB0aXZlIGhh c2ggbGF0Y2ggdG8gYXZvaWQgZGVhZGxvY2tzIG9mIHRocmVhZHMgKi8KLQotCXRyeF9zZWFyY2hf bGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwYXJlbnRfdHJ4KTsKLQotCXRyeCA9IGlubm9iYXNl X3RyeF9hbGxvY2F0ZSh0aGQpOwotCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dl cl9jYXNlX3RhYmxlX25hbWVzOwotCiAJc3RyY3B5KG5hbWUyLCBuYW1lKTsKIAogCW5vcm1hbGl6 ZV90YWJsZV9uYW1lKG5vcm1fbmFtZSwgbmFtZTIpOwogCi0JLyogTGF0Y2ggdGhlIElubm9EQiBk YXRhIGRpY3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKLQlvciBsb2Nr IHdhaXRzIGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGEgdGFibGUgY3JlYXRlIG9wZXJhdGlvbi4K LQlEcm9wIHRhYmxlIGV0Yy4gZG8gdGhpcyBsYXRjaGluZyBpbiByb3cwbXlzcWwuYy4gKi8KLQot CXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwotCiAJLyogQ3JlYXRlIHRoZSB0 YWJsZSBkZWZpbml0aW9uIGluIElubm9EQiAqLwogCiAJZmxhZ3MgPSAwOwogCiAJLyogVmFsaWRh dGUgY3JlYXRlIG9wdGlvbnMgaWYgaW5ub2RiX3N0cmljdF9tb2RlIGlzIHNldC4gKi8KIAlpZiAo IWNyZWF0ZV9vcHRpb25zX2FyZV92YWxpZCh0aGQsIGZvcm0sIGNyZWF0ZV9pbmZvKSkgewotCQll cnJvciA9IEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTjsKLQkJZ290byBjbGVhbnVwOworCQlE QlVHX1JFVFVSTihFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04pOwogCX0KIAogCWlmIChjcmVh dGVfaW5mby0+a2V5X2Jsb2NrX3NpemUpIHsKQEAgLTY5NTcsMTYgKzY5MzQsMzcgQEAgaGFfaW5u b2Jhc2U6OmNyZWF0ZSgKIAogCS8qIENoZWNrIGZvciBuYW1lIGNvbmZsaWN0cyAod2l0aCByZXNl cnZlZCBuYW1lKSBmb3IKIAlhbnkgdXNlciBpbmRpY2VzIHRvIGJlIGNyZWF0ZWQuICovCi0JaWYg KGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQodHJ4LCBmb3JtLT5rZXlfaW5mbywKKwlp ZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh0aGQsIGZvcm0tPmtleV9pbmZvLAog CQkJCQkgICAgZm9ybS0+cy0+a2V5cykpIHsKLQkJZXJyb3IgPSAtMTsKLQkJZ290byBjbGVhbnVw OworCQlEQlVHX1JFVFVSTigtMSk7CisJfQorCisJaWYgKElTX01BR0lDX1RBQkxFX0FORF9VU0VS X0RFTklFRF9BQ0NFU1Mobm9ybV9uYW1lLCB0aGQpKSB7CisJCURCVUdfUkVUVVJOKEhBX0VSUl9H RU5FUklDKTsKIAl9CiAKIAlpZiAoY3JlYXRlX2luZm8tPm9wdGlvbnMgJiBIQV9MRVhfQ1JFQVRF X1RNUF9UQUJMRSkgewogCQlmbGFncyB8PSBESUNUX1RGMl9URU1QT1JBUlkgPDwgRElDVF9URjJf U0hJRlQ7CiAJfQogCisJLyogR2V0IHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhl IGN1cnJlbnQgdGhkLCBvciBjcmVhdGUgb25lCisJaWYgbm90IHlldCBjcmVhdGVkICovCisKKwlw YXJlbnRfdHJ4ID0gY2hlY2tfdHJ4X2V4aXN0cyh0aGQpOworCisJLyogSW4gY2FzZSBNeVNRTCBj YWxscyB0aGlzIGluIHRoZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKKwlwb3Nz aWJsZSBhZGFwdGl2ZSBoYXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzICov CisKKwl0cnhfc2VhcmNoX2xhdGNoX3JlbGVhc2VfaWZfcmVzZXJ2ZWQocGFyZW50X3RyeCk7CisK Kwl0cnggPSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodGhkKTsKKworCS8qIExhdGNoIHRoZSBJbm5v REIgZGF0YSBkaWN0aW9uYXJ5IGV4Y2x1c2l2ZWx5IHNvIHRoYXQgbm8gZGVhZGxvY2tzCisJb3Ig bG9jayB3YWl0cyBjYW4gaGFwcGVuIGluIGl0IGR1cmluZyBhIHRhYmxlIGNyZWF0ZSBvcGVyYXRp b24uCisJRHJvcCB0YWJsZSBldGMuIGRvIHRoaXMgbGF0Y2hpbmcgaW4gcm93MG15c3FsLmMuICov CisKKwlyb3dfbXlzcWxfbG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKKwogCWVycm9yID0gY3Jl YXRlX3RhYmxlX2RlZih0cngsIGZvcm0sIG5vcm1fbmFtZSwKIAkJY3JlYXRlX2luZm8tPm9wdGlv bnMgJiBIQV9MRVhfQ1JFQVRFX1RNUF9UQUJMRSA/IG5hbWUyIDogTlVMTCwKIAkJZmxhZ3MpOwpA QCAtNzIyMSwxNCArNzIxOSwxNCBAQCBoYV9pbm5vYmFzZTo6ZGVsZXRlX3RhYmxlKAogCiAJdHJ4 ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHRoZCk7CiAKLQlzcnZfbG93ZXJfY2FzZV90YWJsZV9u YW1lcyA9IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7Ci0KIAluYW1lX2xlbiA9IHN0cmxlbihuYW1l KTsKIAogCXV0X2EobmFtZV9sZW4gPCAxMDAwKTsKIAogCS8qIERyb3AgdGhlIHRhYmxlIGluIElu bm9EQiAqLwogCisJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxl X25hbWVzOworCiAJZXJyb3IgPSByb3dfZHJvcF90YWJsZV9mb3JfbXlzcWwobm9ybV9uYW1lLCB0 cngsCiAJCQkJCSB0aGRfc3FsX2NvbW1hbmQodGhkKQogCQkJCQkgPT0gU1FMQ09NX0RST1BfREIp OwpAQCAtNzM0NCw4ICs3MzQyLDYgQEAgaW5ub2Jhc2VfcmVuYW1lX3RhYmxlKAogCWNoYXIqCW5v cm1fdG87CiAJY2hhcioJbm9ybV9mcm9tOwogCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMg PSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOwotCiAJLy8gTWFnaWMgbnVtYmVyIDY0IGFyYml0cmFy eQogCW5vcm1fdG8gPSAoY2hhciopIG15X21hbGxvYyhzdHJsZW4odG8pICsgNjQsIE1ZRigwKSk7 CiAJbm9ybV9mcm9tID0gKGNoYXIqKSBteV9tYWxsb2Moc3RybGVuKGZyb20pICsgNjQsIE1ZRigw KSk7CkBAIC03MzYwLDYgKzczNTYsOCBAQCBpbm5vYmFzZV9yZW5hbWVfdGFibGUoCiAJCXJvd19t eXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCX0KIAorCXNydl9sb3dlcl9jYXNlX3Rh YmxlX25hbWVzID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKKwogCWVycm9yID0gcm93X3JlbmFt ZV90YWJsZV9mb3JfbXlzcWwoCiAJCW5vcm1fZnJvbSwgbm9ybV90bywgdHJ4LCBsb2NrX2FuZF9j b21taXQpOwogCkBAIC0xMDI2NSw3ICsxMDI2Myw3IEBAIGlubm9iYXNlX2NvbW1pdF9ieV94aWQo CiAKIAlpZiAodHJ4KSB7CiAJCWlubm9iYXNlX2NvbW1pdF9sb3codHJ4KTsKLQorCQl0cnhfZnJl ZV9mb3JfYmFja2dyb3VuZCh0cngpOwogCQlyZXR1cm4oWEFfT0spOwogCX0gZWxzZSB7CiAJCXJl dHVybihYQUVSX05PVEEpOwpAQCAtMTAyOTEsNyArMTAyODksOSBAQCBpbm5vYmFzZV9yb2xsYmFj a19ieV94aWQoCiAJdHJ4ID0gdHJ4X2dldF90cnhfYnlfeGlkKHhpZCk7CiAKIAlpZiAodHJ4KSB7 Ci0JCXJldHVybihpbm5vYmFzZV9yb2xsYmFja190cngodHJ4KSk7CisJCWludAlyZXQgPSBpbm5v YmFzZV9yb2xsYmFja190cngodHJ4KTsKKwkJdHJ4X2ZyZWVfZm9yX2JhY2tncm91bmQodHJ4KTsK KwkJcmV0dXJuKHJldCk7CiAJfSBlbHNlIHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7CiAJfQpAQCAt MTA5MjQsMTkgKzEwOTI0LDE5IEBAIHN0YXRpYyBpbnQgc2hvd19pbm5vZGJfdmFycyhUSEQgKnRo ZCwgU0gKICAgcmV0dXJuIDA7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGVhY2ggaW5kZXggbmFtZSBmb3IgYSB0YWJsZSBhZ2Fp bnN0IHJlc2VydmVkCi1zeXN0ZW0gZGVmYXVsdCBwcmltYXJ5IGluZGV4IG5hbWUgJ0dFTl9DTFVT VF9JTkRFWCcuIElmIGEgbmFtZSBtYXRjaGVzLAotdGhpcyBmdW5jdGlvbiBwdXNoZXMgYW4gd2Fy bmluZyBtZXNzYWdlIHRvIHRoZSBjbGllbnQsIGFuZCByZXR1cm5zIHRydWUuICovCitzeXN0ZW0g ZGVmYXVsdCBwcmltYXJ5IGluZGV4IG5hbWUgJ0dFTl9DTFVTVF9JTkRFWCcuIElmIGEgbmFtZQor bWF0Y2hlcywgdGhpcyBmdW5jdGlvbiBwdXNoZXMgYW4gd2FybmluZyBtZXNzYWdlIHRvIHRoZSBj bGllbnQsCithbmQgcmV0dXJucyB0cnVlLgorQHJldHVybiB0cnVlIGlmIHRoZSBpbmRleCBuYW1l IG1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KIGV4dGVybiAiQyIgVU5JVl9JTlRFUk4KIGJv b2wKIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCQkJCQkvKiBvdXQ6IHRydWUgaWYgYW4gaW5kZXggbmFtZQotCQkJCQlt YXRjaGVzIHRoZSByZXNlcnZlZCBuYW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJCS8qIGluOiBJ bm5vREIgdHJhbnNhY3Rpb24gaGFuZGxlICovCi0JY29uc3QgS0VZKglrZXlfaW5mbywJLyogaW46 IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwotCXVsaW50CQludW1fb2Zfa2V5cykJLyogaW46IE51 bWJlciBvZiBpbmRleGVzIHRvCisJVEhEKgkJdGhkLAkJLyohPCBpbi9vdXQ6IE15U1FMIGNvbm5l Y3Rpb24gKi8KKwljb25zdCBLRVkqCWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzIHRvIGJlIGNy ZWF0ZWQgKi8KKwl1bGludAkJbnVtX29mX2tleXMpCS8qITwgaW46IE51bWJlciBvZiBpbmRleGVz IHRvCiAJCQkJCWJlIGNyZWF0ZWQuICovCiB7CiAJY29uc3QgS0VZKglrZXk7CkBAIC0xMDk0OCw3 ICsxMDk0OCw3IEBAIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAJCWlmIChpbm5v YmFzZV9zdHJjYXNlY21wKGtleS0+bmFtZSwKIAkJCQkJaW5ub2Jhc2VfaW5kZXhfcmVzZXJ2ZV9u YW1lKSA9PSAwKSB7CiAJCQkvKiBQdXNoIHdhcm5pbmcgdG8gbXlzcWwgKi8KLQkJCXB1c2hfd2Fy bmluZ19wcmludGYoKFRIRCopIHRyeC0+bXlzcWxfdGhkLAorCQkJcHVzaF93YXJuaW5nX3ByaW50 Zih0aGQsCiAJCQkJCSAgICBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLAogCQkJCQkgICAg RVJfV1JPTkdfTkFNRV9GT1JfSU5ERVgsCiAJCQkJCSAgICAiQ2Fubm90IENyZWF0ZSBJbmRleCB3 aXRoIG5hbWUgIgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YV9pbm5vZGIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCXJl dmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTQwNTctaHgwcGJnOXA3aXlkNTRu cworKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDcyMDM4NDUtbXFjNHZkZ3F0NW5xMG44dwpAQCAtMzIx LDE1ICszMjEsMTQgQEAgaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKAogVGhpcyBmdW5jdGlvbiBjaGVj a3MgZWFjaCBpbmRleCBuYW1lIGZvciBhIHRhYmxlIGFnYWluc3QgcmVzZXJ2ZWQKIHN5c3RlbSBk ZWZhdWx0IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lCiBt YXRjaGVzLCB0aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNs aWVudCwKLWFuZCByZXR1cm5zIHRydWUuICovCithbmQgcmV0dXJucyB0cnVlLgorQHJldHVybiB0 cnVlIGlmIHRoZSBpbmRleCBuYW1lIG1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KIGV4dGVy biAiQyIKIGJvb2wKIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwotCQkJCQkvKiBvdXQ6IHRydWUgaWYgdGhlIGluZGV4IG5h bWUKLQkJCQkJbWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwotCWNvbnN0IHRyeF90Kgl0cngs CQkvKiBpbjogSW5ub0RCIHRyYW5zYWN0aW9uIGhhbmRsZSAqLwotCWNvbnN0IEtFWSoJa2V5X2lu Zm8sCS8qIGluOiBJbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KLQl1bGludAkJbnVtX29mX2tleXMp OwkvKiBpbjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KKwlUSEQqCQl0aGQsCQkvKiE8IGluL291dDog TXlTUUwgY29ubmVjdGlvbiAqLworCWNvbnN0IEtFWSoJa2V5X2luZm8sCS8qITwgaW46IEluZGV4 ZXMgdG8gYmUgY3JlYXRlZCAqLworCXVsaW50CQludW1fb2Zfa2V5cyk7CS8qITwgaW46IE51bWJl ciBvZiBpbmRleGVzIHRvCiAJCQkJCWJlIGNyZWF0ZWQuICovCiAKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6dmFzaWwuZGltb3ZAb3Jh Y2xlLmNvbS0yMDExMDQwNjExNDA1Ny1oeDBwYmc5cDdpeWQ1NG5zCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwNDA3MjAzODQ1LW1xYzR2ZGdxdDVucTBuOHcKQEAgLTY1Myw0NCArNjUzLDM3IEBA IGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAKIAl1cGRhdGVfdGhkKCk7CiAKLQloZWFwID0gbWVt X2hlYXBfY3JlYXRlKDEwMjQpOwotCiAJLyogSW4gY2FzZSBNeVNRTCBjYWxscyB0aGlzIGluIHRo ZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKIAlwb3NzaWJsZSBhZGFwdGl2ZSBo YXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzLiAqLwogCXRyeF9zZWFyY2hf bGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwcmVidWlsdC0+dHJ4KTsKLQl0cnhfc3RhcnRfaWZf bm90X3N0YXJ0ZWQocHJlYnVpbHQtPnRyeCk7Ci0KLQkvKiBDcmVhdGUgYSBiYWNrZ3JvdW5kIHRy YW5zYWN0aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgotCXRoZSBkYXRhIGRpY3Rpb25hcnkgdGFi bGVzLiAqLwotCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7Ci0JdHJ4X3N0 YXJ0X2lmX25vdF9zdGFydGVkKHRyeCk7CiAKIAlpbm5vZGJfdGFibGUgPSBpbmRleGVkX3RhYmxl CiAJCT0gZGljdF90YWJsZV9nZXQocHJlYnVpbHQtPnRhYmxlLT5uYW1lLCBGQUxTRSk7CiAKIAlp ZiAoVU5JVl9VTkxJS0VMWSghaW5ub2RiX3RhYmxlKSkgewotCQllcnJvciA9IEhBX0VSUl9OT19T VUNIX1RBQkxFOwotCQlnb3RvIGVycl9leGl0OworCQlEQlVHX1JFVFVSTihIQV9FUlJfTk9fU1VD SF9UQUJMRSk7CiAJfQogCiAJLyogQ2hlY2sgaWYgdGhlIGluZGV4IG5hbWUgaXMgcmVzZXJ2ZWQu ICovCi0JaWYgKGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQodHJ4LCBrZXlfaW5mbywg bnVtX29mX2tleXMpKSB7Ci0JCWVycm9yID0gLTE7Ci0JfSBlbHNlIHsKLQkJLyogQ2hlY2sgdGhh dCBpbmRleCBrZXlzIGFyZSBzZW5zaWJsZSAqLwotCQllcnJvciA9IGlubm9iYXNlX2NoZWNrX2lu ZGV4X2tleXMoa2V5X2luZm8sIG51bV9vZl9rZXlzLAotCQkJCQkJICBpbm5vZGJfdGFibGUpOwor CWlmIChpbm5vYmFzZV9pbmRleF9uYW1lX2lzX3Jlc2VydmVkKHVzZXJfdGhkLCBrZXlfaW5mbywg bnVtX29mX2tleXMpKSB7CisJCURCVUdfUkVUVVJOKC0xKTsKIAl9CiAKKwkvKiBDaGVjayB0aGF0 IGluZGV4IGtleXMgYXJlIHNlbnNpYmxlICovCisJZXJyb3IgPSBpbm5vYmFzZV9jaGVja19pbmRl eF9rZXlzKGtleV9pbmZvLCBudW1fb2Zfa2V5cywgaW5ub2RiX3RhYmxlKTsKKwogCWlmIChVTklW X1VOTElLRUxZKGVycm9yKSkgewotZXJyX2V4aXQ6Ci0JCW1lbV9oZWFwX2ZyZWUoaGVhcCk7Ci0J CXRyeF9nZW5lcmFsX3JvbGxiYWNrX2Zvcl9teXNxbCh0cngsIE5VTEwpOwotCQl0cnhfZnJlZV9m b3JfbXlzcWwodHJ4KTsKLQkJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CiAJ CURCVUdfUkVUVVJOKGVycm9yKTsKIAl9CiAKKwloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQp OworCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZChwcmVidWlsdC0+dHJ4KTsKKworCS8qIENyZWF0 ZSBhIGJhY2tncm91bmQgdHJhbnNhY3Rpb24gZm9yIHRoZSBvcGVyYXRpb25zIG9uCisJdGhlIGRh dGEgZGljdGlvbmFyeSB0YWJsZXMuICovCisJdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHVz ZXJfdGhkKTsKKwl0cnhfc3RhcnRfaWZfbm90X3N0YXJ0ZWQodHJ4KTsKKwogCS8qIENyZWF0ZSB0 YWJsZSBjb250YWluaW5nIGFsbCBpbmRleGVzIHRvIGJlIGJ1aWx0IGluIHRoaXMKIAlhbHRlciB0 YWJsZSBhZGQgaW5kZXggc28gdGhhdCB0aGV5IGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlcgogCWlu IHRoZSB0YWJsZS4gKi8KQEAgLTc2Miw4ICs3NTUsMTIgQEAgZXJyX2V4aXQ6CiAKIAkJCXV0X2Qo ZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxlLAogCQkJCQkJCSAg ICAgIEZBTFNFKSk7CisJCQltZW1faGVhcF9mcmVlKGhlYXApOworCQkJdHJ4X2dlbmVyYWxfcm9s bGJhY2tfZm9yX215c3FsKHRyeCwgTlVMTCk7CiAJCQlyb3dfbXlzcWxfdW5sb2NrX2RhdGFfZGlj dGlvbmFyeSh0cngpOwotCQkJZ290byBlcnJfZXhpdDsKKwkJCXRyeF9mcmVlX2Zvcl9teXNxbCh0 cngpOworCQkJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CisJCQlEQlVHX1JF VFVSTihlcnJvcik7CiAJCX0KIAogCQl0cngtPnRhYmxlX2lkID0gaW5kZXhlZF90YWJsZS0+aWQ7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaCcK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBiZzlwN2l5ZDU0bnMKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB0cnguaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDQwNzIwMzg0NS1tcWM0dmRncXQ1bnEwbjh3CkBAIC00NCw2ICs0NCw5IEBAIGV4dGVy biBzZXNzX3QqCXRyeF9kdW1teV9zZXNzOwogLyoqIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3Vy cmVudGx5IGFsbG9jYXRlZCBmb3IgTXlTUUw6IHByb3RlY3RlZCBieQogdGhlIGtlcm5lbCBtdXRl eCAqLwogZXh0ZXJuIHVsaW50CXRyeF9uX215c3FsX3RyYW5zYWN0aW9uczsKKy8qKiBOdW1iZXIg b2YgdHJhbnNhY3Rpb25zIGN1cnJlbnRseSBpbiB0aGUgWEEgUFJFUEFSRUQgc3RhdGU6IHByb3Rl Y3RlZCBieQordGhlIGtlcm5lbCBtdXRleCAqLworZXh0ZXJuIHVsaW50CXRyeF9uX3ByZXBhcmVk OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBSZWxlYXNlcyB0aGUgc2VhcmNoIGxhdGNoIGlmIHRyeCBo YXMgcmVzZXJ2ZWQgaXQuICovCkBAIC0xMDgsNiArMTExLDE0IEBAIHRyeF9mcmVlKAogLyo9PT09 PSovCiAJdHJ4X3QqCXRyeCk7CS8qITwgaW4sIG93bjogdHJ4IG9iamVjdCAqLwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorQXQgc2h1dGRvd24sIGZyZWVzIGEgdHJhbnNhY3Rpb24gb2JqZWN0IHRoYXQgaXMg aW4gdGhlIFBSRVBBUkVEIHN0YXRlLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF9mcmVlX3By ZXBhcmVkKAorLyo9PT09PT09PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbiwgb3duOiB0 cnggb2JqZWN0ICovCisJVU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIEZyZWVzIGEgdHJhbnNhY3Rpb24gb2JqZWN0IGZvciBNeVNRTC4gKi8KIFVO SVZfSU5URVJOCiB2b2lkCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3RyeDB1bmRvLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdW5kby5o CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTQwNTctaHgwcGJnOXA3aXlk NTRucworKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHVuZG8uaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNzIwMzg0NS1tcWM0dmRncXQ1bnEwbjh3CkBAIC0y OTYsNiArMjk2LDE1IEBAIHZvaWQKIHRyeF91bmRvX2luc2VydF9jbGVhbnVwKAogLyo9PT09PT09 PT09PT09PT09PT09PSovCiAJdHJ4X3QqCXRyeCk7CS8qITwgaW46IHRyYW5zYWN0aW9uIGhhbmRs ZSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitBdCBzaHV0ZG93biwgZnJlZXMgdGhlIHVuZG8gbG9n cyBvZiBhIFBSRVBBUkVEIHRyYW5zYWN0aW9uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF91 bmRvX2ZyZWVfcHJlcGFyZWQoCisvKj09PT09PT09PT09PT09PT09PT0qLworCXRyeF90Kgl0cngp CS8qITwgaW4vb3V0OiBQUkVQQVJFRCB0cmFuc2FjdGlvbiAqLworCVVOSVZfQ09MRCBfX2F0dHJp YnV0ZV9fKChub25udWxsKSk7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBQYXJzZXMgdGhlIHJlZG8gbG9nIGVudHJ5IG9mIGFuIHVuZG8gbG9nIHBhZ2UgaW5pdGlhbGl6 YXRpb24uCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5j JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDQwNjExNDA1Ny1oeDBwYmc5cDdpeWQ1NG5zCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDQwNzIwMzg0NS1tcWM0dmRncXQ1bnEwbjh3CkBAIC0zMTA5LDEyICszMTA5LDEzIEBAIGxvb3A6 CiAJCWdvdG8gbG9vcDsKIAl9CiAKLQkvKiBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBsb25nZXIg dHJhbnNhY3Rpb25zLiBXZSBuZWVkIHRoaXMgd2FpdCBldmVuCi0JZm9yIHRoZSAndmVyeSBmYXN0 JyBzaHV0ZG93biwgYmVjYXVzZSB0aGUgSW5ub0RCIGxheWVyIG1heSBoYXZlCi0JY29tbWl0dGVk IG9yIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBsb3NlIHRoZW0u ICovCisJLyogQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbG9uZ2VyIHRyYW5zYWN0aW9ucywgZXhj ZXB0IGZvcgorCVBSRVBBUkVEIG9uZXMuIFdlIG5lZWQgdGhpcyB3YWl0IGV2ZW4gZm9yIHRoZSAn dmVyeSBmYXN0JworCXNodXRkb3duLCBiZWNhdXNlIHRoZSBJbm5vREIgbGF5ZXIgbWF5IGhhdmUg Y29tbWl0dGVkIG9yCisJcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGFuZCB3ZSBkb24ndCB3YW50IHRv IGxvc2UgdGhlbS4gKi8KIAogCXNlcnZlcl9idXN5ID0gdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25z ID4gMAotCQl8fCBVVF9MSVNUX0dFVF9MRU4odHJ4X3N5cy0+dHJ4X2xpc3QpID4gMDsKKwkJfHwg VVRfTElTVF9HRVRfTEVOKHRyeF9zeXMtPnRyeF9saXN0KSA+IHRyeF9uX3ByZXBhcmVkOwogCW11 dGV4X2V4aXQoJmtlcm5lbF9tdXRleCk7CiAKIAlpZiAoc2VydmVyX2J1c3kgfHwgc3J2X2lzX2Fu eV9iYWNrZ3JvdW5kX3RocmVhZF9hY3RpdmUoKSkgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvdHJ4L3RyeDBzeXMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4 MHN5cy5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDYxMTQwNTctaHgwcGJn OXA3aXlkNTRucworKysgYi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwc3lzLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDcyMDM4NDUtbXFjNHZkZ3F0NW5xMG44dwpAQCAt MzcsNiArMzcsNyBAQCBDcmVhdGVkIDMvMjYvMTk5NiBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJ0 cngwcnNlZy5oIgogI2luY2x1ZGUgInRyeDB1bmRvLmgiCiAjaW5jbHVkZSAic3J2MHNydi5oIgor I2luY2x1ZGUgInNydjBzdGFydC5oIgogI2luY2x1ZGUgInRyeDBwdXJnZS5oIgogI2luY2x1ZGUg ImxvZzBsb2cuaCIKICNpbmNsdWRlICJsb2cwcmVjdi5oIgpAQCAtMTYxNywxMCArMTYxOCwxMiBA QCB2b2lkCiB0cnhfc3lzX2Nsb3NlKHZvaWQpCiAvKj09PT09PT09PT09PT09PSovCiB7CisJdHJ4 X3QqCQl0cng7CiAJdHJ4X3JzZWdfdCoJcnNlZzsKIAlyZWFkX3ZpZXdfdCoJdmlldzsKIAogCXV0 X2FkKHRyeF9zeXMgIT0gTlVMTCk7CisJdXRfYWQoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9T SFVURE9XTl9FWElUX1RIUkVBRFMpOwogCiAJLyogQ2hlY2sgdGhhdCBhbGwgcmVhZCB2aWV3cyBh cmUgY2xvc2VkIGV4Y2VwdCByZWFkIHZpZXcgb3duZWQKIAlieSBhIHB1cmdlLiAqLwpAQCAtMTY1 Miw2ICsxNjU1LDEzIEBAIHRyeF9zeXNfY2xvc2Uodm9pZCkKIAltZW1fZnJlZSh0cnhfZG91Ymxl d3JpdGUpOwogCXRyeF9kb3VibGV3cml0ZSA9IE5VTEw7CiAKKwkvKiBPbmx5IHByZXBhcmVkIHRy YW5zYWN0aW9ucyBtYXkgYmUgbGVmdCBpbiB0aGUgc3lzdGVtLiBGcmVlIHRoZW0uICovCisJdXRf YShVVF9MSVNUX0dFVF9MRU4odHJ4X3N5cy0+dHJ4X2xpc3QpID09IHRyeF9uX3ByZXBhcmVkKTsK KworCXdoaWxlICgodHJ4ID0gVVRfTElTVF9HRVRfRklSU1QodHJ4X3N5cy0+dHJ4X2xpc3QpKSAh PSBOVUxMKSB7CisJCXRyeF9mcmVlX3ByZXBhcmVkKHRyeCk7CisJfQorCiAJLyogVGhlcmUgY2Fu J3QgYmUgYW55IGFjdGl2ZSB0cmFuc2FjdGlvbnMuICovCiAJcnNlZyA9IFVUX0xJU1RfR0VUX0ZJ UlNUKHRyeF9zeXMtPnJzZWdfbGlzdCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3RyeC90cngwdHJ4LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cngu YwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBiZzlwN2l5 ZDU0bnMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNDA3MjAzODQ1LW1xYzR2ZGdxdDVucTBuOHcKQEAgLTUwLDYg KzUwLDkgQEAgVU5JVl9JTlRFUk4gc2Vzc190KgkJdHJ4X2R1bW15X3Nlc3MgPSBOVQogLyoqIE51 bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGFsbG9jYXRlZCBmb3IgTXlTUUw6IHByb3Rl Y3RlZCBieQogdGhlIGtlcm5lbCBtdXRleCAqLwogVU5JVl9JTlRFUk4gdWxpbnQJdHJ4X25fbXlz cWxfdHJhbnNhY3Rpb25zID0gMDsKKy8qIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5 IGluIHRoZSBYQSBQUkVQQVJFRCBzdGF0ZTogcHJvdGVjdGVkIGJ5Cit0aGUga2VybmVsIG11dGV4 ICovCitVTklWX0lOVEVSTiB1bGludAl0cnhfbl9wcmVwYXJlZCA9IDA7CiAKICNpZmRlZiBVTklW X1BGU19NVVRFWAogLyogS2V5IHRvIHJlZ2lzdGVyIHRoZSBtdXRleCB3aXRoIHBlcmZvcm1hbmNl IHNjaGVtYSAqLwpAQCAtMzM4LDYgKzM0MSw2MCBAQCB0cnhfZnJlZSgKIH0KIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgorQXQgc2h1dGRvd24sIGZyZWVzIGEgdHJhbnNhY3Rpb24gb2JqZWN0IHRoYXQgaXMg aW4gdGhlIFBSRVBBUkVEIHN0YXRlLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF9mcmVlX3By ZXBhcmVkKAorLyo9PT09PT09PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbiwgb3duOiB0 cnggb2JqZWN0ICovCit7CisJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKKwl1dF9h KHRyeC0+Y29uY19zdGF0ZSA9PSBUUlhfUFJFUEFSRUQpOworCXV0X2EodHJ4LT5tYWdpY19uID09 IFRSWF9NQUdJQ19OKTsKKworCS8qIFByZXBhcmVkIHRyYW5zYWN0aW9ucyBhcmUgc29ydCBvZiBh Y3RpdmU7IHRoZXkgYWxsb3cKKwlST0xMQkFDSyBhbmQgQ09NTUlUIG9wZXJhdGlvbnMuIEJlY2F1 c2UgdGhlIHN5c3RlbSBkb2VzIG5vdAorCWNvbnRhaW4gYW55IG90aGVyIHRyYW5zYWN0aW9ucyB0 aGFuIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBhdAorCXRoZSBzaHV0ZG93biBzdGFnZSBhbmQgYmVj YXVzZSBhIHRyYW5zYWN0aW9uIGNhbm5vdCBiZWNvbWUKKwlQUkVQQVJFRCB3aGlsZSBob2xkaW5n IGxvY2tzLCBpdCBpcyBzYWZlIHRvIHJlbGVhc2UgdGhlIGxvY2tzCisJaGVsZCBieSBQUkVQQVJF RCB0cmFuc2FjdGlvbnMgaGVyZSBhdCBzaHV0ZG93bi4qLworCWxvY2tfcmVsZWFzZV9vZmZfa2Vy bmVsKHRyeCk7CisKKwl0cnhfdW5kb19mcmVlX3ByZXBhcmVkKHRyeCk7CisKKwltdXRleF9mcmVl KCZ0cngtPnVuZG9fbXV0ZXgpOworCisJaWYgKHRyeC0+dW5kb19ub19hcnIpIHsKKwkJdHJ4X3Vu ZG9fYXJyX2ZyZWUodHJ4LT51bmRvX25vX2Fycik7CisJfQorCisJdXRfYShVVF9MSVNUX0dFVF9M RU4odHJ4LT5zaWduYWxzKSA9PSAwKTsKKwl1dF9hKFVUX0xJU1RfR0VUX0xFTih0cngtPnJlcGx5 X3NpZ25hbHMpID09IDApOworCisJdXRfYSh0cngtPndhaXRfbG9jayA9PSBOVUxMKTsKKwl1dF9h KFVUX0xJU1RfR0VUX0xFTih0cngtPndhaXRfdGhycykgPT0gMCk7CisKKwl1dF9hKCF0cngtPmhh c19zZWFyY2hfbGF0Y2gpOworCisJdXRfYSh0cngtPmRpY3Rfb3BlcmF0aW9uX2xvY2tfbW9kZSA9 PSAwKTsKKworCWlmICh0cngtPmxvY2tfaGVhcCkgeworCQltZW1faGVhcF9mcmVlKHRyeC0+bG9j a19oZWFwKTsKKwl9CisKKwlpZiAodHJ4LT5nbG9iYWxfcmVhZF92aWV3X2hlYXApIHsKKwkJbWVt X2hlYXBfZnJlZSh0cngtPmdsb2JhbF9yZWFkX3ZpZXdfaGVhcCk7CisJfQorCisJdXRfYShpYl92 ZWN0b3JfaXNfZW1wdHkodHJ4LT5hdXRvaW5jX2xvY2tzKSk7CisJaWJfdmVjdG9yX2ZyZWUodHJ4 LT5hdXRvaW5jX2xvY2tzKTsKKworCVVUX0xJU1RfUkVNT1ZFKHRyeF9saXN0LCB0cnhfc3lzLT50 cnhfbGlzdCwgdHJ4KTsKKworCW1lbV9mcmVlKHRyeCk7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IEZyZWVzIGEgdHJhbnNhY3Rpb24gb2JqZWN0IGZvciBNeVNRTC4gKi8KIFVOSVZfSU5URVJOCiB2 b2lkCkBAIC00NjcsNiArNTI0LDcgQEAgdHJ4X2xpc3RzX2luaXRfYXRfZGJfc3RhcnQodm9pZCkK IAkJCQkJaWYgKHNydl9mb3JjZV9yZWNvdmVyeSA9PSAwKSB7CiAKIAkJCQkJCXRyeC0+Y29uY19z dGF0ZSA9IFRSWF9QUkVQQVJFRDsKKwkJCQkJCXRyeF9uX3ByZXBhcmVkKys7CiAJCQkJCX0gZWxz ZSB7CiAJCQkJCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJCQkiSW5ub0RCOiBTaW5jZSIKQEAgLTU0 Myw2ICs2MDEsNyBAQCB0cnhfbGlzdHNfaW5pdF9hdF9kYl9zdGFydCh2b2lkKQogCiAJCQkJCQkJ dHJ4LT5jb25jX3N0YXRlCiAJCQkJCQkJCT0gVFJYX1BSRVBBUkVEOworCQkJCQkJCXRyeF9uX3By ZXBhcmVkKys7CiAJCQkJCQl9IGVsc2UgewogCQkJCQkJCWZwcmludGYoc3RkZXJyLAogCQkJCQkJ CQkiSW5ub0RCOiBTaW5jZSIKQEAgLTg3Nyw2ICs5MzYsMTEgQEAgdHJ4X2NvbW1pdF9vZmZfa2Vy bmVsKAogCXV0X2FkKHRyeC0+Y29uY19zdGF0ZSA9PSBUUlhfQUNUSVZFIHx8IHRyeC0+Y29uY19z dGF0ZSA9PSBUUlhfUFJFUEFSRUQpOwogCXV0X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7 CiAKKwlpZiAoVU5JVl9VTkxJS0VMWSh0cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVEKSkg eworCQl1dF9hKHRyeF9uX3ByZXBhcmVkID4gMCk7CisJCXRyeF9uX3ByZXBhcmVkLS07CisJfQor CiAJLyogVGhlIGZvbGxvd2luZyBhc3NpZ25tZW50IG1ha2VzIHRoZSB0cmFuc2FjdGlvbiBjb21t aXR0ZWQgaW4gbWVtb3J5CiAJYW5kIG1ha2VzIGl0cyBjaGFuZ2VzIHRvIGRhdGEgdmlzaWJsZSB0 byBvdGhlciB0cmFuc2FjdGlvbnMuCiAJTk9URSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgZGlzY3Jl cGFuY3kgZnJvbSB0aGUgc3RyaWN0IGZvcm1hbApAQCAtMTkwMSw2ICsxOTY1LDcgQEAgdHJ4X3By ZXBhcmVfb2ZmX2tlcm5lbCgKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwogCXRyeC0+Y29uY19zdGF0ZSA9IFRSWF9QUkVQQVJFRDsKKwl0cnhfbl9wcmVwYXJl ZCsrOwogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAJaWYg KGxzbikgewpAQCAtMjA3Nyw3ICsyMTQyLDggQEAgdHJ4X2dldF90cnhfYnlfeGlkKAogCQlvZiBn dHJpZF9sZW5ndGgrYnF1YWxfbGVuZ3RoIGJ5dGVzIHNob3VsZCBiZQogCQl0aGUgc2FtZSAqLwog Ci0JCWlmICh0cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVECisJCWlmICh0cngtPmlzX3Jl Y292ZXJlZAorCQkgICAgJiYgdHJ4LT5jb25jX3N0YXRlID09IFRSWF9QUkVQQVJFRAogCQkgICAg JiYgeGlkLT5ndHJpZF9sZW5ndGggPT0gdHJ4LT54aWQuZ3RyaWRfbGVuZ3RoCiAJCSAgICAmJiB4 aWQtPmJxdWFsX2xlbmd0aCA9PSB0cngtPnhpZC5icXVhbF9sZW5ndGgKIAkJICAgICYmIG1lbWNt cCh4aWQtPmRhdGEsIHRyeC0+eGlkLmRhdGEsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS90cngvdHJ4MHVuZG8uYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVu ZG8uYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA2MTE0MDU3LWh4MHBiZzlw N2l5ZDU0bnMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNzIwMzg0NS1tcWM0dmRncXQ1bnEwbjh3CkBAIC0z Niw2ICszNiw3IEBAIENyZWF0ZWQgMy8yNi8xOTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgInRy eDByc2VnLmgiCiAjaW5jbHVkZSAidHJ4MHRyeC5oIgogI2luY2x1ZGUgInNydjBzcnYuaCIKKyNp bmNsdWRlICJzcnYwc3RhcnQuaCIKICNpbmNsdWRlICJ0cngwcmVjLmgiCiAjaW5jbHVkZSAidHJ4 MHB1cmdlLmgiCiAKQEAgLTE5NzUsNCArMTk3NiwzMSBAQCB0cnhfdW5kb19pbnNlcnRfY2xlYW51 cCgKIAogCW11dGV4X2V4aXQoJihyc2VnLT5tdXRleCkpOwogfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CitBdCBzaHV0ZG93biwgZnJlZXMgdGhlIHVuZG8gbG9ncyBvZiBhIFBSRVBBUkVEIHRyYW5zYWN0 aW9uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF91bmRvX2ZyZWVfcHJlcGFyZWQoCisvKj09 PT09PT09PT09PT09PT09PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4vb3V0OiBQUkVQQVJFRCB0 cmFuc2FjdGlvbiAqLworeworCW11dGV4X2VudGVyKCZ0cngtPnJzZWctPm11dGV4KTsKKworCXV0 X2FkKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKTsKKwor CWlmICh0cngtPnVwZGF0ZV91bmRvKSB7CisJCXV0X2EodHJ4LT51cGRhdGVfdW5kby0+c3RhdGUg PT0gVFJYX1VORE9fUFJFUEFSRUQpOworCQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3QsIHRyeC0+ cnNlZy0+dXBkYXRlX3VuZG9fbGlzdCwKKwkJCSAgICAgICB0cngtPnVwZGF0ZV91bmRvKTsKKwkJ dHJ4X3VuZG9fbWVtX2ZyZWUodHJ4LT51cGRhdGVfdW5kbyk7CisJfQorCWlmICh0cngtPmluc2Vy dF91bmRvKSB7CisJCXV0X2EodHJ4LT5pbnNlcnRfdW5kby0+c3RhdGUgPT0gVFJYX1VORE9fUFJF UEFSRUQpOworCQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3QsIHRyeC0+cnNlZy0+aW5zZXJ0X3Vu ZG9fbGlzdCwKKwkJCSAgICAgICB0cngtPmluc2VydF91bmRvKTsKKwkJdHJ4X3VuZG9fbWVtX2Zy ZWUodHJ4LT5pbnNlcnRfdW5kbyk7CisJfQorCW11dGV4X2V4aXQoJnRyeC0+cnNlZy0+bXV0ZXgp OworfQogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwoK --===============1843811876== 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: 046334145951edf69d015c8663255098f70d124b # timestamp: 2011-04-07 23:39:36 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # hx0pbg9p7iyd54ns # # Begin bundle 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 WyaQsj/DhOc/8XckU4UJBBNc2oA= --===============1843811876==--