From: marko.makela Date: December 21 2010 12:50pm Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3396) List-Archive: http://lists.mysql.com/commits/127427 Message-Id: <201012211251.oBLCNQ6J001478@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2118133970==" --===============2118133970== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjYtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDEyMjEwMjQ3MTItbGNtNWo0 eXhibGJwd3lsNQoKIDMzOTYgTWFya28gTcOka2Vsw6QJMjAxMC0xMi0yMSBbbWVyZ2VdCiAgICAg IE1lcmdlIG15c3FsLTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIG1vZGlm aWVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGIudGVzdAogICAgICBzdG9yYWdlL2lubm9i YXNlL2J0ci9idHIwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvcm93MHVwZC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9k Yi9yL2lubm9kYi5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2Ri LnJlc3VsdAlyZXZpZDpqaW1teS55YW5nQG9yYWNsZS5jb20tMjAxMDEyMjEwMjQ3MTItbGNtNWo0 eXhibGJwd3lsNQorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi5yZXN1bHQJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjQ5NDEtdmQyZXh3NzM1bXdh MjBnNgpAQCAtMSw1ICsxLDggQEAKIGRyb3AgdGFibGUgaWYgZXhpc3RzIHQxLHQyLHQzLHQ0Owog ZHJvcCBkYXRhYmFzZSBpZiBleGlzdHMgbXlzcWx0ZXN0OworQ1JFQVRFIFRBQkxFIGJ1ZzU4OTEy IChhIEJMT0IsIGIgVEVYVCwgUFJJTUFSWSBLRVkoYSgxKSkpIEVOR0lORT1Jbm5vREI7CitJTlNF UlQgSU5UTyBidWc1ODkxMiBWQUxVRVMoUkVQRUFUKCdhJyw4MDAwKSxSRVBFQVQoJ2InLDgwMDAp KTsKK1VQREFURSBidWc1ODkxMiBTRVQgYT1SRVBFQVQoJ2EnLDc5OTkpOwogY3JlYXRlIHRhYmxl IHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0b19pbmNyZW1lbnQsIGNvZGUgdGlueWlu dCB1bnNpZ25lZCBub3QgbnVsbCwgbmFtZSBjaGFyKDIwKSBub3QgbnVsbCwgcHJpbWFyeSBrZXkg KGlkKSwga2V5IChjb2RlKSwgdW5pcXVlIChuYW1lKSkgZW5naW5lPWlubm9kYjsKIGluc2VydCBp bnRvIHQxIChjb2RlLCBuYW1lKSB2YWx1ZXMgKDEsICdUaW0nKSwgKDEsICdNb250eScpLCAoMiwg J0RhdmlkJyksICgyLCAnRXJpaycpLCAoMywgJ1Nhc2hhJyksICgzLCAnSmVyZW15JyksICg0LCAn TWF0dCcpOwogc2VsZWN0IGlkLCBjb2RlLCBuYW1lIGZyb20gdDEgb3JkZXIgYnkgaWQ7CkBAIC0x NjcwLDEwICsxNjczLDEwIEBAIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX2RlbGV0ZWRf b3IKIDcxCiBTRUxFQ1QgdmFyaWFibGVfdmFsdWUgLSBAaW5ub2RiX3Jvd3NfaW5zZXJ0ZWRfb3Jp ZyBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxfc3RhdHVzIFdIRVJFIExPV0VSKHZhcmlh YmxlX25hbWUpID0gJ2lubm9kYl9yb3dzX2luc2VydGVkJzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlu bm9kYl9yb3dzX2luc2VydGVkX29yaWcKLTEwNjUKKzEwNjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1 ZSAtIEBpbm5vZGJfcm93c191cGRhdGVkX29yaWcgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuZ2xv YmFsX3N0YXR1cyBXSEVSRSBMT1dFUih2YXJpYWJsZV9uYW1lKSA9ICdpbm5vZGJfcm93c191cGRh dGVkJzsKIHZhcmlhYmxlX3ZhbHVlIC0gQGlubm9kYl9yb3dzX3VwZGF0ZWRfb3JpZwotODY1Cis4 NjYKIFNFTEVDVCB2YXJpYWJsZV92YWx1ZSAtIEBpbm5vZGJfcm93X2xvY2tfd2FpdHNfb3JpZyBG Uk9NIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxfc3RhdHVzIFdIRVJFIExPV0VSKHZhcmlhYmxl X25hbWUpID0gJ2lubm9kYl9yb3dfbG9ja193YWl0cyc7CiB2YXJpYWJsZV92YWx1ZSAtIEBpbm5v ZGJfcm93X2xvY2tfd2FpdHNfb3JpZwogMApAQCAtMzE3MywzICszMTc2LDQgQEAgVmFyaWFibGVf bmFtZQlWYWx1ZQogSGFuZGxlcl91cGRhdGUJMQogVmFyaWFibGVfbmFtZQlWYWx1ZQogSGFuZGxl cl9kZWxldGUJMQorRFJPUCBUQUJMRSBidWc1ODkxMjsKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRl L2lubm9kYi90L2lubm9kYi50ZXN0CXJldmlkOmppbW15LnlhbmdAb3JhY2xlLmNvbS0yMDEwMTIy MTAyNDcxMi1sY201ajR5eGJsYnB3eWw1CisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3Qv aW5ub2RiLnRlc3QJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjQ5NDEt dmQyZXh3NzM1bXdhMjBnNgpAQCAtNDksNiArNDksMTUgQEAgZHJvcCB0YWJsZSBpZiBleGlzdHMg dDEsdDIsdDMsdDQ7CiBkcm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBteXNxbHRlc3Q7CiAtLWVuYWJs ZV93YXJuaW5ncwogCisjIEJ1ZyM1ODkxMiBJbm5vREIgdW5uZWNlc3NhcmlseSBhdm9pZHMgdXBk YXRlLWluLXBsYWNlIG9uIGNvbHVtbiBwcmVmaXhlcworQ1JFQVRFIFRBQkxFIGJ1ZzU4OTEyIChh IEJMT0IsIGIgVEVYVCwgUFJJTUFSWSBLRVkoYSgxKSkpIEVOR0lORT1Jbm5vREI7CitJTlNFUlQg SU5UTyBidWc1ODkxMiBWQUxVRVMoUkVQRUFUKCdhJyw4MDAwKSxSRVBFQVQoJ2InLDgwMDApKTsK K1VQREFURSBidWc1ODkxMiBTRVQgYT1SRVBFQVQoJ2EnLDc5OTkpOworIyBUaGUgYWJvdmUgc3Rh dGVtZW50cyB1c2VkIHRvIHRyaWdnZXIgYSBmYWlsdXJlIGR1cmluZyBwdXJnZSB3aGVuCisjIEJ1 ZyM1NTI4NCB3YXMgZml4ZWQgd2hpbGUgQnVnIzU4OTEyIHdhcyBub3QuIERlZmVyIHRoZSBEUk9Q IFRBQkxFLAorIyBzbyB0aGF0IHB1cmdlIGdldHMgYSBjaGFuY2UgdG8gcnVuIChhbmQgYSBkb3Vi bGUgZnJlZSBvZiB0aGUKKyMgb2ZmLXBhZ2UgY29sdW1uIGNhbiBiZSBkZXRlY3RlZCwgaWYgb25l IGlzIHRvIG9jY3VyLikKKwogIwogIyBTbWFsbCBiYXNpYyB0ZXN0IHdpdGggaWdub3JlCiAjCkBA IC0yNTQ4LDYgKzI1NTcsOSBAQCBTRVQgR0xPQkFMIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kg PSBACiAKIC0tIGVuYWJsZV9xdWVyeV9sb2cKIAorIyBDbGVhbiB1cCBhZnRlciB0aGUgQnVnIzU1 Mjg0L0J1ZyM1ODkxMiB0ZXN0IGNhc2UuCitEUk9QIFRBQkxFIGJ1ZzU4OTEyOworCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMKICMgUGxlYXNlLCBETyBOT1QgVE9VQ0ggdGhpcyBmaWxl IGFzIHdlbGwgYXMgdGhlIGlubm9kYi5yZXN1bHQgZmlsZS4gICAjCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNl L2J0ci9idHIwY3VyLmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEy LWxjbTVqNHl4YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQxLXZkMmV4dzczNW13YTIw ZzYKQEAgLTE4NzQsNyArMTg3NCw4IEBAIGJ0cl9jdXJfdXBkYXRlX2luX3BsYWNlKAogCQlOT1Qg Y2FsbCBpdCBpZiBpbmRleCBpcyBzZWNvbmRhcnkgKi8KIAogCQlpZiAoIWRpY3RfaW5kZXhfaXNf Y2x1c3QoaW5kZXgpCi0JCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShO VUxMLCBpbmRleCwgdXBkYXRlKSkgeworCQkgICAgfHwgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVs ZF9iaW5hcnkoTlVMTCwgTlVMTCwKKwkJCQkJCQlpbmRleCwgdXBkYXRlKSkgewogCiAJCQkvKiBS ZW1vdmUgcG9zc2libGUgaGFzaCBpbmRleCBwb2ludGVyIHRvIHRoaXMgcmVjb3JkICovCiAJCQli dHJfc2VhcmNoX3VwZGF0ZV9oYXNoX29uX2RlbGV0ZShjdXJzb3IpOwpAQCAtMjYyNiwyNyArMjYy NywyNCBAQCB1bGludAogYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBpbjogdW5kbyBsb2dn aW5nIGFuZCBsb2NraW5nIGZsYWdzICovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1 cnNvciAqLworCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1ZmZlciBibG9jayBv ZiB0aGUgcmVjb3JkICovCisJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiByZWNvcmQgKi8KKwlk aWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXggb2YgdGhlIHJlY29y ZCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMp ICovCiAJaWJvb2wJCXZhbCwJLyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJcXVlX3Rocl90Kgl0 aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIg Ki8KIHsKLQlkaWN0X2luZGV4X3QqCWluZGV4OwotCWJ1Zl9ibG9ja190KglibG9jazsKIAlyb2xs X3B0cl90CXJvbGxfcHRyOwogCXVsaW50CQllcnI7Ci0JcmVjX3QqCQlyZWM7CiAJcGFnZV96aXBf ZGVzX3QqCXBhZ2VfemlwOwogCXRyeF90KgkJdHJ4OwotCW1lbV9oZWFwX3QqCWhlYXAJCT0gTlVM TDsKLQl1bGludAkJb2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJWkVdOwotCXVsaW50KgkJb2Zm c2V0cwkJPSBvZmZzZXRzXzsKLQlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKIAotCXJlYyA9IGJ0 cl9jdXJfZ2V0X3JlYyhjdXJzb3IpOwotCWluZGV4ID0gY3Vyc29yLT5pbmRleDsKKwl1dF9hZChk aWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVj LCBpbmRleCwgb2Zmc2V0cykpOwogCXV0X2FkKCEhcGFnZV9yZWNfaXNfY29tcChyZWMpID09IGRp Y3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKTsKLQlvZmZzZXRzID0gcmVjX2dldF9vZmZz ZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCXV0X2Fk KGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spID09IHBhZ2VfYWxpZ24ocmVjKSk7CisJdXRfYWQo cGFnZV9pc19sZWFmKHBhZ2VfYWxpZ24ocmVjKSkpOwogCiAjaWZkZWYgVU5JVl9ERUJVRwogCWlm IChidHJfY3VyX3ByaW50X3JlY29yZF9vcHMgJiYgdGhyKSB7CkBAIC0yNjU4LDEzICsyNjU2LDEy IEBAIGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKIAl1dF9hZChkaWN0X2luZGV4X2lz X2NsdXN0KGluZGV4KSk7CiAJdXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgcmVjX29m ZnNfY29tcChvZmZzZXRzKSkpOwogCi0JZXJyID0gbG9ja19jbHVzdF9yZWNfbW9kaWZ5X2NoZWNr X2FuZF9sb2NrKGZsYWdzLAotCQkJCQkJICAgYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKSwKKwll cnIgPSBsb2NrX2NsdXN0X3JlY19tb2RpZnlfY2hlY2tfYW5kX2xvY2soZmxhZ3MsIGJsb2NrLAog CQkJCQkJICAgcmVjLCBpbmRleCwgb2Zmc2V0cywgdGhyKTsKIAogCWlmIChlcnIgIT0gREJfU1VD Q0VTUykgewogCi0JCWdvdG8gZnVuY19leGl0OworCQlyZXR1cm4oZXJyKTsKIAl9CiAKIAllcnIg PSB0cnhfdW5kb19yZXBvcnRfcm93X29wZXJhdGlvbihmbGFncywgVFJYX1VORE9fTU9ESUZZX09Q LCB0aHIsCkBAIC0yNjcyLDExICsyNjY5LDkgQEAgYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3Rf cmVjKAogCQkJCQkgICAgJnJvbGxfcHRyKTsKIAlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKIAot CQlnb3RvIGZ1bmNfZXhpdDsKKwkJcmV0dXJuKGVycik7CiAJfQogCi0JYmxvY2sgPSBidHJfY3Vy X2dldF9ibG9jayhjdXJzb3IpOwotCiAJaWYgKGJsb2NrLT5pc19oYXNoZWQpIHsKIAkJcndfbG9j a194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCX0KQEAgLTI2OTksMTAgKzI2OTQsNiBAQCBi dHJfY3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoCiAJYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1 c3RfcmVjX2xvZyhmbGFncywgcmVjLCBpbmRleCwgdmFsLCB0cngsCiAJCQkJCSAgIHJvbGxfcHRy LCBtdHIpOwogCi1mdW5jX2V4aXQ6Ci0JaWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKLQkJ bWVtX2hlYXBfZnJlZShoZWFwKTsKLQl9CiAJcmV0dXJuKGVycik7CiB9CiAKQEAgLTM3NTgsMTA4 ICszNzQ5LDM2IEBAIGJ0cl9jdXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmllbGQoCiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotTWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBhcyBub3Qt b3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVkIHRvIHRo ZSB1cGRhdGVkIHJlY29yZCB3aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhlCitNYXJr cyBub24tdXBkYXRlZCBvZmYtcGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQu IFRoZSBvd25lcnNoaXAKK211c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQgcmVjb3Jk IHdoaWNoIGlzIGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIEluIHB1cmdl IG9ubHkgdGhlIG93bmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93ZWQKLXRv IGZyZWUgdGhlIGZpZWxkLgotQHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdhcyB0cmFu c2ZlcnJlZCAqLwordG8gZnJlZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ0 cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KK3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9maWVsZHMo CisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190KglwYWdl X3ppcCwvKiE8IGluL291dDogY29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3NlZAogCQkJ CXBhcnQgd2lsbCBiZSB1cGRhdGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8qITwgaW4v b3V0OiByZWNvcmQgaW4gYSBjbHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4 LAkvKiE8IGluOiBpbmRleCBvZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZzZXRzLC8q ITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29uc3QgdXBk X3QqCXVwZGF0ZSwJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtdHIsIG9yIE5VTEwgaWYgbm90IGxvZ2dlZCAqLworCW10cl90KgkJbXRyKQkvKiE8IGlu L291dDogbWluaS10cmFuc2FjdGlvbiAqLwogewotCXVsaW50CW47Ci0JdWxpbnQJajsKIAl1bGlu dAlpOwotCWlib29sCWNoYW5nZV9vd25lcnNoaXAgPSBGQUxTRTsKIAotCXV0X2FkKHJlY19vZmZz X3ZhbGlkYXRlKHJlYywgTlVMTCwgb2Zmc2V0cykpOworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRl KHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIAl1dF9hZCghcmVjX29mZnNfY29tcChvZmZzZXRzKSB8 fCAhcmVjX2dldF9ub2RlX3B0cl9mbGFnKHJlYykpOworCXV0X2FkKHJlY19vZmZzX2FueV9leHRl cm4ob2Zmc2V0cykpOworCXV0X2FkKG10cik7CiAKLQlpZiAoIXJlY19vZmZzX2FueV9leHRlcm4o b2Zmc2V0cykpIHsKLQotCQlyZXR1cm4oRkFMU0UpOwotCX0KLQotCW4gPSByZWNfb2Zmc19uX2Zp ZWxkcyhvZmZzZXRzKTsKLQotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJaWYgKHJlY19v ZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKLQotCQkJLyogQ2hlY2sgaXQgaXMgbm90IGlu IHVwZGF0ZWQgZmllbGRzICovCi0KLQkJCWlmICh1cGRhdGUpIHsKLQkJCQlmb3IgKGogPSAwOyBq IDwgdXBkX2dldF9uX2ZpZWxkcyh1cGRhdGUpOwotCQkJCSAgICAgaisrKSB7Ci0JCQkJCWlmICh1 cGRfZ2V0X250aF9maWVsZCh1cGRhdGUsIGopCi0JCQkJCSAgICAtPmZpZWxkX25vID09IGkpIHsK LQotCQkJCQkJZ290byB1cGRhdGVkOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCisJZm9yIChpID0g MDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZz X250aF9leHRlcm4ob2Zmc2V0cywgaSkKKwkJICAgICYmICF1cGRfZ2V0X2ZpZWxkX2J5X2ZpZWxk X25vKHVwZGF0ZSwgaSkpIHsKIAkJCWJ0cl9jdXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmll bGQoCiAJCQkJcGFnZV96aXAsIHJlYywgaW5kZXgsIG9mZnNldHMsIGksIEZBTFNFLCBtdHIpOwot Ci0JCQljaGFuZ2Vfb3duZXJzaGlwID0gVFJVRTsKLXVwZGF0ZWQ6Ci0JCQk7CiAJCX0KIAl9Ci0K LQlyZXR1cm4oY2hhbmdlX293bmVyc2hpcCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotVGhlIGNv bXBsZW1lbnQgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUgZW50cnkgbWF5 IGluaGVyaXQKLXNvbWUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSByZWNvcmQuIFdl IG11c3QgbWFyayB0aGVtIGFzIGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUg bm90IGZyZWVkIGluIGEgcm9sbGJhY2suICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl9t YXJrX2R0dXBsZV9pbmhlcml0ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5 IHRvIGJlCi0JCQkJCWluc2VydGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNvbnN0IHVwZF90 Kgl1cGRhdGUpCQkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi17Ci0JdWxpbnQJCWk7Ci0KLQlm b3IgKGkgPSAwOyBpIDwgZHR1cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSk7IGkrKykgewotCi0JCWRm aWVsZF90KglkZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7Ci0JCWJ5dGUq CQlkYXRhOwotCQl1bGludAkJbGVuOwotCQl1bGludAkJajsKLQotCQlpZiAoIWRmaWVsZF9pc19l eHQoZGZpZWxkKSkgewotCQkJY29udGludWU7Ci0JCX0KLQotCQkvKiBDaGVjayBpZiBpdCBpcyBp biB1cGRhdGVkIGZpZWxkcyAqLwotCi0JCWZvciAoaiA9IDA7IGogPCB1cGRfZ2V0X25fZmllbGRz KHVwZGF0ZSk7IGorKykgewotCQkJaWYgKHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgaiktPmZp ZWxkX25vID09IGkpIHsKLQotCQkJCWdvdG8gaXNfdXBkYXRlZDsKLQkJCX0KLQkJfQotCi0JCWRh dGEgPSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKTsKLQkJbGVuID0gZGZpZWxkX2dldF9sZW4oZGZp ZWxkKTsKLQkJZGF0YVtsZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFICsgQlRSX0VYVEVS Tl9MRU5dCi0JCQl8PSBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHOwotCi1pc191cGRhdGVkOgot CQk7Ci0JfQogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTM4OTYsMjkgKzM4MTUsNiBAQCBidHJf Y3VyX3VubWFya19leHRlcm5fZmllbGRzKAogCQl9CiAJfQogfQotCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LU1hcmtzIGFsbCBleHRlcm4gZmllbGRzIGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5IHRoZSByZWNv cmQuICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl91bm1hcmtfZHR1cGxlX2V4dGVybl9m aWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVwbGVfdCoJ ZW50cnkpCQkvKiE8IGluL291dDogY2x1c3RlcmVkIGluZGV4IGVudHJ5ICovCi17Ci0JdWxpbnQJ aTsKLQotCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KTsgaSsrKSB7 Ci0JCWRmaWVsZF90KiBkZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7Ci0K LQkJaWYgKGRmaWVsZF9pc19leHQoZGZpZWxkKSkgewotCQkJYnl0ZSoJZGF0YSA9IGRmaWVsZF9n ZXRfZGF0YShkZmllbGQpOwotCQkJdWxpbnQJbGVuID0gZGZpZWxkX2dldF9sZW4oZGZpZWxkKTsK LQotCQkJZGF0YVtsZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFICsgQlRSX0VYVEVSTl9M RU5dCi0JCQkJJj0gfkJUUl9FWFRFUk5fT1dORVJfRkxBRzsKLQkJfQotCX0KLX0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBGbGFncyB0aGUgZGF0YSB0dXBsZSBmaWVsZHMgdGhhdCBhcmUgbWFya2VkIGFz IGV4dGVybiBzdG9yYWdlIGluIHRoZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idHIwY3VyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIw Y3VyLmgJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEyLWxjbTVqNHl4 YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3MzVtd2EyMGc2CkBA IC0zMzMsMTAgKzMzMywxNCBAQCB1bGludAogYnRyX2N1cl9kZWxfbWFya19zZXRfY2x1c3RfcmVj KAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVsaW50CQlmbGFncywJLyohPCBp bjogdW5kbyBsb2dnaW5nIGFuZCBsb2NraW5nIGZsYWdzICovCi0JYnRyX2N1cl90KgljdXJzb3Is CS8qITwgaW46IGN1cnNvciAqLworCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbi9vdXQ6IGJ1 ZmZlciBibG9jayBvZiB0aGUgcmVjb3JkICovCisJcmVjX3QqCQlyZWMsCS8qITwgaW4vb3V0OiBy ZWNvcmQgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBjbHVzdGVyZWQgaW5kZXgg b2YgdGhlIHJlY29yZCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IHJlY19nZXRf b2Zmc2V0cyhyZWMpICovCiAJaWJvb2wJCXZhbCwJLyohPCBpbjogdmFsdWUgdG8gc2V0ICovCiAJ cXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwotCW10cl90KgkJbXRyKTsJ LyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgYSBzZWNvbmRhcnkgaW5kZXggcmVjb3Jk IGRlbGV0ZSBtYXJrIHRvIFRSVUUgb3IgRkFMU0UuCiBAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xP Q0tfV0FJVCwgb3IgZXJyb3IgbnVtYmVyICovCkBAIC00NzEsNDAgKzQ3NSwyMiBAQCBidHJfZXN0 aW1hdGVfbnVtYmVyX29mX2RpZmZlcmVudF9rZXlfdmFsCiAvKj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjogaW5k ZXggKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgotTWFya3Mgbm90IHVwZGF0ZWQgZXh0ZXJuIGZpZWxkcyBh cyBub3Qtb3duZWQgYnkgdGhpcyByZWNvcmQuIFRoZSBvd25lcnNoaXAKLWlzIHRyYW5zZmVycmVk IHRvIHRoZSB1cGRhdGVkIHJlY29yZCB3aGljaCBpcyBpbnNlcnRlZCBlbHNld2hlcmUgaW4gdGhl CitNYXJrcyBub24tdXBkYXRlZCBvZmYtcGFnZSBmaWVsZHMgYXMgZGlzb3duZWQgYnkgdGhpcyBy ZWNvcmQuIFRoZSBvd25lcnNoaXAKK211c3QgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHVwZGF0ZWQg cmVjb3JkIHdoaWNoIGlzIGluc2VydGVkIGVsc2V3aGVyZSBpbiB0aGUKIGluZGV4IHRyZWUuIElu IHB1cmdlIG9ubHkgdGhlIG93bmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkIGlzIGFsbG93 ZWQKLXRvIGZyZWUgdGhlIGZpZWxkLgotQHJldHVybiBUUlVFIGlmIEJMT0Igb3duZXJzaGlwIHdh cyB0cmFuc2ZlcnJlZCAqLwordG8gZnJlZSB0aGUgZmllbGQuICovCiBVTklWX0lOVEVSTgotaWJv b2wKLWJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygKLS8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ki8KK3ZvaWQKK2J0cl9jdXJfZGlzb3duX2luaGVyaXRlZF9m aWVsZHMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXBhZ2VfemlwX2Rlc190 KglwYWdlX3ppcCwvKiE8IGluL291dDogY29tcHJlc3NlZCBwYWdlIHdob3NlIHVuY29tcHJlc3Nl ZAogCQkJCXBhcnQgd2lsbCBiZSB1cGRhdGVkLCBvciBOVUxMICovCiAJcmVjX3QqCQlyZWMsCS8q ITwgaW4vb3V0OiByZWNvcmQgaW4gYSBjbHVzdGVyZWQgaW5kZXggKi8KIAlkaWN0X2luZGV4X3Qq CWluZGV4LAkvKiE8IGluOiBpbmRleCBvZiB0aGUgcGFnZSAqLwogCWNvbnN0IHVsaW50KglvZmZz ZXRzLC8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAJY29u c3QgdXBkX3QqCXVwZGF0ZSwJLyohPCBpbjogdXBkYXRlIHZlY3RvciAqLwotCW10cl90KgkJbXRy KTsJLyohPCBpbjogbXRyLCBvciBOVUxMIGlmIG5vdCBsb2dnZWQgKi8KLS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgotVGhlIGNvbXBsZW1lbnQgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9uOiBpbiBhbiB1cGRhdGUg ZW50cnkgbWF5IGluaGVyaXQKLXNvbWUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGRzIGZyb20gYSBy ZWNvcmQuIFdlIG11c3QgbWFyayB0aGVtIGFzIGluaGVyaXRlZAotaW4gZW50cnksIHNvIHRoYXQg dGhleSBhcmUgbm90IGZyZWVkIGluIGEgcm9sbGJhY2suICovCi1VTklWX0lOVEVSTgotdm9pZAot YnRyX2N1cl9tYXJrX2R0dXBsZV9pbmhlcml0ZWRfZXh0ZXJuKAotLyo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLwotCWR0dXBsZV90KgllbnRyeSwJCS8qITwgaW4vb3V0OiB1cGRh dGVkIGVudHJ5IHRvIGJlCi0JCQkJCWluc2VydGVkIHRvIGNsdXN0ZXJlZCBpbmRleCAqLwotCWNv bnN0IHVwZF90Kgl1cGRhdGUpOwkvKiE8IGluOiB1cGRhdGUgdmVjdG9yICovCi0vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKLU1hcmtzIGFsbCBleHRlcm4gZmllbGRzIGluIGEgZHR1cGxlIGFzIG93bmVkIGJ5IHRo ZSByZWNvcmQuICovCi1VTklWX0lOVEVSTgotdm9pZAotYnRyX2N1cl91bm1hcmtfZHR1cGxlX2V4 dGVybl9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlkdHVw bGVfdCoJZW50cnkpOwkJLyohPCBpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRleCBlbnRyeSAqLworCW10 cl90KgkJbXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRl X18oKG5vbm51bGwoMiwzLDQsNSw2KSkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTdG9yZXMgdGhlIGZp ZWxkcyBpbiBiaWdfcmVjX3ZlYyB0byB0aGUgdGFibGVzcGFjZSBhbmQgcHV0cyBwb2ludGVycyB0 bwogdGhlbSBpbiByZWMuICBUaGUgZXh0ZXJuIGZsYWdzIGluIHJlYyB3aWxsIGhhdmUgdG8gYmUg c2V0IGJlZm9yZWhhbmQuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2RhdGEwZGF0YS5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRh LmgJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEyLWxjbTVqNHl4Ymxi cHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5oCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAxMjIxMTI0OTQxLXZkMmV4dzczNW13YTIwZzYKQEAg LTE1NCwxNCArMTU0LDE5IEBAIGRmaWVsZF9kdXAoCiAJZGZpZWxkX3QqCWZpZWxkLAkvKiE8IGlu L291dDogZGF0YSBmaWVsZCAqLwogCW1lbV9oZWFwX3QqCWhlYXApOwkvKiE8IGluOiBtZW1vcnkg aGVhcCB3aGVyZSBhbGxvY2F0ZWQgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1UZXN0cyBpZiBkYXRh IGxlbmd0aCBhbmQgY29udGVudCBpcyBlcXVhbCBmb3IgdHdvIGRmaWVsZHMuCi1AcmV0dXJuCVRS VUUgaWYgZXF1YWwgKi8KK1Rlc3RzIGlmIHR3byBkYXRhIGZpZWxkcyBhcmUgZXF1YWwuCitJZiBs ZW49PTAsIHRlc3RzIHRoZSBkYXRhIGxlbmd0aCBhbmQgY29udGVudCBmb3IgZXF1YWxpdHkuCitJ ZiBsZW4+MCwgdGVzdHMgdGhlIGZpcnN0IGxlbiBieXRlcyBvZiB0aGUgY29udGVudCBmb3IgZXF1 YWxpdHkuCitAcmV0dXJuCVRSVUUgaWYgYm90aCBmaWVsZHMgYXJlIE5VTEwgb3IgaWYgdGhleSBh cmUgZXF1YWwgKi8KIFVOSVZfSU5MSU5FCiBpYm9vbAogZGZpZWxkX2RhdGFzX2FyZV9iaW5hcnlf ZXF1YWwoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAljb25zdCBkZmllbGRfdCoJ ZmllbGQxLAkvKiE8IGluOiBmaWVsZCAqLwotCWNvbnN0IGRmaWVsZF90KglmaWVsZDIpOy8qITwg aW46IGZpZWxkICovCisJY29uc3QgZGZpZWxkX3QqCWZpZWxkMiwJLyohPCBpbjogZmllbGQgKi8K Kwl1bGludAkJbGVuKQkvKiE8IGluOiBtYXhpbXVtIHByZWZpeCB0byBjb21wYXJlLAorCQkJCW9y IDAgdG8gY29tcGFyZSB0aGUgd2hvbGUgZmllbGQgbGVuZ3RoICovCisJX19hdHRyaWJ1dGVfXygo bm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVGVzdHMg aWYgZGZpZWxkIGRhdGEgbGVuZ3RoIGFuZCBjb250ZW50IGlzIGVxdWFsIHRvIHRoZSBnaXZlbi4K IEByZXR1cm4JVFJVRSBpZiBlcXVhbCAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9kYXRhMGRhdGEuaWMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEy LWxjbTVqNHl4YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0 YS5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3 MzVtd2EyMGc2CkBAIC0yMjksMjAgKzIyOSwzMCBAQCBkZmllbGRfZHVwKAogfQogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgotVGVzdHMgaWYgZGF0YSBsZW5ndGggYW5kIGNvbnRlbnQgaXMgZXF1YWwgZm9y IHR3byBkZmllbGRzLgotQHJldHVybglUUlVFIGlmIGVxdWFsICovCitUZXN0cyBpZiB0d28gZGF0 YSBmaWVsZHMgYXJlIGVxdWFsLgorSWYgbGVuPT0wLCB0ZXN0cyB0aGUgZGF0YSBsZW5ndGggYW5k IGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorSWYgbGVuPjAsIHRlc3RzIHRoZSBmaXJzdCBsZW4gYnl0 ZXMgb2YgdGhlIGNvbnRlbnQgZm9yIGVxdWFsaXR5LgorQHJldHVybglUUlVFIGlmIGJvdGggZmll bGRzIGFyZSBOVUxMIG9yIGlmIHRoZXkgYXJlIGVxdWFsICovCiBVTklWX0lOTElORQogaWJvb2wK IGRmaWVsZF9kYXRhc19hcmVfYmluYXJ5X2VxdWFsKAogLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJY29uc3QgZGZpZWxkX3QqCWZpZWxkMSwJLyohPCBpbjogZmllbGQgKi8KLQljb25z dCBkZmllbGRfdCoJZmllbGQyKQkvKiE8IGluOiBmaWVsZCAqLworCWNvbnN0IGRmaWVsZF90Kglm aWVsZDIsCS8qITwgaW46IGZpZWxkICovCisJdWxpbnQJCWxlbikJLyohPCBpbjogbWF4aW11bSBw cmVmaXggdG8gY29tcGFyZSwKKwkJCQlvciAwIHRvIGNvbXBhcmUgdGhlIHdob2xlIGZpZWxkIGxl bmd0aCAqLwogewotCXVsaW50CWxlbjsKKwl1bGludAlsZW4yID0gbGVuOwogCi0JbGVuID0gZmll bGQxLT5sZW47CisJaWYgKGZpZWxkMS0+bGVuID09IFVOSVZfU1FMX05VTEwgfHwgbGVuID09IDAg fHwgZmllbGQxLT5sZW4gPCBsZW4pIHsKKwkJbGVuID0gZmllbGQxLT5sZW47CisJfQogCi0JcmV0 dXJuKGxlbiA9PSBmaWVsZDItPmxlbgorCWlmIChmaWVsZDItPmxlbiA9PSBVTklWX1NRTF9OVUxM IHx8IGxlbjIgPT0gMCB8fCBmaWVsZDItPmxlbiA8IGxlbjIpIHsKKwkJbGVuMiA9IGZpZWxkMi0+ bGVuOworCX0KKworCXJldHVybihsZW4gPT0gbGVuMgogCSAgICAgICAmJiAobGVuID09IFVOSVZf U1FMX05VTEwKIAkJICAgfHwgIW1lbWNtcChmaWVsZDEtPmRhdGEsIGZpZWxkMi0+ZGF0YSwgbGVu KSkpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cw dXBkLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdXBkLmgJcmV2aWQ6amlt bXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0NzEyLWxjbTVqNHl4YmxicHd5bDUKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaAlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3MzVtd2EyMGc2CkBAIC0yODYsMTAgKzI4Niwx MyBAQCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBk YXRhIHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5vdAogCQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlv biBpcyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJY29tcGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4 dF90KmV4dCwJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0 b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyoh PCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpOy8qITwg aW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQorCWNvbnN0IHVwZF90Kgl1 cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQogCQkJ CWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJCXBvc2l0 aW9ucyEgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDMsNCksIHdhcm5fdW51c2VkX3Jlc3Vs dCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogQ2hlY2tzIGlmIGFuIHVwZGF0ZSB2ZWN0b3IgY2hhbmdlcyBhbiBvcmRl cmluZyBmaWVsZCBvZiBhbiBpbmRleCByZWNvcmQuCiBUaGlzIGZ1bmN0aW9uIGlzIGZhc3QgaWYg dGhlIHVwZGF0ZSB2ZWN0b3IgaXMgc2hvcnQgb3IgdGhlIG51bWJlciBvZiBvcmRlcmluZwpAQCAt NDYyLDExICs0NjUsMTYgQEAgc3RydWN0IHVwZF9ub2RlX3N0cnVjdHsKICNkZWZpbmUgVVBEX05P REVfSU5TRVJUX0NMVVNURVJFRCAgMwkvKiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHNob3VsZCBi ZQogCQkJCQlpbnNlcnRlZCwgb2xkIHJlY29yZCBpcyBhbHJlYWR5IGRlbGV0ZQogCQkJCQltYXJr ZWQgKi8KLSNkZWZpbmUgVVBEX05PREVfVVBEQVRFX0FMTF9TRUMJICAgNAkvKiBhbiBvcmRlcmlu ZyBmaWVsZCBvZiB0aGUgY2x1c3RlcmVkCisjZGVmaW5lIFVQRF9OT0RFX0lOU0VSVF9CTE9CCSAg IDQJLyogY2x1c3RlcmVkIGluZGV4IHJlY29yZCBzaG91bGQgYmUKKwkJCQkJaW5zZXJ0ZWQsIG9s ZCByZWNvcmQgaXMgYWxyZWFkeQorCQkJCQlkZWxldGUtbWFya2VkOyBub24tdXBkYXRlZCBCTE9C cworCQkJCQlzaG91bGQgYmUgaW5oZXJpdGVkIGJ5IHRoZSBuZXcgcmVjb3JkCisJCQkJCWFuZCBk aXNvd25lZCBieSB0aGUgb2xkIHJlY29yZCAqLworI2RlZmluZSBVUERfTk9ERV9VUERBVEVfQUxM X1NFQwkgICA1CS8qIGFuIG9yZGVyaW5nIGZpZWxkIG9mIHRoZSBjbHVzdGVyZWQKIAkJCQkJaW5k ZXggcmVjb3JkIHdhcyBjaGFuZ2VkLCBvciB0aGlzIGlzCiAJCQkJCWEgZGVsZXRlIG9wZXJhdGlv bjogc2hvdWxkIHVwZGF0ZQogCQkJCQlhbGwgdGhlIHNlY29uZGFyeSBpbmRleCByZWNvcmRzICov Ci0jZGVmaW5lCVVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDUJLyogc2Vjb25kYXJ5IGluZGV4 IGVudHJpZXMgc2hvdWxkIGJlCisjZGVmaW5lIFVQRF9OT0RFX1VQREFURV9TT01FX1NFQyAgIDYJ Lyogc2Vjb25kYXJ5IGluZGV4IGVudHJpZXMgc2hvdWxkIGJlCiAJCQkJCWxvb2tlZCBhdCBhbmQg dXBkYXRlZCBpZiBhbiBvcmRlcmluZwogCQkJCQlmaWVsZCBjaGFuZ2VkICovCiAKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIw MTAxMjIxMDI0NzEyLWxjbTVqNHl4YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHB1cmdlLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEyMjExMjQ5NDEt dmQyZXh3NzM1bXdhMjBnNgpAQCAtNTE2LDcgKzUxNiw3IEBAIHJvd19wdXJnZV91cGRfZXhpc3Rf b3JfZXh0ZXJuKAogCXdoaWxlIChub2RlLT5pbmRleCAhPSBOVUxMKSB7CiAJCWluZGV4ID0gbm9k ZS0+aW5kZXg7CiAKLQkJaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KE5VTEws IG5vZGUtPmluZGV4LAorCQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoTlVM TCwgTlVMTCwgbm9kZS0+aW5kZXgsCiAJCQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKIAkJCS8q IEJ1aWxkIHRoZSBvbGRlciB2ZXJzaW9uIG9mIHRoZSBpbmRleCBlbnRyeSAqLwogCQkJZW50cnkg PSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+cm93LCBOVUxMLAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzB1bW9kLmMJcmV2aWQ6amltbXkueWFuZ0BvcmFjbGUuY29tLTIwMTAxMjIxMDI0 NzEyLWxjbTVqNHl4YmxicHd5bDUKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2Qu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMTIyMTEyNDk0MS12ZDJleHc3MzVt d2EyMGc2CkBAIC02OTUsMTkgKzY5NSwxOCBAQCByb3dfdW5kb19tb2RfdXBkX2V4aXN0X3NlYygK IAl3aGlsZSAobm9kZS0+aW5kZXggIT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUtPmluZGV4Owog Ci0JCWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShub2RlLT5yb3csIG5vZGUt PmluZGV4LAotCQkJCQkJICAgICBub2RlLT51cGRhdGUpKSB7CisJCWlmIChyb3dfdXBkX2NoYW5n ZXNfb3JkX2ZpZWxkX2JpbmFyeSgKKwkJCSAgICBub2RlLT5yb3csIG5vZGUtPmV4dCwgbm9kZS0+ aW5kZXgsIG5vZGUtPnVwZGF0ZSkpIHsKIAogCQkJLyogQnVpbGQgdGhlIG5ld2VzdCB2ZXJzaW9u IG9mIHRoZSBpbmRleCBlbnRyeSAqLwogCQkJZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50cnko bm9kZS0+cm93LCBub2RlLT5leHQsCiAJCQkJCQkgICAgICBpbmRleCwgaGVhcCk7CiAJCQlpZiAo VU5JVl9VTkxJS0VMWSghZW50cnkpKSB7CiAJCQkJLyogVGhlIHNlcnZlciBtdXN0IGhhdmUgY3Jh c2hlZCBpbgotCQkJCXJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgpLCBpbgotCQkJCXJvd19p bnNfaW5kZXhfZW50cnlfbG93KCkgYmVmb3JlCi0JCQkJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJu X2ZpZWxkcygpCi0JCQkJaGFzIHdyaXR0ZW4gdGhlIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMK LQkJCQkoQkxPQnMpIG9mIHRoZSBuZXcgY2x1c3RlcmVkIGluZGV4IGVudHJ5LiAqLworCQkJCXJv d191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgpIGJlZm9yZQorCQkJCXRoZSB1cGRhdGVkIGV4dGVy bmFsbHkgc3RvcmVkIGNvbHVtbnMgKEJMT0JzKQorCQkJCW9mIHRoZSBuZXcgY2x1c3RlcmVkIGlu ZGV4IGVudHJ5IHdlcmUKKwkJCQl3cml0dGVuLiAqLwogCiAJCQkJLyogVGhlIHRhYmxlIG11c3Qg YmUgaW4gRFlOQU1JQyBvciBDT01QUkVTU0VECiAJCQkJZm9ybWF0LiAgUkVEVU5EQU5UIGFuZCBD T01QQUNUIGZvcm1hdHMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9y b3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDpqaW1t eS55YW5nQG9yYWNsZS5jb20tMjAxMDEyMjEwMjQ3MTItbGNtNWo0eXhibGJwd3lsNQorKysgYi9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMDEyMjExMjQ5NDEtdmQyZXh3NzM1bXdhMjBnNgpAQCAtMTE5NiwyMCArMTE5NiwyMSBA QCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgKIAkJCQlyb3cgYW5kIHRoZSBkYXRh IHZhbHVlcyBpbiB1cGRhdGUgYXJlIG5vdAogCQkJCWtub3duIHdoZW4gdGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQsIGUuZy4sIGF0CiAJCQkJY29tcGlsZSB0aW1lICovCisJY29uc3Qgcm93X2V4dF90 KmV4dCwJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQorCQkJCXN0b3Jl ZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwogCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46 IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQogCQkJCWZpZWxkIG51bWJlcnMg aW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAogCQkJCXBvc2l0aW9ucyEgKi8KIHsKLQl1 bGludAkJbl91bmlxdWU7Ci0JdWxpbnQJCW5fdXBkX2ZpZWxkczsKLQl1bGludAkJaSwgajsKLQlk aWN0X2luZGV4X3QqCWNsdXN0X2luZGV4OworCXVsaW50CQkJbl91bmlxdWU7CisJdWxpbnQJCQlp OworCWNvbnN0IGRpY3RfaW5kZXhfdCoJY2x1c3RfaW5kZXg7CiAKLQl1dF9hZCh1cGRhdGUgJiYg aW5kZXgpOworCXV0X2FkKHVwZGF0ZSk7CisJdXRfYWQoaW5kZXgpOwogCiAJbl91bmlxdWUgPSBk aWN0X2luZGV4X2dldF9uX3VuaXF1ZShpbmRleCk7Ci0Jbl91cGRfZmllbGRzID0gdXBkX2dldF9u X2ZpZWxkcyh1cGRhdGUpOwogCiAJY2x1c3RfaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9p bmRleChpbmRleC0+dGFibGUpOwogCkBAIC0xMjE3LDMzICsxMjE4LDcyIEBAIHJvd191cGRfY2hh bmdlc19vcmRfZmllbGRfYmluYXJ5KAogCiAJCWNvbnN0IGRpY3RfZmllbGRfdCoJaW5kX2ZpZWxk OwogCQljb25zdCBkaWN0X2NvbF90Kgljb2w7Ci0JCXVsaW50CQkJY29sX3BvczsKIAkJdWxpbnQJ CQljb2xfbm87CisJCWNvbnN0IHVwZF9maWVsZF90Kgl1cGRfZmllbGQ7CisJCWNvbnN0IGRmaWVs ZF90KgkJZGZpZWxkOworCQlkZmllbGRfdAkJZGZpZWxkX2V4dDsKKwkJdWxpbnQJCQlkZmllbGRf bGVuOworCQljb25zdCBieXRlKgkJYnVmOwogCiAJCWluZF9maWVsZCA9IGRpY3RfaW5kZXhfZ2V0 X250aF9maWVsZChpbmRleCwgaSk7CiAJCWNvbCA9IGRpY3RfZmllbGRfZ2V0X2NvbChpbmRfZmll bGQpOwotCQljb2xfcG9zID0gZGljdF9jb2xfZ2V0X2NsdXN0X3Bvcyhjb2wsIGNsdXN0X2luZGV4 KTsKIAkJY29sX25vID0gZGljdF9jb2xfZ2V0X25vKGNvbCk7CiAKLQkJZm9yIChqID0gMDsgaiA8 IG5fdXBkX2ZpZWxkczsgaisrKSB7CisJCXVwZF9maWVsZCA9IHVwZF9nZXRfZmllbGRfYnlfZmll bGRfbm8oCisJCQl1cGRhdGUsIGRpY3RfY29sX2dldF9jbHVzdF9wb3MoY29sLCBjbHVzdF9pbmRl eCkpOwogCi0JCQljb25zdCB1cGRfZmllbGRfdCoJdXBkX2ZpZWxkCi0JCQkJPSB1cGRfZ2V0X250 aF9maWVsZCh1cGRhdGUsIGopOworCQlpZiAodXBkX2ZpZWxkID09IE5VTEwpIHsKKwkJCWNvbnRp bnVlOworCQl9CiAKLQkJCS8qIE5vdGUgdGhhdCBpZiB0aGUgaW5kZXggZmllbGQgaXMgYSBjb2x1 bW4gcHJlZml4Ci0JCQl0aGVuIGl0IG1heSBiZSB0aGF0IHJvdyBkb2VzIG5vdCBjb250YWluIGFu IGV4dGVybmFsbHkKLQkJCXN0b3JlZCBwYXJ0IG9mIHRoZSBjb2x1bW4gdmFsdWUsIGFuZCB3ZSBj YW5ub3QgY29tcGFyZQotCQkJdGhlIGRhdGFzICovCisJCWlmIChyb3cgPT0gTlVMTCkgeworCQkJ dXRfYWQoZXh0ID09IE5VTEwpOworCQkJcmV0dXJuKFRSVUUpOworCQl9CiAKLQkJCWlmIChjb2xf cG9zID09IHVwZF9maWVsZC0+ZmllbGRfbm8KLQkJCSAgICAmJiAocm93ID09IE5VTEwKLQkJCQl8 fCBpbmRfZmllbGQtPnByZWZpeF9sZW4gPiAwCi0JCQkJfHwgIWRmaWVsZF9kYXRhc19hcmVfYmlu YXJ5X2VxdWFsKAotCQkJCQlkdHVwbGVfZ2V0X250aF9maWVsZChyb3csIGNvbF9ubyksCi0JCQkJ CSYodXBkX2ZpZWxkLT5uZXdfdmFsKSkpKSB7CisJCWRmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2Zp ZWxkKHJvdywgY29sX25vKTsKIAotCQkJCXJldHVybihUUlVFKTsKKwkJLyogVGhpcyB0cmVhdG1l bnQgb2YgY29sdW1uIHByZWZpeCBpbmRleGVzIGlzIGxvb3NlbHkKKwkJYmFzZWQgb24gcm93X2J1 aWxkX2luZGV4X2VudHJ5KCkuICovCisKKwkJaWYgKFVOSVZfTElLRUxZKGluZF9maWVsZC0+cHJl Zml4X2xlbiA9PSAwKQorCQkgICAgfHwgZGZpZWxkX2lzX251bGwoZGZpZWxkKSkgeworCQkJLyog ZG8gbm90aGluZyBzcGVjaWFsICovCisJCX0gZWxzZSBpZiAoVU5JVl9MSUtFTFlfTlVMTChleHQp KSB7CisJCQkvKiBTZWUgaWYgdGhlIGNvbHVtbiBpcyBzdG9yZWQgZXh0ZXJuYWxseS4gKi8KKwkJ CWJ1ZiA9IHJvd19leHRfbG9va3VwKGV4dCwgY29sX25vLCAmZGZpZWxkX2xlbik7CisKKwkJCXV0 X2FkKGNvbC0+b3JkX3BhcnQpOworCisJCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChidWYpKSB7CisJ CQkJaWYgKFVOSVZfVU5MSUtFTFkoYnVmID09IGZpZWxkX3JlZl96ZXJvKSkgeworCQkJCQkvKiBU aGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dAorCQkJCQl3ZSB0cnkgdG8gZmFpbCBzYWZlIGhl cmUuICovCisJCQkJCXV0X2FkKDApOworCQkJCQlyZXR1cm4oVFJVRSk7CisJCQkJfQorCisJCQkJ Z290byBjb3B5X2RmaWVsZDsKIAkJCX0KKwkJfSBlbHNlIGlmIChkZmllbGRfaXNfZXh0KGRmaWVs ZCkpIHsKKwkJCWRmaWVsZF9sZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOworCQkJdXRfYShk ZmllbGRfbGVuID4gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlkZmllbGRfbGVuIC09 IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisJCQl1dF9hKGRpY3RfaW5kZXhfaXNfY2x1c3Qo aW5kZXgpCisJCQkgICAgIHx8IGluZF9maWVsZC0+cHJlZml4X2xlbiA8PSBkZmllbGRfbGVuKTsK KwkJCWJ1ZiA9IGRmaWVsZF9nZXRfZGF0YShkZmllbGQpOworY29weV9kZmllbGQ6CisJCQl1dF9h KGRmaWVsZF9sZW4gPiAwKTsKKwkJCWRmaWVsZF9jb3B5KCZkZmllbGRfZXh0LCBkZmllbGQpOwor CQkJZGZpZWxkX3NldF9kYXRhKCZkZmllbGRfZXh0LCBidWYsIGRmaWVsZF9sZW4pOworCQkJZGZp ZWxkID0gJmRmaWVsZF9leHQ7CisJCX0KKworCQlpZiAoIWRmaWVsZF9kYXRhc19hcmVfYmluYXJ5 X2VxdWFsKAorCQkJICAgIGRmaWVsZCwgJnVwZF9maWVsZC0+bmV3X3ZhbCwKKwkJCSAgICBpbmRf ZmllbGQtPnByZWZpeF9sZW4pKSB7CisKKwkJCXJldHVybihUUlVFKTsKIAkJfQogCX0KIApAQCAt MTMyNyw3ICsxMzY3LDcgQEAgcm93X3VwZF9jaGFuZ2VzX2ZpcnN0X2ZpZWxkc19iaW5hcnkoCiAJ CQlpZiAoY29sX3BvcyA9PSB1cGRfZmllbGQtPmZpZWxkX25vCiAJCQkgICAgJiYgIWRmaWVsZF9k YXRhc19hcmVfYmluYXJ5X2VxdWFsKAogCQkJCSAgICBkdHVwbGVfZ2V0X250aF9maWVsZChlbnRy eSwgaSksCi0JCQkJICAgICYodXBkX2ZpZWxkLT5uZXdfdmFsKSkpIHsKKwkJCQkgICAgJnVwZF9m aWVsZC0+bmV3X3ZhbCwgMCkpIHsKIAogCQkJCXJldHVybihUUlVFKTsKIAkJCX0KQEAgLTE1OTYs MTQgKzE2MzYsOTkgQEAgcm93X3VwZF9zZWNfc3RlcCgKIAl1dF9hZCghZGljdF9pbmRleF9pc19j bHVzdChub2RlLT5pbmRleCkpOwogCiAJaWYgKG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX1VQREFU RV9BTExfU0VDCi0JICAgIHx8IHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUt PnJvdywgbm9kZS0+aW5kZXgsCi0JCQkJCQlub2RlLT51cGRhdGUpKSB7CisJICAgIHx8IHJvd191 cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5vZGUtPnJvdywgbm9kZS0+ZXh0LAorCQkJCQkJ bm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSkpIHsKIAkJcmV0dXJuKHJvd191cGRfc2VjX2luZGV4 X2VudHJ5KG5vZGUsIHRocikpOwogCX0KIAogCXJldHVybihEQl9TVUNDRVNTKTsKIH0KIAorI2lm ZGVmIFVOSVZfREVCVUcKKyMgZGVmaW5lIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydF9pbmhl cml0KHJlYyxvZmZzZXRzLGVudHJ5LHVwZGF0ZSkJXAorCXJvd191cGRfY2x1c3RfcmVjX2J5X2lu c2VydF9pbmhlcml0X2Z1bmMocmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQorI2Vsc2UgLyogVU5J Vl9ERUJVRyAqLworIyBkZWZpbmUgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2luaGVyaXQo cmVjLG9mZnNldHMsZW50cnksdXBkYXRlKQlcCisJcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0 X2luaGVyaXRfZnVuYyhlbnRyeSx1cGRhdGUpCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCitNYXJrIG5vbi11cGRhdGVkIG9mZi1wYWdlIGNvbHVtbnMgaW5oZXJpdGVk IHdoZW4gdGhlIHByaW1hcnkga2V5IGlzCit1cGRhdGVkLiBXZSBtdXN0IG1hcmsgdGhlbSBhcyBp bmhlcml0ZWQgaW4gZW50cnksIHNvIHRoYXQgdGhleSBhcmUgbm90CitmcmVlZCBpbiBhIHJvbGxi YWNrLiBBIGxpbWl0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUKK2NhbGxl ZCBidHJfY3VyX21hcmtfZHR1cGxlX2luaGVyaXRlZF9leHRlcm4oKS4KK0ByZXR1cm4gVFJVRSBp ZiBhbnkgY29sdW1ucyB3ZXJlIGluaGVyaXRlZCAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKHdh cm5fdW51c2VkX3Jlc3VsdCkpCitpYm9vbAorcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0X2lu aGVyaXRfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisj aWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IG9sZCByZWNvcmQs IG9yIE5VTEwgKi8KKwljb25zdCB1bGludCoJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNl dHMocmVjKSwgb3IgTlVMTCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwlkdHVwbGVfdCoJ ZW50cnksCS8qITwgaW4vb3V0OiB1cGRhdGVkIGVudHJ5IHRvIGJlCisJCQkJaW5zZXJ0ZWQgaW50 byB0aGUgY2x1c3RlcmVkIGluZGV4ICovCisJY29uc3QgdXBkX3QqCXVwZGF0ZSkJLyohPCBpbjog dXBkYXRlIHZlY3RvciAqLworeworCWlib29sCWluaGVyaXQJPSBGQUxTRTsKKwl1bGludAlpOwor CisJdXRfYWQoIXJlYyA9PSAhb2Zmc2V0cyk7CisJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc19hbnlf ZXh0ZXJuKG9mZnNldHMpKTsKKworCWZvciAoaSA9IDA7IGkgPCBkdHVwbGVfZ2V0X25fZmllbGRz KGVudHJ5KTsgaSsrKSB7CisJCWRmaWVsZF90KglkZmllbGQJPSBkdHVwbGVfZ2V0X250aF9maWVs ZChlbnRyeSwgaSk7CisJCWJ5dGUqCQlkYXRhOworCQl1bGludAkJbGVuOworCisJCXV0X2FkKCFv ZmZzZXRzCisJCSAgICAgIHx8ICFyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpCisJCSAg ICAgID09ICFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJICAgICAgfHwgdXBkX2dldF9maWVsZF9i eV9maWVsZF9ubyh1cGRhdGUsIGkpKTsKKwkJaWYgKCFkZmllbGRfaXNfZXh0KGRmaWVsZCkKKwkJ ICAgIHx8IHVwZF9nZXRfZmllbGRfYnlfZmllbGRfbm8odXBkYXRlLCBpKSkgeworCQkJY29udGlu dWU7CisJCX0KKworI2lmZGVmIFVOSVZfREVCVUcKKwkJaWYgKFVOSVZfTElLRUxZKHJlYyAhPSBO VUxMKSkgeworCQkJY29uc3QgYnl0ZSogcmVjX2RhdGEKKwkJCQk9IHJlY19nZXRfbnRoX2ZpZWxk KHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJCQl1dF9hZChsZW4gPT0gZGZpZWxkX2dldF9sZW4o ZGZpZWxkKSk7CisJCQl1dF9hZChsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hZChsZW4g Pj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisKKwkJCXJlY19kYXRhICs9IGxlbiAtIEJU Ul9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCS8qIFRoZSBwb2ludGVyIG11c3Qgbm90IGJl IHplcm8uICovCisJCQl1dF9hZChtZW1jbXAocmVjX2RhdGEsIGZpZWxkX3JlZl96ZXJvLAorCQkJ CSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJLyogVGhlIEJMT0IgbXVzdCBi ZSBvd25lZC4gKi8KKwkJCXV0X2FkKCEocmVjX2RhdGFbQlRSX0VYVEVSTl9MRU5dCisJCQkJJiBC VFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwor CQlsZW4gPSBkZmllbGRfZ2V0X2xlbihkZmllbGQpOworCQl1dF9hKGxlbiAhPSBVTklWX1NRTF9O VUxMKTsKKwkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCWRhdGEg PSBkZmllbGRfZ2V0X2RhdGEoZGZpZWxkKSArIGxlbgorCQkJLSBCVFJfRVhURVJOX0ZJRUxEX1JF Rl9TSVpFOworCQkvKiBUaGUgcG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1dF9hKG1l bWNtcChkYXRhLCBmaWVsZF9yZWZfemVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOwor CQkvKiBUaGUgQkxPQiBtdXN0IGJlIG93bmVkLiAqLworCQl1dF9hKCEoZGF0YVtCVFJfRVhURVJO X0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKworCQlkYXRhW0JUUl9FWFRFUk5fTEVO XSB8PSBCVFJfRVhURVJOX0lOSEVSSVRFRF9GTEFHOworCQkvKiBUaGUgQlRSX0VYVEVSTl9JTkhF UklURURfRkxBRyBvbmx5IG1hdHRlcnMgaW4KKwkJcm9sbGJhY2suIFB1cmdlIHdpbGwgYWx3YXlz IGZyZWUgdGhlIGV4dGVybiBmaWVsZHMgb2YKKwkJYSBkZWxldGUtbWFya2VkIHJvdy4gKi8KKwor CQlpbmhlcml0ID0gVFJVRTsKKwl9CisKKwlyZXR1cm4oaW5oZXJpdCk7Cit9CisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IE1hcmtzIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGRlbGV0ZWQgYW5kIGluc2VydHMgdGhl IHVwZGF0ZWQgdmVyc2lvbgogb2YgdGhlIHJlY29yZCB0byB0aGUgaW5kZXguIFRoaXMgZnVuY3Rp b24gc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGUgb3JkZXJpbmcKQEAgLTE2MjIsMTQgKzE3NDcsMTYg QEAgcm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KAogCQkJCWEgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluL291dDogbXRyOyBnZXRzIGNvbW1pdHRlZCBo ZXJlICovCiB7Ci0JbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJbWVtX2hlYXBfdCoJaGVhcDsK IAlidHJfcGN1cl90KglwY3VyOwogCWJ0cl9jdXJfdCoJYnRyX2N1cjsKIAl0cnhfdCoJCXRyeDsK IAlkaWN0X3RhYmxlX3QqCXRhYmxlOwogCWR0dXBsZV90KgllbnRyeTsKIAl1bGludAkJZXJyOwot CWlib29sCQljaGFuZ2Vfb3duZXJzaGlwID0gRkFMU0U7CisJaWJvb2wJCWNoYW5nZV9vd25lcnNo aXAJPSBGQUxTRTsKKwlyZWNfdCoJCXJlYzsKKwl1bGludCoJCW9mZnNldHMJCQk9IE5VTEw7CiAK IAl1dF9hZChub2RlKTsKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CkBAIC0x NjM5LDM0ICsxNzY2LDY0IEBAIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgKIAlwY3VyID0g bm9kZS0+cGN1cjsKIAlidHJfY3VyCT0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cik7CiAKLQlp ZiAobm9kZS0+c3RhdGUgIT0gVVBEX05PREVfSU5TRVJUX0NMVVNURVJFRCkgewotCQlyZWNfdCoJ CXJlYzsKLQkJZGljdF9pbmRleF90KglpbmRleDsKLQkJdWxpbnQJCW9mZnNldHNfW1JFQ19PRkZT X05PUk1BTF9TSVpFXTsKLQkJdWxpbnQqCQlvZmZzZXRzOwotCQlyZWNfb2Zmc19pbml0KG9mZnNl dHNfKTsKKwloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMDApOworCisJZW50cnkgPSByb3dfYnVp bGRfaW5kZXhfZW50cnkobm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4dCwKKwkJCQkgICAgICBp bmRleCwgaGVhcCk7CisJdXRfYShlbnRyeSk7CisKKwlyb3dfdXBkX2luZGV4X2VudHJ5X3N5c19m aWVsZChlbnRyeSwgaW5kZXgsIERBVEFfVFJYX0lELCB0cngtPmlkKTsKIAotCQllcnIgPSBidHJf Y3VyX2RlbF9tYXJrX3NldF9jbHVzdF9yZWMoQlRSX05PX0xPQ0tJTkdfRkxBRywKLQkJCQkJCSAg ICAgYnRyX2N1ciwgVFJVRSwgdGhyLCBtdHIpOworCXN3aXRjaCAobm9kZS0+c3RhdGUpIHsKKwlk ZWZhdWx0OgorCQl1dF9lcnJvcjsKKwljYXNlIFVQRF9OT0RFX0lOU0VSVF9CTE9COgorCQkvKiBB IGxvY2sgd2FpdCBvY2N1cnJlZCBpbiByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJdGhlIHBy ZXZpb3VzIGludm9jYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gTWFyayB0aGUKKwkJb2ZmLXBhZ2Ug Y29sdW1ucyBpbiB0aGUgZW50cnkgaW5oZXJpdGVkLiAqLworCisJCWNoYW5nZV9vd25lcnNoaXAg PSByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnRfaW5oZXJpdCgKKwkJCU5VTEwsIE5VTEwsIGVu dHJ5LCBub2RlLT51cGRhdGUpOworCQl1dF9hKGNoYW5nZV9vd25lcnNoaXApOworCQkvKiBmYWxs IHRocm91Z2ggKi8KKwljYXNlIFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ6CisJCS8qIEEgbG9j ayB3YWl0IG9jY3VycmVkIGluIHJvd19pbnNfaW5kZXhfZW50cnkoKSBpbgorCQl0aGUgcHJldmlv dXMgaW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAqLworCQlicmVhazsKKwljYXNlIFVQRF9O T0RFX1VQREFURV9DTFVTVEVSRUQ6CisJCS8qIFRoaXMgaXMgdGhlIGZpcnN0IGludm9jYXRpb24g b2YgdGhlIGZ1bmN0aW9uIHdoZXJlCisJCXdlIHVwZGF0ZSB0aGUgcHJpbWFyeSBrZXkuICBEZWxl dGUtbWFyayB0aGUgb2xkIHJlY29yZAorCQlpbiB0aGUgY2x1c3RlcmVkIGluZGV4IGFuZCBwcmVw YXJlIHRvIGluc2VydCBhIG5ldyBlbnRyeS4gKi8KKwkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0 cl9jdXIpOworCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIE5VTEwsCisJ CQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJf cmVjKHJlYykpOworCisJCWVyciA9IGJ0cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygKKwkJ CUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLAorCQkJcmVj LCBpbmRleCwgb2Zmc2V0cywgVFJVRSwgdGhyLCBtdHIpOwogCQlpZiAoZXJyICE9IERCX1NVQ0NF U1MpIHsKK2Vycl9leGl0OgogCQkJbXRyX2NvbW1pdChtdHIpOworCQkJbWVtX2hlYXBfZnJlZSho ZWFwKTsKIAkJCXJldHVybihlcnIpOwogCQl9CiAKLQkJLyogTWFyayBhcyBub3Qtb3duZWQgdGhl IGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkcyB3aGljaCB0aGUgbmV3Ci0JCXJvdyBpbmhlcml0cyBm cm9tIHRoZSBkZWxldGUgbWFya2VkIHJlY29yZDogcHVyZ2Ugc2hvdWxkIG5vdAotCQlmcmVlIHRo b3NlIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkcyBldmVuIGlmIHRoZSBkZWxldGUgbWFya2VkCi0J CXJlY29yZCBpcyByZW1vdmVkIGZyb20gdGhlIGluZGV4IHRyZWUsIG9yIHVwZGF0ZWQuICovCisJ CS8qIElmIHRoZSB0aGUgbmV3IHJvdyBpbmhlcml0cyBleHRlcm5hbGx5IHN0b3JlZAorCQlmaWVs ZHMgKG9mZi1wYWdlIGNvbHVtbnMgYS5rLmEuIEJMT0JzKSBmcm9tIHRoZQorCQlkZWxldGUtbWFy a2VkIG9sZCByZWNvcmQsIG1hcmsgdGhlbSBkaXNvd25lZCBieSB0aGUKKwkJb2xkIHJlY29yZCBh bmQgb3duZWQgYnkgdGhlIG5ldyBlbnRyeS4gKi8KKworCQlpZiAocmVjX29mZnNfYW55X2V4dGVy bihvZmZzZXRzKSkgeworCQkJY2hhbmdlX293bmVyc2hpcCA9IHJvd191cGRfY2x1c3RfcmVjX2J5 X2luc2VydF9pbmhlcml0KAorCQkJCXJlYywgb2Zmc2V0cywgZW50cnksIG5vZGUtPnVwZGF0ZSk7 CiAKLQkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOwotCQlpbmRleCA9IGRpY3RfdGFi bGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxlKTsKLQkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4LCBvZmZzZXRzXywKLQkJCQkJICBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLQkJ Y2hhbmdlX293bmVyc2hpcCA9IGJ0cl9jdXJfbWFya19leHRlcm5faW5oZXJpdGVkX2ZpZWxkcygK LQkJCWJ0cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAotCQkJcmVjLCBpbmRleCwgb2Zmc2V0 cywgbm9kZS0+dXBkYXRlLCBtdHIpOwotCQlpZiAocmVmZXJlbmNlZCkgeworCQkJaWYgKGNoYW5n ZV9vd25lcnNoaXApIHsKKwkJCQlidHJfcGN1cl9zdG9yZV9wb3NpdGlvbihwY3VyLCBtdHIpOwor CQkJfQorCQl9CiAKKwkJaWYgKHJlZmVyZW5jZWQpIHsKIAkJCS8qIE5PVEUgdGhhdCB0aGUgZm9s bG93aW5nIGNhbGwgbG9zZXMKIAkJCXRoZSBwb3NpdGlvbiBvZiBwY3VyICEgKi8KIApAQCAtMTY3 NCw0OCArMTgzMSw0OSBAQCByb3dfdXBkX2NsdXN0X3JlY19ieV9pbnNlcnQoCiAJCQkJbm9kZSwg cGN1ciwgdGFibGUsIGluZGV4LCBvZmZzZXRzLCB0aHIsIG10cik7CiAKIAkJCWlmIChlcnIgIT0g REJfU1VDQ0VTUykgewotCi0JCQkJbXRyX2NvbW1pdChtdHIpOwotCi0JCQkJaWYgKFVOSVZfTElL RUxZX05VTEwoaGVhcCkpIHsKLQkJCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJCQl9Ci0KLQkJ CQlyZXR1cm4oZXJyKTsKKwkJCQlnb3RvIGVycl9leGl0OwogCQkJfQogCQl9CiAJfQogCiAJbXRy X2NvbW1pdChtdHIpOwogCi0JaWYgKCFoZWFwKSB7Ci0JCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUo NTAwKTsKLQl9Ci0Jbm9kZS0+c3RhdGUgPSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEOwotCi0J ZW50cnkgPSByb3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+dXBkX3Jvdywgbm9kZS0+dXBkX2V4 dCwKLQkJCQkgICAgICBpbmRleCwgaGVhcCk7Ci0JdXRfYShlbnRyeSk7CisJZXJyID0gcm93X2lu c19pbmRleF9lbnRyeShpbmRleCwgZW50cnksCisJCQkJICBub2RlLT51cGRfZXh0ID8gbm9kZS0+ dXBkX2V4dC0+bl9leHQgOiAwLAorCQkJCSAgVFJVRSwgdGhyKTsKKwlub2RlLT5zdGF0ZSA9IGNo YW5nZV9vd25lcnNoaXAKKwkJPyBVUERfTk9ERV9JTlNFUlRfQkxPQgorCQk6IFVQRF9OT0RFX0lO U0VSVF9DTFVTVEVSRUQ7CisKKwlpZiAoZXJyID09IERCX1NVQ0NFU1MgJiYgY2hhbmdlX293bmVy c2hpcCkgeworCQkvKiBNYXJrIHRoZSBub24tdXBkYXRlZCBmaWVsZHMgZGlzb3duZWQgYnkgdGhl IG9sZCByZWNvcmQuICovCisKKwkJLyogTk9URTogdGhpcyB0cmFuc2FjdGlvbiBoYXMgYW4geC1s b2NrIG9uIHRoZSByZWNvcmQKKwkJYW5kIHRoZXJlZm9yZSBvdGhlciB0cmFuc2FjdGlvbnMgY2Fu bm90IG1vZGlmeSB0aGUKKwkJcmVjb3JkIHdoZW4gd2UgaGF2ZSBubyBsYXRjaCBvbiB0aGUgcGFn ZS4gSW4gYWRkaXRpb24sCisJCXdlIGFzc3VtZSB0aGF0IG90aGVyIHF1ZXJ5IHRocmVhZHMgb2Yg dGhlIHNhbWUKKwkJdHJhbnNhY3Rpb24gZG8gbm90IG1vZGlmeSB0aGUgcmVjb3JkIGluIHRoZSBt ZWFudGltZS4KKwkJVGhlcmVmb3JlIHdlIGNhbiBhc3NlcnQgdGhhdCB0aGUgcmVzdG9yYXRpb24g b2YgdGhlCisJCWN1cnNvciBzdWNjZWVkcy4gKi8KIAotCXJvd191cGRfaW5kZXhfZW50cnlfc3lz X2ZpZWxkKGVudHJ5LCBpbmRleCwgREFUQV9UUlhfSUQsIHRyeC0+aWQpOworCQltdHJfc3RhcnQo bXRyKTsKIAotCWlmIChjaGFuZ2Vfb3duZXJzaGlwKSB7Ci0JCS8qIElmIHdlIHJldHVybiBmcm9t IGEgbG9jayB3YWl0LCBmb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUKLQkJZXh0ZXJuIGZpZWxkcyBt YXJrZWQgYXMgbm90LW93bmVkIGluIGVudHJ5IChtYXJrZWQgaW4gdGhlCi0JCWlmLWJyYW5jaCBh Ym92ZSkuIFdlIG11c3QgdW5tYXJrIHRoZW0sIHRha2UgdGhlIG93bmVyc2hpcAotCQliYWNrLiAq LworCQlpZiAoIWJ0cl9wY3VyX3Jlc3RvcmVfcG9zaXRpb24oQlRSX01PRElGWV9MRUFGLCBwY3Vy LCBtdHIpKSB7CisJCQl1dF9lcnJvcjsKKwkJfQogCi0JCWJ0cl9jdXJfdW5tYXJrX2R0dXBsZV9l eHRlcm5fZmllbGRzKGVudHJ5KTsKKwkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOwor CQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCisJCQkJCSAg VUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJl YykpOwogCi0JCS8qIFdlIG11c3QgbWFyayBub24tdXBkYXRlZCBleHRlcm4gZmllbGRzIGluIGVu dHJ5IGFzCi0JCWluaGVyaXRlZCwgc28gdGhhdCBhIHBvc3NpYmxlIHJvbGxiYWNrIHdpbGwgbm90 IGZyZWUgdGhlbS4gKi8KKwkJYnRyX2N1cl9kaXNvd25faW5oZXJpdGVkX2ZpZWxkcygKKwkJCWJ0 cl9jdXJfZ2V0X3BhZ2VfemlwKGJ0cl9jdXIpLAorCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywgbm9k ZS0+dXBkYXRlLCBtdHIpOwogCi0JCWJ0cl9jdXJfbWFya19kdHVwbGVfaW5oZXJpdGVkX2V4dGVy bihlbnRyeSwgbm9kZS0+dXBkYXRlKTsKKwkJbXRyX2NvbW1pdChtdHIpOwogCX0KIAotCWVyciA9 IHJvd19pbnNfaW5kZXhfZW50cnkoaW5kZXgsIGVudHJ5LAotCQkJCSAgbm9kZS0+dXBkX2V4dCA/ IG5vZGUtPnVwZF9leHQtPm5fZXh0IDogMCwKLQkJCQkgIFRSVUUsIHRocik7CiAJbWVtX2hlYXBf ZnJlZShoZWFwKTsKIAogCXJldHVybihlcnIpOwpAQCAtMTg2MCw4ICsyMDE4LDkgQEAgcm93X3Vw ZF9kZWxfbWFya19jbHVzdF9yZWMoCiAJLyogTWFyayB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29y ZCBkZWxldGVkOyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjawogCWxvY2tzLCBiZWNhdXNlIHdlIGFz c3VtZSB0aGF0IHdlIGhhdmUgYW4geC1sb2NrIG9uIHRoZSByZWNvcmQgKi8KIAotCWVyciA9IGJ0 cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYyhCVFJfTk9fTE9DS0lOR19GTEFHLAotCQkJCQkg ICAgIGJ0cl9jdXIsIFRSVUUsIHRociwgbXRyKTsKKwllcnIgPSBidHJfY3VyX2RlbF9tYXJrX3Nl dF9jbHVzdF9yZWMoCisJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXJfZ2V0X2Jsb2NrKGJ0 cl9jdXIpLAorCQlidHJfY3VyX2dldF9yZWMoYnRyX2N1ciksIGluZGV4LCBvZmZzZXRzLCBUUlVF LCB0aHIsIG10cik7CiAJaWYgKGVyciA9PSBEQl9TVUNDRVNTICYmIHJlZmVyZW5jZWQpIHsKIAkJ LyogTk9URSB0aGF0IHRoZSBmb2xsb3dpbmcgY2FsbCBsb3NlcyB0aGUgcG9zaXRpb24gb2YgcGN1 ciAhICovCiAKQEAgLTIwMDYsNyArMjE2NSw4IEBAIGV4aXRfZnVuYzoKIAogCXJvd191cGRfc3Rv cmVfcm93KG5vZGUpOwogCi0JaWYgKHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KG5v ZGUtPnJvdywgaW5kZXgsIG5vZGUtPnVwZGF0ZSkpIHsKKwlpZiAocm93X3VwZF9jaGFuZ2VzX29y ZF9maWVsZF9iaW5hcnkobm9kZS0+cm93LCBub2RlLT5leHQsIGluZGV4LAorCQkJCQkgICAgIG5v ZGUtPnVwZGF0ZSkpIHsKIAogCQkvKiBVcGRhdGUgY2F1c2VzIGFuIG9yZGVyaW5nIGZpZWxkIChv cmRlcmluZyBmaWVsZHMgd2l0aGluCiAJCXRoZSBCLXRyZWUpIG9mIHRoZSBjbHVzdGVyZWQgaW5k ZXggcmVjb3JkIHRvIGNoYW5nZTogcGVyZm9ybQpAQCAtMjA3Niw3ICsyMjM2LDggQEAgcm93X3Vw ZCgKIAl9CiAKIAlpZiAobm9kZS0+c3RhdGUgPT0gVVBEX05PREVfVVBEQVRFX0NMVVNURVJFRAot CSAgICB8fCBub2RlLT5zdGF0ZSA9PSBVUERfTk9ERV9JTlNFUlRfQ0xVU1RFUkVEKSB7CisJICAg IHx8IG5vZGUtPnN0YXRlID09IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQKKwkgICAgfHwgbm9k ZS0+c3RhdGUgPT0gVVBEX05PREVfSU5TRVJUX0JMT0IpIHsKIAogCQlsb2dfZnJlZV9jaGVjaygp OwogCQllcnIgPSByb3dfdXBkX2NsdXN0X3N0ZXAobm9kZSwgdGhyKTsKCg== --===============2118133970== 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.6-innodb/ # testament_sha1: 3fa94d1e381ff2eb1cf510da5e1fe0a0a18b3700 # timestamp: 2010-12-21 14:51:02 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: jimmy.yang@stripped\ # lcm5j4yxblbpwyl5 # # Begin bundle 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 --===============2118133970==--