From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29209 invoked by alias); 3 Sep 2010 10:29:27 -0000 Received: (qmail 29194 invoked by uid 22791); 3 Sep 2010 10:29:25 -0000 X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL,BAYES_05,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from portal.icerasemi.com (HELO pOrtaL.icerasemi.com) (213.249.204.90) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 03 Sep 2010 10:29:21 +0000 X-ASG-Debug-ID: 1283509755-23cc001f0000-ThFIni X-Barracuda-URL: http://192.168.1.243:80/cgi-bin/mark.cgi Received: from Exchangevs.Icerasemi.com (cluster1.icerasemi.local [192.168.1.203]) by pOrtaL.icerasemi.com (Spam & Virus Firewall) with ESMTP id 662BC97F18; Fri, 3 Sep 2010 10:29:15 +0000 (GMT) Received: from Exchangevs.Icerasemi.com (cluster1.icerasemi.local [192.168.1.203]) by pOrtaL.icerasemi.com with ESMTP id gVcfwrhCBELXSDit; Fri, 03 Sep 2010 10:29:15 +0000 (GMT) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CB4B52.DB423930" X-ASG-Orig-Subj: RE: Clustering switch cases Subject: RE: Clustering switch cases Date: Fri, 03 Sep 2010 10:29:00 -0000 Message-ID: <4D60B0700D1DB54A8C0C6E9BE6916370107D0A57@EXCHANGEVS.IceraSemi.local> References: <4D60B0700D1DB54A8C0C6E9BE691637008965A28@EXCHANGEVS.IceraSemi.local> From: "Rahul Kharche" To: "Paulo J. Matos" Cc: "sdkteam-gnu" , X-Barracuda-Connect: cluster1.icerasemi.local[192.168.1.203] X-Barracuda-Start-Time: 1283509755 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.39753 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2010-09/txt/msg00024.txt.bz2 This is a multi-part message in MIME format. ------_=_NextPart_001_01CB4B52.DB423930 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 1094 PiBJIGhhdmUgYmVlbiB3b3JraW5nIG9uIHlvdXIgcGF0Y2ggYnV0IEkgZGlk bid0IG1hbmFnZSB0byBnZXQgaXQNCj4gd29ya2luZyB5ZXQuIFVuZm9ydHVu YXRlbHkgb3VyIGN1cnJlbnQgc3RhYmxlIEdDQyB2ZXJzaW9uIGlmIDQuMy40 IGFuZA0KPiBvdXIgNC40Lnggc3RpbGwgaGFzIHNvbWUgaXNzdWVzLg0KPiBJ IHRyaWVkIGJhY2twb3J0aW5nIHlvdXIgcGF0Y2ggdG8gR0NDIDQuMy40IGJ1 dCBpdCBpbnRyb2R1Y2VkIHNldmVyYWwNCj4gcmVncmVzc2lvbnMuICBJdCdz IG15IGd1ZXNzIHRoaXMgaXMgZHVlIHRvIG15IGluY29ycmVjdCBtYW51YWwN Cj4gcGF0Y2hpbmcgb2YgNC4zLg0KPiBCZWZvcmUgSSBnbyB0aHJvdWdoIHRo ZSByZWdyZXNzaW9ucyBvbiBvdXIgR0NDIDQuMyBhbmQgdHJ5IHRvIGZpeCB0 aGUNCj4gcGF0Y2hpbmcsIGRvIHlvdSBoYXZlIGJ5IGFueSBjaGFuZ2UgYSBw YXRjaCBhZ2FpbnN0IDQuMy54Pw0KDQpDYW4geW91IHRyeSB0aGUgYXR0YWNo ZWQgcGF0Y2ggYWdhaW4gd2l0aCBHQ0MgNC40LjEgYW5kIGxldCBtZSBrbm93 IGlmIGl0DQpmaXhlcyB5b3VyIHJlZ3Jlc3Npb25zLiBUaGVyZSBhcmUgcmVs YXRlZCBjaGFuZ2VzIHRvIGhvdyBiYXNpYyBibG9ja3MgYXJlDQpzcGxpdCB0 aGF0IG1heSBuZWVkcyBjaGFuZ2luZyB3aGVuIHVzaW5nIHN3aXRjaCBjbHVz dGVyaW5nLiBUaGUgY2hhbmdlcw0KdG8gc3RtdC5jIGFyZSB0aGUgc2FtZSBh cyBiZWZvcmUuIFRoZSBhZGRpdGlvbmFsIGNoYW5nZXMgYXJlIHRvIGNmZ3J0 bC5jDQphbmQgY2ZnYnVpbGQuYy4NCg0KQ2hlZXJzLA0KUmFodWwNCg0K ------_=_NextPart_001_01CB4B52.DB423930 Content-Type: application/octet-stream; name="switch_case_clusters.patch" Content-Transfer-Encoding: base64 Content-Description: switch_case_clusters.patch Content-Disposition: attachment; filename="switch_case_clusters.patch" Content-length: 46421 MjAwNy0wNy0wNCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgkgICAg UHJhbmF2IEJoYW5kYXJrYXIgIDxwcmFuYXYuYmhhbmRhcmthckBjZWx1bml0 ZS5jb20+CgkgICAgUmFtYW5hIFJhZGhha3Jpc2huYW4gIDxyYW1hbmFAaWNl cmFzZW1pLmNvbT4KCSAgICBSYWh1bCBLaGFyY2hlICA8cmFodWxAaWNlcmFz ZW1pLmNvbT4KCgkqIHN0bXQuYyAoc3RydWN0IGNhc2Vfbm9kZSk6IEFkZGVk IG5ldyBtZW1iZXIgdGFibGVfc2V0LgoJKG1heF9pbml0aWFsaXplZCk6IE5l dyBmbGFnLgoJKGVtaXRfY2FzZV9ub2Rlcyk6IEFkZCBuZXcgdHJlZSBhcmd1 bWVudCwgaGFuZGxlIGNhc2UgY2NsdXN0ZXJzCglzZXBhcmF0ZWx5LgoJKGVt aXRfY2FzZV90YWJsZSk6IE5ldyBmdW5jdGlvbiwgZmFjdG9yZWQgb3V0IG9m IGV4cGFuZF9jYXNlLgoJKHNjYW5fZm9yX2Nhc2VfY2x1c3RlcnMpOiBOZXcu CgkoZHVtcF9jYXNlX25vZGVzKTogTmV3LgoJKGNoZWNrX3RyZWUpOiBOZXcu CgkoY2hlY2tfdHJlZV8xKTogTmV3LCBjYWxsZWQgYnkgY2hlY2tfdHJlZS4K CShleHBhbmRfY2FzZSk6IENhbGwgc2Nhbl9mb3JfY2FzZV9jbHVzdGVycywg Y2FsbCBlbWl0X2Nhc2VfdGFibGUuCgkoYmFsYW5jZV9jYXNlX25vZGVzKTog UmUtYmFsYW5jZSB0cmVlIGJhc2VkIG9uIGNsdXN0ZXJzIGlkZW50aWZpZWQK CWJ5IHNjYW5fZm9yX2Nhc2VfY2x1c3RlcnMuCgkqIGNmZ3J0bC5jIChqdW1w X3RhYmxlX2luX2JldHdlZW4pOiBOZXcuCgkoZmluZF9uZXh0X2xhYmVsX2Fm dGVyX2p1bXBfdGFibGUpOiBOZXcuCgkoanVtcF90YWJsZV9va190b19za2lw KTogTmV3LgoJKHJ0bF9zcGxpdF9ibG9jayk6IENhbGwgYWJvdmUgdG8gc3Bs aXQgYWZ0ZXIganVtcHRhYmxlLgoJKiBjZmdidWlsZC5jIChmaW5kX2JiX2Jv dW5kYXJpZXMpOiBHcmFiIG5ldyBoZWFkIG9mIGJhc2ljIGJsb2NrCglhZnRl ciBzcGxpdHRpbmcuCgotLS0gc3RtdC5jCTIwMDktMDQtMjYgMTk6NTM6NDEu MDAwMDAwMDAwICswMTAwCisrKyBzdG10LmMJMjAxMC0wOC0yOCAwMTozNjo1 NC4wMDAwMDAwMDAgKzAxMDAKQEAgLTg1LDYgKzg1LDcgQEAgc3RydWN0IGNh c2Vfbm9kZQogICBzdHJ1Y3QgY2FzZV9ub2RlCSpsZWZ0OwkvKiBMZWZ0IHNv biBpbiBiaW5hcnkgdHJlZSAqLwogICBzdHJ1Y3QgY2FzZV9ub2RlCSpyaWdo dDsJLyogUmlnaHQgc29uIGluIGJpbmFyeSB0cmVlOyBhbHNvIG5vZGUgY2hh aW4gKi8KICAgc3RydWN0IGNhc2Vfbm9kZQkqcGFyZW50OyAvKiBQYXJlbnQg b2Ygbm9kZSBpbiBiaW5hcnkgdHJlZSAqLworICBpbnQJCQl0YWJsZV9zZXQ7 IC8qIDAgbWVhbnMgYmluYXJ5IHRlc3QsIGVsc2UgZ3JvdXBlZCBieSB2YWwg Ki8KICAgdHJlZQkJCWxvdzsJLyogTG93ZXN0IGluZGV4IHZhbHVlIGZvciB0 aGlzIGxhYmVsICovCiAgIHRyZWUJCQloaWdoOwkvKiBIaWdoZXN0IGluZGV4 IHZhbHVlIGZvciB0aGlzIGxhYmVsICovCiAgIHRyZWUJCQljb2RlX2xhYmVs OyAvKiBMYWJlbCB0byBqdW1wIHRvIHdoZW4gbm9kZSBtYXRjaGVzICovCkBA IC05OSw2ICsxMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBjYXNlX25vZGUgKmNh c2Vfbm9kZV9wdHI7CiBzdGF0aWMgc2hvcnQgY29zdF90YWJsZV9bMTI5XTsK IHN0YXRpYyBpbnQgdXNlX2Nvc3RfdGFibGU7CiBzdGF0aWMgaW50IGNvc3Rf dGFibGVfaW5pdGlhbGl6ZWQ7CitzdGF0aWMgaW50IG1heF9pbml0aWFsaXpl ZDsKIAogLyogU3BlY2lhbCBjYXJlIGlzIG5lZWRlZCBiZWNhdXNlIHdlIGFs bG93IC0xLCBidXQgVFJFRV9JTlRfQ1NUX0xPVwogICAgaXMgdW5zaWduZWQu ICAqLwpAQCAtMTIwLDkgKzEyMiwxNSBAQCBzdGF0aWMgdm9pZCBiYWxhbmNl X2Nhc2Vfbm9kZXMgKGNhc2Vfbm9kCiBzdGF0aWMgaW50IG5vZGVfaGFzX2xv d19ib3VuZCAoY2FzZV9ub2RlX3B0ciwgdHJlZSk7CiBzdGF0aWMgaW50IG5v ZGVfaGFzX2hpZ2hfYm91bmQgKGNhc2Vfbm9kZV9wdHIsIHRyZWUpOwogc3Rh dGljIGludCBub2RlX2lzX2JvdW5kZWQgKGNhc2Vfbm9kZV9wdHIsIHRyZWUp Owotc3RhdGljIHZvaWQgZW1pdF9jYXNlX25vZGVzIChydHgsIGNhc2Vfbm9k ZV9wdHIsIHJ0eCwgdHJlZSk7CitzdGF0aWMgaW50IGVtaXRfY2FzZV9ub2Rl cyAocnR4LCB0cmVlLCBjYXNlX25vZGVfcHRyLCBydHgsIHRyZWUpOwogc3Rh dGljIHN0cnVjdCBjYXNlX25vZGUgKmFkZF9jYXNlX25vZGUgKHN0cnVjdCBj YXNlX25vZGUgKiwgdHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0cmVlLCB0cmVlLCB0cmVlLCBhbGxvY19wb29sKTsK K3N0YXRpYyB2b2lkIGVtaXRfY2FzZV90YWJsZSAodHJlZSwgY2FzZV9ub2Rl X3B0ciwgcnR4LCBydHgsIHRyZWUpOworc3RhdGljIHZvaWQgc2Nhbl9mb3Jf Y2FzZV9jbHVzdGVycyAoY2FzZV9ub2RlICosIHRyZWUpOworc3RhdGljIHZv aWQgZHVtcF9jYXNlX25vZGVzIChzdHJ1Y3QgY2FzZV9ub2RlICosIGludCk7 CitzdGF0aWMgaW50IGNoZWNrX3RyZWUgKGNhc2Vfbm9kZV9wdHIsIGludCk7 CitzdGF0aWMgaW50IGNoZWNrX3RyZWVfMSAoY2FzZV9ub2RlX3B0ciwgdW5z aWduZWQgbG9uZyBsb25nIGludCosCisJCQkgbG9uZyBsb25nIGludCosIGlu dCB1bnNpZ25lZHApOwogCiAMCiAvKiBSZXR1cm4gdGhlIHJ0eC1sYWJlbCB0 aGF0IGNvcnJlc3BvbmRzIHRvIGEgTEFCRUxfREVDTCwKQEAgLTIxNTAsNiAr MjE1OCwyMyBAQCBlbWl0X2Nhc2VfYml0X3Rlc3RzICh0cmVlIGluZGV4X3R5 cGUsIHRyCiAjZGVmaW5lIEhBVkVfdGFibGVqdW1wIDAKICNlbmRpZgogCitz dGF0aWMgdm9pZAorZHVtcF9jYXNlX25vZGVzKHN0cnVjdCBjYXNlX25vZGUg KnJvb3QsIGludCBpbmRlbnQpCit7CisgIGludCBoLCBsOworICBpZiAocm9v dCA9PSAwKQorICAgIHJldHVybjsKKyAgZHVtcF9jYXNlX25vZGVzIChyb290 LT5sZWZ0LCBpbmRlbnQrMyk7CisgIGggPSAoaW50KVRSRUVfSU5UX0NTVF9M T1cocm9vdC0+aGlnaCk7CisgIGwgPSAoaW50KVRSRUVfSU5UX0NTVF9MT1co cm9vdC0+bG93KTsKKyAgaWYgKGggPT0gbCkKKyAgICBmcHJpbnRmIChkdW1w X2ZpbGUsICIlKnMlZCIsIGluZGVudCwgIiIsIGwpOworICBlbHNlCisgICAg ZnByaW50ZiAoZHVtcF9maWxlLCAiJSpzJWQgLi4gJWQiLCBpbmRlbnQsICIi LCBsLCBoKTsKKyAgZnByaW50ZiAoZHVtcF9maWxlLCAiICglZClcbiIsIHJv b3QtPnRhYmxlX3NldCk7CisgIGR1bXBfY2FzZV9ub2RlcyAocm9vdC0+cmln aHQsIGluZGVudCszKTsKK30KKwogLyogVGVybWluYXRlIGEgY2FzZSAoUGFz Y2FsL0FkYSkgb3Igc3dpdGNoIChDKSBzdGF0ZW1lbnQKICAgIGluIHdoaWNo IE9SSUdfSU5ERVggaXMgdGhlIGV4cHJlc3Npb24gdG8gYmUgdGVzdGVkLgog ICAgSWYgT1JJR19UWVBFIGlzIG5vdCBOVUxMLCBpdCBpcyB0aGUgb3JpZ2lu YWwgT1JJR19JTkRFWApAQCAtMjE2NCw5ICsyMTg5LDYgQEAgZXhwYW5kX2Nh c2UgKHRyZWUgZXhwKQogICBzdHJ1Y3QgY2FzZV9ub2RlICpuOwogICB1bnNp Z25lZCBpbnQgY291bnQsIHVuaXE7CiAgIHJ0eCBpbmRleDsKLSAgcnR4IHRh YmxlX2xhYmVsOwotICBpbnQgbmNhc2VzOwotICBydHggKmxhYmVsdmVjOwog ICBpbnQgaTsKICAgcnR4IGJlZm9yZV9jYXNlLCBlbmQsIGxhYjsKIApAQCAt MjI5MSw2ICsyMzEzLDE0IEBAIGV4cGFuZF9jYXNlICh0cmVlIGV4cCkKICAg ICAgIC8qIENvbXB1dGUgc3BhbiBvZiB2YWx1ZXMuICAqLwogICAgICAgcmFu Z2UgPSBmb2xkX2J1aWxkMiAoTUlOVVNfRVhQUiwgaW5kZXhfdHlwZSwgbWF4 dmFsLCBtaW52YWwpOwogCisgICAgIGlmIChkdW1wX2ZpbGUpCisJIGZwcmlu dGYgKGR1bXBfZmlsZSwgInJhbmdlIGxvdyBpcyAlbGQgdW5pcXVlIGNhc2Vz IGlzICVkIGNvdW50IGlzICAlZCBwYyByZWwgJWRcbiIsCisJCSAgVFJFRV9J TlRfQ1NUX0xPVyAocmFuZ2UpLAorCQkgIHVuaXEsCisJCSAgY291bnQsCisJ CSAgQ0FTRV9WRUNUT1JfUENfUkVMQVRJVkUpOworICAgICAKKwogICAgICAg LyogVHJ5IGltcGxlbWVudGluZyB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgYnkg YSBzaG9ydCBzZXF1ZW5jZSBvZgogCSBiaXQtd2lzZSBjb21wYXJpc29ucy4g IEhvd2V2ZXIsIHdlIGxldCB0aGUgYmluYXJ5LXRyZWUgY2FzZQogCSBiZWxv dyBoYW5kbGUgY29uc3RhbnQgaW5kZXggZXhwcmVzc2lvbnMuICAqLwpAQCAt MjMzOCw2ICsyMzY4LDI2IEBAIGV4cGFuZF9jYXNlICh0cmVlIGV4cCkKIAl7 CiAJICBpbmRleCA9IGV4cGFuZF9ub3JtYWwgKGluZGV4X2V4cHIpOwogCisJ ICBpZiAoZHVtcF9maWxlKQorCSAgICB7CisJICAgICAgZnByaW50ZiAoZHVt cF9maWxlLCAiRW1pdHRpbmcgQmluYXJ5IERlY2lzaW9uIFRyZWUgYmVjYXVz ZSAiKTsKKwkgICAgICBpZiAoY291bnQgPCBjYXNlX3ZhbHVlc190aHJlc2hv bGQgKCkpCisJCWZwcmludGYgKGR1bXBfZmlsZSwgIiBDb3VudCBbJWRdIDwg Y2FzZV92YWx1ZXNfdGhyZXNob2xkIFslZF0gXG4iLAorCQkJIGNvdW50LCBj YXNlX3ZhbHVlc190aHJlc2hvbGQgKCkgKTsKKwkgICAgICBlbHNlCisJCWlm IChjb21wYXJlX3RyZWVfaW50IChyYW5nZSwKKwkJCQkgICAgICAob3B0aW1p emVfaW5zbl9mb3Jfc2l6ZV9wICgpID8gMyA6IDEwKSAqIGNvdW50KSA+IDAg KQorCQkgIHsKKwkJICAgIGNvbnN0IGNoYXIgKm1zZyA9IChvcHRpbWl6ZV9p bnNuX2Zvcl9zaXplX3AgKCkgPyAiMyIgOiAiMTAiKTsKKwkJICAgIGZwcmlu dGYgKGR1bXBfZmlsZSwgIlJhbmdlICVsZCA+ICVzIFslZF0gKiBjb3VudCBb JWRdIFxuIiwKKwkJCSAgICAgVFJFRV9JTlRfQ1NUX0xPVyAocmFuZ2UpLAor CQkJICAgICBtc2csCisJCQkgICAgICgob3B0aW1pemVfaW5zbl9mb3Jfc2l6 ZV9wICgpKSA/IDMgOiAxMCksCisJCQkgICAgIGNvdW50KTsKKworCQkgIH0K KwkgICAgfQorCQogCSAgLyogSWYgdGhlIGluZGV4IGlzIGEgc2hvcnQgb3Ig Y2hhciB0aGF0IHdlIGRvIG5vdCBoYXZlCiAJICAgICBhbiBpbnNuIHRvIGhh bmRsZSBjb21wYXJpc29ucyBkaXJlY3RseSwgY29udmVydCBpdCB0bwogCSAg ICAgYSBmdWxsIGludGVnZXIgbm93LCByYXRoZXIgdGhhbiBsZXR0aW5nIGVh Y2ggY29tcGFyaXNvbgpAQCAtMjM3Nyw5MCArMjQyNyw2MCBAQCBleHBhbmRf Y2FzZSAodHJlZSBleHApCiAJICB1c2VfY29zdF90YWJsZQogCSAgICA9IChU UkVFX0NPREUgKG9yaWdfdHlwZSkgIT0gRU5VTUVSQUxfVFlQRQogCSAgICAg ICAmJiBlc3RpbWF0ZV9jYXNlX2Nvc3RzIChjYXNlX2xpc3QpKTsKKworCSAg aWYgKGR1bXBfZmlsZSkKKwkgIHsKKwkgICAgICBmcHJpbnRmIChkdW1wX2Zp bGUsICJcbi0tLS0tICB0cmVlIGJlZm9yZSBzY2FubmluZyBjbHVzdGVyc1xu Iik7IAorCSAgICAgIGR1bXBfY2FzZV9ub2RlcyAoY2FzZV9saXN0LCAwKTsg CisJICB9CisKKwkgIHNjYW5fZm9yX2Nhc2VfY2x1c3RlcnMgKGNhc2VfbGlz dCwgaW5kZXhfdHlwZSk7CisKKwkgIGlmIChkdW1wX2ZpbGUpCisJICB7CisJ ICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG4tLS0tLSAgdHJlZSBhZnRl ciBzY2FubmluZyBjbHVzdGVycyBhbmQgYmVmb3JlIGJhbGFuY2luZy5cbiIp OyAKKwkgICAgICBkdW1wX2Nhc2Vfbm9kZXMgKGNhc2VfbGlzdCwgMCk7IAor CSAgfQorCiAJICBiYWxhbmNlX2Nhc2Vfbm9kZXMgKCZjYXNlX2xpc3QsIE5V TEwpOwotCSAgZW1pdF9jYXNlX25vZGVzIChpbmRleCwgY2FzZV9saXN0LCBk ZWZhdWx0X2xhYmVsLCBpbmRleF90eXBlKTsKLQkgIGlmIChkZWZhdWx0X2xh YmVsKQorCSAgCisJICBpZiAoZHVtcF9maWxlKQorCSAgICB7CisJICAgICAg ZnByaW50ZiAoZHVtcF9maWxlLCAiXG4tLS0tLSBmaW5hbCB0cmVlXG4iKTsg CisJICAgICAgZHVtcF9jYXNlX25vZGVzIChjYXNlX2xpc3QsIDApOyAKKwkg ICAgfQorCisJICAvKiBDaGVjayB0aGUgQmluYXJ5IERlY2lzaW9uIFRyZWUg Z2VuZXJhdGVkLiAqLworCSAgaWYgKGNoZWNrX3RyZWUgKGNhc2VfbGlzdCwg dW5zaWduZWRwKSkKKwkgIHsKKwkgICAgICBpZiAoZHVtcF9maWxlKQorCQkg IGZwcmludGYgKGR1bXBfZmlsZSwgIkJhZCBCaW5hcnkgU2VhcmNoIFRyZWUg Y3JlYXRlZCBpbiAlc1xuIiwKKwkJCSAgIGN1cnJlbnRfZnVuY3Rpb25fbmFt ZSAoKSk7CisJICAgICAgZXJyb3IgKCJCYWQgQmluYXJ5IFNlYXJjaCBUcmVl LiBDaGVjayB0aGUgZHVtcCBieSB1c2luZyAtZHEgb24gdGhlIGNvbW1hbmQg bGluZSBcbiIpOworCSAgICAgIAorCSAgfQorCSAgZWxzZQorCSAgeworCSAg ICAgIGlmIChkdW1wX2ZpbGUpCisJCSAgZnByaW50ZiAoZHVtcF9maWxlLCAi R2VuZXJhdGVkIEJpbmFyeSBTZWFyY2ggVHJlZSB2ZXJpZmllZCB0byBiZSBj b3JyZWN0LiBcbiIpOworCSAgICAgIG1heF9pbml0aWFsaXplZCA9IDA7CisJ ICB9CisJICAKKwkgIGlmIChlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBpbmRl eF9leHByLCBjYXNlX2xpc3QsIGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUp KQogCSAgICBlbWl0X2p1bXAgKGRlZmF1bHRfbGFiZWwpOworCiAJfQogICAg ICAgZWxzZQogCXsKIAkgIHJ0eCBmYWxsYmFja19sYWJlbCA9IGxhYmVsX3J0 eCAoY2FzZV9saXN0LT5jb2RlX2xhYmVsKTsKLQkgIHRhYmxlX2xhYmVsID0g Z2VuX2xhYmVsX3J0eCAoKTsKLQkgIGlmICghIHRyeV9jYXNlc2kgKGluZGV4 X3R5cGUsIGluZGV4X2V4cHIsIG1pbnZhbCwgcmFuZ2UsCi0JCQkgICAgdGFi bGVfbGFiZWwsIGRlZmF1bHRfbGFiZWwsIGZhbGxiYWNrX2xhYmVsKSkKLQkg ICAgewotCSAgICAgIGJvb2wgb2s7Ci0KLQkgICAgICAvKiBJbmRleCBqdW1w dGFibGVzIGZyb20gemVybyBmb3Igc3VpdGFibGUgdmFsdWVzIG9mCi0gICAg ICAgICAgICAgICAgIG1pbnZhbCB0byBhdm9pZCBhIHN1YnRyYWN0aW9uLiAg Ki8KLQkgICAgICBpZiAob3B0aW1pemVfaW5zbl9mb3Jfc3BlZWRfcCAoKQot CQkgICYmIGNvbXBhcmVfdHJlZV9pbnQgKG1pbnZhbCwgMCkgPiAwCi0JCSAg JiYgY29tcGFyZV90cmVlX2ludCAobWludmFsLCAzKSA8IDApCi0JCXsKLQkJ ICBtaW52YWwgPSBidWlsZF9pbnRfY3N0IChpbmRleF90eXBlLCAwKTsKLQkJ ICByYW5nZSA9IG1heHZhbDsKLQkJfQotCi0JICAgICAgb2sgPSB0cnlfdGFi bGVqdW1wIChpbmRleF90eXBlLCBpbmRleF9leHByLCBtaW52YWwsIHJhbmdl LAotCQkJCSAgdGFibGVfbGFiZWwsIGRlZmF1bHRfbGFiZWwpOwotCSAgICAg IGdjY19hc3NlcnQgKG9rKTsKLQkgICAgfQotCi0JICAvKiBHZXQgdGFibGUg b2YgbGFiZWxzIHRvIGp1bXAgdG8sIGluIG9yZGVyIG9mIGNhc2UgaW5kZXgu ICAqLwotCi0JICBuY2FzZXMgPSB0cmVlX2xvd19jc3QgKHJhbmdlLCAwKSAr IDE7Ci0JICBsYWJlbHZlYyA9IFhBTExPQ0FWRUMgKHJ0eCwgbmNhc2VzKTsK LQkgIG1lbXNldCAobGFiZWx2ZWMsIDAsIG5jYXNlcyAqIHNpemVvZiAocnR4 KSk7Ci0KLQkgIGZvciAobiA9IGNhc2VfbGlzdDsgbjsgbiA9IG4tPnJpZ2h0 KQotCSAgICB7Ci0JICAgICAgLyogQ29tcHV0ZSB0aGUgbG93IGFuZCBoaWdo IGJvdW5kcyByZWxhdGl2ZSB0byB0aGUgbWluaW11bQotCQkgdmFsdWUgc2lu Y2UgdGhhdCBzaG91bGQgZml0IGluIGEgSE9TVF9XSURFX0lOVCB3aGlsZSB0 aGUKLQkJIGFjdHVhbCB2YWx1ZXMgbWF5IG5vdC4gICovCi0JICAgICAgSE9T VF9XSURFX0lOVCBpX2xvdwotCQk9IHRyZWVfbG93X2NzdCAoZm9sZF9idWls ZDIgKE1JTlVTX0VYUFIsIGluZGV4X3R5cGUsCi0JCQkJCSAgICAgbi0+bG93 LCBtaW52YWwpLCAxKTsKLQkgICAgICBIT1NUX1dJREVfSU5UIGlfaGlnaAot CQk9IHRyZWVfbG93X2NzdCAoZm9sZF9idWlsZDIgKE1JTlVTX0VYUFIsIGlu ZGV4X3R5cGUsCi0JCQkJCSAgICAgbi0+aGlnaCwgbWludmFsKSwgMSk7Ci0J ICAgICAgSE9TVF9XSURFX0lOVCBpOwotCi0JICAgICAgZm9yIChpID0gaV9s b3c7IGkgPD0gaV9oaWdoOyBpICsrKQotCQlsYWJlbHZlY1tpXQotCQkgID0g Z2VuX3J0eF9MQUJFTF9SRUYgKFBtb2RlLCBsYWJlbF9ydHggKG4tPmNvZGVf bGFiZWwpKTsKLQkgICAgfQotCi0JICAvKiBGaWxsIGluIHRoZSBnYXBzIHdp dGggdGhlIGRlZmF1bHQuICBXZSBtYXkgaGF2ZSBnYXBzIGF0Ci0JICAgICB0 aGUgYmVnaW5uaW5nIGlmIHdlIHRyaWVkIHRvIGF2b2lkIHRoZSBtaW52YWwg c3VidHJhY3Rpb24sCi0JICAgICBzbyBzdWJzdGl0dXRlIHNvbWUgbGFiZWwg ZXZlbiBpZiB0aGUgZGVmYXVsdCBsYWJlbCB3YXMKLQkgICAgIGRlZW1lZCB1 bnJlYWNoYWJsZS4gICovCi0JICBpZiAoIWRlZmF1bHRfbGFiZWwpCi0JICAg IGRlZmF1bHRfbGFiZWwgPSBmYWxsYmFja19sYWJlbDsKLQkgIGZvciAoaSA9 IDA7IGkgPCBuY2FzZXM7IGkrKykKLQkgICAgaWYgKGxhYmVsdmVjW2ldID09 IDApCi0JICAgICAgbGFiZWx2ZWNbaV0gPSBnZW5fcnR4X0xBQkVMX1JFRiAo UG1vZGUsIGRlZmF1bHRfbGFiZWwpOwotCi0JICAvKiBPdXRwdXQgdGhlIHRh YmxlLiAgKi8KLQkgIGVtaXRfbGFiZWwgKHRhYmxlX2xhYmVsKTsKLQotCSAg aWYgKENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFIHx8IGZsYWdfcGljKQotCSAg ICBlbWl0X2p1bXBfaW5zbiAoZ2VuX3J0eF9BRERSX0RJRkZfVkVDIChDQVNF X1ZFQ1RPUl9NT0RFLAotCQkJCQkJICAgZ2VuX3J0eF9MQUJFTF9SRUYgKFBt b2RlLCB0YWJsZV9sYWJlbCksCi0JCQkJCQkgICBnZW5fcnR2ZWNfdiAobmNh c2VzLCBsYWJlbHZlYyksCi0JCQkJCQkgICBjb25zdDBfcnR4LCBjb25zdDBf cnR4KSk7Ci0JICBlbHNlCi0JICAgIGVtaXRfanVtcF9pbnNuIChnZW5fcnR4 X0FERFJfVkVDIChDQVNFX1ZFQ1RPUl9NT0RFLAotCQkJCQkgICAgICBnZW5f cnR2ZWNfdiAobmNhc2VzLCBsYWJlbHZlYykpKTsKLQotCSAgLyogUmVjb3Jk IG5vIGRyb3AtdGhyb3VnaCBhZnRlciB0aGUgdGFibGUuICAqLwotCSAgZW1p dF9iYXJyaWVyICgpOworCSAgZW1pdF9jYXNlX3RhYmxlIChpbmRleF9leHBy LCBjYXNlX2xpc3QsIGRlZmF1bHRfbGFiZWwsCisJCQkgICBmYWxsYmFja19s YWJlbCwgaW5kZXhfdHlwZSk7CiAJfQogCiAgICAgICBiZWZvcmVfY2FzZSA9 IE5FWFRfSU5TTiAoYmVmb3JlX2Nhc2UpOwogICAgICAgZW5kID0gZ2V0X2xh c3RfaW5zbiAoKTsKICAgICAgIHJlb3JkZXJfaW5zbnMgKGJlZm9yZV9jYXNl LCBlbmQsIHN0YXJ0KTsKICAgICB9Ci0KICAgZnJlZV90ZW1wX3Nsb3RzICgp OwogICBmcmVlX2FsbG9jX3Bvb2wgKGNhc2Vfbm9kZV9wb29sKTsKIH0KQEAg LTI1NTUsNiArMjU3NSw1NiBAQCBlc3RpbWF0ZV9jYXNlX2Nvc3RzIChjYXNl X25vZGVfcHRyIG5vZGUpCiAgIHJldHVybiAxOwogfQogCisvKiBTY2FuIGEg bGlzdCBvZiBjYXNlIHZhbHVlcywgZ3JvdXAgdGhlbSBpbnRvIGNsdXN0ZXJz IHdoaWNoIHNob3VsZAorICAgYmUgZW1pdHRlZCBhcyB0YWJsZWp1bXBzIGV2 ZW4gd2hlbiB0aGUgb3ZlcmFsbCBjYXNlIGxpc3QgaW5kaWNhdGVzCisgICBh IGRlc2ljaW9uIHRyZWUuICAqLworCitzdGF0aWMgdm9pZAorc2Nhbl9mb3Jf Y2FzZV9jbHVzdGVycyAoY2FzZV9ub2RlICpsaXN0LCB0cmVlIGluZGV4X3R5 cGUpCit7CisgIGNhc2Vfbm9kZSAqbiwgKmwsICpsYXN0X2luX2NsdXN0ZXI7 CisgIHVuc2lnbmVkIGludCBjb3VudDsKKyAgdHJlZSBtaW5fY2FzZTsKKyAg aW50IHRhYmxlX3NldCA9IDA7CisKKyAgbGlzdC0+cGFyZW50ID0gMDsKKyAg Zm9yIChuPWxpc3Q7IG47IG49bi0+cmlnaHQpCisgICAgeworICAgICAgbi0+ dGFibGVfc2V0ID0gMDsKKyAgICAgIGlmIChuLT5yaWdodCkKKwluLT5yaWdo dC0+cGFyZW50ID0gbjsKKyAgICB9CisKKyAgZm9yIChuPWxpc3Q7IG47IG49 bi0+cmlnaHQpCisgICAgeworICAgICAgbWluX2Nhc2UgPSBuLT5sb3c7Cisg ICAgICBjb3VudCA9IDA7CisgICAgICBsYXN0X2luX2NsdXN0ZXIgPSAwOwor ICAgICAgZm9yIChsPW47IGw7IGw9bC0+cmlnaHQpCisJeworCSAgY291bnQg Kys7CisJICBpZiAoY291bnQgPiBjYXNlX3ZhbHVlc190aHJlc2hvbGQgKCkK KwkgICAgICAmJiBjb21wYXJlX3RyZWVfaW50IChmb2xkIChidWlsZDJfc3Rh dCAoTUlOVVNfRVhQUiwgaW5kZXhfdHlwZSwgCisJCQkJCQkgICAgICBsLT5o aWdoLCBtaW5fY2FzZSkpLAorCQkJCSAgIChpbnQpKG9wdGltaXplX3NpemUg PyAzIDogMTApICogY291bnQpIDwgMCkKKwkgICAgbGFzdF9pbl9jbHVzdGVy ID0gbDsKKwkgIGVsc2UgaWYgKGxhc3RfaW5fY2x1c3RlcikKKwkgICAgYnJl YWs7CisJfQorICAgICAgaWYgKGxhc3RfaW5fY2x1c3RlcikKKwl7CisJICB0 YWJsZV9zZXQgKys7CisJICBmb3IgKGw9bjsgbDspCisJICAgIHsKKwkgICAg ICBsLT50YWJsZV9zZXQgPSB0YWJsZV9zZXQ7CisJICAgICAgaWYgKGwgPT0g bGFzdF9pbl9jbHVzdGVyKQorCQlicmVhazsKKwkgICAgICBsID0gbC0+cmln aHQ7CisJICAgIH0KKwkgIG4gPSBsYXN0X2luX2NsdXN0ZXI7CisJfQorICAg IH0KK30KIC8qIFRha2UgYW4gb3JkZXJlZCBsaXN0IG9mIGNhc2Ugbm9kZXMK ICAgIGFuZCB0cmFuc2Zvcm0gdGhlbSBpbnRvIGEgbmVhciBvcHRpbWFsIGJp bmFyeSB0cmVlLAogICAgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBhbnkgdGFy Z2V0IGNvZGUgc2VsZWN0aW9uIHZhbHVlIGlzIGFzCkBAIC0yNjUxLDEzICsy NzIxLDE2NCBAQCBiYWxhbmNlX2Nhc2Vfbm9kZXMgKGNhc2Vfbm9kZV9wdHIg KmhlYWQsCiAJCSAgbnBwID0gJigqbnBwKS0+cmlnaHQ7CiAJCX0KIAkgICAg fQorCSAgaWYgKCgqbnBwKS0+dGFibGVfc2V0KQorCSAgICB7CisJICAgICAg LyogV2UndmUgc2VsZWN0ZWQgYSBtZW1iZXIgb2YgYSBkZW5zZSBjbHVzdGVy LiAgUGljayBvbmUKKyAJCSBvZiB0aGUgZW5kcyBvZiB0aGUgY2x1c3RlciBz byB0aGF0IHdlIGNhbiBsYXRlcgorIAkJIGlzb2xhdGUgdGhlIGNsdXN0ZXIg YW5kIGVtaXQgYSB0YWJsZSBmb3IgaXQuICAqLworCSAgICAgIGludCBzZXQg PSAoKm5wcCktPnRhYmxlX3NldDsKKwkgICAgICBpbnQgbmVhcl9zdGFydD0w LCBuZWFyX2VuZD0wOworCSAgICAgIGNhc2Vfbm9kZSAqc3RhcnRfbm9kZSwg KmVuZF9ub2RlOworCSAgICAgIGlmIChkdW1wX2ZpbGUpCSAgICAgIAorCSAg ICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIlNlYXJjaGluZyB3aXRoIHNldCAl ZFxuIiwKKwkJICAgICAgc2V0KTsKKworCSAgICAgIC8qIEZpbmQgdGhlIGZp cnN0IGFuZCBsYXN0IG1lbWJlciBvZiB0aGUgY2x1c3Rlci4gICovCisJICAg ICAgZm9yIChzdGFydF9ub2RlID0gKm5wcDsKKwkJICAgKHN0YXJ0X25vZGUt PnBhcmVudCAhPSBwYXJlbnQpCisJCSAgICAgJiYgc3RhcnRfbm9kZS0+cGFy ZW50CisJCSAgICAgJiYgKHN0YXJ0X25vZGUtPnBhcmVudC0+dGFibGVfc2V0 ID09IHNldCk7CisJCSAgIHN0YXJ0X25vZGUgPSBzdGFydF9ub2RlLT5wYXJl bnQpCisJCXsKKwkJICAgIGlmIChkdW1wX2ZpbGUpCisJCSAgICB7CisJCQlm cHJpbnRmIChkdW1wX2ZpbGUsICJzdGFydF9ub2RlIGlzICVsZFxuIiwKKwkJ CQlUUkVFX0lOVF9DU1RfTE9XIChzdGFydF9ub2RlLT5sb3cpKTsKKwkJCWZw cmludGYgKGR1bXBfZmlsZSwgInBhcmVudCBpcyAlbGRcbiIsCisJCQkJKHBh cmVudCA/IFRSRUVfSU5UX0NTVF9MT1cgKHBhcmVudC0+bG93KSA6IC0xKSk7 CisJCSAgICB9CisJCSAgbmVhcl9zdGFydCArKzsKKwkJfQorCisJICAgICAg Zm9yIChlbmRfbm9kZSA9ICpucHA7CisJCSAgIGVuZF9ub2RlLT5yaWdodAor CQkgICAgICYmIChlbmRfbm9kZS0+cmlnaHQtPnRhYmxlX3NldCA9PSBzZXQp OworCQkgICBlbmRfbm9kZSA9IGVuZF9ub2RlLT5yaWdodCkKKwkJbmVhcl9l bmQgKys7CisKKwkgICAgICBpZiAoZHVtcF9maWxlKQorCQkgIGZwcmludGYg KGR1bXBfZmlsZSwgInN0YXJ0ICVsZCBkaXN0ICVkIGVuZCAlbGQgZGlzdCAl ZFxuIiwKKwkJCSAgIFRSRUVfSU5UX0NTVF9MT1cgKHN0YXJ0X25vZGUtPmxv dyksIG5lYXJfc3RhcnQsCisJCQkgICBUUkVFX0lOVF9DU1RfTE9XIChlbmRf bm9kZS0+bG93KSwgbmVhcl9lbmQpOworCSAgICAgIAorCSAgICAgIGlmIChz dGFydF9ub2RlLT5wYXJlbnQKKwkJICAmJiAoc3RhcnRfbm9kZS0+cGFyZW50 ICE9IHBhcmVudCkKKwkJICAmJiAoc3RhcnRfbm9kZS0+cGFyZW50LT50YWJs ZV9zZXQgPT0gMCkpCisJCXsKKwkJICAgIGlmIChkdW1wX2ZpbGUpCisJCQlm cHJpbnRmIChkdW1wX2ZpbGUsICJTdGFydCBub2RlIGNoYW5nZXMgdG8gYSBu b2RlIHdpdGggdGFibGUgc2V0IDAgXG4iKTsKKwkJICAgIAorCQkgIHN0YXJ0 X25vZGUgPSBzdGFydF9ub2RlLT5wYXJlbnQ7CisJCX0KKwkgICAgICBpZiAo ZHVtcF9maWxlKQorCQkgIGZwcmludGYgKGR1bXBfZmlsZSwgInN0YXJ0X25v ZGUtPnBhcmVudCAlcCAoJWxkKSBwYXJlbnQgJXAgKCVsZClcbiIsCisJCQkg IHN0YXJ0X25vZGUtPnBhcmVudCwKKwkJCSAgKHN0YXJ0X25vZGUtPnBhcmVu dAorCQkJICAgPyBUUkVFX0lOVF9DU1RfTE9XIChzdGFydF9ub2RlLT5wYXJl bnQtPmxvdykgOiAtMSksCisJCQkgIHBhcmVudCwKKwkJCSAgKHBhcmVudCA/ IFRSRUVfSU5UX0NTVF9MT1cgKHBhcmVudC0+bG93KSA6IC0xKSk7CisKKwkg ICAgICAvKiBXYXRjaCBvdXQgZm9yIGVuZC1vZi1saXN0IGNvbmRpdGlvbnMu ICAqLworCSAgICAgIGlmICghc3RhcnRfbm9kZS0+cGFyZW50IHx8IChzdGFy dF9ub2RlLT5wYXJlbnQgPT0gcGFyZW50KSkKKwkJeworCQkgICAgaWYgKGR1 bXBfZmlsZSkKKwkJCWZwcmludGYgKGR1bXBfZmlsZSwgInN0YXJ0IG5vZGUg aXMgbWFkZSB0byBiZSBlbXB0eS5cbiIpOworCisJCSAgc3RhcnRfbm9kZSA9 IDA7CisJCX0KKwkgICAgICBpZiAoIWVuZF9ub2RlLT5yaWdodCkKKwkJewor CQkgICAgaWYgKGR1bXBfZmlsZSkKKwkJCWZwcmludGYgKGR1bXBfZmlsZSwg ImVuZF9ub2RlLT5yaWdodCA9IGVtcHR5XG4iKTsKKworCQkgIGVuZF9ub2Rl ID0gMDsKKwkJfQorCSAgICAgIAorCisJICAgICAgLyogVGhpcyBtZWFucyB0 aGF0IHRoZXJlJ3Mgbm90aGluZyBsZWZ0IGluIHRoZSBsaXN0IGJ1dAorIAkJ IHRoZSBjbHVzdGVyOyB3ZSBrZWVwIGl0IGFzLWlzIGFuZCBsYXRlciBlbWl0 IGEKKyAJCSB0YWJsZWp1bXAgZm9yIGl0LiAgKi8KKwkgICAgICBpZiAoKCFz dGFydF9ub2RlICYmICFlbmRfbm9kZSkpCisJCXsKKwkJICAgIGlmIChkdW1w X2ZpbGUpCisJCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJkajogbm90aGluZyBs ZWZ0IGJ1dCB0aGUgdGFibGVcbiIpOworCisJCSAgcmV0dXJuOworCQl9CisK KwkgICAgICAvKiBNb3ZlIHRoZSBzZWxlY3Rpb24gdG8gZWl0aGVyIGJlZm9y ZSBvciBhZnRlciB0aGlzCisgCQkgY2x1c3Rlciwgd2hpY2hldmVyIGlzIGNs b3Nlci4gICovCisJICAgICAgaWYgKCFzdGFydF9ub2RlIHx8IChuZWFyX2Vu ZCA8IG5lYXJfc3RhcnQgICYmCisJCQkJICAoZW5kX25vZGUgJiYgZW5kX25v ZGUtPnJpZ2h0KSkpCisJCXsKKwkJICAgIGlmIChkdW1wX2ZpbGUpCisJCQlm cHJpbnRmIChkdW1wX2ZpbGUsICJTZXR0aW5nIG5ldyBwYXJlbnQgdG8gZW5k IG5vZGUgLT4gcmlnaHRcbiIpOworCQkgICAgbnBwID0gJihlbmRfbm9kZS0+ cmlnaHQpOworCQl9CisJICAgICAgZWxzZSBpZiAoIXN0YXJ0X25vZGUpCisJ CXsKKwkJICAgIGlmIChkdW1wX2ZpbGUpCisJCQlmcHJpbnRmIChkdW1wX2Zp bGUsICJzZXR0aW5nIG5ldyBwYXJlbnQgIHRvIGhlYWQgJXAgJWxkXG4iLCpo ZWFkLAorCQkJCVRSRUVfSU5UX0NTVF9MT1cgKCgqaGVhZCktPmxvdykpOwor CQkgICAgCisJCSAgbnBwID0gaGVhZDsKKwkJfQorCSAgICAgIGVsc2UKKwkJ eworCQkgICAgaWYgKGR1bXBfZmlsZSkKKwkJCWZwcmludGYgKGR1bXBfZmls ZSwgInNldHRpbmcgbmV3IHBhcmVudCB0byBzdGFydF9ub2RlLT5wYXJlbnQt PnJpZ2h0XG4iKTsKKworCQkgIG5wcCA9ICYoc3RhcnRfbm9kZS0+cGFyZW50 LT5yaWdodCk7CisJCX0KKworCSAgICAgIGlmIChkdW1wX2ZpbGUpCisJCSAg ZnByaW50ZiAoZHVtcF9maWxlLCAiZGo6IHNwbGl0IG1vdmVkIHRvICVsZFxu IiwgVFJFRV9JTlRfQ1NUX0xPVyAoKCpucHApLT5sb3cpKTsKKwkgICAgICAv KiBGSVhNRTo6IEFkZGVkIHRoaXMgdG8gY29ycmVjdCBjYXNlLiAqLworCisJ ICAgICAgaWYgKGxlZnQpCisJCWxlZnQtPnBhcmVudCAgPSBOVUxMOworCisJ ICAgIH0KIAkgICpoZWFkID0gbnAgPSAqbnBwOwogCSAgKm5wcCA9IDA7CiAJ ICBucC0+cGFyZW50ID0gcGFyZW50OwogCSAgbnAtPmxlZnQgPSBsZWZ0Owor CSAgbGVmdC0+cGFyZW50ID0gbnA7CisJICBpZiAoZHVtcF9maWxlKQorCSAg ICB7CisJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiUGFyZW50IG9mIGxl ZnQgc3VidHJlZSBpcyAlcCAweCVseCBcbiIsCisJCSAgICAgICBsZWZ0LT5w YXJlbnQsCisJCSAgICAgICAobGVmdC0+cGFyZW50KSA/IFRSRUVfSU5UX0NT VF9MT1cgKGxlZnQtPnBhcmVudC0+bG93KSA6IC0xKTsKKwkgICAgICAKKwkg ICAgICBpZiAobGVmdC0+cGFyZW50ICYmIGxlZnQtPnBhcmVudC0+dGFibGVf c2V0KQorCQkgIGZwcmludGYgKGR1bXBfZmlsZSwgIkNhdXRpb246IEEgY2x1 c3RlciBoYXMgYmVlbiBicm9rZW4gYXQgMHglbHhcbiIsCisJCQkgICAobGVm dC0+cGFyZW50KSA/IFRSRUVfSU5UX0NTVF9MT1cgKGxlZnQtPnBhcmVudC0+ bG93KSA6IC0xKTsKKwkJICAKKworCSAgICAgIGZwcmludGYgKGR1bXBfZmls ZSwgIlNldHRpbmcgbGVmdCBzdWJ0cmVlIHRvICVwKDB4JWx4KVxuIiwKKwkJ ICAgICAgbGVmdCwgKGxlZnQgPyBUUkVFX0lOVF9DU1RfTE9XIChsZWZ0LT5s b3cpIDogLTEpKTsKKwkgICAgICAKKwkgICAgICBmcHJpbnRmIChkdW1wX2Zp bGUsICJSaWdodCBpcyBzZXQgdG8gJXAoJWx4KVxuIixucC0+cmlnaHQsCisJ CSAgICAgIChucC0+cmlnaHQgPyBUUkVFX0lOVF9DU1RfTE9XIChucC0+cmln aHQtPmxvdykgOiAtMSkpOworCSAgICAgIAorCSAgICAgICAKKwkgICAgfQor CSAgaWYgKGR1bXBfZmlsZSkKKwkgIHsKKwkgICAgICBmcHJpbnRmIChkdW1w X2ZpbGUsICJkZXRhaWxzIGFib3V0IG5wIGJlZm9yZSBiYWxhbmNpbmcgbGVm dFxuIik7CisJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAibnAgPSAweCVs eCwgbnAtPnBhcmVudCA9IDB4JWx4LCAiLAorCQkgICAgICAgVFJFRV9JTlRf Q1NUX0xPVyAobnAtPmxvdyksCisJCSAgICAgICBucC0+cGFyZW50ID8gVFJF RV9JTlRfQ1NUX0xPVyAobnAtPnBhcmVudC0+bG93KSA6IC0xKTsKKwkgICAg ICBmcHJpbnRmIChkdW1wX2ZpbGUsICJucC0+bGVmdC0+cGFyZW50ID0gMHgl bHhcbiIsCisJCSAgICAgICBucC0+bGVmdC0+cGFyZW50ID8gVFJFRV9JTlRf Q1NUX0xPVyAobnAtPmxlZnQtPnBhcmVudC0+bG93KSA6IC0xKTsKKwkgICAg ICBmcHJpbnRmIChkdW1wX2ZpbGUsICJiYWxhbmNpbmcgbGVmdFxuIik7CisJ ICAgICAgIAorCSAgfQogCiAJICAvKiBPcHRpbWl6ZSBlYWNoIG9mIHRoZSB0 d28gc3BsaXQgcGFydHMuICAqLwogCSAgYmFsYW5jZV9jYXNlX25vZGVzICgm bnAtPmxlZnQsIG5wKTsKKwkgIGlmIChkdW1wX2ZpbGUpCisJICAgICAgZnBy aW50ZiAoZHVtcF9maWxlLCAiYmFsYW5jaW5nIHJpZ2h0XG4iKTsKIAkgIGJh bGFuY2VfY2FzZV9ub2RlcyAoJm5wLT5yaWdodCwgbnApOwogCX0KICAgICAg IGVsc2UKQEAgLTI3NjksNiArMjk5MCw5MiBAQCBub2RlX2hhc19oaWdoX2Jv dW5kIChjYXNlX25vZGVfcHRyIG5vZGUsCiAgIHJldHVybiAwOwogfQogCitz dGF0aWMgdm9pZAorZW1pdF9jYXNlX3RhYmxlICh0cmVlIGluZGV4X2V4cHIs IGNhc2Vfbm9kZV9wdHIgbm9kZSwgcnR4IGRlZmF1bHRfbGFiZWwsCisJCSBy dHggZmFsbGJhY2tfbGFiZWwsIHRyZWUgaW5kZXhfdHlwZSkKK3sKKyAgcnR4 IHRhYmxlX2xhYmVsOworICBjYXNlX25vZGUgKm47CisgIGludCBuY2FzZXM7 CisgIHJ0eCAqbGFiZWx2ZWM7CisgIGludCBpOworICB0cmVlIG1pbnZhbCwg bWF4dmFsLCByYW5nZTsKKworICBmb3IgKG49bm9kZTsgbi0+cmlnaHQ7IG49 bi0+cmlnaHQpOworCisgIG1pbnZhbCA9IG5vZGUtPmxvdzsKKyAgbWF4dmFs ID0gbi0+aGlnaDsKKyAgcmFuZ2UgPSBmb2xkX2J1aWxkMiAoTUlOVVNfRVhQ UiwgaW5kZXhfdHlwZSwgbWF4dmFsLCBtaW52YWwpOworCisKKyAgdGFibGVf bGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgpOworICBpZiAoISB0cnlfY2FzZXNp IChpbmRleF90eXBlLCBpbmRleF9leHByLCBtaW52YWwsIHJhbmdlLAorCQkg ICAgdGFibGVfbGFiZWwsIGRlZmF1bHRfbGFiZWwsIGZhbGxiYWNrX2xhYmVs KSkKKyAgICB7CisgICAgICBib29sIG9rOworICAgICAgCisgICAgICAvKiBJ bmRleCBqdW1wdGFibGVzIGZyb20gemVybyBmb3Igc3VpdGFibGUgdmFsdWVz IG9mCisJIG1pbnZhbCB0byBhdm9pZCBhIHN1YnRyYWN0aW9uLiAgKi8KKyAg ICAgIGlmICghIG9wdGltaXplX3NpemUKKwkgICYmIGNvbXBhcmVfdHJlZV9p bnQgKG1pbnZhbCwgMCkgPiAwCisJICAmJiBjb21wYXJlX3RyZWVfaW50ICht aW52YWwsIDMpIDwgMCkKKwl7CisJICBtaW52YWwgPSBidWlsZF9pbnRfY3N0 IChpbmRleF90eXBlLCAwKTsKKwkgIHJhbmdlID0gbWF4dmFsOworCX0KKyAg ICAgIAorICAgICAgb2sgPSB0cnlfdGFibGVqdW1wIChpbmRleF90eXBlLCBp bmRleF9leHByLCBtaW52YWwsIHJhbmdlLAorCQkJICB0YWJsZV9sYWJlbCwg ZGVmYXVsdF9sYWJlbCk7CisgICAgICBnY2NfYXNzZXJ0IChvayk7CisgICAg fQorICAKKyAgLyogR2V0IHRhYmxlIG9mIGxhYmVscyB0byBqdW1wIHRvLCBp biBvcmRlciBvZiBjYXNlIGluZGV4LiAgKi8KKyAgCisgIG5jYXNlcyA9IHRy ZWVfbG93X2NzdCAocmFuZ2UsIDApICsgMTsKKyAgbGFiZWx2ZWMgPSBhbGxv Y2EgKG5jYXNlcyAqIHNpemVvZiAocnR4KSk7CisgIG1lbXNldCAobGFiZWx2 ZWMsIDAsIG5jYXNlcyAqIHNpemVvZiAocnR4KSk7CisgIAorICBmb3IgKG4g PSBub2RlOyBuOyBuID0gbi0+cmlnaHQpCisgICAgeworICAgICAgLyogQ29t cHV0ZSB0aGUgbG93IGFuZCBoaWdoIGJvdW5kcyByZWxhdGl2ZSB0byB0aGUg bWluaW11bQorCSB2YWx1ZSBzaW5jZSB0aGF0IHNob3VsZCBmaXQgaW4gYSBI T1NUX1dJREVfSU5UIHdoaWxlIHRoZQorCSBhY3R1YWwgdmFsdWVzIG1heSBu b3QuICAqLworICAgICAgSE9TVF9XSURFX0lOVCBpX2xvdworCT0gdHJlZV9s b3dfY3N0IChmb2xkX2J1aWxkMiAoTUlOVVNfRVhQUiwgaW5kZXhfdHlwZSwK KwkJCQkgICAgIG4tPmxvdywgbWludmFsKSwgMSk7CisgICAgICBIT1NUX1dJ REVfSU5UIGlfaGlnaAorCT0gdHJlZV9sb3dfY3N0IChmb2xkX2J1aWxkMiAo TUlOVVNfRVhQUiwgaW5kZXhfdHlwZSwKKwkJCQkgICAgIG4tPmhpZ2gsIG1p bnZhbCksIDEpOworICAgICAgSE9TVF9XSURFX0lOVCBpOworICAgICAgCisg ICAgICBmb3IgKGkgPSBpX2xvdzsgaSA8PSBpX2hpZ2g7IGkgKyspCisJbGFi ZWx2ZWNbaV0KKwkgID0gZ2VuX3J0eF9MQUJFTF9SRUYgKFBtb2RlLCBsYWJl bF9ydHggKG4tPmNvZGVfbGFiZWwpKTsKKyAgICB9CisgIAorICAvKiBGaWxs IGluIHRoZSBnYXBzIHdpdGggdGhlIGRlZmF1bHQuICAqLworICBmb3IgKGkg PSAwOyBpIDwgbmNhc2VzOyBpKyspCisgICAgaWYgKGxhYmVsdmVjW2ldID09 IDApCisJICAgICAgbGFiZWx2ZWNbaV0gPSBnZW5fcnR4X0xBQkVMX1JFRiAo UG1vZGUsIGRlZmF1bHRfbGFiZWwpOworICAKKyAgCisgIC8qIE91dHB1dCB0 aGUgdGFibGUuICAqLworICBlbWl0X2xhYmVsICh0YWJsZV9sYWJlbCk7Cisg IAorICBpZiAoQ0FTRV9WRUNUT1JfUENfUkVMQVRJVkUgfHwgZmxhZ19waWMp CisgICAgZW1pdF9qdW1wX2luc24gKGdlbl9ydHhfQUREUl9ESUZGX1ZFQyAo Q0FTRV9WRUNUT1JfTU9ERSwKKwkJCQkJICAgZ2VuX3J0eF9MQUJFTF9SRUYg KFBtb2RlLCB0YWJsZV9sYWJlbCksCisJCQkJCSAgIGdlbl9ydHZlY192IChu Y2FzZXMsIGxhYmVsdmVjKSwKKwkJCQkJICAgY29uc3QwX3J0eCwgY29uc3Qw X3J0eCkpOworICBlbHNlCisgICAgZW1pdF9qdW1wX2luc24gKGdlbl9ydHhf QUREUl9WRUMgKENBU0VfVkVDVE9SX01PREUsCisJCQkJICAgICAgZ2VuX3J0 dmVjX3YgKG5jYXNlcywgbGFiZWx2ZWMpKSk7CisgIAorICAvKiBSZWNvcmQg bm8gZHJvcC10aHJvdWdoIGFmdGVyIHRoZSB0YWJsZS4gICovCisgIGVtaXRf YmFycmllciAoKTsKKyAgCit9CisKIC8qIFNlYXJjaCB0aGUgcGFyZW50IHNl Y3Rpb25zIG9mIHRoZQogICAgY2FzZSBub2RlIHRyZWUgdG8gc2VlIGlmIGJv dGggdGVzdHMgZm9yIHRoZSB1cHBlciBhbmQgbG93ZXIKICAgIGJvdW5kcyBv ZiBOT0RFIHdvdWxkIGJlIHJlZHVuZGFudC4gICovCkBAIC0yODA2LDE4ICsz MTEzLDQ3IEBAIG5vZGVfaXNfYm91bmRlZCAoY2FzZV9ub2RlX3B0ciBub2Rl LCB0cmUKICAgIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHZhbHVlIGdyZWF0ZXIg dGhhbiA1MS4gIElmIGFub3RoZXIgcGFyZW50CiAgICB0ZXN0cyBmb3IgdGhl IHZhbHVlIDUwLCB0aGVuIHRoaXMgbm9kZSBuZWVkIG5vdCB0ZXN0IGFueXRo aW5nLiAgKi8KIAotc3RhdGljIHZvaWQKLWVtaXRfY2FzZV9ub2RlcyAocnR4 IGluZGV4LCBjYXNlX25vZGVfcHRyIG5vZGUsIHJ0eCBkZWZhdWx0X2xhYmVs LAorc3RhdGljIGludAorZW1pdF9jYXNlX25vZGVzIChydHggaW5kZXgsIHRy ZWUgaW5kZXhfZXhwciwgY2FzZV9ub2RlX3B0ciBub2RlLCBydHggZGVmYXVs dF9sYWJlbCwKIAkJIHRyZWUgaW5kZXhfdHlwZSkKIHsKICAgLyogSWYgSU5E RVggaGFzIGFuIHVuc2lnbmVkIHR5cGUsIHdlIG11c3QgbWFrZSB1bnNpZ25l ZCBicmFuY2hlcy4gICovCiAgIGludCB1bnNpZ25lZHAgPSBUWVBFX1VOU0lH TkVEIChpbmRleF90eXBlKTsKKyAgaW50IHJldF92YWwgPSAxOwogICBlbnVt IG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGluZGV4KTsKICAgZW51 bSBtYWNoaW5lX21vZGUgaW1vZGUgPSBUWVBFX01PREUgKGluZGV4X3R5cGUp OwogCiAgIC8qIEhhbmRsZSBpbmRpY2VzIGRldGVjdGVkIGFzIGNvbnN0YW50 IGR1cmluZyBSVEwgZXhwYW5zaW9uLiAgKi8KICAgaWYgKG1vZGUgPT0gVk9J RG1vZGUpCiAgICAgbW9kZSA9IGltb2RlOworICAvKiBJZiBub2RlLT50YWJs ZV9zZXQgaXMgbm9uemVybywgdGhlbiB0aGF0IG5vZGUgYW5kIGFsbCB0aGUK KyAgICAgbm9kZS0+cmlnaHQgaW4gdGhlIGNoYWluIHJlcHJlc2VudCBhIGNs dXN0ZXIgb2YgY2FzZSBub2RlcyB3aGljaAorICAgICBhcmUgYXBwcm9wcmlh dGUgZm9yIGEgdGFibGVqdW1wLiAgTm90ZSB0aGF0IG5vZGUtPmxlZnQgbWF5 IGFsc28KKyAgICAgaGF2ZSBhIGNsdXN0ZXIsIHNvIHRlc3QgZm9yIHRoYXQg dG9vLiAgKi8KKyAgaWYgKG5vZGUtPnRhYmxlX3NldCAhPSAwICYmIAorICAg ICAgbm9kZS0+cmlnaHQgJiYgCisgICAgICBub2RlLT50YWJsZV9zZXQgPT0g bm9kZS0+cmlnaHQtPnRhYmxlX3NldCkKKyAgICB7CisgICAgICBpZiAobm9k ZS0+bGVmdCkKKwl7CisJICB0cmVlIHRlc3RfbGFiZWwgPSBidWlsZF9kZWNs IChMQUJFTF9ERUNMLCBOVUxMX1RSRUUsIE5VTExfVFJFRSk7CisKKwkgIC8q IFNlZSBpZiB0aGUgdmFsdWUgaXMgb24gdGhlIHJpZ2h0LiAgKi8KKwkgIGVt aXRfY21wX2FuZF9qdW1wX2luc25zIChpbmRleCwKKwkJCQkgICBjb252ZXJ0 X21vZGVzCisJCQkJICAgKG1vZGUsIGltb2RlLAorCQkJCSAgICBleHBhbmRf ZXhwciAobm9kZS0+bG93LCBOVUxMX1JUWCwKKwkJCQkJCSBWT0lEbW9kZSwg MCksCisJCQkJICAgIHVuc2lnbmVkcCksCisJCQkJICAgR0UsIE5VTExfUlRY LCBtb2RlLCB1bnNpZ25lZHAsCisJCQkJICAgbGFiZWxfcnR4ICh0ZXN0X2xh YmVsKSk7CisJICByZXRfdmFsID0gZW1pdF9jYXNlX25vZGVzIChpbmRleCwg aW5kZXhfZXhwciwgbm9kZS0+bGVmdCwgZGVmYXVsdF9sYWJlbCwKKwkJCQkg ICAgIGluZGV4X3R5cGUpOworCSAgZXhwYW5kX2xhYmVsICh0ZXN0X2xhYmVs KTsKKwl9CisgICAgICBlbWl0X2Nhc2VfdGFibGUgKGluZGV4X2V4cHIsIG5v ZGUsIGRlZmF1bHRfbGFiZWwsIGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUp OworICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgIC8qIFNlZSBpZiBvdXIg cGFyZW50cyBoYXZlIGFscmVhZHkgdGVzdGVkIGV2ZXJ5dGhpbmcgZm9yIHVz LgogICAgICBJZiB0aGV5IGhhdmUsIGVtaXQgYW4gdW5jb25kaXRpb25hbCBq dW1wIGZvciB0aGlzIG5vZGUuICAqLwpAQCAtMjg1Miw3ICszMTg4LDggQEAg ZW1pdF9jYXNlX25vZGVzIChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdAogCQkJ CQl1bnNpZ25lZHApLAogCQkJCSAgICAgICBHVCwgTlVMTF9SVFgsIG1vZGUs IHVuc2lnbmVkcCwKIAkJCQkgICAgICAgbGFiZWxfcnR4IChub2RlLT5yaWdo dC0+Y29kZV9sYWJlbCkpOwotCSAgICAgIGVtaXRfY2FzZV9ub2RlcyAoaW5k ZXgsIG5vZGUtPmxlZnQsIGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUpOwor ICAgICAgICAgIHJldF92YWwgPSBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBp bmRleF9leHByLCBub2RlLT5sZWZ0LCBkZWZhdWx0X2xhYmVsLAorCQkJCSAg ICAgaW5kZXhfdHlwZSk7CiAJICAgIH0KIAogCSAgZWxzZSBpZiAobm9kZV9p c19ib3VuZGVkIChub2RlLT5sZWZ0LCBpbmRleF90eXBlKSkKQEAgLTI4NjQs NyArMzIwMSw4IEBAIGVtaXRfY2FzZV9ub2RlcyAocnR4IGluZGV4LCBjYXNl X25vZGVfcHQKIAkJCQkJdW5zaWduZWRwKSwKIAkJCQkgICAgICAgTFQsIE5V TExfUlRYLCBtb2RlLCB1bnNpZ25lZHAsCiAJCQkJICAgICAgIGxhYmVsX3J0 eCAobm9kZS0+bGVmdC0+Y29kZV9sYWJlbCkpOwotCSAgICAgIGVtaXRfY2Fz ZV9ub2RlcyAoaW5kZXgsIG5vZGUtPnJpZ2h0LCBkZWZhdWx0X2xhYmVsLCBp bmRleF90eXBlKTsKKwkgICAgICByZXRfdmFsID0gZW1pdF9jYXNlX25vZGVz IChpbmRleCwgaW5kZXhfZXhwciwgbm9kZS0+cmlnaHQsIGRlZmF1bHRfbGFi ZWwsCisJCQkJCSBpbmRleF90eXBlKTsKIAkgICAgfQogCiAJICAvKiBJZiBi b3RoIGNoaWxkcmVuIGFyZSBzaW5nbGUtdmFsdWVkIGNhc2VzIHdpdGggbm8K QEAgLTI5MTUsMTcgKzMyNTMsMTkgQEAgZW1pdF9jYXNlX25vZGVzIChydHgg aW5kZXgsIGNhc2Vfbm9kZV9wdAogCQkJCSAgICAgICBHVCwgTlVMTF9SVFgs IG1vZGUsIHVuc2lnbmVkcCwKIAkJCQkgICAgICAgbGFiZWxfcnR4ICh0ZXN0 X2xhYmVsKSk7CiAKLQkgICAgICAvKiBWYWx1ZSBtdXN0IGJlIG9uIHRoZSBs ZWZ0LgorICAgICAgICAgICAvKiBWYWx1ZSBtdXN0IGJlIG9uIHRoZSBsZWZ0 LgogCQkgSGFuZGxlIHRoZSBsZWZ0LWhhbmQgc3VidHJlZS4gICovCi0JICAg ICAgZW1pdF9jYXNlX25vZGVzIChpbmRleCwgbm9kZS0+bGVmdCwgZGVmYXVs dF9sYWJlbCwgaW5kZXhfdHlwZSk7CisJICAgICAgcmV0X3ZhbCA9IGVtaXRf Y2FzZV9ub2RlcyAoaW5kZXgsIGluZGV4X2V4cHIsIG5vZGUtPmxlZnQsIGRl ZmF1bHRfbGFiZWwsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5kZXhfdHlwZSk7CiAJICAgICAgLyogSWYgbGVmdC1oYW5kIHN1YnRy ZWUgZG9lcyBub3RoaW5nLAogCQkgZ28gdG8gZGVmYXVsdC4gICovCi0JICAg ICAgaWYgKGRlZmF1bHRfbGFiZWwpCi0JICAgICAgICBlbWl0X2p1bXAgKGRl ZmF1bHRfbGFiZWwpOworCSAgICAgIGlmIChyZXRfdmFsICYmIGRlZmF1bHRf bGFiZWwpCisJCWVtaXRfanVtcCAoZGVmYXVsdF9sYWJlbCk7CiAKIAkgICAg ICAvKiBDb2RlIGJyYW5jaGVzIGhlcmUgZm9yIHRoZSByaWdodC1oYW5kIHN1 YnRyZWUuICAqLwogCSAgICAgIGV4cGFuZF9sYWJlbCAodGVzdF9sYWJlbCk7 Ci0JICAgICAgZW1pdF9jYXNlX25vZGVzIChpbmRleCwgbm9kZS0+cmlnaHQs IGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUpOworCSAgICAgIHJldF92YWwg PSBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBpbmRleF9leHByLCBub2RlLT5y aWdodCwgZGVmYXVsdF9sYWJlbCwKKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbmRleF90eXBlKTsKIAkgICAgfQogCX0KIApAQCAtMjk1 Miw3ICszMjkyLDggQEAgZW1pdF9jYXNlX25vZGVzIChydHggaW5kZXgsIGNh c2Vfbm9kZV9wdAogCQkJCQkgICBkZWZhdWx0X2xhYmVsKTsKIAkJfQogCi0J ICAgICAgZW1pdF9jYXNlX25vZGVzIChpbmRleCwgbm9kZS0+cmlnaHQsIGRl ZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUpOworCSAgICAgIHJldF92YWwgPSBl bWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBpbmRleF9leHByLCBub2RlLT5yaWdo dCwgZGVmYXVsdF9sYWJlbCwKKwkJCQkJIGluZGV4X3R5cGUpOwogCSAgICB9 CiAJICBlbHNlCiAJICAgIC8qIFdlIGNhbm5vdCBwcm9jZXNzIG5vZGUtPnJp Z2h0IG5vcm1hbGx5CkBAIC0yOTgzLDcgKzMzMjQsOCBAQCBlbWl0X2Nhc2Vf bm9kZXMgKHJ0eCBpbmRleCwgY2FzZV9ub2RlX3B0CiAJCQkJCSAgIGRlZmF1 bHRfbGFiZWwpOwogCQl9CiAKLQkgICAgICBlbWl0X2Nhc2Vfbm9kZXMgKGlu ZGV4LCBub2RlLT5sZWZ0LCBkZWZhdWx0X2xhYmVsLCBpbmRleF90eXBlKTsK KwkgICAgIHJldF92YWwgPSBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBpbmRl eF9leHByLCBub2RlLT5sZWZ0LCBkZWZhdWx0X2xhYmVsLAorCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfdHlwZSk7CiAJICAgIH0K IAkgIGVsc2UKIAkgICAgLyogV2UgY2Fubm90IHByb2Nlc3Mgbm9kZS0+bGVm dCBub3JtYWxseQpAQCAtMzA0OCw3ICszMzkwLDcgQEAgZW1pdF9jYXNlX25v ZGVzIChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdAogCQkJCSAgIGxhYmVsX3J0 eCAobm9kZS0+Y29kZV9sYWJlbCkpOwogCiAJICAvKiBIYW5kbGUgdGhlIGxl ZnQtaGFuZCBzdWJ0cmVlLiAgKi8KLQkgIGVtaXRfY2FzZV9ub2RlcyAoaW5k ZXgsIG5vZGUtPmxlZnQsIGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUpOwor CSAgcmV0X3ZhbCA9IGVtaXRfY2FzZV9ub2RlcyAoaW5kZXgsIGluZGV4X2V4 cHIsIG5vZGUtPmxlZnQsIGRlZmF1bHRfbGFiZWwsIGluZGV4X3R5cGUpOwog CiAJICAvKiBJZiByaWdodCBub2RlIGhhZCB0byBiZSBoYW5kbGVkIGxhdGVy LCBkbyB0aGF0IG5vdy4gICovCiAKQEAgLTMwNTYsMTEgKzMzOTgsMTEgQEAg ZW1pdF9jYXNlX25vZGVzIChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdAogCSAg ICB7CiAJICAgICAgLyogSWYgdGhlIGxlZnQtaGFuZCBzdWJ0cmVlIGZlbGwg dGhyb3VnaCwKIAkJIGRvbid0IGxldCBpdCBmYWxsIGludG8gdGhlIHJpZ2h0 LWhhbmQgc3VidHJlZS4gICovCi0JICAgICAgaWYgKGRlZmF1bHRfbGFiZWwp Ci0JCWVtaXRfanVtcCAoZGVmYXVsdF9sYWJlbCk7CisJICAgICAgaWYgKHJl dF92YWwgJiYgZGVmYXVsdF9sYWJlbCkKKwkgICAgICBlbWl0X2p1bXAgKGRl ZmF1bHRfbGFiZWwpOwogCiAJICAgICAgZXhwYW5kX2xhYmVsICh0ZXN0X2xh YmVsKTsKLQkgICAgICBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBub2RlLT5y aWdodCwgZGVmYXVsdF9sYWJlbCwgaW5kZXhfdHlwZSk7CisJICAgICAgcmV0 X3ZhbCA9IGVtaXRfY2FzZV9ub2RlcyAoaW5kZXgsIGluZGV4X2V4cHIsIG5v ZGUtPnJpZ2h0LCBkZWZhdWx0X2xhYmVsLCBpbmRleF90eXBlKTsKIAkgICAg fQogCX0KIApAQCAtMzA4OSw3ICszNDMxLDcgQEAgZW1pdF9jYXNlX25vZGVz IChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdAogCQkJCSAgIExFLCBOVUxMX1JU WCwgbW9kZSwgdW5zaWduZWRwLAogCQkJCSAgIGxhYmVsX3J0eCAobm9kZS0+ Y29kZV9sYWJlbCkpOwogCi0JICBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBu b2RlLT5yaWdodCwgZGVmYXVsdF9sYWJlbCwgaW5kZXhfdHlwZSk7CisgICAg ICByZXRfdmFsID0gIGVtaXRfY2FzZV9ub2RlcyAoaW5kZXgsIGluZGV4X2V4 cHIsIG5vZGUtPnJpZ2h0LCBkZWZhdWx0X2xhYmVsLCBpbmRleF90eXBlKTsK IAl9CiAKICAgICAgIGVsc2UgaWYgKG5vZGUtPnJpZ2h0ID09IDAgJiYgbm9k ZS0+bGVmdCAhPSAwKQpAQCAtMzExNyw3ICszNDU5LDggQEAgZW1pdF9jYXNl X25vZGVzIChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdAogCQkJCSAgIEdFLCBO VUxMX1JUWCwgbW9kZSwgdW5zaWduZWRwLAogCQkJCSAgIGxhYmVsX3J0eCAo bm9kZS0+Y29kZV9sYWJlbCkpOwogCi0JICBlbWl0X2Nhc2Vfbm9kZXMgKGlu ZGV4LCBub2RlLT5sZWZ0LCBkZWZhdWx0X2xhYmVsLCBpbmRleF90eXBlKTsK KwkgIHJldF92YWwgPSBlbWl0X2Nhc2Vfbm9kZXMgKGluZGV4LCBpbmRleF9l eHByLCBub2RlLT5sZWZ0LCBkZWZhdWx0X2xhYmVsLAorCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5kZXhfdHlwZSk7CiAJfQogCiAgICAgICBl bHNlCkBAIC0zMTc0LDQgKzM1MTcsMTQ3IEBAIGVtaXRfY2FzZV9ub2RlcyAo cnR4IGluZGV4LCBjYXNlX25vZGVfcHQKIAkgIGVtaXRfanVtcCAobGFiZWxf cnR4IChub2RlLT5jb2RlX2xhYmVsKSk7CiAJfQogICAgIH0KKworICByZXR1 cm4gcmV0X3ZhbDsKIH0KKworLyogU3Vicm91dGluZSBvZiBjaGVja190cmVl LgorICAgUGVyZm9ybXMgaW5vcmRlciB0cmF2ZXJzYWwgb2YgdGhlIHRyZWUg cm9vdGVkIGF0IE5PREUuIE1BWCBpcyB0aGUgbGFzdAorICAgdmFsdWUgdGhh dCB3b3VsZCBoYXZlIGJlZW4gcHJpbnRlZCwgaWYgd2Ugd2VyZSB0byBwcmlu dCBub2RlcyAoIGlub3JkZXIKKyAgIHRyYXZlcnNhbCkuIENoZWNrIGlmIE1B WCBpcyBncmVhdGVyIHRoYW4gbm9kZS0+aGlnaCwgaWYgWWVzLCBSZXR1cm4g MQorICAgaW5kaWNhdGluZyBhIGJhZCBCaW5hcnkgU2VhcmNoIFRyZWUuIENo ZWNrIFdoZXRoZXIgdGhlIHBhcmVudAorICAgcG9pbnRlciBvZiBlYWNoIGNo aWxkIHBvaW50cyB0byBub2RlLiBJZiBub3QsIFJldHVybiAxLCBpbmRpY2F0 aW5nIGEKKyAgIGJhZCBUcmVlLiBSZXR1cm4gMCwgSWYgdGhlIHRyZWUgaXMg Y29ycmVjdC4gKi8KK3N0YXRpYworaW50IGNoZWNrX3RyZWVfMSAoY2FzZV9u b2RlX3B0ciBub2RlLCB1bnNpZ25lZCBsb25nIGxvbmcgaW50ICptYXh1LCBs b25nIGxvbmcgaW50KiBtYXhpLCBpbnQgdW5zaWduZWRwKQoreworICAgIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgaHU7CisgICAgbG9uZyBsb25nIGludCBo aTsKKworICAgIGlmICghIG5vZGUpCisJcmV0dXJuIDA7CisKKyAgICAvKiBj aGVjayB0aGUgbGVmdCBzdWJ0cmVlICovCisgICAgaWYgKGNoZWNrX3RyZWVf MSAobm9kZS0+bGVmdCwgbWF4dSwgbWF4aSwgdW5zaWduZWRwKSkKKwlyZXR1 cm4gMTsKKworICAgIGlmICh1bnNpZ25lZHApCisgICAgICB7CisgICAgICAg IHVuc2lnbmVkIGludCBoaV9wYXJ0ID0gVFJFRV9JTlRfQ1NUX0hJR0ggKG5v ZGUtPmhpZ2gpOworICAgICAgICB1bnNpZ25lZCBpbnQgbG9fcGFydCA9IFRS RUVfSU5UX0NTVF9MT1cgKG5vZGUtPmhpZ2gpOworCisgICAgICAgIGh1ID0g KCh1bnNpZ25lZCBsb25nIGxvbmcgaW50KWhpX3BhcnQgPDwgMzIpIHwgbG9f cGFydDsgICAKKyAgICAgIH0KKyAgICBlbHNlCisgICAgICB7CisgICAgICAg IGludCBoaV9wYXJ0ID0gVFJFRV9JTlRfQ1NUX0hJR0ggKG5vZGUtPmhpZ2gp OworICAgICAgICBpbnQgbG9fcGFydCA9IFRSRUVfSU5UX0NTVF9MT1cgKG5v ZGUtPmhpZ2gpOworCisgICAgICAgIGhpID0gKChsb25nIGxvbmcgaW50KWhp X3BhcnQgPDwgMzIpIHwgbG9fcGFydDsgICAgICAgICAgCisgICAgICB9CisK KyAgICAvKiBDaGVjayBpZiB0aGUgdHJlZSBpcyBjb3JyZWN0IGluIHRlcm1z IG9mIHRoZSB2YWx1ZXMgb2YgdGhlIG5vZGVzLiAqLworICAgIGlmICghbWF4 X2luaXRpYWxpemVkKQorICAgIHsKKwkvKiBXZSBoYXZlIHJlYWNoZWQgdGhl IGxlZnRtb3N0IG5vZGUgb2YgdGhlIHRyZWUuICovCisJaWYgKHVuc2lnbmVk cCkKKwkgICAgKm1heHUgPSBodTsKKwllbHNlCisJICAgICptYXhpID0gaGk7 CisJbWF4X2luaXRpYWxpemVkID0gMTsKKyAgICB9CisgICAgZWxzZSAgaWYg KCh1bnNpZ25lZHAgJiYgKCptYXh1IDwgaHUpKSB8fCAoIXVuc2lnbmVkcCAm JiAoKm1heGkgPCBoaSkpKQorICAgIHsKKwlpZiAodW5zaWduZWRwKQorCSAg ICAqbWF4dSA9IGh1OworCWVsc2UKKwkgICAgKm1heGkgPSBoaTsKKyAgICB9 CisgICAgZWxzZQorICAgIHsKKwlpZiAoZHVtcF9maWxlKQorCXsKKwkgICAg aWYgKHVuc2lnbmVkcCkKKwkgICAgeworCQlmcHJpbnRmIChkdW1wX2ZpbGUs ICJodSA9IDB4JWxseCwgaHUgPSAlbGx1ICh1bnNpZ25lZCksICptYXh1ID0g MHglbGx4LCAqbWF4dSAoZGVjaW1hbCkgPSAweCVsbHUgKHVuc2lnbmVkKVxu IiwKKwkJCSBodSwgaHUsICptYXh1LCAqbWF4dSApOworCQlmcHJpbnRmIChk dW1wX2ZpbGUsICJQUk9CTEVNOiBtYXh1IGlzIGdyZWF0ZXIgdGhhbiBodSwg d2hlbiBpdCBzaG91bGQgbm90IGJlIHNvLlxuIiApOworCSAgICB9CisJICAg IGVsc2UKKwkgICAgeworCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJoaSA9IDB4 JWxseCwgaGkgPSAlbGxkIChzaWduZWQpLCAqbWF4aSA9IDB4JWxseCwgKm1h eGkgKGRlY2ltYWwpID0gMHglbGx4IChzaWduZWQpXG4iLAorCQkJIGhpLCBo aSwgKm1heGksICptYXhpICk7CisJCWZwcmludGYgKGR1bXBfZmlsZSwgIlBS T0JMRU06IG1heGkgaXMgZ3JlYXRlciB0aGFuIGhpLCB3aGVuIGl0IHNob3Vs ZCBub3QgYmUgc28uXG4iICk7CisJICAgIH0KKwl9CisJcmV0dXJuIDE7Cisg ICAgfQorICAgIC8qIENoZWNrIHRvIHNlZSBpZiB0aGUgcG9pbnRlcnMgaW4g ZWFjaCBub2RlIGFyZSBzYW5lICovCisgICAgaWYgKChub2RlLT5sZWZ0ICYm ICghKG5vZGUtPmxlZnQtPnBhcmVudCA9PSBub2RlKSkpIHx8IChub2RlLT5y aWdodCAmJiAoIShub2RlLT5yaWdodC0+cGFyZW50ID09IG5vZGUpKSkpCisg ICAgeworCWlmIChkdW1wX2ZpbGUpCisJeworCSAgICBpZiAodW5zaWduZWRw KQorCSAgICB7CisJCWZwcmludGYgKGR1bXBfZmlsZSwgIlBST0JMRU06IFRo ZSBwYXJlbnQgcG9pbnRlcnMgb2YgY2hpbGRyZW4gZG8gbm90IHBvaW50IHRv IHRoZSBjb3JyZWN0IiAKKwkJCSAicG9pbnRlciBmb3IgdGhlIGZvbGxvd2lu Z1xuIik7CisJCWZwcmludGYgKGR1bXBfZmlsZSwgIlBhcmVudCAoSGV4KSA9 IDB4JWx4LCBQYXJlbnQgKERlY2ltYWwpID0gJWx1ICh1bnNpZ25lZClcbiIs IFRSRUVfSU5UX0NTVF9MT1cgKG5vZGUtPmxvdyksCisJCQkgVFJFRV9JTlRf Q1NUX0xPVyAobm9kZS0+bG93KSk7CisJCWZwcmludGYgKGR1bXBfZmlsZSwg IkxlZnQgQ2hpbGQgKEhleCkgPSAweCVseCwgTGVmdCBDaGlsZCAoRGVjaW1h bCkgPSAlbHUgKHVuc2lnbmVkKVxuIiwKKwkJCSBub2RlLT5sZWZ0P1RSRUVf SU5UX0NTVF9MT1cgKG5vZGUtPmxlZnQtPmxvdyk6LTEsbm9kZS0+bGVmdD9U UkVFX0lOVF9DU1RfTE9XIChub2RlLT5sZWZ0LT5sb3cpOi0xKTsKKwkJZnBy aW50ZiAoZHVtcF9maWxlLCAiTGVmdCBDaGlsZCdzIFBhcmVudCAoSGV4KSA9 IDB4JWx4LCBMZWZ0IENoaWxkJ3MgUGFyZW50IChEZWNpbWFsKSA9ICVsdSAo dW5zaWduZWQpXG4iLAorCQkJIG5vZGUtPmxlZnQ/bm9kZS0+bGVmdC0+cGFy ZW50P1RSRUVfSU5UX0NTVF9MT1cgKG5vZGUtPmxlZnQtPnBhcmVudC0+bG93 KTotMTotMSwKKwkJCSBub2RlLT5sZWZ0P25vZGUtPmxlZnQtPnBhcmVudD9U UkVFX0lOVF9DU1RfTE9XIChub2RlLT5sZWZ0LT5wYXJlbnQtPmxvdyk6LTE6 LTEpOworCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJSaWdodCBDaGlsZCAoSGV4 KSA9IDB4JWx4LCBSaWdodCBDaGlsZCAoRGVjaW1hbCkgPSAlbHUgKHVuc2ln bmVkKVxuIiwKKwkJCSBub2RlLT5yaWdodD9UUkVFX0lOVF9DU1RfTE9XIChu b2RlLT5yaWdodC0+bG93KTotMSxub2RlLT5yaWdodD9UUkVFX0lOVF9DU1Rf TE9XIChub2RlLT5yaWdodC0+bG93KTotMSk7CisJCWZwcmludGYgKGR1bXBf ZmlsZSwgIlJpZ2h0IENoaWxkJ3MgUGFyZW50IChIZXgpID0gMHglbHgsIFJp Z2h0IENoaWxkJ3MgUGFyZW50IChEZWNpbWFsKSA9ICVsdSAodW5zaWduZWQp XG4iLAorCQkJIG5vZGUtPnJpZ2h0P25vZGUtPnJpZ2h0LT5wYXJlbnQ/VFJF RV9JTlRfQ1NUX0xPVyAobm9kZS0+cmlnaHQtPnBhcmVudC0+bG93KTotMTot MSwKKwkJCSBub2RlLT5yaWdodD9ub2RlLT5yaWdodC0+cGFyZW50P1RSRUVf SU5UX0NTVF9MT1cgKG5vZGUtPnJpZ2h0LT5wYXJlbnQtPmxvdyk6LTE6LTEp OworCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJJZiB0aGUgdmFsdWUgb2YgYSBu b2RlIGlzIHNob3duIHRvIGJlIC0xIHRoZW4gaXQgbWVhbnMgdGhhdCB0aGUg Y2FzZSB2YWx1ZSBpcyBhY3R1YWxseSIKKwkJCSAiIC0xIG9yIHRoYXQgdGhl IHBvaW50ZXIgcG9pbnRzIHRvIG5vdGhpbmcgaS5lIGlzIE5VTExcbiIpOwor CSAgICB9CisJICAgIGVsc2UKKwkgICAgeworCisJCWZwcmludGYgKGR1bXBf ZmlsZSwgIlBST0JMRU06IFRoZSBwYXJlbnQgcG9pbnRlcnMgb2YgY2hpbGRy ZW4gZG8gbm90IHBvaW50IHRvIHRoZSBjb3JyZWN0IiAKKwkJCSAicG9pbnRl ciBmb3IgdGhlIGZvbGxvd2luZ1xuIik7CisJCWZwcmludGYgKGR1bXBfZmls ZSwgIlBhcmVudCAoSGV4KSA9IDB4JWx4LCBQYXJlbnQgKERlY2ltYWwpID0g JWxkIChzaWduZWQpXG4iLCBUUkVFX0lOVF9DU1RfTE9XIChub2RlLT5sb3cp LAorCQkJIFRSRUVfSU5UX0NTVF9MT1cgKG5vZGUtPmxvdykpOworCQlmcHJp bnRmIChkdW1wX2ZpbGUsICJMZWZ0IENoaWxkIChIZXgpID0gMHglbHgsIExl ZnQgQ2hpbGQgKERlY2ltYWwpID0gJWxkIChzaWduZWQpXG4iLAorCQkJIG5v ZGUtPmxlZnQ/VFJFRV9JTlRfQ1NUX0xPVyAobm9kZS0+bGVmdC0+bG93KTot MSxub2RlLT5sZWZ0P1RSRUVfSU5UX0NTVF9MT1cgKG5vZGUtPmxlZnQtPmxv dyk6LTEpOworCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJMZWZ0IENoaWxkJ3Mg UGFyZW50IChIZXgpID0gMHglbHgsIExlZnQgQ2hpbGQncyBQYXJlbnQgKERl Y2ltYWwpID0gJWxkIChzaWduZWQpXG4iLAorCQkJIG5vZGUtPmxlZnQ/bm9k ZS0+bGVmdC0+cGFyZW50P1RSRUVfSU5UX0NTVF9MT1cgKG5vZGUtPmxlZnQt PnBhcmVudC0+bG93KTotMTotMSwKKwkJCSBub2RlLT5sZWZ0P25vZGUtPmxl ZnQtPnBhcmVudD9UUkVFX0lOVF9DU1RfTE9XIChub2RlLT5sZWZ0LT5wYXJl bnQtPmxvdyk6LTE6LTEpOworCQlmcHJpbnRmIChkdW1wX2ZpbGUsICJSaWdo dCBDaGlsZCAoSGV4KSA9IDB4JWx4LCBSaWdodCBDaGlsZCAoRGVjaW1hbCkg PSAlbGQgKHNpZ25lZClcbiIsCisJCQkgbm9kZS0+cmlnaHQ/VFJFRV9JTlRf Q1NUX0xPVyAobm9kZS0+cmlnaHQtPmxvdyk6LTEsbm9kZS0+cmlnaHQ/VFJF RV9JTlRfQ1NUX0xPVyAobm9kZS0+cmlnaHQtPmxvdyk6LTEpOworCQlmcHJp bnRmIChkdW1wX2ZpbGUsICJSaWdodCBDaGlsZCdzIFBhcmVudCAoSGV4KSA9 IDB4JWx4LCBSaWdodCBDaGlsZCdzIFBhcmVudCAoRGVjaW1hbCkgPSAlbGQg KHNpZ25lZClcbiIsCisJCQkgbm9kZS0+cmlnaHQ/bm9kZS0+cmlnaHQtPnBh cmVudD9UUkVFX0lOVF9DU1RfTE9XIChub2RlLT5yaWdodC0+cGFyZW50LT5s b3cpOi0xOi0xLAorCQkJIG5vZGUtPnJpZ2h0P25vZGUtPnJpZ2h0LT5wYXJl bnQ/VFJFRV9JTlRfQ1NUX0xPVyAobm9kZS0+cmlnaHQtPnBhcmVudC0+bG93 KTotMTotMSk7CisJCWZwcmludGYgKGR1bXBfZmlsZSwgIklmIHRoZSB2YWx1 ZSBvZiBhIG5vZGUgaXMgc2hvd24gdG8gYmUgLTEgdGhlbiBpdCBtZWFucyB0 aGF0IHRoZSBjYXNlIHZhbHVlIGlzIGFjdHVhbGx5IgorCQkJICIgLTEgb3Ig dGhhdCB0aGUgcG9pbnRlciBwb2ludHMgdG8gbm90aGluZyBpLmUgaXMgTlVM TFxuIik7CisJICAgIH0KKwl9CisJCQorCXJldHVybiAxOworICAgIH0KKyAg ICAKKy8qIENoZWNrIHRoZSByaWdodCBzdWJ0cmVlLiAqLworICAgIGlmIChj aGVja190cmVlXzEgKG5vZGUtPnJpZ2h0LCBtYXh1LCBtYXhpLCB1bnNpZ25l ZHApKQorCXJldHVybiAxOworCisgICAgcmV0dXJuIDA7Cit9CisKKworc3Rh dGljCitpbnQgY2hlY2tfdHJlZSAoY2FzZV9ub2RlX3B0ciBoZWFkLCBpbnQg dW5zaWduZWRwKQoreworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgbWF4 X3VfaW5vcmRlcj0wOworICAgIGxvbmcgbG9uZyBpbnQgbWF4X2lfaW5vcmRl ciA9IDA7CisvKiBtYXhfaW5pdGlhbGl6ZWQgaXMgc2V0IHRvIDEgd2hlbiB3 ZSByZWFjaCB0aGUgbGVmdG1vc3Qgbm9kZSBvZiB0aGUgdHJlZS4gKi8KKyAg ICBtYXhfaW5pdGlhbGl6ZWQgPSAwOworICAgIGlmIChkdW1wX2ZpbGUpCisJ ZnByaW50ZiAoZHVtcF9maWxlLCAiQ2hlY2tpbmcgdGhlIGdlbmVyYXRlZCBC U1RcbiIpOworICAgIHJldHVybiBjaGVja190cmVlXzEgKGhlYWQsICZtYXhf dV9pbm9yZGVyLCAmbWF4X2lfaW5vcmRlciwgdW5zaWduZWRwKTsKK30KKwot LS0gY2ZncnRsLmMJMjAwOS0wNS0yMiAwMDoxNzozNy4wMDAwMDAwMDAgKzAx MDAKKysrIGNmZ3J0bC5jCTIwMTAtMDktMDMgMTA6NTQ6NTUuMDAwMDAwMDAw ICswMTAwCkBAIC01MjgsNiArNTI4LDc1IEBAIGZpcnN0X2luc25fYWZ0ZXJf YmFzaWNfYmxvY2tfbm90ZSAoYmFzaWMKICAgcmV0dXJuIE5FWFRfSU5TTiAo aW5zbik7CiB9CiAKK3N0YXRpYyBib29sCitqdW1wX3RhYmxlX2luX2JldHdl ZW4gKHJ0eCBzdGFydCwgcnR4IGVuZCkKK3sKKyAgYm9vbCBiZXR3ZWVuID0g ZmFsc2U7CisgIHJ0eCBpbnNuOworCisgIGZvciAoaW5zbiA9IHN0YXJ0OyBp bnNuICE9IGVuZDsgaW5zbiA9IE5FWFRfSU5TTiAoaW5zbikpCisgICAgaWYg KEpVTVBfVEFCTEVfREFUQV9QIChpbnNuKSkKKyAgICAgIGJldHdlZW4gPSB0 cnVlOworICAKKyAgaWYgKGluc24gPT0gZW5kKQorICAgIGlmIChKVU1QX1RB QkxFX0RBVEFfUCAoaW5zbikpCisgICAgICBiZXR3ZWVuID0gdHJ1ZTsKKyAg IAorICByZXR1cm4gYmV0d2VlbjsKKworfQorLyogU3Vicm91dGluZSBvZiBy dGxfc3BsaXRfYmxvY2suIFJldHVybnMgdGhlIGZpcnN0IGxhYmVsIGZvdW5k IGFmdGVyCisgICBhIGp1bXB0YWJsZSwgaWYgYSBqdW1wdGFibGUgaXMgZm91 bmQgYmV0d2VlbiBzdGFydCBhbmQgZW5kLiAqLworCitzdGF0aWMgcnR4Citm aW5kX25leHRfbGFiZWxfYWZ0ZXJfanVtcF90YWJsZSAocnR4IHN0YXJ0LCBy dHggZW5kKQoreworICBydHggbmV4dF9sYWJlbCwgdGFibGUsaW5zbjsKKyAg dGFibGUgPSBOVUxMX1JUWDsKKyAgbmV4dF9sYWJlbCA9IE5VTExfUlRYOwor ICBmb3IgKGluc24gPSBzdGFydDsgaW5zbiAhPSBlbmQ7IGluc24gPSBORVhU X0lOU04gKGluc24pKQorICAgIHsKKyAgICAgIGlmIChKVU1QX1RBQkxFX0RB VEFfUCAoaW5zbikpCisJdGFibGUgPSBpbnNuOworICAgICAgaWYgKHRhYmxl ICYmIExBQkVMX1AgKGluc24pKQorCXJldHVybiBpbnNuOworICAgICAgLyog QnkgdGhpcyB0aW1lIHdlIGhhdmUgZGVjaWRlZCB0aGF0IHRoZSBpbnN0cnVj dGlvbnMgdGhhdCBmb3JtCisJIHBhcnQgb2YgdGhlIGp1bXB0YWJsZSBoYXZl IHRvIGJlIHNraXBwZWQsIHNvIG1ha2UgdGhlaXIgYmFzaWMKKwkgYmxvY2sg MCovCisgICAgICBpZiAoIUJBUlJJRVJfUCAoaW5zbikpCisJQkxPQ0tfRk9S X0lOU04gKGluc24pID0gMDsKKyAgICB9CisgIHJldHVybiBOVUxMX1JUWDsK K30KKworLyogU3Vicm91dGluZSBvZiBydGxfc3BsaXRfYmxvY2suIENoZWNr IGlmIHRoZSBzZXF1ZW5jZSBvZgorICAgaW5zdHJ1Y3Rpb25zIGZyb20gc3Rh cnQgY29udGFpbnMgYSBqdW1wIHRhYmxlLiBJZiB5ZXMgaXMgaXQgb2sgdG8K KyAgIHNraXAgdGhlIGJsb2NrIHdoaWxlIHNwbGl0aW5nIHRoZSBibG9jay4g ICovCisKK3N0YXRpYyBib29sCitqdW1wX3RhYmxlX29rX3RvX3NraXAgKHJ0 eCBzdGFydCkKK3sKKyAgYm9vbCBvayA9IGZhbHNlOworICBydHggdGVzdF9p bnNuOworICAvKiBzdGFydCBzaG91bGQgYWx3YXlzIGJlIGEgbGFiZWwuICov CisgIGdjY19hc3NlcnQgKCBMQUJFTF9QIChzdGFydCkpOworCisgIHRlc3Rf aW5zbiA9IE5FWFRfSU5TTiAoc3RhcnQpOworICBpZiAoSlVNUF9UQUJMRV9E QVRBX1AgKHRlc3RfaW5zbikpCisgICAgeworICAgICAgdGVzdF9pbnNuID0g TkVYVF9JTlNOICh0ZXN0X2luc24pOworICAgICAgLyogY2hlY2sgaWYgdGhl IGp1bXBfdGFibGUgaXMgZm9sbG93ZCBieSBhIGJhcnJpZXIgKi8KKyAgICAg IGlmIChCQVJSSUVSX1AgKHRlc3RfaW5zbikpCisgICAgICB7CisJdGVzdF9p bnNuID0gTkVYVF9JTlNOICh0ZXN0X2luc24pOworCS8qIGNoZWNrIGlmIHRo ZSBiYXJyaWVyIGlzIGZvbGxvd2VkIGJ5IGEgbGFiZWwgKi8KKwlpZiAoTEFC RUxfUCAoIHRlc3RfaW5zbikpCisJICBvayA9IHRydWU7CisgICAgICB9Cisg ICAgfQorICByZXR1cm4gb2s7Cit9CisKIC8qIENyZWF0ZXMgYSBuZXcgYmFz aWMgYmxvY2sganVzdCBhZnRlciBiYXNpYyBibG9jayBCIGJ5IHNwbGl0dGlu ZwogICAgZXZlcnl0aGluZyBhZnRlciBzcGVjaWZpZWQgaW5zdHJ1Y3Rpb24g SS4gICovCiAKQEAgLTUzOSw2ICs2MDgsOCBAQCBydGxfc3BsaXRfYmxvY2sg KGJhc2ljX2Jsb2NrIGJiLCB2b2lkICppCiAgIGVkZ2UgZTsKICAgZWRnZV9p dGVyYXRvciBlaTsKIAorICBydHggc3RhcnRfaW5zbjsKKwogICBpZiAoIWlu c24pCiAgICAgewogICAgICAgaW5zbiA9IGZpcnN0X2luc25fYWZ0ZXJfYmFz aWNfYmxvY2tfbm90ZSAoYmIpOwpAQCAtNTU1LDggKzYyNiw0MCBAQCBydGxf c3BsaXRfYmxvY2sgKGJhc2ljX2Jsb2NrIGJiLCB2b2lkICppCiAgIGlmIChp bnNuID09IEJCX0VORCAoYmIpKQogICAgIGVtaXRfbm90ZV9hZnRlciAoTk9U RV9JTlNOX0RFTEVURUQsIGluc24pOwogCisgIC8qIElmICdpbnNuJyBpcyBh IGJhcnJpZXIgd2UgbmVlZCB0byBsb29rIGZvciB0aGUgZm9sbG93aW5nIHNl cXVlbmNlIG9mCisgICBpbnN0cnVjdGlvbnM6CisgICAKKyAgIGxhYmVsXzEK KyAgIGp1bXB0YWJsZQorICAgYmFycmllcl8yCisgICAKKyAgIGxhYmVsXzIK KworICAgSWYgd2UgZmluZCBzdWNoIGEgc2VxdWVuY2UgZm9sbG93aW5nICdp bnNuJyB0aGVuIHdlIGRvIG5vdAorICAgc3BsaXQgdGhlIGJsb2NrIGF0IHRo ZSBsYWJlbCBmb2xsb3dpbmcgaW5zbiAobGFiZWxfMSBpbiB0aGlzIGNhc2Up CisgICBidXQgd2Ugc3BsaXQgdGhlIGJsb2NrIGF0IHRoZSBsYWJlbCBmb2xs b3dpbmcgdGhlIGJhcnJpZXIgdGhhdCBmb2xsb3dzCisgICB0aGUganVtcCB0 YWJsZSAobGFiZWxfMiBpbiB0aGlzIGNhc2UpLiAqLworCisgIGlmIChCQVJS SUVSX1AgKGluc24pKQorICAgIHsKKyAgICAgIHJ0eCB0ZW1wX2xhYmVsOwor ICAgICAgaWYgKExBQkVMX1AgKE5FWFRfSU5TTiAoaW5zbikpIAorCSAgJiYg anVtcF90YWJsZV9pbl9iZXR3ZWVuIChORVhUX0lOU04gKGluc24pLCBCQl9F TkQgKGJiKSkgCisJICAmJiBqdW1wX3RhYmxlX29rX3RvX3NraXAgKE5FWFRf SU5TTiAoaW5zbikpKQorCXsKKwkgIHRlbXBfbGFiZWwgPSBmaW5kX25leHRf bGFiZWxfYWZ0ZXJfanVtcF90YWJsZSAoTkVYVF9JTlNOIChpbnNuKSwgQkJf RU5EIChiYikpOworCSAgZ2NjX2Fzc2VydCAodGVtcF9sYWJlbCk7CisJICBz dGFydF9pbnNuID0gdGVtcF9sYWJlbDsKKwl9CisgICAgICBlbHNlCisJc3Rh cnRfaW5zbiA9IE5FWFRfSU5TTiAoaW5zbik7CisgICAgICAKKyAgICB9Cisg IGVsc2UKKyAgICBzdGFydF9pbnNuID0gTkVYVF9JTlNOIChpbnNuKTsKKwog ICAvKiBDcmVhdGUgdGhlIG5ldyBiYXNpYyBibG9jay4gICovCi0gIG5ld19i YiA9IGNyZWF0ZV9iYXNpY19ibG9jayAoTkVYVF9JTlNOIChpbnNuKSwgQkJf RU5EIChiYiksIGJiKTsKKyAgbmV3X2JiID0gY3JlYXRlX2Jhc2ljX2Jsb2Nr IChzdGFydF9pbnNuLCBCQl9FTkQgKGJiKSwgYmIpOwogICBCQl9DT1BZX1BB UlRJVElPTiAobmV3X2JiLCBiYik7CiAgIEJCX0VORCAoYmIpID0gaW5zbjsK IAotLS0gY2ZnYnVpbGQuYwkyMDA5LTAyLTIwIDE1OjIwOjM4LjAwMDAwMDAw MCArMDAwMAorKysgY2ZnYnVpbGQuYwkyMDEwLTA5LTAzIDEwOjU0OjUwLjAw MDAwMDAwMCArMDEwMApAQCAtNjYzLDYgKzY2MywxMSBAQCBmaW5kX2JiX2Jv dW5kYXJpZXMgKGJhc2ljX2Jsb2NrIGJiKQogCSAgICB9CiAKIAkgIGJiID0g ZmFsbHRocnUtPmRlc3Q7CisJICAKKwkgIC8qIFRoZSBoZWFkIG9mIHRoZSBp bnNuIG1heSBub3QgYmUgdGhlIHNhbWUgYWZ0ZXIKKwkgICAgIHNwbGl0dGlu Zy4gKi8KKwkgIGluc24gPSBCQl9IRUFEIChiYik7CisJICAKIAkgIHJlbW92 ZV9lZGdlIChmYWxsdGhydSk7CiAJICBmbG93X3RyYW5zZmVyX2luc24gPSBO VUxMX1JUWDsKIAkgIGlmIChMQUJFTF9BTFRfRU5UUllfUCAoaW5zbikpCg== ------_=_NextPart_001_01CB4B52.DB423930--