From: Alexander Barkov Date: March 4 2011 3:00pm Subject: bzr push into mysql-trunk branch (alexander.barkov:3723 to 3724) List-Archive: http://lists.mysql.com/commits/132471 Message-Id: <201103041500.p24F0CwX009923@bar.myoffice.izhnet.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM3MjQgQWxleGFuZGVyIEJhcmtvdgkyMDExLTAzLTA0IFttZXJnZV0KICAgICAgTWVyZ2luZyBm cm9tIG15c3FsLTUuNQoKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3IvZnVuY19lbmNyeXB0 X3VjczIucmVzdWx0CiAgICAgIG15c3FsLXRlc3QvdC9mdW5jX2VuY3J5cHRfdWNzMi50ZXN0CiAg ICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2N0eXBlX3NqaXMucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvci9jdHlwZV91Y3MucmVzdWx0CiAgICAgIG15c3FsLXRlc3QvdC9jdHlwZV9zamlz LnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2N0eXBlX3Vjcy50ZXN0CiAgICAgIHNxbC9pdGVtX2Z1 bmMuY2MKICAgICAgc3FsL2l0ZW1fc3RyZnVuYy5jYwogICAgICBzcWwvaXRlbV9zdHJmdW5jLmgK IDM3MjMgTWF0dGlhcyBKb25zc29uCTIwMTEtMDMtMDMgW21lcmdlXQogICAgICBtZXJnZQoKICAg IG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3IvcGFydGl0aW9uLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3QvcGFydGl0aW9uLnRlc3QKICAgICAgc3FsL29wdF9yYW5nZS5jYwo9PT0gbW9kaWZp ZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2N0eXBlX3NqaXMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0 L3IvY3R5cGVfc2ppcy5yZXN1bHQJMjAxMC0wMy0yMiAwOToxMzo0MSArMDAwMAorKysgYi9teXNx bC10ZXN0L3IvY3R5cGVfc2ppcy5yZXN1bHQJMjAxMS0wMy0wNCAxNDo1OTozMiArMDAwMApAQCAt MjE4LDYgKzIxOCwxMiBAQCBoZXgoYSkJaGV4KGxvd2VyKGEpKQloZXgodXBwZXIoYSkpCiA4MzUy ODM1RQk4MzUyODM1RQk4MzUyODM1RQogODM3MjgzNUUJODM3MjgzNUUJODM3MjgzNUUKIERST1Ag VEFCTEUgdDE7CisjCisjIEJ1ZyMxMTc2NjUxOSAtIEJ1ZyM1OTY0ODogTVlfU1RSVE9MTDEwX01C MjogQVNTRVJUSU9OIGAoKkVORFBUUiAtIFMpICUgMiA9PSAwJyBGQUlMRUQuCisjCitTRUxFQ1Qg UVVPVEUoJ++/vVwnKTsKK1FVT1RFKCfvv71cJykKKyfvv71cJwogIyBFbmQgb2YgNS4xIHRlc3Rz CiAjCiAjIFN0YXJ0IG9mIDUuNSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv ci9jdHlwZV91Y3MucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvY3R5cGVfdWNzLnJlc3VsdAky MDExLTAyLTEwIDA4OjQ3OjA1ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9jdHlwZV91Y3MucmVz dWx0CTIwMTEtMDMtMDQgMTQ6NTk6MzIgKzAwMDAKQEAgLTEwNTYsOCArMTA1Niw4IEBAIG9sZF9w YXNzd29yZChuYW1lKQogMTRlNTAwYjEzMTc3Mzk5MQogc2VsZWN0IHF1b3RlKG5hbWUpIGZyb20g YnVnMjA1MzY7CiBxdW90ZShuYW1lKQotPz8/Pz8/Pz8KLT8/Pz8/Pz8/Pz8/Pz8/Pz8KKyd0ZXN0 MScKKydcJ3Rlc3RcXF8yXCcnCiBkcm9wIHRhYmxlIGJ1ZzIwNTM2Owogc2V0IG5hbWVzIHVjczI7 CiBFUlJPUiA0MjAwMDogVmFyaWFibGUgJ2NoYXJhY3Rlcl9zZXRfY2xpZW50JyBjYW4ndCBiZSBz ZXQgdG8gdGhlIHZhbHVlIG9mICd1Y3MyJwpAQCAtMTMwNCw2ICsxMzA0LDE3IEBAIENSRUFURSBW SUVXIHYxIEFTIFNFTEVDVCAxIGZyb20gdDEKIFdIRVJFIHQxLmIgPD0+IChTRUxFQ1QgYSBGUk9N IHQxIFdIRVJFIGEgPCBTT01FKFNFTEVDVCAnMScpKTsKIERST1AgVklFVyB2MTsKIERST1AgVEFC TEUgdDE7CisjCisjIEJ1ZyM1OTY0OCBteV9zdHJ0b2xsMTBfbWIyOiBBc3NlcnRpb24gYCgqZW5k cHRyIC0gcykgJSAyID09IDAnIGZhaWxlZC4KKyMKK1NFTEVDVCBIRVgoQ0hBUihDT0FMRVNDRShO VUxMLCBDSEFSKENPVU5UKCclcycpIFVTSU5HIHVjczIpLCAxLCBAQGdsb2JhbC5saWNlbnNlLCBO VUxMKSBVU0lORyBjcDg1MCkpOworSEVYKENIQVIoQ09BTEVTQ0UoTlVMTCwgQ0hBUihDT1VOVCgn JXMnKSBVU0lORyB1Y3MyKSwgMSwgQEBnbG9iYWwubGljZW5zZSwgTlVMTCkgVVNJTkcgY3A4NTAp KQorMDAKK1NFTEVDVCBDT05WRVJUKFFVT1RFKENIQVIoMHhmNSB1c2luZyB1Y3MyKSksIFNJR05F RCk7CitDT05WRVJUKFFVT1RFKENIQVIoMHhmNSB1c2luZyB1Y3MyKSksIFNJR05FRCkKKzAKK1dh cm5pbmdzOgorV2FybmluZwkxMjkyCVRydW5jYXRlZCBpbmNvcnJlY3QgSU5URUdFUiB2YWx1ZTog JyfDtScnCiBFbmQgb2YgNS4wIHRlc3RzCiAjCiAjIFN0YXJ0IG9mIDUuNSB0ZXN0cwoKPT09IGFk ZGVkIGZpbGUgJ215c3FsLXRlc3Qvci9mdW5jX2VuY3J5cHRfdWNzMi5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvci9mdW5jX2VuY3J5cHRfdWNzMi5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCAr MDAwMAorKysgYi9teXNxbC10ZXN0L3IvZnVuY19lbmNyeXB0X3VjczIucmVzdWx0CTIwMTEtMDMt MDQgMTQ6NTk6MzIgKzAwMDAKQEAgLTAsMCArMSwxOSBAQAorIworIyBCdWcjNTk2NDggbXlfc3Ry dG9sbDEwX21iMjogQXNzZXJ0aW9uIGAoKmVuZHB0ciAtIHMpICUgMiA9PSAwJyBmYWlsZWQuCisj CitTRUxFQ1QgQ0hBUl9MRU5HVEgoREVTX0VOQ1JZUFQoMCwgQ0hBUignMScgVVNJTkcgdWNzMikp KTsKK0NIQVJfTEVOR1RIKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVTSU5HIHVjczIpKSkKKzkK K1NFTEVDVCBDT05WRVJUKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVTSU5HIHVjczIpKSxVTlNJ R05FRCk7CitDT05WRVJUKERFU19FTkNSWVBUKDAsIENIQVIoJzEnIFVTSU5HIHVjczIpKSxVTlNJ R05FRCkKKzAKK1dhcm5pbmdzOgorV2FybmluZwkxMjkyCVRydW5jYXRlZCBpbmNvcnJlY3QgSU5U RUdFUiB2YWx1ZTogJ1x4RkZUXHhEQ2lLXHg5MmpceEU2XHhGQycKK1NFTEVDVCBDSEFSX0xFTkdU SChERVNfREVDUllQVCgweEZGMERDOUZDOTUzN0NBNzVGNCwgQ0hBUignMScgVVNJTkcgdWNzMikp KTsKK0NIQVJfTEVOR1RIKERFU19ERUNSWVBUKDB4RkYwREM5RkM5NTM3Q0E3NUY0LCBDSEFSKCcx JyBVU0lORyB1Y3MyKSkpCis0CitTRUxFQ1QgQ09OVkVSVChERVNfREVDUllQVCgweEZGMERDOUZD OTUzN0NBNzVGNCwgQ0hBUignMScgdXNpbmcgdWNzMikpLCBVTlNJR05FRCk7CitDT05WRVJUKERF U19ERUNSWVBUKDB4RkYwREM5RkM5NTM3Q0E3NUY0LCBDSEFSKCcxJyB1c2luZyB1Y3MyKSksIFVO U0lHTkVEKQorMAorV2FybmluZ3M6CitXYXJuaW5nCTEyOTIJVHJ1bmNhdGVkIGluY29ycmVjdCBJ TlRFR0VSIHZhbHVlOiAndGVzdCcKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvY3R5 cGVfc2ppcy50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvY3R5cGVfc2ppcy50ZXN0CTIwMTAtMDMt MjIgMDk6MTM6NDEgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L2N0eXBlX3NqaXMudGVzdAkyMDEx LTAzLTA0IDE0OjU5OjMyICswMDAwCkBAIC05Miw2ICs5MiwxNCBAQCBJTlNFUlQgSU5UTyB0MSBW QUxVRVMgKDB4ODM3MjgzNUUpLCgweDgzCiBTRUxFQ1QgaGV4KGEpLCBoZXgobG93ZXIoYSkpLCBo ZXgodXBwZXIoYSkpIEZST00gdDEgT1JERVIgQlkgYmluYXJ5KGEpOwogRFJPUCBUQUJMRSB0MTsK IAorLS1lY2hvICMKKy0tZWNobyAjIEJ1ZyMxMTc2NjUxOSAtIEJ1ZyM1OTY0ODogTVlfU1RSVE9M TDEwX01CMjogQVNTRVJUSU9OIGAoKkVORFBUUiAtIFMpICUgMiA9PSAwJyBGQUlMRUQuCistLWVj aG8gIworIyBJbiB0aGUgYmVsb3cgc3RyaW5nIGJhY2tzbGFzaCAoMHg1QykgaXMgYSBwYXJ0IG9m IGEgbXVsdGktYnl0ZQorIyBjaGFyYWN0ZXIsIHNvIGl0IHNob3VsZCBub3QgYmUgcXVvdGVkLgor U0VMRUNUIFFVT1RFKCfvv71cJyk7CisKKwogLS1lY2hvICMgRW5kIG9mIDUuMSB0ZXN0cwogCiAK Cj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvY3R5cGVfdWNzLnRlc3QnCi0tLSBhL215 c3FsLXRlc3QvdC9jdHlwZV91Y3MudGVzdAkyMDExLTAxLTE4IDA3OjE2OjQ5ICswMDAwCisrKyBi L215c3FsLXRlc3QvdC9jdHlwZV91Y3MudGVzdAkyMDExLTAzLTA0IDE0OjU5OjMyICswMDAwCkBA IC02OTksNiArNjk5LDEyIEBAIFdIRVJFIHQxLmIgPD0+IChTRUxFQ1QgYSBGUk9NIHQxIFdIRVJF IGEKIERST1AgVklFVyB2MTsKIERST1AgVEFCTEUgdDE7CiAKKy0tZWNobyAjCistLWVjaG8gIyBC dWcjNTk2NDggbXlfc3RydG9sbDEwX21iMjogQXNzZXJ0aW9uIGAoKmVuZHB0ciAtIHMpICUgMiA9 PSAwJyBmYWlsZWQuCistLWVjaG8gIworU0VMRUNUIEhFWChDSEFSKENPQUxFU0NFKE5VTEwsIENI QVIoQ09VTlQoJyVzJykgVVNJTkcgdWNzMiksIDEsIEBAZ2xvYmFsLmxpY2Vuc2UsIE5VTEwpIFVT SU5HIGNwODUwKSk7CitTRUxFQ1QgQ09OVkVSVChRVU9URShDSEFSKDB4ZjUgdXNpbmcgdWNzMikp LCBTSUdORUQpOworCiAtLWVjaG8gRW5kIG9mIDUuMCB0ZXN0cwogCiAKCj09PSBhZGRlZCBmaWxl ICdteXNxbC10ZXN0L3QvZnVuY19lbmNyeXB0X3VjczIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90 L2Z1bmNfZW5jcnlwdF91Y3MyLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9t eXNxbC10ZXN0L3QvZnVuY19lbmNyeXB0X3VjczIudGVzdAkyMDExLTAzLTAzIDEyOjI3OjM2ICsw MDAwCkBAIC0wLDAgKzEsMTIgQEAKKy0tIHNvdXJjZSBpbmNsdWRlL2hhdmVfc3NsX2NyeXB0b19m dW5jdHMuaW5jCistLSBzb3VyY2UgaW5jbHVkZS9oYXZlX3VjczIuaW5jCisKKy0tZWNobyAjCist LWVjaG8gIyBCdWcjNTk2NDggbXlfc3RydG9sbDEwX21iMjogQXNzZXJ0aW9uIGAoKmVuZHB0ciAt IHMpICUgMiA9PSAwJyBmYWlsZWQuCistLWVjaG8gIworCitTRUxFQ1QgQ0hBUl9MRU5HVEgoREVT X0VOQ1JZUFQoMCwgQ0hBUignMScgVVNJTkcgdWNzMikpKTsKK1NFTEVDVCBDT05WRVJUKERFU19F TkNSWVBUKDAsIENIQVIoJzEnIFVTSU5HIHVjczIpKSxVTlNJR05FRCk7CisKK1NFTEVDVCBDSEFS X0xFTkdUSChERVNfREVDUllQVCgweEZGMERDOUZDOTUzN0NBNzVGNCwgQ0hBUignMScgVVNJTkcg dWNzMikpKTsKK1NFTEVDVCBDT05WRVJUKERFU19ERUNSWVBUKDB4RkYwREM5RkM5NTM3Q0E3NUY0 LCBDSEFSKCcxJyB1c2luZyB1Y3MyKSksIFVOU0lHTkVEKTsKCj09PSBtb2RpZmllZCBmaWxlICdz cWwvaXRlbV9mdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9mdW5jLmNjCTIwMTEtMDMtMDEgMTQ6NDc6 MDEgKzAwMDAKKysrIGIvc3FsL2l0ZW1fZnVuYy5jYwkyMDExLTAzLTA0IDE0OjU5OjMyICswMDAw CkBAIC04ODYsNyArODg2LDcgQEAgbG9uZ2xvbmcgSXRlbV9mdW5jX251bWh5YnJpZDo6dmFsX2lu dCgpCiAgICAgICByZXR1cm4gMDsKIAogICAgIGNoYXIgKmVuZD0gKGNoYXIqKSByZXMtPnB0cigp ICsgcmVzLT5sZW5ndGgoKTsKLSAgICBDSEFSU0VUX0lORk8gKmNzPSBzdHJfdmFsdWUuY2hhcnNl dCgpOworICAgIENIQVJTRVRfSU5GTyAqY3M9IHJlcy0+Y2hhcnNldCgpOwogICAgIHJldHVybiAo Kihjcy0+Y3NldC0+c3RydG9sbDEwKSkoY3MsIHJlcy0+cHRyKCksICZlbmQsICZlcnJfbm90X3Vz ZWQpOwogICB9CiAgIGRlZmF1bHQ6Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW1fc3RyZnVu Yy5jYycKLS0tIGEvc3FsL2l0ZW1fc3RyZnVuYy5jYwkyMDExLTAyLTEwIDA4OjQ3OjA1ICswMDAw CisrKyBiL3NxbC9pdGVtX3N0cmZ1bmMuY2MJMjAxMS0wMy0wNCAxNDo1OTozMiArMDAwMApAQCAt Nzk2LDYgKzc5Niw3IEBAIFN0cmluZyAqSXRlbV9mdW5jX2Rlc19lbmNyeXB0Ojp2YWxfc3RyKFMK ICAgdG1wX2FyZ1tyZXNfbGVuZ3RoLTFdPXRhaWw7ICAgICAgICAgICAgICAgICAgIC8vIHNhdmUg ZXh0cmEgbGVuZ3RoCiAgIHRtcF92YWx1ZS5yZWFsbG9jKHJlc19sZW5ndGgrMSk7CiAgIHRtcF92 YWx1ZS5sZW5ndGgocmVzX2xlbmd0aCsxKTsKKyAgdG1wX3ZhbHVlLnNldF9jaGFyc2V0KCZteV9j aGFyc2V0X2Jpbik7CiAgIHRtcF92YWx1ZVswXT0oY2hhcikgKDEyOCB8IGtleV9udW1iZXIpOwog ICAvLyBSZWFsIGVuY3J5cHRpb24KICAgYnplcm8oKGNoYXIqKSAmaXZlYyxzaXplb2YoaXZlYykp OwpAQCAtODgzLDYgKzg4NCw3IEBAIFN0cmluZyAqSXRlbV9mdW5jX2Rlc19kZWNyeXB0Ojp2YWxf c3RyKFMKICAgaWYgKCh0YWlsPSh1aW50KSAodWNoYXIpIHRtcF92YWx1ZVtsZW5ndGgtMl0pID4g OCkKICAgICBnb3RvIHdyb25nX2tleTsJCQkJICAgICAvLyBXcm9uZyBrZXkKICAgdG1wX3ZhbHVl Lmxlbmd0aChsZW5ndGgtMS10YWlsKTsKKyAgdG1wX3ZhbHVlLnNldF9jaGFyc2V0KCZteV9jaGFy c2V0X2Jpbik7CiAgIHJldHVybiAmdG1wX3ZhbHVlOwogCiBlcnJvcjoKQEAgLTM1OTcsMTQgKzM1 OTksNjggQEAgU3RyaW5nICpJdGVtX2Z1bmNfcXVvdGU6OnZhbF9zdHIoU3RyaW5nIAogICB9CiAK ICAgYXJnX2xlbmd0aD0gYXJnLT5sZW5ndGgoKTsKLSAgbmV3X2xlbmd0aD0gYXJnX2xlbmd0aCsy OyAvKiBmb3IgYmVnaW5uaW5nIGFuZCBlbmRpbmcgJyBzaWducyAqLwogCi0gIGZvciAoZnJvbT0g KGNoYXIqKSBhcmctPnB0cigpLCBlbmQ9IGZyb20gKyBhcmdfbGVuZ3RoOyBmcm9tIDwgZW5kOyBm cm9tKyspCi0gICAgbmV3X2xlbmd0aCs9IGdldF9lc2NfYml0KGVzY21hc2ssICh1Y2hhcikgKmZy b20pOworICBpZiAoY29sbGF0aW9uLmNvbGxhdGlvbi0+bWJtYXhsZW4gPT0gMSkKKyAgeworICAg IG5ld19sZW5ndGg9IGFyZ19sZW5ndGggKyAyOyAvKiBmb3IgYmVnaW5uaW5nIGFuZCBlbmRpbmcg JyBzaWducyAqLworICAgIGZvciAoZnJvbT0gKGNoYXIqKSBhcmctPnB0cigpLCBlbmQ9IGZyb20g KyBhcmdfbGVuZ3RoOyBmcm9tIDwgZW5kOyBmcm9tKyspCisgICAgICBuZXdfbGVuZ3RoKz0gZ2V0 X2VzY19iaXQoZXNjbWFzaywgKHVjaGFyKSAqZnJvbSk7CisgIH0KKyAgZWxzZQorICB7CisgICAg bmV3X2xlbmd0aD0gKGFyZ19sZW5ndGggKiAyKSArICAvKiBGb3Igc3RyaW5nIGNoYXJhY3RlcnMg Ki8KKyAgICAgICAgICAgICAgICAoMiAqIGNvbGxhdGlvbi5jb2xsYXRpb24tPm1ibWF4bGVuKTsg LyogRm9yIHF1b3RlcyAqLworICB9CiAKICAgaWYgKHRtcF92YWx1ZS5hbGxvYyhuZXdfbGVuZ3Ro KSkKICAgICBnb3RvIG51bGw7CiAKKyAgaWYgKGNvbGxhdGlvbi5jb2xsYXRpb24tPm1ibWF4bGVu ID4gMSkKKyAgeworICAgIENIQVJTRVRfSU5GTyAqY3M9IGNvbGxhdGlvbi5jb2xsYXRpb247Cisg ICAgaW50IG1ibGVuOworICAgIHVjaGFyICp0b19lbmQ7CisgICAgdG89IChjaGFyKikgdG1wX3Zh bHVlLnB0cigpOworICAgIHRvX2VuZD0gKHVjaGFyKikgdG8gKyBuZXdfbGVuZ3RoOworCisgICAg LyogUHV0IGxlYWRpbmcgcXVvdGUgKi8KKyAgICBpZiAoKG1ibGVuPSBjcy0+Y3NldC0+d2NfbWIo Y3MsICdcJycsICh1Y2hhciAqKSB0bywgdG9fZW5kKSkgPD0gMCkKKyAgICAgIGdvdG8gbnVsbDsK KyAgICB0bys9IG1ibGVuOworCisgICAgZm9yIChzdGFydD0gKGNoYXIqKSBhcmctPnB0cigpLCBl bmQ9IHN0YXJ0ICsgYXJnX2xlbmd0aDsgc3RhcnQgPCBlbmQ7ICkKKyAgICB7CisgICAgICBteV93 Y190IHdjOworICAgICAgYm9vbCBlc2NhcGU7CisgICAgICBpZiAoKG1ibGVuPSBjcy0+Y3NldC0+ bWJfd2MoY3MsICZ3YywgKHVjaGFyKikgc3RhcnQsICh1Y2hhciopIGVuZCkpIDw9IDApCisgICAg ICAgIGdvdG8gbnVsbDsKKyAgICAgIHN0YXJ0Kz0gbWJsZW47CisgICAgICBzd2l0Y2ggKHdjKSB7 CisgICAgICAgIGNhc2UgMDogICAgICBlc2NhcGU9IDE7IHdjPSAnMCc7IGJyZWFrOworICAgICAg ICBjYXNlICdcMDMyJzogZXNjYXBlPSAxOyB3Yz0gJ1onOyBicmVhazsKKyAgICAgICAgY2FzZSAn XCcnOiAgIGVzY2FwZT0gMTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xcJzogICBlc2NhcGU9IDE7 IGJyZWFrOworICAgICAgICBkZWZhdWx0OiAgICAgZXNjYXBlPSAwOyBicmVhazsKKyAgICAgIH0K KyAgICAgIGlmIChlc2NhcGUpCisgICAgICB7CisgICAgICAgIGlmICgobWJsZW49IGNzLT5jc2V0 LT53Y19tYihjcywgJ1xcJywgKHVjaGFyKikgdG8sIHRvX2VuZCkpIDw9IDApCisgICAgICAgICAg Z290byBudWxsOworICAgICAgICB0bys9IG1ibGVuOworICAgICAgfQorICAgICAgaWYgKChtYmxl bj0gY3MtPmNzZXQtPndjX21iKGNzLCB3YywgKHVjaGFyKikgdG8sIHRvX2VuZCkpIDw9IDApCisg ICAgICAgIGdvdG8gbnVsbDsKKyAgICAgIHRvKz0gbWJsZW47CisgICAgfQorCisgICAgLyogUHV0 IHRyYWlsaW5nIHF1b3RlICovCisgICAgaWYgKChtYmxlbj0gY3MtPmNzZXQtPndjX21iKGNzLCAn XCcnLCAodWNoYXIgKikgdG8sIHRvX2VuZCkpIDw9IDApCisgICAgICBnb3RvIG51bGw7CisgICAg dG8rPSBtYmxlbjsKKyAgICBuZXdfbGVuZ3RoPSB0byAtIHRtcF92YWx1ZS5wdHIoKTsKKyAgICBn b3RvIHJldDsKKyAgfQorCiAgIC8qCiAgICAgV2UgcmVwbGFjZSBjaGFyYWN0ZXJzIGZyb20gdGhl IGVuZCB0byB0aGUgYmVnaW5uaW5nCiAgICovCkBAIC0zNjM2LDYgKzM2OTIsOCBAQCBTdHJpbmcg Kkl0ZW1fZnVuY19xdW90ZTo6dmFsX3N0cihTdHJpbmcgCiAgICAgfQogICB9CiAgICp0bz0gJ1wn JzsKKworcmV0OgogICB0bXBfdmFsdWUubGVuZ3RoKG5ld19sZW5ndGgpOwogICB0bXBfdmFsdWUu c2V0X2NoYXJzZXQoY29sbGF0aW9uLmNvbGxhdGlvbik7CiAgIG51bGxfdmFsdWU9IDA7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW1fc3RyZnVuYy5oJwotLS0gYS9zcWwvaXRlbV9zdHJmdW5j LmgJMjAxMS0wMi0xMCAwODo0NzowNSArMDAwMAorKysgYi9zcWwvaXRlbV9zdHJmdW5jLmgJMjAx MS0wMy0wNCAxNDo1OTozMiArMDAwMApAQCAtODA4LDkgKzgwOCwxMCBAQCBwdWJsaWM6CiAgIFN0 cmluZyAqdmFsX3N0cihTdHJpbmcgKik7CiAgIHZvaWQgZml4X2xlbmd0aF9hbmRfZGVjKCkKICAg ewotICAgIHVsb25nbG9uZyBtYXhfcmVzdWx0X2xlbmd0aD0gKHVsb25nbG9uZykgYXJnc1swXS0+ bWF4X2xlbmd0aCAqIDIgKyAyOwotICAgIG1heF9sZW5ndGg9ICh1aW50MzIpIG1pbihtYXhfcmVz dWx0X2xlbmd0aCwgTUFYX0JMT0JfV0lEVEgpOwogICAgIGNvbGxhdGlvbi5zZXQoYXJnc1swXS0+ Y29sbGF0aW9uKTsKKyAgICB1bG9uZ2xvbmcgbWF4X3Jlc3VsdF9sZW5ndGg9ICh1bG9uZ2xvbmcp IGFyZ3NbMF0tPm1heF9sZW5ndGggKiAyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAyICogY29sbGF0aW9uLmNvbGxhdGlvbi0+bWJtYXhsZW47CisgICAgbWF4X2xlbmd0aD0g KHVpbnQzMikgbWluKG1heF9yZXN1bHRfbGVuZ3RoLCBNQVhfQkxPQl9XSURUSCk7CiAgIH0KIH07 CiAKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku