From: marko.makela Date: April 11 2011 2:59pm Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3571 to 3572) List-Archive: http://lists.mysql.com/commits/135204 Message-Id: <201104111500.p3BF0Uuc011057@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1188794692==" --===============1188794692== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM1NzIgTWFya28gTcOka2Vsw6QJMjAxMS0wNC0xMSBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNS1pbm5vZGIgdG8gbXlzcWwtdHJ1bmstaW5ub2RiLgoKICAgIGFkZGVkOgogICAgICBteXNx bC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk2NDEudGVzdAogICAgbW9kaWZpZWQ6CiAg ICAgIGNsaWVudC9teXNxbHRlc3QuY2MKICAgICAgc3FsL3NxbF9jbGFzcy5jYwogICAgICBzdG9y YWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aGFuZGxlci9oYV9pbm5vZGIuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxl cjBhbHRlci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3RyeDB1bmRvLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9j ay5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL3RyeC90cngwc3lzLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB1bmRvLmMKIDM1NzEga2V2aW4ubGV3aXNA b3JhY2xlLmNvbQkyMDExLTA0LTA4CiAgICAgIFdoaXRlc3BhY2UgY2xlYW51cAogICAgICBTb21l IENSTEYgbGluZSBlbmRpbmcgd2VyZSBhY2NpZGVudGFsbHkgaW50cm9kdWNlZCBpbiBhIHJlY2Vu dCBwYXRjaAogICAgICBBZGQgbGluZXMsIGNvbW1lbnRzIGFuZCBjb21tZW50IHdvcmRzIHRvIGlt cHJvdmUgY29kZSByZWFkYWJpbGl0eS4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9idWYvYnVmMGJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGNyZWEu YwogICAgICBzdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2RpY3QwZGljdC5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv ZGljdDBtZW0uaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwYmguaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9t dHIvbXRyMGxvZy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcXVlL3F1ZTBxdWUuYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwcm93LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCj09PSBtb2RpZmllZCBmaWxlICdjbGllbnQv bXlzcWx0ZXN0LmNjJwotLS0gYS9jbGllbnQvbXlzcWx0ZXN0LmNjCXJldmlkOmtldmluLmxld2lz QG9yYWNsZS5jb20tMjAxMTA0MDgxODQyMTQtN3VjeTJwZnA3NHRkdTlkeQorKysgYi9jbGllbnQv bXlzcWx0ZXN0LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQ1NzQ3 LTE1MW9uaWV1Mng1cHhpdngKQEAgLTQ1NjksMTMgKzQ1NjksMTQgQEAgc3RhdGljIGludCBteV9r aWxsKGludCBwaWQsIGludCBzaWcpCiAgIGNvbW1hbmQgIGNhbGxlZCBjb21tYW5kCiAKICAgREVT Q1JJUFRJT04KLSAgc2h1dGRvd24gWzx0aW1lb3V0Pl0KKyAgc2h1dGRvd25fc2VydmVyIFs8dGlt ZW91dD5dCiAKICovCiAKIHZvaWQgZG9fc2h1dGRvd25fc2VydmVyKHN0cnVjdCBzdF9jb21tYW5k ICpjb21tYW5kKQogewotICBpbnQgdGltZW91dD02MCwgcGlkOworICBsb25nIHRpbWVvdXQ9NjA7 CisgIGludCBwaWQ7CiAgIERZTkFNSUNfU1RSSU5HIGRzX3BpZGZpbGVfbmFtZTsKICAgTVlTUUwq IG15c3FsID0gJmN1cl9jb24tPm15c3FsOwogICBzdGF0aWMgRFlOQU1JQ19TVFJJTkcgZHNfdGlt ZW91dDsKQEAgLTQ1OTAsOCArNDU5MSw5IEBAIHZvaWQgZG9fc2h1dGRvd25fc2VydmVyKHN0cnVj dCBzdF9jb21tYW4KIAogICBpZiAoZHNfdGltZW91dC5sZW5ndGgpCiAgIHsKLSAgICB0aW1lb3V0 PSBhdG9pKGRzX3RpbWVvdXQuc3RyKTsKLSAgICBpZiAodGltZW91dCA9PSAwKQorICAgIGNoYXIq IGVuZHB0cjsKKyAgICB0aW1lb3V0PSBzdHJ0b2woZHNfdGltZW91dC5zdHIsICZlbmRwdHIsIDEw KTsKKyAgICBpZiAoKmVuZHB0ciAhPSAnXDAnKQogICAgICAgZGllKCJJbGxlZ2FsIGFyZ3VtZW50 IGZvciB0aW1lb3V0OiAnJXMnIiwgZHNfdGltZW91dC5zdHIpOwogICB9CiAgIGR5bnN0cl9mcmVl KCZkc190aW1lb3V0KTsKQEAgLTQ2MzMsNyArNDYzNSw3IEBAIHZvaWQgZG9fc2h1dGRvd25fc2Vy dmVyKHN0cnVjdCBzdF9jb21tYW4KICAgICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlByb2Nlc3Mg JWQgZG9lcyBub3QgZXhpc3QgYW55bW9yZSIsIHBpZCkpOwogICAgICAgREJVR19WT0lEX1JFVFVS TjsKICAgICB9Ci0gICAgREJVR19QUklOVCgiaW5mbyIsICgiU2xlZXBpbmcsIHRpbWVvdXQ6ICVk IiwgdGltZW91dCkpOworICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlNsZWVwaW5nLCB0aW1lb3V0 OiAlbGQiLCB0aW1lb3V0KSk7CiAgICAgbXlfc2xlZXAoMTAwMDAwMEwpOwogICB9CiAKCj09PSBh ZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1 bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU5NjQxLnJlc3Vs dAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3IvaW5ub2RiX2J1ZzU5NjQxLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDQxMTE0NTc0Ny0xNTFvbmlldTJ4NXB4aXZ4CkBAIC0wLDAgKzEsNTcgQEAKK0NSRUFURSBU QUJMRSB0KGEgSU5UIFBSSU1BUlkgS0VZLCBiIElOVClFTkdJTkU9SW5ub0RCOworSU5TRVJUIElO VE8gdCBWQUxVRVMoMiwyKSwoNCw0KSwoOCw4KSwoMTYsMTYpLCgzMiwzMik7CitDT01NSVQ7CitY QSBTVEFSVCAnMTIzJzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDEsMSk7CitYQSBFTkQgJzEyMyc7 CitYQSBQUkVQQVJFICcxMjMnOworWEEgU1RBUlQgJzQ1Nic7CitJTlNFUlQgSU5UTyB0IFZBTFVF UygzLDQ3KSwoNSw2Nyk7CitVUERBVEUgdCBTRVQgYj0yKmIgV0hFUkUgYSBCRVRXRUVOIDUgQU5E IDg7CitYQSBFTkQgJzQ1Nic7CitYQSBQUkVQQVJFICc0NTYnOworWEEgU1RBUlQgJzc4OSc7CitV UERBVEUgdCBTRVQgYj00KmEgV0hFUkUgYT0zMjsKK1hBIEVORCAnNzg5JzsKK1hBIFBSRVBBUkUg Jzc4OSc7CitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJh bnNhY3Rpb25zIik7CitTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01N SVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CithCWIKKzEJMQorMgkyCiszCTQ3Cis0CTQKKzUJMTM0 Cis4CTE2CisxNgkxNgorMzIJMTI4CitDT01NSVQ7CitTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9O IExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9NIHQ7CithCWIKKzEJMQorMgky CiszCTQ3Cis0CTQKKzUJMTM0Cis4CTE2CisxNgkxNgorMzIJMTI4CitDT01NSVQ7CitYQSBSRUNP VkVSOworZm9ybWF0SUQJZ3RyaWRfbGVuZ3RoCWJxdWFsX2xlbmd0aAlkYXRhCisxCTMJMAk3ODkK KzEJMwkwCTQ1NgorMQkzCTAJMTIzCitYQSBST0xMQkFDSyAnMTIzJzsKK1hBIFJPTExCQUNLICc0 NTYnOworWEEgQ09NTUlUICc3ODknOworU0VMRUNUICogRlJPTSB0OworYQliCisyCTIKKzQJNAor OAk4CisxNgkxNgorMzIJMTI4CitEUk9QIFRBQkxFIHQ7Cgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk2NDEudGVzdCcKLS0tIGEvbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTk2NDEudGVzdAkxOTcwLTAxLTAxIDAwOjAwOjAw ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRl c3QJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUy eDVweGl2eApAQCAtMCwwICsxLDY4IEBACisjIEJ1ZyAjNTk2NDEgUHJlcGFyZWQgWEEgdHJhbnNh Y3Rpb24gY2F1c2VzIHNodXRkb3duIGhhbmcgYWZ0ZXIgYSBjcmFzaAorCistLSBzb3VyY2UgaW5j bHVkZS9ub3RfZW1iZWRkZWQuaW5jCistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX2lubm9kYi5pbmMK KworQ1JFQVRFIFRBQkxFIHQoYSBJTlQgUFJJTUFSWSBLRVksIGIgSU5UKUVOR0lORT1Jbm5vREI7 CitJTlNFUlQgSU5UTyB0IFZBTFVFUygyLDIpLCg0LDQpLCg4LDgpLCgxNiwxNiksKDMyLDMyKTsK K0NPTU1JVDsKK1hBIFNUQVJUICcxMjMnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMSwxKTsKK1hB IEVORCAnMTIzJzsKK1hBIFBSRVBBUkUgJzEyMyc7CisKK0NPTk5FQ1QgKGNvbjEsbG9jYWxob3N0 LHJvb3QsLCk7CitDT05ORUNUSU9OIGNvbjE7CisKK1hBIFNUQVJUICc0NTYnOworSU5TRVJUIElO VE8gdCBWQUxVRVMoMyw0NyksKDUsNjcpOworVVBEQVRFIHQgU0VUIGI9MipiIFdIRVJFIGEgQkVU V0VFTiA1IEFORCA4OworWEEgRU5EICc0NTYnOworWEEgUFJFUEFSRSAnNDU2JzsKKworQ09OTkVD VCAoY29uMixsb2NhbGhvc3Qscm9vdCwsKTsKK0NPTk5FQ1RJT04gY29uMjsKKworWEEgU1RBUlQg Jzc4OSc7CitVUERBVEUgdCBTRVQgYj00KmEgV0hFUkUgYT0zMjsKK1hBIEVORCAnNzg5JzsKK1hB IFBSRVBBUkUgJzc4OSc7CisKK0NPTk5FQ1QgKGNvbjMsbG9jYWxob3N0LHJvb3QsLCk7CitDT05O RUNUSU9OIGNvbjM7CisjIFRoZSBzZXJ2ZXIgd291bGQgaXNzdWUgdGhpcyB3YXJuaW5nIG9uIHJl c3RhcnQuCitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJh bnNhY3Rpb25zIik7CisKKyMgS2lsbCB0aGUgc2VydmVyIHdpdGhvdXQgc2VuZGluZyBhIHNodXRk b3duIGNvbW1hbmQKKy0tIGV4ZWMgZWNobyAid2FpdCIgPiAkTVlTUUxURVNUX1ZBUkRJUi90bXAv bXlzcWxkLjEuZXhwZWN0CistLSBzaHV0ZG93bl9zZXJ2ZXIgMAorLS0gc291cmNlIGluY2x1ZGUv d2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5jCisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0g ZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBl Y3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0tIHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29u bmVjdGVkX2FnYWluLmluYworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVO Q09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworQ09NTUlUOworCisjIFNodXQgZG93biB0aGUg c2VydmVyLiBUaGlzIHdvdWxkIGhhbmcgYmVjYXVzZSBvZiB0aGUgYnVnLgorLS0gZXhlYyBlY2hv ICJ3YWl0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIHNodXRk b3duX3NlcnZlcgorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5j CisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0gZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNR TFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0t IHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYworCitTRVQgVFJB TlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9N IHQ7CitDT01NSVQ7CitYQSBSRUNPVkVSOworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFD SyAnNDU2JzsKK1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKKworRFJPUCBUQUJM RSB0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfY2xhc3MuY2MnCi0tLSBhL3NxbC9zcWxf Y2xhc3MuY2MJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDQwODE4NDIxNC03dWN5 MnBmcDc0dGR1OWR5CisrKyBiL3NxbC9zcWxfY2xhc3MuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUyeDVweGl2eApAQCAtMzg4Miw2ICszODgy LDcgQEAgYm9vbCB4aWRfY2FjaGVfaW5zZXJ0KFhJRCAqeGlkLCBlbnVtIHhhXwogICAgIHhzLT54 YV9zdGF0ZT14YV9zdGF0ZTsKICAgICB4cy0+eGlkLnNldCh4aWQpOwogICAgIHhzLT5pbl90aGQ9 MDsKKyAgICB4cy0+cm1fZXJyb3I9MDsKICAgICByZXM9bXlfaGFzaF9pbnNlcnQoJnhpZF9jYWNo ZSwgKHVjaGFyKil4cyk7CiAgIH0KICAgbXlzcWxfbXV0ZXhfdW5sb2NrKCZMT0NLX3hpZF9jYWNo ZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9k Yi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDpr ZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwNDA4MTg0MjE0LTd1Y3kycGZwNzR0ZHU5ZHkKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDQxMTE0NTc0Ny0xNTFvbmlldTJ4NXB4aXZ4CkBAIC02NjgxLDEw ICs2NjgxLDYgQEAgY3JlYXRlX3RhYmxlX2RlZigKIAlEQlVHX1BSSU5UKCJlbnRlciIsICgidGFi bGVfbmFtZTogJXMiLCB0YWJsZV9uYW1lKSk7CiAKIAl1dF9hKHRyeC0+bXlzcWxfdGhkICE9IE5V TEwpOwotCWlmIChJU19NQUdJQ19UQUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKHRhYmxlX25h bWUsCi0JCQkJCQkgIChUSEQqKSB0cngtPm15c3FsX3RoZCkpIHsKLQkJREJVR19SRVRVUk4oSEFf RVJSX0dFTkVSSUMpOwotCX0KIAogCS8qIE15U1FMIGRvZXMgdGhlIG5hbWUgbGVuZ3RoIGNoZWNr LiBCdXQgd2UgZG8gYWRkaXRpb25hbCBjaGVjawogCW9uIHRoZSBuYW1lIGxlbmd0aCBoZXJlICov CkBAIC02ODA1LDYgKzY4MDEsOCBAQCBlcnJfY29sOgogCQkJY29sX2xlbik7CiAJfQogCisJc3J2 X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOworCiAJZXJy b3IgPSByb3dfY3JlYXRlX3RhYmxlX2Zvcl9teXNxbCh0YWJsZSwgdHJ4KTsKIAogCWlmIChlcnJv ciA9PSBEQl9EVVBMSUNBVEVfS0VZKSB7CkBAIC03MjIyLDM2ICs3MjIwLDE1IEBAIGhhX2lubm9i YXNlOjpjcmVhdGUoCiAJCURCVUdfUkVUVVJOKEhBX0VSUl9UT19CSUdfUk9XKTsKIAl9CiAKLQkv KiBHZXQgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0aGQsIG9y IGNyZWF0ZSBvbmUKLQlpZiBub3QgeWV0IGNyZWF0ZWQgKi8KLQotCXBhcmVudF90cnggPSBjaGVj a190cnhfZXhpc3RzKHRoZCk7Ci0KLQkvKiBJbiBjYXNlIE15U1FMIGNhbGxzIHRoaXMgaW4gdGhl IG1pZGRsZSBvZiBhIFNFTEVDVCBxdWVyeSwgcmVsZWFzZQotCXBvc3NpYmxlIGFkYXB0aXZlIGhh c2ggbGF0Y2ggdG8gYXZvaWQgZGVhZGxvY2tzIG9mIHRocmVhZHMgKi8KLQotCXRyeF9zZWFyY2hf bGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwYXJlbnRfdHJ4KTsKLQotCXRyeCA9IGlubm9iYXNl X3RyeF9hbGxvY2F0ZSh0aGQpOwotCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dl cl9jYXNlX3RhYmxlX25hbWVzOwotCiAJc3RyY3B5KG5hbWUyLCBuYW1lKTsKIAogCW5vcm1hbGl6 ZV90YWJsZV9uYW1lKG5vcm1fbmFtZSwgbmFtZTIpOwogCi0JLyogTGF0Y2ggdGhlIElubm9EQiBk YXRhIGRpY3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKLQlvciBsb2Nr IHdhaXRzIGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGEgdGFibGUgY3JlYXRlIG9wZXJhdGlvbi4K LQlEcm9wIHRhYmxlIGV0Yy4gZG8gdGhpcyBsYXRjaGluZyBpbiByb3cwbXlzcWwuYy4gKi8KLQot CXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwotCiAJLyogQ3JlYXRlIHRoZSB0 YWJsZSBkZWZpbml0aW9uIGluIElubm9EQiAqLwogCiAJLyogVmFsaWRhdGUgY3JlYXRlIG9wdGlv bnMgaWYgaW5ub2RiX3N0cmljdF9tb2RlIGlzIHNldC4gKi8KIAlpZiAoIWNyZWF0ZV9vcHRpb25z X2FyZV92YWxpZCh0aGQsIGZvcm0sIGNyZWF0ZV9pbmZvKSkgewotCQllcnJvciA9IEVSX0lMTEVH QUxfSEFfQ1JFQVRFX09QVElPTjsKLQkJZ290byBjbGVhbnVwOworCQlEQlVHX1JFVFVSTihFUl9J TExFR0FMX0hBX0NSRUFURV9PUFRJT04pOwogCX0KIAogCWlmIChjcmVhdGVfaW5mby0+a2V5X2Js b2NrX3NpemUpIHsKQEAgLTczOTMsMTYgKzczNzAsMzcgQEAgaGFfaW5ub2Jhc2U6OmNyZWF0ZSgK IAogCS8qIENoZWNrIGZvciBuYW1lIGNvbmZsaWN0cyAod2l0aCByZXNlcnZlZCBuYW1lKSBmb3IK IAlhbnkgdXNlciBpbmRpY2VzIHRvIGJlIGNyZWF0ZWQuICovCi0JaWYgKGlubm9iYXNlX2luZGV4 X25hbWVfaXNfcmVzZXJ2ZWQodHJ4LCBmb3JtLT5rZXlfaW5mbywKKwlpZiAoaW5ub2Jhc2VfaW5k ZXhfbmFtZV9pc19yZXNlcnZlZCh0aGQsIGZvcm0tPmtleV9pbmZvLAogCQkJCQkgICAgZm9ybS0+ cy0+a2V5cykpIHsKLQkJZXJyb3IgPSAtMTsKLQkJZ290byBjbGVhbnVwOworCQlEQlVHX1JFVFVS TigtMSk7CisJfQorCisJaWYgKElTX01BR0lDX1RBQkxFX0FORF9VU0VSX0RFTklFRF9BQ0NFU1Mo bm9ybV9uYW1lLCB0aGQpKSB7CisJCURCVUdfUkVUVVJOKEhBX0VSUl9HRU5FUklDKTsKIAl9CiAK IAlpZiAoY3JlYXRlX2luZm8tPm9wdGlvbnMgJiBIQV9MRVhfQ1JFQVRFX1RNUF9UQUJMRSkgewog CQlmbGFnczIgfD0gRElDVF9URjJfVEVNUE9SQVJZOwogCX0KIAorCS8qIEdldCB0aGUgdHJhbnNh Y3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRoZCwgb3IgY3JlYXRlIG9uZQorCWlm IG5vdCB5ZXQgY3JlYXRlZCAqLworCisJcGFyZW50X3RyeCA9IGNoZWNrX3RyeF9leGlzdHModGhk KTsKKworCS8qIEluIGNhc2UgTXlTUUwgY2FsbHMgdGhpcyBpbiB0aGUgbWlkZGxlIG9mIGEgU0VM RUNUIHF1ZXJ5LCByZWxlYXNlCisJcG9zc2libGUgYWRhcHRpdmUgaGFzaCBsYXRjaCB0byBhdm9p ZCBkZWFkbG9ja3Mgb2YgdGhyZWFkcyAqLworCisJdHJ4X3NlYXJjaF9sYXRjaF9yZWxlYXNlX2lm X3Jlc2VydmVkKHBhcmVudF90cngpOworCisJdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHRo ZCk7CisKKwkvKiBMYXRjaCB0aGUgSW5ub0RCIGRhdGEgZGljdGlvbmFyeSBleGNsdXNpdmVseSBz byB0aGF0IG5vIGRlYWRsb2NrcworCW9yIGxvY2sgd2FpdHMgY2FuIGhhcHBlbiBpbiBpdCBkdXJp bmcgYSB0YWJsZSBjcmVhdGUgb3BlcmF0aW9uLgorCURyb3AgdGFibGUgZXRjLiBkbyB0aGlzIGxh dGNoaW5nIGluIHJvdzBteXNxbC5jLiAqLworCisJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9u YXJ5KHRyeCk7CisKIAllcnJvciA9IGNyZWF0ZV90YWJsZV9kZWYodHJ4LCBmb3JtLCBub3JtX25h bWUsCiAJCWNyZWF0ZV9pbmZvLT5vcHRpb25zICYgSEFfTEVYX0NSRUFURV9UTVBfVEFCTEUgPyBu YW1lMiA6IE5VTEwsCiAJCWZsYWdzLCBmbGFnczIpOwpAQCAtNzY3MSwxNCArNzY2OSwxNCBAQCBo YV9pbm5vYmFzZTo6ZGVsZXRlX3RhYmxlKAogCiAJdHJ4ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRl KHRoZCk7CiAKLQlzcnZfbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IGxvd2VyX2Nhc2VfdGFibGVf bmFtZXM7Ci0KIAluYW1lX2xlbiA9IHN0cmxlbihuYW1lKTsKIAogCXV0X2EobmFtZV9sZW4gPCAx MDAwKTsKIAogCS8qIERyb3AgdGhlIHRhYmxlIGluIElubm9EQiAqLwogCisJc3J2X2xvd2VyX2Nh c2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOworCiAJZXJyb3IgPSByb3df ZHJvcF90YWJsZV9mb3JfbXlzcWwobm9ybV9uYW1lLCB0cngsCiAJCQkJCSB0aGRfc3FsX2NvbW1h bmQodGhkKQogCQkJCQkgPT0gU1FMQ09NX0RST1BfREIpOwpAQCAtNzc5MCw4ICs3Nzg4LDYgQEAg aW5ub2Jhc2VfcmVuYW1lX3RhYmxlKAogCWNoYXIqCW5vcm1fdG87CiAJY2hhcioJbm9ybV9mcm9t OwogCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVz OwotCiAJLy8gTWFnaWMgbnVtYmVyIDY0IGFyYml0cmFyeQogCW5vcm1fdG8gPSAoY2hhciopIG15 X21hbGxvYyhzdHJsZW4odG8pICsgNjQsIE1ZRigwKSk7CiAJbm9ybV9mcm9tID0gKGNoYXIqKSBt eV9tYWxsb2Moc3RybGVuKGZyb20pICsgNjQsIE1ZRigwKSk7CkBAIC03ODA2LDYgKzc4MDIsOCBA QCBpbm5vYmFzZV9yZW5hbWVfdGFibGUoCiAJCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFy eSh0cngpOwogCX0KIAorCXNydl9sb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gbG93ZXJfY2FzZV90 YWJsZV9uYW1lczsKKwogCWVycm9yID0gcm93X3JlbmFtZV90YWJsZV9mb3JfbXlzcWwoCiAJCW5v cm1fZnJvbSwgbm9ybV90bywgdHJ4LCBsb2NrX2FuZF9jb21taXQpOwogCkBAIC0xMDc5MCw3ICsx MDc4OCw3IEBAIGlubm9iYXNlX2NvbW1pdF9ieV94aWQoCiAKIAlpZiAodHJ4KSB7CiAJCWlubm9i YXNlX2NvbW1pdF9sb3codHJ4KTsKLQorCQl0cnhfZnJlZV9mb3JfYmFja2dyb3VuZCh0cngpOwog CQlyZXR1cm4oWEFfT0spOwogCX0gZWxzZSB7CiAJCXJldHVybihYQUVSX05PVEEpOwpAQCAtMTA4 MTYsNyArMTA4MTQsOSBAQCBpbm5vYmFzZV9yb2xsYmFja19ieV94aWQoCiAJdHJ4ID0gdHJ4X2dl dF90cnhfYnlfeGlkKHhpZCk7CiAKIAlpZiAodHJ4KSB7Ci0JCXJldHVybihpbm5vYmFzZV9yb2xs YmFja190cngodHJ4KSk7CisJCWludAlyZXQgPSBpbm5vYmFzZV9yb2xsYmFja190cngodHJ4KTsK KwkJdHJ4X2ZyZWVfZm9yX2JhY2tncm91bmQodHJ4KTsKKwkJcmV0dXJuKHJldCk7CiAJfSBlbHNl IHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7CiAJfQpAQCAtMTE5OTQsMTcgKzExOTk0LDE3IEBAIHNo b3dfaW5ub2RiX3ZhcnMoCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVGhpcyBmdW5jdGlvbiBjaGVja3MgZWFj aCBpbmRleCBuYW1lIGZvciBhIHRhYmxlIGFnYWluc3QgcmVzZXJ2ZWQKLXN5c3RlbSBkZWZhdWx0 IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lIG1hdGNoZXMs Ci10aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNsaWVudCwg YW5kIHJldHVybnMgdHJ1ZS4gKi8KK3N5c3RlbSBkZWZhdWx0IHByaW1hcnkgaW5kZXggbmFtZSAn R0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lCittYXRjaGVzLCB0aGlzIGZ1bmN0aW9uIHB1c2hl cyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNsaWVudCwKK2FuZCByZXR1cm5zIHRydWUuCitA cmV0dXJuIHRydWUgaWYgdGhlIGluZGV4IG5hbWUgbWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAq LwogZXh0ZXJuICJDIiBVTklWX0lOVEVSTgogYm9vbAogaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19y ZXNlcnZlZCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJCS8qIG91dDog dHJ1ZSBpZiBhbiBpbmRleCBuYW1lCi0JCQkJCW1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8K LQljb25zdCB0cnhfdCoJdHJ4LAkJLyogaW46IElubm9EQiB0cmFuc2FjdGlvbiBoYW5kbGUgKi8K LQljb25zdCBLRVkqCWtleV9pbmZvLAkvKiBpbjogSW5kZXhlcyB0byBiZSBjcmVhdGVkICovCi0J dWxpbnQJCW51bV9vZl9rZXlzKQkvKiBpbjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KKwlUSEQqCQl0 aGQsCQkvKiE8IGluL291dDogTXlTUUwgY29ubmVjdGlvbiAqLworCWNvbnN0IEtFWSoJa2V5X2lu Zm8sCS8qITwgaW46IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLworCXVsaW50CQludW1fb2Zfa2V5 cykJLyohPCBpbjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KIAkJCQkJYmUgY3JlYXRlZC4gKi8KIHsK IAljb25zdCBLRVkqCWtleTsKQEAgLTEyMDE2LDcgKzEyMDE2LDcgQEAgaW5ub2Jhc2VfaW5kZXhf bmFtZV9pc19yZXNlcnZlZCgKIAkJaWYgKGlubm9iYXNlX3N0cmNhc2VjbXAoa2V5LT5uYW1lLAog CQkJCQlpbm5vYmFzZV9pbmRleF9yZXNlcnZlX25hbWUpID09IDApIHsKIAkJCS8qIFB1c2ggd2Fy bmluZyB0byBteXNxbCAqLwotCQkJcHVzaF93YXJuaW5nX3ByaW50ZigoVEhEKikgdHJ4LT5teXNx bF90aGQsCisJCQlwdXNoX3dhcm5pbmdfcHJpbnRmKHRoZCwKIAkJCQkJICAgIE1ZU1FMX0VSUk9S OjpXQVJOX0xFVkVMX1dBUk4sCiAJCQkJCSAgICBFUl9XUk9OR19OQU1FX0ZPUl9JTkRFWCwKIAkJ CQkJICAgICJDYW5ub3QgQ3JlYXRlIEluZGV4IHdpdGggbmFtZSAiCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0y MDExMDQwODE4NDIxNC03dWN5MnBmcDc0dGR1OWR5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFu ZGxlci9oYV9pbm5vZGIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTE0 NTc0Ny0xNTFvbmlldTJ4NXB4aXZ4CkBAIC0zODgsMTUgKzM4OCwxNCBAQCBpbm5vYmFzZV90cnhf YWxsb2NhdGUoCiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBlYWNoIGluZGV4IG5hbWUgZm9yIGEgdGFi bGUgYWdhaW5zdCByZXNlcnZlZAogc3lzdGVtIGRlZmF1bHQgcHJpbWFyeSBpbmRleCBuYW1lICdH RU5fQ0xVU1RfSU5ERVgnLiBJZiBhIG5hbWUKIG1hdGNoZXMsIHRoaXMgZnVuY3Rpb24gcHVzaGVz IGFuIHdhcm5pbmcgbWVzc2FnZSB0byB0aGUgY2xpZW50LAotYW5kIHJldHVybnMgdHJ1ZS4gKi8K K2FuZCByZXR1cm5zIHRydWUuCitAcmV0dXJuIHRydWUgaWYgdGhlIGluZGV4IG5hbWUgbWF0Y2hl cyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwogZXh0ZXJuICJDIgogYm9vbAogaW5ub2Jhc2VfaW5kZXhf bmFtZV9pc19yZXNlcnZlZCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0JCQkJ CS8qIG91dDogdHJ1ZSBpZiB0aGUgaW5kZXggbmFtZQotCQkJCQltYXRjaGVzIHRoZSByZXNlcnZl ZCBuYW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJCS8qIGluOiBJbm5vREIgdHJhbnNhY3Rpb24g aGFuZGxlICovCi0JY29uc3QgS0VZKglrZXlfaW5mbywJLyogaW46IEluZGV4ZXMgdG8gYmUgY3Jl YXRlZCAqLwotCXVsaW50CQludW1fb2Zfa2V5cyk7CS8qIGluOiBOdW1iZXIgb2YgaW5kZXhlcyB0 bworCVRIRCoJCXRoZCwJCS8qITwgaW4vb3V0OiBNeVNRTCBjb25uZWN0aW9uICovCisJY29uc3Qg S0VZKglrZXlfaW5mbywJLyohPCBpbjogSW5kZXhlcyB0byBiZSBjcmVhdGVkICovCisJdWxpbnQJ CW51bV9vZl9rZXlzKTsJLyohPCBpbjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KIAkJCQkJYmUgY3Jl YXRlZC4gKi8KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBh bHRlci5jYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwNDA4MTg0MjE0LTd1Y3ky cGZwNzR0ZHU5ZHkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIu Y2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUy eDVweGl2eApAQCAtNjI5LDIxICs2MjksMTUgQEAgaW5ub2Jhc2VfYWRkX2luZGV4X2NsZWFudXAo CiAvKj09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQs CQkvKiE8IGluL291dDogcHJlYnVpbHQgKi8KIAl0cnhfdCoJCXRyeCwJCQkvKiE8IGluL291dDog dHJhbnNhY3Rpb24gKi8KLQlkaWN0X3RhYmxlX3QqCXRhYmxlLAkJCS8qITwgaW4vb3V0OiB0YWJs ZSBvbiB3aGljaAorCWRpY3RfdGFibGVfdCoJdGFibGUpCQkJLyohPCBpbi9vdXQ6IHRhYmxlIG9u IHdoaWNoCiAJCQkJCQl0aGUgaW5kZXhlcyB3ZXJlIGdvaW5nIHRvIGJlCiAJCQkJCQljcmVhdGVk ICovCi0JbWVtX2hlYXBfdCoJaGVhcCkJCQkvKiE8IGluL293bjogaGVhcCB0aGF0IHdhcwotCQkJ CQkJZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIGluZGV4Ci0JCQkJCQljcmVhdGlvbiAqLwogewot CW1lbV9oZWFwX2ZyZWUoaGVhcCk7Ci0KIAl0cnhfcm9sbGJhY2tfdG9fc2F2ZXBvaW50KHRyeCwg TlVMTCk7CiAKIAl1dF9hKHRyeCAhPSBwcmVidWlsdC0+dHJ4KTsKIAogCXRyeF9mcmVlX2Zvcl9t eXNxbCh0cngpOwotCXRyeCA9IE5VTEw7CiAKIAl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWls dC0+dHJ4KTsKIApAQCAtNjUzLDcgKzY0Nyw3IEBAIGlubm9iYXNlX2FkZF9pbmRleF9jbGVhbnVw KAogCiAJCWRpY3RfbXV0ZXhfZW50ZXJfZm9yX215c3FsKCk7CiAKLQkJLyogTm90ZTogVGhpcyBj aGVjayBleGx1ZGVzIHRoZSBzeXN0ZW0gdGFibGVzLiBIb3dldmVyLCB3ZQorCQkvKiBOb3RlOiBU aGlzIGNoZWNrIGV4Y2x1ZGVzIHRoZSBzeXN0ZW0gdGFibGVzLiBIb3dldmVyLCB3ZQogCQlzaG91 bGQgYmUgc2FmZSBiZWNhdXNlIHVzZXJzIGNhbm5vdCBhZGQgaW5kZXhlcyB0byBzeXN0ZW0KIAkg ICAgICAgIHRhYmxlcy4gKi8KIApAQCAtNzA2LDQzICs3MDAsMzkgQEAgaGFfaW5ub2Jhc2U6OmFk ZF9pbmRleCgKIAogCXVwZGF0ZV90aGQoKTsKIAotCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAy NCk7Ci0KIAkvKiBJbiBjYXNlIE15U1FMIGNhbGxzIHRoaXMgaW4gdGhlIG1pZGRsZSBvZiBhIFNF TEVDVCBxdWVyeSwgcmVsZWFzZQogCXBvc3NpYmxlIGFkYXB0aXZlIGhhc2ggbGF0Y2ggdG8gYXZv aWQgZGVhZGxvY2tzIG9mIHRocmVhZHMuICovCiAJdHJ4X3NlYXJjaF9sYXRjaF9yZWxlYXNlX2lm X3Jlc2VydmVkKHByZWJ1aWx0LT50cngpOwotCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZF94YShw cmVidWlsdC0+dHJ4KTsKIAotCS8qIENyZWF0ZSBhIGJhY2tncm91bmQgdHJhbnNhY3Rpb24gZm9y IHRoZSBvcGVyYXRpb25zIG9uCi0JdGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZXMuICovCi0JdHJ4 ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHVzZXJfdGhkKTsKLQl0cnhfc3RhcnRfaWZfbm90X3N0 YXJ0ZWRfeGEodHJ4KTsKKwkvKiBDaGVjayBpZiB0aGUgaW5kZXggbmFtZSBpcyByZXNlcnZlZC4g Ki8KKwlpZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh1c2VyX3RoZCwga2V5X2lu Zm8sIG51bV9vZl9rZXlzKSkgeworCQlEQlVHX1JFVFVSTigtMSk7CisJfQogCiAJaW5kZXhlZF90 YWJsZSA9IGRpY3RfdGFibGVfb3Blbl9vbl9uYW1lKHByZWJ1aWx0LT50YWJsZS0+bmFtZSwgRkFM U0UpOwogCiAJaW5ub2RiX3RhYmxlID0gaW5kZXhlZF90YWJsZTsKIAogCWlmIChVTklWX1VOTElL RUxZKCFpbm5vZGJfdGFibGUpKSB7Ci0JCWlubm9iYXNlX2FkZF9pbmRleF9jbGVhbnVwKHByZWJ1 aWx0LCB0cngsIE5VTEwsIGhlYXApOwotCiAJCURCVUdfUkVUVVJOKEhBX0VSUl9OT19TVUNIX1RB QkxFKTsKIAl9CiAKLQkvKiBDaGVjayBpZiB0aGUgaW5kZXggbmFtZSBpcyByZXNlcnZlZC4gKi8K LQlpZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh0cngsIGtleV9pbmZvLCBudW1f b2Zfa2V5cykpIHsKLQkJZXJyb3IgPSAtMTsKLQl9IGVsc2UgewotCQkvKiBDaGVjayB0aGF0IGlu ZGV4IGtleXMgYXJlIHNlbnNpYmxlICovCi0JCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfaW5kZXhf a2V5cyhrZXlfaW5mbywgbnVtX29mX2tleXMsCi0JCQkJCQkgIGlubm9kYl90YWJsZSk7Ci0JfQor CS8qIENoZWNrIHRoYXQgaW5kZXgga2V5cyBhcmUgc2Vuc2libGUgKi8KKwllcnJvciA9IGlubm9i YXNlX2NoZWNrX2luZGV4X2tleXMoa2V5X2luZm8sIG51bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUp OwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoZXJyb3IpKSB7Ci0JCWlubm9iYXNlX2FkZF9pbmRleF9j bGVhbnVwKHByZWJ1aWx0LCB0cngsIGlubm9kYl90YWJsZSwgaGVhcCk7Ci0KKwkJZGljdF90YWJs ZV9jbG9zZShpbm5vZGJfdGFibGUsIEZBTFNFKTsKIAkJREJVR19SRVRVUk4oZXJyb3IpOwogCX0K IAorCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CisJdHJ4X3N0YXJ0X2lmX25vdF9zdGFy dGVkKHByZWJ1aWx0LT50cngpOworCisJLyogQ3JlYXRlIGEgYmFja2dyb3VuZCB0cmFuc2FjdGlv biBmb3IgdGhlIG9wZXJhdGlvbnMgb24KKwl0aGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlcy4gKi8K Kwl0cnggPSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodXNlcl90aGQpOworCXRyeF9zdGFydF9pZl9u b3Rfc3RhcnRlZCh0cngpOworCiAJLyogV2UgZG9uJ3Qgd2FudCB0aGlzIHRhYmxlIHRvIGJlIGV2 aWN0ZWQgZnJvbSB0aGUgY2FjaGUgd2hpbGUgd2UKIAlhcmUgYnVpbGRpbmcgYW4gaW5kZXggb24g aXQuIEFub3RoZXIgaXNzdWUgaXMgdGhhdCB3aGlsZSB3ZSBhcmUKIAlidWlsZGluZyB0aGUgaW5k ZXggdGhpcyB0YWJsZSBjb3VsZCBiZSByZWZlcnJlZCB0byBpbiBhIGZvcmVpZ24KQEAgLTgzMCw5 ICs4MjAsMTAgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAkJCXV0X2QoZGljdF90YWJsZV9j aGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2RiX3RhYmxlLAogCQkJCQkJCSAgICAgIEZBTFNFKSk7 CiAJCQlyb3dfbXlzcWxfdW5sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOworCQkJbWVtX2hlYXBf ZnJlZShoZWFwKTsKIAogCQkJaW5ub2Jhc2VfYWRkX2luZGV4X2NsZWFudXAoCi0JCQkJcHJlYnVp bHQsIHRyeCwgaW5ub2RiX3RhYmxlLCBoZWFwKTsKKwkJCQlwcmVidWlsdCwgdHJ4LCBpbm5vZGJf dGFibGUpOwogCiAJCQlEQlVHX1JFVFVSTihlcnJvcik7CiAJCX0KQEAgLTkyOSwxMSArOTIwLDEx IEBAIGVycm9yX2hhbmRsaW5nOgogCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVfdGFibGVzKGlu bm9kYl90YWJsZSwgaW5kZXhlZF90YWJsZSwKIAkJCQkJCXRtcF9uYW1lLCB0cngpOwogCi0JCWlm IChlcnJvciAhPSBEQl9TVUNDRVNTKSB7CisJCWRpY3RfdGFibGVfY2xvc2UoaW5ub2RiX3RhYmxl LCBkaWN0X2xvY2tlZCk7CisJCXV0X2EoaW5ub2RiX3RhYmxlLT5uX3JlZl9jb3VudCA9PSAxKTsK IAotCQkJZGljdF90YWJsZV9jbG9zZShpbm5vZGJfdGFibGUsIGRpY3RfbG9ja2VkKTsKKwkJaWYg KGVycm9yICE9IERCX1NVQ0NFU1MpIHsKIAotCQkJdXRfYShpbm5vZGJfdGFibGUtPm5fcmVmX2Nv dW50ID09IDEpOwogCQkJdXRfYShpbmRleGVkX3RhYmxlLT5uX3JlZl9jb3VudCA9PSAwKTsKIAog CQkJcm93X21lcmdlX2Ryb3BfdGFibGUodHJ4LCBpbmRleGVkX3RhYmxlKTsKQEAgLTk1MywxMCAr OTQ0LDYgQEAgZXJyb3JfaGFuZGxpbmc6CiAKIAkJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVp bHQtPnRyeCk7CiAKLQkJZGljdF90YWJsZV9jbG9zZShpbm5vZGJfdGFibGUsIGRpY3RfbG9ja2Vk KTsKLQotCQl1dF9hKGlubm9kYl90YWJsZS0+bl9yZWZfY291bnQgPT0gMSk7Ci0KIAkJcm93X3By ZWJ1aWx0X2ZyZWUocHJlYnVpbHQsIFRSVUUpOwogCiAJCXV0X2EoaW5ub2RiX3RhYmxlLT5uX3Jl Zl9jb3VudCA9PSAwKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvdHJ4MHN5cy5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oCXJl dmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTA0MDgxODQyMTQtN3VjeTJwZnA3NHRkdTlk eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHN5cy5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQ1NzQ3LTE1MW9uaWV1Mng1cHhpdngKQEAgLTQ5NCw3 ICs0OTQsNyBAQCB0cnhfc3lzX2dldF9uX3RyeCh2b2lkKTsKIC8qPT09PT09PT09PT09PT09PT09 PSovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLUNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIHRyYW5z YWN0aW9ucy4KK0NoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIChub24tcHJlcGFyZWQpIHRy YW5zYWN0aW9ucy4KIEByZXR1cm4gdG90YWwgbnVtYmVyIG9mIGFjdGl2ZSB0cmFuc2FjdGlvbnMg b3IgMCBpZiBub25lICovCiBVTklWX0lOVEVSTgogdWxpbnQKQEAgLTY3Nyw2ICs2NzcsMTAgQEAg c3RydWN0IHRyeF9zeXNfc3RydWN0ewogCXJ3X2xvY2tfdAlsb2NrOwkJLyohPCByZWFkLXdyaXRl IGxvY2sgcHJvdGVjdGluZyBtb3N0CiAJCQkJCWZpZWxkcyBpbiB0aGlzIHN0cnVjdHVyZSBleGNl cHQgd2hlbgogCQkJCQlub3RlZCBvdGhlcndpc2UgKi8KKwl1bGludAkJbl9teXNxbF90cng7CS8q ITwgTnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBjdXJyZW50bHkKKwkJCQkJYWxsb2NhdGVkIGZvciBN eVNRTCAqLworCXVsaW50CQluX3ByZXBhcmVkX3RyeDsJLyohPCBOdW1iZXIgb2YgdHJhbnNhY3Rp b25zIGN1cnJlbnRseQorCQkJCQlpbiB0aGUgWEEgUFJFUEFSRUQgc3RhdGUgKi8KIAl0cnhfaWRf dAltYXhfdHJ4X2lkOwkvKiE8IFRoZSBzbWFsbGVzdCBudW1iZXIgbm90IHlldAogCQkJCQlhc3Np Z25lZCBhcyBhIHRyYW5zYWN0aW9uIGlkIG9yCiAJCQkJCXRyYW5zYWN0aW9uIG51bWJlciAqLwoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6a2V2aW4ubGV3aXNA b3JhY2xlLmNvbS0yMDExMDQwODE4NDIxNC03dWN5MnBmcDc0dGR1OWR5CisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTA0MTExNDU3NDctMTUxb25pZXUyeDVweGl2eApAQCAtNDIsMTAgKzQyLDYgQEAgQ3JlYXRl ZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJpCiAvKiogRHVtbXkgc2Vzc2lvbiB1c2VkIGN1cnJlbnRs eSBpbiBNeVNRTCBpbnRlcmZhY2UgKi8KIGV4dGVybiBzZXNzX3QqCXRyeF9kdW1teV9zZXNzOwog Ci0vKiogTnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBjdXJyZW50bHkgYWxsb2NhdGVkIGZvciBNeVNR TDogcHJvdGVjdGVkIGJ5Ci10cnhfc3lzLT5sb2NrICovCi1leHRlcm4gdWxpbnQJdHJ4X25fbXlz cWxfdHJhbnNhY3Rpb25zOwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZWxlYXNlcyB0aGUgc2VhcmNo IGxhdGNoIGlmIHRyeCBoYXMgcmVzZXJ2ZWQgaXQuICovCiBVTklWX0lOVEVSTgpAQCAtOTMsMTgg Kzg5LDI2IEBAIHRyeF90KgogdHJ4X2FsbG9jYXRlX2Zvcl9iYWNrZ3JvdW5kKHZvaWQpOwogLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1GcmVlcyBh IHRyYW5zYWN0aW9uIG9iamVjdCBmb3IgTXlTUUwuICovCitGcmVlcyBhIHRyYW5zYWN0aW9uIG9i amVjdCBvZiBhIGJhY2tncm91bmQgb3BlcmF0aW9uIG9mIHRoZSBtYXN0ZXIgdGhyZWFkLiAqLwog VU5JVl9JTlRFUk4KIHZvaWQKLXRyeF9mcmVlX2Zvcl9teXNxbCgKLS8qPT09PT09PT09PT09PT09 Ki8KK3RyeF9mcmVlX2Zvcl9iYWNrZ3JvdW5kKAorLyo9PT09PT09PT09PT09PT09PT09PSovCiAJ dHJ4X3QqCXRyeCk7CS8qITwgaW4sIG93bjogdHJ4IG9iamVjdCAqLwogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgotRnJlZXMgYSB0cmFuc2FjdGlvbiBvYmplY3Qgb2YgYSBiYWNrZ3JvdW5kIG9wZXJhdGlvbiBv ZiB0aGUgbWFzdGVyIHRocmVhZC4gKi8KK0F0IHNodXRkb3duLCBmcmVlcyBhIHRyYW5zYWN0aW9u IG9iamVjdCB0aGF0IGlzIGluIHRoZSBQUkVQQVJFRCBzdGF0ZS4gKi8KIFVOSVZfSU5URVJOCiB2 b2lkCi10cnhfZnJlZV9mb3JfYmFja2dyb3VuZCgKLS8qPT09PT09PT09PT09PT09PT09PT0qLwor dHJ4X2ZyZWVfcHJlcGFyZWQoCisvKj09PT09PT09PT09PT09Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8 IGluLCBvd246IHRyeCBvYmplY3QgKi8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygobm9ubnVs bCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgorRnJlZXMgYSB0cmFuc2FjdGlvbiBvYmplY3QgZm9yIE15 U1FMLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF9mcmVlX2Zvcl9teXNxbCgKKy8qPT09PT09 PT09PT09PT09Ki8KIAl0cnhfdCoJdHJ4KTsJLyohPCBpbiwgb3duOiB0cnggb2JqZWN0ICovCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIENyZWF0ZXMgdHJ4IG9iamVjdHMgZm9yIHRyYW5zYWN0aW9ucyBhbmQgaW5p dGlhbGl6ZXMgdGhlIHRyeCBsaXN0IG9mCkBAIC01NDUsNyArNTQ5LDcgQEAgc3RydWN0IHRyeF9z dHJ1Y3R7CiAJCQkJCWFuZCBBQ1RJVkUtPlBSRVBBUkVELT5DT01NSVRURUQKIAkJCQkJYXJlIHBv c3NpYmxlIHdoZW4gdHJ4LT5pbl90cnhfbGlzdC4KIAkJCQkJVGhlIHRyYW5zaXRpb24gQUNUSVZF LT5QUkVQQVJFRCBpcwotCQkJCQlub3QgcHJvdGVjdGVkIGJ5IGFueSBtdXRleC4KKwkJCQkJcHJv dGVjdGVkIGJ5IHRyeF9zeXMtPmxvY2suCiAJCQkJCVRoZSB0cmFuc2l0aW9ucyBBQ1RJVkUtPkNP TU1JVFRFRAogCQkJCQlhbmQgUFJFUEFSRUQtPkNPTU1JVFRFRCBhcmUgcHJvdGVjdGVkCiAJCQkJ CWJ5IGxvY2tfc3lzLT5tdXRleCBhbmQgdHJ4LT5tdXRleC4KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHVuZG8uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3RyeDB1bmRvLmgJcmV2aWQ6a2V2aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDQw ODE4NDIxNC03dWN5MnBmcDc0dGR1OWR5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90 cngwdW5kby5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQ1NzQ3LTE1 MW9uaWV1Mng1cHhpdngKQEAgLTI5Niw2ICsyOTYsMTUgQEAgdm9pZAogdHJ4X3VuZG9faW5zZXJ0 X2NsZWFudXAoCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIAl0cnhfdCoJdHJ4KTsJLyohPCBp bjogdHJhbnNhY3Rpb24gaGFuZGxlICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0F0IHNodXRkb3du LCBmcmVlcyB0aGUgdW5kbyBsb2dzIG9mIGEgUFJFUEFSRUQgdHJhbnNhY3Rpb24uICovCitVTklW X0lOVEVSTgordm9pZAordHJ4X3VuZG9fZnJlZV9wcmVwYXJlZCgKKy8qPT09PT09PT09PT09PT09 PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbi9vdXQ6IFBSRVBBUkVEIHRyYW5zYWN0aW9uICov CisJVU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKICNlbmRpZiAvKiAhVU5JVl9I T1RCQUNLVVAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFBhcnNlcyB0aGUgcmVkbyBsb2cgZW50cnkgb2YgYW4gdW5k byBsb2cgcGFnZSBpbml0aWFsaXphdGlvbi4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2xvY2svbG9jazBsb2NrLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2Nr MGxvY2suYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwNDA4MTg0MjE0LTd1Y3ky cGZwNzR0ZHU5ZHkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9jay5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQ1NzQ3LTE1MW9uaWV1Mng1cHhpdngK QEAgLTYyMjYsMTUgKzYyMjYsMjAgQEAgbG9ja190cnhfcmVsZWFzZV9sb2NrcygKIC8qPT09PT09 PT09PT09PT09PT09PSovCiAJdHJ4X3QqCXRyeCkJLyohPCBpbi9vdXQ6IHRyYW5zYWN0aW9uICov CiB7CisJaWYgKFVOSVZfVU5MSUtFTFkodHJ4X3N0YXRlX2VxKHRyeCwgVFJYX1NUQVRFX1BSRVBB UkVEKSkpIHsKKwkJcndfbG9ja194X2xvY2soJnRyeF9zeXMtPmxvY2spOworCQl1dF9hKHRyeF9z eXMtPm5fcHJlcGFyZWRfdHJ4ID4gMCk7CisJCXRyeF9zeXMtPm5fcHJlcGFyZWRfdHJ4LS07CisJ CXJ3X2xvY2tfeF91bmxvY2soJnRyeF9zeXMtPmxvY2spOworCX0gZWxzZSB7CisJCXV0X2FkKHRy eF9zdGF0ZV9lcSh0cngsIFRSWF9TVEFURV9BQ1RJVkUpKTsKKwl9CisKIAkvKiBUaGUgdHJhbnNp dGlvbiBvZiB0cngtPnN0YXRlIHRvIFRSWF9TVEFURV9DT01NSVRURURfSU5fTUVNT1JZCiAJaXMg cHJvdGVjdGVkIGJ5IGJvdGggdGhlIGxvY2tfc3lzLT5tdXRleCBhbmQgdGhlIHRyeC0+bXV0ZXgu ICovCiAJbG9ja19tdXRleF9lbnRlcigpOwogCXRyeF9tdXRleF9lbnRlcih0cngpOwogCi0JdXRf YWQodHJ4LT5zdGF0ZSA9PSBUUlhfU1RBVEVfQUNUSVZFCi0JICAgICAgfHwgdHJ4LT5zdGF0ZSA9 PSBUUlhfU1RBVEVfUFJFUEFSRUQpOwotCXV0X2FkKHRyeC0+aW5fdHJ4X2xpc3QpOwotCiAJLyog VGhlIGZvbGxvd2luZyBhc3NpZ25tZW50IG1ha2VzIHRoZSB0cmFuc2FjdGlvbiBjb21taXR0ZWQg aW4gbWVtb3J5CiAJYW5kIG1ha2VzIGl0cyBjaGFuZ2VzIHRvIGRhdGEgdmlzaWJsZSB0byBvdGhl ciB0cmFuc2FjdGlvbnMuCiAJTk9URSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgZGlzY3JlcGFuY3kg ZnJvbSB0aGUgc3RyaWN0IGZvcm1hbAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvbG9nL2xvZzBsb2cuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCXJl dmlkOmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTA0MDgxODQyMTQtN3VjeTJwZnA3NHRkdTlk eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUyeDVweGl2eApAQCAtMzE0MSw5ICsz MTQxLDEwIEBAIGxvb3A6CiAJCWdvdG8gbG9vcDsKIAl9CiAKLQkvKiBDaGVjayB0aGF0IHRoZXJl IGFyZSBubyBsb25nZXIgdHJhbnNhY3Rpb25zLiBXZSBuZWVkIHRoaXMgd2FpdCBldmVuCi0JZm9y IHRoZSAndmVyeSBmYXN0JyBzaHV0ZG93biwgYmVjYXVzZSB0aGUgSW5ub0RCIGxheWVyIG1heSBo YXZlCi0JY29tbWl0dGVkIG9yIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBhbmQgd2UgZG9uJ3Qgd2Fu dCB0byBsb3NlIHRoZW0uICovCisJLyogQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbG9uZ2VyIHRy YW5zYWN0aW9ucywgZXhjZXB0IGZvcgorCVBSRVBBUkVEIG9uZXMuIFdlIG5lZWQgdGhpcyB3YWl0 IGV2ZW4gZm9yIHRoZSAndmVyeSBmYXN0JworCXNodXRkb3duLCBiZWNhdXNlIHRoZSBJbm5vREIg bGF5ZXIgbWF5IGhhdmUgY29tbWl0dGVkIG9yCisJcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGFuZCB3 ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhlbS4gKi8KIAogCXRvdGFsX3RyeCA9IHRyeF9zeXNfYW55 X2FjdGl2ZV90cmFuc2FjdGlvbnMoKTsKIApAQCAtMzE3Nyw5ICszMTc4LDEwIEBAIGxvb3A6CiAK IAkJCXN3aXRjaCAoYWN0aXZlX3RoZCkgewogCQkJY2FzZSBTUlZfTk9ORToKLQkJCQkvKiBUaGlz IHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5Ci0JCQkJY2hlY2tlZCBmb3Ig dGhpcyBjYXNlIGJlZm9yZSBlbnRlcmluZyB0aGUgaWYoKS4KLQkJCQlXZSBoYW5kbGUgaXQgaGVy ZSB0byBhdm9pZCBhIGNvbXBpbGVyIHdvcm5pbmcuICovCisJCQkJLyogVGhpcyBzaG91bGRuJ3Qg aGFwcGVuIGJlY2F1c2Ugd2UndmUKKwkJCQlhbHJlYWR5IGNoZWNrZWQgZm9yIHRoaXMgY2FzZSBi ZWZvcmUKKwkJCQllbnRlcmluZyB0aGUgaWYoKS4gIFdlIGhhbmRsZSBpdCBoZXJlCisJCQkJdG8g YXZvaWQgYSBjb21waWxlciB3YXJuaW5nLiAqLwogCQkJCXV0X2Vycm9yOwogCQkJY2FzZSBTUlZf V09SS0VSOgogCQkJCXRocmVhZF90eXBlID0gIndvcmtlciB0aHJlYWRzIjsKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwc3lzLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvdHJ4L3RyeDBzeXMuYwlyZXZpZDprZXZpbi5sZXdpc0BvcmFjbGUuY29tLTIwMTEwNDA4 MTg0MjE0LTd1Y3kycGZwNzR0ZHU5ZHkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHN5 cy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQ1NzQ3LTE1MW9uaWV1 Mng1cHhpdngKQEAgLTM3LDYgKzM3LDcgQEAgQ3JlYXRlZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJp CiAjaW5jbHVkZSAidHJ4MHJzZWcuaCIKICNpbmNsdWRlICJ0cngwdW5kby5oIgogI2luY2x1ZGUg InNydjBzcnYuaCIKKyNpbmNsdWRlICJzcnYwc3RhcnQuaCIKICNpbmNsdWRlICJ0cngwcHVyZ2Uu aCIKICNpbmNsdWRlICJsb2cwbG9nLmgiCiAjaW5jbHVkZSAibG9nMHJlY3YuaCIKQEAgLTE2MzQs OSArMTYzNSwxMSBAQCB0cnhfc3lzX2Nsb3NlKHZvaWQpCiAvKj09PT09PT09PT09PT09PSovCiB7 CiAJdWxpbnQJCWk7CisJdHJ4X3QqCQl0cng7CiAJcmVhZF92aWV3X3QqCXZpZXc7CiAKIAl1dF9h ZCh0cnhfc3lzICE9IE5VTEwpOworCXV0X2FkKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hV VERPV05fRVhJVF9USFJFQURTKTsKIAogCS8qIENoZWNrIHRoYXQgYWxsIHJlYWQgdmlld3MgYXJl IGNsb3NlZCBleGNlcHQgcmVhZCB2aWV3IG93bmVkCiAJYnkgYSBwdXJnZS4gKi8KQEAgLTE2NzEs NiArMTY3NCwxNCBAQCB0cnhfc3lzX2Nsb3NlKHZvaWQpCiAJdHJ4X2RvdWJsZXdyaXRlID0gTlVM TDsKIAogCXJ3X2xvY2tfeF9sb2NrKCZ0cnhfc3lzLT5sb2NrKTsKKworCS8qIE9ubHkgcHJlcGFy ZWQgdHJhbnNhY3Rpb25zIG1heSBiZSBsZWZ0IGluIHRoZSBzeXN0ZW0uIEZyZWUgdGhlbS4gKi8K Kwl1dF9hKFVUX0xJU1RfR0VUX0xFTih0cnhfc3lzLT50cnhfbGlzdCkgPT0gdHJ4X3N5cy0+bl9w cmVwYXJlZF90cngpOworCisJd2hpbGUgKCh0cnggPSBVVF9MSVNUX0dFVF9GSVJTVCh0cnhfc3lz LT50cnhfbGlzdCkpICE9IE5VTEwpIHsKKwkJdHJ4X2ZyZWVfcHJlcGFyZWQodHJ4KTsKKwl9CisK IAltdXRleF9mcmVlKCZ0cnhfc3lzLT5yZWFkX3ZpZXdfbXV0ZXgpOwogCiAJLyogVGhlcmUgY2Fu J3QgYmUgYW55IGFjdGl2ZSB0cmFuc2FjdGlvbnMuICovCkBAIC0xNzEzLDcgKzE3MjQsNyBAQCB0 cnhfc3lzX2Nsb3NlKHZvaWQpCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLUNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIHRyYW5zYWN0aW9ucy4KK0No ZWNrIGlmIHRoZXJlIGFyZSBhbnkgYWN0aXZlIChub24tcHJlcGFyZWQpIHRyYW5zYWN0aW9ucy4K IEByZXR1cm4gdG90YWwgbnVtYmVyIG9mIGFjdGl2ZSB0cmFuc2FjdGlvbnMgb3IgMCBpZiBub25l ICovCiBVTklWX0lOVEVSTgogdWxpbnQKQEAgLTE3MjUsNyArMTczNiw5IEBAIHRyeF9zeXNfYW55 X2FjdGl2ZV90cmFuc2FjdGlvbnModm9pZCkKIAlyd19sb2NrX3NfbG9jaygmdHJ4X3N5cy0+bG9j ayk7CiAKIAl0b3RhbF90cnggPSBVVF9MSVNUX0dFVF9MRU4odHJ4X3N5cy0+dHJ4X2xpc3QpCi0J ICAgICAgIAkgICsgdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zOworCQkrIHRyeF9zeXMtPm5fbXlz cWxfdHJ4OworCXV0X2EodG90YWxfdHJ4ID49IHRyeF9zeXMtPm5fcHJlcGFyZWRfdHJ4KTsKKwl0 b3RhbF90cnggLT0gdHJ4X3N5cy0+bl9wcmVwYXJlZF90cng7CiAKIAlyd19sb2NrX3NfdW5sb2Nr KCZ0cnhfc3lzLT5sb2NrKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv dHJ4L3RyeDB0cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCXJldmlk OmtldmluLmxld2lzQG9yYWNsZS5jb20tMjAxMTA0MDgxODQyMTQtN3VjeTJwZnA3NHRkdTlkeQor KysgYi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUyeDVweGl2eApAQCAtNDksMTAgKzQ5LDYg QEAgQ3JlYXRlZCAzLzI2LzE5OTYgSGVpa2tpIFR1dXJpCiAvKiogRHVtbXkgc2Vzc2lvbiB1c2Vk IGN1cnJlbnRseSBpbiBNeVNRTCBpbnRlcmZhY2UgKi8KIFVOSVZfSU5URVJOIHNlc3NfdCoJCXRy eF9kdW1teV9zZXNzID0gTlVMTDsKIAotLyoqIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVu dGx5IGFsbG9jYXRlZCBmb3IgTXlTUUw6IHByb3RlY3RlZCBieQotdHJ4X3N5cy0+bG9jayAqLwot VU5JVl9JTlRFUk4gdWxpbnQJCXRyeF9uX215c3FsX3RyYW5zYWN0aW9ucyA9IDA7Ci0KICNpZmRl ZiBVTklWX1BGU19NVVRFWAogLyogS2V5IHRvIHJlZ2lzdGVyIHRoZSBtdXRleCB3aXRoIHBlcmZv cm1hbmNlIHNjaGVtYSAqLwogVU5JVl9JTlRFUk4gbXlzcWxfcGZzX2tleV90CXRyeF9tdXRleF9r ZXk7CkBAIC0xNzEsNyArMTY3LDcgQEAgdHJ4X2FsbG9jYXRlX2Zvcl9teXNxbCh2b2lkKQogCiAJ cndfbG9ja194X2xvY2soJnRyeF9zeXMtPmxvY2spOwogCi0JKyt0cnhfbl9teXNxbF90cmFuc2Fj dGlvbnM7CisJdHJ4X3N5cy0+bl9teXNxbF90cngrKzsKIAogCXV0X2QodHJ4LT5pbl9teXNxbF90 cnhfbGlzdCA9IFRSVUUpOwogCVVUX0xJU1RfQUREX0ZJUlNUKG15c3FsX3RyeF9saXN0LCB0cnhf c3lzLT5teXNxbF90cnhfbGlzdCwgdHJ4KTsKQEAgLTIzMiw4ICsyMjgsNiBAQCB0cnhfZnJlZSgK IAkJcHV0YygnXG4nLCBzdGRlcnIpOwogCX0KIAotCXRyeF9tdXRleF9lbnRlcih0cngpOwotCiAJ dXRfYSh0cngtPm1hZ2ljX24gPT0gVFJYX01BR0lDX04pOwogCiAJdHJ4LT5tYWdpY19uID0gMTEx MTIyMjI7CkBAIC0yNjYsMTYgKzI2MCwxMiBAQCB0cnhfZnJlZSgKIAkJbWVtX2hlYXBfZnJlZSh0 cngtPmdsb2JhbF9yZWFkX3ZpZXdfaGVhcCk7CiAJfQogCi0JdHJ4LT5nbG9iYWxfcmVhZF92aWV3 ID0gTlVMTDsKLQogCXV0X2EodHJ4LT5yZWFkX3ZpZXcgPT0gTlVMTCk7CiAKIAl1dF9hKGliX3Zl Y3Rvcl9pc19lbXB0eSh0cngtPmF1dG9pbmNfbG9ja3MpKTsKIAkvKiBXZSBhbGxvY2F0ZWQgYSBk ZWRpY2F0ZWQgaGVhcCBmb3IgdGhlIHZlY3Rvci4gKi8KIAlpYl92ZWN0b3JfZnJlZSh0cngtPmF1 dG9pbmNfbG9ja3MpOwogCi0JdHJ4X211dGV4X2V4aXQodHJ4KTsKLQogCW11dGV4X2ZyZWUoJnRy eC0+bXV0ZXgpOwogCiAJbWVtX2ZyZWUodHJ4KTsKQEAgLTI5Myw2ICsyODMsNTUgQEAgdHJ4X2Zy ZWVfZm9yX2JhY2tncm91bmQoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0F0IHNodXRkb3duLCBm cmVlcyBhIHRyYW5zYWN0aW9uIG9iamVjdCB0aGF0IGlzIGluIHRoZSBQUkVQQVJFRCBzdGF0ZS4g Ki8KK1VOSVZfSU5URVJOCit2b2lkCit0cnhfZnJlZV9wcmVwYXJlZCgKKy8qPT09PT09PT09PT09 PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4sIG93bjogdHJ4IG9iamVjdCAqLworeworI2lmZGVm IFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKHJ3X2xvY2tfb3duKCZ0cnhfc3lzLT5sb2NrLCBSV19M T0NLX0VYKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisKKwl1dF9hKHRyeF9zdGF0 ZV9lcSh0cngsIFRSWF9TVEFURV9QUkVQQVJFRCkpOworCXV0X2EodHJ4LT5tYWdpY19uID09IFRS WF9NQUdJQ19OKTsKKworCXRyeF91bmRvX2ZyZWVfcHJlcGFyZWQodHJ4KTsKKworCW11dGV4X2Zy ZWUoJnRyeC0+dW5kb19tdXRleCk7CisKKwlpZiAodHJ4LT51bmRvX25vX2FycikgeworCQl0cnhf dW5kb19hcnJfZnJlZSh0cngtPnVuZG9fbm9fYXJyKTsKKwl9CisKKwl1dF9hKHRyeC0+bG9jay53 YWl0X2xvY2sgPT0gTlVMTCk7CisJdXRfYSh0cngtPmxvY2sud2FpdF90aHIgPT0gTlVMTCk7CisK Kwl1dF9hKCF0cngtPmhhc19zZWFyY2hfbGF0Y2gpOworCisJdXRfYSh0cngtPmRpY3Rfb3BlcmF0 aW9uX2xvY2tfbW9kZSA9PSAwKTsKKworCWlmICh0cngtPmxvY2subG9ja19oZWFwKSB7CisJCW1l bV9oZWFwX2ZyZWUodHJ4LT5sb2NrLmxvY2tfaGVhcCk7CisJfQorCisJdXRfYShVVF9MSVNUX0dF VF9MRU4odHJ4LT5sb2NrLnRyeF9sb2NrcykgPT0gMCk7CisKKwlpZiAodHJ4LT5nbG9iYWxfcmVh ZF92aWV3X2hlYXApIHsKKwkJbWVtX2hlYXBfZnJlZSh0cngtPmdsb2JhbF9yZWFkX3ZpZXdfaGVh cCk7CisJfQorCisJdXRfYShpYl92ZWN0b3JfaXNfZW1wdHkodHJ4LT5hdXRvaW5jX2xvY2tzKSk7 CisJaWJfdmVjdG9yX2ZyZWUodHJ4LT5hdXRvaW5jX2xvY2tzKTsKKworCVVUX0xJU1RfUkVNT1ZF KHRyeF9saXN0LCB0cnhfc3lzLT50cnhfbGlzdCwgdHJ4KTsKKworCW11dGV4X2ZyZWUoJnRyeC0+ bXV0ZXgpOworCW1lbV9mcmVlKHRyeCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZyZWVzIGEg dHJhbnNhY3Rpb24gb2JqZWN0IGZvciBNeVNRTC4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCkBAIC0z MDgsNyArMzQ3LDcgQEAgdHJ4X2ZyZWVfZm9yX215c3FsKAogCiAJdXRfYWQodHJ4X3N5c192YWxp ZGF0ZV90cnhfbGlzdCgpKTsKIAotCS0tdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zOworCXRyeF9z eXMtPm5fbXlzcWxfdHJ4LS07CiAKIAlyd19sb2NrX3hfdW5sb2NrKCZ0cnhfc3lzLT5sb2NrKTsK IApAQCAtNDAxLDYgKzQ0MCw3IEBAIHRyeF9yZXN1cnJlY3RfaW5zZXJ0KAogCQkJaWYgKHNydl9m b3JjZV9yZWNvdmVyeSA9PSAwKSB7CiAKIAkJCQl0cngtPnN0YXRlID0gVFJYX1NUQVRFX1BSRVBB UkVEOworCQkJCXRyeF9zeXMtPm5fcHJlcGFyZWRfdHJ4Kys7CiAJCQl9IGVsc2UgewogCQkJCWZw cmludGYoc3RkZXJyLAogCQkJCQkiSW5ub0RCOiBTaW5jZSBpbm5vZGJfZm9yY2VfcmVjb3Zlcnki CkBAIC00NTksNiArNDk5LDExIEBAIHRyeF9yZXN1cnJlY3RfdXBkYXRlX2luX3ByZXBhcmVkX3N0 YXRlKAogCQkJIiB3YXMgaW4gdGhlIFhBIHByZXBhcmVkIHN0YXRlLlxuIiwgdHJ4LT5pZCk7CiAK IAkJaWYgKHNydl9mb3JjZV9yZWNvdmVyeSA9PSAwKSB7CisJCQlpZiAodHJ4X3N0YXRlX2VxKHRy eCwgVFJYX1NUQVRFX05PVF9TVEFSVEVEKSkgeworCQkJCXRyeF9zeXMtPm5fcHJlcGFyZWRfdHJ4 Kys7CisJCQl9IGVsc2UgeworCQkJCXV0X2FkKHRyeF9zdGF0ZV9lcSh0cngsIFRSWF9TVEFURV9Q UkVQQVJFRCkpOworCQkJfQogCiAJCQl0cngtPnN0YXRlID0gVFJYX1NUQVRFX1BSRVBBUkVEOwog CQl9IGVsc2UgewpAQCAtNTUwLDcgKzU5NSw3IEBAIHRyeF9saXN0c19pbml0X2F0X2RiX3N0YXJ0 KHZvaWQpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCS8qIFJlc3N1cnJlY3QgdHJhbnNhY3Rpb25z IHRoYXQgd2VyZSBkb2luZyBpbnNlcnRzLiAqLworCQkvKiBSZXN1cnJlY3QgdHJhbnNhY3Rpb25z IHRoYXQgd2VyZSBkb2luZyBpbnNlcnRzLiAqLwogCQlmb3IgKHVuZG8gPSBVVF9MSVNUX0dFVF9G SVJTVChyc2VnLT5pbnNlcnRfdW5kb19saXN0KTsKIAkJICAgICB1bmRvICE9IE5VTEw7CiAJCSAg ICAgdW5kbyA9IFVUX0xJU1RfR0VUX05FWFQodW5kb19saXN0LCB1bmRvKSkgewpAQCAtODUwLDYg Kzg5NSw3IEBAIHRyeF9jb21taXQoCiAJLyogUmVtb3ZlIHRoZSB0cmFuc2FjdGlvbiBmcm9tIHRo ZSBsaXN0IG9mIGFjdGl2ZSB0cmFuc2FjdGlvbnMKIAlub3cgdGhhdCBpdCBubyBsb25nZXIgaG9s ZHMgYW55IHVzZXIgbG9ja3MuICovCiAKKwl1dF9hZCh0cnhfc3RhdGVfZXEodHJ4LCBUUlhfU1RB VEVfQ09NTUlUVEVEX0lOX01FTU9SWSkpOwogCXJ3X2xvY2tfeF9sb2NrKCZ0cnhfc3lzLT5sb2Nr KTsKIAl1dF9hZCh0cngtPmluX3RyeF9saXN0KTsKIAl1dF9kKHRyeC0+aW5fdHJ4X2xpc3QgPSBG QUxTRSk7CkBAIC0xNTYxLDcgKzE2MDcsMTAgQEAgdHJ4X3ByZXBhcmUoCiAKIAkvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAl1dF9hKHRyeC0+c3RhdGUgPT0gVFJY X1NUQVRFX0FDVElWRSk7CisJcndfbG9ja194X2xvY2soJnRyeF9zeXMtPmxvY2spOwogCXRyeC0+ c3RhdGUgPSBUUlhfU1RBVEVfUFJFUEFSRUQ7CisJdHJ4X3N5cy0+bl9wcmVwYXJlZF90cngrKzsK Kwlyd19sb2NrX3hfdW5sb2NrKCZ0cnhfc3lzLT5sb2NrKTsKIAkvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogCWlmIChsc24pIHsKQEAgLTE3MjcsNyArMTc3Niw4 IEBAIHRyeF9nZXRfdHJ4X2J5X3hpZCgKIAkJb2YgZ3RyaWRfbGVuZ3RoK2JxdWFsX2xlbmd0aCBi eXRlcyBzaG91bGQgYmUKIAkJdGhlIHNhbWUgKi8KIAotCQlpZiAodHJ4X3N0YXRlX2VxKHRyeCwg VFJYX1NUQVRFX1BSRVBBUkVEKQorCQlpZiAodHJ4LT5pc19yZWNvdmVyZWQKKwkJICAgICYmIHRy eF9zdGF0ZV9lcSh0cngsIFRSWF9TVEFURV9QUkVQQVJFRCkKIAkJICAgICYmIHhpZC0+Z3RyaWRf bGVuZ3RoID09IHRyeC0+eGlkLmd0cmlkX2xlbmd0aAogCQkgICAgJiYgeGlkLT5icXVhbF9sZW5n dGggPT0gdHJ4LT54aWQuYnF1YWxfbGVuZ3RoCiAJCSAgICAmJiBtZW1jbXAoeGlkLT5kYXRhLCB0 cngtPnhpZC5kYXRhLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDB1bmRvLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB1bmRvLmMJcmV2aWQ6a2V2 aW4ubGV3aXNAb3JhY2xlLmNvbS0yMDExMDQwODE4NDIxNC03dWN5MnBmcDc0dGR1OWR5CisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB1bmRvLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA0MTExNDU3NDctMTUxb25pZXUyeDVweGl2eApAQCAtMzYsNiArMzYsNyBAQCBD cmVhdGVkIDMvMjYvMTk5NiBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJ0cngwcnNlZy5oIgogI2lu Y2x1ZGUgInRyeDB0cnguaCIKICNpbmNsdWRlICJzcnYwc3J2LmgiCisjaW5jbHVkZSAic3J2MHN0 YXJ0LmgiCiAjaW5jbHVkZSAidHJ4MHJlYy5oIgogI2luY2x1ZGUgInRyeDBwdXJnZS5oIgogI2lu Y2x1ZGUgInNydjBtb24uaCIKQEAgLTE5ODMsNCArMTk4NCwzMSBAQCB0cnhfdW5kb19pbnNlcnRf Y2xlYW51cCgKIAogCW11dGV4X2V4aXQoJihyc2VnLT5tdXRleCkpOwogfQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCitBdCBzaHV0ZG93biwgZnJlZXMgdGhlIHVuZG8gbG9ncyBvZiBhIFBSRVBBUkVEIHRy YW5zYWN0aW9uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF91bmRvX2ZyZWVfcHJlcGFyZWQo CisvKj09PT09PT09PT09PT09PT09PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4vb3V0OiBQUkVQ QVJFRCB0cmFuc2FjdGlvbiAqLworeworCW11dGV4X2VudGVyKCZ0cngtPnJzZWctPm11dGV4KTsK KworCXV0X2FkKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURT KTsKKworCWlmICh0cngtPnVwZGF0ZV91bmRvKSB7CisJCXV0X2EodHJ4LT51cGRhdGVfdW5kby0+ c3RhdGUgPT0gVFJYX1VORE9fUFJFUEFSRUQpOworCQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3Qs IHRyeC0+cnNlZy0+dXBkYXRlX3VuZG9fbGlzdCwKKwkJCSAgICAgICB0cngtPnVwZGF0ZV91bmRv KTsKKwkJdHJ4X3VuZG9fbWVtX2ZyZWUodHJ4LT51cGRhdGVfdW5kbyk7CisJfQorCWlmICh0cngt Pmluc2VydF91bmRvKSB7CisJCXV0X2EodHJ4LT5pbnNlcnRfdW5kby0+c3RhdGUgPT0gVFJYX1VO RE9fUFJFUEFSRUQpOworCQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3QsIHRyeC0+cnNlZy0+aW5z ZXJ0X3VuZG9fbGlzdCwKKwkJCSAgICAgICB0cngtPmluc2VydF91bmRvKTsKKwkJdHJ4X3VuZG9f bWVtX2ZyZWUodHJ4LT5pbnNlcnRfdW5kbyk7CisJfQorCW11dGV4X2V4aXQoJnRyeC0+cnNlZy0+ bXV0ZXgpOworfQogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwoK --===============1188794692== 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: d960d30872c51c3cd4b63577f2b5bfed844b5ad6 # timestamp: 2011-04-11 18:00:17 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: kevin.lewis@stripped\ # 7ucy2pfp74tdu9dy # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWSFlKsUAM7dflHgw//////// /+7////+BAAIAGBDHPoO9trLrt2O2PevvF98AAeffTx2wFsPffZ74+plfW4fXc56d9i8+gFXuO99 9x9UC7ur52AO+tXo+hrp3bkAndwNOqrkAHbUANm6AdzAGc9926Li0AAAA5zl71zve9DXI1xG7bm1 ebzLeQ9Uymzo1Dezjr0o97zXdG3dzqs2rUo5stbTEK5Tu6uzO+vc3mvvrgeeI+cds1W63ISSCAJk 0yMiM0hpqMmj1IxT1GQzUaGnqAAA0GgSgQAgRCNMpiNNVP9RtTCpj1NRpkPUABoAADIGmQCUSnqn mptT1Gk9E0PUeUBo0ADQAAAAAASaURNECZogU/QU2UbUwnqBoZNGmgDTTRkNGQNGgRKIEBPSGJoT KnpPwJkMhT9Q1MgDAmgaAAACpJAJoCGgBGiZNpQ0NqankKekbU9I9TIZlHqHpANqO9sa+AtVVBjB GSQ2gHUhKM7AtkWCiz5gaIdgI2gqkiCIiyFUqe9ispWK13iniatU8z0PalyYJ7UxZAmpyAcsJ9UZ RP1k+IoJgs+yMkqCidJZQQYICdQlFWBihSUKVgYKUpZKwVEIsWKioKKSKvJ8JzP0V/2WHYdfXxyY 4s+LGE21ajoOdUzMZKolLYsQWzTk5NyXiw4vqnrHD5zuf65TnE29c8lPCGXX/jFDk/d6UrJP6u7J uR5P4zo+RSh0MRr8DAn9PFFdhFghwhRgCPBMolF5dwYQQ7PqqQYAB870MURRhsDESiVPlxnAVBHV n9AUPIjw9N5ATVGs44ennPnC2j2ntl2o/nH3TpE6TpZzX2blPGKe76LDsHueT+vmeZArxLzls758 3xYkA+yShjN8QwfiMf71yplTS6Vrsjh6bPNd1ks2woqIYGBVtiiOM5x3uPgu7RBfrvL0/UE57D+s foMVVD1j/BiYPLasfLjGHalM+MeE5/Hjp8pfL5dxatK0kiW79DLDUn3EJXkfzH2hcT8Bg0VGD6F2 zbumtXZS78D+ZwcnYsdDEwfHPUxS4s6keiUTSMjIgyMIwIdi8vkX4WdsbO9Z1VvGdHotZKauod3s xkdiipyx2TnuLd6X4xwEEEBwITBMGLBcvJTqsTmuWO33ekXIjeoYKURSev6nNw7+skhz5odXVXjc MO5bA60M68cTiwUSQBB7dOO3LUJAC6XCS8qiKIilp4YxMoXLjVCnHDkNRCJu3A4NQSC0gNJbCHLM 2UkQNd09bTjnOUjNCJEkKs4m4DGceIK0Uic3tVXi1q+Jwdv6c91QET8flT4/X2HHS7GzPxcuAzx0 yYdM5K1TKJbbVy9fSc81N0ybtxc9293q+6p0E7juUY6yHFzD5ypyXh3uE7Y9PSc2lgvmShnQAoSh k408qpp9soXFWxjku5JmU6476VsyeNJGvfOfCoev5+u2O+gxv2O/yz4qpzdP42unQ30rJ1ZT0YcN l8QfZCBtOZ8qAPlIoY9lp6/Dd8ylHAfId31ef7n+J3H9xcXFi4eDwHA4o0sSNxFIhl2vKHiIAub2 IXHxyHMQ3Hlbd42tZK0CoUw7evorbo9wA8Z6lQ7d+CxIoCwKsFCKAKKCwVVFFiiirFkWIoKxRUQR WCisYAoKKoKKRSCgEUhjwTWmiG7+gAnbDsx7++2nfonBfw14cQuCJqgAyAou2fS0wmuFGyQ8PGWX EiSjMxPVJwQ8nST3KmbqrqQ5jsuYEVx1ApXV7YshEY63Jhokwi4etMZanSHhFKvUm4mUruZUjdhj Rh1OszEjbnm7eW5iKqNCEW7UuBwnIIWSozLjMo1OVWcfhvRSeK404jVc5jti4GAurXJPsAc1nI6F sI4Y1SW2kJSgouVqJe0Th6YoO1adxKCtQQ51QalTCU6XGPGmnSd+m3NcOwuFGCCkCDmpuVIdGsh+ MDxsiLkOcLfdwdMNKXI2U18Vmy0wpLIiUmMobb3cjoega92ePA30AP02iLIEP1l41IaeQupaj1Lw iCNLRQhxK61DnizhtbXR6foXhUXpSQjJYWUeUqNkOgViQooG0UxPQi4UlzddHokukDEh2y5DmcBy MhDDGKq4+6yYuk5QL8nJGGgXwIy+wIOkSRVIE4WeEA5mEiLmHBKlVmBxwcGbEq+Rx0KI4kOGDpGn S5FHaebkbZ9sDoFA5iVQ8QgsEvEItGA7h9oWnln1pt2I8eL7JH8+LKT7CaBvYUTMCYmemrn4Yhc4 7OgNT2z/Ab84V+5E/1zxBd3IkBSRcU2n4HInxHDDFlLufGw/JdfPDm/mdTUYdOq3g5Cg30h1Ti6a p8BSZMF7Amygwwc/Dsl6us+96TLZ+UbIm/dh0GO11DFkTB+Y/5G4YRskpudxk22bafMcbsv6TeTx OJ/VpOtPHsOyg/k/nuS9fIPl0FpUPSCgS+ZULkoJH8COv7q7s8186F/m/6vOdaQX4zQnP8XNKVPq zTFbhDQe8C3B7J96HF3tewxGYr1R3Sboh/R9xSZVFUWnqYaqrIYr5IvoDGb+X37KZxpCgNAxoAbu GNRIZT30In3nwx0l7Gn4D9r9J8eGTFtc+pkMeOXYwWCcmiiEWx7L0CsBW3gpf34pSmhiAyFGPEtQ wNJXCWWFFnSCH5HLVnSqdXQhyR+AZFRKBUUCKMmw/DyYPVjX34oi0GjJsRFMOI349fYXT3HrQx3G NVP2G7ByJxMxUh2qxygeunLFo30Kn6ACdqHan7oIO/CeAw9iiVenFUc+cQOQMBNn+7pIrL3TT6Ch 9/JsVqxifIAisuu38oVq8P7YVBsHgYKeT3OKGxsCCLTaCWn5GKgl5JccYoyyCpXtO/i39OWBN2a7 pR33Lj1H8iVJ/JVI4PabNHbN34gAr72ucaU4fqIGnG4xKR3YOHJGXAdLMzMcUolKyId9HmmgmRDD oxtCVIP7zyrNjRsSKkjEyKbF4Sezp+ROVF03mKnl9psoxCDhsBDutWusnkCnwLFz2Gyf67Mh47N/ QOsvL+mEln8sljKp82M+BHRORXyuVKUpKndYmbWHg/sOfSDvhQASPSwbzt+D2R7/ve99k/WQ+X75 LmKQoya+lDx9gF/tYDu4ZIUsrhfXDEDiO4dDG4uaJ0vY0bYECMYKooyMkU3RIm46/B3uHI8/k1N2 v5c65pkwmVMw5FOz2Zeqp/bqB4wIHYPkBD0FBMXdwCC7oIukyCRcp2Prdnd6y8freMe14XVF/Tgn wdB1PO2iMamqmhU/S/XXRk8ozDbRyQJBDDDCB1IZJJmQh5FSSlEUU/aSwooWr8p3oeCSWSyWhHmK STNOpQoUlJwRl6v7VtqPRz/yvCdzxdyiiwosUWLJYw59Eyx5B5QD/q0u2W6CP/IUt0sxRftVGr3e Iqruz/HP3mX5CwoLi+OKaloyvywvllrbdLPELjlVwLJSZXIw5zIve0jYUb6MKt3/+IkP/hKlnVWY bdx3Zx3VXH/exYlNnJIZmUkuA1+fx5+qAYIuU5BHYmXTdzHkSWmuiBHIiENFmwnvdJm63awXBwDw D0B4BFC0aDXprHh3LAv7JI0Qkxi01T/h+JjzXFYy+E9dn0vmocK/1VqKWf94/urgykZ9OPXvc6WW hzmjc+auJsDkiwxDSExmGIV8BkfIj4o7gYBSEg8H1lFGolg/mnifrKKtoWp5w3w4T2LeMwe8Rm4O wtHvez8dOxuueQzclyl1h73qavyLEBT+XZ2Z5XWf8+4xU/cemEpx/I1Og2TTbsgh8Yuj2nqdw7z6 H3n4zFgvyj2z/USe8k7uKrX5tUPoCfd7NitP/vB756hOtPnflnVUvTsuf0fre4hqvLWWWJIVO3tI +k1uZAlrpf0YW7hFdF5QJjwC8dp19oeVN/klAwtKMh5LRDL5jpMyYk1TnOHJ7vUAdzwyscQThy80 +o3x59Twst16yRPFL7TzTd8DXVoVFYiug5BZaqhbihTS2Whe0VsNTa6Wg/bi84bocAkMdin3XalR Sj0LFH7zk/62el2bBMbAvilAPPl0Pd29twtun2JlO/cO4MoOjhCRCREDMys7NvSTvmniOESDFRGZ msokxxOLCbhkCQwUJod8DY3YN4ON5ZnIZmJaI4txesKZWhBzlqgJRNmQdGWiFzpe5RO4HpBnueay T2YZkPe+UPrdnX7mHGMFpi1a1raNttwzu8ACd4O+ZNU49nToQLbC2yFtJPaAYelGmVzO+sBxFmQU mdwvNx5Dd/ZcNLA7u6SWZ3XMPmQLQYZluoTazAMNLBED4hZuUhB01qNmoZSaoTROFpom5DVDg4d7 A2HRNkDRkrAWb03puVmWaJJvYVDZmm+yasDVqbM4JNmSLDgk0YZQODttQmqGsgNjzMBkqggT4v9W AIggAVUYsIYT1QUONDqqqxhUkJiAIEtIf5DBSpWlZIkNk+TjFSiTYyOWLUOS4NIDErNSaSCBFgRU FS0jF+y+SCWu04viCUvvjfW/hLS5lu0q8v5/wbcvMZrRTZybwzDkmCBSZEI5NUcEMjyxySM2rxSU pVuFEBZMgoooCCkipiZY/CcbkdZMGSXOx58F96AH1NCIcnAyIgklEYzIAcERDciqk6LKHSqjKV5P xmUjDiNcAEccUgYa91IfVJ4w8kYRGWW7dQWEvN7I5wVw25LEUxzJGFFREEgpskSoM+dqtOCXBqbl 6Qz6lAiuEhkWxLMIsgoSRzv35LBkOTuOUN1uu2mkjDNwegIbkjBNhaqJFuRuHsUqTGkMSoRUP7O2 ZbWxkZON7pdTfc9EaS90INipUqWKE6Dnh4QFjypM8TsdiEgY5OTg7nIv4NHWbzQydDgzU7IE935R H4vxT4RP3z7TuSEuJo9OzsXiI4pIMrteBneSJcgYQGtqyRqDh+vhEGEDsXQTNE+uT0mBC649JcNF amwsBpYnhFWsMEDhD6ELRflXTYRiQYkBywwQhApWTKwiqWFiWaYd6MmzTit26qLuk0re7UrkRfT7 M0kl/4w/jDo4P7aLsVcDdESu85GV84aUAZkYbiGHuMAyTz7TTOpoS8mCt9hQYB4FlFUSN46iFFKx 3+cOEqHHp5j5Ds0bmhWZdXZ02udqr77WYOWMtEE4aM5qLU7AhuoCAzlSLlQtIJ2avPNjjvhBDCKA hiNnAD7jbd8DVjL22P9SYnKw+YRlmHQVEAShgxozwm+iVVwDqfvWsVJ7yap6H8gBUjzAKRzBIkha HVQbVoKURCkUiezUYc7dbXE93etM/TkVYFH5qLfT5nxrrW1J5tSM5zE82MhtouSlJ0E85Htr1arL YWwDaEY0qXAGpBF5YU6yGWk7/CE9xxzsY8QCDwtuk9qpsxgBDxARHJ9TJQIrkTgQVyR2XypkuwAS Lewsp13Hlse0ybJ+geIZIP69PyKu2WectQ3Ln3gBklOBZoV67EiCSp0Lg6LB8xL+Yh3nKHd/mH3h 5ZwTVPI7DDqdfSBy4sdmSF5FPP0kT/iEPeKCCFabZovQkdewAbxVJC59rBfSywptkk6zSuTe5f9n vpvjwzDtFmGcCstG09RrSQpaYwNURn8blA9qwUzNUTbx8kpUrWTw2hrPW25ISE0GNcHLRby6m4de 2oacta6S9qzwncRn13jsn43WE7l6lAnBWa21y3GMHtOjYwUwUCx7T5CeNzg3yVJDjipBubrODE7f LY9c89pL+fBuYrnS7u74zy5g2kfldM/ysSE+Yn2IJt5URdyD5iM/sxJObsGIbbFEoKRYjTUIDUm2 HWztSJ8uO5235znGTzcxlZkSrmYs8iNmYVXlDaLjqz+vFT6vnA0D3QPjAID2wRE0TJMaO9K6q0xu u+AHUNI85Sq1E1kRAS7pAcg0yIVe5YdS0F3GZ8ysLIVviTcfrv4R4WldMGC2Bx3UqvwIuepsUKU2 n2facbUcw5VVHGwGShrgsZotNMUMn8TmT8hLDbrWrWtMAmMdolpJZSg2Dofo5JkFBtX0mNGPmdjY ydSNwDKjFckhy+6apdqKs+IJBSaMiIJl2N2OBgYebWZ3zwxJt5Y0UPkW99tWNiV+QEPEeeV5KnXy qfoJ9trC5ka12k3LSn4CneYLJu3LA7WYUFaxuOd3O2xBURVXrd93w9XzsCDDWoe0pccWq1MmDJSR KO+n4a4SLzFpAAJLIo5lUyKcd5vfXsboSeTYZI7iipSKqpUYgoMQjGMYxgjFFF+aEkh4R1Nje63B rQU5XObrXM17BycbjNdkp15rkiZ4cikFsEzxobFwoaLFbDOZIPapuQJ8JZtb29ubsmDBvxfT2Twl 6ZOiVsO7WdE0BwE+QnxD0RPG/HshEGoMDrJo6aUodAn5b9omuiddhcvm8rHjMGIUp3SUHqorZV6c ipqUXyzWVwalonXt36W4B9oetSoY+yejjTvpU2PXyGHsVGLh0WPckpIXoO7CmVRGEg9C3JbFLd93 AzanaxqkczKhv/ao+4liRxCFDkfwBDxEllelWbkGwLxCJ5Ea2cpRycO1w1lZJKEIrCBf00HeHc0X J0mtoaRc4YQQcNh3PCLi+gwyCqjEiR6pcKwNDHN4BBhQqi+1JFhtJyQTEpsjVMSqR0uQWcbm8G2R gPIg2LQO+ttQ2OYZqPuTcCDPwlUme441JdDZjHDTI4ABNzVIdgpCQFokSiOvVdJwF7aQ7wiCWsGT AcR2jTQ8k3FSipZfNS+uI5LJNHDitVrXBcLG+eATMoiPH1khe6mDXXbOlzaup1ahnng46334nBlL HMHRo+Im+iCR0OclzaVyDByXALlxcm+/gWLkzkY0LABSjro0ZFNhSRcLJuenx07uCYXktal2aNeW ifK3ZmLch5NKdgVgxhS0an5HUQd2IMoEW89s8mcfykRUxIukgjyYTinozD3YpeVX3Ldj4hn4B8Qy IGMqi7AIk0y0X4N62W+2LK93qwIzZ4964RqzqPNUFqhJ0ZW3UlUwc12SD0KSNTVsWeGzCUvrB5cC BGEAgUERC7/HJz9niYnkVr1brNjIs0KIrtxK1FWsjlKsp2PdYO5k1OFEKL1pXfOcspJa5GKDaMG5 cuATSjzW0UfEUnjgmrtWTdHw2nMT8wQUvon8ahkxzvhO+N5DG5Q5ALP9wnqfoAWqSADJ+nj0Jjfs bqeJ8w48paV5JnUh6uzIzhbxoFnIXc8CxB5ntMGgCoxkp3CvNJS94VADYgxwGJKQzJx5jm5kmWBD nL7exsa3MJTuUlQrtUbCrAaOx2KhtSaZG5zfjeutUHsS0jTC7JuZrtT6mUVYsdZEqSU3tzewXMH1 N+1xmDwZPcCdV5vatyjRxar7NV+DcSBgWKcw69Q8qOS8qlc6+RadXkLvDJFyyv1Xxc6NdS3qq+2B L3N9lXo0BzaEK/DOCJspVy4s8y1RoHvN4arNJ3h50pVbg8lt94dGYyv5o/HifVhj1xTjfjbiMaeV fbhWv16D5cbzO84kSZjUs+42R4Xditno5ZYlZJTeobsXPjXJlhTJ6EyAAhK3GmxkfYWR/ZbhXNqH RxIj4H58YHTYmqlur3vUgTcYgjXBadpjVFgwDnSdGCXHU7j6REElI3+Bm0iy6ALnjIgxjYBPAyQU a8UGGco0PelRDTF0rx9xcQmnqQvRB0t7s2Oetz2h6sWn5uh6fHv09HaJH0c9XqdEwY7Ceal/LzcA bz9IK+4GGkhJ/XR6kpfBSQ/0MUc9pI0YrIxTTcPEhRhLkoGAFPy72mjdKcGbZhWzBQJiYNi5jm82 96GZ7E2vLduHdhMHaLk2N/gVH2IGOHc+1PsREYc+GbpzrOQmpaTpdu46ed6ynJjPbyyzaLNFN5Ri 5g7mgeYVPEg2NJcqeBc0ACVgwblWCzFowX/Zrfvs3NzNrueLcb/nPlJE52B8fQuJ3Ex4O9918O/E yYhOtVU9i2lOKrVZj8uLSTXzgdzLzL2QuTp5LhzdipaTePTw+GNl5vNh6OpRCSeu9TwADQB3tXx3 TTu9kHd6oQOwv3E2FQ0Vo7Kfl7U4M5pg22V0DAoF/OjhOU/jQqtikfFOCAzvauMz5bmaTPM9BkIH GgXk39CC3N12u5UsmxzMcIsykw0SPnus5YIckiBFMVHZ5caHi1qOxG5uMbqXJWq1ghEjYawlBx3U SosKLVmFJmjHY5OhTJTXw4yLBOY1mGEpwQYY5IAQsQtvqHDQWtUagtTikLCd1deAARokpVpHBDxA q2JnUj9NNmXZe+LsuJCt1OZX9vFicyWDzveMbaWgsmFkLXwJtQXofalGcoPaY18mBy9Rlg3Owxpf YGUEEqOiIxO7AuDuSJEGnKDXuMcljYoOamUxQOAATQ5YMmhS5o7mT6a0UPv4sGDbJ7CxIzccU9S2 LZ/P5gRIds4COydrhVLCZ/ZWpTKGLEB7w2A0WMDyeQ12eLe6Zi5oyVt8pSec3giDVjl7Gxx75c3c rSBbWrJ1pWtJxaNrA4KAGwBUTEZwOci6ia0MT1dw5EmOsiAAC5wTbN18B3jY2ulSLQWFLjoZdlNn xKUqkhYpeR5noO+SaIglBRyypD2eUlYVSE8hi4CG5FoXkUqFgATSmDpI40q5Xq2AyqUfpnOhUOPS fbtc8LVJjZbbak0tafBWm4q0HFqobFwAYvfCY5a3Y7Cn5pEt96MtSWGV2Y6F8znxHGoSoACWNSnx hVy+bDcngwTlwOiWfPYkOZM/gm0bVMKql8B7AEJTcbA50QjmDk8QEGgzfcmujWJFBzpS/5H5gHgZ PurfnZdsCar4D0Tojjpogg+IdAImXPEweRtMqbFzTGhrCclKngTLMQMZJnBwUFFLmjS4CCMXFLm5 7AwfukaJlD6Y1gmGijdoLCBMDJwCLJ4mUahdz/F/J68VZqFcCOguvldeoF5PMJ8vdHFYghpOEx3X 5QhUmVl3Yy3jO+X07sOKBunkjRPS8vYmFMKKyLeojBkichpE4nVfoH5g4IYqyiTHQARUemLzyKE7 k6dl7oBKMGwwdi93LOLHY47GbcutCTffURVlKFp4FRRfE9SDRi18i420VgsbDgtEqzDGDgYYpVJK mjEyqaILPc0M+pQZHLmSpsTf35dbrtWcKEKfd7zaZAjSNtEissBeSpLDSEyL0KiTLmB6i9DcCnQu jT823ae0oZ2doncwJRdG5wc+szg4Nyl92We2VbWHqbHRmOIK27aGbTmKEiarEiBpmxUsdhzsl6SN lgAZiJjCnYaejknGTsD/AKBuGxyMTmGxjvBwQaNzopT4YmL3PvFOSxZLWY0VO5cS1hSZIiWpjQSk hKF5M+AXlCmrXX389Hg7vWJrtrrqK4jNS7T6iGYW8YfwN2YeNJkDePGcnIfmzlCCbm9MvZbEbiYv Fp2FV7mqIeKnAwEP4wAAxkHEYwTKWMTLjHuF7FyVapaww57QjZVhaO1MzutdidqEHl9IP2qCHBYw mFXODG1DZIIJae9YbwJ3HJFCwBgmSFGLyhSN71LTMvExagAnRgYik8asMpfJIpNMMckKNeLr1tLC 2qPUsvqWuJY4NRncdZH2bMYGRA3TfkkZ35O/umbm3WLvdYwidl2OJQQCkyblt3sqiktifYYg9xiS pkkOYNMU5vRdTk2iRo6ALEobL0qRLuXT7AN5nMDgwopudAFSZmhM5N4KHKd+/bAe5MlDgkXz0aJg pA5MIODwsYJm5ModjvYEV6xYLyWXIgeIqDRRt1aPuroNmxBpAaAw4td1h9DBCJvWDG0TAjllQ56F ML6NuUAuc7eyKI0MEY09rBMOkylyqGJ5lZYlSje2SE0MCJkWElGewq2REyhJU0wmwUNpwBZFigjI sBYKQWCxVFkGQbQfScCfggccQ2SsSyDjCRLSKRzBhhg+g6HTJOD7XGkuJSlk1SrfY1b9UWdBsGEc SB228FBgcoegEnvAJg7ghQE5m8uJefsWLFGaUuYvD+cT6ET3H9PwhlhgUtiwKAb0vwPX3poG+opO yNZRAZABAqyKxEijBUGKIyAhKMGMPOQKwWQUkbGSMRQp/X1/A/IUZ7DaRR+09p7Pzn7AmMkyxQ+Q IIhXAO0TkBErFfw6j1mPVNMDXQqfC1hT3W3MJAjFRjVoADyl/0KLniGnzg/S9In2/UBXcJ9gf2f+ A/yzhc9gHdahlRW2JobdTEXlqPvh/6NToMUnxliqkDIIEYQFEGC0NCHyaB8ITeaQHD8FR/7YT/Gd D/O5GTSXzKNpP4i5ZFYFi1oMaUKitMFHWerPNUXsmIZDeuBxihf1D/ah/h/eN8Ya9w61zebmu2jf WEz2NCaFChvHcV4XUyMJJ2O3auL4ySVFoTKhQrbLeX9DHDUVqk/6TyunExhxJ5vvOUtjEjYcRxcI 5zfJP9/kTzmAvDQe01RwG7ZOiTO+bLaUnjyn4jNYl9xEdyoTzL1iQzc8n6aR4nUeGMM2HObU5u8W cV2LrdXM/M8d85dc35lZHPzJqYUYRRK3iabR6YDZErk80TezzJhNaklV9pRyRzlk3XRZ/ToFDdFf ULrkWecLkl2UMRfNZdE7YyRsuxd02Cia6y173JmTIzK5IlyJkVx/zHxTSHRUdhkZRFoWhpdwH8l5 N5dupaWOSL4Xhii+/KYi4lUiaRl5PC/NgTgTTnPIdTgkVImaRSKWN2a/v6tKlx4Mr7Kxm0x4RI5D owJrXiqQq0LFZFpN6G/poaHIXEWGA97jFi+BppR7okUMloqNwxG2ugnIthN2wliVvX70lxtwnQqs ExuJT3tHSOqdhMlxOEuFw15N4/wRzGDdN9iYoxRpUwF0tL31Yi4o5obbEoyC+9d2crF5MxoXxGxu ibOmGccReMuZyWbheKjrla5k2pG6HAmdYSKhviWnPPFcMo2qhbcTy85G2MB17pm4xe9JfLh0C02d 7HFKmUomeI4TfyFi0nUqNTIXr6sYNpJZKJVEqF7PIiTmCtM8WkmwAfhKT9vzeuwLVMG1sOY7e120 uTlvlLsIjhGDnUIqkeJGfLYoVVundFmGVI7jW3I1AzFM1y44WnLmb3ReYXMbAOgOLlk6kX2B+R6e 98OQPeHvVw+/hktFszkfsQyVbqh5fTkLfItDY2NtJPdLOUNsw1aIZN+vJaluJOcVFPq/HtF0htDe QZGRkVjGAwERVUekKIUGDDG0om+mIIUc8TVnIFEF96VOkWQm4qi4FIM7IRH+g1/MB3vc4w24YMhf UjlKjgkycV5d0cZtZV1bDgrKFCfrW4FCI7FIgyKDTUk9h6Il0ATXR2cASYpI7gYk4gkyMgbclKgz ohkskdDTiODltM3oLgZhEV1MZONwojvhbTKYA38UvMS4NLPh9I/MZDkH2BE+QIFUj57qLcIfRi7e JDCD6vxH5B0T4fH4wHl48okheAkxODgBaM2xRsLM16X3MmQJcYOeTFq7v712bTSuVKjlyCRIPiT/ gFveMaJnBYy/3nDkzIYtrisxbacG1wfVvaNWDMzdR7umQR2uZDgx5b3Nn/HFybY4upydO8/41Inv 1LXUydjVsaOxvY8Fzpuduk+VQ+CBP3tnEids8ZP3aM+twbXWzeBh0NP4GjOHbJ61J5tOtsdjsYs2 11jiwgah4ri4uSxLwylFigS5xc8xI5hJsXnEtIIt2/wlmlZO/hHm4WK04S3/yi9/d6OxGs21VQ06 AwMHopYIZyi9JHRaovcwfhwtwBHW0HQjpcxg2dPOY2Vtvaly2Kgm047vyhUgjVOM6IOndTCjY1yt 9TG/c5Su6FKiqLJKdBetwJr5Q5NXkrLCktRZHHbD+tnF8pv5Q4XWtDgsFWyi1inhMirXcY9+2oLJ EL6SxFqPNUrA+rikhewUgekLiluXPm8gBPmFoHaxe5g9Xm965sfQvWyV+Jmxv2yxY9BVJkpgtCCp o9hew/4lT04SZkg/y/jwcyDg6AMaM4FOjY6KmXMkhiYOULFJkFzY6OTjPnJOi5cyGxSQxzsY5ODk UkZNzsT9/iHBE9rLVTqbmfJnPAr2GPB+SdwmHJq2u52N6lzfOp1sGLrd3bgCc2jVxZM1lm52OEc2 jewXw815YtIq91M/Xq8KTlH0751ySqIUnb3VmZ+udAbr9J1pKBmnlYZCckRTeAagZdvPGJGLCFEx ERDIBktQtVixGlKTHWy6UlJ1U5PS+BOD7uGbxXvH0eeG7FkERxnIMcdk63kB3AztOJaQrIFQ4eaF MExIaINz26IFmFSdzJx7BjVRxpmgARxTnm5gP2qAdHY7GTgoXMIm5nNTo5sWFKmiQ4CZ53MHuDFy ZOTBxdXbzd9Gjyzb9/hHieUCQSelWg4RiZbgAVBYPuKqsQ23msoNpggjpBN3ayZsL3Q3dimLass2 Nv8PMmHi4WZqTvMbv0pK7M0qiw1HAVxgcOHFGaDBOH+vDecOPiwYLabjeQWJ0gd0NpVlEFSE4BcY G0EUSllBGwQqTdAwQAm45ZiYZiOk8j+Pxz9sQTKzNTvK+9SlKriYQp2BcFEpOp3Usha+So41Aytu uoTXwGCBI61iBSBBeGhRKrEWsGrcJxmznfIdN0dgtBBPSlGBg9nGIFS3tMmYYBiZoJWigYpTxebT BNFV5mMTUYllTAkCLBYdXSNal4EHo19Zn6zpM1gV2egpg8jPlovfXT5vgb21sXrinc+TBuvdNL3F Zu0TKEFT9LFfw+HmEFzBW5g+05OD3BQ57HJI7EFDAtyh7kEEcyClvAw5Gi/kAiXOJikFzZc4tTqW b2ZcwdbkswbO7vs6qohLli2tTdYwXw2M2rY6HBg3KbN/ve2Pc8I9GtSCs3Y1dTBEvcVjj4+PYczU KbGLzBNWGtZNq6TwNx2vRwpIdjapuxeHUWcXc3FZXhLq32yWZIC8AFQXrQa6HU92l2SYLBu8q2hE sTzuVPDEx+7n6zLtUhOcadlzNSIqPjAYZCJnqnvYyOaSFQX+aATrMpixvtJurkvLSeHJ6vr+nrMK b8PHuYYO7VVzpwoZ4ozUTrvuybu2kvrHCptpqybl0Y4L11BMv2ZLj4MMuZLT88uFzCGbMSFTRguP SopJsk1JFbMVVEFFUVB97JlWUxpPTWLGypg3snIHgoA+TksKs1ey1hV26imdrrbll261kCaKCUT4 vn9Y57Doydce3HWZgE8YHLjH1+n0meqftPr9SxIg9FwK1yCgpMkQN3MnRQUNjc8ff3R8qxST9o7u Dme0jz0VxjjFz7ZYw2SaWUfTEknCvHHYbCQidS9NZe8FnF3Zu5oXHe3trodDYc2jFks1ud7Les2G zVquZuzxVHQnt9wT2BNs6ZWNCqFhAaHMNQvNxJRbAkoCNVwOXBL0GYJMMYWix5VbDOquCo2+Hhbq drvUqcm+0WnWwe1P1sYm2b0yDrdrm3NWE8x7G54tOK9kp5MVSforzfD2PiOmI6MenjJ7xme9jVUh uAgksyEIIZC63JQ5OgMO0nVEgZkiHNBw4vqVLUstaxjULbbzB2OR3Tr8GhkVDAeXHDhoO00u0z2M hRHgFhQMYkOzy9TTCWxEpvDdRq2wDUFjPnCY1mSuOARjj894RKFRSGblruCm0cLjdJqtCznT1QDr 7dx6wgBXsSARTaK7Z2nEvlBkpU3ABppjoaYkXlXdQMOaUpCc/g8939I92Q25fDIQIAuf71ALAYAs N4aKjp+anOXsvngbidR1pfaPUkMFe3wXW9Rjq2BCBSyIhwlDo8IeoSvOraigUPhIQ+Ylm3phkvaJ 3vw6vuOlFODJJUL2rqS6i298hXW4iXyngD0hpi8epyXew8UXJ5WNd1RF55l6XSktlaeLf+5ct49b HTzxTcC9Pz4r/LwLEk9en+3RofgdEdsVVSKkrWbaRcXWeM+guITB27ycjnPDcJHkgfohWMIRIpY+ qtuU0gA+kH1zrJsPk+1+YNbLK9LzVn+dqvZXP0MzFg/O+JuWZyA+Z9pSB+P1/XdDJMsfcmxkrVi5 uXJSl0XGYxbTNvXtzFTczb3Ss6+TFg5Jpifc2OSnU1cWTiv4mLc4aV2naWXubRc9sZaLmWLoUOcG DYgAE2LYk5cqF6fbYn4LY4OiwIJow3dU3tiZqNejg6GTVocSJT8U/yCegT3nWErnZ9nVPrk77xiN kqwzWPEw1n+gxwhKjsz5ydXv2GLnTiI3sZXoKIzqRVXADvByOIRSTh6vt6STPYakxsCTW9IkyJkC TWMN6B9Mqr95JQGKbzC8ifQVMwsiiEM1zOidganb3IWkLLJCwoQqA2DStWgVT3cLr8zUcvLDrwUz CI8+JCfWD3D+0oNGmNlgIQEmZnAH7CM2Z2pukGaFgT8ipFRBiKQiBvpd93i5nygFmZkYjcW3plgT etBd9Essa1VKpVFPdPn8Ow55DYdrZ+KNralu+I8SWZtSSAipPSAiUHo7PLv6Lxv1dpM2o9V3d5dB iV8vpdwM0nrD1n2Hf7iEuynq1zZHbHA1B979XJDL2WUm49P2YETe3Hj5aruhMG+4n2Sw/M6/zBKK ITKsP3sD3tHfok6P6e11A13YUb4j88BpUkNQVU9XuB5zae0BtErkCTI2gMef5Xo4W6mLxnTNm/aV ulW6aU3Sx8mL19HMToqvnjYd88hoEKMh9zipERdPkP06XNJpmbJh90Y8z4KLdLS34HianOSOsqig IAsRTuB0qjr27MsCESJF9gatWaUTcPOCt53HADDI62whHhhQLPi7yoPWaRWj1AWoL2YmADiXitsi AJn4evxrF7tUOwV+176pZrdMwHk9aJsQWEESIaRpQEzRUe3vNTzYsUgEf7CtbkdfwvDtM49rSCxq RaoQQLXYNioJ2jxat88m8S8yh5nlfOWc7sgehJapeTu1phV5RMSYSPAjAn9VH0I4GMoiZl4fq+DZ DEbZZhYspRrdIIz7VcgxMUygyqDvlYD+tCCo1BB2KTAhNmmUziANQB0pvyMWxqCMBMo5Jmt+PR8S faKeoQKhO8aN4vkDZrF23It1AVgoq8ZFSgGcLBsBqHtC/+aRcDHgD0tfRJ1D72JYe206b1WetRm0 LS1ZEziYWGZ+jFyqTpm5oKju37CHEXcDrCwTlUuD1XIJ9p57yr4mY2ySKX7Z+GX096Xm9Tyo9toC UtF3xyqcm7i9Kmho0FTpLedecgjs+1c911E8HjIUhYAhQYlFhQGKUVhRWC09wbOXOpHlYtNG6R6s eHXJVIky3+3g2WK1zTJJc3FxdRt6sGg9ZtY0KN3ObtF5PIam0iZ8JjPM+Nt51xSauyOk/Pf0p0mJ dP+1fB/UvaEPCBp9onbDq60nd3YuIpem++J9sTA4wGRyZNCpYOc4mB+Nns5zAMJRMd8NdPYSazJh RrEvKD1sSkKknnqhclgUX23NRLOa0Ml4TNnaOl31xIqS1MYbs8ze6ZM5QSouUk0k+BiTzpcZm2Ki XCLLFEAkIFEFpWivAYNig2gpRtMnoUIedMB0yaUxvk2GRGCKyOCxYWWlkoUsHalQArcOTLWgoNmy SKFghYqJncYTQ1Q3qkiPNLqUtU7l7Lt6JulbEijJOSaBCMnRiUheVqZiEky5ebQwQwPpRLlCS7cd e+qf2MSZu1NYyncn7Uu2yRMH18J4j7y8aKOlZaH5JVzGZWSopEuUBOi26dHm9vfV2mcEyq8IbfEL ASm0ao46Cio++5QDLad45cBOOK+ZN32GaBFQ2R77ENZkodRXcGgdsIKA78U0cwwiBBotDoUS9FEk qL3gU3TKncD4X4yGZnELGwdGCqWLLuS9fZZbpVcVwVYso9UCWhJhdOKs1TZKD7Y4fbmdqhnyi+Wj 5aJ9UUYv3cBdvwzTPsnRRb7jOLHSDY/cexY4g/Pfe+0BN8qkF+jzKbSA6lQ93kR9afLm80Wk4E6U OEkTs9vlKNubNFdzXpIXsBwAszyHgJPK+aLAQvHz+4DNXimYOi+dWog4U9lXU6O52VNx5t4qlchu dy0L8esrG8pqssj5KE3G29crsKk/bh9k39C07FzxVitSQr7Cl8vk4APkpS7IFXr7V1HFJC1hkrEW hquZcN4hGlkjuO4Irs0qvWbsPWMgrxBx6WTvFKCMYiyHayiIwCeQuNDJ7SSgiWEAMdLQOTsfEznD ruy5UoLNEShFFXtpv/DnBkRPaYR8sfkSo9hs91Y1eslGCrpdV4jadvzZgkE8zanKb+TMEig83gRF u0XtGets2QkoUJND9ZQqkh+GUxkq49o42Cf4HoPaOIkKgxB4IX4VtF1XrppHQCxlqMy3PyF9Dr7b bGKgnwDg47KKHpcpeQqm6q4D6W0qOfScBiE5PlSv1FwZkgHgkvNxj0jn3nTI+F0fD58czHpzGVFy lo8bLFU6aw+dxtohO0mBJ7eBekkh0NGFKaFqVLLFqC9skJ6Zkxg8OuCFPYa+PV3iYA7jdB34KCix UOKwUJENJITFhvoCAf2sTUBiQIEiHIaGC7vC8MK5LdcYkD09lkwbaVtswQ6oDJy89HS0c3Q3qqUV CsB1DrXOArnufKCFvLBWKy78Y1NHXTrqkqrK5rTub8IjCg9pr37+Z/OzuVM31dKZq4I2JjIrEs/B tS5mm9QLAFhDUAmNYHocPjEJq4nDkm+08WeOgNicIK5m0AbODYAcUUkJBCRDlHO/LlKd0R7x+NjG O7hzBwMQsaDQF+53jYYbCV4uUO+Sv+bzlLXFPx9rwX2UXrExi5DOC8JxBUg8hv1QqupDlQXZZlMi 7XcUPVe6W4R+z74SBBN0EUwbKqo2U5EL8ufIEaIzKQpIl+0YAwQm4oV7QwD2BH73oenbhArXD+bn uPR5hPSTKA+RR8KSyRvfJYGCuRQZ9wcTW1mlzbWdTSKjvPJZMJgoq2xnaFmmtn3P0XjcFbylKiTG xuW1CZrOLY7AmVBMl8YMjbnFwyhsjjPZUkWa57FpJGejOJtST9MtInWytG8wLDGkvFRvFPFazRYZ 8F+sMeyStNzpRcW3K8+PnD3ZQ6V9nRIWBLGT5nCqVeTGle6dZSWwW2iAGEnigigFYTujDmQm03Uf NOsNdDvBywN259t9/1AN+53beEJkSZYiRZEkU4yDSFCeZBrFfG8DrA494dAaYoW+PEaN40HMgtwO vbqsngEzKcUWQWQAmYd4NzlMLgzqA8nFnhoYWnkK0Kh6LUrKWlMCRUEC0pkxSfM/SnQwP1a64cDa zRD1yEzOBPRPDSoCFoFC0llpLLyTezRqMOBgpeWTf5slM6TB9JylMuWGkrOaFeM9jc9mc8TRZ4nJ lmbcsFuO7EBJ5Ice9wex4byApzD5+c6Pl8JQA9gV0KFVnl4+xfeVqSE48VeiMnBfZ9eOUff/Aawf b1JrLk1fYjwPHynM6jwyXR+1Fuj7IxbIZvIfMipPRT65WZCU0mTK4W8NMMoqLyfY7+lSyX+9Hl3v HqhoxKByuZ9Zo3RXcC9NgrYG1QwKDwGd6B8sSod65xdFhDvFvNIKcRGHVh6wWHt8C8ZNQ5xIP2Iv aTUngvkXVJhM2Tw5YgW3z659adH1HCN7sX6bhH3enQDW9gpj+pPlNO3F1RlO2PtOnxJ7ALBOIicM 4BwFpJ0QshmCD1Di3Anqvk+D/TkYp1eM8l8dMO1aLKpF0koi0GQSRJBkkUWEEaCwVdfqG0eKQeOC MqVKJSh1KiLJUEs9tyelAoZHQJCEiwih4Abzh0UANHhjpgJAuBzPA52C+NfQmTXTr584AwWFtppQ u4vNMHsMminTgcLftVGxNOxYCMtwCOC+AivSiue1dymuXo5Jy/MmtjWT1hHs8euEXQ3aevqnon4N z5954crv61RzKjxCD1cY7wa/IT0GOcdQJy6FR2h45Qjz9I5HsHwASzmUOwh/t7D0q2ED/8OR8T/+ LuSKcKEgQspVig== --===============1188794692==--