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

Re: [Xen-devel] [PATCH] [1/3] Xenoprof: Enabling performance profiling in Xen



On Mon, 2005-04-11 at 17:24, Keir Fraser wrote:
> Is the nmi_sanity_check() needed? We shouldn't lose NMIs: even if we
> take one while doing NMI processing, we sholuld retake the NMI as soon
> as the first one IRETs.
> 
> There used to be a problem whereby the Xen NMI handler would bail if
> it detected it had interrupted Xen at an unfortunate time. I guess the
> code in xenoprof was probably added to deal with this situation. If
> so then it is no longer needed -- I fix up in a more generic way now
> (reschedule the NMI automatically). 

Thats right, earlier we used to lose NMI samples, and nmi_sanity_check()
was added as a guard against that. We may not need this anymore.

I had noticed that even with the deferred NMI patch, we used to end up
losing NMI samples, though I cannot offer any reasons why. The current
xenoprof patch fixes this by forcing a call to the NMI handler after
fixing up the segment registers, instead of deferring the call.

> Apart from that I guess this is mostly just oprofile source files
> pulled out of Linux? Is there much/any other Xen-specific code in the
> patch? 

There are a few changes to allow an NMI callback to be registered, to be
called instead of the default NMI handler. This is mostly pulled from
the Linux code.

Other changes include a new hypercall (do_pmc_op) which provides the
interface between domain level profilers and Xen, and some additions to
the MSR definition  files (again from Linux).

Aravind

> 
>  -- Keir
> 
> > 
> >   Here is part 1 of the patches for Xenoprof
> > 
> > >>   1) xenoprof-1.0-xen-2.0.5.patch:
> > >>       - Patch for Xen
> > 
> >   Jose Renato Santos
> >   HP Labs
> >    xenoprof-1.0-xen-2.0.5.patch
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
>  -=- MIME -=- 
> This is a multi-part message in MIME format.
> 
> ------_=_NextPart_001_01C53CB2.59CE8456
> Content-Type: text/plain;
>       charset="us-ascii"
> Content-Transfer-Encoding: quoted-printable
> 
> 
>   Here is part 1 of the patches for Xenoprof
> 
> >>   1) xenoprof-1.0-xen-2.0.5.patch:
> >>       - Patch for Xen
> 
>   Jose Renato Santos
>   HP Labs
> 
> ------_=_NextPart_001_01C53CB2.59CE8456
> Content-Type: application/octet-stream;
>       name="xenoprof-1.0-xen-2.0.5.patch"
> Content-Transfer-Encoding: base64
> Content-Description: xenoprof-1.0-xen-2.0.5.patch
> Content-Disposition: attachment;
>       filename="xenoprof-1.0-xen-2.0.5.patch"
> 
> ZGlmZiAtUE5hdXIgeGVuLTIuMC41L3hlbi9hcmNoL3g4Ni9hcGljLmMgeGVuLTIuMC41LXByb2Yv
> eGVuL2FyY2gveDg2L2FwaWMuYwotLS0geGVuLTIuMC41L3hlbi9hcmNoL3g4Ni9hcGljLmMJMjAw
> NS0wMy0xMCAxMTo1MjoxNS4wMDAwMDAwMDAgLTA4MDAKKysrIHhlbi0yLjAuNS1wcm9mL3hlbi9h
> cmNoL3g4Ni9hcGljLmMJMjAwNS0wNC0wNiAwOToyNzoxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTcy
> NCw2ICs3MjQsOSBAQAogCiB1bnNpZ25lZCBpbnQgYXBpY190aW1lcl9pcnFzIFtOUl9DUFVTXTsK
> IAorZXh0ZXJuIGludCBubWlfcHJvZmlsaW5nX3N0YXJ0ZWQ7CitleHRlcm4gaW50IG5taV9zYW5p
> dHlfY2hlY2soc3RydWN0IHhlbl9yZWdzICogcmVncywgaW50IGNwdSk7CisKIHZvaWQgc21wX2Fw
> aWNfdGltZXJfaW50ZXJydXB0KHN0cnVjdCB4ZW5fcmVncyAqIHJlZ3MpCiB7CiAgICAgYWNrX0FQ
> SUNfaXJxKCk7CkBAIC03MzEsNiArNzM0LDEyIEBACiAgICAgYXBpY190aW1lcl9pcnFzW3NtcF9w
> cm9jZXNzb3JfaWQoKV0rKzsKICAgICBwZXJmY19pbmNyYyhhcGljX3RpbWVyKTsKIAorICAgIC8q
> ICB3ZSBtYXkgbG9zZSBOTUkgc2FtcGxlcyBmb3Igc2V2ZXJhbCByZWFzb25zLgorCUhlcmUsIHdl
> IHByb3RlY3QgYWdhaW5zdCB0aGF0IGJ5IGRvaW5nIGFuIG5taSBzYW5pdHkKKwljaGVjayBldmVy
> eSB0aW1lciBpbnRlcnJ1cHQgb24gZXZlcnkgcHJvY2Vzc29yICovCisgICAgaWYgKG5taV9wcm9m
> aWxpbmdfc3RhcnRlZCkKKwlubWlfc2FuaXR5X2NoZWNrKHJlZ3MsIHNtcF9wcm9jZXNzb3JfaWQo
> KSk7CisKICAgICByYWlzZV9zb2Z0aXJxKEFDX1RJTUVSX1NPRlRJUlEpOwogfQogCmRpZmYgLVBO
> YXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgeGVuLTIuMC41LXByb2YveGVuL2Fy
> Y2gveDg2L01ha2VmaWxlCi0tLSB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L01ha2VmaWxlCTIwMDUt
> MDMtMTAgMTE6NTI6MTMuMDAwMDAwMDAwIC0wODAwCisrKyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJj
> aC94ODYvTWFrZWZpbGUJMjAwNS0wNC0wNyAwOTowNDoxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTEy
> LDcgKzEyLDEwIEBACiAKIE9CSlMgOj0gJChzdWJzdCAkKFRBUkdFVF9TVUJBUkNIKS9hc20tb2Zm
> c2V0cy5vLCwkKE9CSlMpKQogCitPQkpTICs9IG9wcm9maWxlL29wcm9maWxlLm8KKwogZGVmYXVs
> dDogJChUQVJHRVQpCisJbWFrZSAtQyBvcHJvZmlsZQogCiAkKFRBUkdFVCk6ICQoVEFSR0VUKS1z
> eW1zIGJvb3QvbWtlbGYzMgogCS4vYm9vdC9ta2VsZjMyICQoVEFSR0VUKS1zeW1zICQoVEFSR0VU
> KSAweDEwMDAwMApAQCAtMzAsMTEgKzMzLDE1IEBACiBib290L21rZWxmMzI6IGJvb3QvbWtlbGYz
> Mi5jCiAJJChIT1NUQ0MpICQoSE9TVENGTEFHUykgLW8gJEAgJDwKIAorb3Byb2ZpbGUvb3Byb2Zp
> bGUubzoKKwkkKE1BS0UpIC1DIG9wcm9maWxlCisKIGNsZWFuOgogCXJtIC1mICoubyAqLnMgKn4g
> Y29yZSBib290LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKIAlybSAtZiB4ODZf
> MzIvKi5vIHg4Nl8zMi8qfiB4ODZfMzIvY29yZQogCXJtIC1mIHg4Nl82NC8qLm8geDg2XzY0Lyp+
> IHg4Nl82NC9jb3JlCiAJcm0gLWYgbXRyci8qLm8gbXRyci8qfiBtdHJyL2NvcmUKKwlybSAtZiBv
> cHJvZmlsZS8qLm8KIAogZGVsZXRlLXVuZnJlc2gtZmlsZXM6CiAJIyBub3RoaW5nCmRpZmYgLVBO
> YXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgeGVuLTIuMC41LXByb2YveGVu
> L2FyY2gveDg2L21pY3JvY29kZS5jCi0tLSB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L21pY3JvY29k
> ZS5jCTIwMDUtMDMtMTAgMTE6NTI6MTMuMDAwMDAwMDAwIC0wODAwCisrKyB4ZW4tMi4wLjUtcHJv
> Zi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMJMjAwNS0wNC0wNiAwOToyNzoxMy4wMDAwMDAwMDAg
> LTA3MDAKQEAgLTg3LDEzICs4Nyw2IEBACiAjZGVmaW5lIHZtYWxsb2MoX3MpIHhtYWxsb2MoX3Mp
> CiAjZGVmaW5lIHZmcmVlKF9wKSB4ZnJlZShfcCkKICNkZWZpbmUgbnVtX29ubGluZV9jcHVzKCkg
> c21wX251bV9jcHVzCi1zdGF0aWMgaW5saW5lIGludCBvbl9lYWNoX2NwdSgKLSAgICB2b2lkICgq
> ZnVuYykgKHZvaWQgKmluZm8pLCB2b2lkICppbmZvLCBpbnQgcmV0cnksIGludCB3YWl0KQotewot
> ICAgIGludCByZXQgPSBzbXBfY2FsbF9mdW5jdGlvbihmdW5jLCBpbmZvLCByZXRyeSwgd2FpdCk7
> Ci0gICAgZnVuYyhpbmZvKTsKLSAgICByZXR1cm4gcmV0OwotfQogCiAjaWYgMAogTU9EVUxFX0RF
> U0NSSVBUSU9OKCJJbnRlbCBDUFUgKElBLTMyKSBNaWNyb2NvZGUgVXBkYXRlIERyaXZlciIpOwpk
> aWZmIC1QTmF1ciB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L25taS5jIHhlbi0yLjAuNS1wcm9mL3hl
> bi9hcmNoL3g4Ni9ubWkuYwotLS0geGVuLTIuMC41L3hlbi9hcmNoL3g4Ni9ubWkuYwkyMDA1LTAz
> LTEwIDExOjUyOjEzLjAwMDAwMDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2FyY2gv
> eDg2L25taS5jCTIwMDUtMDQtMDYgMDk6Mjc6MTMuMDAwMDAwMDAwIC0wNzAwCkBAIC01LDYgKzUs
> MTAgQEAKICAqCiAgKiAgU3RhcnRlZCBieSBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4K
> ICAqCisgKiBNb2RpZmllZCBieSBBcmF2aW5kIE1lbm9uIGZvciBzdXBwb3J0aW5nIG9wcm9maWxl
> CisgKiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZToKKyAqIENvcHlyaWdodCAoQykgMjAwNSBIZXds
> ZXR0LVBhY2thcmQgQ28uCisgKgogICogIEZpeGVzOgogICogIE1pa2FlbCBQZXR0ZXJzc29uCTog
> QU1EIEs3IHN1cHBvcnQgZm9yIGxvY2FsIEFQSUMgTk1JIHdhdGNoZG9nLgogICogIE1pa2FlbCBQ
> ZXR0ZXJzc29uCTogUG93ZXIgTWFuYWdlbWVudCBmb3IgbG9jYWwgQVBJQyBOTUkgd2F0Y2hkb2cu
> CkBAIC0zNCw2ICszOCwyOCBAQAogCiBleHRlcm4gaW50IGxvZ2ljYWxfcHJvY19pZFtdOwogCisv
> KgorICogbGFwaWNfbm1pX293bmVyIHRyYWNrcyB0aGUgb3duZXJzaGlwIG9mIHRoZSBsYXBpYyBO
> TUkgaGFyZHdhcmU6CisgKiAtIGl0IG1heSBiZSByZXNlcnZlZCBieSBzb21lIG90aGVyIGRyaXZl
> ciwgb3Igbm90CisgKiAtIHdoZW4gbm90IHJlc2VydmVkIGJ5IHNvbWUgb3RoZXIgZHJpdmVyLCBp
> dCBtYXkgYmUgdXNlZCBmb3IKKyAqICAgdGhlIE5NSSB3YXRjaGRvZywgb3Igbm90CisgKgorICog
> VGhpcyBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSBubWlfYWN0aXZlIGJlY2F1c2UgdGhl
> IE5NSQorICogd2F0Y2hkb2cgbWF5IGFsc28gYmUgZHJpdmVuIGZyb20gdGhlIEkvTyBBUElDIHRp
> bWVyLgorICovCitzdGF0aWMgc3BpbmxvY2tfdCBsYXBpY19ubWlfb3duZXJfbG9jayA9IFNQSU5f
> TE9DS19VTkxPQ0tFRDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGFwaWNfbm1pX293bmVyOworI2Rl
> ZmluZSBMQVBJQ19OTUlfV0FUQ0hET0cgICAgICAoMTw8MCkKKyNkZWZpbmUgTEFQSUNfTk1JX1JF
> U0VSVkVEICAgICAgKDE8PDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgCisvKiBubWlfYWN0aXZlOgorICogKzE6IHRoZSBsYXBpYyBOTUkgd2F0
> Y2hkb2cgaXMgYWN0aXZlLCBidXQgY2FuIGJlIGRpc2FibGVkCisgKiAgMDogdGhlIGxhcGljIE5N
> SSB3YXRjaGRvZyBoYXMgbm90IGJlZW4gc2V0IHVwLCBhbmQgY2Fubm90CisgKiAgICAgYmUgZW5h
> YmxlZAorICogLTE6IHRoZSBsYXBpYyBOTUkgd2F0Y2hkb2cgaXMgZGlzYWJsZWQsIGJ1dCBjYW4g
> YmUgZW5hYmxlZAorICovCitpbnQgbm1pX2FjdGl2ZTsKKwogI2RlZmluZSBLN19FVk5UU0VMX0VO
> QUJMRQkoMSA8PCAyMikKICNkZWZpbmUgSzdfRVZOVFNFTF9JTlQJCSgxIDw8IDIwKQogI2RlZmlu
> ZSBLN19FVk5UU0VMX09TCQkoMSA8PCAxNykKQEAgLTczLDkgKzk5LDkgQEAKICAqLwogI2RlZmlu
> ZSBNU1JfUDRfSVFfQ09VTlRFUjAJMHgzMEMKICNkZWZpbmUgTVNSX1A0X0lRX0NPVU5URVIxCTB4
> MzBECi0jZGVmaW5lIE1TUl9QNF9JUV9DQ0NSMAkJMHgzNkMKLSNkZWZpbmUgTVNSX1A0X0lRX0ND
> Q1IxCQkweDM2RAotI2RlZmluZSBNU1JfUDRfQ1JVX0VTQ1IwCTB4M0I4IC8qIEVTQ1Igbm8uIDQg
> Ki8KKy8vI2RlZmluZSBNU1JfUDRfSVFfQ0NDUjAJCTB4MzZDCisvLyNkZWZpbmUgTVNSX1A0X0lR
> X0NDQ1IxCQkweDM2RAorLy8jZGVmaW5lIE1TUl9QNF9DUlVfRVNDUjAJMHgzQjggLyogRVNDUiBu
> by4gNCAqLwogI2RlZmluZSBQNF9OTUlfQ1JVX0VTQ1IwIFwKICAgICAoUDRfRVNDUl9FVkVOVF9T
> RUxFQ1QoMHgzRil8UDRfRVNDUl9PUzB8UDRfRVNDUl9VU1IwfCBcCiAgICAgIFA0X0VTQ1JfT1Mx
> fFA0X0VTQ1JfVVNSMSkKQEAgLTEzMSw2ICsxNTcsNjkgQEAKICAqIE9yaWdpbmFsIGNvZGUgd3Jp
> dHRlbiBieSBLZWl0aCBPd2Vucy4KICAqLwogCitzdGF0aWMgdm9pZCBkaXNhYmxlX2xhcGljX25t
> aV93YXRjaGRvZyh2b2lkKQoreworICAgICAgICBpZiAobm1pX2FjdGl2ZSA8PSAwKQorICAgICAg
> ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChib290X2NwdV9kYXRhLng4Nl92ZW5k
> b3IpIHsKKyAgICAgICAgY2FzZSBYODZfVkVORE9SX0FNRDoKKyAgICAgICAgICAgICAgICB3cm1z
> cihNU1JfSzdfRVZOVFNFTDAsIDAsIDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
> ICBjYXNlIFg4Nl9WRU5ET1JfSU5URUw6CisgICAgICAgICAgICAgICAgc3dpdGNoIChib290X2Nw
> dV9kYXRhLng4NikgeworICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAg
> ICAgICAgIHdybXNyKE1TUl9QNl9FVk5UU0VMMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAg
> ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE1OgorCQkJaWYgKGxvZ2ljYWxfcHJv
> Y19pZFtzbXBfcHJvY2Vzc29yX2lkKCldID09IDApCisJCQl7CisgICAgICAgICAgICAgICAgICAg
> ICAgICAJd3Jtc3IoTVNSX1A0X0lRX0NDQ1IwLCAwLCAwKTsKKwkgICAgICAgICAgICAgICAgICAg
> ICAgICB3cm1zcihNU1JfUDRfQ1JVX0VTQ1IwLCAwLCAwKTsKKwkJCX0gZWxzZSB7CisJCQkJd3Jt
> c3IoTVNSX1A0X0lRX0NDQ1IxLCAwLCAwKTsJCisJCQl9CisgICAgICAgICAgICAgICAgICAgICAg
> ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
> ICAgIH0KKyAgICAgICAgbm1pX2FjdGl2ZSA9IC0xOworICAgICAgICAvKiB0ZWxsIGRvX25taSgp
> IGFuZCBvdGhlcnMgdGhhdCB3ZSdyZSBub3QgYWN0aXZlIGFueSBtb3JlICovCisgICAgICAgIG5t
> aV93YXRjaGRvZyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJsZV9sYXBpY19ubWlfd2F0Y2hk
> b2codm9pZCkKK3sKKyAgICAgICAgaWYgKG5taV9hY3RpdmUgPCAwKSB7CisgICAgICAgICAgICAg
> ICAgbm1pX3dhdGNoZG9nID0gTk1JX0xPQ0FMX0FQSUM7CisgICAgICAgICAgICAgICAgc2V0dXBf
> YXBpY19ubWlfd2F0Y2hkb2coKTsKKyAgICAgICAgfQorfQorCitpbnQgcmVzZXJ2ZV9sYXBpY19u
> bWkodm9pZCkKK3sKKyAgICAgICAgdW5zaWduZWQgaW50IG9sZF9vd25lcjsKKyAgICAgICAgc3Bp
> bl9sb2NrKCZsYXBpY19ubWlfb3duZXJfbG9jayk7CisgICAgICAgIG9sZF9vd25lciA9IGxhcGlj
> X25taV9vd25lcjsKKyAgICAgICAgbGFwaWNfbm1pX293bmVyIHw9IExBUElDX05NSV9SRVNFUlZF
> RDsKKyAgICAgICAgc3Bpbl91bmxvY2soJmxhcGljX25taV9vd25lcl9sb2NrKTsKKyAgICAgICAg
> aWYgKG9sZF9vd25lciAmIExBUElDX05NSV9SRVNFUlZFRCkKKyAgICAgICAgICAgICAgICByZXR1
> cm4gLUVCVVNZOworICAgICAgICBpZiAob2xkX293bmVyICYgTEFQSUNfTk1JX1dBVENIRE9HKQor
> ICAgICAgICAgICAgICAgIGRpc2FibGVfbGFwaWNfbm1pX3dhdGNoZG9nKCk7CisgICAgICAgIHJl
> dHVybiAwOworfQorCit2b2lkIHJlbGVhc2VfbGFwaWNfbm1pKHZvaWQpCit7CisgICAgICAgIHVu
> c2lnbmVkIGludCBuZXdfb3duZXI7CisgICAgICAgIHNwaW5fbG9jaygmbGFwaWNfbm1pX293bmVy
> X2xvY2spOworICAgICAgICBuZXdfb3duZXIgPSBsYXBpY19ubWlfb3duZXIgJiB+TEFQSUNfTk1J
> X1JFU0VSVkVEOworICAgICAgICBsYXBpY19ubWlfb3duZXIgPSBuZXdfb3duZXI7CisgICAgICAg
> IHNwaW5fdW5sb2NrKCZsYXBpY19ubWlfb3duZXJfbG9jayk7CisgICAgICAgIGlmIChuZXdfb3du
> ZXIgJiBMQVBJQ19OTUlfV0FUQ0hET0cpCisgICAgICAgICAgICAgICAgZW5hYmxlX2xhcGljX25t
> aV93YXRjaGRvZygpOworfQorCiBzdGF0aWMgdm9pZCBfX3BtaW5pdCBjbGVhcl9tc3JfcmFuZ2Uo
> dW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGludCBuKQogewogICAgIHVuc2lnbmVkIGludCBp
> OwpAQCAtMjU1LDYgKzM0NCw4IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuOwogICAg
> IH0KKyAgICBsYXBpY19ubWlfb3duZXIgPSBMQVBJQ19OTUlfV0FUQ0hET0c7CisgICAgbm1pX2Fj
> dGl2ZSA9IDE7CiAgICAgbm1pX3BtX2luaXQoKTsKIH0KIApAQCAtMzE5LDMgKzQxMCw3IEBACiAg
> ICAgICAgIH0KICAgICB9CiB9CisKK0VYUE9SVF9TWU1CT0wocmVzZXJ2ZV9sYXBpY19ubWkpOwor
> RVhQT1JUX1NZTUJPTChyZWxlYXNlX2xhcGljX25taSk7CisKZGlmZiAtUE5hdXIgeGVuLTIuMC41
> L3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9NYWtlZmlsZSB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJjaC94
> ODYvb3Byb2ZpbGUvTWFrZWZpbGUKLS0tIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUv
> TWFrZWZpbGUJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIHhlbi0yLjAu
> NS1wcm9mL3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9NYWtlZmlsZQkyMDA1LTA0LTA2IDA5OjI3OjEz
> LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDM0IEBACisKK2luY2x1ZGUgJChCQVNFRElSKS9S
> dWxlcy5taworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisjIEZMQUdT
> IGlzIGlkZW50aWNhbCB0byBDRkxBR1MgZXhjZXB0IGZvciAtV2Vycm9yICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgIAorRkxBR1MgIDo9IC1ub3N0ZGluYyAtZm5vLWJ1aWx0aW4gLWZuby1jb21t
> b24gLWZuby1zdHJpY3QtYWxpYXNpbmcKK0ZMQUdTICArPSAtaXdpdGhwcmVmaXggaW5jbHVkZSAt
> V2FsbCAtcGlwZQorRkxBR1MgICs9IC1JJChCQVNFRElSKS9pbmNsdWRlIC1Xbm8tcG9pbnRlci1h
> cml0aCAtV3JlZHVuZGFudC1kZWNscworCitpZmVxICgkKG9wdGltaXplKSx5KQorRkxBR1MgICs9
> IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlcgorZWxzZQoreDg2XzMyL3VzZXJjb3B5Lm86IENGTEFH
> UyArPSAtTzEKK2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIyBQcmV2
> ZW50IGZsb2F0aW5nLXBvaW50IHZhcmlhYmxlcyBmcm9tIGNyZWVwaW5nIGludG8gWGVuLgorRkxB
> R1MgICs9IC1tc29mdC1mbG9hdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK2lm
> ZXEgKCQoVEFSR0VUX1NVQkFSQ0gpLHg4Nl8zMikKK0ZMQUdTICArPSAtbTMyIC1tYXJjaD1pNjg2
> CitMREZMQUdTIDo9IC0tb2Zvcm1hdCBlbGYzMi1pMzg2CitlbmRpZgorICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAKK2lmZXEgKCQoVEFSR0VUX1NVQkFSQ0gpLHg4Nl82NCkKK0ZMQUdT
> ICArPSAtbTY0IC1tbm8tcmVkLXpvbmUgLWZwaWMgLWZuby1yZW9yZGVyLWJsb2NrcworRkxBR1Mg
> ICs9IC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKK2VuZGlmCisKK2RlZmF1bHQ6ICQo
> T0JKUykgCisJJChMRCkgJChMREZMQUdTKSAtciAtbyBvcHJvZmlsZS5vICQoT0JKUykKKwkKKyUu
> bzogJS5jICQoSERSUykgTWFrZWZpbGUKKwkkKENDKSAkKEZMQUdTKSAtYyAkPCAtbyAkQAorCmRp
> ZmYgLVBOYXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvI01ha2VmaWxlIyB4ZW4t
> Mi4wLjUtcHJvZi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvI01ha2VmaWxlIwotLS0geGVuLTIuMC41
> L3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS8jTWFrZWZpbGUjCTE5NjktMTItMzEgMTY6MDA6MDAuMDAw
> MDAwMDAwIC0wODAwCisrKyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvI01h
> a2VmaWxlIwkyMDA1LTA0LTA2IDA5OjUzOjUzLjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDM0
> IEBACisKK2luY2x1ZGUgJChCQVNFRElSKS9SdWxlcy5taworICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgIAorCisjIEZMQUdTIGlzIGlkZW50aWNhbCB0byBDRkxBR1MgZXhjZXB0
> IGZvciAtV2Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorRkxBR1MgIDo9IC1ub3N0
> ZGluYyAtZm5vLWJ1aWx0aW4gLWZuby1jb21tb24gLWZuby1zdHJpY3QtYWxpYXNpbmcKK0ZMQUdT
> ICArPSAtaXdpdGhwcmVmaXggaW5jbHVkZSAtV2FsbCAtcGlwZQorRkxBR1MgICs9IC1JJChCQVNF
> RElSKS9pbmNsdWRlIC1Xbm8tcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscworCitpZmVx
> ICgkKG9wdGltaXplKSx5KQorRkxBR1MgICs9IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlcgorZWxz
> ZQoreDg2XzMyL3VzZXJjb3B5Lm86IENGTEFHUyArPSAtTzEKK2VuZGlmCisgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgIAorIyBQcmV2ZW50IGZsb2F0aW5nLXBvaW50IHZhcmlhYmxlcyBm
> cm9tIGNyZWVwaW5nIGludG8gWGVuLgorRkxBR1MgICs9IC1tc29mdC1mbG9hdAorICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAKK2lmZXEgKCQoVEFSR0VUX1NVQkFSQ0gpLHg4Nl8zMikK
> K0ZMQUdTICArPSAtbTMyIC1tYXJjaD1pNjg2CitMREZMQUdTIDo9IC0tb2Zvcm1hdCBlbGYzMi1p
> Mzg2CitlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK2lmZXEgKCQoVEFS
> R0VUX1NVQkFSQ0gpLHg4Nl82NCkKK0ZMQUdTICArPSAtbTY0IC1tbm8tcmVkLXpvbmUgLWZwaWMg
> LWZuby1yZW9yZGVyLWJsb2NrcworRkxBR1MgICs9IC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10
> YWJsZXMKK2VuZGlmCisKK2RlZmF1bHQ6ICQoT0JKUykgCisJJChMRCkgJChMREZMQUdTKSAtciAt
> byBvcHJvZmlsZS5vICQoT0JKUykKKwkKKyUubzogJS5jICQoSERSUykgTWFrZWZpbGUKKwkkKEND
> KSAkKEZMQUdTKSAtYyAkPCAtbyAkQAorCmRpZmYgLVBOYXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94
> ODYvb3Byb2ZpbGUvbm1pX2ludC5jIHhlbi0yLjAuNS1wcm9mL3hlbi9hcmNoL3g4Ni9vcHJvZmls
> ZS9ubWlfaW50LmMKLS0tIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvbm1pX2ludC5j
> CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyB4ZW4tMi4wLjUtcHJvZi94
> ZW4vYXJjaC94ODYvb3Byb2ZpbGUvbm1pX2ludC5jCTIwMDUtMDQtMDcgMTY6NDA6MjAuMDAwMDAw
> MDAwIC0wNzAwCkBAIC0wLDAgKzEsNDMxIEBACisvKioKKyAqIEBmaWxlIG5taV9pbnQuYworICoK
> KyAqIEByZW1hcmsgQ29weXJpZ2h0IDIwMDIgT1Byb2ZpbGUgYXV0aG9ycworICogQHJlbWFyayBS
> ZWFkIHRoZSBmaWxlIENPUFlJTkcKKyAqCisgKiBAYXV0aG9yIEpvaG4gTGV2b24gPGxldm9uQG1v
> dmVtZW50YXJpYW4ub3JnPgorICoKKyAqIE1vZGlmaWVkIGJ5IEFyYXZpbmQgTWVub24gZm9yIFhl
> bgorICogVGhlc2UgbW9kaWZpY2F0aW9ucyBhcmU6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgSGV3
> bGV0dC1QYWNrYXJkIENvLgorICovCisKKyNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KKyNpbmNsdWRl
> IDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vaW5p
> dC5oPgorI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KKyNpbmNsdWRlIDxhc20vbm1pLmg+CisjaW5j
> bHVkZSA8YXNtL21zci5oPgorI2luY2x1ZGUgPGFzbS9hcGljLmg+CisgCisjaW5jbHVkZSAib3Bf
> Y291bnRlci5oIgorI2luY2x1ZGUgIm9wX3g4Nl9tb2RlbC5oIgorIAorc3RhdGljIHN0cnVjdCBv
> cF94ODZfbW9kZWxfc3BlYyBjb25zdCAqIG1vZGVsOworc3RhdGljIHN0cnVjdCBvcF9tc3JzIGNw
> dV9tc3JzW05SX0NQVVNdOworc3RhdGljIHVuc2lnbmVkIGxvbmcgc2F2ZWRfbHZ0cGNbTlJfQ1BV
> U107CisKKyNkZWZpbmUgVklSUV9CSVRNQVNLX1NJWkUJKE1BWF9PUFJPRl9ET01BSU5TLzMyICsg
> MSkKKworZXh0ZXJuIGludCBhY3RpdmVfZG9tYWluc1tNQVhfT1BST0ZfRE9NQUlOU107CitleHRl
> cm4gdW5zaWduZWQgaW50IGFkb21haW5zOworCitleHRlcm4gc3RydWN0IGRvbWFpbiAqIHByaW1h
> cnlfcHJvZmlsZXI7CitleHRlcm4gc3RydWN0IGRvbWFpbiAqIGFkb21haW5fcHRyc1tNQVhfT1BS
> T0ZfRE9NQUlOU107CitleHRlcm4gdW5zaWduZWQgbG9uZyB2aXJxX292Zl9wZW5kaW5nW1ZJUlFf
> QklUTUFTS19TSVpFXTsKKworZXh0ZXJuIGludCBpc19hY3RpdmUoc3RydWN0IGRvbWFpbiAqZCk7
> CitleHRlcm4gaW50IGFjdGl2ZV9pZChzdHJ1Y3QgZG9tYWluICpkKTsKK2V4dGVybiBpbnQgaXNf
> cGFzc2l2ZShzdHJ1Y3QgZG9tYWluICpkKTsKK2V4dGVybiBpbnQgaXNfcHJvZmlsZWQoc3RydWN0
> IGRvbWFpbiAqZCk7CisKKworaW50IG5taV9wcm9maWxpbmdfc3RhcnRlZCA9IDA7CisKK2ludCBh
> Y3RpdmVfdmlycV9jb3VudCA9IDA7CitpbnQgcGFzc2l2ZV92aXJxX2NvdW50ID0gMDsKK2ludCBv
> dGhlcl92aXJxX2NvdW50ID0gMDsKK2ludCBvdGhlcl9pZCA9IC0xOworaW50IHhlbl9jb3VudCA9
> IDA7CitpbnQgZG9tX2NvdW50ID0gMDsgCitpbnQgb3ZmID0gMDsKKworaW50IG5taV9jYWxsYmFj
> ayhzdHJ1Y3QgeGVuX3JlZ3MgKiByZWdzLCBpbnQgY3B1KQoreworCWludCB4ZW5fbW9kZSA9IDA7
> CisKKwlvdmYgPSBtb2RlbC0+Y2hlY2tfY3RycyhjcHUsICZjcHVfbXNyc1tjcHVdLCByZWdzKTsK
> Kwl4ZW5fbW9kZSA9IFJJTkdfMChyZWdzKTsKKwlpZiAob3ZmKSB7CisJCWlmICh4ZW5fbW9kZSkK
> KwkJCXhlbl9jb3VudCsrOworCQllbHNlCisJCQlkb21fY291bnQrKzsKKworCQlpZiAoaXNfYWN0
> aXZlKGN1cnJlbnQpKSB7CisJCS8qIFRoaXMgaXMgbGlnaHRseSBpbmNvcnJlY3QuIElmIHdlIGRv
> IG5vdCBkZWxpdmVyIAorCQkJT1ZGIHZpcnR1YWwgaW50ZXJydXB0cyBpbiBhIHN5bmNocm9ub3Vz
> IAorCQkJbWFubmVyLCBhIHByb2Nlc3Mgc3dpdGNoIG1heSBoYXBwZW4gaW4gdGhlIGRvbWFpbiAK
> KwkJCWJldHdlZW4gdGhlIHBvaW50IHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCBhbmQgCisJCQl0
> aGUgcG9pbnQgYXQgd2hpY2ggYSBWSVJRIHdhcyBkZWxpdmVyZWQuIEhvd2V2ZXIsIAorCQkJaXQg
> aXMgbm90IHNhZmUgdG8gY2FsbCBzZW5kX2d1ZXN0X3ZpcnEgZnJvbSB0aGlzIAorCQkJTk1JIGNv
> bnRleHQsIGl0IG1heSBsZWFkIHRvIGEgZGVhZGxvY2sgc2luY2UgTk1JcyBhcmUgCisJCQl1bm1h
> c2thYmxlLiBPbmUgb3B0aW1pemF0aW9uIHRoYXQgd2UgY2FuIGRvIGlzIAorCQkJdGhhdCBpZiB0
> aGUgc2FtcGxlIG9jY3VycyB3aGlsZSBkb21haW4gY29kZSBpcyAKKwkJCXJ1bm5uZywgd2Uga25v
> dyB0aGF0IGl0IGlzIHNhZmUgdG8gY2FsbCAKKwkJCXNlbmRfZ3Vlc3RfdmlycSwgc2luY2Ugd2Ug
> a25vdyBubyBYZW4gY29kZSAKKwkJCWlzIHJ1bm5pbmcgYXQgdGhhdCB0aW1lLgorCQkJSG93ZXZl
> ciwgdGhpcyBtYXkgZGlzdG9ydCB0aGUgc2FtcGxlIGRpc3RyaWJ1dGlvbiwKKwkJCWJlY2F1c2Ug
> d2UgbWF5IGxvc2UgbW9yZSBYZW4gbW9kZSBzYW1wbGVzLiovCisJCQlhY3RpdmVfdmlycV9jb3Vu
> dCsrOworCQkJaWYgKCF4ZW5fbW9kZSkgeworCQkJCXNlbmRfZ3Vlc3RfdmlycShjdXJyZW50LCBW
> SVJRX1BNQ19PVkYpOworCQkJCWNsZWFyX2JpdChhY3RpdmVfaWQoY3VycmVudCksICZ2aXJxX292
> Zl9wZW5kaW5nWzBdKTsKKwkJCX0gZWxzZSAKKwkJCQlzZXRfYml0KGFjdGl2ZV9pZChjdXJyZW50
> KSwgJnZpcnFfb3ZmX3BlbmRpbmdbMF0pOworCQkJcHJpbWFyeV9wcm9maWxlci0+c2hhcmVkX2lu
> Zm8tPmFjdGl2ZV9zYW1wbGVzKys7CisJCX0KKwkJZWxzZSBpZiAoaXNfcGFzc2l2ZShjdXJyZW50
> KSkgeworCQkJc2V0X2JpdChhY3RpdmVfaWQocHJpbWFyeV9wcm9maWxlciksICZ2aXJxX292Zl9w
> ZW5kaW5nWzBdKTsKKwkJCXBhc3NpdmVfdmlycV9jb3VudCsrOworCQkJcHJpbWFyeV9wcm9maWxl
> ci0+c2hhcmVkX2luZm8tPnBhc3NpdmVfc2FtcGxlcysrOworCQl9CisJCWVsc2UgeworCQkJb3Ro
> ZXJfdmlycV9jb3VudCsrOworCQkJb3RoZXJfaWQgPSBjdXJyZW50LT5pZDsKKwkJCXByaW1hcnlf
> cHJvZmlsZXItPnNoYXJlZF9pbmZvLT5vdGhlcl9zYW1wbGVzKys7CisJCX0KKwl9CisJcmV0dXJu
> IDE7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfbXNycyh2b2lkKQoreworCWludCBpOworCWZvciAo
> aSA9IDA7IGkgPCBOUl9DUFVTOyArK2kpIHsKKwkJeGZyZWUoY3B1X21zcnNbaV0uY291bnRlcnMp
> OworCQljcHVfbXNyc1tpXS5jb3VudGVycyA9IE5VTEw7CisJCXhmcmVlKGNwdV9tc3JzW2ldLmNv
> bnRyb2xzKTsKKwkJY3B1X21zcnNbaV0uY29udHJvbHMgPSBOVUxMOworCX0KK30KKyAKK3N0YXRp
> YyBpbnQgYWxsb2NhdGVfbXNycyh2b2lkKQoreworCWludCBzdWNjZXNzID0gMTsKKwlzaXplX3Qg
> Y29udHJvbHNfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgb3BfbXNyKSAqIG1vZGVsLT5udW1fY29udHJv
> bHM7CisJc2l6ZV90IGNvdW50ZXJzX3NpemUgPSBzaXplb2Yoc3RydWN0IG9wX21zcikgKiBtb2Rl
> bC0+bnVtX2NvdW50ZXJzOworCisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IE5SX0NQVVM7ICsr
> aSkgeworCQkvL2lmICghY3B1X29ubGluZShpKSkKKwkJaWYgKCF0ZXN0X2JpdChpLCAmY3B1X29u
> bGluZV9tYXApKQorCQkJY29udGludWU7CisKKwkJY3B1X21zcnNbaV0uY291bnRlcnMgPSB4bWFs
> bG9jKGNvdW50ZXJzX3NpemUpOworCQlpZiAoIWNwdV9tc3JzW2ldLmNvdW50ZXJzKSB7CisJCQlz
> dWNjZXNzID0gMDsKKwkJCWJyZWFrOworCQl9CisJCWNwdV9tc3JzW2ldLmNvbnRyb2xzID0geG1h
> bGxvYyhjb250cm9sc19zaXplKTsKKwkJaWYgKCFjcHVfbXNyc1tpXS5jb250cm9scykgeworCQkJ
> c3VjY2VzcyA9IDA7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoIXN1Y2Nlc3MpCisJCWZyZWVf
> bXNycygpOworCisJcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK3N0YXRpYyB2b2lkIG5taV9jcHVfc2F2
> ZV9yZWdpc3RlcnMoc3RydWN0IG9wX21zcnMgKiBtc3JzKQoreworCXVuc2lnbmVkIGludCBjb25z
> dCBucl9jdHJzID0gbW9kZWwtPm51bV9jb3VudGVyczsKKwl1bnNpZ25lZCBpbnQgY29uc3QgbnJf
> Y3RybHMgPSBtb2RlbC0+bnVtX2NvbnRyb2xzOyAKKwlzdHJ1Y3Qgb3BfbXNyICogY291bnRlcnMg
> PSBtc3JzLT5jb3VudGVyczsKKwlzdHJ1Y3Qgb3BfbXNyICogY29udHJvbHMgPSBtc3JzLT5jb250
> cm9sczsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBucl9jdHJzOyArK2kp
> IHsKKwkJcmRtc3IoY291bnRlcnNbaV0uYWRkciwKKwkJCWNvdW50ZXJzW2ldLnNhdmVkLmxvdywK
> KwkJCWNvdW50ZXJzW2ldLnNhdmVkLmhpZ2gpOworCX0KKyAKKwlmb3IgKGkgPSAwOyBpIDwgbnJf
> Y3RybHM7ICsraSkgeworCQlyZG1zcihjb250cm9sc1tpXS5hZGRyLAorCQkJY29udHJvbHNbaV0u
> c2F2ZWQubG93LAorCQkJY29udHJvbHNbaV0uc2F2ZWQuaGlnaCk7CisJfQorfQorCitzdGF0aWMg
> dm9pZCBubWlfc2F2ZV9yZWdpc3RlcnModm9pZCAqIGR1bW15KQoreworCWludCBjcHUgPSBzbXBf
> cHJvY2Vzc29yX2lkKCk7CisJc3RydWN0IG9wX21zcnMgKiBtc3JzID0gJmNwdV9tc3JzW2NwdV07
> CisJbW9kZWwtPmZpbGxfaW5fYWRkcmVzc2VzKG1zcnMpOworCW5taV9jcHVfc2F2ZV9yZWdpc3Rl
> cnMobXNycyk7Cit9CisKK2ludCBubWlfcmVzZXJ2ZV9jb3VudGVycyh2b2lkKQoreworCWlmICgh
> YWxsb2NhdGVfbXNycygpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8qIFdlIHdhbGsgYSB0aGlu
> IGxpbmUgYmV0d2VlbiBsYXcgYW5kIHJhcGUgaGVyZS4KKwkgKiBXZSBuZWVkIHRvIGJlIGNhcmVm
> dWwgdG8gaW5zdGFsbCBvdXIgTk1JIGhhbmRsZXIKKwkgKiB3aXRob3V0IGFjdHVhbGx5IHRyaWdn
> ZXJpbmcgYW55IE5NSXMgYXMgdGhpcyB3aWxsCisJICogYnJlYWsgdGhlIGNvcmUgY29kZSBob3Jy
> aWZpY2FsbHkuCisJICovCisJLyogRG9uJ3Qgd2UgbmVlZCB0byBkbyB0aGlzIG9uIGFsbCBDUFVz
> PyovCisJaWYgKHJlc2VydmVfbGFwaWNfbm1pKCkgPCAwKSB7CisJCWZyZWVfbXNycygpOworCQly
> ZXR1cm4gLUVCVVNZOworCX0KKwkvKiBXZSBuZWVkIHRvIHNlcmlhbGl6ZSBzYXZlIGFuZCBzZXR1
> cCBmb3IgSFQgYmVjYXVzZSB0aGUgc3Vic2V0CisJICogb2YgbXNycyBhcmUgZGlzdGluY3QgZm9y
> IHNhdmUgYW5kIHNldHVwIG9wZXJhdGlvbnMKKwkgKi8KKwlvbl9lYWNoX2NwdShubWlfc2F2ZV9y
> ZWdpc3RlcnMsIE5VTEwsIDAsIDEpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBubWlf
> Y3B1X3NldHVwKHZvaWQgKiBkdW1teSkKK3sKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgp
> OworCXN0cnVjdCBvcF9tc3JzICogbXNycyA9ICZjcHVfbXNyc1tjcHVdOworCW1vZGVsLT5zZXR1
> cF9jdHJzKG1zcnMpOworfQorCitpbnQgbm1pX3NldHVwX2V2ZW50cyh2b2lkKQoreworCW9uX2Vh
> Y2hfY3B1KG5taV9jcHVfc2V0dXAsIE5VTEwsIDAsIDEpOworCXJldHVybiAwOworfQorCitpbnQg
> bm1pX2VuYWJsZV92aXJxKCkKK3sKKwlzZXRfbm1pX2NhbGxiYWNrKG5taV9jYWxsYmFjayk7CisJ
> cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG5taV9jcHVfc3RhcnQodm9pZCAqIGR1bW15KQor
> eworCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisJc3RydWN0IG9wX21zcnMgY29uc3Qg
> KiBtc3JzID0gJmNwdV9tc3JzW2NwdV07CisJc2F2ZWRfbHZ0cGNbY3B1XSA9IGFwaWNfcmVhZChB
> UElDX0xWVFBDKTsKKwlhcGljX3dyaXRlKEFQSUNfTFZUUEMsIEFQSUNfRE1fTk1JKTsKKwltb2Rl
> bC0+c3RhcnQobXNycyk7Cit9CisKK2ludCBubWlfc3RhcnQodm9pZCkKK3sKKwlvbl9lYWNoX2Nw
> dShubWlfY3B1X3N0YXJ0LCBOVUxMLCAwLCAxKTsKKwlubWlfcHJvZmlsaW5nX3N0YXJ0ZWQgPSAx
> OworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBubWlfY3B1X3N0b3Aodm9pZCAqIGR1bW15
> KQoreworCXVuc2lnbmVkIGludCB2OworCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisJ
> c3RydWN0IG9wX21zcnMgY29uc3QgKiBtc3JzID0gJmNwdV9tc3JzW2NwdV07CisJbW9kZWwtPnN0
> b3AobXNycyk7CisKKwkvKiByZXN0b3JpbmcgQVBJQ19MVlRQQyBjYW4gdHJpZ2dlciBhbiBhcGlj
> IGVycm9yIGJlY2F1c2UgdGhlIGRlbGl2ZXJ5CisJICogbW9kZSBhbmQgdmVjdG9yIG5yIGNvbWJp
> bmF0aW9uIGNhbiBiZSBpbGxlZ2FsLiBUaGF0J3MgYnkgZGVzaWduOiBvbgorCSAqIHBvd2VyIG9u
> IGFwaWMgbHZ0IGNvbnRhaW4gYSB6ZXJvIHZlY3RvciBuciB3aGljaCBhcmUgbGVnYWwgb25seSBm
> b3IKKwkgKiBOTUkgZGVsaXZlcnkgbW9kZS4gU28gaW5oaWJpdCBhcGljIGVyciBiZWZvcmUgcmVz
> dG9yaW5nIGx2dHBjCisJICovCisJaWYgKCEoYXBpY19yZWFkKEFQSUNfTFZUUEMpICYgQVBJQ19E
> TV9OTUkpCisJCXx8IChhcGljX3JlYWQoQVBJQ19MVlRQQykgJiBBUElDX0xWVF9NQVNLRUQpKSB7
> CisJCXByaW50aygibm1pX3N0b3A6IEFQSUMgbm90IGdvb2QgJXBcbiIsIGFwaWNfcmVhZChBUElD
> X0xWVFBDKSk7CisJCW1kZWxheSg1MDAwKTsKKwl9CisJdiA9IGFwaWNfcmVhZChBUElDX0xWVEVS
> Uik7CisJYXBpY193cml0ZShBUElDX0xWVEVSUiwgdiB8IEFQSUNfTFZUX01BU0tFRCk7CisJYXBp
> Y193cml0ZShBUElDX0xWVFBDLCBzYXZlZF9sdnRwY1tjcHVdKTsKKwlhcGljX3dyaXRlKEFQSUNf
> TFZURVJSLCB2KTsKK30KKyAKK3ZvaWQgbm1pX3N0b3Aodm9pZCkKK3sKKwlubWlfcHJvZmlsaW5n
> X3N0YXJ0ZWQgPSAwOworCW9uX2VhY2hfY3B1KG5taV9jcHVfc3RvcCwgTlVMTCwgMCwgMSk7CisJ
> YWN0aXZlX3ZpcnFfY291bnQgPSAwOworCXBhc3NpdmVfdmlycV9jb3VudCA9IDA7CisJb3RoZXJf
> dmlycV9jb3VudCA9IDA7CisJeGVuX2NvdW50ID0gMDsKKwlkb21fY291bnQgPSAwOworfQorCitl
> eHRlcm4gdW5zaWduZWQgaW50IHJlYWRfY3RyKHN0cnVjdCBvcF9tc3JzIGNvbnN0ICogY29uc3Qg
> bXNycywgaW50IGN0cik7CisKK3ZvaWQgbm1pX3Nhbml0eV9jaGVjayhzdHJ1Y3QgeGVuX3JlZ3Mg
> KnJlZ3MsIGludCBjcHUpCit7CisJaW50IGk7CisJaW50IG1hc2tlZCA9IDA7CisKKwkvKiBXZSBt
> YXkgaGF2ZSBtaXNzZWQgc29tZSBOTUkgaW50ZXJydXB0cyBpZiB3ZSB3ZXJlIGFscmVhZHkgCisJ
> CWluIGFuIE5NSSBjb250ZXh0IGF0IHRoYXQgdGltZS4gSWYgdGhpcyBoYXBwZW5zLCB0aGVuIAor
> CQl0aGUgY291bnRlcnMgYXJlIG5vdCByZXNldCBhbmQgaW4gdGhlIGNhc2Ugb2YgUDQsIHRoZSAK
> KwkJQVBJQyBMVlQgZGlzYWJsZSBtYXNrIGlzIHNldC4gSW4gYm90aCBjYXNlcyB3ZSBlbmQgdXAg
> CisJCWxvc2luZyBzYW1wbGVzLiBPbiBQNCwgdGhpcyBjb25kaXRpb24gY2FuIGJlIGRldGVjdGVk
> IAorCQlieSBjaGVja2luZyB0aGUgQVBJQyBMVlQgbWFzay4gQnV0IGluIFA2LCB3ZSBuZWVkIHRv
> IAorCQlleGFtaW5lIHRoZSBjb3VudGVycyBmb3Igb3ZlcmZsb3cuIFNvLCBldmVyeSB0aW1lciAK
> KwkJaW50ZXJydXB0LCB3ZSBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgaXMgT0sgKi8KKworCWlmIChh
> cGljX3JlYWQoQVBJQ19MVlRQQykgJiBBUElDX0xWVF9NQVNLRUQpCisJCW1hc2tlZCA9IDE7CisK
> KwlubWlfY2FsbGJhY2socmVncywgY3B1KTsKKworCWlmIChvdmYgJiYgbWFza2VkKSB7CisJCWlm
> IChpc19hY3RpdmUoY3VycmVudCkpCisJCQljdXJyZW50LT5zaGFyZWRfaW5mby0+bm1pX3Jlc3Rh
> cnRzKys7CisJCWVsc2UgaWYgKGlzX3Bhc3NpdmUoY3VycmVudCkpCisJCQlwcmltYXJ5X3Byb2Zp
> bGVyLT5zaGFyZWRfaW5mby0+bm1pX3Jlc3RhcnRzKys7CisJfQorCisJLyppZiAoamlmZmllcyAl
> MTAwMCA9PSAwKSB7CQorCQlwcmludGsoImNwdSAlZDogc2FtcGxlIGNvdW50ICVkICVkICVkIGF0
> ICV1XG4iLCBjcHUsIGFjdGl2ZV92aXJxX2NvdW50LCBwYXNzaXZlX3ZpcnFfY291bnQsIG90aGVy
> X3ZpcnFfY291bnQsIGppZmZpZXMpOworCQlwcmludGsoIm90aGVyIHRhc2sgaWQgJWRcbiIsIG90
> aGVyX2lkKTsKKwkJcHJpbnRrKCIlZCBpbiB4ZW4sICVkIGluIGRvbWFpblxuIiwgeGVuX2NvdW50
> LCBkb21fY291bnQpOworCQlwcmludGsoImNvdW50ZXJzICVwICVwXG4iLCByZWFkX2N0cigmY3B1
> X21zcnNbY3B1XSwgMCksIHJlYWRfY3RyKCZjcHVfbXNyc1tjcHVdLCAxKSk7CisJfSovCisJCisK
> Kwlmb3IgKGkgPSAwOyBpIDwgYWRvbWFpbnM7IGkrKykKKwkJaWYgKHRlc3RfYW5kX2NsZWFyX2Jp
> dChpLCAmdmlycV9vdmZfcGVuZGluZ1swXSkpIHsKKwkJCXNlbmRfZ3Vlc3RfdmlycShhZG9tYWlu
> X3B0cnNbaV0sIFZJUlFfUE1DX09WRik7CisJCX0KK30KKwordm9pZCBubWlfZGlzYWJsZV92aXJx
> KHZvaWQpCit7CisJdW5zZXRfbm1pX2NhbGxiYWNrKCk7Cit9IAorCitzdGF0aWMgdm9pZCBubWlf
> cmVzdG9yZV9yZWdpc3RlcnMoc3RydWN0IG9wX21zcnMgKiBtc3JzKQoreworCXVuc2lnbmVkIGlu
> dCBjb25zdCBucl9jdHJzID0gbW9kZWwtPm51bV9jb3VudGVyczsKKwl1bnNpZ25lZCBpbnQgY29u
> c3QgbnJfY3RybHMgPSBtb2RlbC0+bnVtX2NvbnRyb2xzOyAKKwlzdHJ1Y3Qgb3BfbXNyICogY291
> bnRlcnMgPSBtc3JzLT5jb3VudGVyczsKKwlzdHJ1Y3Qgb3BfbXNyICogY29udHJvbHMgPSBtc3Jz
> LT5jb250cm9sczsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBucl9jdHJs
> czsgKytpKSB7CisJCXdybXNyKGNvbnRyb2xzW2ldLmFkZHIsCisJCQljb250cm9sc1tpXS5zYXZl
> ZC5sb3csCisJCQljb250cm9sc1tpXS5zYXZlZC5oaWdoKTsKKwl9CisgCisJZm9yIChpID0gMDsg
> aSA8IG5yX2N0cnM7ICsraSkgeworCQl3cm1zcihjb3VudGVyc1tpXS5hZGRyLAorCQkJY291bnRl
> cnNbaV0uc2F2ZWQubG93LAorCQkJY291bnRlcnNbaV0uc2F2ZWQuaGlnaCk7CisJfQorfQorIAor
> c3RhdGljIHZvaWQgbm1pX2NwdV9zaHV0ZG93bih2b2lkICogZHVtbXkpCit7CisJaW50IGNwdSA9
> IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwlzdHJ1Y3Qgb3BfbXNycyAqIG1zcnMgPSAmY3B1X21zcnNb
> Y3B1XTsKKwlubWlfcmVzdG9yZV9yZWdpc3RlcnMobXNycyk7Cit9CisgCit2b2lkIG5taV9yZWxl
> YXNlX2NvdW50ZXJzKHZvaWQpCit7CisJb25fZWFjaF9jcHUobm1pX2NwdV9zaHV0ZG93biwgTlVM
> TCwgMCwgMSk7CisJcmVsZWFzZV9sYXBpY19ubWkoKTsKKwlmcmVlX21zcnMoKTsKK30KKworc3Ry
> dWN0IG9wX2NvdW50ZXJfY29uZmlnIGNvdW50ZXJfY29uZmlnW09QX01BWF9DT1VOVEVSXTsKKwor
> c3RhdGljIGludCBfX2luaXQgcDRfaW5pdCh2b2lkKQoreworCV9fdTggY3B1X21vZGVsID0gY3Vy
> cmVudF9jcHVfZGF0YS54ODZfbW9kZWw7CisKKwlpZiAoY3B1X21vZGVsID4gMykKKwkJcmV0dXJu
> IDA7CisKKyNpZm5kZWYgQ09ORklHX1NNUAorCW1vZGVsID0gJm9wX3A0X3NwZWM7CisJcmV0dXJu
> IDE7CisjZWxzZQorCS8vc3dpdGNoIChzbXBfbnVtX3NpYmxpbmdzKSB7CisJaWYgKGNwdV9oYXNf
> aHQpIAorCXsKKwkgIG1vZGVsID0gJm9wX3A0X2h0Ml9zcGVjOworCSAgcmV0dXJuIDE7CisJfQor
> CWVsc2UKKwl7CisJICBtb2RlbCA9ICZvcF9wNF9zcGVjOworCSAgcmV0dXJuIDE7CisJfQorI2Vu
> ZGlmCisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBfX2luaXQgcHByb19pbml0KHZvaWQp
> Cit7CisJX191OCBjcHVfbW9kZWwgPSBjdXJyZW50X2NwdV9kYXRhLng4Nl9tb2RlbDsKKworCWlm
> IChjcHVfbW9kZWwgPiAweGQpCisJCXJldHVybiAwOworCisJbW9kZWwgPSAmb3BfcHByb19zcGVj
> OworCXJldHVybiAxOworfQorCitpbnQgbm1pX2luaXQoaW50ICpudW1fZXZlbnRzLCBpbnQgKmlz
> X3ByaW1hcnkpCit7CisJX191OCB2ZW5kb3IgPSBjdXJyZW50X2NwdV9kYXRhLng4Nl92ZW5kb3I7
> CisJX191OCBmYW1pbHkgPSBjdXJyZW50X2NwdV9kYXRhLng4NjsKKwlpbnQgcHJpbSA9IDA7Cisg
> CisJaWYgKCFjcHVfaGFzX2FwaWMpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKHByaW1hcnlf
> cHJvZmlsZXIgPT0gTlVMTCkgeworCQlwcmltYXJ5X3Byb2ZpbGVyID0gY3VycmVudDsKKwkJcHJp
> bSA9IDE7CisJfQorCisJaWYgKHByaW1hcnlfcHJvZmlsZXIgIT0gY3VycmVudCkKKwkJZ290byBv
> dXQ7CisKKwlzd2l0Y2ggKHZlbmRvcikgeworCQljYXNlIFg4Nl9WRU5ET1JfSU5URUw6CisJCQlz
> d2l0Y2ggKGZhbWlseSkgeworCQkJCS8qIFBlbnRpdW0gSVYgKi8KKwkJCQljYXNlIDB4ZjoKKwkJ
> CQkJaWYgKCFwNF9pbml0KCkpCisJCQkJCQlyZXR1cm4gLUVOT0RFVjsKKwkJCQkJYnJlYWs7CisJ
> CQkJLyogQSBQNi1jbGFzcyBwcm9jZXNzb3IgKi8KKwkJCQljYXNlIDY6CisJCQkJCWlmICghcHBy
> b19pbml0KCkpCisJCQkJCQlyZXR1cm4gLUVOT0RFVjsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVs
> dDoKKwkJCQkJcmV0dXJuIC1FTk9ERVY7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ
> CXJldHVybiAtRU5PREVWOworCX0KK291dDoKKwlpZiAoY29weV90b191c2VyKCh2b2lkICopbnVt
> X2V2ZW50cywgKHZvaWQgKikmbW9kZWwtPm51bV9jb3VudGVycywgc2l6ZW9mKGludCkpKQorCQly
> ZXR1cm4gLUVGQVVMVDsKKwlpZiAoY29weV90b191c2VyKCh2b2lkICopaXNfcHJpbWFyeSwgKHZv
> aWQgKikmcHJpbSwgc2l6ZW9mKGludCkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiAw
> OworfQorCmRpZmYgLVBOYXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfY291
> bnRlci5oIHhlbi0yLjAuNS1wcm9mL3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF9jb3VudGVyLmgK
> LS0tIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfY291bnRlci5oCTE5NjktMTIt
> MzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJjaC94
> ODYvb3Byb2ZpbGUvb3BfY291bnRlci5oCTIwMDUtMDQtMDYgMDk6Mjc6MTMuMDAwMDAwMDAwIC0w
> NzAwCkBAIC0wLDAgKzEsMzMgQEAKKy8qKgorICogQGZpbGUgb3BfY291bnRlci5oCisgKgorICog
> QHJlbWFyayBDb3B5cmlnaHQgMjAwMiBPUHJvZmlsZSBhdXRob3JzCisgKiBAcmVtYXJrIFJlYWQg
> dGhlIGZpbGUgQ09QWUlORworICoKKyAqIEBhdXRob3IgSm9obiBMZXZvbgorICoKKyAqIE1vZGlm
> aWVkIGJ5IEFyYXZpbmQgTWVub24gZm9yIFhlbgorICogVGhlc2UgbW9kaWZpY2F0aW9ucyBhcmU6
> CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgSGV3bGV0dC1QYWNrYXJkIENvLgorICovCisgCisjaWZu
> ZGVmIE9QX0NPVU5URVJfSAorI2RlZmluZSBPUF9DT1VOVEVSX0gKKyAKKyNkZWZpbmUgT1BfTUFY
> X0NPVU5URVIgOAorIAorLyogUGVyLXBlcmZjdHIgY29uZmlndXJhdGlvbiBhcyBzZXQgdmlhCisg
> KiBvcHJvZmlsZWZzLgorICovCitzdHJ1Y3Qgb3BfY291bnRlcl9jb25maWcgeworICAgICAgICB1
> bnNpZ25lZCBsb25nIGNvdW50OworICAgICAgICB1bnNpZ25lZCBsb25nIGVuYWJsZWQ7CisgICAg
> ICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQ7CisgICAgICAgIHVuc2lnbmVkIGxvbmcga2VybmVsOwor
> ICAgICAgICB1bnNpZ25lZCBsb25nIHVzZXI7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgdW5pdF9t
> YXNrOworfTsKKworZXh0ZXJuIHN0cnVjdCBvcF9jb3VudGVyX2NvbmZpZyBjb3VudGVyX2NvbmZp
> Z1tdOworCisjZW5kaWYgLyogT1BfQ09VTlRFUl9IICovCmRpZmYgLVBOYXVyIHhlbi0yLjAuNS94
> ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcDQuYyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJj
> aC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcDQuYwotLS0geGVuLTIuMC41L3hlbi9hcmNoL3g4Ni9v
> cHJvZmlsZS9vcF9tb2RlbF9wNC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAw
> CisrKyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcDQuYwky
> MDA1LTA0LTA3IDA5OjA4OjIwLjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDc0NCBAQAorLyoq
> CisgKiBAZmlsZSBvcF9tb2RlbF9wNC5jCisgKiBQNCBtb2RlbC1zcGVjaWZpYyBNU1Igb3BlcmF0
> aW9ucworICoKKyAqIEByZW1hcmsgQ29weXJpZ2h0IDIwMDIgT1Byb2ZpbGUgYXV0aG9ycworICog
> QHJlbWFyayBSZWFkIHRoZSBmaWxlIENPUFlJTkcKKyAqCisgKiBAYXV0aG9yIEdyYXlkb24gSG9h
> cmUKKyAqCisgKiBNb2RpZmllZCBieSBBcmF2aW5kIE1lbm9uIGZvciBYZW4KKyAqIFRoZXNlIG1v
> ZGlmaWNhdGlvbnMgYXJlOgorICogQ29weXJpZ2h0IChDKSAyMDA1IEhld2xldHQtUGFja2FyZCBD
> by4KKyAqLworCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL21zci5oPgor
> I2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9hcGljLmg+CisjaW5jbHVkZSA8YXNt
> L3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorCisjaW5jbHVkZSAib3BfeDg2
> X21vZGVsLmgiCisjaW5jbHVkZSAib3BfY291bnRlci5oIgorCisjZGVmaW5lIE5VTV9FVkVOVFMg
> MzkKKworI2RlZmluZSBOVU1fQ09VTlRFUlNfTk9OX0hUIDgKKyNkZWZpbmUgTlVNX0VTQ1JTX05P
> Tl9IVCA0NQorI2RlZmluZSBOVU1fQ0NDUlNfTk9OX0hUIDE4CisjZGVmaW5lIE5VTV9DT05UUk9M
> U19OT05fSFQgKE5VTV9FU0NSU19OT05fSFQgKyBOVU1fQ0NDUlNfTk9OX0hUKQorCisjZGVmaW5l
> IE5VTV9DT1VOVEVSU19IVDIgNAorI2RlZmluZSBOVU1fRVNDUlNfSFQyIDIzCisjZGVmaW5lIE5V
> TV9DQ0NSU19IVDIgOQorI2RlZmluZSBOVU1fQ09OVFJPTFNfSFQyIChOVU1fRVNDUlNfSFQyICsg
> TlVNX0NDQ1JTX0hUMikKKworc3RhdGljIHVuc2lnbmVkIGludCBudW1fY291bnRlcnMgPSBOVU1f
> Q09VTlRFUlNfTk9OX0hUOworCisKKy8qIHRoaXMgaGFzIHRvIGJlIGNoZWNrZWQgZHluYW1pY2Fs
> bHkgc2luY2UgdGhlCisgICBoeXBlci10aHJlYWRlZG5lc3Mgb2YgYSBjaGlwIGlzIGRpc2NvdmVy
> ZWQgYXQKKyAgIGtlcm5lbCBib290LXRpbWUuICovCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBf
> bnVtX2NvdW50ZXJzKHZvaWQpCit7CisjaWZkZWYgQ09ORklHX1NNUAorCWlmIChjcHVfaGFzX2h0
> KQorCQludW1fY291bnRlcnMgPSBOVU1fQ09VTlRFUlNfSFQyOworI2VuZGlmCit9CisKK3N0YXRp
> YyBpbnQgaW5saW5lIGFkZHJfaW5jcmVtZW50KHZvaWQpCit7CisjaWZkZWYgQ09ORklHX1NNUAor
> CXJldHVybiBjcHVfaGFzX2h0ID8gMiA6IDE7CisjZWxzZQorCXJldHVybiAxOworI2VuZGlmCit9
> CisKKworLyogdGFibGVzIHRvIHNpbXVsYXRlIHNpbXBsaWZpZWQgaGFyZHdhcmUgdmlldyBvZiBw
> NCByZWdpc3RlcnMgKi8KK3N0cnVjdCBwNF9jb3VudGVyX2JpbmRpbmcgeworCWludCB2aXJ0X2Nv
> dW50ZXI7CisJaW50IGNvdW50ZXJfYWRkcmVzczsKKwlpbnQgY2Njcl9hZGRyZXNzOworfTsKKwor
> c3RydWN0IHA0X2V2ZW50X2JpbmRpbmcgeworCWludCBlc2NyX3NlbGVjdDsgIC8qIHZhbHVlIHRv
> IHB1dCBpbiBDQ0NSICovCisJaW50IGV2ZW50X3NlbGVjdDsgLyogdmFsdWUgdG8gcHV0IGluIEVT
> Q1IgKi8KKwlzdHJ1Y3QgeworCQlpbnQgdmlydF9jb3VudGVyOyAvKiBmb3IgdGhpcyBjb3VudGVy
> Li4uICovCisJCWludCBlc2NyX2FkZHJlc3M7IC8qIHVzZSB0aGlzIEVTQ1IgICAgICAgKi8KKwl9
> IGJpbmRpbmdzWzJdOworfTsKKworLyogbmI6IHRoZXNlIENUUl8qIGRlZmluZXMgYXJlIGEgZHVw
> bGljYXRlIG9mIGRlZmluZXMgaW4KKyAgIGV2ZW50L2kzODYucDQqZXZlbnRzLiAqLworCisKKyNk
> ZWZpbmUgQ1RSX0JQVV8wICAgICAgKDEgPDwgMCkKKyNkZWZpbmUgQ1RSX01TXzAgICAgICAgKDEg
> PDwgMSkKKyNkZWZpbmUgQ1RSX0ZMQU1FXzAgICAgKDEgPDwgMikKKyNkZWZpbmUgQ1RSX0lRXzQg
> ICAgICAgKDEgPDwgMykKKyNkZWZpbmUgQ1RSX0JQVV8yICAgICAgKDEgPDwgNCkKKyNkZWZpbmUg
> Q1RSX01TXzIgICAgICAgKDEgPDwgNSkKKyNkZWZpbmUgQ1RSX0ZMQU1FXzIgICAgKDEgPDwgNikK
> KyNkZWZpbmUgQ1RSX0lRXzUgICAgICAgKDEgPDwgNykKKworc3RhdGljIHN0cnVjdCBwNF9jb3Vu
> dGVyX2JpbmRpbmcgcDRfY291bnRlcnMgW05VTV9DT1VOVEVSU19OT05fSFRdID0geworCXsgQ1RS
> X0JQVV8wLCAgIE1TUl9QNF9CUFVfUEVSRkNUUjAsICAgTVNSX1A0X0JQVV9DQ0NSMCB9LAorCXsg
> Q1RSX01TXzAsICAgIE1TUl9QNF9NU19QRVJGQ1RSMCwgICAgTVNSX1A0X01TX0NDQ1IwIH0sCisJ
> eyBDVFJfRkxBTUVfMCwgTVNSX1A0X0ZMQU1FX1BFUkZDVFIwLCBNU1JfUDRfRkxBTUVfQ0NDUjAg
> fSwKKwl7IENUUl9JUV80LCAgICBNU1JfUDRfSVFfUEVSRkNUUjQsICAgIE1TUl9QNF9JUV9DQ0NS
> NCB9LAorCXsgQ1RSX0JQVV8yLCAgIE1TUl9QNF9CUFVfUEVSRkNUUjIsICAgTVNSX1A0X0JQVV9D
> Q0NSMiB9LAorCXsgQ1RSX01TXzIsICAgIE1TUl9QNF9NU19QRVJGQ1RSMiwgICAgTVNSX1A0X01T
> X0NDQ1IyIH0sCisJeyBDVFJfRkxBTUVfMiwgTVNSX1A0X0ZMQU1FX1BFUkZDVFIyLCBNU1JfUDRf
> RkxBTUVfQ0NDUjIgfSwKKwl7IENUUl9JUV81LCAgICBNU1JfUDRfSVFfUEVSRkNUUjUsICAgIE1T
> Ul9QNF9JUV9DQ0NSNSB9Cit9OworCisjZGVmaW5lIE5VTV9VTlVTRURfQ0NDUlMJTlVNX0NDQ1JT
> X05PTl9IVCAtIE5VTV9DT1VOVEVSU19OT05fSFQKKworLyogQWxsIGNjY3Igd2UgZG9uJ3QgdXNl
> LiAqLworc3RhdGljIGludCBwNF91bnVzZWRfY2NjcltOVU1fVU5VU0VEX0NDQ1JTXSA9IHsKKwlN
> U1JfUDRfQlBVX0NDQ1IxLAlNU1JfUDRfQlBVX0NDQ1IzLAorCU1TUl9QNF9NU19DQ0NSMSwJTVNS
> X1A0X01TX0NDQ1IzLAorCU1TUl9QNF9GTEFNRV9DQ0NSMSwJTVNSX1A0X0ZMQU1FX0NDQ1IzLAor
> CU1TUl9QNF9JUV9DQ0NSMCwJTVNSX1A0X0lRX0NDQ1IxLAorCU1TUl9QNF9JUV9DQ0NSMiwJTVNS
> X1A0X0lRX0NDQ1IzCit9OworCisvKiBwNCBldmVudCBjb2RlcyBpbiBsaWJvcC9vcF9ldmVudC5o
> IGFyZSBpbmRpY2VzIGludG8gdGhpcyB0YWJsZS4gKi8KKworc3RhdGljIHN0cnVjdCBwNF9ldmVu
> dF9iaW5kaW5nIHA0X2V2ZW50c1tOVU1fRVZFTlRTXSA9IHsKKwkKKwl7IC8qIEJSQU5DSF9SRVRJ
> UkVEICovCisJCTB4MDUsIDB4MDYsIAorCQl7IHtDVFJfSVFfNCwgTVNSX1A0X0NSVV9FU0NSMn0s
> CisJCSAge0NUUl9JUV81LCBNU1JfUDRfQ1JVX0VTQ1IzfSB9CisJfSwKKwkKKwl7IC8qIE1JU1BS
> RURfQlJBTkNIX1JFVElSRUQgKi8KKwkJMHgwNCwgMHgwMywgCisJCXsgeyBDVFJfSVFfNCwgTVNS
> X1A0X0NSVV9FU0NSMH0sCisJCSAgeyBDVFJfSVFfNSwgTVNSX1A0X0NSVV9FU0NSMX0gfQorCX0s
> CisJCisJeyAvKiBUQ19ERUxJVkVSX01PREUgKi8KKwkJMHgwMSwgMHgwMSwKKwkJeyB7IENUUl9N
> U18wLCBNU1JfUDRfVENfRVNDUjB9LCAgCisJCSAgeyBDVFJfTVNfMiwgTVNSX1A0X1RDX0VTQ1Ix
> fSB9CisJfSwKKwkKKwl7IC8qIEJQVV9GRVRDSF9SRVFVRVNUICovCisJCTB4MDAsIDB4MDMsIAor
> CQl7IHsgQ1RSX0JQVV8wLCBNU1JfUDRfQlBVX0VTQ1IwfSwKKwkJICB7IENUUl9CUFVfMiwgTVNS
> X1A0X0JQVV9FU0NSMX0gfQorCX0sCisKKwl7IC8qIElUTEJfUkVGRVJFTkNFICovCisJCTB4MDMs
> IDB4MTgsCisJCXsgeyBDVFJfQlBVXzAsIE1TUl9QNF9JVExCX0VTQ1IwfSwKKwkJICB7IENUUl9C
> UFVfMiwgTVNSX1A0X0lUTEJfRVNDUjF9IH0KKwl9LAorCisJeyAvKiBNRU1PUllfQ0FOQ0VMICov
> CisJCTB4MDUsIDB4MDIsCisJCXsgeyBDVFJfRkxBTUVfMCwgTVNSX1A0X0RBQ19FU0NSMH0sCisJ
> CSAgeyBDVFJfRkxBTUVfMiwgTVNSX1A0X0RBQ19FU0NSMX0gfQorCX0sCisKKwl7IC8qIE1FTU9S
> WV9DT01QTEVURSAqLworCQkweDAyLCAweDA4LAorCQl7IHsgQ1RSX0ZMQU1FXzAsIE1TUl9QNF9T
> QUFUX0VTQ1IwfSwKKwkJICB7IENUUl9GTEFNRV8yLCBNU1JfUDRfU0FBVF9FU0NSMX0gfQorCX0s
> CisKKwl7IC8qIExPQURfUE9SVF9SRVBMQVkgKi8KKwkJMHgwMiwgMHgwNCwgCisJCXsgeyBDVFJf
> RkxBTUVfMCwgTVNSX1A0X1NBQVRfRVNDUjB9LAorCQkgIHsgQ1RSX0ZMQU1FXzIsIE1TUl9QNF9T
> QUFUX0VTQ1IxfSB9CisJfSwKKworCXsgLyogU1RPUkVfUE9SVF9SRVBMQVkgKi8KKwkJMHgwMiwg
> MHgwNSwKKwkJeyB7IENUUl9GTEFNRV8wLCBNU1JfUDRfU0FBVF9FU0NSMH0sCisJCSAgeyBDVFJf
> RkxBTUVfMiwgTVNSX1A0X1NBQVRfRVNDUjF9IH0KKwl9LAorCisJeyAvKiBNT0JfTE9BRF9SRVBM
> QVkgKi8KKwkJMHgwMiwgMHgwMywKKwkJeyB7IENUUl9CUFVfMCwgTVNSX1A0X01PQl9FU0NSMH0s
> CisJCSAgeyBDVFJfQlBVXzIsIE1TUl9QNF9NT0JfRVNDUjF9IH0KKwl9LAorCisJeyAvKiBQQUdF
> X1dBTEtfVFlQRSAqLworCQkweDA0LCAweDAxLAorCQl7IHsgQ1RSX0JQVV8wLCBNU1JfUDRfUE1I
> X0VTQ1IwfSwKKwkJICB7IENUUl9CUFVfMiwgTVNSX1A0X1BNSF9FU0NSMX0gfQorCX0sCisKKwl7
> IC8qIEJTUV9DQUNIRV9SRUZFUkVOQ0UgKi8KKwkJMHgwNywgMHgwYywgCisJCXsgeyBDVFJfQlBV
> XzAsIE1TUl9QNF9CU1VfRVNDUjB9LAorCQkgIHsgQ1RSX0JQVV8yLCBNU1JfUDRfQlNVX0VTQ1Ix
> fSB9CisJfSwKKworCXsgLyogSU9RX0FMTE9DQVRJT04gKi8KKwkJMHgwNiwgMHgwMywgCisJCXsg
> eyBDVFJfQlBVXzAsIE1TUl9QNF9GU0JfRVNDUjB9LAorCQkgIHsgMCwgMCB9IH0KKwl9LAorCisJ
> eyAvKiBJT1FfQUNUSVZFX0VOVFJJRVMgKi8KKwkJMHgwNiwgMHgxYSwgCisJCXsgeyBDVFJfQlBV
> XzIsIE1TUl9QNF9GU0JfRVNDUjF9LAorCQkgIHsgMCwgMCB9IH0KKwl9LAorCisJeyAvKiBGU0Jf
> REFUQV9BQ1RJVklUWSAqLworCQkweDA2LCAweDE3LCAKKwkJeyB7IENUUl9CUFVfMCwgTVNSX1A0
> X0ZTQl9FU0NSMH0sCisJCSAgeyBDVFJfQlBVXzIsIE1TUl9QNF9GU0JfRVNDUjF9IH0KKwl9LAor
> CisJeyAvKiBCU1FfQUxMT0NBVElPTiAqLworCQkweDA3LCAweDA1LCAKKwkJeyB7IENUUl9CUFVf
> MCwgTVNSX1A0X0JTVV9FU0NSMH0sCisJCSAgeyAwLCAwIH0gfQorCX0sCisKKwl7IC8qIEJTUV9B
> Q1RJVkVfRU5UUklFUyAqLworCQkweDA3LCAweDA2LAorCQl7IHsgQ1RSX0JQVV8yLCBNU1JfUDRf
> QlNVX0VTQ1IxIC8qIGd1ZXNzICovfSwgIAorCQkgIHsgMCwgMCB9IH0KKwl9LAorCisJeyAvKiBY
> ODdfQVNTSVNUICovCisJCTB4MDUsIDB4MDMsIAorCQl7IHsgQ1RSX0lRXzQsIE1TUl9QNF9DUlVf
> RVNDUjJ9LAorCQkgIHsgQ1RSX0lRXzUsIE1TUl9QNF9DUlVfRVNDUjN9IH0KKwl9LAorCisJeyAv
> KiBTU0VfSU5QVVRfQVNTSVNUICovCisJCTB4MDEsIDB4MzQsCisJCXsgeyBDVFJfRkxBTUVfMCwg
> TVNSX1A0X0ZJUk1fRVNDUjB9LAorCQkgIHsgQ1RSX0ZMQU1FXzIsIE1TUl9QNF9GSVJNX0VTQ1Ix
> fSB9CisJfSwKKyAgCisJeyAvKiBQQUNLRURfU1BfVU9QICovCisJCTB4MDEsIDB4MDgsIAorCQl7
> IHsgQ1RSX0ZMQU1FXzAsIE1TUl9QNF9GSVJNX0VTQ1IwfSwKKwkJICB7IENUUl9GTEFNRV8yLCBN
> U1JfUDRfRklSTV9FU0NSMX0gfQorCX0sCisgIAorCXsgLyogUEFDS0VEX0RQX1VPUCAqLworCQkw
> eDAxLCAweDBjLCAKKwkJeyB7IENUUl9GTEFNRV8wLCBNU1JfUDRfRklSTV9FU0NSMH0sCisJCSAg
> eyBDVFJfRkxBTUVfMiwgTVNSX1A0X0ZJUk1fRVNDUjF9IH0KKwl9LAorCisJeyAvKiBTQ0FMQVJf
> U1BfVU9QICovCisJCTB4MDEsIDB4MGEsIAorCQl7IHsgQ1RSX0ZMQU1FXzAsIE1TUl9QNF9GSVJN
> X0VTQ1IwfSwKKwkJICB7IENUUl9GTEFNRV8yLCBNU1JfUDRfRklSTV9FU0NSMX0gfQorCX0sCisK
> Kwl7IC8qIFNDQUxBUl9EUF9VT1AgKi8KKwkJMHgwMSwgMHgwZSwKKwkJeyB7IENUUl9GTEFNRV8w
> LCBNU1JfUDRfRklSTV9FU0NSMH0sCisJCSAgeyBDVFJfRkxBTUVfMiwgTVNSX1A0X0ZJUk1fRVND
> UjF9IH0KKwl9LAorCisJeyAvKiA2NEJJVF9NTVhfVU9QICovCisJCTB4MDEsIDB4MDIsIAorCQl7
> IHsgQ1RSX0ZMQU1FXzAsIE1TUl9QNF9GSVJNX0VTQ1IwfSwKKwkJICB7IENUUl9GTEFNRV8yLCBN
> U1JfUDRfRklSTV9FU0NSMX0gfQorCX0sCisgIAorCXsgLyogMTI4QklUX01NWF9VT1AgKi8KKwkJ
> MHgwMSwgMHgxYSwgCisJCXsgeyBDVFJfRkxBTUVfMCwgTVNSX1A0X0ZJUk1fRVNDUjB9LAorCQkg
> IHsgQ1RSX0ZMQU1FXzIsIE1TUl9QNF9GSVJNX0VTQ1IxfSB9CisJfSwKKworCXsgLyogWDg3X0ZQ
> X1VPUCAqLworCQkweDAxLCAweDA0LCAKKwkJeyB7IENUUl9GTEFNRV8wLCBNU1JfUDRfRklSTV9F
> U0NSMH0sCisJCSAgeyBDVFJfRkxBTUVfMiwgTVNSX1A0X0ZJUk1fRVNDUjF9IH0KKwl9LAorICAK
> Kwl7IC8qIFg4N19TSU1EX01PVkVTX1VPUCAqLworCQkweDAxLCAweDJlLCAKKwkJeyB7IENUUl9G
> TEFNRV8wLCBNU1JfUDRfRklSTV9FU0NSMH0sCisJCSAgeyBDVFJfRkxBTUVfMiwgTVNSX1A0X0ZJ
> Uk1fRVNDUjF9IH0KKwl9LAorICAKKwl7IC8qIE1BQ0hJTkVfQ0xFQVIgKi8KKwkJMHgwNSwgMHgw
> MiwgCisJCXsgeyBDVFJfSVFfNCwgTVNSX1A0X0NSVV9FU0NSMn0sCisJCSAgeyBDVFJfSVFfNSwg
> TVNSX1A0X0NSVV9FU0NSM30gfQorCX0sCisKKwl7IC8qIEdMT0JBTF9QT1dFUl9FVkVOVFMgKi8K
> KwkJMHgwNiwgMHgxMyAvKiBvbGRlciBtYW51YWwgc2F5cyAweDA1LCBuZXdlciAweDEzICovLAor
> CQl7IHsgQ1RSX0JQVV8wLCBNU1JfUDRfRlNCX0VTQ1IwfSwKKwkJICB7IENUUl9CUFVfMiwgTVNS
> X1A0X0ZTQl9FU0NSMX0gfQorCX0sCisgIAorCXsgLyogVENfTVNfWEZFUiAqLworCQkweDAwLCAw
> eDA1LCAKKwkJeyB7IENUUl9NU18wLCBNU1JfUDRfTVNfRVNDUjB9LAorCQkgIHsgQ1RSX01TXzIs
> IE1TUl9QNF9NU19FU0NSMX0gfQorCX0sCisKKwl7IC8qIFVPUF9RVUVVRV9XUklURVMgKi8KKwkJ
> MHgwMCwgMHgwOSwKKwkJeyB7IENUUl9NU18wLCBNU1JfUDRfTVNfRVNDUjB9LAorCQkgIHsgQ1RS
> X01TXzIsIE1TUl9QNF9NU19FU0NSMX0gfQorCX0sCisKKwl7IC8qIEZST05UX0VORF9FVkVOVCAq
> LworCQkweDA1LCAweDA4LAorCQl7IHsgQ1RSX0lRXzQsIE1TUl9QNF9DUlVfRVNDUjJ9LAorCQkg
> IHsgQ1RSX0lRXzUsIE1TUl9QNF9DUlVfRVNDUjN9IH0KKwl9LAorCisJeyAvKiBFWEVDVVRJT05f
> RVZFTlQgKi8KKwkJMHgwNSwgMHgwYywKKwkJeyB7IENUUl9JUV80LCBNU1JfUDRfQ1JVX0VTQ1Iy
> fSwKKwkJICB7IENUUl9JUV81LCBNU1JfUDRfQ1JVX0VTQ1IzfSB9CisJfSwKKworCXsgLyogUkVQ
> TEFZX0VWRU5UICovCisJCTB4MDUsIDB4MDksCisJCXsgeyBDVFJfSVFfNCwgTVNSX1A0X0NSVV9F
> U0NSMn0sCisJCSAgeyBDVFJfSVFfNSwgTVNSX1A0X0NSVV9FU0NSM30gfQorCX0sCisKKwl7IC8q
> IElOU1RSX1JFVElSRUQgKi8KKwkJMHgwNCwgMHgwMiwgCisJCXsgeyBDVFJfSVFfNCwgTVNSX1A0
> X0NSVV9FU0NSMH0sCisJCSAgeyBDVFJfSVFfNSwgTVNSX1A0X0NSVV9FU0NSMX0gfQorCX0sCisK
> Kwl7IC8qIFVPUFNfUkVUSVJFRCAqLworCQkweDA0LCAweDAxLAorCQl7IHsgQ1RSX0lRXzQsIE1T
> Ul9QNF9DUlVfRVNDUjB9LAorCQkgIHsgQ1RSX0lRXzUsIE1TUl9QNF9DUlVfRVNDUjF9IH0KKwl9
> LAorCisJeyAvKiBVT1BfVFlQRSAqLyAgICAKKwkJMHgwMiwgMHgwMiwgCisJCXsgeyBDVFJfSVFf
> NCwgTVNSX1A0X1JBVF9FU0NSMH0sCisJCSAgeyBDVFJfSVFfNSwgTVNSX1A0X1JBVF9FU0NSMX0g
> fQorCX0sCisKKwl7IC8qIFJFVElSRURfTUlTUFJFRF9CUkFOQ0hfVFlQRSAqLworCQkweDAyLCAw
> eDA1LCAKKwkJeyB7IENUUl9NU18wLCBNU1JfUDRfVEJQVV9FU0NSMH0sCisJCSAgeyBDVFJfTVNf
> MiwgTVNSX1A0X1RCUFVfRVNDUjF9IH0KKwl9LAorCisJeyAvKiBSRVRJUkVEX0JSQU5DSF9UWVBF
> ICovCisJCTB4MDIsIDB4MDQsCisJCXsgeyBDVFJfTVNfMCwgTVNSX1A0X1RCUFVfRVNDUjB9LAor
> CQkgIHsgQ1RSX01TXzIsIE1TUl9QNF9UQlBVX0VTQ1IxfSB9CisJfQorfTsKKworCisjZGVmaW5l
> IE1JU0NfUE1DX0VOQUJMRURfUCh4KSAoKHgpICYgMSA8PCA3KQorCisjZGVmaW5lIEVTQ1JfUkVT
> RVJWRURfQklUUyAweDgwMDAwMDAzCisjZGVmaW5lIEVTQ1JfQ0xFQVIoZXNjcikgKChlc2NyKSAm
> PSBFU0NSX1JFU0VSVkVEX0JJVFMpCisjZGVmaW5lIEVTQ1JfU0VUX1VTUl8wKGVzY3IsIHVzcikg
> KChlc2NyKSB8PSAoKCh1c3IpICYgMSkgPDwgMikpCisjZGVmaW5lIEVTQ1JfU0VUX09TXzAoZXNj
> ciwgb3MpICgoZXNjcikgfD0gKCgob3MpICYgMSkgPDwgMykpCisjZGVmaW5lIEVTQ1JfU0VUX1VT
> Ul8xKGVzY3IsIHVzcikgKChlc2NyKSB8PSAoKCh1c3IpICYgMSkpKQorI2RlZmluZSBFU0NSX1NF
> VF9PU18xKGVzY3IsIG9zKSAoKGVzY3IpIHw9ICgoKG9zKSAmIDEpIDw8IDEpKQorI2RlZmluZSBF
> U0NSX1NFVF9FVkVOVF9TRUxFQ1QoZXNjciwgc2VsKSAoKGVzY3IpIHw9ICgoKHNlbCkgJiAweDNm
> KSA8PCAyNSkpCisjZGVmaW5lIEVTQ1JfU0VUX0VWRU5UX01BU0soZXNjciwgbWFzaykgKChlc2Ny
> KSB8PSAoKChtYXNrKSAmIDB4ZmZmZikgPDwgOSkpCisjZGVmaW5lIEVTQ1JfUkVBRChlc2NyLGhp
> Z2gsZXYsaSkgZG8ge3JkbXNyKGV2LT5iaW5kaW5nc1soaSldLmVzY3JfYWRkcmVzcywgKGVzY3Ip
> LCAoaGlnaCkpO30gd2hpbGUgKDApCisjZGVmaW5lIEVTQ1JfV1JJVEUoZXNjcixoaWdoLGV2LGkp
> IGRvIHt3cm1zcihldi0+YmluZGluZ3NbKGkpXS5lc2NyX2FkZHJlc3MsIChlc2NyKSwgKGhpZ2gp
> KTt9IHdoaWxlICgwKQorCisjZGVmaW5lIENDQ1JfUkVTRVJWRURfQklUUyAweDM4MDMwRkZGCisj
> ZGVmaW5lIENDQ1JfQ0xFQVIoY2NjcikgKChjY2NyKSAmPSBDQ0NSX1JFU0VSVkVEX0JJVFMpCisj
> ZGVmaW5lIENDQ1JfU0VUX1JFUVVJUkVEX0JJVFMoY2NjcikgKChjY2NyKSB8PSAweDAwMDMwMDAw
> KQorI2RlZmluZSBDQ0NSX1NFVF9FU0NSX1NFTEVDVChjY2NyLCBzZWwpICgoY2NjcikgfD0gKCgo
> c2VsKSAmIDB4MDcpIDw8IDEzKSkKKyNkZWZpbmUgQ0NDUl9TRVRfUE1JX09WRl8wKGNjY3IpICgo
> Y2NjcikgfD0gKDE8PDI2KSkKKyNkZWZpbmUgQ0NDUl9TRVRfUE1JX09WRl8xKGNjY3IpICgoY2Nj
> cikgfD0gKDE8PDI3KSkKKyNkZWZpbmUgQ0NDUl9TRVRfRU5BQkxFKGNjY3IpICgoY2NjcikgfD0g
> KDE8PDEyKSkKKyNkZWZpbmUgQ0NDUl9TRVRfRElTQUJMRShjY2NyKSAoKGNjY3IpICY9IH4oMTw8
> MTIpKQorI2RlZmluZSBDQ0NSX1JFQUQobG93LCBoaWdoLCBpKSBkbyB7cmRtc3IocDRfY291bnRl
> cnNbKGkpXS5jY2NyX2FkZHJlc3MsIChsb3cpLCAoaGlnaCkpO30gd2hpbGUgKDApCisjZGVmaW5l
> IENDQ1JfV1JJVEUobG93LCBoaWdoLCBpKSBkbyB7d3Jtc3IocDRfY291bnRlcnNbKGkpXS5jY2Ny
> X2FkZHJlc3MsIChsb3cpLCAoaGlnaCkpO30gd2hpbGUgKDApCisjZGVmaW5lIENDQ1JfT1ZGX1Ao
> Y2NjcikgKChjY2NyKSAmICgxVTw8MzEpKQorI2RlZmluZSBDQ0NSX0NMRUFSX09WRihjY2NyKSAo
> KGNjY3IpICY9ICh+KDFVPDwzMSkpKQorCisjZGVmaW5lIENUUl9SRUFEKGwsaCxpKSBkbyB7cmRt
> c3IocDRfY291bnRlcnNbKGkpXS5jb3VudGVyX2FkZHJlc3MsIChsKSwgKGgpKTt9IHdoaWxlICgw
> KQorI2RlZmluZSBDVFJfV1JJVEUobCxpKSBkbyB7d3Jtc3IocDRfY291bnRlcnNbKGkpXS5jb3Vu
> dGVyX2FkZHJlc3MsIC0odTMyKShsKSwgLTEpO30gd2hpbGUgKDApCisjZGVmaW5lIENUUl9PVkVS
> RkxPV19QKGN0cikgKCEoKGN0cikgJiAweDgwMDAwMDAwKSkKKworCisvKiB0aGlzIGFzc2lnbnMg
> YSAic3RhZ2dlciIgdG8gdGhlIGN1cnJlbnQgQ1BVLCB3aGljaCBpcyB1c2VkIHRocm91Z2hvdXQK
> KyAgIHRoZSBjb2RlIGluIHRoaXMgbW9kdWxlIGFzIGFuIGV4dHJhIGFycmF5IG9mZnNldCwgdG8g
> c2VsZWN0IHRoZSAiZXZlbiIKKyAgIG9yICJvZGQiIHBhcnQgb2YgYWxsIHRoZSBkaXZpZGVkIHJl
> c291cmNlcy4gKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3N0YWdnZXIodm9pZCkKK3sKKyNp
> ZmRlZiBDT05GSUdfU01QCisJLyppbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCXJldHVy
> biAoY3B1ICE9IGZpcnN0X2NwdShjcHVfc2libGluZ19tYXBbY3B1XSkpOyovCisJLyogV2Ugd2Fu
> dCB0aGUgdHdvIGxvZ2ljYWwgY3B1cyBvZiBhIHBoeXNpY2FsIGNwdSB0byB1c2UKKwlkaXNqb2lu
> dCBzZXQgb2YgY291bnRlcnMuIFRoZSBmb2xsb3dpbmcgY29kZSBpcyB3cm9uZy4gKi8KKwlyZXR1
> cm4gMDsKKyNlbmRpZgkKKwlyZXR1cm4gMDsKK30KKworCisvKiBmaW5hbGx5LCBtZWRpYXRlIGFj
> Y2VzcyB0byBhIHJlYWwgaGFyZHdhcmUgY291bnRlcgorICAgYnkgcGFzc2luZyBhICJ2aXJ0dWFs
> IiBjb3VudGVyIG51bWVyIHRvIHRoaXMgbWFjcm8sCisgICBhbG9uZyB3aXRoIHlvdXIgc3RhZ2dl
> ciBzZXR0aW5nLiAqLworI2RlZmluZSBWSVJUX0NUUihzdGFnZ2VyLCBpKSAoKGkpICsgKChudW1f
> Y291bnRlcnMpICogKHN0YWdnZXIpKSkKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVzZXRfdmFs
> dWVbTlVNX0NPVU5URVJTX05PTl9IVF07CisKKworc3RhdGljIHZvaWQgcDRfZmlsbF9pbl9hZGRy
> ZXNzZXMoc3RydWN0IG9wX21zcnMgKiBjb25zdCBtc3JzKQoreworCXVuc2lnbmVkIGludCBpOyAK
> Kwl1bnNpZ25lZCBpbnQgYWRkciwgc3RhZzsKKworCXNldHVwX251bV9jb3VudGVycygpOworCXN0
> YWcgPSBnZXRfc3RhZ2dlcigpOworCisJLyogdGhlIGNvdW50ZXIgcmVnaXN0ZXJzIHdlIHBheSBh
> dHRlbnRpb24gdG8gKi8KKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NvdW50ZXJzOyArK2kpIHsKKwkJ
> bXNycy0+Y291bnRlcnNbaV0uYWRkciA9IAorCQkJcDRfY291bnRlcnNbVklSVF9DVFIoc3RhZywg
> aSldLmNvdW50ZXJfYWRkcmVzczsKKwl9CisKKwkvKiBGSVhNRTogYmFkIGZlZWxpbmcsIHdlIGRv
> bid0IHNhdmUgdGhlIDEwIGNvdW50ZXJzIHdlIGRvbid0IHVzZS4gKi8KKworCS8qIDE4IENDQ1Ig
> cmVnaXN0ZXJzICovCisJZm9yIChpID0gMCwgYWRkciA9IE1TUl9QNF9CUFVfQ0NDUjAgKyBzdGFn
> OworCSAgICAgYWRkciA8PSBNU1JfUDRfSVFfQ0NDUjU7ICsraSwgYWRkciArPSBhZGRyX2luY3Jl
> bWVudCgpKSB7CisJCW1zcnMtPmNvbnRyb2xzW2ldLmFkZHIgPSBhZGRyOworCX0KKwkKKwkvKiA0
> MyBFU0NSIHJlZ2lzdGVycyBpbiB0aHJlZSBvciBmb3VyIGRpc2NvbnRpZ3VvdXMgZ3JvdXAgKi8K
> Kwlmb3IgKGFkZHIgPSBNU1JfUDRfQlNVX0VTQ1IwICsgc3RhZzsKKwkgICAgIGFkZHIgPCBNU1Jf
> UDRfSVFfRVNDUjA7ICsraSwgYWRkciArPSBhZGRyX2luY3JlbWVudCgpKSB7CisJCW1zcnMtPmNv
> bnRyb2xzW2ldLmFkZHIgPSBhZGRyOworCX0KKworCS8qIG5vIElRX0VTQ1IwLzEgb24gc29tZSBt
> b2RlbHMsIHdlIHNhdmUgYSBzZWNvbmRlIHRpbWUgQlNVX0VTQ1IwLzEKKwkgKiB0byBhdm9pZCBz
> cGVjaWFsIGNhc2UgaW4gbm1pX3tzYXZlfHJlc3RvcmV9X3JlZ2lzdGVycygpICovCisJaWYgKGJv
> b3RfY3B1X2RhdGEueDg2X21vZGVsID49IDB4MykgeworCQlmb3IgKGFkZHIgPSBNU1JfUDRfQlNV
> X0VTQ1IwICsgc3RhZzsKKwkJICAgICBhZGRyIDw9IE1TUl9QNF9CU1VfRVNDUjE7ICsraSwgYWRk
> ciArPSBhZGRyX2luY3JlbWVudCgpKSB7CisJCQltc3JzLT5jb250cm9sc1tpXS5hZGRyID0gYWRk
> cjsKKwkJfQorCX0gZWxzZSB7CisJCWZvciAoYWRkciA9IE1TUl9QNF9JUV9FU0NSMCArIHN0YWc7
> CisJCSAgICAgYWRkciA8PSBNU1JfUDRfSVFfRVNDUjE7ICsraSwgYWRkciArPSBhZGRyX2luY3Jl
> bWVudCgpKSB7CisJCQltc3JzLT5jb250cm9sc1tpXS5hZGRyID0gYWRkcjsKKwkJfQorCX0KKwor
> CWZvciAoYWRkciA9IE1TUl9QNF9SQVRfRVNDUjAgKyBzdGFnOworCSAgICAgYWRkciA8PSBNU1Jf
> UDRfU1NVX0VTQ1IwOyArK2ksIGFkZHIgKz0gYWRkcl9pbmNyZW1lbnQoKSkgeworCQltc3JzLT5j
> b250cm9sc1tpXS5hZGRyID0gYWRkcjsKKwl9CisJCisJZm9yIChhZGRyID0gTVNSX1A0X01TX0VT
> Q1IwICsgc3RhZzsKKwkgICAgIGFkZHIgPD0gTVNSX1A0X1RDX0VTQ1IxOyArK2ksIGFkZHIgKz0g
> YWRkcl9pbmNyZW1lbnQoKSkgeyAKKwkJbXNycy0+Y29udHJvbHNbaV0uYWRkciA9IGFkZHI7CisJ
> fQorCQorCWZvciAoYWRkciA9IE1TUl9QNF9JWF9FU0NSMCArIHN0YWc7CisJICAgICBhZGRyIDw9
> IE1TUl9QNF9DUlVfRVNDUjM7ICsraSwgYWRkciArPSBhZGRyX2luY3JlbWVudCgpKSB7IAorCQlt
> c3JzLT5jb250cm9sc1tpXS5hZGRyID0gYWRkcjsKKwl9CisKKwkvKiB0aGVyZSBhcmUgMiByZW1h
> aW5pbmcgbm9uLWNvbnRpZ3VvdXNseSBsb2NhdGVkIEVTQ1JzICovCisKKwlpZiAobnVtX2NvdW50
> ZXJzID09IE5VTV9DT1VOVEVSU19OT05fSFQpIHsJCQorCQkvKiBzdGFuZGFyZCBub24tSFQgQ1BV
> cyBoYW5kbGUgYm90aCByZW1haW5pbmcgRVNDUnMqLworCQltc3JzLT5jb250cm9sc1tpKytdLmFk
> ZHIgPSBNU1JfUDRfQ1JVX0VTQ1I1OworCQltc3JzLT5jb250cm9sc1tpKytdLmFkZHIgPSBNU1Jf
> UDRfQ1JVX0VTQ1I0OworCisJfSBlbHNlIGlmIChzdGFnID09IDApIHsKKwkJLyogSFQgQ1BVcyBn
> aXZlIHRoZSBmaXJzdCByZW1haW5kZXIgdG8gdGhlIGV2ZW4gdGhyZWFkLCBhcworCQkgICB0aGUg
> MzJuZCBjb250cm9sIHJlZ2lzdGVyICovCisJCW1zcnMtPmNvbnRyb2xzW2krK10uYWRkciA9IE1T
> Ul9QNF9DUlVfRVNDUjQ7CisKKwl9IGVsc2UgeworCQkvKiBhbmQgdHdvIGNvcGllcyBvZiB0aGUg
> c2Vjb25kIHRvIHRoZSBvZGQgdGhyZWFkLAorCQkgICBmb3IgdGhlIDIyc3QgYW5kIDIzbmQgY29u
> dHJvbCByZWdpc3RlcnMgKi8KKwkJbXNycy0+Y29udHJvbHNbaSsrXS5hZGRyID0gTVNSX1A0X0NS
> VV9FU0NSNTsKKwkJbXNycy0+Y29udHJvbHNbaSsrXS5hZGRyID0gTVNSX1A0X0NSVV9FU0NSNTsK
> Kwl9Cit9CisKKworc3RhdGljIHZvaWQgcG1jX3NldHVwX29uZV9wNF9jb3VudGVyKHVuc2lnbmVk
> IGludCBjdHIpCit7CisJaW50IGk7CisJaW50IGNvbnN0IG1heGJpbmQgPSAyOworCXVuc2lnbmVk
> IGludCBjY2NyID0gMDsKKwl1bnNpZ25lZCBpbnQgZXNjciA9IDA7CisJdW5zaWduZWQgaW50IGhp
> Z2ggPSAwOworCXVuc2lnbmVkIGludCBjb3VudGVyX2JpdDsKKwlzdHJ1Y3QgcDRfZXZlbnRfYmlu
> ZGluZyAqZXYgPSBOVUxMOworCXVuc2lnbmVkIGludCBzdGFnOworCisJc3RhZyA9IGdldF9zdGFn
> Z2VyKCk7CisJCisJLyogY29udmVydCBmcm9tIGNvdW50ZXIgKm51bWJlciogdG8gY291bnRlciAq
> Yml0KiAqLworCWNvdW50ZXJfYml0ID0gMSA8PCBWSVJUX0NUUihzdGFnLCBjdHIpOworCQorCS8q
> IGZpbmQgb3VyIGV2ZW50IGJpbmRpbmcgc3RydWN0dXJlLiAqLworCWlmIChjb3VudGVyX2NvbmZp
> Z1tjdHJdLmV2ZW50IDw9IDAgfHwgY291bnRlcl9jb25maWdbY3RyXS5ldmVudCA+IE5VTV9FVkVO
> VFMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIAorCQkgICAgICAgIm9wcm9maWxlOiBQNCBldmVudCBj
> b2RlIDB4JWx4IG91dCBvZiByYW5nZVxuIiwgCisJCSAgICAgICBjb3VudGVyX2NvbmZpZ1tjdHJd
> LmV2ZW50KTsKKwkJcmV0dXJuOworCX0KKwkKKwlldiA9ICYocDRfZXZlbnRzW2NvdW50ZXJfY29u
> ZmlnW2N0cl0uZXZlbnQgLSAxXSk7CisJCisJZm9yIChpID0gMDsgaSA8IG1heGJpbmQ7IGkrKykg
> eworCQlpZiAoZXYtPmJpbmRpbmdzW2ldLnZpcnRfY291bnRlciAmIGNvdW50ZXJfYml0KSB7CisK
> KwkJCS8qIG1vZGlmeSBFU0NSICovCisJCQlFU0NSX1JFQUQoZXNjciwgaGlnaCwgZXYsIGkpOwor
> CQkJRVNDUl9DTEVBUihlc2NyKTsKKwkJCWlmIChzdGFnID09IDApIHsKKwkJCQlFU0NSX1NFVF9V
> U1JfMChlc2NyLCBjb3VudGVyX2NvbmZpZ1tjdHJdLnVzZXIpOworCQkJCUVTQ1JfU0VUX09TXzAo
> ZXNjciwgY291bnRlcl9jb25maWdbY3RyXS5rZXJuZWwpOworCQkJfSBlbHNlIHsKKwkJCQlFU0NS
> X1NFVF9VU1JfMShlc2NyLCBjb3VudGVyX2NvbmZpZ1tjdHJdLnVzZXIpOworCQkJCUVTQ1JfU0VU
> X09TXzEoZXNjciwgY291bnRlcl9jb25maWdbY3RyXS5rZXJuZWwpOworCQkJfQorCQkJRVNDUl9T
> RVRfRVZFTlRfU0VMRUNUKGVzY3IsIGV2LT5ldmVudF9zZWxlY3QpOworCQkJRVNDUl9TRVRfRVZF
> TlRfTUFTSyhlc2NyLCBjb3VudGVyX2NvbmZpZ1tjdHJdLnVuaXRfbWFzayk7CQkJCisJCQlFU0NS
> X1dSSVRFKGVzY3IsIGhpZ2gsIGV2LCBpKTsKKwkJICAgICAgIAorCQkJLyogbW9kaWZ5IENDQ1Ig
> Ki8KKwkJCUNDQ1JfUkVBRChjY2NyLCBoaWdoLCBWSVJUX0NUUihzdGFnLCBjdHIpKTsKKwkJCUND
> Q1JfQ0xFQVIoY2Njcik7CisJCQlDQ0NSX1NFVF9SRVFVSVJFRF9CSVRTKGNjY3IpOworCQkJQ0ND
> Ul9TRVRfRVNDUl9TRUxFQ1QoY2NjciwgZXYtPmVzY3Jfc2VsZWN0KTsKKwkJCWlmIChzdGFnID09
> IDApIHsKKwkJCQlDQ0NSX1NFVF9QTUlfT1ZGXzAoY2Njcik7CisJCQl9IGVsc2UgeworCQkJCUND
> Q1JfU0VUX1BNSV9PVkZfMShjY2NyKTsKKwkJCX0KKwkJCUNDQ1JfV1JJVEUoY2NjciwgaGlnaCwg
> VklSVF9DVFIoc3RhZywgY3RyKSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlwcmludGsoS0VS
> Tl9FUlIgCisJICAgICAgICJvcHJvZmlsZTogUDQgZXZlbnQgY29kZSAweCVseCBubyBiaW5kaW5n
> LCBzdGFnICVkIGN0ciAlZFxuIiwKKwkgICAgICAgY291bnRlcl9jb25maWdbY3RyXS5ldmVudCwg
> c3RhZywgY3RyKTsKK30KKworCitzdGF0aWMgdm9pZCBwNF9zZXR1cF9jdHJzKHN0cnVjdCBvcF9t
> c3JzIGNvbnN0ICogY29uc3QgbXNycykKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBp
> bnQgbG93LCBoaWdoOworCXVuc2lnbmVkIGludCBhZGRyOworCXVuc2lnbmVkIGludCBzdGFnOwor
> CisJc3RhZyA9IGdldF9zdGFnZ2VyKCk7CisKKwlyZG1zcihNU1JfSUEzMl9NSVNDX0VOQUJMRSwg
> bG93LCBoaWdoKTsKKwlpZiAoISBNSVNDX1BNQ19FTkFCTEVEX1AobG93KSkgeworCQlwcmludGso
> S0VSTl9FUlIgIm9wcm9maWxlOiBQNCBQTUMgbm90IGF2YWlsYWJsZVxuIik7CisJCXJldHVybjsK
> Kwl9CisKKwkvKiBjbGVhciB0aGUgY2NjcnMgd2Ugd2lsbCB1c2UgKi8KKwlmb3IgKGkgPSAwIDsg
> aSA8IG51bV9jb3VudGVycyA7IGkrKykgeworCQlyZG1zcihwNF9jb3VudGVyc1tWSVJUX0NUUihz
> dGFnLCBpKV0uY2Njcl9hZGRyZXNzLCBsb3csIGhpZ2gpOworCQlDQ0NSX0NMRUFSKGxvdyk7CisJ
> CUNDQ1JfU0VUX1JFUVVJUkVEX0JJVFMobG93KTsKKwkJd3Jtc3IocDRfY291bnRlcnNbVklSVF9D
> VFIoc3RhZywgaSldLmNjY3JfYWRkcmVzcywgbG93LCBoaWdoKTsKKwl9CisKKwkvKiBjbGVhciBj
> Y2NycyBvdXRzaWRlIG91ciBjb25jZXJuICovCisJZm9yIChpID0gc3RhZyA7IGkgPCBOVU1fVU5V
> U0VEX0NDQ1JTIDsgaSArPSBhZGRyX2luY3JlbWVudCgpKSB7CisJCXJkbXNyKHA0X3VudXNlZF9j
> Y2NyW2ldLCBsb3csIGhpZ2gpOworCQlDQ0NSX0NMRUFSKGxvdyk7CisJCUNDQ1JfU0VUX1JFUVVJ
> UkVEX0JJVFMobG93KTsKKwkJd3Jtc3IocDRfdW51c2VkX2NjY3JbaV0sIGxvdywgaGlnaCk7CisJ
> fQorCisJLyogY2xlYXIgYWxsIGVzY3JzIChpbmNsdWRpbmcgdGhvc2Ugb3V0c2lkZSBvdXIgY29u
> Y2VybikgKi8KKwlmb3IgKGFkZHIgPSBNU1JfUDRfQlNVX0VTQ1IwICsgc3RhZzsKKwkgICAgIGFk
> ZHIgPCAgTVNSX1A0X0lRX0VTQ1IwOyBhZGRyICs9IGFkZHJfaW5jcmVtZW50KCkpIHsKKwkJd3Jt
> c3IoYWRkciwgMCwgMCk7CisJfQorCisJLyogT24gb2xkZXIgbW9kZWxzIGNsZWFyIGFsc28gTVNS
> X1A0X0lRX0VTQ1IwLzEgKi8KKwlpZiAoYm9vdF9jcHVfZGF0YS54ODZfbW9kZWwgPCAweDMpIHsK
> KwkJd3Jtc3IoTVNSX1A0X0lRX0VTQ1IwLCAwLCAwKTsKKwkJd3Jtc3IoTVNSX1A0X0lRX0VTQ1Ix
> LCAwLCAwKTsKKwl9CisKKwlmb3IgKGFkZHIgPSBNU1JfUDRfUkFUX0VTQ1IwICsgc3RhZzsKKwkg
> ICAgIGFkZHIgPD0gTVNSX1A0X1NTVV9FU0NSMDsgKytpLCBhZGRyICs9IGFkZHJfaW5jcmVtZW50
> KCkpIHsKKwkJd3Jtc3IoYWRkciwgMCwgMCk7CisJfQorCQorCWZvciAoYWRkciA9IE1TUl9QNF9N
> U19FU0NSMCArIHN0YWc7CisJICAgICBhZGRyIDw9IE1TUl9QNF9UQ19FU0NSMTsgYWRkciArPSBh
> ZGRyX2luY3JlbWVudCgpKXsgCisJCXdybXNyKGFkZHIsIDAsIDApOworCX0KKwkKKwlmb3IgKGFk
> ZHIgPSBNU1JfUDRfSVhfRVNDUjAgKyBzdGFnOworCSAgICAgYWRkciA8PSBNU1JfUDRfQ1JVX0VT
> Q1IzOyBhZGRyICs9IGFkZHJfaW5jcmVtZW50KCkpeyAKKwkJd3Jtc3IoYWRkciwgMCwgMCk7CisJ
> fQorCisJaWYgKG51bV9jb3VudGVycyA9PSBOVU1fQ09VTlRFUlNfTk9OX0hUKSB7CQkKKwkJd3Jt
> c3IoTVNSX1A0X0NSVV9FU0NSNCwgMCwgMCk7CisJCXdybXNyKE1TUl9QNF9DUlVfRVNDUjUsIDAs
> IDApOworCX0gZWxzZSBpZiAoc3RhZyA9PSAwKSB7CisJCXdybXNyKE1TUl9QNF9DUlVfRVNDUjQs
> IDAsIDApOworCX0gZWxzZSB7CisJCXdybXNyKE1TUl9QNF9DUlVfRVNDUjUsIDAsIDApOworCX0J
> CQorCQorCS8qIHNldHVwIGFsbCBjb3VudGVycyAqLworCWZvciAoaSA9IDAgOyBpIDwgbnVtX2Nv
> dW50ZXJzIDsgKytpKSB7CisJCWlmIChjb3VudGVyX2NvbmZpZ1tpXS5lbmFibGVkKSB7CisJCQly
> ZXNldF92YWx1ZVtpXSA9IGNvdW50ZXJfY29uZmlnW2ldLmNvdW50OworCQkJcG1jX3NldHVwX29u
> ZV9wNF9jb3VudGVyKGkpOworCQkJQ1RSX1dSSVRFKGNvdW50ZXJfY29uZmlnW2ldLmNvdW50LCBW
> SVJUX0NUUihzdGFnLCBpKSk7CisJCX0gZWxzZSB7CisJCQlyZXNldF92YWx1ZVtpXSA9IDA7CisJ
> CX0KKwl9Cit9CisKKworZXh0ZXJuIHZvaWQgcG1jX2xvZ19ldmVudChzdHJ1Y3QgZG9tYWluICpk
> LCB1bnNpZ25lZCBpbnQgZWlwLCBpbnQgbW9kZSwgaW50IGV2ZW50KTsKK2V4dGVybiBpbnQgaXNf
> cHJvZmlsZWQoc3RydWN0IGRvbWFpbiAqIGQpOworZXh0ZXJuIHN0cnVjdCBkb21haW4gKiBwcmlt
> YXJ5X3Byb2ZpbGVyOworCitzdGF0aWMgaW50IHA0X2NoZWNrX2N0cnModW5zaWduZWQgaW50IGNv
> bnN0IGNwdSwgCisJCQkgIHN0cnVjdCBvcF9tc3JzIGNvbnN0ICogY29uc3QgbXNycywKKwkJCSAg
> c3RydWN0IHhlbl9yZWdzICogY29uc3QgcmVncykKK3sKKwl1bnNpZ25lZCBsb25nIGN0ciwgbG93
> LCBoaWdoLCBzdGFnLCByZWFsOworCWludCBpLCBvdmYgPSAwOworCXVuc2lnbmVkIGxvbmcgZWlw
> ID0gcmVncy0+ZWlwOworCWludCBtb2RlID0gMDsKKworCWlmIChSSU5HXzEocmVncykpCisJCW1v
> ZGUgPSAxOworCWVsc2UgaWYgKFJJTkdfMChyZWdzKSkKKwkJbW9kZSA9IDI7CisKKwlzdGFnID0g
> Z2V0X3N0YWdnZXIoKTsKKworCWZvciAoaSA9IDA7IGkgPCBudW1fY291bnRlcnM7ICsraSkgewor
> CQlpZiAoIXJlc2V0X3ZhbHVlW2ldKSAKKwkJCWNvbnRpbnVlOworCisJCS8qIAorCQkgKiB0aGVy
> ZSBpcyBzb21lIGVjY2VudHJpY2l0eSBpbiB0aGUgaGFyZHdhcmUgd2hpY2gKKwkJICogcmVxdWly
> ZXMgdGhhdCB3ZSBwZXJmb3JtIDIgZXh0cmEgY29ycmVjdGlvbnM6CisJCSAqCisJCSAqIC0gY2hl
> Y2sgYm90aCB0aGUgQ0NDUjpPVkYgZmxhZyBmb3Igb3ZlcmZsb3cgYW5kIHRoZQorCQkgKiAgIGNv
> dW50ZXIgaGlnaCBiaXQgZm9yIHVuLWZsYWdnZWQgb3ZlcmZsb3dzLgorCQkgKgorCQkgKiAtIHdy
> aXRlIHRoZSBjb3VudGVyIGJhY2sgdHdpY2UgdG8gZW5zdXJlIGl0IGdldHMKKwkJICogICB1cGRh
> dGVkIHByb3Blcmx5LgorCQkgKiAKKwkJICogdGhlIGZvcm1lciBzZWVtcyB0byBiZSByZWxhdGVk
> IHRvIGV4dHJhIE5NSXMgaGFwcGVuaW5nCisJCSAqIGR1cmluZyB0aGUgY3VycmVudCBOTUk7IHRo
> ZSBsYXR0ZXIgaXMgcmVwb3J0ZWQgYXMgZXJyYXRhCisJCSAqIE4xNSBpbiBpbnRlbCBkb2MgMjQ5
> MTk5LTAyOSwgcGVudGl1bSA0IHNwZWNpZmljYXRpb24KKwkJICogdXBkYXRlLCB0aG91Z2ggdGhl
> aXIgc3VnZ2VzdGVkIHdvcmstYXJvdW5kIGRvZXMgbm90CisJCSAqIGFwcGVhciB0byBzb2x2ZSB0
> aGUgcHJvYmxlbS4KKwkJICovCisJCQorCQlyZWFsID0gVklSVF9DVFIoc3RhZywgaSk7CisKKwkJ
> Q0NDUl9SRUFEKGxvdywgaGlnaCwgcmVhbCk7CisgCQlDVFJfUkVBRChjdHIsIGhpZ2gsIHJlYWwp
> OworCQlpZiAoQ0NDUl9PVkZfUChsb3cpIHx8IENUUl9PVkVSRkxPV19QKGN0cikpIHsKKwkJCXBt
> Y19sb2dfZXZlbnQoY3VycmVudCwgZWlwLCBtb2RlLCBpKTsKKyAJCQlDVFJfV1JJVEUocmVzZXRf
> dmFsdWVbaV0sIHJlYWwpOworCQkJQ0NDUl9DTEVBUl9PVkYobG93KTsKKwkJCUNDQ1JfV1JJVEUo
> bG93LCBoaWdoLCByZWFsKTsKKyAJCQlDVFJfV1JJVEUocmVzZXRfdmFsdWVbaV0sIHJlYWwpOwor
> CQkJb3ZmID0gMTsKKwkJfQorCX0KKworCS8qIFA0IHF1aXJrOiB5b3UgaGF2ZSB0byByZS11bm1h
> c2sgdGhlIGFwaWMgdmVjdG9yICovCisJYXBpY193cml0ZShBUElDX0xWVFBDLCBhcGljX3JlYWQo
> QVBJQ19MVlRQQykgJiB+QVBJQ19MVlRfTUFTS0VEKTsKKworCS8qIFNlZSBvcF9tb2RlbF9wcHJv
> LmMgKi8KKwlyZXR1cm4gb3ZmOworfQorCisKK3N0YXRpYyB2b2lkIHA0X3N0YXJ0KHN0cnVjdCBv
> cF9tc3JzIGNvbnN0ICogY29uc3QgbXNycykKK3sKKwl1bnNpZ25lZCBpbnQgbG93LCBoaWdoLCBz
> dGFnOworCWludCBpOworCisJc3RhZyA9IGdldF9zdGFnZ2VyKCk7CisKKwlmb3IgKGkgPSAwOyBp
> IDwgbnVtX2NvdW50ZXJzOyArK2kpIHsKKwkJaWYgKCFyZXNldF92YWx1ZVtpXSkKKwkJCWNvbnRp
> bnVlOworCQlDQ0NSX1JFQUQobG93LCBoaWdoLCBWSVJUX0NUUihzdGFnLCBpKSk7CisJCUNDQ1Jf
> U0VUX0VOQUJMRShsb3cpOworCQlDQ0NSX1dSSVRFKGxvdywgaGlnaCwgVklSVF9DVFIoc3RhZywg
> aSkpOworCX0KK30KKworCitzdGF0aWMgdm9pZCBwNF9zdG9wKHN0cnVjdCBvcF9tc3JzIGNvbnN0
> ICogY29uc3QgbXNycykKK3sKKwl1bnNpZ25lZCBpbnQgbG93LCBoaWdoLCBzdGFnOworCWludCBp
> OworCisJc3RhZyA9IGdldF9zdGFnZ2VyKCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NvdW50
> ZXJzOyArK2kpIHsKKwkJQ0NDUl9SRUFEKGxvdywgaGlnaCwgVklSVF9DVFIoc3RhZywgaSkpOwor
> CQlDQ0NSX1NFVF9ESVNBQkxFKGxvdyk7CisJCUNDQ1JfV1JJVEUobG93LCBoaWdoLCBWSVJUX0NU
> UihzdGFnLCBpKSk7CisJfQorfQorCisKKyNpZmRlZiBDT05GSUdfU01QCitzdHJ1Y3Qgb3BfeDg2
> X21vZGVsX3NwZWMgY29uc3Qgb3BfcDRfaHQyX3NwZWMgPSB7CisJLm51bV9jb3VudGVycyA9IE5V
> TV9DT1VOVEVSU19IVDIsCisJLm51bV9jb250cm9scyA9IE5VTV9DT05UUk9MU19IVDIsCisJLmZp
> bGxfaW5fYWRkcmVzc2VzID0gJnA0X2ZpbGxfaW5fYWRkcmVzc2VzLAorCS5zZXR1cF9jdHJzID0g
> JnA0X3NldHVwX2N0cnMsCisJLmNoZWNrX2N0cnMgPSAmcDRfY2hlY2tfY3RycywKKwkuc3RhcnQg
> PSAmcDRfc3RhcnQsCisJLnN0b3AgPSAmcDRfc3RvcAorfTsKKyNlbmRpZgorCitzdHJ1Y3Qgb3Bf
> eDg2X21vZGVsX3NwZWMgY29uc3Qgb3BfcDRfc3BlYyA9IHsKKwkubnVtX2NvdW50ZXJzID0gTlVN
> X0NPVU5URVJTX05PTl9IVCwKKwkubnVtX2NvbnRyb2xzID0gTlVNX0NPTlRST0xTX05PTl9IVCwK
> KwkuZmlsbF9pbl9hZGRyZXNzZXMgPSAmcDRfZmlsbF9pbl9hZGRyZXNzZXMsCisJLnNldHVwX2N0
> cnMgPSAmcDRfc2V0dXBfY3RycywKKwkuY2hlY2tfY3RycyA9ICZwNF9jaGVja19jdHJzLAorCS5z
> dGFydCA9ICZwNF9zdGFydCwKKwkuc3RvcCA9ICZwNF9zdG9wCit9OwpkaWZmIC1QTmF1ciB4ZW4t
> Mi4wLjUveGVuL2FyY2gveDg2L29wcm9maWxlL29wX21vZGVsX3Bwcm8uYyB4ZW4tMi4wLjUtcHJv
> Zi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfcHByby5jCi0tLSB4ZW4tMi4wLjUveGVu
> L2FyY2gveDg2L29wcm9maWxlL29wX21vZGVsX3Bwcm8uYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAw
> MDAwMDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2FyY2gveDg2L29wcm9maWxlL29w
> X21vZGVsX3Bwcm8uYwkyMDA1LTA0LTA2IDA5OjI3OjEzLjAwMDAwMDAwMCAtMDcwMApAQCAtMCww
> ICsxLDE2NiBAQAorLyoqCisgKiBAZmlsZSBvcF9tb2RlbF9wcHJvLmgKKyAqIHBlbnRpdW0gcHJv
> IC8gUDYgbW9kZWwtc3BlY2lmaWMgTVNSIG9wZXJhdGlvbnMKKyAqCisgKiBAcmVtYXJrIENvcHly
> aWdodCAyMDAyIE9Qcm9maWxlIGF1dGhvcnMKKyAqIEByZW1hcmsgUmVhZCB0aGUgZmlsZSBDT1BZ
> SU5HCisgKgorICogQGF1dGhvciBKb2huIExldm9uCisgKiBAYXV0aG9yIFBoaWxpcHBlIEVsaWUK
> KyAqIEBhdXRob3IgR3JheWRvbiBIb2FyZQorICoKKyAqIE1vZGlmaWVkIGJ5IEFyYXZpbmQgTWVu
> b24gZm9yIFhlbgorICogVGhlc2UgbW9kaWZpY2F0aW9ucyBhcmU6CisgKiBDb3B5cmlnaHQgKEMp
> IDIwMDUgSGV3bGV0dC1QYWNrYXJkIENvLgorICovCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4K
> KyNpbmNsdWRlIDxhc20vbXNyLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNt
> L2FwaWMuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVk
> Lmg+CisgCisjaW5jbHVkZSAib3BfeDg2X21vZGVsLmgiCisjaW5jbHVkZSAib3BfY291bnRlci5o
> IgorCisjZGVmaW5lIE5VTV9DT1VOVEVSUyAyCisjZGVmaW5lIE5VTV9DT05UUk9MUyAyCisKKyNk
> ZWZpbmUgQ1RSX1JFQUQobCxoLG1zcnMsYykgZG8ge3JkbXNyKG1zcnMtPmNvdW50ZXJzWyhjKV0u
> YWRkciwgKGwpLCAoaCkpO30gd2hpbGUgKDApCisjZGVmaW5lIENUUl9XUklURShsLG1zcnMsYykg
> ZG8ge3dybXNyKG1zcnMtPmNvdW50ZXJzWyhjKV0uYWRkciwgLSh1MzIpKGwpLCAtMSk7fSB3aGls
> ZSAoMCkKKyNkZWZpbmUgQ1RSX09WRVJGTE9XRUQobikgKCEoKG4pICYgKDFVPDwzMSkpKQorCisj
> ZGVmaW5lIENUUkxfUkVBRChsLGgsbXNycyxjKSBkbyB7cmRtc3IoKG1zcnMtPmNvbnRyb2xzWyhj
> KV0uYWRkciksIChsKSwgKGgpKTt9IHdoaWxlICgwKQorI2RlZmluZSBDVFJMX1dSSVRFKGwsaCxt
> c3JzLGMpIGRvIHt3cm1zcigobXNycy0+Y29udHJvbHNbKGMpXS5hZGRyKSwgKGwpLCAoaCkpO30g
> d2hpbGUgKDApCisjZGVmaW5lIENUUkxfU0VUX0FDVElWRShuKSAobiB8PSAoMTw8MjIpKQorI2Rl
> ZmluZSBDVFJMX1NFVF9JTkFDVElWRShuKSAobiAmPSB+KDE8PDIyKSkKKyNkZWZpbmUgQ1RSTF9D
> TEVBUih4KSAoeCAmPSAoMTw8MjEpKQorI2RlZmluZSBDVFJMX1NFVF9FTkFCTEUodmFsKSAodmFs
> IHw9IDE8PDIwKQorI2RlZmluZSBDVFJMX1NFVF9VU1IodmFsLHUpICh2YWwgfD0gKCh1ICYgMSkg
> PDwgMTYpKQorI2RlZmluZSBDVFJMX1NFVF9LRVJOKHZhbCxrKSAodmFsIHw9ICgoayAmIDEpIDw8
> IDE3KSkKKyNkZWZpbmUgQ1RSTF9TRVRfVU0odmFsLCBtKSAodmFsIHw9IChtIDw8IDgpKQorI2Rl
> ZmluZSBDVFJMX1NFVF9FVkVOVCh2YWwsIGUpICh2YWwgfD0gZSkKKworc3RhdGljIHVuc2lnbmVk
> IGxvbmcgcmVzZXRfdmFsdWVbTlVNX0NPVU5URVJTXTsKKyAKK3N0YXRpYyB2b2lkIHBwcm9fZmls
> bF9pbl9hZGRyZXNzZXMoc3RydWN0IG9wX21zcnMgKiBjb25zdCBtc3JzKQoreworCW1zcnMtPmNv
> dW50ZXJzWzBdLmFkZHIgPSBNU1JfUDZfUEVSRkNUUjA7CisJbXNycy0+Y291bnRlcnNbMV0uYWRk
> ciA9IE1TUl9QNl9QRVJGQ1RSMTsKKwkKKwltc3JzLT5jb250cm9sc1swXS5hZGRyID0gTVNSX1A2
> X0VWTlRTRUwwOworCW1zcnMtPmNvbnRyb2xzWzFdLmFkZHIgPSBNU1JfUDZfRVZOVFNFTDE7Cit9
> CisKKworc3RhdGljIHZvaWQgcHByb19zZXR1cF9jdHJzKHN0cnVjdCBvcF9tc3JzIGNvbnN0ICog
> Y29uc3QgbXNycykKK3sKKwl1bnNpZ25lZCBpbnQgbG93LCBoaWdoOworCWludCBpOworCisJLyog
> Y2xlYXIgYWxsIGNvdW50ZXJzICovCisJZm9yIChpID0gMCA7IGkgPCBOVU1fQ09OVFJPTFM7ICsr
> aSkgeworCQlDVFJMX1JFQUQobG93LCBoaWdoLCBtc3JzLCBpKTsKKwkJQ1RSTF9DTEVBUihsb3cp
> OworCQlDVFJMX1dSSVRFKGxvdywgaGlnaCwgbXNycywgaSk7CisJfQorCQorCS8qIGF2b2lkIGEg
> ZmFsc2UgZGV0ZWN0aW9uIG9mIGN0ciBvdmVyZmxvd3MgaW4gTk1JIGhhbmRsZXIgKi8KKwlmb3Ig
> KGkgPSAwOyBpIDwgTlVNX0NPVU5URVJTOyArK2kpIHsKKwkJQ1RSX1dSSVRFKDEsIG1zcnMsIGkp
> OworCX0KKworCS8qIGVuYWJsZSBhY3RpdmUgY291bnRlcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwg
> TlVNX0NPVU5URVJTOyArK2kpIHsKKwkJaWYgKGNvdW50ZXJfY29uZmlnW2ldLmVuYWJsZWQpIHsK
> KwkJCXJlc2V0X3ZhbHVlW2ldID0gY291bnRlcl9jb25maWdbaV0uY291bnQ7CisKKwkJCUNUUl9X
> UklURShjb3VudGVyX2NvbmZpZ1tpXS5jb3VudCwgbXNycywgaSk7CisKKwkJCUNUUkxfUkVBRChs
> b3csIGhpZ2gsIG1zcnMsIGkpOworCQkJQ1RSTF9DTEVBUihsb3cpOworCQkJQ1RSTF9TRVRfRU5B
> QkxFKGxvdyk7CisJCQlDVFJMX1NFVF9VU1IobG93LCBjb3VudGVyX2NvbmZpZ1tpXS51c2VyKTsK
> KwkJCUNUUkxfU0VUX0tFUk4obG93LCBjb3VudGVyX2NvbmZpZ1tpXS5rZXJuZWwpOworCQkJQ1RS
> TF9TRVRfVU0obG93LCBjb3VudGVyX2NvbmZpZ1tpXS51bml0X21hc2spOworCQkJQ1RSTF9TRVRf
> RVZFTlQobG93LCBjb3VudGVyX2NvbmZpZ1tpXS5ldmVudCk7CisJCQlDVFJMX1dSSVRFKGxvdywg
> aGlnaCwgbXNycywgaSk7CisJCX0KKwl9Cit9CisKK2V4dGVybiB2b2lkIHBtY19sb2dfZXZlbnQo
> c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGVpcCwgaW50IG1vZGUsIGludCBldmVudCk7
> CitleHRlcm4gaW50IGlzX3Byb2ZpbGVkKHN0cnVjdCBkb21haW4gKiBkKTsKK2V4dGVybiBzdHJ1
> Y3QgZG9tYWluICogcHJpbWFyeV9wcm9maWxlcjsKKworc3RhdGljIGludCBwcHJvX2NoZWNrX2N0
> cnModW5zaWduZWQgaW50IGNvbnN0IGNwdSwgCisJCQkgICAgc3RydWN0IG9wX21zcnMgY29uc3Qg
> KiBjb25zdCBtc3JzLAorCQkJICAgIHN0cnVjdCB4ZW5fcmVncyAqIGNvbnN0IHJlZ3MpCit7CisJ
> dW5zaWduZWQgaW50IGxvdywgaGlnaDsKKwlpbnQgaSwgb3ZmID0gMDsKKwl1bnNpZ25lZCBsb25n
> IGVpcCA9IHJlZ3MtPmVpcDsKKwlpbnQgbW9kZSA9IDA7CisKKwlpZiAoUklOR18xKHJlZ3MpKSAK
> KwkJbW9kZSA9IDE7CisJZWxzZSBpZiAoUklOR18wKHJlZ3MpKQorCQltb2RlID0gMjsKKworCWZv
> ciAoaSA9IDAgOyBpIDwgTlVNX0NPVU5URVJTOyArK2kpIHsKKwkJQ1RSX1JFQUQobG93LCBoaWdo
> LCBtc3JzLCBpKTsKKwkJaWYgKENUUl9PVkVSRkxPV0VEKGxvdykpIHsKKwkJCXBtY19sb2dfZXZl
> bnQoY3VycmVudCwgZWlwLCBtb2RlLCBpKTsKKwkJCUNUUl9XUklURShyZXNldF92YWx1ZVtpXSwg
> bXNycywgaSk7CisJCQlvdmYgPSAxOworCQl9CisJfQorCisJLyogT25seSBQNiBiYXNlZCBQZW50
> aXVtIE0gbmVlZCB0byByZS11bm1hc2sgdGhlIGFwaWMgdmVjdG9yIGJ1dCBpdAorCSAqIGRvZXNu
> J3QgaHVydCBvdGhlciBQNiB2YXJpYW50ICovCisJYXBpY193cml0ZShBUElDX0xWVFBDLCBhcGlj
> X3JlYWQoQVBJQ19MVlRQQykgJiB+QVBJQ19MVlRfTUFTS0VEKTsKKworCS8qIFdlIGNhbid0IHdv
> cmsgb3V0IGlmIHdlIHJlYWxseSBoYW5kbGVkIGFuIGludGVycnVwdC4gV2UKKwkgKiBtaWdodCBo
> YXZlIGNhdWdodCBhICpzZWNvbmQqIGNvdW50ZXIganVzdCBhZnRlciBvdmVyZmxvd2luZworCSAq
> IHRoZSBpbnRlcnJ1cHQgZm9yIHRoaXMgY291bnRlciB0aGVuIGFycml2ZXMKKwkgKiBhbmQgd2Ug
> ZG9uJ3QgZmluZCBhIGNvdW50ZXIgdGhhdCdzIG92ZXJmbG93ZWQsIHNvIHdlCisJICogd291bGQg
> cmV0dXJuIDAgYW5kIGdldCBkYXplZCArIGNvbmZ1c2VkLiBJbnN0ZWFkIHdlIGFsd2F5cworCSAq
> IGFzc3VtZSB3ZSBmb3VuZCBhbiBvdmVyZmxvdy4gVGhpcyBzdWNrcy4KKwkgKi8KKwlyZXR1cm4g
> b3ZmOworfQorCisgCitzdGF0aWMgdm9pZCBwcHJvX3N0YXJ0KHN0cnVjdCBvcF9tc3JzIGNvbnN0
> ICogY29uc3QgbXNycykKK3sKKwl1bnNpZ25lZCBpbnQgbG93LGhpZ2g7CisJQ1RSTF9SRUFEKGxv
> dywgaGlnaCwgbXNycywgMCk7CisJQ1RSTF9TRVRfQUNUSVZFKGxvdyk7CisJQ1RSTF9XUklURShs
> b3csIGhpZ2gsIG1zcnMsIDApOworfQorCitzdGF0aWMgdm9pZCBwcHJvX3N0b3Aoc3RydWN0IG9w
> X21zcnMgY29uc3QgKiBjb25zdCBtc3JzKQoreworCXVuc2lnbmVkIGludCBsb3csaGlnaDsKKwlD
> VFJMX1JFQUQobG93LCBoaWdoLCBtc3JzLCAwKTsKKwlDVFJMX1NFVF9JTkFDVElWRShsb3cpOwor
> CUNUUkxfV1JJVEUobG93LCBoaWdoLCBtc3JzLCAwKTsKK30KKwordW5zaWduZWQgaW50IHJlYWRf
> Y3RyKHN0cnVjdCBvcF9tc3JzIGNvbnN0ICogY29uc3QgbXNycywgaW50IGkpCit7CisJdW5zaWdu
> ZWQgaW50IGxvdywgaGlnaDsKKwlDVFJfUkVBRChsb3csIGhpZ2gsIG1zcnMsIGkpOworCXJldHVy
> biBsb3c7Cit9CisKK3N0cnVjdCBvcF94ODZfbW9kZWxfc3BlYyBjb25zdCBvcF9wcHJvX3NwZWMg
> PSB7CisJLm51bV9jb3VudGVycyA9IE5VTV9DT1VOVEVSUywKKwkubnVtX2NvbnRyb2xzID0gTlVN
> X0NPTlRST0xTLAorCS5maWxsX2luX2FkZHJlc3NlcyA9ICZwcHJvX2ZpbGxfaW5fYWRkcmVzc2Vz
> LAorCS5zZXR1cF9jdHJzID0gJnBwcm9fc2V0dXBfY3RycywKKwkuY2hlY2tfY3RycyA9ICZwcHJv
> X2NoZWNrX2N0cnMsCisJLnN0YXJ0ID0gJnBwcm9fc3RhcnQsCisJLnN0b3AgPSAmcHByb19zdG9w
> Cit9OwpkaWZmIC1QTmF1ciB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L29wcm9maWxlL29wX3g4Nl9t
> b2RlbC5oIHhlbi0yLjAuNS1wcm9mL3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF94ODZfbW9kZWwu
> aAotLS0geGVuLTIuMC41L3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF94ODZfbW9kZWwuaAkxOTY5
> LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2Fy
> Y2gveDg2L29wcm9maWxlL29wX3g4Nl9tb2RlbC5oCTIwMDUtMDQtMDYgMDk6Mjc6MTMuMDAwMDAw
> MDAwIC0wNzAwCkBAIC0wLDAgKzEsNTUgQEAKKy8qKgorICogQGZpbGUgb3BfeDg2X21vZGVsLmgK
> KyAqIGludGVyZmFjZSB0byB4ODYgbW9kZWwtc3BlY2lmaWMgTVNSIG9wZXJhdGlvbnMKKyAqCisg
> KiBAcmVtYXJrIENvcHlyaWdodCAyMDAyIE9Qcm9maWxlIGF1dGhvcnMKKyAqIEByZW1hcmsgUmVh
> ZCB0aGUgZmlsZSBDT1BZSU5HCisgKgorICogQGF1dGhvciBHcmF5ZG9uIEhvYXJlCisgKgorICog
> TW9kaWZpZWQgYnkgQXJhdmluZCBNZW5vbiBmb3IgWGVuCisgKiBUaGVzZSBtb2RpZmljYXRpb25z
> IGFyZToKKyAqIENvcHlyaWdodCAoQykgMjAwNSBIZXdsZXR0LVBhY2thcmQgQ28uCisgKi8KKwor
> I2lmbmRlZiBPUF9YODZfTU9ERUxfSAorI2RlZmluZSBPUF9YODZfTU9ERUxfSAorCitzdHJ1Y3Qg
> b3Bfc2F2ZWRfbXNyIHsKKwl1bnNpZ25lZCBpbnQgaGlnaDsKKwl1bnNpZ25lZCBpbnQgbG93Owor
> fTsKKworc3RydWN0IG9wX21zciB7CisJdW5zaWduZWQgbG9uZyBhZGRyOworCXN0cnVjdCBvcF9z
> YXZlZF9tc3Igc2F2ZWQ7Cit9OworCitzdHJ1Y3Qgb3BfbXNycyB7CisJc3RydWN0IG9wX21zciAq
> IGNvdW50ZXJzOworCXN0cnVjdCBvcF9tc3IgKiBjb250cm9sczsKK307CisKK3N0cnVjdCBwdF9y
> ZWdzOworCisvKiBUaGUgbW9kZWwgdnRhYmxlIGFic3RyYWN0cyB0aGUgZGlmZmVyZW5jZXMgYmV0
> d2VlbgorICogdmFyaW91cyB4ODYgQ1BVIG1vZGVsJ3MgcGVyZmN0ciBzdXBwb3J0LgorICovCitz
> dHJ1Y3Qgb3BfeDg2X21vZGVsX3NwZWMgeworCXVuc2lnbmVkIGludCBjb25zdCBudW1fY291bnRl
> cnM7CisJdW5zaWduZWQgaW50IGNvbnN0IG51bV9jb250cm9sczsKKwl2b2lkICgqZmlsbF9pbl9h
> ZGRyZXNzZXMpKHN0cnVjdCBvcF9tc3JzICogY29uc3QgbXNycyk7CisJdm9pZCAoKnNldHVwX2N0
> cnMpKHN0cnVjdCBvcF9tc3JzIGNvbnN0ICogY29uc3QgbXNycyk7CisJaW50ICgqY2hlY2tfY3Ry
> cykodW5zaWduZWQgaW50IGNvbnN0IGNwdSwgCisJCXN0cnVjdCBvcF9tc3JzIGNvbnN0ICogY29u
> c3QgbXNycywKKwkJc3RydWN0IHhlbl9yZWdzICogY29uc3QgcmVncyk7CisJdm9pZCAoKnN0YXJ0
> KShzdHJ1Y3Qgb3BfbXNycyBjb25zdCAqIGNvbnN0IG1zcnMpOworCXZvaWQgKCpzdG9wKShzdHJ1
> Y3Qgb3BfbXNycyBjb25zdCAqIGNvbnN0IG1zcnMpOworfTsKKworZXh0ZXJuIHN0cnVjdCBvcF94
> ODZfbW9kZWxfc3BlYyBjb25zdCBvcF9wcHJvX3NwZWM7CitleHRlcm4gc3RydWN0IG9wX3g4Nl9t
> b2RlbF9zcGVjIGNvbnN0IG9wX3A0X3NwZWM7CitleHRlcm4gc3RydWN0IG9wX3g4Nl9tb2RlbF9z
> cGVjIGNvbnN0IG9wX3A0X2h0Ml9zcGVjOworZXh0ZXJuIHN0cnVjdCBvcF94ODZfbW9kZWxfc3Bl
> YyBjb25zdCBvcF9hdGhsb25fc3BlYzsKKworI2VuZGlmIC8qIE9QX1g4Nl9NT0RFTF9IICovCmRp
> ZmYgLVBOYXVyIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvcG1jLmMgeGVuLTIuMC41
> LXByb2YveGVuL2FyY2gveDg2L29wcm9maWxlL3BtYy5jCi0tLSB4ZW4tMi4wLjUveGVuL2FyY2gv
> eDg2L29wcm9maWxlL3BtYy5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisr
> KyB4ZW4tMi4wLjUtcHJvZi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvcG1jLmMJMjAwNS0wNC0wNiAw
> OToyNzoxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTAsMCArMSwyODEgQEAKKy8qCisgKiBDb3B5cmln
> aHQgKEMpIDIwMDUgSGV3bGV0dC1QYWNrYXJkIENvLgorICogd3JpdHRlbiBieSBBcmF2aW5kIE1l
> bm9uLCBlbWFpbDogeGVub3Byb2ZAZ3JvdXBzLmhwLmNvbQorICovCisKKyNpbmNsdWRlIDx4ZW4v
> c2NoZWQuaD4KKworI2luY2x1ZGUgIm9wX2NvdW50ZXIuaCIKKworaW50IGFjdGl2ZV9kb21haW5z
> W01BWF9PUFJPRl9ET01BSU5TXTsKK2ludCBwYXNzaXZlX2RvbWFpbnNbTUFYX09QUk9GX0RPTUFJ
> TlNdOwordW5zaWduZWQgaW50IGFkb21haW5zID0gMDsKK3Vuc2lnbmVkIGludCBwZG9tYWlucyA9
> IDA7Cit1bnNpZ25lZCBpbnQgYWN0aXZhdGVkID0gMDsKKworI2RlZmluZSBWSVJRX0JJVE1BU0tf
> U0laRQkoTUFYX09QUk9GX0RPTUFJTlMvMzIgKyAxKQorCitzdHJ1Y3QgZG9tYWluICogcHJpbWFy
> eV9wcm9maWxlciA9IE5VTEw7CitzdHJ1Y3QgZG9tYWluICogYWRvbWFpbl9wdHJzW01BWF9PUFJP
> Rl9ET01BSU5TXTsKK3Vuc2lnbmVkIGludCB2aXJxX292Zl9wZW5kaW5nW1ZJUlFfQklUTUFTS19T
> SVpFXTsKKworaW50IGlzX2FjdGl2ZShzdHJ1Y3QgZG9tYWluICpkKSAKK3sKKwlpbnQgaTsKKwlm
> b3IgKGkgPSAwOyBpIDwgYWRvbWFpbnM7IGkrKykKKwkJaWYgKGQtPmlkID09IGFjdGl2ZV9kb21h
> aW5zW2ldKQorCQkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK2ludCBhY3RpdmVfaWQoc3Ry
> dWN0IGRvbWFpbiAqZCkKK3sKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgYWRvbWFpbnM7IGkr
> KykKKwkJaWYgKGQgPT0gYWRvbWFpbl9wdHJzW2ldKQorCQkJcmV0dXJuIGk7CisJcmV0dXJuIC0x
> OworfQorCit2b2lkIGZyZWVfYWRvbWFpbl9wdHJzKCkgCit7CisJaW50IGk7CisJaW50IG51bSA9
> IGFkb21haW5zOworCisJYWRvbWFpbnMgPSAwOworCWZvciAoaSA9IDA7IGkgPCBWSVJRX0JJVE1B
> U0tfU0laRTsgaSsrKQorCQl2aXJxX292Zl9wZW5kaW5nW2ldID0gMDsKKworCWZvciAoaSA9IDA7
> IGkgPCBudW07IGkrKykgeworCQlwdXRfZG9tYWluKGFkb21haW5fcHRyc1tpXSk7CisJCWFkb21h
> aW5fcHRyc1tpXSA9IE5VTEw7CisJfQorfQorCitpbnQgc2V0X2Fkb21haW5fcHRycyhpbnQgbnVt
> KQoreworCWludCBpOworCXN0cnVjdCBkb21haW4gKmQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgVklS
> UV9CSVRNQVNLX1NJWkU7IGkrKykKKwkJdmlycV9vdmZfcGVuZGluZ1tpXSA9IDA7CisKKwlmb3Ig
> KGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKKwkJZCA9IGZpbmRfZG9tYWluX2J5X2lkKGFjdGl2ZV9k
> b21haW5zW2ldKTsKKwkJaWYgKCFkKSB7CisJCQlmcmVlX2Fkb21haW5fcHRycygpOworCQkJcmV0
> dXJuIC1FRkFVTFQ7CisJCX0KKwkJYWRvbWFpbl9wdHJzW2ldID0gZDsKKwkJYWRvbWFpbnMrKzsK
> Kwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBzZXRfYWN0aXZlKHN0cnVjdCBkb21haW4gKmQpCit7
> CisJaWYgKGlzX2FjdGl2ZShkKSkKKwkJcmV0dXJuIDA7CisJLyogaGFjayBpZiB3ZSBydW4gb3V0
> IG9mIHNwYWNlICovCisJaWYgKGFkb21haW5zID49IE1BWF9PUFJPRl9ET01BSU5TKSB7CisJCWFk
> b21haW5zLS07CisJCXB1dF9kb21haW4oYWRvbWFpbl9wdHJzW2Fkb21haW5zXSk7CisJfQorCWFj
> dGl2ZV9kb21haW5zW2Fkb21haW5zXSA9IGQtPmlkOworCWlmIChnZXRfZG9tYWluKGQpKQorCQlh
> ZG9tYWluX3B0cnNbYWRvbWFpbnMrK10gPSBkOworCWVsc2UgeworCQlmcmVlX2Fkb21haW5fcHRy
> cygpOworCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBpc19wYXNz
> aXZlKHN0cnVjdCBkb21haW4gKmQpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IHBkb21h
> aW5zOyBpKyspCisJCWlmIChkLT5pZCA9PSBwYXNzaXZlX2RvbWFpbnNbaV0pCisJCQlyZXR1cm4g
> MTsKKwlyZXR1cm4gMDsKK30KKworaW50IGlzX3Byb2ZpbGVkKHN0cnVjdCBkb21haW4gKmQpCit7
> CisJaWYgKGlzX2FjdGl2ZShkKSB8fCBpc19wYXNzaXZlKGQpKQorCQlyZXR1cm4gMTsKKwlyZXR1
> cm4gMDsKK30KKwordm9pZCBwbWNfbG9nX2V2ZW50KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk
> IGludCBlaXAsIGludCBtb2RlLCBpbnQgZXZlbnQpIAoreworCXNoYXJlZF9pbmZvX3QgKnMgPSBO
> VUxMOworCXN0cnVjdCBkb21haW4gKmRlc3QgPSBkOworCWludCBoZWFkID0gMDsKKworCWlmICgh
> aXNfcHJvZmlsZWQoZCkpCisJCXJldHVybjsKKworCWlmIChpc19wYXNzaXZlKGQpKSB7CisJCWRl
> c3QgPSBwcmltYXJ5X3Byb2ZpbGVyOworCQlnb3RvIGxvZ19wYXNzaXZlOworCX0KKwkJCitsb2df
> YWN0aXZlOgorCXMgPSBkZXN0LT5zaGFyZWRfaW5mbzsKKworCWhlYWQgPSBzLT5ldmVudF9oZWFk
> OworCWlmIChoZWFkID49IE1BWF9PUFJPRl9FVkVOVFMpCisJCWhlYWQgPSAwOworCisJaWYgKHMt
> Pmxvc2luZ19zYW1wbGVzKQorCQlzLT5zYW1wbGVzX2xvc3QrKzsKKwlpZiAoaGVhZCA9PSBzLT5l
> dmVudF90YWlsIC0gMSB8fCAoaGVhZCA9PSBNQVhfT1BST0ZfRVZFTlRTIC0gMSAmJiBzLT5ldmVu
> dF90YWlsID09IDApKQorCQlzLT5sb3Npbmdfc2FtcGxlcyA9IDE7CisKKwlzLT5ldmVudF9sb2db
> aGVhZF0uZWlwID0gZWlwOworCXMtPmV2ZW50X2xvZ1toZWFkXS5tb2RlID0gbW9kZTsKKwlzLT5l
> dmVudF9sb2dbaGVhZF0uZXZlbnQgPSBldmVudDsKKwloZWFkKys7CisJcy0+ZXZlbnRfaGVhZCA9
> IGhlYWQ7CisJcmV0dXJuOworCitsb2dfcGFzc2l2ZToKKwkvKiBXZSB1c2UgdGhlIGZvbGxvd2lu
> ZyBpbmVmZmljaWVudCBmb3JtYXQgZm9yIGxvZ2dpbmcgZXZlbnRzIGZyb20gb3RoZXIKKwkJZG9t
> YWlucy4gV2UgcHV0IGEgc3BlY2lhbCByZWNvcmQgaW5kaWNhdGluZyB0aGF0IHRoZSBuZXh0IHJl
> Y29yZCBpcworCQlmb3IgYW5vdGhlciBkb21haW4uIFRoaXMgaXMgZG9uZSBmb3IgZWFjaCBzYW1w
> bGUgZnJvbSBhbm90aGVyCisJCWRvbWFpbiAqLyAKKwlzID0gZGVzdC0+c2hhcmVkX2luZm87CisK
> KwloZWFkID0gcy0+ZXZlbnRfaGVhZDsKKwlpZiAoaGVhZCA+PSBNQVhfT1BST0ZfRVZFTlRTKQor
> CQloZWFkID0gMDsKKworCWlmIChzLT5sb3Npbmdfc2FtcGxlcykKKwkJcy0+c2FtcGxlc19sb3N0
> Kys7CisJaWYgKGhlYWQgPT0gcy0+ZXZlbnRfdGFpbCAtIDEgfHwgKGhlYWQgPT0gTUFYX09QUk9G
> X0VWRU5UUyAtIDEgJiYgcy0+ZXZlbnRfdGFpbCA9PSAwKSkKKwkJcy0+bG9zaW5nX3NhbXBsZXMg
> PSAxOworCisJcy0+ZXZlbnRfbG9nW2hlYWRdLmVpcCA9IH4xVUw7CisJcy0+ZXZlbnRfbG9nW2hl
> YWRdLm1vZGUgPSB+MDsKKwlzLT5ldmVudF9sb2dbaGVhZF0uZXZlbnQgPSBkLT5pZDsKKwloZWFk
> Kys7CisJcy0+ZXZlbnRfaGVhZCA9IGhlYWQ7CisJZ290byBsb2dfYWN0aXZlOworfQorCitzdGF0
> aWMgdm9pZCBwbWNfZXZlbnRfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQoreworCXNoYXJlZF9pbmZv
> X3QgKnMgPSBkLT5zaGFyZWRfaW5mbzsKKwlzLT5ldmVudF9oZWFkID0gMDsKKwlzLT5ldmVudF90
> YWlsID0gMDsKKwlzLT5sb3Npbmdfc2FtcGxlcyA9IDA7CisJcy0+c2FtcGxlc19sb3N0ID0gMDsK
> KwlzLT5ubWlfcmVzdGFydHMgPSAwOworCXMtPmFjdGl2ZV9zYW1wbGVzID0gMDsKKwlzLT5wYXNz
> aXZlX3NhbXBsZXMgPSAwOworCXMtPm90aGVyX3NhbXBsZXMgPSAwOworfQorCitleHRlcm4gaW50
> IG5taV9pbml0KGludCAqbnVtX2V2ZW50cywgaW50ICppc19wcmltYXJ5KTsKK2V4dGVybiBpbnQg
> bm1pX3Jlc2VydmVfY291bnRlcnModm9pZCk7CitleHRlcm4gaW50IG5taV9zZXR1cF9ldmVudHMo
> dm9pZCk7CitleHRlcm4gaW50IG5taV9lbmFibGVfdmlycSh2b2lkKTsKK2V4dGVybiBpbnQgbm1p
> X3N0YXJ0KHZvaWQpOworZXh0ZXJuIHZvaWQgbm1pX3N0b3Aodm9pZCk7CitleHRlcm4gdm9pZCBu
> bWlfZGlzYWJsZV92aXJxKHZvaWQpOworZXh0ZXJuIHZvaWQgbm1pX3JlbGVhc2VfY291bnRlcnMo
> dm9pZCk7CisKKyNkZWZpbmUgUFJJVl9PUChvcCkJKChvcCA9PSBQTUNfU0VUX0FDVElWRSkgfHwg
> KG9wID09IFBNQ19TRVRfUEFTU0lWRSkgfHwgKG9wID09IFBNQ19SRVNFUlZFX0NPVU5URVJTKSBc
> CisJCQl8fCAob3AgPT0gUE1DX1NFVFVQX0VWRU5UUykgfHwgKG9wID09IFBNQ19TVEFSVCkgfHwg
> KG9wID09IFBNQ19TVE9QKSBcCisJCQl8fCAob3AgPT0gUE1DX1JFTEVBU0VfQ09VTlRFUlMpIHx8
> IChvcCA9PSBQTUNfU0hVVERPV04pKQorCitpbnQgZG9fcG1jX29wKGludCBvcCwgdW5zaWduZWQg
> aW50IGFyZzEsIHVuc2lnbmVkIGludCBhcmcyKQoreworCWludCByZXQgPSAwOworCisJaWYgKFBS
> SVZfT1Aob3ApICYmIGN1cnJlbnQgIT0gcHJpbWFyeV9wcm9maWxlcikKKwkJcmV0dXJuIC1FUEVS
> TTsKKworCXN3aXRjaCAob3ApIHsKKwkJY2FzZSBQTUNfSU5JVDoKKwkJCXJldCA9IG5taV9pbml0
> KChpbnQgKilhcmcxLCAoaW50ICopYXJnMik7CisJCQlicmVhazsKKworCQljYXNlIFBNQ19TRVRf
> QUNUSVZFOgorCQkJaWYgKGFkb21haW5zICE9IDApCisJCQkJcmV0dXJuIC1FUEVSTTsKKwkJCWlm
> IChjb3B5X2Zyb21fdXNlcigodm9pZCAqKSZhY3RpdmVfZG9tYWlucywKKwkJCQkodm9pZCAqKWFy
> ZzEsIGFyZzIqc2l6ZW9mKGludCkpKQorCQkJCXJldHVybiAtRUZBVUxUOworCQkJaWYgKHNldF9h
> ZG9tYWluX3B0cnMoYXJnMikpCisJCQkJcmV0dXJuIC1FRkFVTFQ7CisJCQlpZiAoc2V0X2FjdGl2
> ZShjdXJyZW50KSkKKwkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCWJyZWFrOworCisJCWNhc2UgUE1D
> X1NFVF9QQVNTSVZFOgorCQkJaWYgKHBkb21haW5zICE9IDApCisJCQkJcmV0dXJuIC1FUEVSTTsK
> KwkJCWlmIChjb3B5X2Zyb21fdXNlcigodm9pZCAqKSZwYXNzaXZlX2RvbWFpbnMsCisJCQkJKHZv
> aWQgKilhcmcxLCBhcmcyKnNpemVvZihpbnQpKSkKKwkJCQlyZXR1cm4gLUVGQVVMVDsKKwkJCXBk
> b21haW5zID0gYXJnMjsKKwkJCWJyZWFrOworCisJCWNhc2UgUE1DX1JFU0VSVkVfQ09VTlRFUlM6
> CisJCQlyZXQgPSBubWlfcmVzZXJ2ZV9jb3VudGVycygpOworCQkJYnJlYWs7CisKKwkJY2FzZSBQ
> TUNfU0VUVVBfRVZFTlRTOgorCQkJaWYgKGNvcHlfZnJvbV91c2VyKCh2b2lkICopJmNvdW50ZXJf
> Y29uZmlnLCAKKwkJCQkodm9pZCAqKWFyZzEsIGFyZzIqc2l6ZW9mKHN0cnVjdCBvcF9jb3VudGVy
> X2NvbmZpZykpKQorCQkJCXJldHVybiAtRUZBVUxUOworCQkJcmV0ID0gbm1pX3NldHVwX2V2ZW50
> cygpOworCQkJYnJlYWs7CisKKwkJY2FzZSBQTUNfRU5BQkxFX1ZJUlE6CisJCQlpZiAoIWlzX2Fj
> dGl2ZShjdXJyZW50KSkgeworCQkJCWlmIChjdXJyZW50ICE9IHByaW1hcnlfcHJvZmlsZXIpCisJ
> CQkJCXJldHVybiAtRVBFUk07CisJCQkJZWxzZQorCQkJCQlzZXRfYWN0aXZlKGN1cnJlbnQpOwor
> CQkJfQorCQkJcmV0ID0gbm1pX2VuYWJsZV92aXJxKCk7CisJCQlwbWNfZXZlbnRfaW5pdChjdXJy
> ZW50KTsKKwkJCWFjdGl2YXRlZCsrOworCQkJYnJlYWs7CisKKwkJY2FzZSBQTUNfU1RBUlQ6CisJ
> CQlpZiAoYWN0aXZhdGVkIDwgYWRvbWFpbnMpCisJCQkJcmV0dXJuIC1FUEVSTTsKKwkJCXJldCA9
> IG5taV9zdGFydCgpOworCQkJYnJlYWs7CisKKwkJY2FzZSBQTUNfU1RPUDoKKwkJCW5taV9zdG9w
> KCk7CisJCQlicmVhazsKKworCQljYXNlIFBNQ19ESVNBQkxFX1ZJUlE6CisJCQlpZiAoIWlzX2Fj
> dGl2ZShjdXJyZW50KSkKKwkJCQlyZXR1cm4gLUVQRVJNOworCQkJbm1pX2Rpc2FibGVfdmlycSgp
> OworCQkJYWN0aXZhdGVkLS07CisJCQlicmVhazsKKworCQljYXNlIFBNQ19SRUxFQVNFX0NPVU5U
> RVJTOgorCQkJbm1pX3JlbGVhc2VfY291bnRlcnMoKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUE1D
> X1NIVVRET1dOOgorCQkJZnJlZV9hZG9tYWluX3B0cnMoKTsKKwkJCXBkb21haW5zID0gMDsKKwkJ
> CWFjdGl2YXRlZCA9IDA7CisJCQlwcmltYXJ5X3Byb2ZpbGVyID0gTlVMTDsKKwkJCWJyZWFrOwor
> CisJCWRlZmF1bHQ6CisJCQlyZXQgPSAtRUlOVkFMOworCX0KKwlyZXR1cm4gcmV0OworfQpkaWZm
> IC1QTmF1ciB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L3RyYXBzLmMgeGVuLTIuMC41LXByb2YveGVu
> L2FyY2gveDg2L3RyYXBzLmMKLS0tIHhlbi0yLjAuNS94ZW4vYXJjaC94ODYvdHJhcHMuYwkyMDA1
> LTAzLTEwIDExOjUyOjE1LjAwMDAwMDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2Fy
> Y2gveDg2L3RyYXBzLmMJMjAwNS0wNC0wNiAxMDoyOTowNC4wMDAwMDAwMDAgLTA3MDAKQEAgLTIs
> NiArMiwxMCBAQAogICogYXJjaC9pMzg2L3RyYXBzLmMKICAqIAogICogTW9kaWZpY2F0aW9ucyB0
> byBMaW51eCBvcmlnaW5hbCBhcmUgY29weXJpZ2h0IChjKSAyMDAyLTIwMDQsIEsgQSBGcmFzZXIK
> KyAqCisgKiBNb2RpZmllZCBieSBBcmF2aW5kIE1lbm9uIGZvciBzdXBwb3J0aW5nIG9wcm9maWxl
> CisgKiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZToKKyAqIENvcHlyaWdodCAoQykgMjAwNSBIZXds
> ZXR0LVBhY2thcmQgQ28uCiAgKiAKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5
> b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVy
> bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAt
> NTEsNiArNTUsNyBAQAogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8YXNtL2kz
> ODcuaD4KICNpbmNsdWRlIDxhc20vZGVidWdnZXIuaD4KKyNpbmNsdWRlIDxhc20vbm1pLmg+CiAK
> IC8qCiAgKiBvcHRfbm1pOiBvbmUgb2YgJ2lnbm9yZScsICdkb20wJywgb3IgJ2ZhdGFsJy4KQEAg
> LTU5OCw3ICs2MDMsNyBAQAogICAgIHByaW50aygiRG8geW91IGhhdmUgYSBzdHJhbmdlIHBvd2Vy
> IHNhdmluZyBtb2RlIGVuYWJsZWQ/XG4iKTsKIH0KIAotYXNtbGlua2FnZSB2b2lkIGRvX25taShz
> dHJ1Y3QgeGVuX3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcmVhc29uKQorc3RhdGljIHZvaWQg
> ZGVmYXVsdF9kb19ubWkoc3RydWN0IHhlbl9yZWdzICogcmVncywgdW5zaWduZWQgbG9uZyByZWFz
> b24pCiB7CiAgICAgKytubWlfY291bnQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIApAQCAtNjEwLDYg
> KzYxNSwzNSBAQAogICAgICAgICB1bmtub3duX25taV9lcnJvcigodW5zaWduZWQgY2hhcikocmVh
> c29uJjB4ZmYpKTsKIH0KIAorc3RhdGljIGludCBkdW1teV9ubWlfY2FsbGJhY2soc3RydWN0IHhl
> bl9yZWdzICogcmVncywgaW50IGNwdSkKK3sKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
> YyBubWlfY2FsbGJhY2tfdCBubWlfY2FsbGJhY2sgPSBkdW1teV9ubWlfY2FsbGJhY2s7CisKK2Fz
> bWxpbmthZ2Ugdm9pZCBkb19ubWkoc3RydWN0IHhlbl9yZWdzICogcmVncywgdW5zaWduZWQgbG9u
> ZyByZWFzb24pCit7CisJaW50IGNwdTsKKyAgICAgICAgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgp
> OworCisgICAgICAgIGlmICghbm1pX2NhbGxiYWNrKHJlZ3MsIGNwdSkpIAorICAgICAgICAgICAg
> ICAgIGRlZmF1bHRfZG9fbm1pKHJlZ3MsIHJlYXNvbik7Cit9CisKK3ZvaWQgc2V0X25taV9jYWxs
> YmFjayhubWlfY2FsbGJhY2tfdCBjYWxsYmFjaykKK3sKKyAgICAgICAgbm1pX2NhbGxiYWNrID0g
> Y2FsbGJhY2s7Cit9CisKK3ZvaWQgdW5zZXRfbm1pX2NhbGxiYWNrKHZvaWQpCit7CisgICAgICAg
> IG5taV9jYWxsYmFjayA9IGR1bW15X25taV9jYWxsYmFjazsKK30KKworRVhQT1JUX1NZTUJPTChz
> ZXRfbm1pX2NhbGxiYWNrKTsKK0VYUE9SVF9TWU1CT0wodW5zZXRfbm1pX2NhbGxiYWNrKTsKKwog
> dW5zaWduZWQgbG9uZyBubWlfc29mdGlycV9yZWFzb247CiBzdGF0aWMgdm9pZCBubWlfc29mdGly
> cSh2b2lkKQogewpkaWZmIC1QTmF1ciB4ZW4tMi4wLjUveGVuL2FyY2gveDg2L3g4Nl8zMi9lbnRy
> eS5TIHhlbi0yLjAuNS1wcm9mL3hlbi9hcmNoL3g4Ni94ODZfMzIvZW50cnkuUwotLS0geGVuLTIu
> MC41L3hlbi9hcmNoL3g4Ni94ODZfMzIvZW50cnkuUwkyMDA1LTAzLTEwIDExOjUyOjE2LjAwMDAw
> MDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2FyY2gveDg2L3g4Nl8zMi9lbnRyeS5T
> CTIwMDUtMDQtMDYgMTA6MjM6NDYuMDAwMDAwMDAwIC0wNzAwCkBAIC0zLDYgKzMsMTAgQEAKICAq
> CiAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCwgSyBBIEZyYXNlcgogICogQ29weXJpZ2h0IChj
> KSAxOTkxLCAxOTkyIExpbnVzIFRvcnZhbGRzCisgKgorICogTW9kaWZpZWQgYnkgQXJhdmluZCBN
> ZW5vbiBmb3Igc3VwcG9ydGluZyBvcHJvZmlsZQorICogVGhlc2UgbW9kaWZpY2F0aW9ucyBhcmU6
> CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgSGV3bGV0dC1QYWNrYXJkIENvLgogICogCiAgKiBDYWxs
> aW5nIGJhY2sgdG8gYSBndWVzdCBPUzoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PQpA
> QCAtNDk4LDEwICs1MDIsMTAgQEAKICAgICAgICAgam56ICAgZG9fd2F0Y2hkb2dfdGljawogICAg
> ICAgICBtb3ZsICAlZHMsJWVheAogICAgICAgICBjbXB3ICAkKF9fSFlQRVJWSVNPUl9EUyksJWF4
> Ci0gICAgICAgIGpuZSAgIGRlZmVyX25taQorICAgICAgICBqbmUgICBmb3JjZV9ubWkKICAgICAg
> ICAgbW92bCAgJWVzLCVlYXgKICAgICAgICAgY21wdyAgJChfX0hZUEVSVklTT1JfRFMpLCVheAot
> ICAgICAgICBqbmUgICBkZWZlcl9ubWkKKyAgICAgICAgam5lICAgZm9yY2Vfbm1pCiAKIGRvX3dh
> dGNoZG9nX3RpY2s6CiAgICAgICAgIG1vdmwgICQoX19IWVBFUlZJU09SX0RTKSwlZWR4CkBAIC01
> MTIsMTIgKzUxNiw0NCBAQAogCXB1c2hsICVlZHggICAjIHJlZ3MKICAgICAgICAgY2FsbCAgU1lN
> Qk9MX05BTUUoZG9fbm1pKQogCWFkZGwgICQ4LCVlc3AKKworCS8qIHhlbm9wcm9mOiBXZSBuZWVk
> IHRvIGNoZWNrIGlmIHZpcnR1YWwgaW50ZXJydXB0IG11c3QgYmUgZ2VuZXJhdGVkICovCisJam1w
> IHJldF9mcm9tX2ludHIKKworCS8qCiAgICAgICAgIG1vdmwgIFhSRUdTX2VmbGFncyglZXNwKSwl
> ZWF4CiAgICAgICAgIG1vdmIgIFhSRUdTX2NzKCVlc3ApLCVhbAogICAgICAgICB0ZXN0bCAkKDN8
> WDg2X0VGTEFHU19WTSksJWVheAogCWp6ICAgIHJlc3RvcmVfYWxsX3hlbgogICAgICAgICBHRVRf
> Q1VSUkVOVCglZWJ4KQogICAgICAgICBqbXAgICByZXN0b3JlX2FsbF9ndWVzdAorCSovCisKK2Zv
> cmNlX25taToKKwltb3ZsICVkcywtNCglZXNwKQorCW1vdmwgJWVzLC04KCVlc3ApCisJbW92bCAl
> ZnMsLTEyKCVlc3ApCisJbW92bCAlZ3MsLTE2KCVlc3ApCisJc3VibCAkMTYsJWVzcAorCisJbW92
> bCAkKF9fSFlQRVJWSVNPUl9EUyksJWVkeAorCW1vdmwgJWVkeCwlZHMKKwltb3ZsICVlZHgsJWVz
> CisJCisJbW92bCAlZXNwLCVlZHgKKwlhZGRsICQxNiwlZWR4CisJcHVzaGwgJWVieAorCXB1c2hs
> ICVlZHgKKwljYWxsIFNZTUJPTF9OQU1FKGRvX25taSkKKwlhZGRsICQ4LCVlc3AKKworCWFkZGwg
> JDE2LCVlc3AKKwltb3ZsIC00KCVlc3ApLCVkcworCW1vdmwgLTgoJWVzcCksJWVzCisJbW92bCAt
> MTIoJWVzcCksJWZzCisJbW92bCAtMTYoJWVzcCksJWdzCisKKwlqbXAgcmVzdG9yZV9hbGxfeGVu
> CiAKIGRlZmVyX25taToKICAgICAgICAgbW92bCAgJEZJWE1BUF9hcGljX2Jhc2UsJWVheApAQCAt
> Njc0LDYgKzcxMCw3IEBACiAgICAgICAgIC5sb25nIFNZTUJPTF9OQU1FKGRvX3ZtX2Fzc2lzdCkK
> ICAgICAgICAgLmxvbmcgU1lNQk9MX05BTUUoZG9fdXBkYXRlX3ZhX21hcHBpbmdfb3RoZXJkb21h
> aW4pCiAgICAgICAgIC5sb25nIFNZTUJPTF9OQU1FKGRvX3N3aXRjaF92bTg2KQorICAgICAgICAu
> bG9uZyBTWU1CT0xfTkFNRShkb19wbWNfb3ApCiAgICAgICAgIC5yZXB0IE5SX2h5cGVyY2FsbHMt
> KCguLWh5cGVyY2FsbF90YWJsZSkvNCkKICAgICAgICAgLmxvbmcgU1lNQk9MX05BTUUoZG9fbmlf
> aHlwZXJjYWxsKQogICAgICAgICAuZW5kcgpkaWZmIC1QTmF1ciB4ZW4tMi4wLjUveGVuL2luY2x1
> ZGUvYXNtLXg4Ni9hcGljLmggeGVuLTIuMC41LXByb2YveGVuL2luY2x1ZGUvYXNtLXg4Ni9hcGlj
> LmgKLS0tIHhlbi0yLjAuNS94ZW4vaW5jbHVkZS9hc20teDg2L2FwaWMuaAkyMDA1LTAzLTEwIDEx
> OjUyOjEyLjAwMDAwMDAwMCAtMDgwMAorKysgeGVuLTIuMC41LXByb2YveGVuL2luY2x1ZGUvYXNt
> LXg4Ni9hcGljLmgJMjAwNS0wNC0wNiAwOToyNzoxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTc3LDYg
> Kzc3LDggQEAKIGV4dGVybiB2b2lkIHNtcF9sb2NhbF90aW1lcl9pbnRlcnJ1cHQgKHN0cnVjdCB4
> ZW5fcmVncyAqIHJlZ3MpOwogZXh0ZXJuIHZvaWQgc2V0dXBfQVBJQ19jbG9ja3MgKHZvaWQpOwog
> ZXh0ZXJuIHZvaWQgc2V0dXBfYXBpY19ubWlfd2F0Y2hkb2cgKHZvaWQpOworZXh0ZXJuIGludCBy
> ZXNlcnZlX2xhcGljX25taSh2b2lkKTsKK2V4dGVybiB2b2lkIHJlbGVhc2VfbGFwaWNfbm1pKHZv
> aWQpOwogZXh0ZXJuIHZvaWQgbm1pX3dhdGNoZG9nX3RpY2sgKHN0cnVjdCB4ZW5fcmVncyAqIHJl
> Z3MpOwogZXh0ZXJuIHZvaWQgdG91Y2hfbm1pX3dhdGNoZG9nKHZvaWQpOwogZXh0ZXJuIGludCBB
> UElDX2luaXRfdW5pcHJvY2Vzc29yICh2b2lkKTsKZGlmZiAtUE5hdXIgeGVuLTIuMC41L3hlbi9p
> bmNsdWRlL2FzbS14ODYvbXNyLmggeGVuLTIuMC41LXByb2YveGVuL2luY2x1ZGUvYXNtLXg4Ni9t
> c3IuaAotLS0geGVuLTIuMC41L3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgJMjAwNS0wMy0xMCAx
> MTo1MjoxNS4wMDAwMDAwMDAgLTA4MDAKKysrIHhlbi0yLjAuNS1wcm9mL3hlbi9pbmNsdWRlL2Fz
> bS14ODYvbXNyLmgJMjAwNS0wNC0wNiAwOToyNzoxMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTgsMzgg
> KzgsMzggQEAKICAqLwogCiAjZGVmaW5lIHJkbXNyKG1zcix2YWwxLHZhbDIpIFwKLSAgICAgX19h
> c21fXyBfX3ZvbGF0aWxlX18oInJkbXNyIiBcCisJX19hc21fXyBfX3ZvbGF0aWxlX18oInJkbXNy
> IiBcCiAJCQkgIDogIj1hIiAodmFsMSksICI9ZCIgKHZhbDIpIFwKIAkJCSAgOiAiYyIgKG1zcikp
> CiAKLSNkZWZpbmUgcmRtc3JsKG1zcix2YWwpIGRvIHsgdW5zaWduZWQgbG9uZyBhX18sYl9fOyBc
> Ci0gICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkbXNyIiBcCi0JCQkgICAgOiAiPWEiIChh
> X18pLCAiPWQiIChiX18pIFwKLQkJCSAgICA6ICJjIiAobXNyKSk7IFwKLSAgICAgICB2YWwgPSBh
> X18gfCAoYl9fPDwzMik7IFwKLX0gd2hpbGUoMCk7IAotCiAjZGVmaW5lIHdybXNyKG1zcix2YWwx
> LHZhbDIpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIndybXNyIiBcCisJX19hc21fXyBf
> X3ZvbGF0aWxlX18oIndybXNyIiBcCiAJCQkgIDogLyogbm8gb3V0cHV0cyAqLyBcCiAJCQkgIDog
> ImMiIChtc3IpLCAiYSIgKHZhbDEpLCAiZCIgKHZhbDIpKQogCisjZGVmaW5lIHJkbXNybChtc3Is
> dmFsKSBkbyB7IFwKKwl1bnNpZ25lZCBsb25nIGxfXyxoX187IFwKKwlyZG1zciAobXNyLCBsX18s
> IGhfXyk7ICBcCisJdmFsID0gbF9fOyAgXAorCXZhbCB8PSAoKHU2NCloX188PDMyKTsgIFwKK30g
> d2hpbGUoMCkKKworc3RhdGljIGlubGluZSB2b2lkIHdybXNybCAodW5zaWduZWQgbG9uZyBtc3Is
> IHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwpCit7CisJdW5zaWduZWQgbG9uZyBsbywgaGk7CisJbG8g
> PSAodW5zaWduZWQgbG9uZykgdmFsOworCWhpID0gdmFsID4+IDMyOworCXdybXNyIChtc3IsIGxv
> LCBoaSk7Cit9CisKICNkZWZpbmUgcmR0c2MobG93LGhpZ2gpIFwKICAgICAgX19hc21fXyBfX3Zv
> bGF0aWxlX18oInJkdHNjIiA6ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpKQogCiAjZGVmaW5lIHJk
> dHNjbChsb3cpIFwKICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9YSIgKGxv
> dykgOiA6ICJlZHgiKQogCi0jaWYgZGVmaW5lZChfX2kzODZfXykKICNkZWZpbmUgcmR0c2NsbCh2
> YWwpIFwKICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0j
> ZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0jZGVmaW5lIHJkdHNjbGwodmFsKSBkbyB7IFwKLSAg
> ICAgdW5zaWduZWQgaW50IGEsZDsgXAotICAgICBhc20gdm9sYXRpbGUoInJkdHNjIiA6ICI9YSIg
> KGEpLCAiPWQiIChkKSk7IFwKLSAgICAgKHZhbCkgPSAoKHVuc2lnbmVkIGxvbmcpYSkgfCAoKCh1
> bnNpZ25lZCBsb25nKWQpPDwzMik7IFwKLX0gd2hpbGUoMCkKLSNlbmRpZgogCiAjZGVmaW5lIHdy
> aXRlX3RzYyh2YWwxLHZhbDIpIHdybXNyKDB4MTAsIHZhbDEsIHZhbDIpCiAKQEAgLTU1LDY2ICs1
> NSw2IEBACiAjZGVmaW5lIE1TUl9JQTMyX1BMQVRGT1JNX0lECQkweDE3CiAjZGVmaW5lIE1TUl9J
> QTMyX0VCTF9DUl9QT1dFUk9OCQkweDJhCiAKLS8qIEFNRC9LOCBzcGVjaWZpYyBNU1JzICovIAot
> I2RlZmluZSBNU1JfRUZFUiAweGMwMDAwMDgwCQkvKiBleHRlbmRlZCBmZWF0dXJlIHJlZ2lzdGVy
> ICovCi0jZGVmaW5lIE1TUl9TVEFSIDB4YzAwMDAwODEJCS8qIGxlZ2FjeSBtb2RlIFNZU0NBTEwg
> dGFyZ2V0ICovCi0jZGVmaW5lIE1TUl9MU1RBUiAweGMwMDAwMDgyIAkJLyogbG9uZyBtb2RlIFNZ
> U0NBTEwgdGFyZ2V0ICovCi0jZGVmaW5lIE1TUl9DU1RBUiAweGMwMDAwMDgzCQkvKiBjb21wYXRp
> YmlsaXR5IG1vZGUgU1lTQ0FMTCB0YXJnZXQgKi8KLSNkZWZpbmUgTVNSX1NZU0NBTExfTUFTSyAw
> eGMwMDAwMDg0CS8qIEVGTEFHUyBtYXNrIGZvciBzeXNjYWxsICovCi0jZGVmaW5lIE1TUl9GU19C
> QVNFIDB4YzAwMDAxMDAJCS8qIDY0Yml0IEdTIGJhc2UgKi8KLSNkZWZpbmUgTVNSX0dTX0JBU0Ug
> MHhjMDAwMDEwMQkJLyogNjRiaXQgRlMgYmFzZSAqLwotI2RlZmluZSBNU1JfS0VSTkVMX0dTX0JB
> U0UgIDB4YzAwMDAxMDIJLyogU3dhcEdTIEdTIHNoYWRvdyAob3IgVVNFUl9HUyBmcm9tIGtlcm5l
> bCkgKi8gCi0vKiBFRkVSIGJpdHM6ICovIAotI2RlZmluZSBfRUZFUl9TQ0UgMCAgLyogU1lTQ0FM
> TC9TWVNSRVQgKi8KLSNkZWZpbmUgX0VGRVJfTE1FIDggIC8qIExvbmcgbW9kZSBlbmFibGUgKi8K
> LSNkZWZpbmUgX0VGRVJfTE1BIDEwIC8qIExvbmcgbW9kZSBhY3RpdmUgKHJlYWQtb25seSkgKi8K
> LSNkZWZpbmUgX0VGRVJfTlggMTEgIC8qIE5vIGV4ZWN1dGUgZW5hYmxlICovCi0KLSNkZWZpbmUg
> RUZFUl9TQ0UgKDE8PF9FRkVSX1NDRSkKLSNkZWZpbmUgRUZFUl9MTUUgKDE8PF9FRkVSX0xNRSkK
> LSNkZWZpbmUgRUZFUl9MTUEgKDE8PF9FRkVSX0xNQSkKLSNkZWZpbmUgRUZFUl9OWCAoMTw8X0VG
> RVJfTlgpCi0KLS8qIEludGVsIE1TUnMuIFNvbWUgYWxzbyBhdmFpbGFibGUgb24gb3RoZXIgQ1BV
> cyAqLwotI2RlZmluZSBNU1JfSUEzMl9QTEFURk9STV9JRAkweDE3Ci0KLSNkZWZpbmUgTVNSX0lB
> MzJfUEVSRkNUUjAgICAgICAweGMxCi0jZGVmaW5lIE1TUl9JQTMyX1BFUkZDVFIxICAgICAgMHhj
> MgotCi0jZGVmaW5lIE1TUl9NVFJSY2FwCQkweDBmZQotI2RlZmluZSBNU1JfSUEzMl9CQkxfQ1Jf
> Q1RMICAgICAgICAweDExOQotCi0jZGVmaW5lIE1TUl9JQTMyX01DR19DQVAgICAgICAgMHgxNzkK
> LSNkZWZpbmUgTVNSX0lBMzJfTUNHX1NUQVRVUyAgICAgICAgMHgxN2EKLSNkZWZpbmUgTVNSX0lB
> MzJfTUNHX0NUTCAgICAgICAweDE3YgotCi0jZGVmaW5lIE1TUl9JQTMyX0VWTlRTRUwwICAgICAg
> MHgxODYKLSNkZWZpbmUgTVNSX0lBMzJfRVZOVFNFTDEgICAgICAweDE4NwotCi0jZGVmaW5lIE1T
> Ul9JQTMyX0RFQlVHQ1RMTVNSICAgICAgIDB4MWQ5Ci0jZGVmaW5lIE1TUl9JQTMyX0xBU1RCUkFO
> Q0hGUk9NSVAgIDB4MWRiCi0jZGVmaW5lIE1TUl9JQTMyX0xBU1RCUkFOQ0hUT0lQICAgICAgICAw
> eDFkYwotI2RlZmluZSBNU1JfSUEzMl9MQVNUSU5URlJPTUlQICAgICAweDFkZAotI2RlZmluZSBN
> U1JfSUEzMl9MQVNUSU5UVE9JUCAgICAgICAweDFkZQotCi0jZGVmaW5lIE1TUl9NVFJSZml4NjRL
> XzAwMDAwCTB4MjUwCi0jZGVmaW5lIE1TUl9NVFJSZml4MTZLXzgwMDAwCTB4MjU4Ci0jZGVmaW5l
> IE1TUl9NVFJSZml4MTZLX0EwMDAwCTB4MjU5Ci0jZGVmaW5lIE1TUl9NVFJSZml4NEtfQzAwMDAJ
> MHgyNjgKLSNkZWZpbmUgTVNSX01UUlJmaXg0S19DODAwMAkweDI2OQotI2RlZmluZSBNU1JfTVRS
> UmZpeDRLX0QwMDAwCTB4MjZhCi0jZGVmaW5lIE1TUl9NVFJSZml4NEtfRDgwMDAJMHgyNmIKLSNk
> ZWZpbmUgTVNSX01UUlJmaXg0S19FMDAwMAkweDI2YwotI2RlZmluZSBNU1JfTVRSUmZpeDRLX0U4
> MDAwCTB4MjZkCi0jZGVmaW5lIE1TUl9NVFJSZml4NEtfRjAwMDAJMHgyNmUKLSNkZWZpbmUgTVNS
> X01UUlJmaXg0S19GODAwMAkweDI2ZgotI2RlZmluZSBNU1JfTVRSUmRlZlR5cGUJCTB4MmZmCi0K
> LSNkZWZpbmUgTVNSX0lBMzJfTUMwX0NUTCAgICAgICAweDQwMAotI2RlZmluZSBNU1JfSUEzMl9N
> QzBfU1RBVFVTICAgICAgICAweDQwMQotI2RlZmluZSBNU1JfSUEzMl9NQzBfQUREUiAgICAgIDB4
> NDAyCi0jZGVmaW5lIE1TUl9JQTMyX01DMF9NSVNDICAgICAgMHg0MDMKLQogI2RlZmluZSBNU1Jf
> SUEzMl9BUElDQkFTRQkJMHgxYgogI2RlZmluZSBNU1JfSUEzMl9BUElDQkFTRV9CU1AJCSgxPDw4
> KQogI2RlZmluZSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUJKDE8PDExKQpAQCAtMTIzLDEyICs2
> MywzOCBAQAogI2RlZmluZSBNU1JfSUEzMl9VQ09ERV9XUklURQkJMHg3OQogI2RlZmluZSBNU1Jf
> SUEzMl9VQ09ERV9SRVYJCTB4OGIKIAorI2RlZmluZSBNU1JfUDZfUEVSRkNUUjAJCTB4YzEKKyNk
> ZWZpbmUgTVNSX1A2X1BFUkZDVFIxCQkweGMyCisKICNkZWZpbmUgTVNSX0lBMzJfQkJMX0NSX0NU
> TAkJMHgxMTkKIAorI2RlZmluZSBNU1JfSUEzMl9TWVNFTlRFUl9DUwkJMHgxNzQKKyNkZWZpbmUg
> TVNSX0lBMzJfU1lTRU5URVJfRVNQCQkweDE3NQorI2RlZmluZSBNU1JfSUEzMl9TWVNFTlRFUl9F
> SVAJCTB4MTc2CisKICNkZWZpbmUgTVNSX0lBMzJfTUNHX0NBUAkJMHgxNzkKICNkZWZpbmUgTVNS
> X0lBMzJfTUNHX1NUQVRVUwkJMHgxN2EKICNkZWZpbmUgTVNSX0lBMzJfTUNHX0NUTAkJMHgxN2IK
> IAorLyogUDQvWGVvbisgc3BlY2lmaWMgKi8KKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VBWAkJMHgx
> ODAKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VCWAkJMHgxODEKKyNkZWZpbmUgTVNSX0lBMzJfTUNH
> X0VDWAkJMHgxODIKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VEWAkJMHgxODMKKyNkZWZpbmUgTVNS
> X0lBMzJfTUNHX0VTSQkJMHgxODQKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VESQkJMHgxODUKKyNk
> ZWZpbmUgTVNSX0lBMzJfTUNHX0VCUAkJMHgxODYKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VTUAkJ
> MHgxODcKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX0VGTEFHUwkJMHgxODgKKyNkZWZpbmUgTVNSX0lB
> MzJfTUNHX0VJUAkJMHgxODkKKyNkZWZpbmUgTVNSX0lBMzJfTUNHX1JFU0VSVkVECQkweDE4QQor
> CisjZGVmaW5lIE1TUl9QNl9FVk5UU0VMMAkJCTB4MTg2CisjZGVmaW5lIE1TUl9QNl9FVk5UU0VM
> MQkJCTB4MTg3CisKKyNkZWZpbmUgTVNSX0lBMzJfUEVSRl9TVEFUVVMJCTB4MTk4CisjZGVmaW5l
> IE1TUl9JQTMyX1BFUkZfQ1RMCQkweDE5OQorCiAjZGVmaW5lIE1TUl9JQTMyX1RIRVJNX0NPTlRS
> T0wJCTB4MTlhCiAjZGVmaW5lIE1TUl9JQTMyX1RIRVJNX0lOVEVSUlVQVAkweDE5YgogI2RlZmlu
> ZSBNU1JfSUEzMl9USEVSTV9TVEFUVVMJCTB4MTljCkBAIC0xNDUsMjkgKzExMSw5MSBAQAogI2Rl
> ZmluZSBNU1JfSUEzMl9NQzBfQUREUgkJMHg0MDIKICNkZWZpbmUgTVNSX0lBMzJfTUMwX01JU0MJ
> CTB4NDAzCiAKLSNkZWZpbmUgTVNSX1A2X1BFUkZDVFIwCQkJMHhjMQotI2RlZmluZSBNU1JfUDZf
> UEVSRkNUUjEJCQkweGMyCi0jZGVmaW5lIE1TUl9QNl9FVk5UU0VMMAkJCTB4MTg2Ci0jZGVmaW5l
> IE1TUl9QNl9FVk5UU0VMMQkJCTB4MTg3CisvKiBQZW50aXVtIElWIHBlcmZvcm1hbmNlIGNvdW50
> ZXIgTVNScyAqLworI2RlZmluZSBNU1JfUDRfQlBVX1BFUkZDVFIwIAkJMHgzMDAKKyNkZWZpbmUg
> TVNSX1A0X0JQVV9QRVJGQ1RSMSAJCTB4MzAxCisjZGVmaW5lIE1TUl9QNF9CUFVfUEVSRkNUUjIg
> CQkweDMwMgorI2RlZmluZSBNU1JfUDRfQlBVX1BFUkZDVFIzIAkJMHgzMDMKKyNkZWZpbmUgTVNS
> X1A0X01TX1BFUkZDVFIwIAkJMHgzMDQKKyNkZWZpbmUgTVNSX1A0X01TX1BFUkZDVFIxIAkJMHgz
> MDUKKyNkZWZpbmUgTVNSX1A0X01TX1BFUkZDVFIyIAkJMHgzMDYKKyNkZWZpbmUgTVNSX1A0X01T
> X1BFUkZDVFIzIAkJMHgzMDcKKyNkZWZpbmUgTVNSX1A0X0ZMQU1FX1BFUkZDVFIwIAkJMHgzMDgK
> KyNkZWZpbmUgTVNSX1A0X0ZMQU1FX1BFUkZDVFIxIAkJMHgzMDkKKyNkZWZpbmUgTVNSX1A0X0ZM
> QU1FX1BFUkZDVFIyIAkJMHgzMGEKKyNkZWZpbmUgTVNSX1A0X0ZMQU1FX1BFUkZDVFIzIAkJMHgz
> MGIKKyNkZWZpbmUgTVNSX1A0X0lRX1BFUkZDVFIwIAkJMHgzMGMKKyNkZWZpbmUgTVNSX1A0X0lR
> X1BFUkZDVFIxIAkJMHgzMGQKKyNkZWZpbmUgTVNSX1A0X0lRX1BFUkZDVFIyIAkJMHgzMGUKKyNk
> ZWZpbmUgTVNSX1A0X0lRX1BFUkZDVFIzIAkJMHgzMGYKKyNkZWZpbmUgTVNSX1A0X0lRX1BFUkZD
> VFI0IAkJMHgzMTAKKyNkZWZpbmUgTVNSX1A0X0lRX1BFUkZDVFI1IAkJMHgzMTEKKyNkZWZpbmUg
> TVNSX1A0X0JQVV9DQ0NSMCAJCTB4MzYwCisjZGVmaW5lIE1TUl9QNF9CUFVfQ0NDUjEgCQkweDM2
> MQorI2RlZmluZSBNU1JfUDRfQlBVX0NDQ1IyIAkJMHgzNjIKKyNkZWZpbmUgTVNSX1A0X0JQVV9D
> Q0NSMyAJCTB4MzYzCisjZGVmaW5lIE1TUl9QNF9NU19DQ0NSMCAJCTB4MzY0CisjZGVmaW5lIE1T
> Ul9QNF9NU19DQ0NSMSAJCTB4MzY1CisjZGVmaW5lIE1TUl9QNF9NU19DQ0NSMiAJCTB4MzY2Cisj
> ZGVmaW5lIE1TUl9QNF9NU19DQ0NSMyAJCTB4MzY3CisjZGVmaW5lIE1TUl9QNF9GTEFNRV9DQ0NS
> MCAJCTB4MzY4CisjZGVmaW5lIE1TUl9QNF9GTEFNRV9DQ0NSMSAJCTB4MzY5CisjZGVmaW5lIE1T
> Ul9QNF9GTEFNRV9DQ0NSMiAJCTB4MzZhCisjZGVmaW5lIE1TUl9QNF9GTEFNRV9DQ0NSMyAJCTB4
> MzZiCisjZGVmaW5lIE1TUl9QNF9JUV9DQ0NSMCAJCTB4MzZjCisjZGVmaW5lIE1TUl9QNF9JUV9D
> Q0NSMSAJCTB4MzZkCisjZGVmaW5lIE1TUl9QNF9JUV9DQ0NSMiAJCTB4MzZlCisjZGVmaW5lIE1T
> Ul9QNF9JUV9DQ0NSMyAJCTB4MzZmCisjZGVmaW5lIE1TUl9QNF9JUV9DQ0NSNCAJCTB4MzcwCisj
> ZGVmaW5lIE1TUl9QNF9JUV9DQ0NSNSAJCTB4MzcxCisjZGVmaW5lIE1TUl9QNF9BTEZfRVNDUjAg
> CQkweDNjYQorI2RlZmluZSBNU1JfUDRfQUxGX0VTQ1IxIAkJMHgzY2IKKyNkZWZpbmUgTVNSX1A0
> X0JQVV9FU0NSMCAJCTB4M2IyCisjZGVmaW5lIE1TUl9QNF9CUFVfRVNDUjEgCQkweDNiMworI2Rl
> ZmluZSBNU1JfUDRfQlNVX0VTQ1IwIAkJMHgzYTAKKyNkZWZpbmUgTVNSX1A0X0JTVV9FU0NSMSAJ
> CTB4M2ExCisjZGVmaW5lIE1TUl9QNF9DUlVfRVNDUjAgCQkweDNiOAorI2RlZmluZSBNU1JfUDRf
> Q1JVX0VTQ1IxIAkJMHgzYjkKKyNkZWZpbmUgTVNSX1A0X0NSVV9FU0NSMiAJCTB4M2NjCisjZGVm
> aW5lIE1TUl9QNF9DUlVfRVNDUjMgCQkweDNjZAorI2RlZmluZSBNU1JfUDRfQ1JVX0VTQ1I0IAkJ
> MHgzZTAKKyNkZWZpbmUgTVNSX1A0X0NSVV9FU0NSNSAJCTB4M2UxCisjZGVmaW5lIE1TUl9QNF9E
> QUNfRVNDUjAgCQkweDNhOAorI2RlZmluZSBNU1JfUDRfREFDX0VTQ1IxIAkJMHgzYTkKKyNkZWZp
> bmUgTVNSX1A0X0ZJUk1fRVNDUjAgCQkweDNhNAorI2RlZmluZSBNU1JfUDRfRklSTV9FU0NSMSAJ
> CTB4M2E1CisjZGVmaW5lIE1TUl9QNF9GTEFNRV9FU0NSMCAJCTB4M2E2CisjZGVmaW5lIE1TUl9Q
> NF9GTEFNRV9FU0NSMSAJCTB4M2E3CisjZGVmaW5lIE1TUl9QNF9GU0JfRVNDUjAgCQkweDNhMgor
> I2RlZmluZSBNU1JfUDRfRlNCX0VTQ1IxIAkJMHgzYTMKKyNkZWZpbmUgTVNSX1A0X0lRX0VTQ1Iw
> IAkJMHgzYmEKKyNkZWZpbmUgTVNSX1A0X0lRX0VTQ1IxIAkJMHgzYmIKKyNkZWZpbmUgTVNSX1A0
> X0lTX0VTQ1IwIAkJMHgzYjQKKyNkZWZpbmUgTVNSX1A0X0lTX0VTQ1IxIAkJMHgzYjUKKyNkZWZp
> bmUgTVNSX1A0X0lUTEJfRVNDUjAgCQkweDNiNgorI2RlZmluZSBNU1JfUDRfSVRMQl9FU0NSMSAJ
> CTB4M2I3CisjZGVmaW5lIE1TUl9QNF9JWF9FU0NSMCAJCTB4M2M4CisjZGVmaW5lIE1TUl9QNF9J
> WF9FU0NSMSAJCTB4M2M5CisjZGVmaW5lIE1TUl9QNF9NT0JfRVNDUjAgCQkweDNhYQorI2RlZmlu
> ZSBNU1JfUDRfTU9CX0VTQ1IxIAkJMHgzYWIKKyNkZWZpbmUgTVNSX1A0X01TX0VTQ1IwIAkJMHgz
> YzAKKyNkZWZpbmUgTVNSX1A0X01TX0VTQ1IxIAkJMHgzYzEKKyNkZWZpbmUgTVNSX1A0X1BNSF9F
> U0NSMCAJCTB4M2FjCisjZGVmaW5lIE1TUl9QNF9QTUhfRVNDUjEgCQkweDNhZAorI2RlZmluZSBN
> U1JfUDRfUkFUX0VTQ1IwIAkJMHgzYmMKKyNkZWZpbmUgTVNSX1A0X1JBVF9FU0NSMSAJCTB4M2Jk
> CisjZGVmaW5lIE1TUl9QNF9TQUFUX0VTQ1IwIAkJMHgzYWUKKyNkZWZpbmUgTVNSX1A0X1NBQVRf
> RVNDUjEgCQkweDNhZgorI2RlZmluZSBNU1JfUDRfU1NVX0VTQ1IwIAkJMHgzYmUKKyNkZWZpbmUg
> TVNSX1A0X1NTVV9FU0NSMSAJCTB4M2JmICAgIC8qIGd1ZXNzOiBub3QgZGVmaW5lZCBpbiBtYW51
> YWwgKi8KKyNkZWZpbmUgTVNSX1A0X1RCUFVfRVNDUjAgCQkweDNjMgorI2RlZmluZSBNU1JfUDRf
> VEJQVV9FU0NSMSAJCTB4M2MzCisjZGVmaW5lIE1TUl9QNF9UQ19FU0NSMCAJCTB4M2M0CisjZGVm
> aW5lIE1TUl9QNF9UQ19FU0NSMSAJCTB4M2M1CisjZGVmaW5lIE1TUl9QNF9VMkxfRVNDUjAgCQkw
> eDNiMAorI2RlZmluZSBNU1JfUDRfVTJMX0VTQ1IxIAkJMHgzYjEKIAotLyogSzcvSzggTVNScy4g
> Tm90IGNvbXBsZXRlLiBTZWUgdGhlIGFyY2hpdGVjdHVyZSBtYW51YWwgZm9yIGEgbW9yZSBjb21w
> bGV0ZSBsaXN0LiAqLwotI2RlZmluZSBNU1JfSzdfRVZOVFNFTDAgICAgICAgICAgICAweEMwMDEw
> MDAwCi0jZGVmaW5lIE1TUl9LN19QRVJGQ1RSMCAgICAgICAgICAgIDB4QzAwMTAwMDQKLSNkZWZp
> bmUgTVNSX0s3X0VWTlRTRUwxICAgICAgICAgICAgMHhDMDAxMDAwMQotI2RlZmluZSBNU1JfSzdf
> UEVSRkNUUjEgICAgICAgICAgICAweEMwMDEwMDA1Ci0jZGVmaW5lIE1TUl9LN19FVk5UU0VMMiAg
> ICAgICAgICAgIDB4QzAwMTAwMDIKLSNkZWZpbmUgTVNSX0s3X1BFUkZDVFIyICAgICAgICAgICAg
> MHhDMDAxMDAwNgotI2RlZmluZSBNU1JfSzdfRVZOVFNFTDMgICAgICAgICAgICAweEMwMDEwMDAz
> Ci0jZGVmaW5lIE1TUl9LN19QRVJGQ1RSMyAgICAgICAgICAgIDB4QzAwMTAwMDcKLSNkZWZpbmUg
> TVNSX0s4X1RPUF9NRU0xCQkgICAweEMwMDEwMDFBCi0jZGVmaW5lIE1TUl9LOF9UT1BfTUVNMgkJ
> ICAgMHhDMDAxMDAxRAotI2RlZmluZSBNU1JfSzhfU1lTQ0ZHCQkgICAweEMwMDAwMDEwCQotI2Rl
> ZmluZSBNU1JfSzdfSFdDUgkJCTB4QzAwMTAwMTUKLSNkZWZpbmUgTVNSX0s3X0NMS19DVEwJCQkw
> eEMwMDEwMDFiCi0jZGVmaW5lIE1TUl9LN19GSURfVklEX0NUTAkJMHhDMDAxMDA0MQotI2RlZmlu
> ZSBNU1JfSzdfVklEX1NUQVRVUwkJMHhDMDAxMDA0MgotCi0vKiBLNiBNU1JzICovCisvKiBBTUQg
> RGVmaW5lZCBNU1JzICovCiAjZGVmaW5lIE1TUl9LNl9FRkVSCQkJMHhDMDAwMDA4MAogI2RlZmlu
> ZSBNU1JfSzZfU1RBUgkJCTB4QzAwMDAwODEKICNkZWZpbmUgTVNSX0s2X1dIQ1IJCQkweEMwMDAw
> MDgyCkBAIC0xNzYsNiArMjA0LDI4IEBACiAjZGVmaW5lIE1TUl9LNl9QU09SCQkJMHhDMDAwMDA4
> NwogI2RlZmluZSBNU1JfSzZfUEZJUgkJCTB4QzAwMDAwODgKIAorI2RlZmluZSBNU1JfSzdfRVZO
> VFNFTDAJCQkweEMwMDEwMDAwCisjZGVmaW5lIE1TUl9LN19FVk5UU0VMMQkJCTB4QzAwMTAwMDEK
> KyNkZWZpbmUgTVNSX0s3X0VWTlRTRUwyCQkJMHhDMDAxMDAwMgorI2RlZmluZSBNU1JfSzdfRVZO
> VFNFTDMJCQkweEMwMDEwMDAzCisjZGVmaW5lIE1TUl9LN19QRVJGQ1RSMAkJCTB4QzAwMTAwMDQK
> KyNkZWZpbmUgTVNSX0s3X1BFUkZDVFIxCQkJMHhDMDAxMDAwNQorI2RlZmluZSBNU1JfSzdfUEVS
> RkNUUjIJCQkweEMwMDEwMDA2CisjZGVmaW5lIE1TUl9LN19QRVJGQ1RSMwkJCTB4QzAwMTAwMDcK
> KyNkZWZpbmUgTVNSX0s3X0hXQ1IJCQkweEMwMDEwMDE1CisjZGVmaW5lIE1TUl9LN19DTEtfQ1RM
> CQkJMHhDMDAxMDAxYgorI2RlZmluZSBNU1JfSzdfRklEX1ZJRF9DVEwJCTB4QzAwMTAwNDEKKyNk
> ZWZpbmUgTVNSX0s3X0ZJRF9WSURfU1RBVFVTCQkweEMwMDEwMDQyCisKKy8qIGV4dGVuZGVkIGZl
> YXR1cmUgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVNSX0VGRVIgCQkJMHhjMDAwMDA4MAorCisvKiBF
> RkVSIGJpdHM6ICovCisKKy8qIEV4ZWN1dGUgRGlzYWJsZSBlbmFibGUgKi8KKyNkZWZpbmUgX0VG
> RVJfTlgJCQkxMQorI2RlZmluZSBFRkVSX05YCQkJCSgxPDxfRUZFUl9OWCkKKwogLyogQ2VudGF1
> ci1IYXVscy9JRFQgZGVmaW5lZCBNU1JzLiAqLwogI2RlZmluZSBNU1JfSURUX0ZDUjEJCQkweDEw
> NwogI2RlZmluZSBNU1JfSURUX0ZDUjIJCQkweDEwOApAQCAtMTk1LDYgKzI0NSw3IEBACiAvKiBW
> SUEgQ3lyaXggZGVmaW5lZCBNU1JzKi8KICNkZWZpbmUgTVNSX1ZJQV9GQ1IJCQkweDExMDcKICNk
> ZWZpbmUgTVNSX1ZJQV9MT05HSEFVTAkJMHgxMTBhCisjZGVmaW5lIE1TUl9WSUFfUk5HCQkJMHgx
> MTBiCiAjZGVmaW5lIE1TUl9WSUFfQkNSMgkJCTB4MTE0NwogCiAvKiBUcmFuc21ldGEgZGVmaW5l
> ZCBNU1JzICovCmRpZmYgLVBOYXVyIHhlbi0yLjAuNS94ZW4vaW5jbHVkZS9hc20teDg2L25taS5o
> IHhlbi0yLjAuNS1wcm9mL3hlbi9pbmNsdWRlL2FzbS14ODYvbm1pLmgKLS0tIHhlbi0yLjAuNS94
> ZW4vaW5jbHVkZS9hc20teDg2L25taS5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0w
> ODAwCisrKyB4ZW4tMi4wLjUtcHJvZi94ZW4vaW5jbHVkZS9hc20teDg2L25taS5oCTIwMDUtMDQt
> MDYgMDk6Mjc6MTMuMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiAgbGlu
> dXgvaW5jbHVkZS9hc20taTM4Ni9ubWkuaAorICovCisjaWZuZGVmIEFTTV9OTUlfSAorI2RlZmlu
> ZSBBU01fTk1JX0gKKworc3RydWN0IHhlbl9yZWdzOworIAordHlwZWRlZiBpbnQgKCpubWlfY2Fs
> bGJhY2tfdCkoc3RydWN0IHhlbl9yZWdzICogcmVncywgaW50IGNwdSk7CisgCisvKiogCisgKiBz
> ZXRfbm1pX2NhbGxiYWNrCisgKgorICogU2V0IGEgaGFuZGxlciBmb3IgYW4gTk1JLiBPbmx5IG9u
> ZSBoYW5kbGVyIG1heSBiZQorICogc2V0LiBSZXR1cm4gMSBpZiB0aGUgTk1JIHdhcyBoYW5kbGVk
> LgorICovCit2b2lkIHNldF9ubWlfY2FsbGJhY2sobm1pX2NhbGxiYWNrX3QgY2FsbGJhY2spOwor
> IAorLyoqIAorICogdW5zZXRfbm1pX2NhbGxiYWNrCisgKgorICogUmVtb3ZlIHRoZSBoYW5kbGVy
> IHByZXZpb3VzbHkgc2V0LgorICovCit2b2lkIHVuc2V0X25taV9jYWxsYmFjayh2b2lkKTsKKyAK
> KyNlbmRpZiAvKiBBU01fTk1JX0ggKi8KZGlmZiAtUE5hdXIgeGVuLTIuMC41L3hlbi9pbmNsdWRl
> L3B1YmxpYy94ZW4uaCB4ZW4tMi4wLjUtcHJvZi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKLS0t
> IHhlbi0yLjAuNS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgJMjAwNS0wMy0xMCAxMTo1MjoxMy4w
> MDAwMDAwMDAgLTA4MDAKKysrIHhlbi0yLjAuNS1wcm9mL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4u
> aAkyMDA1LTA0LTA2IDA5OjI3OjEzLjAwMDAwMDAwMCAtMDcwMApAQCAtNCw2ICs0LDEwIEBACiAg
> KiBHdWVzdCBPUyBpbnRlcmZhY2UgdG8gWGVuLgogICogCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQs
> IEsgQSBGcmFzZXIKKyAqCisgKiBNb2RpZmllZCBieSBBcmF2aW5kIE1lbm9uIGZvciBzdXBwb3J0
> aW5nIG9wcm9maWxlCisgKiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZToKKyAqIENvcHlyaWdodCAo
> QykgMjAwNSBIZXdsZXR0LVBhY2thcmQgQ28uCiAgKi8KIAogI2lmbmRlZiBfX1hFTl9QVUJMSUNf
> WEVOX0hfXwpAQCAtNDgsNiArNTIsNyBAQAogI2RlZmluZSBfX0hZUEVSVklTT1Jfdm1fYXNzaXN0
> ICAgICAgICAgICAgMjEKICNkZWZpbmUgX19IWVBFUlZJU09SX3VwZGF0ZV92YV9tYXBwaW5nX290
> aGVyZG9tYWluIDIyCiAjZGVmaW5lIF9fSFlQRVJWSVNPUl9zd2l0Y2hfdm04NiAgICAgICAgICAy
> MworI2RlZmluZSBfX0hZUEVSVklTT1JfcG1jX29wICAgICAgICAgICAgICAgMjQKIAogLyoKICAq
> IE1VTFRJQ0FMTFMKQEAgLTcxLDcgKzc2LDggQEAKICNkZWZpbmUgVklSUV9ET01fRVhDICAgIDQg
> IC8qIChET00wKSBFeGNlcHRpb25hbCBldmVudCBmb3Igc29tZSBkb21haW4uICAgKi8KICNkZWZp
> bmUgVklSUV9QQVJJVFlfRVJSIDUgIC8qIChET00wKSBOTUkgcGFyaXR5IGVycm9yLiAgICAgICAg
> ICAgICAgICAgICAgKi8KICNkZWZpbmUgVklSUV9JT19FUlIgICAgIDYgIC8qIChET00wKSBOTUkg
> SS9PIGVycm9yLiAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgTlJfVklSUVMgICAg
> ICAgIDcKKyNkZWZpbmUgVklSUV9QTUNfT1ZGCTcgIC8qIFBNQyBPdmVyZmxvdyAqLworI2RlZmlu
> ZSBOUl9WSVJRUyAgICAgICAgOAogCiAvKgogICogTU1VLVVQREFURSBSRVFVRVNUUwpAQCAtMTk4
> LDYgKzIwNCwyMSBAQAogI2RlZmluZSBWTUFTU1RfVFlQRV93cml0YWJsZV9wYWdldGFibGVzICAy
> CiAjZGVmaW5lIE1BWF9WTUFTU1RfVFlQRSAyCiAKKy8qCisgKiBDb21tYW5kcyB0byBIWVBFUlZJ
> U09SX3BtY19vcCgpLgorICovCisjZGVmaW5lIFBNQ19JTklUCQkwCisjZGVmaW5lIFBNQ19TRVRf
> QUNUSVZFCQkxCisjZGVmaW5lIFBNQ19TRVRfUEFTU0lWRQkJMgorI2RlZmluZSBQTUNfUkVTRVJW
> RV9DT1VOVEVSUwkzCisjZGVmaW5lIFBNQ19TRVRVUF9FVkVOVFMJNAorI2RlZmluZSBQTUNfRU5B
> QkxFX1ZJUlEJCTUKKyNkZWZpbmUgUE1DX1NUQVJUCQk2CisjZGVmaW5lIFBNQ19TVE9QCQk3Cisj
> ZGVmaW5lIFBNQ19ESVNBQkxFX1ZJUlEJOAorI2RlZmluZSBQTUNfUkVMRUFTRV9DT1VOVEVSUwk5
> CisjZGVmaW5lIFBNQ19TSFVURE9XTgkJMTAKKwogI2lmbmRlZiBfX0FTU0VNQkxZX18KIAogdHlw
> ZWRlZiB1MTYgZG9taWRfdDsKQEAgLTI1Myw2ICsyNzQsOCBAQAogLyogTm8gc3VwcG9ydCBmb3Ig
> bXVsdGktcHJvY2Vzc29yIGd1ZXN0cy4gKi8KICNkZWZpbmUgTUFYX1ZJUlRfQ1BVUyAxCiAKKyNk
> ZWZpbmUgTUFYX09QUk9GX0VWRU5UUwkzMgorI2RlZmluZSBNQVhfT1BST0ZfRE9NQUlOUwkyNQkK
> IC8qCiAgKiBYZW4vZ3Vlc3RvcyBzaGFyZWQgZGF0YSAtLSBwb2ludGVyIHByb3ZpZGVkIGluIHN0
> YXJ0X2luZm8uCiAgKiBOQi4gV2UgZXhwZWN0IHRoYXQgdGhpcyBzdHJ1Y3QgaXMgc21hbGxlciB0
> aGFuIGEgcGFnZS4KQEAgLTM2MCw2ICszODMsMjAgQEAKIAogICAgIGFyY2hfc2hhcmVkX2luZm9f
> dCBhcmNoOwogCisgICAgLyogT3Byb2ZpbGUgc3RydWN0dXJlcyAqLworICAgIHU4IGV2ZW50X2hl
> YWQ7CisgICAgdTggZXZlbnRfdGFpbDsKKyAgICBzdHJ1Y3QgeworCXUzMiBlaXA7CisJdTggbW9k
> ZTsKKwl1OCBldmVudDsKKyAgICB9IFBBQ0tFRCBldmVudF9sb2dbTUFYX09QUk9GX0VWRU5UU107
> CisgICAgdTggbG9zaW5nX3NhbXBsZXM7CisgICAgdTY0IHNhbXBsZXNfbG9zdDsKKyAgICB1MzIg
> bm1pX3Jlc3RhcnRzOworICAgIHU2NCBhY3RpdmVfc2FtcGxlczsKKyAgICB1NjQgcGFzc2l2ZV9z
> YW1wbGVzOworICAgIHU2NCBvdGhlcl9zYW1wbGVzOwogfSBQQUNLRUQgc2hhcmVkX2luZm9fdDsK
> IAogLyoKZGlmZiAtUE5hdXIgeGVuLTIuMC41L3hlbi9pbmNsdWRlL3hlbi9zbXAuaCB4ZW4tMi4w
> LjUtcHJvZi94ZW4vaW5jbHVkZS94ZW4vc21wLmgKLS0tIHhlbi0yLjAuNS94ZW4vaW5jbHVkZS94
> ZW4vc21wLmgJMjAwNS0wMy0xMCAxMTo1MjoxNi4wMDAwMDAwMDAgLTA4MDAKKysrIHhlbi0yLjAu
> NS1wcm9mL3hlbi9pbmNsdWRlL3hlbi9zbXAuaAkyMDA1LTA0LTA2IDA5OjI3OjEzLjAwMDAwMDAw
> MCAtMDcwMApAQCAtNDcsNiArNDcsMTggQEAKIAkJCSAgICAgIGludCByZXRyeSwgaW50IHdhaXQp
> OwogCiAvKgorICogQ2FsbCBhIGZ1bmN0aW9uIG9uIGFsbCBwcm9jZXNzb3JzCisgKi8KK3N0YXRp
> YyBpbmxpbmUgaW50IG9uX2VhY2hfY3B1KHZvaWQgKCpmdW5jKSAodm9pZCAqaW5mbyksIHZvaWQg
> KmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0cnksIGludCB3YWl0
> KQoreworICAgICAgICBpbnQgcmV0ID0gMDsKKyAgICAgICAgcmV0ID0gc21wX2NhbGxfZnVuY3Rp
> b24oZnVuYywgaW5mbywgcmV0cnksIHdhaXQpOworICAgICAgICBmdW5jKGluZm8pOworICAgICAg
> ICByZXR1cm4gcmV0OworfQorCisvKgogICogVHJ1ZSBvbmNlIHRoZSBwZXIgcHJvY2VzcyBpZGxl
> IGlzIGZvcmtlZAogICovCiBleHRlcm4gaW50IHNtcF90aHJlYWRzX3JlYWR5OwpAQCAtODUsNiAr
> OTcsNyBAQAogI2RlZmluZSBjcHVfbG9naWNhbF9tYXAoY3B1KQkJCTAKICNkZWZpbmUgY3B1X251
> bWJlcl9tYXAoY3B1KQkJCTAKICNkZWZpbmUgc21wX2NhbGxfZnVuY3Rpb24oZnVuYyxpbmZvLHJl
> dHJ5LHdhaXQpCSh7IDA7IH0pCisjZGVmaW5lIG9uX2VhY2hfY3B1KGZ1bmMsaW5mbyxyZXRyeSx3
> YWl0KSAgICAgICAoeyBmdW5jKGluZm8pOyAwOyB9KQogI2RlZmluZSBjcHVfb25saW5lX21hcAkJ
> CQkxCiAKICNlbmRpZgo=
> 
> ------_=_NextPart_001_01C53CB2.59CE8456
> Content-Type: text/plain; charset="us-ascii"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 
> ------_=_NextPart_001_01C53CB2.59CE8456--
> 
> 
> 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.