From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 16 Oct 2018 13:52:08 +0100 From: Alexandru-Cosmin Gheorghe Subject: Re: [PATCH v3 04/18] drm/selftest: Add drm damage helper selftest Message-ID: <20181016125208.GA21819@e114479-lin.cambridge.arm.com> References: <20181011001657.1715-1-drawat@vmware.com> <20181011001657.1715-4-drawat@vmware.com> <20181011162311.GK31561@phenom.ffwll.local> <20181016122117.GR31561@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181016122117.GR31561@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Thomas Hellstrom , nd@arm.com, "petri.latvala@intel.com" , Daniel Vetter , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "igt-dev@lists.freedesktop.org" , linux-graphics-maintainer , Deepak Singh Rawat List-ID: T24gVHVlLCBPY3QgMTYsIDIwMTggYXQgMDI6MjE6MTdQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBNb24sIE9jdCAxNSwgMjAxOCBhdCAwNDoxMTo0MVBNICswMDAwLCBEZWVwYWsg U2luZ2ggUmF3YXQgd3JvdGU6Cj4gPiA+IE9uIFdlZCwgT2N0IDEwLCAyMDE4IGF0IDA1OjE2OjQz UE0gLTA3MDAsIERlZXBhayBSYXdhdCB3cm90ZToKPiA+ID4gPiBTZWxmdGVzdCBmb3IgZHJtIGRh bWFnZSBoZWxwZXIgaXRlcmF0b3IgZnVuY3Rpb25zLgo+ID4gPiA+Cj4gPiA+ID4gQ2M6IHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tCj4gPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiA+ID4gQ2M6IFBla2thIFBhYWxhbmVuIDxwcGFhbGFuZW5A Z21haWwuY29tPgo+ID4gPiA+IENjOiBEYW5pZWwgU3RvbmUgPGRhbmllbEBmb29pc2hiYXIub3Jn Pgo+ID4gPiA+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ID4gQ2M6 IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ID4gQ2M6IHBldHJpLmxhdHZhbGFA aW50ZWwuY29tCj4gPiA+ID4gQ2M6IGNocmlzQGNocmlzLXdpbHNvbi5jby51awo+ID4gPiA+IFNp Z25lZC1vZmYtYnk6IERlZXBhayBSYXdhdCA8ZHJhd2F0QHZtd2FyZS5jb20+Cj4gPiA+ID4gLS0t Cj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICB8 ICAgMyArLQo+ID4gPiA+ICAuLi4vc2VsZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0 cy5oICAgfCAgMjIgKwo+ID4gPiA+ICAuLi4vZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kYW1hZ2Vf aGVscGVyLmMgICAgfCA4NDQKPiA+ID4gKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIDMgZmls ZXMgY2hhbmdlZCwgODY4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ID4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0Cj4gPiA+IGRyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2RhbWFn ZV9oZWxwZXJfc2VsZnRlc3RzLmgKPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9zZWxmdGVzdHMvdGVzdC0KPiA+ID4gZHJtX2RhbWFnZV9oZWxwZXIuYwo+ID4gPiA+ Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUK PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL01ha2VmaWxlCj4gPiA+ID4gaW5kZXgg OWZjMzQ5ZmExOGU5Li44OGFjMjE2ZjU5NjIgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3NlbGZ0ZXN0cy9NYWtlZmlsZQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9z ZWxmdGVzdHMvTWFrZWZpbGUKPiA+ID4gPiBAQCAtMSArMSwyIEBACj4gPiA+ID4gLW9iai0kKENP TkZJR19EUk1fREVCVUdfU0VMRlRFU1QpICs9IHRlc3QtZHJtX21tLm8gdGVzdC1kcm0tCj4gPiA+ IGhlbHBlci5vCj4gPiA+ID4gK29iai0kKENPTkZJR19EUk1fREVCVUdfU0VMRlRFU1QpICs9IHRl c3QtZHJtX21tLm8gdGVzdC1kcm0tCj4gPiA+IGhlbHBlci5vIFwKPiA+ID4gPiArCQkJCSAgICB0 ZXN0LWRybV9kYW1hZ2VfaGVscGVyLm8KPiA+ID4gCj4gPiA+IFdpdGggdGhlIHRlc3RjYXNlIGlu dGFncmF0ZWQgaW50byB0aGUgdGVzdC1kcm0taGVscGVyLmtvIG1vZHVsZSwgZm9yCj4gPiA+IHBh dGNoZXMgMS00IGluIHRoaXMgc2VyaWVzOgo+ID4gPiAKPiA+ID4gUmV2aWV3ZWQtYnk6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiA+IAo+ID4gPiBPYnZpb3VzbHkg bmVlZHMgc29tZSBhZGp1c3Rpbmcgb24gdGhlIGlndCBzaWRlIHRvbywgc2luY2Ugd2Ugc2VlbSB0 byBiZQo+ID4gPiBtaXNzaW5nIHRoZSBpZ3Qgc2NhZmZvbGRpbmcgZm9yIHRlc3RzLWRybS1oZWxw ZXIua28uCj4gPiA+IC1EYW5pZWwKPiA+IAo+ID4gSGkgRGFuaWVsLAo+ID4gCj4gPiBUaGFua3Mg Zm9yIHRoZSByZXZpZXcuIEkgYW0gYSBsaXR0bGUgY29uZnVzZWQgaGVyZS4gU2hvdWxkIHdlIGhh dmUgc2luZ2xlCj4gPiBrZXJuZWwgbW9kdWxlIGZvciBkcm0gcGxhbmUgaGVscGVyIHNlbGZ0ZXN0 IGFuZCBkYW1hZ2UgaGVscGVyIHNlbGZ0ZXN0Pwo+ID4gQWxzbyBzaGFsbCBJIHJlbmFtZSB0aGUg a2VybmVsIHNlbGZ0dGVzdCB0byBrbXNfKj8KPiA+IAo+ID4gRm9yIHVzZXItc3BhY2UgaWd0IHRl c3QgaXQgc2hvdWxkIGJlIGl0IG1ha2VzIHNlbnNlIHRvIHJlbmFtZSB0byBrbXNfc2VsZnRldHM/ Cj4gCj4gU2luY2UgSSB3ZW50IGJhY2smZm9ydGggb24gdGhpcyB3YXkgdG9vIG1hbnkgdGltZXM6 Cj4gLSBpZ3Qgc2hvdWxkIGJlIGNhbGxlZCBrbXNfc2VsZnRlc3QuIFBsZWFzZSB3b3JrIHRvZ2V0 aGVyIHdpdGggaWd0Cj4gICBtYWludGFpbmVycyAoQXJlayBhbmQgUGV0cmkpLCBzaW5jZSB3ZSBh bHNvIG5lZWQgdG8gdXBkYXRlIHRoZSBDSQo+ICAgYnVpbGRpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8g bWFrZSBzdXJlIGl0IHVwZGF0ZXMgdGhlIGxpc3Qgb2Ygc3VidGVzdHMKPiAgIGltcGxlbWVudGVk IGJ5IHRoZSBrZXJuZWwuCj4gCj4gLSBLZXJuZWwgbW9kdWxlIEknZCBjYWxsIHRlc3QtZHJtX21v ZGVzZXQua28uIFRoYXQga2VybmVsIG1vZHVsZSBjYW4gdGhlbgo+ICAgaW5jbHVkZSB0aGUgZXhp c3RpbmcgdGVzdC1kcm0taGVscGVyLmMgKGNvdWxkIHByb2JhYmx5IHJlbmFtZSB0bwo+ICAgdGVz dC1kcm1fcGxhbmVfaGVscGVyLmMgZm9yIGNsYXJpdHkpIGFuZCB5b3VyIG5ldyBkYW1hZ2UgaGVs cGVyIChuYW1lZAo+ICAgdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jIGZvciBjb25zaXN0ZW5jeSku Cj4gCj4gRG9lcyB0aGF0IG1ha2Ugc2Vuc2UgdG8gZXZlcnlvbmU/CgpJIHdhcyB0cnlpbmcgdG8g YWRkIHNvbWUgc2VsZnRlc3RzLCBhcyB3ZWxsIGhlcmUgWzFdLCB3aXRoIHRoYXQgaW4KbWluZCwg SSB0aGluayBpdCBtYWtlcyBzZW5zZSB0byBoYXZlIGp1c3Qgb25lIG1vZHVsZSwgY2FsbCBpdAoi dGVzdC1kcm1fbW9kZXNldCIgb3Igd2hhdGV2ZXIgYW5kIHNlcGFyYXRlIHRoZSB0ZXN0cyBzb3Vy Y2UgY29kZSBiYXNlCm9uIHdoYXRldmVyIGNvcmUgZnVuY3Rpb25hbGl0eSB0aGV5IGFyZSB0ZXN0 aW5nLiAKCkJlc2lkZXMgY29tcGlsaW5nIGV2ZXJ5dGhpbmcgdG9nZXRoZXIsIHByb2JhYmx5IHNv bWUgc3R1ZmYgd2lsbCBoYXZlCnRvIG1vdmUgb3V0IG9mIHRlc3QtZHJtLWhlbHBlci5jIGludG8g c29tZSBjb21tb24gaGVhZGVyLiBGb3IgZXhhbXBsZQp0aGlzICJGQUlML0ZBSUxfT04iIG1hY3Jv cyAKClsxXSBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwv MjAxOC1PY3RvYmVyLzE5Mjk3My5odG1sCgo+IAo+IFRoYW5rcywgRGFuaWVsCj4gCj4gPiAKPiA+ ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2Rh bWFnZV9oZWxwZXJfc2VsZnRlc3RzLmgKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3Rz L2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjNhMWNiZTA1YmVmMAo+ID4gPiA+IC0tLSAv ZGV2L251bGwKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9kYW1h Z2VfaGVscGVyX3NlbGZ0ZXN0cy5oCj4gPiA+ID4gQEAgLTAsMCArMSwyMiBAQAo+ID4gPiA+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ID4gPiA+ICtzZWxmdGVzdChk YW1hZ2VfaXRlcl9ub19kYW1hZ2UsIGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2UpCj4gPiA+ID4g K3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyYywKPiA+ID4gaWd0 X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyYykKPiA+ID4gPiArc2VsZnRlc3Qo ZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX3NyY19tb3ZlZCwKPiA+ID4gaWd0X2RhbWFnZV9pdGVyX25v X2RhbWFnZV9zcmNfbW92ZWQpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFn ZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCwKPiA+ID4gaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9m cmFjdGlvbmFsX3NyY19tb3ZlZCkKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFt YWdlX25vdF92aXNpYmxlLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX25vdF92aXNp YmxlKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fY3J0YywKPiA+ ID4gaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjKQo+ID4gPiA+ICtzZWxmdGVzdChk YW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fZmIsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1h Z2Vfbm9fZmIpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX3NpbXBsZV9kYW1hZ2UsCj4g PiA+IGlndF9kYW1hZ2VfaXRlcl9zaW1wbGVfZGFtYWdlKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1h Z2VfaXRlcl9zaW5nbGVfZGFtYWdlLCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZSkKPiA+ ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjLAo+ ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjKQo+ID4gPiA+ ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX291dHNpZGVfc3JjLAo+ID4gPiBp Z3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX3NyYykKPiA+ID4gPiArc2VsZnRl c3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyYywKPiA+ID4gaWd0X2Rh bWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25hbF9zcmMpCj4gPiA+ID4gK3NlbGZ0ZXN0 KGRhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X2ZyYWN0aW9uYWxfc3JjLAo+ID4g PiBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3RfZnJhY3Rpb25hbF9zcmMp Cj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9mcmFj dGlvbmFsX3NyYywKPiA+ID4gaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9m cmFjdGlvbmFsX3NyYykKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFn ZV9zcmNfbW92ZWQsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX3NyY19tb3Zl ZCkKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFs X3NyY19tb3ZlZCwKPiA+ID4gaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25h bF9zcmNfbW92ZWQpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX2RhbWFnZSwgaWd0X2Rh bWFnZV9pdGVyX2RhbWFnZSkKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX29u ZV9pbnRlcnNlY3QsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX2ludGVyc2VjdCkK PiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlLAo+ID4gPiBp Z3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1h Z2VfaXRlcl9kYW1hZ2Vfc3JjX21vdmVkLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX3Ny Y19tb3ZlZCkKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX25vdF92aXNpYmxl LAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX25vdF92aXNpYmxlKQo+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2RhbWFnZV9oZWxwZXIu Ywo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBl ci5jCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjE3NzU0NzM0YzQ3YQo+ID4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2RhbWFnZV9oZWxwZXIuYwo+ID4gPiA+IEBA IC0wLDAgKzEsODQ0IEBACj4gPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wICovCj4gPiA+ID4gKy8qCj4gPiA+ID4gKyAqIFRlc3QgY2FzZSBmb3IgZHJtX2RhbWFnZV9o ZWxwZXIgZnVuY3Rpb25zCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBw cl9mbXQoZm10KSAiZHJtX2RhbWFnZV9oZWxwZXI6ICIgZm10Cj4gPiA+ID4gKwo+ID4gPiA+ICsj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2RhbWFn ZV9oZWxwZXIuaD4KPiA+ID4gPiArCj4gPiA+ID4gKyNkZWZpbmUgVEVTVFMgImRybV9kYW1hZ2Vf aGVscGVyX3NlbGZ0ZXN0cy5oIgo+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmgiCj4g PiA+ID4gKwo+ID4gPiA+ICsjZGVmaW5lIEZBSUwodGVzdCwgbXNnLCAuLi4pIFwKPiA+ID4gPiAr CWRvIHsgXAo+ID4gPiA+ICsJCWlmICh0ZXN0KSB7IFwKPiA+ID4gPiArCQkJcHJfZXJyKCIlcy8l dTogIiBtc2csIF9fRlVOQ1RJT05fXywgX19MSU5FX18sCj4gPiA+ICMjX19WQV9BUkdTX18pOyBc Cj4gPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOyBcCj4gPiA+ID4gKwkJfSBcCj4gPiA+ID4gKwl9 IHdoaWxlICgwKQo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBGQUlMX09OKHgpIEZBSUwoKHgp LCAiJXMiLCAiRkFJTF9PTigiIF9fc3RyaW5naWZ5KHgpICIpXG4iKQo+ID4gPiA+ICsKPiA+ID4g PiArc3RhdGljIHZvaWQgc2V0X3BsYW5lX3NyYyhzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0 ZSwgaW50IHgxLCBpbnQgeTEsIGludAo+ID4gPiB4MiwKPiA+ID4gPiArCQkJICBpbnQgeTIpCj4g PiA+ID4gK3sKPiA+ID4gPiArCXN0YXRlLT5zcmMueDEgPSB4MTsKPiA+ID4gPiArCXN0YXRlLT5z cmMueTEgPSB5MTsKPiA+ID4gPiArCXN0YXRlLT5zcmMueDIgPSB4MjsKPiA+ID4gPiArCXN0YXRl LT5zcmMueTIgPSB5MjsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHZvaWQg c2V0X2RhbWFnZV9jbGlwKHN0cnVjdCBkcm1fbW9kZV9yZWN0ICpyLCBpbnQgeDEsIGludCB5MSwg aW50Cj4gPiA+IHgyLAo+ID4gPiA+ICsJCQkgICAgaW50IHkyKQo+ID4gPiA+ICt7Cj4gPiA+ID4g KwlyLT54MSA9IHgxOwo+ID4gPiA+ICsJci0+eTEgPSB5MTsKPiA+ID4gPiArCXItPngyID0geDI7 Cj4gPiA+ID4gKwlyLT55MiA9IHkyOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0 aWMgdm9pZCBzZXRfZGFtYWdlX2Jsb2Ioc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkYW1hZ2Vf YmxvYiwKPiA+ID4gPiArCQkJICAgIHN0cnVjdCBkcm1fbW9kZV9yZWN0ICpyLCB1aW50MzJfdCBz aXplKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlkYW1hZ2VfYmxvYi0+bGVuZ3RoID0gc2l6ZTsKPiA+ ID4gPiArCWRhbWFnZV9ibG9iLT5kYXRhID0gcjsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4g PiArc3RhdGljIHZvaWQgc2V0X3BsYW5lX2RhbWFnZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpz dGF0ZSwKPiA+ID4gPiArCQkJICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRhbWFnZV9i bG9iKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdGF0ZS0+ZmJfZGFtYWdlX2NsaXBzID0gZGFtYWdl X2Jsb2I7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBib29sIGNoZWNrX2Rh bWFnZV9jbGlwKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QKPiA+ID4gZHJt X3JlY3QgKnIsCj4gPiA+ID4gKwkJCSAgICAgIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5 MikKPiA+ID4gPiArewo+ID4gPiA+ICsJLyoKPiA+ID4gPiArCSAqIFJvdW5kIGRvd24geDEveTEg YW5kIHJvdW5kIHVwIHgyL3kyLiBUaGlzIGlzIGJlY2F1c2UgZGFtYWdlIGlzCj4gPiA+IG5vdCBp bgo+ID4gPiA+ICsJICogMTYuMTYgZml4ZWQgcG9pbnQgc28gdG8gY2F0Y2ggYWxsIHBpeGVscy4K PiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJaW50IHNyY194MSA9IHN0YXRlLT5zcmMueDEgPj4gMTY7 Cj4gPiA+ID4gKwlpbnQgc3JjX3kxID0gc3RhdGUtPnNyYy55MSA+PiAxNjsKPiA+ID4gPiArCWlu dCBzcmNfeDIgPSAoc3RhdGUtPnNyYy54MiA+PiAxNikgKyAhIShzdGF0ZS0+c3JjLngyICYgMHhG RkZGKTsKPiA+ID4gPiArCWludCBzcmNfeTIgPSAoc3RhdGUtPnNyYy55MiA+PiAxNikgKyAhIShz dGF0ZS0+c3JjLnkyICYgMHhGRkZGKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoeDEgPj0geDIg fHwgeTEgPj0geTIpIHsKPiA+ID4gPiArCQlwcl9lcnIoIkNhbm5vdCBoYXZlIGRhbWFnZSBjbGlw IHdpdGggbm8gZGltZW50aW9uLlxuIik7Cj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICh4MSA8IHNyY194MSB8fCB5MSA8IHNyY195MSB8 fCB4MiA+IHNyY194MiB8fCB5MiA+IHNyY195Mikgewo+ID4gPiA+ICsJCXByX2VycigiRGFtYWdl IGNhbm5vdCBiZSBvdXRzaWRlIHJvdW5kZWQgcGxhbmUgc3JjLlxuIik7Cj4gPiA+ID4gKwkJcmV0 dXJuIGZhbHNlOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChyLT54MSAhPSB4 MSB8fCByLT55MSAhPSB5MSB8fCByLT54MiAhPSB4MiB8fCByLT55MiAhPSB5Mikgewo+ID4gPiA+ ICsJCXByX2VycigiRGFtYWdlID0gJWQgJWQgJWQgJWRcbiIsIHItPngxLCByLT55MSwgci0+eDIs IHItCj4gPiA+ID55Mik7Cj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICsJfQo+ID4g PiA+ICsKPiA+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Uodm9pZCAqaWdub3JlZCkKPiA+ ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0 ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiAr CXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4g KwkJLndpZHRoID0gMjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsJfTsK PiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4g PiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIsCj4gPiA+ ID4gKwkJLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwkv KiBQbGFuZSBzcmMgc2FtZSBhcyBmYiBzaXplLiAqLwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygm b2xkX3N0YXRlLCAwLCAwLCBmYi53aWR0aCA8PCAxNiwgZmIuaGVpZ2h0IDw8IDE2KTsKPiA+ID4g PiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCBmYi53aWR0aCA8PCAxNiwgZmIuaGVpZ2h0 IDw8IDE2KTsKPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0 ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3Bs YW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiAr Cj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHBsYW5lIHNyYyBh cyBkYW1hZ2UuIik7Cj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUs ICZjbGlwLCAwLCAwLCAyMDQ4LCAyMDQ4KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVy X25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyYyh2b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9y ZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiArCQkud2lkdGggPSAy MDQ4LAo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKwkJLmNydGMg PSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsJCS5mYiA9ICZmYiwKPiA+ID4gPiArCQkudmlzaWJs ZSA9IHRydWUsCj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIFBsYW5lIHNyYyBo YXMgZnJhY3Rpb25hbCBwYXJ0LiAqLwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRl LCAweDNmZmZlLCAweDNmZmZlLAo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAx NiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0 ZSwgMHgzZmZmZSwgMHgzZmZmZSwKPiA+ID4gPiArCQkgICAgICAweDNmZmZlICsgKDEwMjQgPDwg MTYpLCAweDNmZmZlICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArCWRy bV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArCQlu dW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3Vs ZCByZXR1cm4gcm91bmRlZCBvZmYgcGxhbmUgc3JjIGFzCj4gPiA+IGRhbWFnZS4iKTsKPiA+ID4g PiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDMsIDMsIDEwMjgs IDc3MikpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4g Kwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfc3JjX21vdmVk KHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hl bHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBv bGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQz Ml90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyIGZiID0gewo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9 IDIwNDgKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4g KwkJLmZiID0gJmZiLAo+ID4gPiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4g PiA+ID4gKwo+ID4gPiA+ICsJLyogUGxhbmUgc3JjIG1vdmVkIHNpbmNlIG9sZCBwbGFuZSBzdGF0 ZS4gKi8KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAx NiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAxMCA8PCAxNiwg MTAgPDwgMTYsCj4gPiA+ID4gKwkJICAgICAgKDEwICsgMTAyNCkgPDwgMTYsICgxMCArIDc2OCkg PDwgMTYpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRl ciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxh bmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArCQludW1faGl0cysrOwo+ID4gPiA+ICsK PiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcGxhbmUgc3JjIGFz IGRhbWFnZS4iKTsKPiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwg JmNsaXAsIDEwLCAxMCwgMTAzNCwgNzc4KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVy X25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCh2b2lkCj4gPiA+ICppZ25vcmVkKQo+ID4g PiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRl cjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsJ c3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiAr CQkud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKwl9Owo+ ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ ID4gKwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsJCS5mYiA9ICZmYiwKPiA+ID4g PiArCQkudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCS8q IFBsYW5lIHNyYyBoYXMgZnJhY3Rpb25hbCBwYXJ0IGFuZCBpdCBtb3ZlZCBzaW5jZSBvbGQgcGxh bmUgc3RhdGUuICovCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4M2ZmZmUs IDB4M2ZmZmUsCj4gPiA+ID4gKwkJICAgICAgMHgzZmZmZSArICgxMDI0IDw8IDE2KSwgMHgzZmZm ZSArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAy LCAweDQwMDAyLAo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAw MDIgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl cl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19m b3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4gPiA+ICsJCW51bV9oaXRzKys7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBw bGFuZSBzcmMgYXMgZGFtYWdlLiIpOwo+ID4gPiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2Ns aXAoJnN0YXRlLCAmY2xpcCwgNCwgNCwgMTAyOSwgNzczKSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ cmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2Rh bWFnZV9pdGVyX25vX2RhbWFnZV9ub3RfdmlzaWJsZSh2b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7 Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0 IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiArCQkud2lk dGggPSAyMDQ4LAo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKwl9Owo+ID4gPiA+ ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKwkJ LmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsJCS5mYiA9ICZmYiwKPiA+ID4gPiArCQku dmlzaWJsZSA9IGZhbHNlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzZXRfcGxh bmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4g KwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3Rh dGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgm aXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKwlG QUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2UuIik7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBp bnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjKHZvaWQgKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsJ CS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgKPiA+ID4gPiArCX07Cj4g PiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKPiA+ID4g PiArCQkuY3J0YyA9IDAsCj4gPiA+ID4gKwkJLmZiID0gJmZiLAo+ID4gPiA+ICsJfTsKPiA+ID4g PiArCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYs IDc2OCA8PCAxNik7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8 PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVy X2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zv cl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsK PiA+ID4gPiArCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBk YW1hZ2UuIik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4g PiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19mYih2 b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xk X3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJf dCBudW1faGl0cyA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJ LmZiID0gMCwKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygm b2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsJc2V0X3Bs YW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwlk cm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3Rh dGUpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZj bGlwKQo+ID4gPiA+ICsJCW51bV9oaXRzKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJRkFJTChudW1f aGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFtYWdlLiIpOwo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9k YW1hZ2VfaXRlcl9zaW1wbGVfZGFtYWdlKHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4g PiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBk YW1hZ2U7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90 IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy IGZiID0gewo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIw NDgKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJ LmZiID0gJmZiLAo+ID4gPiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2 LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQg PDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwkvKiBEYW1hZ2Ugc2V0IHRvIHBsYW5lIHNyYyAq Lwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDAsIDAsIDEwMjQsIDc2OCk7Cj4g PiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFt YWdlKSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsK PiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRf c3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFn ZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4g KwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsK PiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDAsIDAs IDEwMjQsIDc2OCkpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4g PiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdl KHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hl bHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBv bGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7 Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiAr Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsJCS53aWR0 aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgKPiA+ID4gPiArCX07Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQku Y3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJLmZiID0gJmZiLAo+ID4gPiA+ICsJCS52 aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc2V0X3BsYW5l X3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsJ c2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMjU2LCAxOTIsIDc2OCwgNTc2KTsKPiA+ID4g PiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2Up KTsKPiA+ID4gPiArCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4g PiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0 ZSwgJnN0YXRlKTsKPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZp dGVyLCAmY2xpcCkKPiA+ID4gPiArCQludW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiArCUZB SUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdoZW4gc2V0LiIpOwo+ID4g PiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjU2LCAxOTIs IDc2OCwgNTc2KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vf aW50ZXJzZWN0X3NyYyh2b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i IGRhbWFnZV9ibG9iOwo+ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOwo+ID4g PiA+ICsJc3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9 IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ ID4gPiArCQkud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4g Kwl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7 Cj4gPiA+ID4gKwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsJCS5mYiA9ICZmYiwK PiA+ID4gPiArCQkudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ID4g PiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2 KTsKPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3Njgg PDwgMTYpOwo+ID4gPiA+ICsJLyogRGFtYWdlIGludGVyc2VjdCB3aXRoIHBsYW5lIHNyYy4gKi8K PiA+ID4gPiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAyNTYsIDE5MiwgMTM2MCwgNzY4KTsK PiA+ID4gPiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihk YW1hZ2UpKTsKPiA+ID4gPiArCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2Ip Owo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9s ZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFt YWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArCQludW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4g PiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIGNsaXBwZWQgdG8g c3JjLiIpOwo+ID4gPiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xp cCwgMjU2LCAxOTIsIDEwMjQsIDc2OCkpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9z aW5nbGVfZGFtYWdlX291dHNpZGVfc3JjKHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4g PiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBk YW1hZ2U7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90 IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy IGZiID0gewo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIw NDgKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJ LmZiID0gJmZiLAo+ID4gPiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2 LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQg PDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwkvKiBEYW1hZ2UgY2xpcCBvdXRzaWRlIHBsYW5l IHNyYyAqLwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDEzNjAsIDEzNjAsIDEz ODAsIDEzODApOwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFn ZSwgc2l6ZW9mKGRhbWFnZSkpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZk YW1hZ2VfYmxvYik7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0 KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFj aF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4gPiA+ICsJCW51bV9oaXRzKys7Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFtYWdl LiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9u YWxfc3JjKHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRv bWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdl X2Jsb2I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsJ CS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgKPiA+ID4gPiArCX07Cj4g PiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKPiA+ID4g PiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJLmZiID0gJmZiLAo+ID4gPiA+ ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyog UGxhbmUgc3JjIGhhcyBmcmFjdGlvbmFsIHBhcnQuICovCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3Jj KCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKwkJICAgICAgMHg0MDAwMiAr ICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArCXNldF9wbGFu ZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQwMDAyLAo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIg KyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwlzZXRfZGFt YWdlX2NsaXAoJmRhbWFnZSwgMTAsIDEwLCAyNTYsIDMzMCk7Cj4gPiA+ID4gKwlzZXRfZGFtYWdl X2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKwlz ZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiArCWRybV9hdG9t aWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4g PiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4g PiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9 IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsKPiA+ID4gPiArCUZBSUxfT04o IWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDEwLCAxMCwgMjU2LCAzMzApKTsKPiA+ ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAr c3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3RfZnJhY3Rp b25hbF9zcmModm9pZAo+ID4gPiAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0 IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiBkYW1hZ2VfYmxvYjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMg PSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4g PiA+ID4gKwkJLndpZHRoID0gMjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0g ewo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIs Cj4gPiA+ID4gKwkJLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ ID4gKwkvKiBQbGFuZSBzcmMgaGFzIGZyYWN0aW9uYWwgcGFydC4gKi8KPiA+ID4gPiArCXNldF9w bGFuZV9zcmMoJm9sZF9zdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArCQkgICAgICAw eDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsJ c2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKwkJICAgICAg MHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiAr CS8qIERhbWFnZSBpbnRlcnNlY3Qgd2l0aCBwbGFuZSBzcmMuICovCj4gPiA+ID4gKwlzZXRfZGFt YWdlX2NsaXAoJmRhbWFnZSwgMTAsIDEsIDEzNjAsIDMzMCk7Cj4gPiA+ID4gKwlzZXRfZGFtYWdl X2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKwlz ZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiArCWRybV9hdG9t aWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4g PiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4g PiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9 IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSBjbGlwcGVkIHRvIHJvdW5kZWQgb2ZmCj4gPiA+IHNy Yy4iKTsKPiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAs IDEwLCA0LCAxMDI5LCAzMzApKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4g PiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xl X2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxfc3JjKHZvaWQKPiA+ID4gKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4g PiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJ LmhlaWdodCA9IDIwNDgKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIs Cj4gPiA+ID4gKwkJLmZiID0gJmZiLAo+ID4gPiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4g PiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogUGxhbmUgc3JjIGhhcyBmcmFjdGlvbmFsIHBh cnQuICovCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAw MDIsCj4gPiA+ID4gKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3 NjggPDwgMTYpKTsKPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQw MDAyLAo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAo NzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwkvKiBEYW1hZ2UgY2xpcCBvdXRzaWRlIHBsYW5lIHNyYyAq Lwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDEzNjAsIDEzNjAsIDEzODAsIDEz ODApOwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6 ZW9mKGRhbWFnZSkpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2Vf YmxvYik7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVy LCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFu ZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4gPiA+ICsJCW51bV9oaXRzKys7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFtYWdlLiIpOwo+ ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX3NyY19tb3ZlZCh2b2lk ICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0 YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOwo+ID4g PiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9y ZWN0IGNsaXA7Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiArCQkud2lkdGggPSAy MDQ4LAo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKwkJLmNydGMg PSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsJCS5mYiA9ICZmYiwKPiA+ID4gPiArCQkudmlzaWJs ZSA9IHRydWUsCj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIFBsYW5lIHNyYyBt b3ZlZCBzaW5jZSBvbGQgcGxhbmUgc3RhdGUuICovCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZv bGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwlzZXRfcGxh bmVfc3JjKCZzdGF0ZSwgMTAgPDwgMTYsIDEwIDw8IDE2LAo+ID4gPiA+ICsJCSAgICAgICgxMCAr IDEwMjQpIDw8IDE2LCAoMTAgKyA3NjgpIDw8IDE2KTsKPiA+ID4gPiArCXNldF9kYW1hZ2VfY2xp cCgmZGFtYWdlLCAyMCwgMzAsIDI1NiwgMjU2KTsKPiA+ID4gPiArCXNldF9kYW1hZ2VfYmxvYigm ZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsKPiA+ID4gPiArCXNldF9wbGFu ZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiAr CWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiAr CQludW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNo b3VsZCByZXR1cm4gcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsKPiA+ID4gPiArCUZBSUxfT04oIWNo ZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDEwLCAxMCwgMTAzNCwgNzc4KSk7Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0 YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92 ZWQodm9pZAo+ID4gPiAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9h dG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1h Z2VfYmxvYjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ID4gPiAr CXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4g KwkJLndpZHRoID0gMjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsJfTsK PiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4g PiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIsCj4gPiA+ ID4gKwkJLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwkv KiBQbGFuZSBzcmMgd2l0aCBmcmFjdGlvbmFsIHBhcnQgbW92ZWQgc2luY2Ugb2xkIHBsYW5lIHN0 YXRlLiAqLwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAweDNmZmZlLCAweDNm ZmZlLAo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAo NzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0 MDAwMiwKPiA+ID4gPiArCQkgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsg KDc2OCA8PCAxNikpOwo+ID4gPiA+ICsJLyogRGFtYWdlIGludGVyc2VjdCB3aXRoIHBsYW5lIHNy Yy4gKi8KPiA+ID4gPiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAyMCwgMzAsIDEzNjAsIDI1 Nik7Cj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXpl b2YoZGFtYWdlKSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9i bG9iKTsKPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIs ICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5l X2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4g PiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHJvdW5kZWQgb2ZmIHBs YW5lIHNyYyBhcwo+ID4gPiBkYW1hZ2UuIik7Cj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1h Z2VfY2xpcCgmc3RhdGUsICZjbGlwLCA0LCA0LCAxMDI5LCA3NzMpKTsKPiA+ID4gPiArCj4gPiA+ ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBp Z3RfZGFtYWdlX2l0ZXJfZGFtYWdlKHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4gPiAr CXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1h Z2VbMl07Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArCXVpbnQzMl90 IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy IGZiID0gewo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIw NDgKPiA+ID4gPiArCX07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBzdGF0ZSA9IHsKPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKwkJ LmZiID0gJmZiLAo+ID4gPiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwKPiA+ID4gPiArCX07Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2 LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQg PDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwkvKiAyIGRhbWFnZSBjbGlwcy4gKi8KPiA+ID4g PiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzBdLCAyMCwgMzAsIDIwMCwgMTgwKTsKPiA+ID4g PiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzFdLCAyNDAsIDIwMCwgMjgwLCAyNTApOwo+ID4g PiA+ICsJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRh bWFnZSkpOwo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7 Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xk X3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1h Z2UoJml0ZXIsICZjbGlwKSB7Cj4gPiA+ID4gKwkJaWYgKG51bV9oaXRzID09IDApCj4gPiA+ID4g KwkJCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDIwLCAzMCwKPiA+ ID4gMjAwLCAxODApKTsKPiA+ID4gPiArCQlpZiAobnVtX2hpdHMgPT0gMSkKPiA+ID4gPiArCQkJ RkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjQwLAo+ID4gPiAyMDAs IDI4MCwgMjUwKSk7Cj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiArCX0KPiA+ID4gPiAr Cj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDIsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVu IHNldC4iKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ ICsKPiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9pbnRlcnNl Y3Qodm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNf aGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl IG9sZF9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxv YjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZVsyXTsKPiA+ID4gPiArCXN0 cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4g PiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKwkJ LndpZHRoID0gMjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsJfTsKPiA+ ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIsCj4gPiA+ID4g KwkJLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzZXRf cGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKwkJICAgICAg MHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiAr CXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQwMDAyLAo+ID4gPiA+ICsJCSAgICAg IDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4g KwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIGludGVyc2VjdCBwbGFuZSBzcmMuICovCj4gPiA+ID4g KwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMjAsIDMwLCAyMDAsIDE4MCk7Cj4gPiA+ID4g KwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMiwgMiwgMTM2MCwgMTM2MCk7Cj4gPiA+ID4g KwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlWzBdLCBzaXplb2YoZGFtYWdl KSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3Rh dGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgm aXRlciwgJmNsaXApIHsKPiA+ID4gPiArCQlpZiAobnVtX2hpdHMgPT0gMCkKPiA+ID4gPiArCQkJ RkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjAsIDMwLAo+ID4gPiAy MDAsIDE4MCkpOwo+ID4gPiA+ICsJCWlmIChudW1faGl0cyA9PSAxKQo+ID4gPiA+ICsJCQlGQUlM X09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCA0LCA0LAo+ID4gPiAxMDI5LCA3 NzMpKTsKPiA+ID4gPiArCQludW1faGl0cysrOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4g PiArCUZBSUwobnVtX2hpdHMgIT0gMiwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdoZW4gc2V0LiIp Owo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4g PiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX291dHNpZGUodm9pZCAq aWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2Rh bWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0 ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ID4g PiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZVsyXTsKPiA+ID4gPiArCXN0cnVjdCBkcm1f cmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKwkJLndpZHRoID0g MjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsJCS5jcnRj ID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIsCj4gPiA+ID4gKwkJLnZpc2li bGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3Jj KCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4gKwlzZXRf cGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4gPiAr CS8qIDIgZGFtYWdlIGNsaXBzLCBvbmUgb3V0c2lkZSBwbGFuZSBzcmMuICovCj4gPiA+ID4gKwlz ZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2MCwgMTM4MCwgMTM4MCk7Cj4gPiA+ ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMjQwLCAyMDAsIDI4MCwgMjUwKTsKPiA+ ID4gPiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2VbMF0sIHNpemVvZihk YW1hZ2UpKTsKPiA+ID4gPiArCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2Ip Owo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9s ZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFt YWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArCQludW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4g PiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdoZW4gc2V0LiIp Owo+ID4gPiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjQw LCAyMDAsIDI4MCwgMjUwKSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4g K30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9z cmNfbW92ZWQodm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9h dG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1h Z2VfYmxvYjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZVsyXTsKPiA+ID4g PiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAw Owo+ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ ID4gKwkJLndpZHRoID0gMjA0OCwKPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsJ fTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArCQkuZmIgPSAmZmIsCj4g PiA+ID4gKwkJLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsJfTsKPiA+ID4gPiArCj4gPiA+ID4g KwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKwkJ ICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDNmZmZlLCAweDNmZmZlLAo+ID4gPiA+ICsJ CSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7Cj4g PiA+ID4gKwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIG91dHNpZGUgcGxhbmUgc3JjLiAqLwo+ID4g PiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMF0sIDEzNjAsIDEzNjAsIDEzODAsIDEzODAp Owo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1 MCk7Cj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlWzBdLCBz aXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFn ZV9ibG9iKTsKPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0 ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3Bs YW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsKPiA+ID4gPiAr Cj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHJvdW5kIG9mZiBw bGFuZSBzcmMgYXMgZGFtYWdlLiIpOwo+ID4gPiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2Ns aXAoJnN0YXRlLCAmY2xpcCwgMywgMywgMTAyOCwgNzcyKSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ cmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2Rh bWFnZV9pdGVyX2RhbWFnZV9ub3RfdmlzaWJsZSh2b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4g PiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOwo+ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3Jl Y3QgZGFtYWdlWzJdOwo+ID4gPiA+ICsJc3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKwl1 aW50MzJfdCBudW1faGl0cyA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiArCQkud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsJCS5oZWln aHQgPSAyMDQ4Cj4gPiA+ID4gKwl9Owo+ID4gPiA+ICsKPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4g PiA+ICsJCS5mYiA9ICZmYiwKPiA+ID4gPiArCQkudmlzaWJsZSA9IGZhbHNlLAo+ID4gPiA+ICsJ fTsKPiA+ID4gPiArCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIs IDB4NDAwMDIsCj4gPiA+ID4gKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAw MiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDNmZmZl LCAweDNmZmZlLAo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2Zm ZmUgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIG91dHNp ZGUgcGxhbmUgc3JjLiAqLwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMF0sIDEz NjAsIDEzNjAsIDEzODAsIDEzODApOwo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2Vb MV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7Cj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFn ZV9ibG9iLCAmZGFtYWdlWzBdLCBzaXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKwlzZXRfcGxhbmVf ZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVy X2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKwlk cm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKwkJ bnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDAsICJTaG91 bGQgbm90IHJldHVybiBhbnkgZGFtYWdlLiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAw Owo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmMi Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2RybV9kYW1hZ2VfaGVs cGVyX2luaXQodm9pZCkKPiA+ID4gPiArewo+ID4gPiA+ICsJaW50IGVycjsKPiA+ID4gPiArCj4g PiA+ID4gKwllcnIgPSBydW5fc2VsZnRlc3RzKHNlbGZ0ZXN0cywgQVJSQVlfU0laRShzZWxmdGVz dHMpLCBOVUxMKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gZXJyID4gMCA/IDAgOiBlcnI7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyB2b2lkIF9fZXhpdCB0ZXN0X2Ry bV9kYW1hZ2VfaGVscGVyX2V4aXQodm9pZCkKPiA+ID4gPiArewo+ID4gPiA+ICt9Cj4gPiA+ID4g Kwo+ID4gPiA+ICttb2R1bGVfaW5pdCh0ZXN0X2RybV9kYW1hZ2VfaGVscGVyX2luaXQpOwo+ID4g PiA+ICttb2R1bGVfZXhpdCh0ZXN0X2RybV9kYW1hZ2VfaGVscGVyX2V4aXQpOwo+ID4gPiA+ICsK PiA+ID4gPiArTU9EVUxFX0FVVEhPUigiVk13YXJlIEluYy4iKTsKPiA+ID4gPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOwo+ID4gPiA+IC0tCj4gPiA+ID4gMi4xNy4xCj4gPiA+ID4KPiA+ID4gCj4g PiA+IC0tCj4gPiA+IERhbmllbCBWZXR0ZXIKPiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCj4gPiA+IGh0dHBzOi8vbmEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRs b29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZibG9nLmZmCj4gPiA+IHdsbC5jaCZhbXA7ZGF0YT0w MiU3QzAxJTdDZHJhd2F0JTQwdm13YXJlLmNvbSU3QzY0ZTdkZWIzZGMyNjRjCj4gPiA+IDZmMTFh MDA4ZDYyZjk1ZDk2ZSU3Q2IzOTEzOGNhM2NlZTRiNGFhNGQ2Y2Q4M2Q5ZGQ2MmYwJTdDMSU3QzAl Nwo+ID4gPiBDNjM2NzQ4NzE3OTc5NzE0MTk3JmFtcDtzZGF0YT12Q3o3MUwlMkJvTXBGU0dGWmlm ZyUyRjBiUjFDeHpSZUxhCj4gPiA+IDdEeTNzczNVS2VMclUlM0QmYW1wO3Jlc2VydmVkPTAKPiAK PiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApDaGVlcnMsCkFsZXggRwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK