NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RE: bin/30756: gdb not usable for live debugging of threaded programs



The following reply was made to PR bin/30756; it has been noted by GNATS.

From: "Paul Koning" <Paul_Koning%Dell.com@localhost>
To: <gnats-bugs%NetBSD.org@localhost>
Cc: <tech-kern%NetBSD.org@localhost>,
        "Antti Kantee" <pooka%cs.hut.fi@localhost>
Subject: RE: bin/30756: gdb not usable for live debugging of threaded programs
Date: Thu, 22 Apr 2010 11:18:14 -0400

 This is a multi-part message in MIME format.
 
 ------_=_NextPart_001_01CAE22F.094CA314
 Content-Type: text/plain;
        charset="us-ascii"
 Content-Transfer-Encoding: quoted-printable
 
 Antti pointed out a problem in the patch I originally submitted which
 causes gdb to go into a loop if the child process exits.  The attached
 updated patch corrects that problem.
 
        paul
 
 
 ------_=_NextPart_001_01CAE22F.094CA314
 Content-Type: application/octet-stream;
        name="gdbthreads-650a.diff"
 Content-Transfer-Encoding: base64
 Content-Description: gdbthreads-650a.diff
 Content-Disposition: attachment;
        filename="gdbthreads-650a.diff"
 
 LS0tIC4vZ251L2Rpc3QvZ2RiNi9nZGIvY29uZmlnL2kzODYvbmJzZGVsZi5taC5vcmlnCTIwMDYt
 MTEtMjUgMTE6Mzg6NTEuMDAwMDAwMDAwIC0wNTAwCisrKyAuL2dudS9kaXN0L2dkYjYvZ2RiL2Nv
 bmZpZy9pMzg2L25ic2RlbGYubWgJMjAxMC0wNC0xOSAxMjowNzoyMC4wMDAwMDAwMDAgLTA0MDAK
 QEAgLTEsNiArMSw2IEBACiAjIEhvc3Q6IE5ldEJTRC9pMzg2IEVMRgogTkFUREVQRklMRVM9IGZv
 cmstY2hpbGQubyBpbmYtcHRyYWNlLm8gXAotCW5ic2QtbmF0Lm8gaTM4NmJzZC1uYXQubyBpMzg2
 bmJzZC1uYXQubyBic2Qta3ZtLm8KKwluYnNkLW5hdC5vIGkzODZic2QtbmF0Lm8gaTM4Nm5ic2Qt
 bmF0Lm8gYnNkLWt2bS5vIG5ic2QtdGhyZWFkLm8KIE5BVF9GSUxFPSBzb2xpYi5oCiAKIExPQURM
 SUJFUz0gLWxrdm0KLS0tIC4vZ251L2Rpc3QvZ2RiNi9nZGIvY29uZmlnL21pcHMvbmJzZC5taC5v
 cmlnCTIwMDYtMTItMDYgMTM6MjU6MjkuMDAwMDAwMDAwIC0wNTAwCisrKyAuL2dudS9kaXN0L2dk
 YjYvZ2RiL2NvbmZpZy9taXBzL25ic2QubWgJMjAxMC0wNC0xOSAxMzo1NTozOC4wMDAwMDAwMDAg
 LTA0MDAKQEAgLTEsMiArMSwyIEBACiAjIEhvc3Q6IE5ldEJTRC9taXBzCi1OQVRERVBGSUxFUz0g
 Zm9yay1jaGlsZC5vIGluZi1wdHJhY2UubyBuYnNkLW5hdC5vIG1pcHNuYnNkLW5hdC5vCitOQVRE
 RVBGSUxFUz0gZm9yay1jaGlsZC5vIGluZi1wdHJhY2UubyBuYnNkLW5hdC5vIG1pcHNuYnNkLW5h
 dC5vIG5ic2QtdGhyZWFkLm8KLS0tIC4vZ251L2Rpc3QvZ2RiNi9nZGIvbWlwc25ic2QtbmF0LmMu
 b3JpZwkyMDA2LTEyLTA2IDEzOjI1OjI5LjAwMDAwMDAwMCAtMDUwMAorKysgLi9nbnUvZGlzdC9n
 ZGI2L2dkYi9taXBzbmJzZC1uYXQuYwkyMDEwLTA0LTE5IDEzOjU4OjI1LjAwMDAwMDAwMCAtMDQw
 MApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImluZmVyaW9yLmgiCiAjaW5jbHVkZSAicmVn
 Y2FjaGUuaCIKICNpbmNsdWRlICJ0YXJnZXQuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
 Y2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KQEAgLTMyLDYgKzMz
 LDcgQEAKICNpbmNsdWRlICJtaXBzLXRkZXAuaCIKICNpbmNsdWRlICJtaXBzbmJzZC10ZGVwLmgi
 CiAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgorI2luY2x1ZGUgIm5ic2QtdGhyZWFkLmgiCiAKIC8q
 IERldGVybWluZSBpZiBQVF9HRVRSRUdTIGZldGNoZXMgdGhpcyByZWdpc3Rlci4gICovCiBzdGF0
 aWMgaW50CkBAIC00OCw3ICs1MCw3IEBACiAgICAgICBzdHJ1Y3QgcmVnIHJlZ3M7CiAKICAgICAg
 IGlmIChwdHJhY2UgKFBUX0dFVFJFR1MsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCi0JCSAgKFBU
 UkFDRV9UWVBFX0FSRzMpICZyZWdzLCAwKSA9PSAtMSkKKwkJICAoUFRSQUNFX1RZUEVfQVJHMykg
 JnJlZ3MsIFRJREdFVCAoaW5mZXJpb3JfcHRpZCkpID09IC0xKQogCXBlcnJvcl93aXRoX25hbWUg
 KF8oIkNvdWxkbid0IGdldCByZWdpc3RlcnMiKSk7CiAgICAgICAKICAgICAgIG1pcHNuYnNkX3N1
 cHBseV9yZWcgKChjaGFyICopICZyZWdzLCByZWdubyk7CkBAIC02MSw3ICs2Myw3IEBACiAgICAg
 ICBzdHJ1Y3QgZnByZWcgZnByZWdzOwogCiAgICAgICBpZiAocHRyYWNlIChQVF9HRVRGUFJFR1Ms
 IFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCi0JCSAgKFBUUkFDRV9UWVBFX0FSRzMpICZmcHJlZ3Ms
 IDApID09IC0xKQorCQkgIChQVFJBQ0VfVFlQRV9BUkczKSAmZnByZWdzLCBUSURHRVQgKGluZmVy
 aW9yX3B0aWQpKSA9PSAtMSkKIAlwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxv
 YXRpbmcgcG9pbnQgc3RhdHVzIikpOwogCiAgICAgICBtaXBzbmJzZF9zdXBwbHlfZnByZWcgKChj
 aGFyICopICZmcHJlZ3MsIHJlZ25vKTsKQEAgLTc2LDEzICs3OCwxMyBAQAogICAgICAgc3RydWN0
 IHJlZyByZWdzOwogCiAgICAgICBpZiAocHRyYWNlIChQVF9HRVRSRUdTLCBQSURHRVQgKGluZmVy
 aW9yX3B0aWQpLAotCQkgIChQVFJBQ0VfVFlQRV9BUkczKSAmcmVncywgMCkgPT0gLTEpCisJCSAg
 KFBUUkFDRV9UWVBFX0FSRzMpICZyZWdzLCBUSURHRVQgKGluZmVyaW9yX3B0aWQpKSA9PSAtMSkK
 IAlwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgcmVnaXN0ZXJzIikpOwogCiAgICAg
 ICBtaXBzbmJzZF9maWxsX3JlZyAoKGNoYXIgKikgJnJlZ3MsIHJlZ25vKTsKIAogICAgICAgaWYg
 KHB0cmFjZSAoUFRfU0VUUkVHUywgUElER0VUIChpbmZlcmlvcl9wdGlkKSwgCi0JCSAgKFBUUkFD
 RV9UWVBFX0FSRzMpICZyZWdzLCAwKSA9PSAtMSkKKwkJICAoUFRSQUNFX1RZUEVfQVJHMykgJnJl
 Z3MsIFRJREdFVCAoaW5mZXJpb3JfcHRpZCkpID09IC0xKQogCXBlcnJvcl93aXRoX25hbWUgKF8o
 IkNvdWxkbid0IHdyaXRlIHJlZ2lzdGVycyIpKTsKIAogICAgICAgaWYgKHJlZ25vICE9IC0xKQpA
 QCAtOTQsMTMgKzk2LDEzIEBACiAgICAgICBzdHJ1Y3QgZnByZWcgZnByZWdzOyAKIAogICAgICAg
 aWYgKHB0cmFjZSAoUFRfR0VURlBSRUdTLCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAotCQkgIChQ
 VFJBQ0VfVFlQRV9BUkczKSAmZnByZWdzLCAwKSA9PSAtMSkKKwkJICAoUFRSQUNFX1RZUEVfQVJH
 MykgJmZwcmVncywgVElER0VUIChpbmZlcmlvcl9wdGlkKSkgPT0gLTEpCiAJcGVycm9yX3dpdGhf
 bmFtZSAoXygiQ291bGRuJ3QgZ2V0IGZsb2F0aW5nIHBvaW50IHN0YXR1cyIpKTsKIAogICAgICAg
 bWlwc25ic2RfZmlsbF9mcHJlZyAoKGNoYXIgKikgJmZwcmVncywgcmVnbm8pOwogCiAgICAgICBp
 ZiAocHRyYWNlIChQVF9TRVRGUFJFR1MsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCi0JCSAgKFBU
 UkFDRV9UWVBFX0FSRzMpICZmcHJlZ3MsIDApID09IC0xKQorCQkgIChQVFJBQ0VfVFlQRV9BUkcz
 KSAmZnByZWdzLCBUSURHRVQgKGluZmVyaW9yX3B0aWQpKSA9PSAtMSkKIAlwZXJyb3Jfd2l0aF9u
 YW1lIChfKCJDb3VsZG4ndCB3cml0ZSBmbG9hdGluZyBwb2ludCBzdGF0dXMiKSk7CiAgICAgfQog
 fQpAQCAtMTE1LDYgKzExNyw3IEBACiAgIHN0cnVjdCB0YXJnZXRfb3BzICp0OwogCiAgIHQgPSBp
 bmZfcHRyYWNlX3RhcmdldCAoKTsKKyAgaW5pdF9uYnNkX3RocmVhZF9vcHMgKHQpOwogICB0LT50
 b19mZXRjaF9yZWdpc3RlcnMgPSBtaXBzbmJzZF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnM7CiAg
 IHQtPnRvX3N0b3JlX3JlZ2lzdGVycyA9IG1pcHNuYnNkX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy
 czsKICAgdC0+dG9fcGlkX3RvX2V4ZWNfZmlsZSA9IG5ic2RfcGlkX3RvX2V4ZWNfZmlsZTsKLS0t
 IC4vZ251L2Rpc3QvZ2RiNi9nZGIvbmJzZC10aHJlYWQuYy5vcmlnCTIwMTAtMDQtMTkgMTE6NDM6
 MDUuMDAwMDAwMDAwIC0wNDAwCisrKyAuL2dudS9kaXN0L2dkYjYvZ2RiL25ic2QtdGhyZWFkLmMJ
 MjAxMC0wNC0yMiAxMDo1Nzo1My4wMDAwMDAwMDAgLTA0MDAKQEAgLTAsMCArMSw3MTQgQEAKKy8q
 IFRocmVhZHMgc3VwcG9ydCBmb3IgTmV0QlNEIDUuMC4KKworICAgQ29weXJpZ2h0IChDKSAyMDEw
 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBDb250cmlidXRlZCBieSBQYXVs
 IEtvbmluZywgRGVsbCwgaW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAg
 IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
 bmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1
 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
 dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9w
 dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
 ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z
 IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI
 QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
 KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv
 dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
 aWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
 RnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
 aWZ0aCBGbG9vciwKKyAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworI2luY2x1
 ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJjb21tYW5kLmgiCisjaW5jbHVkZSAiZ2RiY21kLmgiCisj
 aW5jbHVkZSAidGFyZ2V0LmgiCisjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJnZGJ0
 aHJlYWQuaCIKKyNpbmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
 Y2x1ZGUgIm5ic2QtdGhyZWFkLmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxz
 eXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQu
 aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyogRGF0YSBz
 dHJ1Y3R1cmUgdXNlZCB0byB0cmFjayBOZXRCU0QgdGhyZWFkIHN0YXRlLiAgVGhlcmUgaXMgYSAK
 KyAgIHZlY3RvciBvZiB0aGVzZSwgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIExXUCBJRC4gICovCisK
 K3N0cnVjdCBsd3BfaW5mbworeworICAvKiBUaGUgcHJvY2VzcyBJRCBvZiB0aGUgTFdQLiAgVGhp
 cyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBwcm9jZXNzCisgICAgIElEIGFuZCB0aGUgTFdQIElE
 LiAgKi8KKyAgcHRpZF90IHB0aWQ7CisgIAorICAvKiBOb24temVybyBpZiB3ZSB0aGlzIExXUCB3
 YXMgcmVwb3J0ZWQgYXMgaGF2aW5nIGJlZW4gc2lnbmFsbGVkCisgICAgIGJ5IHRoZSBQVF9MV1BJ
 TkZPIHB0cmFjZSgpIGNhbGwuICAqLworICBpbnQgc2lnbmFsbGVkOworICAKKyAgLyogVGhlIHdh
 aXRzdGF0dXMgZm9yIHRoaXMgTFdQJ3MgbGFzdCBldmVudC4gICovCisgIHN0cnVjdCB0YXJnZXRf
 d2FpdHN0YXR1cyB3YWl0c3RhdHVzOworfTsKKworLyogVGhlIGx3cF9pbmZvIGJ1ZmZlciBhbmQg
 aXRzIGNvbnRyb2wgdmFyaWFibGVzLiAgKi8KK3N0YXRpYyBzdHJ1Y3QgbHdwX2luZm8gKmx3cF9i
 dWZmZXI7CitzdGF0aWMgaW50IGx3cF9jb3VudDsKK3N0YXRpYyBpbnQgbHdwX2J1ZnNpemU7CisK
 Ky8qIENvdW50IG9mIHNpZ25hbHMgc3RpbGwgcGVuZGluZyBkZWxpdmVyeSB0byBHREIuICBUaGVz
 ZSBhcmUgdGhyZWFkcworICAgdGhhdCB3ZXJlIGZvdW5kIHRvIGJlIHN0b3BwZWQgYW5kIG5vdCBi
 cmVha3BvaW50cy4gIEZvciB0aHJlYWRzIHRoYXQKKyAgIGhpdCBhIGJyZWFrcG9pbnQsIHdlIHNp
 bXBseSBwdXNoIGJhY2sgdGhlIHRocmVhZCBzbyBpdCB3aWxsIGhpdCB0aGUKKyAgIGJyZWFrIGFn
 YWluIChpZiBpdCBpc24ndCByZW1vdmVkIGJlZm9yZSB0aGVuKSBidXQgZm9yIG90aGVyIHNpZ25h
 bHMsCisgICBmb3IgZXhhbXBsZSBmYXVsdHMsIHRoZSBzaWduYWwgcmVtYWlucyBwZW5kaW5nLCB0
 aGUgInRvX3Jlc3VtZSIgdGhhdAorICAgcmVzdW1lcyB0aGUgd2hvbGUgcHJvY2VzcyBpcyBza2lw
 cGVkLCBhbmQgdGhlbiB0aGUgInRvX3dhaXQiIHJldHVybnMKKyAgIHRoZSBpbmZvcm1hdGlvbiBh
 Ym91dCBvbmUgb2YgdGhlIHBlbmRpbmcgc2lnbmFscyBpbnN0ZWFkLiAgKi8KK3N0YXRpYyBpbnQg
 cGVuZGluZ19zaWdzOworCisvKiBUaGUgTFdQIElEIG9mIHRoZSB0aHJlYWQgYmVpbmcgc3RlcHBl
 ZCwgb3IgMCBpZiBub25lLiAgKi8KK3N0YXRpYyBpbnQgc3RlcF9sd3BpZDsKKworLyogRmxhZyB0
 byBpbmRpY2F0ZSB3aGV0aGVyIGxhc3QgcmVzdW1lIHdhcyBhIHJlc3VtZSBhbGwgdGhyZWFkcyBv
 cgorICAgYSByZXN1bWUgc2luZ2xlIHRocmVhZC4gICovCitzdGF0aWMgaW50IHJlc3VtZV9hbGw7
 CisKKy8qIE5vbi16ZXJvIGlmIHRoZSBuZXRic2QtdGhyZWFkIGxheWVyIGlzIGFjdGl2ZS4gICov
 CitzdGF0aWMgaW50IG5ic2RfdGhyZWFkX2FjdGl2ZSA9IDA7CisKKy8qIFRoZSBuZXRic2QtdGhy
 ZWFkIHRhcmdldF9vcHMgc3RydWN0dXJlLiAgKi8KK3N0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyBu
 YnNkX3RocmVhZF9vcHM7CisKK2ludCBkZWJ1Z19uYnNkX3RocmVhZDsKK3N0YXRpYyB2b2lkCitz
 aG93X2RlYnVnX25ic2RfdGhyZWFkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5
 LAorCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp
 Cit7CisgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVnZ2luZyBvZiBOZXRCU0QgdGhy
 ZWFkIG1vZHVsZSBpcyAlcy5cbiIpLAorCQkgICAgdmFsdWUpOworfQorCisKKy8qIEFjdGl2YXRl
 IHRocmVhZCBzdXBwb3J0IGlmIGFwcHJvcHJpYXRlLiAgRG8gbm90aGluZyBpZiB0aHJlYWQKKyAg
 IHN1cHBvcnQgaXMgYWxyZWFkeSBhY3RpdmUuICAqLworCitzdGF0aWMgdm9pZAorZW5hYmxlX25i
 c2RfdGhyZWFkICh2b2lkKQoreworICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisgIHZv
 aWQqIGNhbGxlcl9jb250ZXh0OworICBpbnQgc3RhdHVzOworCisgIC8qIElmIGFscmVhZHkgYWN0
 aXZlLCBub3RoaW5nIG1vcmUgdG8gZG8uICAqLworICBpZiAobmJzZF90aHJlYWRfYWN0aXZlKQor
 ICAgIHJldHVybjsKKworICBpZiAobHdwX2J1ZmZlciAhPSBOVUxMKQorICAgIHsKKyAgICAgIHhm
 cmVlIChsd3BfYnVmZmVyKTsKKyAgICAgIGx3cF9idWZmZXIgPSBOVUxMOworICAgICAgbHdwX2Nv
 dW50ID0gbHdwX2J1ZnNpemUgPSAwOworICAgIH0KKyAgCisgIC8qIHB1c2hfdGFyZ2V0ICgmbmJz
 ZF90aHJlYWRfb3BzKTsgKi8KKyAgbmJzZF90aHJlYWRfYWN0aXZlID0gMTsKK30KKworLyogRGVh
 Y3RpdmF0ZSB0aHJlYWQgc3VwcG9ydC4gIERvIG5vdGhpbmcgaXMgdGhyZWFkIHN1cHBvcnQgaXMK
 KyAgIGFscmVhZHkgaW5hY3RpdmUuICAqLworCisjaWYgMAorc3RhdGljIHZvaWQKK2Rpc2FibGVf
 bmJzZF90aHJlYWQgKHZvaWQpCit7CisgIGlmICghbmJzZF90aHJlYWRfYWN0aXZlKQorICAgIHJl
 dHVybjsKKworICB1bnB1c2hfdGFyZ2V0ICgmbmJzZF90aHJlYWRfb3BzKTsKKyAgbmJzZF90aHJl
 YWRfYWN0aXZlID0gMDsKK30KKyNlbmRpZgorCisvKiBVcGRhdGUgb3VyIGx3cF9pbmZvIGJ1ZmZl
 ciwgYW5kIHRlbGwgR0RCIGFib3V0IGFkZHMgb3IgZGVsZXRlcy4KKworICAgQnkgZG9pbmcgdGhl
 IHRocmVhZCBhZGQgYW5kIHRocmVhZCBkZWxldGUgb3BlcmF0aW9ucyBoZXJlIGFzIHdlCisgICBs
 ZWFybiBhYm91dCB0aHJlYWRzLCB3ZSBhbGxvdyB1c2VycyB0byBydW4gdGhyZWFkLXNwZWNpZmlj
 IGNvbW1hbmRzCisgICB3aXRob3V0IG5lZWRpbmcgdG8gcnVuICJpbmZvIHRocmVhZHMiIGZpcnN0
 LiAKKworICAgVGhlIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byB0aGUgd2FpdHN0YXR1cyBzdHJ1
 Y3QsIHdoaWNoCisgICBpcyBjb3BpZWQgaW50byB0aGUgd2FpdHN0YXR1cyBmb3IgdGhlIHRocmVh
 ZCB3ZSBmaW5kIGFzIHRoZSBzaWduYWxsZWQKKyAgIHRocmVhZC4gICovCisKK3N0YXRpYyB2b2lk
 Cit1cGRhdGVfbHdwYnVmIChzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cykKK3sKKyAg
 aW50IHBpOworICBsd3BpZF90IGx3cF9pZCwgc2lnX2x3cGlkOworICBzdHJ1Y3QgcHRyYWNlX2x3
 cGluZm8gcHRfaW5mbzsKKyAgcHRpZF90IHB0aWQ7CisgIAorICAvKiBBY2N1bXVsYXRlIGFuIGFy
 cmF5IG9mIE5ldEJTRCB0aHJlYWRzLCBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIExXUCBpZC4KKwor
 ICAgICBUaGUgcmVhc29uIGZvciB1c2luZyBkZXNjZW5kaW5nIG9yZGVyIGlzIHRoYXQgdGhpcyBp
 cyB0aGUgb3JkZXIKKyAgICAgaW4gd2hpY2ggTFdQcyBhcmUgcmV0dXJuZWQgYnkgdGhlIHB0cmFj
 ZSgpIFBUX0xXUElORk8gZnVuY3Rpb24sCisgICAgIGJlY2F1c2UgaXQgcmV0dXJucyB0aGVtIGlu
 IHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGV4aXN0IGluIHRoZQorICAgICBwX2x3cHMgbGlzdCBm
 b3IgdGhlIHByb2Nlc3MsIGFuZCBuZXcgZW50cmllcyBhcmUgYXNzaWduZWQgYXNjZW5kaW5nCisg
 ICAgIExXUCBJRHMgYW5kIGFyZSBhZGRlZCB0byB0aGUgaGVhZCBvZiB0aGF0IGxpc3QuICAqLwor
 CisgIGx3cF9pZCA9IHNpZ19sd3BpZCA9IDA7CisgIHBpID0gMDsKKyAgCisgIHdoaWxlICgxKQor
 ICAgIHsKKyAgICAgIHB0X2luZm8ucGxfbHdwaWQgPSBsd3BfaWQ7CisgICAgICBlcnJubyA9IDA7
 CisgICAgICBpZiAocHRyYWNlIChQVF9MV1BJTkZPLCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAor
 CQkgICZwdF9pbmZvLCBzaXplb2YgKHB0X2luZm8pKSA9PSAtMSkKKwl7CisJICBpZiAoZXJybm8g
 PT0gRVNSQ0gpCisJICAgIGJyZWFrOworCSAgZWxzZSBpZiAoZXJybm8gIT0gMCkKKwkgICAgcGVy
 cm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3QgZ2V0IHRocmVhZCBpbmZvcm1hdGlvbiIpKTsKKwl9
 CisKKyAgICAgIGlmIChkZWJ1Z19uYnNkX3RocmVhZCkKKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdk
 Yl9zdGRsb2csCisJCQkgICAgIk5UVVA6IGx3cGluZm8gb24gJWQgcmV0dXJucyBsd3AgJWQsIHBs
 X2V2ZW50ICVkXG4iLAorCQkJICAgIGx3cF9pZCwgcHRfaW5mby5wbF9sd3BpZCwgcHRfaW5mby5w
 bF9ldmVudCk7CisJICAKKyAgICAgIC8qIFJldHJpZXZlIHRoZSBMV1AgSUQgdGhhdCB3YXMgZm91
 bmQuICBUaGlzIGFsc28gc2V0cyB0aGUgSUQgdG8KKwkgc3RhcnQgZnJvbSB0aGUgbmV4dCB0aW1l
 IGFyb3VuZCB0aGUgbG9vcC4gICovCisgICAgICBsd3BfaWQgPSBwdF9pbmZvLnBsX2x3cGlkOwor
 CisgICAgICAvKiBMV1AgaWQgMCBpcyBlbmQgb2YgbGlzdC4gICovCisgICAgICBpZiAobHdwX2lk
 ID09IDApCisJYnJlYWs7CisgICAgICAKKyAgICAgIC8qIElmIHRoZSBMV1Agd2UgZm91bmQgaGFz
 IGFuIElEIGxlc3MgdGhhbiB0aGUgSUQgb2YgdGhlIGN1cnJlbnQKKwkgYnVmZmVyIGVudHJ5LCB0
 aGVuIHRoZSBjdXJyZW50IGJ1ZmZlciBlbnRyeSBpcyBhIGRlbGV0ZWQgdGhyZWFkLgorCSBUZWxs
 IEdEQiBhYm91dCBpdHMgZGVtaXNlLCB0aGVuIHJlbW92ZSBpdCBmcm9tIHRoZSBidWZmZXIuIAor
 CSAgCisJIFdlIGhhdmUgdG8gZG8gdGhpcyBpbiBhIGxvb3AgdW50aWwgd2UgcnVuIG91dCBvZiB0
 aHJlYWRzCisJIHRvIGJlIHJlbW92ZWQuICAqLworICAgICAgd2hpbGUgKHBpIDwgbHdwX2NvdW50
 ICYmIGx3cF9pZCA8IFRJREdFVCAobHdwX2J1ZmZlcltwaV0ucHRpZCkpCisJeworCSAgaWYgKGRl
 YnVnX25ic2RfdGhyZWFkKQorCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJ
 CQkJIk5UVVA6IHRocmVhZCBwdGlkICVkLCVsZCBoYXMgZGlzYXBwZWFyZWRcbiIsCisJCQkJUElE
 R0VUIChsd3BfYnVmZmVyW3BpXS5wdGlkKSwKKwkJCQlUSURHRVQgKGx3cF9idWZmZXJbcGldLnB0
 aWQpKTsKKworCSAgLyogVGVsbCBHREIuICAqLworCSAgZGVsZXRlX3RocmVhZCAobHdwX2J1ZmZl
 cltwaV0ucHRpZCk7CisKKwkgIC8qIFJlbW92ZSB0aGUgZGVsZXRlZCBlbnRyeS4gICovCisJICBp
 ZiAocGkgPCBsd3BfY291bnQpCisJICAgIG1lbW1vdmUgKGx3cF9idWZmZXIgKyBwaSArIDEsIGx3
 cF9idWZmZXIgKyBwaSwgCisJCSAgICAgKGx3cF9jb3VudCAtIHBpKSAqIHNpemVvZiAoc3RydWN0
 IGx3cF9pbmZvKSk7CisJICBsd3BfY291bnQtLTsKKwl9CisKKyAgICAgIC8qIElmIHdlJ3JlIG5v
 dyBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1ZmZlciwgb3IgdGhlIExXUCBmb3VuZAorCSBo
 YXMgYW4gTFdQIElEIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBlbnRyeSBpbiB0aGUgYnVmZmVy
 LCB0aGlzCisJIGlzIGEgbmV3IHRocmVhZC4gIEFsbG9jYXRlIG1vcmUgYnVmZmVyIHNwYWNlIGlm
 IG5lZWQgYmUsCisJIG1ha2Ugcm9vbSBmb3IgdGhpcyBlbnRyeSwgYW5kIHN0b3JlIGl0LiAgVGhl
 biB0ZWxsIEdEQiBhYm91dAorCSB0aGUgbmV3IHRocmVhZC4gICovCisgICAgICBpZiAocGkgPj0g
 bHdwX2NvdW50IHx8IGx3cF9pZCA+IFRJREdFVCAobHdwX2J1ZmZlcltwaV0ucHRpZCkpCisJewor
 CSAgLyogQWxsb2NhdGUgbW9yZSBzcGFjZSwgaWYgd2UgbmVlZCBpdC4gICovCisJICBpZiAobHdw
 X2NvdW50ID09IGx3cF9idWZzaXplKQorCSAgICB7CisJICAgICAgaWYgKGx3cF9idWZzaXplKQor
 CQlsd3BfYnVmc2l6ZSAqPSAyOworCSAgICAgIGVsc2UKKwkJbHdwX2J1ZnNpemUgPSAxOworCSAg
 ICAgIGx3cF9idWZmZXIgPSAoc3RydWN0IGx3cF9pbmZvICopIHhyZWFsbG9jIChsd3BfYnVmZmVy
 LCAKKwkJCQkJCQkgbHdwX2J1ZnNpemUgKiBzaXplb2YgKHN0cnVjdCBsd3BfaW5mbykpOworCSAg
 ICB9CisKKwkgIC8qIFB1c2ggY3VycmVudCBhbmQgbGF0ZXIgZW50cmllcywgaWYgYW55LCBvdmVy
 LiAgKi8KKwkgIGlmIChwaSA8IGx3cF9jb3VudCkKKwkgICAgbWVtbW92ZSAobHdwX2J1ZmZlciAr
 IHBpICsgMSwgbHdwX2J1ZmZlciArIHBpLCAKKwkJICAgICAobHdwX2NvdW50IC0gcGkpICogc2l6
 ZW9mIChzdHJ1Y3QgbHdwX2luZm8pKTsKKworCSAgLyogVXBkYXRlIHRoZSBjb3VudCBvZiBMV1Bz
 LiAgKi8KKwkgIGx3cF9jb3VudCsrOworCisJICAvKiBJbml0aWFsaXplIHRoZSBuZXcgZW50cnku
 ICAqLworCSAgbHdwX2J1ZmZlcltwaV0ucHRpZCA9IE1FUkdFUElEIChQSURHRVQgKGluZmVyaW9y
 X3B0aWQpLCBsd3BfaWQpOworCSAgaWYgKHB0X2luZm8ucGxfZXZlbnQgPT0gUExfRVZFTlRfU0lH
 TkFMKQorCSAgICB7CisJICAgICAgbHdwX2J1ZmZlcltwaV0uc2lnbmFsbGVkID0gMTsKKwkgICAg
 ICBsd3BfYnVmZmVyW3BpXS53YWl0c3RhdHVzID0gKnN0YXR1czsKKwkgICAgICBzaWdfbHdwaWQg
 PSBsd3BfaWQ7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgbHdwX2J1ZmZlcltwaV0uc2lnbmFsbGVk
 ID0gMDsKKworCSAgLyogQWR2YW5jZSB0aGUgTFdQIGJ1ZmZlciBwb2ludGVyLiAgKi8KKwkgIHBp
 Kys7CisJICAKKwkgIC8qIFRlbGwgR0RCIGFib3V0IHRoZSBuZXcgdGhyZWFkLiAgKi8KKwkgIGlm
 IChsd3BfY291bnQgPT0gMSkKKwkgICAgeworCSAgICAgIC8qIFNlZSBpZiBHREIgc3RpbGwgaGFz
 IFRJRCB6ZXJvLCBpZiBzbyBzZXQgdGhlIFRJRC4gICovCisJICAgICAgaWYgKFRJREdFVCAoaW5m
 ZXJpb3JfcHRpZCkgPT0gMCkKKwkJeworCQkgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7CisJCSAg
 CisJCSAgcHRpZCA9IE1FUkdFUElEIChQSURHRVQgKGluZmVyaW9yX3B0aWQpLCBsd3BfaWQpOwor
 CQkgIC8qIHRocmVhZF9jaGFuZ2VfcHRpZCAoaW5mZXJpb3JfcHRpZCwgcHRpZCk7ICovCisJCSAg
 dHAgPSBmaW5kX3RocmVhZF9waWQgKGluZmVyaW9yX3B0aWQpOworCQkgIGlmICh0cCAhPSBOVUxM
 KQorCQkgICAgeworCQkgICAgICB0cC0+cHRpZCA9IHB0aWQ7CisJCSAgICAgIGluZmVyaW9yX3B0
 aWQgPSBwdGlkOworCQkgIAorCQkgICAgICBpZiAoZGVidWdfbmJzZF90aHJlYWQpCisJCQlmcHJp
 bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCSAgICAiTlRVUDogc2V0dGluZyBtYWlu
 IHRocmVhZCBwdGlkIHRvICVkLCVsZFxuIiwKKwkJCQkJICAgIFBJREdFVCAocHRpZCksIFRJREdF
 VCAocHRpZCkpOworCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgLyogTmV3IHRo
 cmVhZCAoZmlyc3QgdGhyZWFkKSwgYWRkIGl0IHRvIEdEQi4gICovCisJCSAgICAgIGluZmVyaW9y
 X3B0aWQgPSBwdGlkOworCQkgICAgICBpZiAoZGVidWdfbmJzZF90aHJlYWQpCisJCQlmcHJpbnRm
 X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCSAgICAiTlRVUDogYWRkaW5nIGZpcnN0IHRo
 cmVhZCBwdGlkICVkLCVkXG4iLAorCQkJCQkgICAgUElER0VUIChpbmZlcmlvcl9wdGlkKSwgbHdw
 X2lkKTsKKwkJICAgICAgYWRkX3RocmVhZCAocHRpZCk7CisJCSAgICB9CisJCX0KKwkgICAgfQor
 CSAgZWxzZQorCSAgICB7CisJICAgICAgLyogTmV3IHRocmVhZCBidXQgbm90IHRoZSBmaXJzdCwg
 YWRkIGl0IHRvIEdEQi4gICovCisJICAgICAgaWYgKGRlYnVnX25ic2RfdGhyZWFkKQorCQlmcHJp
 bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJICAgICJOVFVQOiBhZGRpbmcgbmV3IHRo
 cmVhZCBwdGlkICVkLCVkXG4iLAorCQkJCSAgICBQSURHRVQgKGluZmVyaW9yX3B0aWQpLCBsd3Bf
 aWQpOworCSAgICAgIGFkZF90aHJlYWQgKE1FUkdFUElEIChQSURHRVQgKGluZmVyaW9yX3B0aWQp
 LCBsd3BfaWQpKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICAvKiBGb3VuZCBhbiBl
 eGlzdGluZyB0aHJlYWQuICBVcGRhdGUgaXRzIHN0YXR1cyBpbiB0aGUgYnVmZmVyLgorCSAgICAg
 Tm90ZSB0aGF0IHdlIGNsZWFyIHRoZSBzaWduYWxsZWQgZmxhZyBpZiB0aGlzIGlzIHRoZSBmaXJz
 dAorCSAgICAgY2FsbCBhbmQgdGhpcyB0aHJlYWQgd2Fzbid0IHRoZSBzaWduYWxsZWQgdGhyZWFk
 LCBidXQgd2UgCisJICAgICBsZWF2ZSBpdCBhbG9uZSBvbiBzdWJzZXF1ZW50IGNhbGxzLiAgVGhh
 dCB3YXkgdGhlIHN1YnNlcXVlbnQKKwkgICAgIGNhbGxzIHdpbGwgYWNjdW11bGF0ZSB0aGUgc2V0
 IG9mIHNpZ25hbGxlZCB0aHJlYWRzLiAgKi8KKwkgIGlmIChwdF9pbmZvLnBsX2V2ZW50ID09IFBM
 X0VWRU5UX1NJR05BTCkKKwkgICAgeworCSAgICAgIGx3cF9idWZmZXJbcGldLnNpZ25hbGxlZCA9
 IDE7CisJICAgICAgbHdwX2J1ZmZlcltwaV0ud2FpdHN0YXR1cyA9ICpzdGF0dXM7CisJICAgICAg
 c2lnX2x3cGlkID0gbHdwX2lkOworCSAgICB9CisJICAKKwkgIC8qIEFkdmFuY2UgdGhlIExXUCBi
 dWZmZXIgcG9pbnRlci4gICovCisJICBwaSsrOworCX0KKyAgICB9CisgIGlmIChkZWJ1Z19uYnNk
 X3RocmVhZCkKKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkiTlRVUDog
 c2lnbmFsbGVkIHRocmVhZCBsd3BpZCBpcyAlZFxuIiwgc2lnX2x3cGlkKTsKKworfQorCisjaWYg
 MAorLyogVGhlICJ0b19kZXRhY2giIG1ldGhvZCBvZiB0aGUgbmJzZF90aHJlYWRfb3BzLiAgKi8K
 Kworc3RhdGljIHZvaWQKK25ic2RfdGhyZWFkX2RldGFjaCAoY2hhciAqYXJncywgaW50IGZyb21f
 dHR5KQoreyAgIAorICBzdHJ1Y3QgdGFyZ2V0X29wcyAqYmVuZWF0aCA9IGZpbmRfdGFyZ2V0X2Jl
 bmVhdGggKCZuYnNkX3RocmVhZF9vcHMpOworCisgIGRpc2FibGVfbmJzZF90aHJlYWQgKCk7Cisg
 IGJlbmVhdGgtPnRvX2RldGFjaCAoYXJncywgZnJvbV90dHkpOworfQorI2VuZGlmCisKKy8qIFJl
 c3VtZSBleGVjdXRpb24gb2YgdGhyZWFkIFBUSUQsIG9yIGFsbCB0aHJlYWRzIGlmIFBUSUQgaXMg
 LTEuICBJZgorICAgU1RFUCBpcyBub256ZXJvLCBzaW5nbGUtc3RlcCBpdC4gIElmIFNJR05BTCBp
 cyBub256ZXJvLCBnaXZlIGl0CisgICB0aGF0IHNpZ25hbC4gICovCisKK3N0YXRpYyB2b2lkCitu
 YnNkX3RocmVhZF9yZXN1bWUgKHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2ln
 bmFsIHNpZ25hbCkKK3sKKyAgcGlkX3QgcGlkOworICBpbnQgcmVxdWVzdDsKKyAgCisgIC8qIEEg
 c3BlY2lmaWMgUFRJRCBtZWFucyBgc3RlcCBvbmx5IHRoaXMgcHJvY2VzcyBpZCcuICAqLworICBp
 ZiAocHRpZF9lcXVhbCAobWludXNfb25lX3B0aWQsIHB0aWQpIHx8IFRJREdFVCAocHRpZCkgPD0g
 MCkKKyAgICB7CisgICAgICByZXN1bWVfYWxsID0gMTsKKyAgICAgIHB0aWQgPSBpbmZlcmlvcl9w
 dGlkOworICAgIH0KKyAgZWxzZQorICAgIHJlc3VtZV9hbGwgPSAwOworICAKKyAgcGlkID0gcHRp
 ZF9nZXRfcGlkIChwdGlkKTsKKworI2lmIDAKKyAgaWYgKGNhdGNoX3N5c2NhbGxfZW5hYmxlZCAo
 KSA+IDApCisgICAgcmVxdWVzdCA9IFBUX1NZU0NBTEw7CisgIGVsc2UKKyNlbmRpZgorICAgIHJl
 cXVlc3QgPSBQVF9DT05USU5VRTsKKworI2lmZGVmIFBUX1NURVAKKyAgaWYgKHN0ZXApCisgICAg
 eworICAgICAgLyogSWYgdGhpcyBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBQVF9TVEVQLCBhIGhp
 Z2hlciBsZXZlbAorICAgICAgICAgZnVuY3Rpb24gd2lsbCBoYXZlIGNhbGxlZCBzaW5nbGVfc3Rl
 cCgpIHRvIHRyYW5zbXV0ZSB0aGUgc3RlcAorICAgICAgICAgcmVxdWVzdCBpbnRvIGEgY29udGlu
 dWUgcmVxdWVzdCAoYnkgc2V0dGluZyBicmVha3BvaW50cyBvbgorICAgICAgICAgYWxsIHBvc3Np
 YmxlIHN1Y2Nlc3NvciBpbnN0cnVjdGlvbnMpLCBzbyB3ZSBkb24ndCBoYXZlIHRvCisgICAgICAg
 ICB3b3JyeSBhYm91dCB0aGF0IGhlcmUuICAqLworICAgICAgcmVxdWVzdCA9IFBUX1NURVA7Cisg
 ICAgfQorI2VuZGlmCisKKyAgLyogQW4gYWRkcmVzcyBvZiAoUFRSQUNFX1RZUEVfQVJHMykxIHRl
 bGxzIHB0cmFjZSB0byBjb250aW51ZSBmcm9tCisgICAgIHdoZXJlIGl0IHdhcy4gIElmIEdEQiB3
 YW50ZWQgaXQgdG8gc3RhcnQgc29tZSBvdGhlciB3YXksIHdlIGhhdmUKKyAgICAgYWxyZWFkeSB3
 cml0dGVuIGEgbmV3IHByb2dyYW0gY291bnRlciB2YWx1ZSB0byB0aGUgY2hpbGQuICAqLworICBl
 cnJubyA9IDA7CisgIGlmIChkZWJ1Z19uYnNkX3RocmVhZCkKKyAgICBmcHJpbnRmX3VuZmlsdGVy
 ZWQgKGdkYl9zdGRsb2csCisJCQkiTlRSOiAlcyBwdGlkICVkLCVsZCwgJXMsIHNpZ25hbCAlZFxu
 IiwKKwkJCShzdGVwID8gInN0ZXBwaW5nIiA6ICJyZXN1bWluZyIpLAorCQkJUElER0VUIChwdGlk
 KSwgVElER0VUIChwdGlkKSwKKwkJCShyZXN1bWVfYWxsID8gImFsbCB0aHJlYWRzIiA6ICJzaW5n
 bGUgdGhyZWFkIiksCisJCQlzaWduYWwpOworCisgIC8qIEFzc3VtZSBub3Qgc3RlcHBpbmcgc29t
 ZSBMV1AgSUQuICAqLworICBzdGVwX2x3cGlkID0gMDsKKyAgaWYgKHN0ZXApCisgICAgeworICAg
 ICAgc3RlcF9sd3BpZCA9IFRJREdFVCAocHRpZCk7CisgICAgICBpZiAoc3RlcF9sd3BpZCA8IDAp
 CisJc3RlcF9sd3BpZCA9IC1zdGVwX2x3cGlkOworICAgIH0JCisgIAorICBpZiAocmVzdW1lX2Fs
 bCkKKyAgICB7CisgICAgICBpZiAocGVuZGluZ19zaWdzID4gMCkKKwl7CisJICAvKiBXZSBoYXZl
 IHBlbmRpbmcgc2lnbmFscyBmcm9tIHRoZSBwcmV2aW91cyB3YWl0IHN0aWxsIAorCSAgICAgbmVl
 ZGluZyB0byBiZSBkZWxpdmVyZWQuICBTbyBkb24ndCByZXN1bWUgdGhlIHByb2Nlc3MsCisJICAg
 ICBpbnN0ZWFkIHRha2Ugbm8gYWN0aW9uIGFuZCB3ZSdsbCBkZWxpdmVyIG9uZSBvZiB0aG9zZQor
 CSAgICAgcGVuZGluZyBzaWduYWxzIGF0IHRoZSBuZXh0IHdhaXQuICAqLworCSAgaWYgKGRlYnVn
 X25ic2RfdGhyZWFkKQorCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJ
 Ik5UUjogcHRpZCAlZCwlbGQgaGFzICVkIHBlbmRpbmcgc2lnbmFscywgc2tpcHBpbmcgcmVzdW1l
 XG4iLAorCQkJCVBJREdFVCAocHRpZCksIFRJREdFVCAocHRpZCksIHBlbmRpbmdfc2lncyk7CisJ
 ICByZXR1cm47CisJfQorICAgICAgaWYgKHN0ZXApCisJcHRyYWNlIChyZXF1ZXN0LCBwaWQsICh2
 b2lkICopIDEsIFRJREdFVCAocHRpZCkpOworICAgICAgZWxzZQorCXB0cmFjZSAocmVxdWVzdCwg
 cGlkLCAodm9pZCAqKSAxLAorCQl0YXJnZXRfc2lnbmFsX3RvX2hvc3QgKHNpZ25hbCkpOworICAg
 IH0KKyAgZWxzZQorICAgIHB0cmFjZSAocmVxdWVzdCwgcGlkLCAodm9pZCAqKSAxLCAtVElER0VU
 IChwdGlkKSk7CisgIAorICBpZiAoZXJybm8gIT0gMCkKKyAgICBwZXJyb3Jfd2l0aF9uYW1lICgo
 InB0cmFjZSIpKTsKK30KKworLyogV2FpdCBmb3IgdGhlIGNoaWxkIHNwZWNpZmllZCBieSBQVElE
 IHRvIGRvIHNvbWV0aGluZy4gIFJldHVybiB0aGUKKyAgIHByb2Nlc3MgSUQgb2YgdGhlIGNoaWxk
 LCBvciBNSU5VU19PTkVfUFRJRCBpbiBjYXNlIG9mIGVycm9yOyBzdG9yZQorICAgdGhlIHN0YXR1
 cyBpbiAqT1VSU1RBVFVTLiAgKi8KKworc3RhdGljIHB0aWRfdAorbmJzZF90aHJlYWRfd2FpdDIg
 KHB0aWRfdCBwdGlkLAorCQkgICBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKm91cnN0YXR1cywg
 aW50IG9wdGlvbnMpCit7CisgIHBpZF90IHBpZDsKKyAgaW50IHN0YXR1cywgc2F2ZV9lcnJubzsK
 KworICBkbworICAgIHsKKyAgICAgIHNldF9zaWdpbnRfdHJhcCAoKTsKKworICAgICAgZG8KKwl7
 CisJICBpZiAoZGVidWdfbmJzZF90aHJlYWQpCisJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri
 X3N0ZGxvZywKKwkJCQkiTlRXMjogd2FpdGluZyBmb3IgcHRpZCAlZCwlbGQsIG9wdCAlZFxuIiwK
 KwkJCQlQSURHRVQgKHB0aWQpLCBUSURHRVQgKHB0aWQpLCBvcHRpb25zKTsKKworCSAgcGlkID0g
 d2FpdHBpZCAocHRpZF9nZXRfcGlkIChwdGlkKSwgJnN0YXR1cywgb3B0aW9ucyk7CisJICBzYXZl
 X2Vycm5vID0gZXJybm87CisJICBpZiAoZGVidWdfbmJzZF90aHJlYWQpCisJICAgIGZwcmludGZf
 dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkiTlRXMjogd2FpdHBpZCBlcnJubyBpcyAlZCwg
 cGlkICVkLCBzdGF0dXMgJXhcbiIsCisJCQkJc2F2ZV9lcnJubywgcGlkLCBzdGF0dXMpOworCX0K
 KyAgICAgIHdoaWxlIChwaWQgPT0gLTEgJiYgc2F2ZV9lcnJubyA9PSBFSU5UUik7CisKKyAgICAg
 IGNsZWFyX3NpZ2ludF90cmFwICgpOworCisgICAgICAvKiBJZiBub3RoaW5nIGZvdW5kIGluIHRo
 ZSBubyB3YWl0IGNhc2UsIHJlcG9ydCB0aGF0LiAgKi8KKyAgICAgIGlmIChvcHRpb25zID09IFdO
 T0hBTkcgJiYgcGlkID09IDApCisJcmV0dXJuIHBpZF90b19wdGlkICgtMSk7CisgICAgICAKKyAg
 ICAgIGlmIChwaWQgPT0gLTEpCisJeworCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJy
 LAorCQkJICAgICAgXygiQ2hpbGQgcHJvY2VzcyB1bmV4cGVjdGVkbHkgbWlzc2luZzogJXMuXG4i
 KSwKKwkJCSAgICAgIHNhZmVfc3RyZXJyb3IgKHNhdmVfZXJybm8pKTsKKworCSAgLyogSWYgZmly
 c3Qgd2FpdCwgY2xhaW0gaXQgZXhpdGVkIHdpdGggdW5rbm93biBzaWduYWw7IAorCSAgICAgZWxz
 ZSBjbGFpbSB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gd2FpdCBmb3IuICAqLworCSAgaWYgKG9w
 dGlvbnMgPT0gV05PSEFORykKKwkgICAgcmV0dXJuIHBpZF90b19wdGlkICgtMSk7CisJICBvdXJz
 dGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRfU0lHTkFMTEVEOworCSAgb3Vyc3RhdHVzLT52
 YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFMX1VOS05PV047CisJICByZXR1cm4gaW5mZXJpb3JfcHRp
 ZDsKKwl9CisKKyAgICAgIC8qIElnbm9yZSB0ZXJtaW5hdGVkIGRldGFjaGVkIGNoaWxkIHByb2Nl
 c3Nlcy4gICovCisgICAgICBpZiAoIVdJRlNUT1BQRUQgKHN0YXR1cykgJiYgcGlkICE9IHB0aWRf
 Z2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpCisJcGlkID0gLTE7CisgICAgfQorICB3aGlsZSAocGlk
 ID09IC0xKTsKKworICBzdG9yZV93YWl0c3RhdHVzIChvdXJzdGF0dXMsIHN0YXR1cyk7CisgIHJl
 dHVybiBwaWRfdG9fcHRpZCAocGlkKTsKK30KKworc3RhdGljIGludAorbmJzZF90aHJlYWRfY2Fu
 Y2VsX2JyZWFrcG9pbnQgKHN0cnVjdCBsd3BfaW5mbyAqbHApCit7CisgIC8qIEFycmFuZ2UgZm9y
 IGEgYnJlYWtwb2ludCB0byBiZSBoaXQgYWdhaW4gbGF0ZXIuICBXZSBkb24ndCBrZWVwCisgICAg
 IHRoZSBTSUdUUkFQIHN0YXR1cyBhbmQgZG9uJ3QgZm9yd2FyZCB0aGUgU0lHVFJBUCBzaWduYWwg
 dG8gdGhlCisgICAgIExXUC4gIFdlIHdpbGwgaGFuZGxlIHRoZSBjdXJyZW50IGV2ZW50LCBldmVu
 dHVhbGx5IHdlIHdpbGwgcmVzdW1lCisgICAgIHRoaXMgTFdQLCBhbmQgdGhpcyBicmVha3BvaW50
 IHdpbGwgdHJhcCBhZ2Fpbi4KKworICAgICBJZiB3ZSBkbyBub3QgZG8gdGhpcywgdGhlbiB3ZSBy
 dW4gdGhlIHJpc2sgdGhhdCB0aGUgdXNlciB3aWxsCisgICAgIGRlbGV0ZSBvciBkaXNhYmxlIHRo
 ZSBicmVha3BvaW50LCBidXQgdGhlIExXUCB3aWxsIGhhdmUgYWxyZWFkeQorICAgICB0cmlwcGVk
 IG9uIGl0LiAgKi8KKworICBpZiAobHAtPndhaXRzdGF0dXMua2luZCAgPT0gVEFSR0VUX1dBSVRL
 SU5EX1NUT1BQRUQKKyAgICAgICYmIGxwLT53YWl0c3RhdHVzLnZhbHVlLnNpZyA9PSBTSUdUUkFQ
 CisgICAgICAmJiBicmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAocmVhZF9wY19waWQgKGxwLT5w
 dGlkKSAtCisJCQkJICAgICBERUNSX1BDX0FGVEVSX0JSRUFLKSkKKyAgICB7CisgICAgICBpZiAo
 ZGVidWdfbmJzZF90aHJlYWQpCisJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJ
 ICAgICJOVENCOiBQdXNoIGJhY2sgYnJlYWtwb2ludCBmb3IgcHRpZCAlZCwlbGRcbiIsCisJCQkg
 ICAgUElER0VUIChscC0+cHRpZCksIFRJREdFVCAobHAtPnB0aWQpKTsKKworICAgICAgLyogQmFj
 ayB1cCB0aGUgUEMgaWYgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIGlmIChERUNSX1BDX0FGVEVSX0JS
 RUFLKQorCXdyaXRlX3BjX3BpZCAocmVhZF9wY19waWQgKGxwLT5wdGlkKSAtIERFQ1JfUENfQUZU
 RVJfQlJFQUssIGxwLT5wdGlkKTsKKworICAgICAgLyogV2Ugbm8gbG9uZ2VyIGhhdmUgYSBwZW5k
 aW5nIHNpZ25hbCBmb3IgdGhpcyB0aHJlYWQuICAqLworICAgICAgbHAtPnNpZ25hbGxlZCA9IDA7
 CisKKyAgICAgIC8qIE5vdCBhIHBlbmRpbmcgc2lnbmFsIGFueW1vcmUuICAqLworICAgICAgcmV0
 dXJuIDE7CisgICAgfQorICByZXR1cm4gMDsKK30KKworLyogVGhlICJ0b193YWl0IiBtZXRob2Qg
 b2YgdGhlIG5ic2RfdGhyZWFkX29wcy4gICovCisKK3N0YXRpYyBwdGlkX3QKK25ic2RfdGhyZWFk
 X3dhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cykKK3sK
 KyAgcHRpZF90IGFjdGl2ZV9wdGlkOworICBzdHJ1Y3QgbHdwX2luZm8gKnNlbF90aHJlYWQ7Cisg
 IGludCBzaWdfdGhyZWFkcywgaTsKKyAgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzIHRzdGF0dXM7
 CisKKyAgLyogSWYgdGhlcmUgd2VyZSBwZW5kaW5nIHNpZ25hbHMgYW5kIGEgcmVzdW1lIGFsbCB0
 aHJlYWRzIHdhcyBkb25lLAorICAgICB0aGUgcHJvY2VzcyB3YXNuJ3QgYWN0dWFsbHkgcmVzdW1l
 ZCBzbyBkb24ndCB3YWl0IG9uIGl0LiAgSnVzdAorICAgICBnbyBvbiB0byBwaWNrIGEgdGhyZWFk
 IHRvIHJlcG9ydCBvbi4gICovCisgIGlmICghKHBlbmRpbmdfc2lncyA+IDAgJiYgcmVzdW1lX2Fs
 bCkpCisgICAgeworICAgICAgcHRpZCA9IG5ic2RfdGhyZWFkX3dhaXQyIChwdGlkLCAmdHN0YXR1
 cywgMCk7CisKKyAgICAgIC8qIERlZmF1bHQgc3RhdHVzIHJldHVybmVkIGlzIHRoZSBvbmUgd2Ug
 anVzdCBnb3QuICAqLworICAgICAgKnN0YXR1cyA9IHRzdGF0dXM7CisgICAgICAKKyAgICAgIC8q
 IFRoZSBwdGlkIHJldHVybmVkIGJ5IHRoZSB0YXJnZXQgYmVuZWF0aCB1cyBpcyB0aGUgcHRpZCBv
 ZiB0aGUgcHJvY2Vzcy4KKwkgV2UgbmVlZCB0byBmaW5kIHdoaWNoIHRocmVhZCBpcyBjdXJyZW50
 bHkgYWN0aXZlIGFuZCByZXR1cm4gCisJIGl0cyBwdGlkLiAgKi8KKyAgICAgIHVwZGF0ZV9sd3Bi
 dWYgKCZ0c3RhdHVzKTsKKyAgCisgICAgICAvKiBMb29wIGNoZWNraW5nIGZvciBhZGRpdGlvbmFs
 IHRocmVhZHMgdGhhdCBhcmUgd2FpdGluZywgYW5kIGdhdGhlcgorCSB1cCB0aGVpciBzdGF0dXMu
 ICAqLworICAgICAgd2hpbGUgKDEpCisJeworCSAgcHRpZCA9IG5ic2RfdGhyZWFkX3dhaXQyIChw
 dGlkLCAmdHN0YXR1cywgV05PSEFORyk7CisJICBpZiAoUElER0VUIChwdGlkKSA9PSAtMSkKKwkg
 ICAgYnJlYWs7CisJICB1cGRhdGVfbHdwYnVmICgmdHN0YXR1cyk7CisJfQorICAgIH0KKyAgCisg
 IC8qIEZpbmQgYSBzdWl0YWJsZSBzaWduYWxsZWQgdGhyZWFkLiAgUGljayB0aGUgc3RlcHBlZCBv
 bmUsIGlmIHRoZXJlCisgICAgIGlzIG9uZTsgb3RoZXJ3aXNlIHBpY2sgYSByYW5kb20gb25lLiAg
 Ki8KKyAgc2VsX3RocmVhZCA9IE5VTEw7CisgIHNpZ190aHJlYWRzID0gMDsKKyAgCisgIGZvciAo
 aSA9IDA7IGkgPCBsd3BfY291bnQ7IGkrKykKKyAgICB7CisgICAgICBpZiAobHdwX2J1ZmZlcltp
 XS5zaWduYWxsZWQpCisJeworCSAgc2lnX3RocmVhZHMrKzsKKwkgIGlmIChUSURHRVQgKGx3cF9i
 dWZmZXJbaV0ucHRpZCkgPT0gc3RlcF9sd3BpZCkKKwkgICAgeworCSAgICAgIC8qIElmIHRoZXJl
 IGlzIGEgc3RlcHBlZCB0aHJlYWQsIHBpY2sgdGhhdCBvbmUuICAqLworCSAgICAgIHNlbF90aHJl
 YWQgPSAmbHdwX2J1ZmZlcltpXTsKKwkgICAgICBpZiAoZGVidWdfbmJzZF90aHJlYWQpCisJCWZw
 cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkgICAgIk5UVzogUGlja2luZyBwdGlk
 ICVkLCVsZCBiZWNhdXNlIGl0IGlzIHN0ZXBwZWRcbiIsCisJCQkJICAgIFBJREdFVCAoc2VsX3Ro
 cmVhZC0+cHRpZCksCisJCQkJICAgIFRJREdFVCAoc2VsX3RocmVhZC0+cHRpZCkpOworCSAgICAg
 IGJyZWFrOworCSAgICB9CisJICAvKiBSYW5kb21seSBwaWNrIHRoaXMgb25lIG9yIGtlZXAgdGhl
 IHByZXZpb3VzIGNob2ljZSwKKwkgICAgIHN1Y2ggdGhhdCBhbGwgb2YgdGhlIHNpZ25hbGxlZCB0
 aHJlYWRzIGhhdmUgYW4gZXF1YWwKKwkgICAgIHByb2JhYmlsaXR5IG9mIGJlaW5nIHBpY2tlZC4g
 ICovCisJICBpZiAoc2VsX3RocmVhZCA9PSBOVUxMIHx8IAorCSAgICAgICgoKGRvdWJsZSkgcmFu
 ZCAoKSkgLyAoUkFORF9NQVggKyAxLjApKSA8ICgxLjAgLyBzaWdfdGhyZWFkcykpCisJICAgIHsK
 KwkgICAgICBzZWxfdGhyZWFkID0gJmx3cF9idWZmZXJbaV07CisJICAgICAgaWYgKGRlYnVnX25i
 c2RfdGhyZWFkKQorCQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJICAgICJO
 VFc6IFBpY2tpbmcgcHRpZCAlZCwlbGQgb3V0IG9mICVkXG4iLAorCQkJCSAgICBQSURHRVQgKHNl
 bF90aHJlYWQtPnB0aWQpLAorCQkJCSAgICBUSURHRVQgKHNlbF90aHJlYWQtPnB0aWQpLCBzaWdf
 dGhyZWFkcyk7CisJICAgIH0KKwl9CisgICAgfQorICAKKyAgLyogU2NhbiB0aGUgTFdQIHRhYmxl
 IGFnYWluLiAgRm9yIGVhY2ggc2lnbmFsbGVkIExXUCBvdGhlciB0aGFuIHRoZQorICAgICBjaG9z
 ZW4gb25lLCBiYWNrIGl0IHVwIHRvIHRoZSBicmVha3BvaW50IGlmIGl0IHdhcyBzdG9wcGVkIGJ5
 IGEKKyAgICAgYnJlYWtwb2ludCBhbmQgbWFyayBpdCBhcyBub3Qgc2lnbmFsbGVkIChpdCB3aWxs
 IHJlLWJyZWFrIG5leHQKKyAgICAgdGltZSB3ZSBydW4gdGhlIHdob2xlIHByb2Nlc3MpLiAgT3Ro
 ZXIgTFdQcyAodGhvc2Ugd2l0aCBzaWduYWxzCisgICAgIG90aGVyIHRoYW4gYnJlYWtwb2ludCBz
 dG9wKSBhcmUgY291bnRlZCBidXQgbm90IGJhY2tlZCB1cDsgaWYgd2UKKyAgICAgZmluZCBhbnkg
 b2YgdGhvc2UgdGhlbiB0aG9zZSB3aWxsIGJlIGRlbGl2ZXJlZCBuZXh0LiAgKi8KKyAgcGVuZGlu
 Z19zaWdzID0gMDsKKyAgaWYgKHNpZ190aHJlYWRzID4gMSkKKyAgICB7CisgICAgICBmb3IgKGkg
 PSAwOyBpIDwgbHdwX2NvdW50OyBpKyspCisJeworCSAgLyogU2tpcCB0aGUgc2VsZWN0ZWQgTFdQ
 LiAgKi8KKwkgIGlmICgmbHdwX2J1ZmZlcltpXSA9PSBzZWxfdGhyZWFkKQorCSAgICBjb250aW51
 ZTsKKwkgIAorCSAgaWYgKGx3cF9idWZmZXJbaV0uc2lnbmFsbGVkKQorCSAgICB7CisJICAgICAg
 aWYgKFdJRlNUT1BQRUQgKGx3cF9idWZmZXJbaV0ud2FpdHN0YXR1cykpCisJCXsKKwkJICBpZiAo
 IW5ic2RfdGhyZWFkX2NhbmNlbF9icmVha3BvaW50ICgmbHdwX2J1ZmZlcltpXSkpCisJCSAgICBw
 ZW5kaW5nX3NpZ3MrKzsKKwkJfQorCSAgICAgIGVsc2UKKwkJcGVuZGluZ19zaWdzKys7CisJICAg
 IH0KKwl9CisgICAgfQorICAKKyAgcHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgIGlmIChzZWxfdGhy
 ZWFkICE9IE5VTEwpCisgICAgeworICAgICAgcHRpZCA9ICBNRVJHRVBJRCAoUElER0VUIChwdGlk
 KSwgVElER0VUIChzZWxfdGhyZWFkLT5wdGlkKSk7CisgICAgICAqc3RhdHVzID0gdHN0YXR1czsK
 KyAgICAgIAorICAgICAgLyogVGhlIHNpZ25hbCBmb3IgdGhpcyB0aHJlYWQgaXMgbm93IGJlaW5n
 IHJlcG9ydGVkLCBzbyBjbGVhcgorCSB0aGUgZmxhZyB0aGF0IHNheXMgaXQgaGFzbid0IGJlZW4g
 cmVwb3J0ZWQgeWV0LiAgKi8KKyAgICAgIHNlbF90aHJlYWQtPnNpZ25hbGxlZCA9IDA7CisgICAg
 fQorICBlbHNlIGlmIChkZWJ1Z19uYnNkX3RocmVhZCkKKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQg
 KGdkYl9zdGRsb2csCisJCQkiTlRXOiBubyBzaWduYWxsZWQgdGhyZWFkXG4iKTsKKworICBpZiAo
 ZGVidWdfbmJzZF90aHJlYWQpCisgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAor
 CQkJIk5UVzogcmV0dXJuaW5nIHB0aWQgJWQsJWxkXG4iLAorCQkJUElER0VUIChwdGlkKSwgVElE
 R0VUIChwdGlkKSk7CisKKyAgcmV0dXJuIHB0aWQ7Cit9CisKKy8qIFRoZSAidG9fbW91cm5faW5m
 ZXJpb3IiIG1ldGhvZCBvZiB0aGUgbmJzZF90aHJlYWRfb3BzLiAgKi8KKworc3RhdGljIHZvaWQK
 K25ic2RfdGhyZWFkX21vdXJuX2luZmVyaW9yICh2b2lkKQoreworICBpbnQgc3RhdHVzOworCisg
 IC8qIFdhaXQganVzdCBvbmUgbW9yZSB0aW1lIHRvIGNvbGxlY3QgdGhlIGluZmVyaW9yJ3MgZXhp
 dCBzdGF0dXMuCisgICAgIERvIG5vdCBjaGVjayB3aGV0aGVyIHRoaXMgc3VjY2VlZHMgdGhvdWdo
 LCBzaW5jZSB3ZSBtYXkgYmUKKyAgICAgZGVhbGluZyB3aXRoIGEgcHJvY2VzcyB0aGF0IHdlIGF0
 dGFjaGVkIHRvLiAgU3VjaCBhIHByb2Nlc3Mgd2lsbAorICAgICBvbmx5IHJlcG9ydCBpdHMgZXhp
 dCBzdGF0dXMgdG8gaXRzIG9yaWdpbmFsIHBhcmVudC4gICovCisgIHdhaXRwaWQgKHB0aWRfZ2V0
 X3BpZCAoaW5mZXJpb3JfcHRpZCksICZzdGF0dXMsIFdOT0hBTkcpOworCisgIGdlbmVyaWNfbW91
 cm5faW5mZXJpb3IgKCk7CisKKyAgLyogaWYgKCFoYXZlX2luZmVyaW9ycyAoKSkgKi8KKyAgICB1
 bnB1c2hfdGFyZ2V0ICgmbmJzZF90aHJlYWRfb3BzKTsKK30KKworCisvKiBUaGUgInRvX3RocmVh
 ZF9hbGl2ZSIgbWV0aG9kIG9mIHRoZSBuYnNkX3RocmVhZF9vcHMuICAqLworc3RhdGljIGludAor
 bmJzZF90aHJlYWRfdGhyZWFkX2FsaXZlIChwdGlkX3QgcHRpZCkKK3sKKyAgLyogVGhlIHRocmVh
 ZCBsaXN0IG1haW50YWluZWQgYnkgR0RCIGlzIHVwIHRvIGRhdGUsIHNpbmNlIHdlIHVwZGF0ZQor
 ICAgICBpdCBldmVyeXRpbWUgd2Ugc3RvcC4gICBTbyBjaGVjayB0aGlzIGxpc3QuICAqLworICBy
 ZXR1cm4gaW5fdGhyZWFkX2xpc3QgKHB0aWQpOworfQorCisvKiBUaGUgInRvX3BpZF90b19zdHIi
 IG1ldGhvZCBvZiB0aGUgbmJzZF90aHJlYWRfb3BzLiAgKi8KKworc3RhdGljIGNoYXIgKgorbmJz
 ZF90aHJlYWRfcGlkX3RvX3N0ciAocHRpZF90IHB0aWQpCit7CisgIGlmIChUSURHRVQgKHB0aWQp
 ID09IDApCisgICAgeworICAgICAgcmV0dXJuIG5vcm1hbF9waWRfdG9fc3RyIChwdGlkKTsKKyAg
 ICB9CisgIHJldHVybiB4c3RycHJpbnRmIChfKCJUaHJlYWQgJWxkIiksIFRJREdFVCAocHRpZCkp
 OworfQorCisvKiBVcGRhdGUgdGhlIHRhcmdldF9vcHMgd2l0aCBvdXIgdGhyZWFkIG1hY2hpbmVy
 eS4gICovCisKK3ZvaWQKK2luaXRfbmJzZF90aHJlYWRfb3BzIChzdHJ1Y3QgdGFyZ2V0X29wcyAq
 dCkKK3sKKyAgLyogdC0+dG9fZGV0YWNoICAgICAgICAgICAgID0gbmJzZF90aHJlYWRfZGV0YWNo
 OyAqLworICB0LT50b19yZXN1bWUgICAgICAgICAgICAgPSBuYnNkX3RocmVhZF9yZXN1bWU7Cisg
 IHQtPnRvX3dhaXQgICAgICAgICAgICAgICA9IG5ic2RfdGhyZWFkX3dhaXQ7CisgIHQtPnRvX21v
 dXJuX2luZmVyaW9yICAgICA9IG5ic2RfdGhyZWFkX21vdXJuX2luZmVyaW9yOworICB0LT50b190
 aHJlYWRfYWxpdmUgICAgICAgPSBuYnNkX3RocmVhZF90aHJlYWRfYWxpdmU7CisgIHQtPnRvX3Bp
 ZF90b19zdHIgICAgICAgICA9IG5ic2RfdGhyZWFkX3BpZF90b19zdHI7CisKKyAgZW5hYmxlX25i
 c2RfdGhyZWFkICgpOworfQorCit2b2lkCitfaW5pdGlhbGl6ZV9uYnNkX3RocmVhZCAodm9pZCkK
 K3sKKyNpZiAwCisgIGluaXRfbmJzZF90aHJlYWRfb3BzICgpOworICBhZGRfdGFyZ2V0ICgmbmJz
 ZF90aHJlYWRfb3BzKTsKKyNlbmRpZgorCisgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm5i
 c2QtdGhyZWFkIiwgY2xhc3NfbWFpbnRlbmFuY2UsCisJCQkgICAgJmRlYnVnX25ic2RfdGhyZWFk
 LCBfKCJcCitTZXQgZGVidWdnaW5nIG9mIE5ldEJTRCB0aHJlYWQgbW9kdWxlLiIpLCBfKCJcCitT
 aG93IGRlYnVnZ2luZyBvZiBOZXRCU0QgdGhyZWFkIG1vZHVsZS4iKSwgXygiXAorRW5hYmxlcyBw
 cmludGYgZGVidWdnaW5nIG91dHB1dC4iKSwKKwkJCSAgICBOVUxMLAorCQkJICAgIHNob3dfZGVi
 dWdfbmJzZF90aHJlYWQsCisJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOwor
 fQotLS0gLi9nbnUvZGlzdC9nZGI2L2dkYi9uYnNkLXRocmVhZC5oLm9yaWcJMjAxMC0wNC0xOSAx
 MTo0MzowNS4wMDAwMDAwMDAgLTA0MDAKKysrIC4vZ251L2Rpc3QvZ2RiNi9nZGIvbmJzZC10aHJl
 YWQuaAkyMDEwLTA0LTE5IDExOjQzOjA1LjAwMDAwMDAwMCAtMDQwMApAQCAtMCwwICsxLDI1IEBA
 CisvKiBUaHJlYWRzIHN1cHBvcnQgZm9yIE5ldEJTRCA1LjAuCisKKyAgIENvcHlyaWdodCAoQykg
 MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgQ29udHJpYnV0ZWQgYnkg
 UGF1bCBLb25pbmcsIERlbGwsIGluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor
 CisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
 aXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
 bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
 dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91
 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
 YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU
 IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN
 RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
 dGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
 ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
 aWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g
 dGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
 dCwgRmlmdGggRmxvb3IsCisgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisKK2V4
 dGVybiB2b2lkIGluaXRfbmJzZF90aHJlYWRfb3BzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCk7CisK
 LS0tIC4vZ251L2Rpc3QvZ2RiNi9nZGIvaTM4NmJzZC1uYXQuYy5vcmlnCTIwMDctMDItMjQgMDg6
 MDU6MTguMDAwMDAwMDAwIC0wNTAwCisrKyAuL2dudS9kaXN0L2dkYjYvZ2RiL2kzODZic2QtbmF0
 LmMJMjAxMC0wNC0xOSAxMjo0NTowMS4wMDAwMDAwMDAgLTA0MDAKQEAgLTkwLDcgKzkwLDcgQEAK
 IAogLyogU3VwcGx5IHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIEdSRUdTLCB0byBS
 RUdDQUNIRS4gICovCiAKLXN0YXRpYyB2b2lkCit2b2lkCiBpMzg2YnNkX3N1cHBseV9ncmVnc2V0
 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpncmVncykKIHsKICAgY29u
 c3QgY2hhciAqcmVncyA9IGdyZWdzOwpAQCAtMTA5LDcgKzEwOSw3IEBACiAgICBHUkVHUy4gIElm
 IFJFR05VTSBpcyAtMSwgY29sbGVjdCBhbmQgc3RvcmUgYWxsIGFwcHJvcHJpYXRlCiAgICByZWdp
 c3RlcnMuICAqLwogCi1zdGF0aWMgdm9pZAordm9pZAogaTM4NmJzZF9jb2xsZWN0X2dyZWdzZXQg
 KGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAJCQkgdm9pZCAqZ3JlZ3MsIGludCBy
 ZWdudW0pCiB7Ci0tLSAuL2dudS9kaXN0L2dkYjYvZ2RiL2kzODZic2QtbmF0Lmgub3JpZwkyMDA2
 LTA3LTAyIDE2OjE0OjE1LjAwMDAwMDAwMCAtMDQwMAorKysgLi9nbnUvZGlzdC9nZGI2L2dkYi9p
 Mzg2YnNkLW5hdC5oCTIwMTAtMDQtMTkgMTE6NDM6MDUuMDAwMDAwMDAwIC0wNDAwCkBAIC0yNyw0
 ICsyNywxMSBAQAogCiBleHRlcm4gc3RydWN0IHRhcmdldF9vcHMgKmkzODZic2RfdGFyZ2V0ICh2
 b2lkKTsKIAorZXh0ZXJuIHZvaWQgaTM4NmJzZF9zdXBwbHlfZ3JlZ3NldCAoc3RydWN0IHJlZ2Nh
 Y2hlICpyZWdjYWNoZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
 dCB2b2lkICpncmVncyk7CisKK2V4dGVybiB2b2lkIGkzODZic2RfY29sbGVjdF9ncmVnc2V0IChj
 b25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgIHZvaWQgKmdyZWdzLCBpbnQgcmVnbnVtKTsKKworCiAjZW5kaWYgLyogaTM4
 NmJzZC1uYXQuaCAqLwotLS0gLi9nbnUvZGlzdC9nZGI2L2dkYi9pMzg2bmJzZC1uYXQuYy5vcmln
 CTIwMDgtMDEtMjUgMDc6MzU6NDguMDAwMDAwMDAwIC0wNTAwCisrKyAuL2dudS9kaXN0L2dkYjYv
 Z2RiL2kzODZuYnNkLW5hdC5jCTIwMTAtMDQtMTkgMTQ6MzU6MTYuMDAwMDAwMDAwIC0wNDAwCkBA
 IC0yMCwyMiArMjAsMjkgQEAKICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KIAog
 I2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJpbmZlcmlvci5oIgogI2luY2x1ZGUgImdkYmNv
 cmUuaCIKICNpbmNsdWRlICJyZWdjYWNoZS5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogCiAjaW5j
 bHVkZSAiaTM4Ni10ZGVwLmgiCisjaW5jbHVkZSAiaTM4Ny10ZGVwLmgiCiAjaW5jbHVkZSAiaTM4
 NmJzZC1uYXQuaCIKKyNpbmNsdWRlICJuYnNkLXRocmVhZC5oIgogCiAvKiBTdXBwb3J0IGZvciBk
 ZWJ1Z2dpbmcga2VybmVsIHZpcnR1YWwgbWVtb3J5IGltYWdlcy4gICovCiAKICNpbmNsdWRlIDxz
 eXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisjaW5jbHVkZSA8bWFjaGluZS9y
 ZWcuaD4KICNpbmNsdWRlIDxtYWNoaW5lL2ZyYW1lLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9wY2Iu
 aD4KIAogI2luY2x1ZGUgIm5ic2QtbmF0LmgiCiAjaW5jbHVkZSAiYnNkLWt2bS5oIgogCitleHRl
 cm4gaW50IGRlYnVnX25ic2RfdGhyZWFkOworCiBzdGF0aWMgaW50CiBpMzg2bmJzZF9zdXBwbHlf
 cGNiIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBzdHJ1Y3QgcGNiICpwY2IpCiB7CkBAIC05
 OSw2ICsxMDYsMTU5IEBACiB9CiAMCiAKKworLyogTWFjcm8gdG8gZGV0ZXJtaW5lIGlmIGEgcmVn
 aXN0ZXIgaXMgZmV0Y2hlZCB3aXRoIFBUX0dFVFJFR1MuICAqLworI2RlZmluZSBHRVRSRUdTX1NV
 UFBMSUVTKHJlZ251bSkgXAorICAoKDAgPD0gKHJlZ251bSkgJiYgKHJlZ251bSkgPD0gMTUpKQor
 CisjaWZkZWYgSEFWRV9QVF9HRVRYTU1SRUdTCisvKiBTZXQgdG8gMSBpZiB0aGUga2VybmVsIHN1
 cHBvcnRzIFBUX0dFVFhNTVJFR1MuICBJbml0aWFsaXplZCB0byAtMQorICAgc28gdGhhdCB3ZSB0
 cnkgUFRfR0VUWE1NUkVHUyB0aGUgZmlyc3QgdGltZSBhcm91bmQuICAqLworc3RhdGljIGludCBo
 YXZlX3B0cmFjZV94bW1yZWdzID0gLTE7CisjZW5kaWYKKyAMCisgCisvKiBGZXRjaCByZWdpc3Rl
 ciBSRUdOVU0gZnJvbSB0aGUgaW5mZXJpb3IuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMKKyAg
 IGZvciBhbGwgcmVnaXN0ZXJzIChpbmNsdWRpbmcgdGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVy
 cykuICAqLworCitzdGF0aWMgdm9pZAoraTM4Nm5ic2RfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJz
 IChpbnQgcmVnbnVtKQoreworICBpZiAocmVnbnVtID09IC0xIHx8IEdFVFJFR1NfU1VQUExJRVMg
 KHJlZ251bSkpCisgICAgeworICAgICAgc3RydWN0IHJlZyByZWdzOworCisgICAgICBpZiAocHRy
 YWNlIChQVF9HRVRSRUdTLCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAorCQkgIChQVFJBQ0VfVFlQ
 RV9BUkczKSAmcmVncywgVElER0VUIChpbmZlcmlvcl9wdGlkKSkgPT0gLTEpCisJcGVycm9yX3dp
 dGhfbmFtZSAoXygiQ291bGRuJ3QgZ2V0IHJlZ2lzdGVycyIpKTsKKworICAgICAgaWYgKGRlYnVn
 X25ic2RfdGhyZWFkKQorCXsKKwkgIGlmIChyZWdudW0gPT0gLTEpCisJICAgIGZwcmludGZfdW5m
 aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkiTkZJUjogcHRpZCAlZCwlbGQsIHJlZ251bSAlZFxu
 IiwKKwkJCQlQSURHRVQgKGluZmVyaW9yX3B0aWQpLCBUSURHRVQgKGluZmVyaW9yX3B0aWQpLAor
 CQkJCXJlZ251bSk7CisJICBlbHNlCisJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv
 ZywKKwkJCQkiTkZJUjogcHRpZCAlZCwlbGQsIHJlZ251bSAlZDogJXhcbiIsCisJCQkJUElER0VU
 IChpbmZlcmlvcl9wdGlkKSwgVElER0VUIChpbmZlcmlvcl9wdGlkKSwKKwkJCQlyZWdudW0sICgo
 aW50ICopICZyZWdzKVtyZWdudW1dKTsKKwl9CisKKyAgICAgIGkzODZic2Rfc3VwcGx5X2dyZWdz
 ZXQgKGN1cnJlbnRfcmVnY2FjaGUsICZyZWdzKTsKKyAgICAgIGlmIChyZWdudW0gIT0gLTEpCisJ
 cmV0dXJuOworICAgIH0KKworICBpZiAocmVnbnVtID09IC0xIHx8IHJlZ251bSA+PSBJMzg2X1NU
 MF9SRUdOVU0pCisgICAgeworICAgICAgc3RydWN0IGZwcmVnIGZwcmVnczsKKyNpZmRlZiBIQVZF
 X1BUX0dFVFhNTVJFR1MKKyAgICAgIGNoYXIgeG1tcmVnc1s1MTJdOworCisgICAgICBpZiAoaGF2
 ZV9wdHJhY2VfeG1tcmVncyAhPSAwCisJICAmJiBwdHJhY2UoUFRfR0VUWE1NUkVHUywgUElER0VU
 IChpbmZlcmlvcl9wdGlkKSwKKwkJICAgIChQVFJBQ0VfVFlQRV9BUkczKSB4bW1yZWdzLCBUSURH
 RVQgKGluZmVyaW9yX3B0aWQpKSA9PSAwKQorCXsKKwkgIGhhdmVfcHRyYWNlX3htbXJlZ3MgPSAx
 OworCSAgaTM4N19zdXBwbHlfZnhzYXZlIChjdXJyZW50X3JlZ2NhY2hlLCAtMSwgeG1tcmVncyk7
 CisJfQorICAgICAgZWxzZQorCXsKKyAgICAgICAgICBpZiAocHRyYWNlIChQVF9HRVRGUFJFR1Ms
 IFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCisJCSAgICAgIChQVFJBQ0VfVFlQRV9BUkczKSAmZnBy
 ZWdzLCBUSURHRVQgKGluZmVyaW9yX3B0aWQpKSA9PSAtMSkKKwkgICAgcGVycm9yX3dpdGhfbmFt
 ZSAoXygiQ291bGRuJ3QgZ2V0IGZsb2F0aW5nIHBvaW50IHN0YXR1cyIpKTsKKworCSAgaTM4N19z
 dXBwbHlfZnNhdmUgKGN1cnJlbnRfcmVnY2FjaGUsIC0xLCAmZnByZWdzKTsKKwl9CisjZWxzZQor
 ICAgICAgaWYgKHB0cmFjZSAoUFRfR0VURlBSRUdTLCBQSURHRVQgKGluZmVyaW9yX3B0aWQpLAor
 CQkgIChQVFJBQ0VfVFlQRV9BUkczKSAmZnByZWdzLCBUSURHRVQgKGluZmVyaW9yX3B0aWQpKSA9
 PSAtMSkKKwlwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQg
 c3RhdHVzIikpOworCisgICAgICBpMzg3X3N1cHBseV9mc2F2ZSAoY3VycmVudF9yZWdjYWNoZSwg
 LTEsICZmcHJlZ3MpOworI2VuZGlmCisgICAgfQorfQorCisvKiBTdG9yZSByZWdpc3RlciBSRUdO
 VU0gYmFjayBpbnRvIHRoZSBpbmZlcmlvci4gIElmIFJFR05VTSBpcyAtMSwgZG8KKyAgIHRoaXMg
 Zm9yIGFsbCByZWdpc3RlcnMgKGluY2x1ZGluZyB0aGUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJz
 KS4gICovCisKK3N0YXRpYyB2b2lkCitpMzg2bmJzZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMg
 KGludCByZWdudW0pCit7CisgIGlmIChyZWdudW0gPT0gLTEgfHwgR0VUUkVHU19TVVBQTElFUyAo
 cmVnbnVtKSkKKyAgICB7CisgICAgICBzdHJ1Y3QgcmVnIHJlZ3M7CisKKyAgICAgIGlmIChwdHJh
 Y2UgKFBUX0dFVFJFR1MsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCksCisgICAgICAgICAgICAgICAg
 ICAoUFRSQUNFX1RZUEVfQVJHMykgJnJlZ3MsIFRJREdFVCAoaW5mZXJpb3JfcHRpZCkpID09IC0x
 KQorICAgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgcmVnaXN0ZXJzIikp
 OworCisgICAgICBpMzg2YnNkX2NvbGxlY3RfZ3JlZ3NldCAoY3VycmVudF9yZWdjYWNoZSwgJnJl
 Z3MsIHJlZ251bSk7CisKKyAgICAgIGlmIChkZWJ1Z19uYnNkX3RocmVhZCkKKwl7CisJICBpZiAo
 cmVnbnVtID09IC0xKQorCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJ
 Ik5TSVI6IHB0aWQgJWQsJWxkLCByZWdudW0gJWRcbiIsCisJCQkJUElER0VUIChpbmZlcmlvcl9w
 dGlkKSwgVElER0VUIChpbmZlcmlvcl9wdGlkKSwKKwkJCQlyZWdudW0pOworCSAgZWxzZQorCSAg
 ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJIk5TSVI6IHB0aWQgJWQsJWxk
 LCByZWdudW0gJWQ6ICV4XG4iLAorCQkJCVBJREdFVCAoaW5mZXJpb3JfcHRpZCksIFRJREdFVCAo
 aW5mZXJpb3JfcHRpZCksCisJCQkJcmVnbnVtLCAoKGludCAqKSAmcmVncylbcmVnbnVtXSk7CisJ
 fQorICAgICAgCisgICAgICBpZiAocHRyYWNlIChQVF9TRVRSRUdTLCBQSURHRVQgKGluZmVyaW9y
 X3B0aWQpLAorCSAgICAgICAgICAoUFRSQUNFX1RZUEVfQVJHMykgJnJlZ3MsIFRJREdFVCAoaW5m
 ZXJpb3JfcHRpZCkpID09IC0xKQorICAgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4n
 dCB3cml0ZSByZWdpc3RlcnMiKSk7CisKKyAgICAgIGlmIChyZWdudW0gIT0gLTEpCisJcmV0dXJu
 OworICAgIH0KKworICBpZiAocmVnbnVtID09IC0xIHx8IHJlZ251bSA+PSBJMzg2X1NUMF9SRUdO
 VU0pCisgICAgeworICAgICAgc3RydWN0IGZwcmVnIGZwcmVnczsKKyNpZmRlZiBIQVZFX1BUX0dF
 VFhNTVJFR1MKKyAgICAgIGNoYXIgeG1tcmVnc1s1MTJdOworCisgICAgICBpZiAoaGF2ZV9wdHJh
 Y2VfeG1tcmVncyAhPSAwCisJICAmJiBwdHJhY2UoUFRfR0VUWE1NUkVHUywgUElER0VUIChpbmZl
 cmlvcl9wdGlkKSwKKwkJICAgIChQVFJBQ0VfVFlQRV9BUkczKSB4bW1yZWdzLCBUSURHRVQgKGlu
 ZmVyaW9yX3B0aWQpKSA9PSAwKQorCXsKKwkgIGhhdmVfcHRyYWNlX3htbXJlZ3MgPSAxOworCisJ
 ICBpMzg3X2NvbGxlY3RfZnhzYXZlIChjdXJyZW50X3JlZ2NhY2hlLCByZWdudW0sIHhtbXJlZ3Mp
 OworCisJICBpZiAocHRyYWNlIChQVF9TRVRYTU1SRUdTLCBQSURHRVQgKGluZmVyaW9yX3B0aWQp
 LAorCQkgICAgICAoUFRSQUNFX1RZUEVfQVJHMykgeG1tcmVncywgVElER0VUIChpbmZlcmlvcl9w
 dGlkKSkgPT0gLTEpCisgICAgICAgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3
 cml0ZSBYTU0gcmVnaXN0ZXJzIikpOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBoYXZlX3B0cmFj
 ZV94bW1yZWdzID0gMDsKKyNlbmRpZgorICAgICAgICAgIGlmIChwdHJhY2UgKFBUX0dFVEZQUkVH
 UywgUElER0VUIChpbmZlcmlvcl9wdGlkKSwKKwkJICAgICAgKFBUUkFDRV9UWVBFX0FSRzMpICZm
 cHJlZ3MsIFRJREdFVCAoaW5mZXJpb3JfcHRpZCkpID09IC0xKQorCSAgICBwZXJyb3Jfd2l0aF9u
 YW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOworCisgICAgICAg
 ICAgaTM4N19jb2xsZWN0X2ZzYXZlIChjdXJyZW50X3JlZ2NhY2hlLCByZWdudW0sICZmcHJlZ3Mp
 OworCisgICAgICAgICAgaWYgKHB0cmFjZSAoUFRfU0VURlBSRUdTLCBQSURHRVQgKGluZmVyaW9y
 X3B0aWQpLAorCQkgICAgICAoUFRSQUNFX1RZUEVfQVJHMykgJmZwcmVncywgVElER0VUIChpbmZl
 cmlvcl9wdGlkKSkgPT0gLTEpCisJICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxkbid0IHdy
 aXRlIGZsb2F0aW5nIHBvaW50IHN0YXR1cyIpKTsKKyNpZmRlZiBIQVZFX1BUX0dFVFhNTVJFR1MK
 KyAgICAgICAgfQorI2VuZGlmCisgICAgfQorfQorCisMCisKIC8qIFByb3ZpZGUgYSBwcm90b3R5
 cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCiB2b2lkIF9pbml0aWFsaXpl
 X2kzODZuYnNkX25hdCAodm9pZCk7CiAKQEAgLTEwOSw3ICsyNjksMTAgQEAKIAogICAvKiBBZGQg
 c29tZSBleHRyYSBmZWF0dXJlcyB0byB0aGUgY29tbW9uICpCU0QvaTM4NiB0YXJnZXQuICAqLwog
 ICB0ID0gaTM4NmJzZF90YXJnZXQgKCk7CisgIGluaXRfbmJzZF90aHJlYWRfb3BzICh0KTsKICAg
 dC0+dG9fcGlkX3RvX2V4ZWNfZmlsZSA9IG5ic2RfcGlkX3RvX2V4ZWNfZmlsZTsKKyAgdC0+dG9f
 ZmV0Y2hfcmVnaXN0ZXJzID0gaTM4Nm5ic2RfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzOworICB0
 LT50b19zdG9yZV9yZWdpc3RlcnMgPSBpMzg2bmJzZF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnM7
 ICAKICAgYWRkX3RhcmdldCAodCk7CiAKICAgLyogU3VwcG9ydCBkZWJ1Z2dpbmcga2VybmVsIHZp
 cnR1YWwgbWVtb3J5IGltYWdlcy4gICovCi0tLSAuL2dudS91c3IuYmluL2dkYjYvYXJjaC9pMzg2
 L2RlZnMubWsub3JpZwkyMDA2LTExLTI1IDExOjM4OjUxLjAwMDAwMDAwMCAtMDUwMAorKysgLi9n
 bnUvdXNyLmJpbi9nZGI2L2FyY2gvaTM4Ni9kZWZzLm1rCTIwMTAtMDQtMTkgMTM6NDU6MTEuMDAw
 MDAwMDAwIC0wNDAwCkBAIC0zLDUgKzMsNSBAQAogIyBHZW5lcmF0ZWQgZnJvbTogTmV0QlNEOiBt
 a25hdGl2ZS5jb21tb24sdiAxLjggMjAwNi8wNS8yNiAxOToxNzoyMSBtcmcgRXhwIAogIwogR19J
 TlRFUk5BTF9DRkxBR1M9ICAgICAtSS4gLUkke0dOVUhPU1RESVNUfS9nZGIgLUkke0dOVUhPU1RE
 SVNUfS9nZGIvY29uZmlnIC1ETE9DQUxFRElSPSJcIi91c3Ivc2hhcmUvbG9jYWxlXCIiIC1ESEFW
 RV9DT05GSUdfSCAtSSR7R05VSE9TVERJU1R9L2dkYi8uLi9pbmNsdWRlL29wY29kZSAtSSR7R05V
 SE9TVERJU1R9L2dkYi8uLi9yZWFkbGluZS8uLiAgLUkuLi9iZmQgLUkke0dOVUhPU1RESVNUfS9n
 ZGIvLi4vYmZkIC1JJHtHTlVIT1NURElTVH0vZ2RiLy4uL2luY2x1ZGUgIC1JLi4vaW50bCAtSSR7
 R05VSE9TVERJU1R9L2dkYi8uLi9pbnRsICAtRE1JX09VVD0xIC1EVFVJPTEgLVdpbXBsaWNpdCAt
 V3JldHVybi10eXBlIC1XY29tbWVudCAtV3RyaWdyYXBocyAtV2Zvcm1hdCAtV3BhcmVudGhlc2Vz
 IC1XcG9pbnRlci1hcml0aCAtV2Zvcm1hdC1ub25saXRlcmFsIC1XdW51c2VkLWxhYmVsIC1XdW51
 c2VkLWZ1bmN0aW9uIC1Xbm8tcG9pbnRlci1zaWduIAotR19MSUJHREJfT0JTPWkzODYtdGRlcC5v
 IGkzODctdGRlcC5vIGkzODZic2QtdGRlcC5vIGkzODZuYnNkLXRkZXAubyBuYnNkLXRkZXAubyAg
 Y29yZWxvdy5vIHNvbGliLm8gc29saWItc3ZyNC5vIHNlci1iYXNlLm8gc2VyLXVuaXgubyBzZXIt
 cGlwZS5vIHNlci10Y3AubyBmb3JrLWNoaWxkLm8gaW5mLXB0cmFjZS5vICBuYnNkLW5hdC5vIGkz
 ODZic2QtbmF0Lm8gaTM4Nm5ic2QtbmF0Lm8gYnNkLWt2bS5vICByZW1vdGUubyBkY2FjaGUubyBy
 ZW1vdGUtdXRpbHMubyB0cmFjZXBvaW50Lm8gYXgtZ2VuZXJhbC5vIGF4LWdkYi5vIHJlbW90ZS1m
 aWxlaW8ubyAgY2xpLWR1bXAubyAgY2xpLWRlY29kZS5vIGNsaS1zY3JpcHQubyBjbGktY21kcy5v
 IGNsaS1zZXRzaG93Lm8gY2xpLXV0aWxzLm8gIGNsaS1sb2dnaW5nLm8gIGNsaS1pbnRlcnAubyBt
 aS1vdXQubyBtaS1jb25zb2xlLm8gIG1pLWNtZHMubyBtaS1jbWQtZW52Lm8gbWktY21kLXZhci5v
 IG1pLWNtZC1icmVhay5vIG1pLWNtZC1zdGFjay5vICBtaS1jbWQtZmlsZS5vIG1pLWNtZC1kaXNh
 cy5vIG1pLXN5bWJvbC1jbWRzLm8gIG1pLWludGVycC5vICBtaS1tYWluLm8gbWktcGFyc2UubyBt
 aS1nZXRvcHQubyBtaS1jb21tb24ubyBwb3NpeC1oZGVwLm8gdHVpLWNvbW1hbmQubyAgdHVpLWRh
 dGEubyAgdHVpLWRpc2FzbS5vICB0dWktZmlsZS5vIHR1aS5vICB0dWktaG9va3MubyAgdHVpLWlu
 dGVycC5vICB0dWktaW8ubyAgdHVpLWxheW91dC5vICB0dWktb3V0Lm8gIHR1aS1yZWdzLm8gIHR1
 aS1zb3VyY2UubyAgdHVpLXN0YWNrLm8gIHR1aS13aW4ubyAgdHVpLXdpbmRhdGEubyAgdHVpLXdp
 bmdlbmVyYWwubyAgdHVpLXdpbnNvdXJjZS5vIGMtZXhwLm8gIGNwLW5hbWUtcGFyc2VyLm8gIG9i
 amMtZXhwLm8gIGFkYS1leHAubyAganYtZXhwLm8gIGYtZXhwLm8gbTItZXhwLm8gcC1leHAubyAg
 dmVyc2lvbi5vICBhbm5vdGF0ZS5vICBhdXh2Lm8gIGJmZC10YXJnZXQubyAgYmxvY2tmcmFtZS5v
 IGJyZWFrcG9pbnQubyBmaW5kdmFyLm8gcmVnY2FjaGUubyAgY2hhcnNldC5vIGRpc2FzbS5vIGR1
 bW15LWZyYW1lLm8gIHNvdXJjZS5vIHZhbHVlLm8gZXZhbC5vIHZhbG9wcy5vIHZhbGFyaXRoLm8g
 dmFscHJpbnQubyBwcmludGNtZC5vICBibG9jay5vIHN5bXRhYi5vIHN5bWZpbGUubyBzeW1taXNj
 Lm8gbGluZXNwZWMubyBkaWN0aW9uYXJ5Lm8gIGluZmNhbGwubyAgaW5mY21kLm8gaW5mcnVuLm8g
 IGV4cHByaW50Lm8gZW52aXJvbi5vIHN0YWNrLm8gdGhyZWFkLm8gIGV4Y2VwdGlvbnMubyAgaW5m
 LWNoaWxkLm8gIGludGVycHMubyAgbWFpbi5vICBtYWNyb3RhYi5vIG1hY3JvY21kLm8gbWFjcm9l
 eHAubyBtYWNyb3Njb3BlLm8gIGV2ZW50LWxvb3AubyBldmVudC10b3AubyBpbmYtbG9vcC5vIGNv
 bXBsZXRlci5vICBnZGJhcmNoLm8gYXJjaC11dGlscy5vIGdkYnR5cGVzLm8gb3NhYmkubyBjb3B5
 aW5nLm8gIG1lbWF0dHIubyBtZW0tYnJlYWsubyB0YXJnZXQubyBwYXJzZS5vIGxhbmd1YWdlLm8g
 YnVpbGRzeW0ubyAgc3RkLXJlZ3MubyAgc2lnbmFscy5vICBrb2QubyBrb2QtY2lzY28ubyAgZ2Ri
 LWV2ZW50cy5vICBleGVjLm8gYmNhY2hlLm8gb2JqZmlsZXMubyBvYnNlcnZlci5vIG1pbnN5bXMu
 byBtYWludC5vIGRlbWFuZ2xlLm8gIGRieHJlYWQubyBjb2ZmcmVhZC5vIGNvZmYtcGUtcmVhZC5v
 IGVsZnJlYWQubyAgZHdhcmZyZWFkLm8gZHdhcmYycmVhZC5vIG1pcHNyZWFkLm8gc3RhYnNyZWFk
 Lm8gY29yZWZpbGUubyAgZHdhcmYyZXhwci5vIGR3YXJmMmxvYy5vIGR3YXJmMi1mcmFtZS5vICBh
 ZGEtbGFuZy5vIGMtbGFuZy5vIGYtbGFuZy5vIG9iamMtbGFuZy5vICB1aS1vdXQubyBjbGktb3V0
 Lm8gIHZhcm9iai5vIHdyYXBwZXIubyAganYtbGFuZy5vIGp2LXZhbHByaW50Lm8ganYtdHlwZXBy
 aW50Lm8gIG0yLWxhbmcubyBwLWxhbmcubyBwLXR5cGVwcmludC5vIHAtdmFscHJpbnQubyAgc2Nt
 LWV4cC5vIHNjbS1sYW5nLm8gc2NtLXZhbHByaW50Lm8gIHNlbnRpbmVsLWZyYW1lLm8gIGNvbXBs
 YWludHMubyB0eXBlcHJpbnQubyAgYWRhLXR5cGVwcmludC5vIGMtdHlwZXByaW50Lm8gZi10eXBl
 cHJpbnQubyBtMi10eXBlcHJpbnQubyAgYWRhLXZhbHByaW50Lm8gYy12YWxwcmludC5vIGNwLXZh
 bHByaW50Lm8gZi12YWxwcmludC5vIG0yLXZhbHByaW50Lm8gIG5sbXJlYWQubyBzZXJpYWwubyBt
 ZGVidWdyZWFkLm8gdG9wLm8gdXRpbHMubyAgdWktZmlsZS5vICB1c2VyLXJlZ3MubyAgZnJhbWUu
 byBmcmFtZS11bndpbmQubyBkb3VibGVzdC5vICBmcmFtZS1iYXNlLm8gIGdudS12Mi1hYmkubyBn
 bnUtdjMtYWJpLm8gaHBhY2MtYWJpLm8gY3AtYWJpLm8gY3Atc3VwcG9ydC5vICBjcC1uYW1lc3Bh
 Y2UubyAgcmVnZ3JvdXBzLm8gcmVnc2V0Lm8gIHRyYWQtZnJhbWUubyAgdHJhbXAtZnJhbWUubyAg
 c29saWIubyBzb2xpYi1udWxsLm8gIHByb2xvZ3VlLXZhbHVlLm8gaW5mbG93Lm8gICAgaW5pdC5v
 CitHX0xJQkdEQl9PQlM9aTM4Ni10ZGVwLm8gaTM4Ny10ZGVwLm8gaTM4NmJzZC10ZGVwLm8gaTM4
 Nm5ic2QtdGRlcC5vIG5ic2QtdGRlcC5vICBjb3JlbG93Lm8gc29saWIubyBzb2xpYi1zdnI0Lm8g
 c2VyLWJhc2UubyBzZXItdW5peC5vIHNlci1waXBlLm8gc2VyLXRjcC5vIGZvcmstY2hpbGQubyBp
 bmYtcHRyYWNlLm8gIG5ic2QtbmF0Lm8gbmJzZC10aHJlYWQubyBpMzg2YnNkLW5hdC5vIGkzODZu
 YnNkLW5hdC5vIGJzZC1rdm0ubyAgcmVtb3RlLm8gZGNhY2hlLm8gcmVtb3RlLXV0aWxzLm8gdHJh
 Y2Vwb2ludC5vIGF4LWdlbmVyYWwubyBheC1nZGIubyByZW1vdGUtZmlsZWlvLm8gIGNsaS1kdW1w
 Lm8gIGNsaS1kZWNvZGUubyBjbGktc2NyaXB0Lm8gY2xpLWNtZHMubyBjbGktc2V0c2hvdy5vIGNs
 aS11dGlscy5vICBjbGktbG9nZ2luZy5vICBjbGktaW50ZXJwLm8gbWktb3V0Lm8gbWktY29uc29s
 ZS5vICBtaS1jbWRzLm8gbWktY21kLWVudi5vIG1pLWNtZC12YXIubyBtaS1jbWQtYnJlYWsubyBt
 aS1jbWQtc3RhY2subyAgbWktY21kLWZpbGUubyBtaS1jbWQtZGlzYXMubyBtaS1zeW1ib2wtY21k
 cy5vICBtaS1pbnRlcnAubyAgbWktbWFpbi5vIG1pLXBhcnNlLm8gbWktZ2V0b3B0Lm8gbWktY29t
 bW9uLm8gcG9zaXgtaGRlcC5vIHR1aS1jb21tYW5kLm8gIHR1aS1kYXRhLm8gIHR1aS1kaXNhc20u
 byAgdHVpLWZpbGUubyB0dWkubyAgdHVpLWhvb2tzLm8gIHR1aS1pbnRlcnAubyAgdHVpLWlvLm8g
 IHR1aS1sYXlvdXQubyAgdHVpLW91dC5vICB0dWktcmVncy5vICB0dWktc291cmNlLm8gIHR1aS1z
 dGFjay5vICB0dWktd2luLm8gIHR1aS13aW5kYXRhLm8gIHR1aS13aW5nZW5lcmFsLm8gIHR1aS13
 aW5zb3VyY2UubyBjLWV4cC5vICBjcC1uYW1lLXBhcnNlci5vICBvYmpjLWV4cC5vICBhZGEtZXhw
 Lm8gIGp2LWV4cC5vICBmLWV4cC5vIG0yLWV4cC5vIHAtZXhwLm8gIHZlcnNpb24ubyAgYW5ub3Rh
 dGUubyAgYXV4di5vICBiZmQtdGFyZ2V0Lm8gIGJsb2NrZnJhbWUubyBicmVha3BvaW50Lm8gZmlu
 ZHZhci5vIHJlZ2NhY2hlLm8gIGNoYXJzZXQubyBkaXNhc20ubyBkdW1teS1mcmFtZS5vICBzb3Vy
 Y2UubyB2YWx1ZS5vIGV2YWwubyB2YWxvcHMubyB2YWxhcml0aC5vIHZhbHByaW50Lm8gcHJpbnRj
 bWQubyAgYmxvY2subyBzeW10YWIubyBzeW1maWxlLm8gc3ltbWlzYy5vIGxpbmVzcGVjLm8gZGlj
 dGlvbmFyeS5vICBpbmZjYWxsLm8gIGluZmNtZC5vIGluZnJ1bi5vICBleHBwcmludC5vIGVudmly
 b24ubyBzdGFjay5vIHRocmVhZC5vICBleGNlcHRpb25zLm8gIGluZi1jaGlsZC5vICBpbnRlcnBz
 Lm8gIG1haW4ubyAgbWFjcm90YWIubyBtYWNyb2NtZC5vIG1hY3JvZXhwLm8gbWFjcm9zY29wZS5v
 ICBldmVudC1sb29wLm8gZXZlbnQtdG9wLm8gaW5mLWxvb3AubyBjb21wbGV0ZXIubyAgZ2RiYXJj
 aC5vIGFyY2gtdXRpbHMubyBnZGJ0eXBlcy5vIG9zYWJpLm8gY29weWluZy5vICBtZW1hdHRyLm8g
 bWVtLWJyZWFrLm8gdGFyZ2V0Lm8gcGFyc2UubyBsYW5ndWFnZS5vIGJ1aWxkc3ltLm8gIHN0ZC1y
 ZWdzLm8gIHNpZ25hbHMubyAga29kLm8ga29kLWNpc2NvLm8gIGdkYi1ldmVudHMubyAgZXhlYy5v
 IGJjYWNoZS5vIG9iamZpbGVzLm8gb2JzZXJ2ZXIubyBtaW5zeW1zLm8gbWFpbnQubyBkZW1hbmds
 ZS5vICBkYnhyZWFkLm8gY29mZnJlYWQubyBjb2ZmLXBlLXJlYWQubyBlbGZyZWFkLm8gIGR3YXJm
 cmVhZC5vIGR3YXJmMnJlYWQubyBtaXBzcmVhZC5vIHN0YWJzcmVhZC5vIGNvcmVmaWxlLm8gIGR3
 YXJmMmV4cHIubyBkd2FyZjJsb2MubyBkd2FyZjItZnJhbWUubyAgYWRhLWxhbmcubyBjLWxhbmcu
 byBmLWxhbmcubyBvYmpjLWxhbmcubyAgdWktb3V0Lm8gY2xpLW91dC5vICB2YXJvYmoubyB3cmFw
 cGVyLm8gIGp2LWxhbmcubyBqdi12YWxwcmludC5vIGp2LXR5cGVwcmludC5vICBtMi1sYW5nLm8g
 cC1sYW5nLm8gcC10eXBlcHJpbnQubyBwLXZhbHByaW50Lm8gIHNjbS1leHAubyBzY20tbGFuZy5v
 IHNjbS12YWxwcmludC5vICBzZW50aW5lbC1mcmFtZS5vICBjb21wbGFpbnRzLm8gdHlwZXByaW50
 Lm8gIGFkYS10eXBlcHJpbnQubyBjLXR5cGVwcmludC5vIGYtdHlwZXByaW50Lm8gbTItdHlwZXBy
 aW50Lm8gIGFkYS12YWxwcmludC5vIGMtdmFscHJpbnQubyBjcC12YWxwcmludC5vIGYtdmFscHJp
 bnQubyBtMi12YWxwcmludC5vICBubG1yZWFkLm8gc2VyaWFsLm8gbWRlYnVncmVhZC5vIHRvcC5v
 IHV0aWxzLm8gIHVpLWZpbGUubyAgdXNlci1yZWdzLm8gIGZyYW1lLm8gZnJhbWUtdW53aW5kLm8g
 ZG91Ymxlc3QubyAgZnJhbWUtYmFzZS5vICBnbnUtdjItYWJpLm8gZ251LXYzLWFiaS5vIGhwYWNj
 LWFiaS5vIGNwLWFiaS5vIGNwLXN1cHBvcnQubyAgY3AtbmFtZXNwYWNlLm8gIHJlZ2dyb3Vwcy5v
 IHJlZ3NldC5vICB0cmFkLWZyYW1lLm8gIHRyYW1wLWZyYW1lLm8gIHNvbGliLm8gc29saWItbnVs
 bC5vICBwcm9sb2d1ZS12YWx1ZS5vIGluZmxvdy5vICAgIGluaXQubwogR19TSU1fT0JTPQo=
 
 ------_=_NextPart_001_01CAE22F.094CA314--
 


Home | Main Index | Thread Index | Old Index