From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 625EE6E0E0 for ; Fri, 24 Jul 2020 11:37:32 +0000 (UTC) Date: Fri, 24 Jul 2020 13:37:26 +0200 From: Zbigniew =?utf-8?Q?Kempczy=C5=84ski?= Message-ID: <20200724113726.GA3775@zkempczy-mobl2> References: <20200724095659.535-1-zbigniew.kempczynski@intel.com> <20200724095659.535-13-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH i-g-t v3 12/13] tests/perf: remove libdrm dependency for rendercopy List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Lionel Landwerlin Cc: igt-dev@lists.freedesktop.org, Chris Wilson List-ID: T24gRnJpLCBKdWwgMjQsIDIwMjAgYXQgMDI6MTA6NTFQTSArMDMwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gT24gMjQvMDcvMjAyMCAxMjo1NiwgWmJpZ25pZXcgS2VtcGN6ecWEc2tpIHdy b3RlOgo+ID4gUmVuZGVyY29weSBub3cgdXNlcyBuby1kcm0gdmVyc2lvbiBzbyBhbGwgdXNlcnMg aGFzIHRvCj4gPiBtaWdyYXRlIHRvIG5ldyBpbnRlcmZhY2UuCj4gPiAKPiA+IFNpZ25lZC1vZmYt Ynk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29t Pgo+ID4gQ2M6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNv bT4KPiA+IENjOiBEb21pbmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5j b20+Cj4gPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gCj4g Cj4gVGhhbmtzIGEgYnVuY2ggZm9yIHRoaXMuCj4gCj4gSSBoYXZlIG9ubHkgYSBzaW5nbGUgcXVl c3Rpb24gYmVsb3csIG90aGVyd2lzZSBpdCBsb29rcyBncmVhdC4KPiAKPiAtTGlvbmVsCj4gCj4g Cj4gPiAtLS0KPiA+ICAgdGVzdHMvaTkxNS9wZXJmLmMgfCA2NjMgKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gICAxIGZpbGUgY2hhbmdlZCwgMjgxIGlu c2VydGlvbnMoKyksIDM4MiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3Rz L2k5MTUvcGVyZi5jIGIvdGVzdHMvaTkxNS9wZXJmLmMKPiA+IGluZGV4IDkyZWRjOWYxLi5mZDJi NDA3MyAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2k5MTUvcGVyZi5jCj4gPiArKysgYi90ZXN0cy9p OTE1L3BlcmYuYwo+ID4gQEAgLTQ5Nyw2NCArNDk3LDQyIEBAIG9hX3JlcG9ydF9nZXRfY3R4X2lk KHVpbnQzMl90ICpyZXBvcnQpCj4gPiAgIH0KPiA+ICAgc3RhdGljIHZvaWQKPiA+IC1zY3JhdGNo X2J1Zl9tZW1zZXQoZHJtX2ludGVsX2JvICpibywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50 MzJfdCBjb2xvcikKPiA+ICtzY3JhdGNoX2J1Zl9tZW1zZXQoc3RydWN0IGludGVsX2J1ZiAqYnVm LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGNvbG9yKQo+ID4gICB7Cj4gPiAtCWlu dCByZXQ7Cj4gPiAtCj4gPiAtCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIHRydWUgLyogd3Jp dGFibGUgKi8pOwo+ID4gLQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gPiArCWludGVsX2J1Zl9j cHVfbWFwKGJ1ZiwgdHJ1ZSk7Cj4gPiAgIAlmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoICogaGVp Z2h0OyBpKyspCj4gPiAtCQkoKHVpbnQzMl90ICopYm8tPnZpcnR1YWwpW2ldID0gY29sb3I7Cj4g PiArCQlidWYtPnB0cltpXSA9IGNvbG9yOwo+ID4gLQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwo+ ID4gKwlpbnRlbF9idWZfdW5tYXAoYnVmKTsKPiA+ICAgfQo+ID4gICBzdGF0aWMgdm9pZAo+ID4g LXNjcmF0Y2hfYnVmX2luaXQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+ID4gLQkJIHN0cnVj dCBpZ3RfYnVmICpidWYsCj4gPiArc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgYnVmX29wcyAqYm9w cywKPiA+ICsJCSBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCj4gPiAgIAkJIGludCB3aWR0aCwgaW50 IGhlaWdodCwKPiA+ICAgCQkgdWludDMyX3QgY29sb3IpCj4gPiAgIHsKPiA+IC0Jc2l6ZV90IHN0 cmlkZSA9IHdpZHRoICogNDsKPiA+IC0Jc2l6ZV90IHNpemUgPSBzdHJpZGUgKiBoZWlnaHQ7Cj4g PiAtCWRybV9pbnRlbF9ibyAqYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAiIiwgc2l6 ZSwgNDA5Nik7Cj4gPiAtCj4gPiAtCXNjcmF0Y2hfYnVmX21lbXNldChibywgd2lkdGgsIGhlaWdo dCwgY29sb3IpOwo+ID4gLQo+ID4gLQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwo+ID4g LQo+ID4gLQlidWYtPmJvID0gYm87Cj4gPiAtCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBzdHJp ZGU7Cj4gPiAtCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPiA+IC0JYnVmLT5zdXJm YWNlWzBdLnNpemUgPSBzaXplOwo+ID4gLQlidWYtPmJwcCA9IDMyOwo+ID4gKwlpbnRlbF9idWZf aW5pdChib3BzLCBidWYsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLAo+ID4gKwkJICAgICAgIEk5MTVf VElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7Cj4gPiArCXNjcmF0Y2hfYnVmX21l bXNldChidWYsIHdpZHRoLCBoZWlnaHQsIGNvbG9yKTsKPiA+ICAgfQo+ID4gICBzdGF0aWMgdm9p ZAo+ID4gLWVtaXRfcmVwb3J0X3BlcmZfY291bnQoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaCwKPiA+IC0JCSAgICAgICBkcm1faW50ZWxfYm8gKmRzdF9ibywKPiA+ICtlbWl0X3JlcG9y dF9wZXJmX2NvdW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAo+ID4gKwkJICAgICAgIHN0cnVjdCBp bnRlbF9idWYgKmRzdCwKPiA+ICAgCQkgICAgICAgaW50IGRzdF9vZmZzZXQsCj4gPiAgIAkJICAg ICAgIHVpbnQzMl90IHJlcG9ydF9pZCkKPiA+ICAgewo+ID4gLQlpZiAoSVNfSEFTV0VMTChkZXZp ZCkpIHsKPiA+IC0JCUJFR0lOX0JBVENIKDMsIDEpOwo+ID4gLQkJT1VUX0JBVENIKEdFTjZfTUlf UkVQT1JUX1BFUkZfQ09VTlQpOwo+ID4gLQkJT1VUX1JFTE9DKGRzdF9ibywgSTkxNV9HRU1fRE9N QUlOX0lOU1RSVUNUSU9OLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sCj4gPiAtCQkJICBk c3Rfb2Zmc2V0KTsKPiA+IC0JCU9VVF9CQVRDSChyZXBvcnRfaWQpOwo+ID4gLQkJQURWQU5DRV9C QVRDSCgpOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJLyogWFhYOiBOQjogbiBkd29yZHMgYXJnIGlz IGFjdHVhbGx5IG1hZ2ljIHNpbmNlIGl0IGludGVybmFsbHkKPiA+IC0JCSAqIGF1dG9tYXRpY2Fs bHkgYWNjb3VudHMgZm9yIGxhcmdlciBhZGRyZXNzZXMgb24gZ2VuID49IDguLi4KPiA+IC0JCSAq Lwo+ID4gLQkJQkVHSU5fQkFUQ0goMywgMSk7Cj4gPiAtCQlPVVRfQkFUQ0goR0VOOF9NSV9SRVBP UlRfUEVSRl9DT1VOVCk7Cj4gPiAtCQlPVVRfUkVMT0MoZHN0X2JvLCBJOTE1X0dFTV9ET01BSU5f SU5TVFJVQ1RJT04sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwKPiA+IC0JCQkgIGRzdF9v ZmZzZXQpOwo+ID4gLQkJT1VUX0JBVENIKHJlcG9ydF9pZCk7Cj4gPiAtCQlBRFZBTkNFX0JBVENI KCk7Cj4gPiAtCX0KPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2aWQpKQo+ID4gKwkJaW50ZWxfYmJf b3V0KGliYiwgR0VONl9NSV9SRVBPUlRfUEVSRl9DT1VOVCk7Cj4gPiArCWVsc2UKPiA+ICsJCWlu dGVsX2JiX291dChpYmIsIEdFTjhfTUlfUkVQT1JUX1BFUkZfQ09VTlQpOwo+ID4gKwo+ID4gKwlp bnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgZHN0LT5oYW5kbGUsCj4gPiArCQkJICAgIEk5MTVfR0VN X0RPTUFJTl9JTlNUUlVDVElPTiwgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLAo+ID4gKwkJ CSAgICBkc3Rfb2Zmc2V0LCBkc3QtPmFkZHIub2Zmc2V0KTsKPiA+ICsJaW50ZWxfYmJfb3V0KGli YiwgcmVwb3J0X2lkKTsKPiA+ICAgfQo+ID4gICBzdGF0aWMgdm9pZAo+ID4gQEAgLTE0OTUsMTQg KzE0NzMsMTMgQEAgZW51bSBsb2FkIHsKPiA+ICAgc3RhdGljIHN0cnVjdCBsb2FkX2hlbHBlciB7 Cj4gPiAgIAlpbnQgZGV2aWQ7Cj4gPiAtCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKPiA+IC0J ZHJtX2ludGVsX2NvbnRleHQgKmNvbnRleHQ7Cj4gPiArCXN0cnVjdCBidWZfb3BzICpib3BzOwo+ ID4gICAJdWludDMyX3QgY29udGV4dF9pZDsKPiA+IC0Jc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaDsKPiA+ICsJc3RydWN0IGludGVsX2JiICppYmI7Cj4gPiAgIAllbnVtIGxvYWQgbG9h ZDsKPiA+ICAgCWJvb2wgZXhpdDsKPiA+ICAgCXN0cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgaWd0 X3Byb2M7Cj4gPiAtCXN0cnVjdCBpZ3RfYnVmIHNyYywgZHN0Owo+ID4gKwlzdHJ1Y3QgaW50ZWxf YnVmIHNyYywgZHN0Owo+ID4gICB9IGxoID0geyAwLCB9Owo+ID4gICBzdGF0aWMgdm9pZCBsb2Fk X2hlbHBlcl9zaWduYWxfaGFuZGxlcihpbnQgc2lnKQo+ID4gQEAgLTE1MjQsNiArMTUwMSwxNCBA QCBzdGF0aWMgdm9pZCBsb2FkX2hlbHBlcl9zZXRfbG9hZChlbnVtIGxvYWQgbG9hZCkKPiA+ICAg CWtpbGwobGguaWd0X3Byb2MucGlkLCBTSUdVU1IyKTsKPiA+ICAgfQo+ID4gK3N0YXRpYyB2b2lk IHNldF90b19ndHRfZG9tYWluKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50IHdyaXRpbmcpCj4g PiArewo+ID4gKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJ1Zi0+Ym9wcyk7Cj4gPiArCj4g PiArCWdlbV9zZXRfZG9tYWluKGk5MTUsIGJ1Zi0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RU LAo+ID4gKwkJICAgICAgIHdyaXRpbmcgPyBJOTE1X0dFTV9ET01BSU5fR1RUIDogMCk7Cj4gPiAr fQo+IAo+IAo+IElzIHRoaXMgd2hhdCB3ZSBhY3R1YWxseSB3YW50Pwo+IAo+IFdoeSBub3QgdXNl IGEgZmVuY2Ugb24gdGhlIGludGVsX2JiX3N5bmMoKSA/CgpJIGRpZG4ndCB3YW50IHRvIGludHJv ZHVjZSBhbnkgbG9naWMgY2hhbmdlcyBzbyBJIGRpZCBleGFjdGx5CnRoZSBzYW1lIGRybV9pbnRl bF9ib193YWl0X3JlbmRlcmluZygpIGlzIGRvaW5nIChzZXR0aW5nIHRvIEdUVCBkb21haW4pLgpJ ZiB5b3VyIGludGVudGlvbiBpcyBqdXN0IHRvIHdhaXQgZm9yIGNvbXBsZXRpb24gSSBjYW4ganVz dCBkbwppbnRlbF9iYl9zeW5jKGliYikgdG8gd2FpdCBvbiBhIGZlbmNlLgoKLS0KWmJpZ25pZXcK Cj4gCj4gCj4gPiArCj4gPiAgIHN0YXRpYyB2b2lkIGxvYWRfaGVscGVyX3J1bihlbnVtIGxvYWQg bG9hZCkKPiA+ICAgewo+ID4gICAJLyoKPiA+IEBAIC0xNTQyLDIxICsxNTI3LDEyIEBAIHN0YXRp YyB2b2lkIGxvYWRfaGVscGVyX3J1bihlbnVtIGxvYWQgbG9hZCkKPiA+ICAgCQlzaWduYWwoU0lH VVNSMiwgbG9hZF9oZWxwZXJfc2lnbmFsX2hhbmRsZXIpOwo+ID4gICAJCXdoaWxlICghbGguZXhp dCkgewo+ID4gLQkJCWludCByZXQ7Cj4gPiAtCj4gPiAtCQkJcmVuZGVyX2NvcHkobGguYmF0Y2gs Cj4gPiAtCQkJCSAgICBsaC5jb250ZXh0LAo+ID4gKwkJCXJlbmRlcl9jb3B5KGxoLmliYiwKPiA+ ICsJCQkJICAgIGxoLmNvbnRleHRfaWQsCj4gPiAgIAkJCQkgICAgJmxoLnNyYywgMCwgMCwgMTky MCwgMTA4MCwKPiA+ICAgCQkJCSAgICAmbGguZHN0LCAwLCAwKTsKPiA+IC0JCQlpbnRlbF9iYXRj aGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQobGguYmF0Y2gsCj4gPiAtCQkJCQkJCSAgICAgbGgu Y29udGV4dCk7Cj4gPiAtCj4gPiAtCQkJcmV0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2dldF9p ZChsaC5jb250ZXh0LAo+ID4gLQkJCQkJCQkgICAmbGguY29udGV4dF9pZCk7Cj4gPiAtCQkJaWd0 X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gLQo+ID4gLQkJCWRybV9pbnRlbF9ib193YWl0X3JlbmRl cmluZyhsaC5kc3QuYm8pOwo+ID4gKwkJCXNldF90b19ndHRfZG9tYWluKCZsaC5kc3QsIHRydWUp Owo+ID4gICAJCQkvKiBMb3dlciB0aGUgbG9hZCBieSBwYXVzaW5nIGFmdGVyIGV2ZXJ5IHN1Ym1p dHRlZAo+ID4gICAJCQkgKiB3cml0ZS4gKi8KPiA+IEBAIC0xNTc0LDUyICsxNTUwLDM2IEBAIHN0 YXRpYyB2b2lkIGxvYWRfaGVscGVyX3N0b3Aodm9pZCkKPiA+ICAgc3RhdGljIHZvaWQgbG9hZF9o ZWxwZXJfaW5pdCh2b2lkKQo+ID4gICB7Cj4gPiAtCWludCByZXQ7Cj4gPiAtCj4gPiAgIAlsaC5k ZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZHJtX2ZkKTsKPiA+ICAgCS8qIE1JX1NUT1JFX0RB VEEgY2FuIG9ubHkgdXNlIEdUVCBhZGRyZXNzIG9uIGdlbjQrL2czMyBhbmQgbmVlZHMKPiA+ICAg CSAqIHNub29wYWJsZSBtZW0gb24gcHJlLWdlbjYuIEhlbmNlIGxvYWQtaGVscGVyIG9ubHkgd29y a3Mgb24gZ2VuNissIGJ1dAo+ID4gICAJICogdGhhdCdzIGFsc28gYWxsIHdlIGNhcmUgYWJvdXQg Zm9yIHRoZSBycHMgdGVzdGNhc2UqLwo+ID4gICAJaWd0X2Fzc2VydChpbnRlbF9nZW4obGguZGV2 aWQpID49IDYpOwo+ID4gLQlsaC5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRy bV9mZCwgNDA5Nik7Cj4gPiAtCWlndF9hc3NlcnQobGguYnVmbWdyKTsKPiA+IC0KPiA+IC0JZHJt X2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGxoLmJ1Zm1ncik7Cj4gPiAtCWxoLmNvbnRl eHQgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGxoLmJ1Zm1ncik7Cj4gPiAtCWlndF9h c3NlcnQobGguY29udGV4dCk7Cj4gPiArCWxoLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkcm1fZmQp Owo+ID4gLQlsaC5jb250ZXh0X2lkID0gMHhmZmZmZmZmZjsKPiA+IC0JcmV0ID0gZHJtX2ludGVs X2dlbV9jb250ZXh0X2dldF9pZChsaC5jb250ZXh0LCAmbGguY29udGV4dF9pZCk7Cj4gPiAtCWln dF9hc3NlcnRfZXEocmV0LCAwKTsKPiA+ICsJbGguY29udGV4dF9pZCA9IGdlbV9jb250ZXh0X2Ny ZWF0ZShkcm1fZmQpOwo+ID4gICAJaWd0X2Fzc2VydF9uZXEobGguY29udGV4dF9pZCwgMHhmZmZm ZmZmZik7Cj4gPiAtCWxoLmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MobGguYnVmbWdy LCBsaC5kZXZpZCk7Cj4gPiAtCWlndF9hc3NlcnQobGguYmF0Y2gpOwo+ID4gKwlsaC5pYmIgPSBp bnRlbF9iYl9jcmVhdGUoZHJtX2ZkLCBCQVRDSF9TWik7Cj4gPiAtCXNjcmF0Y2hfYnVmX2luaXQo bGguYnVmbWdyLCAmbGguZHN0LCAxOTIwLCAxMDgwLCAwKTsKPiA+IC0Jc2NyYXRjaF9idWZfaW5p dChsaC5idWZtZ3IsICZsaC5zcmMsIDE5MjAsIDEwODAsIDApOwo+ID4gKwlzY3JhdGNoX2J1Zl9p bml0KGxoLmJvcHMsICZsaC5kc3QsIDE5MjAsIDEwODAsIDApOwo+ID4gKwlzY3JhdGNoX2J1Zl9p bml0KGxoLmJvcHMsICZsaC5zcmMsIDE5MjAsIDEwODAsIDApOwo+ID4gICB9Cj4gPiAgIHN0YXRp YyB2b2lkIGxvYWRfaGVscGVyX2Zpbmkodm9pZCkKPiA+ICAgewo+ID4gKwlpbnQgaTkxNSA9IGJ1 Zl9vcHNfZ2V0X2ZkKGxoLmJvcHMpOwo+ID4gKwo+ID4gICAJaWYgKGxoLmlndF9wcm9jLnJ1bm5p bmcpCj4gPiAgIAkJbG9hZF9oZWxwZXJfc3RvcCgpOwo+ID4gLQlpZiAobGguc3JjLmJvKQo+ID4g LQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGxoLnNyYy5ibyk7Cj4gPiAtCWlmIChsaC5kc3Qu Ym8pCj4gPiAtCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UobGguZHN0LmJvKTsKPiA+IC0KPiA+ IC0JaWYgKGxoLmJhdGNoKQo+ID4gLQkJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShsaC5iYXRjaCk7 Cj4gPiAtCj4gPiAtCWlmIChsaC5jb250ZXh0KQo+ID4gLQkJZHJtX2ludGVsX2dlbV9jb250ZXh0 X2Rlc3Ryb3kobGguY29udGV4dCk7Cj4gPiAtCj4gPiAtCWlmIChsaC5idWZtZ3IpCj4gPiAtCQlk cm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3kobGguYnVmbWdyKTsKPiA+ICsJaW50ZWxfYnVmX2Nsb3Nl KGxoLmJvcHMsICZsaC5zcmMpOwo+ID4gKwlpbnRlbF9idWZfY2xvc2UobGguYm9wcywgJmxoLmRz dCk7Cj4gPiArCWludGVsX2JiX2Rlc3Ryb3kobGguaWJiKTsKPiA+ICsJZ2VtX2NvbnRleHRfZGVz dHJveShpOTE1LCBsaC5jb250ZXh0X2lkKTsKPiA+ICsJYnVmX29wc19kZXN0cm95KGxoLmJvcHMp Owo+ID4gICB9Cj4gPiAgIHN0YXRpYyBib29sIGV4cGVjdGVkX3JlcG9ydF90aW1pbmdfZGVsdGEo dWludDMyX3QgZGVsdGEsIHVpbnQzMl90IGV4cGVjdGVkX2RlbHRhKQo+ID4gQEAgLTE4ODgsMjAg KzE4NDgsMTEgQEAgdGVzdF9wZXJfY29udGV4dF9tb2RlX3VucHJpdmlsZWdlZCh2b2lkKQo+ID4g ICAJd3JpdGVfdTY0X2ZpbGUoIi9wcm9jL3N5cy9kZXYvaTkxNS9wZXJmX3N0cmVhbV9wYXJhbm9p ZCIsIDEpOwo+ID4gICAJaWd0X2ZvcmsoY2hpbGQsIDEpIHsKPiA+IC0JCWRybV9pbnRlbF9jb250 ZXh0ICpjb250ZXh0Owo+ID4gLQkJZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwo+ID4gICAJCXVp bnQzMl90IGN0eF9pZCA9IDB4ZmZmZmZmZmY7IC8qIGludmFsaWQgaWQgKi8KPiA+IC0JCWludCBy ZXQ7Cj4gPiAgIAkJaWd0X2Ryb3Bfcm9vdCgpOwo+ID4gLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1 Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwo+ID4gLQkJY29udGV4dCA9IGRybV9pbnRlbF9n ZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPiA+IC0KPiA+IC0JCWlndF9hc3NlcnQoY29udGV4 dCk7Cj4gPiAtCj4gPiAtCQlyZXQgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRl eHQsICZjdHhfaWQpOwo+ID4gLQkJaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gKwkJY3R4X2lk ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9mZCk7Cj4gPiAgIAkJaWd0X2Fzc2VydF9uZXEoY3R4 X2lkLCAweGZmZmZmZmZmKTsKPiA+ICAgCQlwcm9wZXJ0aWVzWzFdID0gY3R4X2lkOwo+ID4gQEAg LTE5MDksOCArMTg2MCw3IEBAIHRlc3RfcGVyX2NvbnRleHRfbW9kZV91bnByaXZpbGVnZWQodm9p ZCkKPiA+ICAgCQlzdHJlYW1fZmQgPSBfX3BlcmZfb3Blbihkcm1fZmQsICZwYXJhbSwgZmFsc2Up Owo+ID4gICAJCV9fcGVyZl9jbG9zZShzdHJlYW1fZmQpOwo+ID4gLQkJZHJtX2ludGVsX2dlbV9j b250ZXh0X2Rlc3Ryb3koY29udGV4dCk7Cj4gPiAtCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3ko YnVmbWdyKTsKPiA+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjdHhfaWQpOwo+ID4g ICAJfQo+ID4gICAJaWd0X3dhaXRjaGlsZHJlbigpOwo+ID4gQEAgLTI5MzYsNTUgKzI4ODYsNDQg QEAgZ2VuMTJfdGVzdF9taV9ycGModm9pZCkKPiA+ICAgCQkubnVtX3Byb3BlcnRpZXMgPSBBUlJB WV9TSVpFKHByb3BlcnRpZXMpIC8gMiwKPiA+ICAgCQkucHJvcGVydGllc19wdHIgPSB0b191c2Vy X3BvaW50ZXIocHJvcGVydGllcyksCj4gPiAgIAl9Owo+ID4gLQlkcm1faW50ZWxfYm8gKmJvOwo+ ID4gLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Cj4gPiAtCWRybV9pbnRlbF9jb250ZXh0ICpj b250ZXh0Owo+ID4gLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwo+ID4gKwlzdHJ1 Y3QgYnVmX29wcyAqYm9wczsKPiA+ICsJc3RydWN0IGludGVsX2JiICppYmI7Cj4gPiArCXN0cnVj dCBpbnRlbF9idWYgKmJ1ZjsKPiA+ICAgI2RlZmluZSBJTlZBTElEX0NUWF9JRCAweGZmZmZmZmZm Cj4gPiAgIAl1aW50MzJfdCBjdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKPiA+ICAgCXVpbnQzMl90 ICpyZXBvcnQzMjsKPiA+IC0JaW50IHJldDsKPiA+ICAgCXNpemVfdCBmb3JtYXRfc2l6ZV8zMjsK PiA+ICAgCXN0cnVjdCBvYV9mb3JtYXQgZm9ybWF0ID0gZ2V0X29hX2Zvcm1hdCh0ZXN0X3NldC0+ cGVyZl9vYV9mb3JtYXQpOwo+ID4gICAJLyogRW5zdXJlIHBlcmZfc3RyZWFtX3BhcmFub2lkIGlz IHNldCB0byAxIGJ5IGRlZmF1bHQgKi8KPiA+ICAgCXdyaXRlX3U2NF9maWxlKCIvcHJvYy9zeXMv ZGV2L2k5MTUvcGVyZl9zdHJlYW1fcGFyYW5vaWQiLCAxKTsKPiA+IC0JYnVmbWdyID0gZHJtX2lu dGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwo+ID4gLQlpZ3RfYXNzZXJ0KGJ1Zm1n cik7Cj4gPiAtCj4gPiAtCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShidWZtZ3Ip Owo+ID4gLQo+ID4gLQljb250ZXh0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShidWZt Z3IpOwo+ID4gLQlpZ3RfYXNzZXJ0KGNvbnRleHQpOwo+ID4gLQo+ID4gLQlyZXQgPSBkcm1faW50 ZWxfZ2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRleHQsICZjdHhfaWQpOwo+ID4gLQlpZ3RfYXNzZXJ0 X2VxKHJldCwgMCk7Cj4gPiArCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShkcm1fZmQpOwo+ID4gKwlj dHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2ZkKTsKPiA+ICAgCWlndF9hc3NlcnRfbmVx KGN0eF9pZCwgSU5WQUxJRF9DVFhfSUQpOwo+ID4gICAJcHJvcGVydGllc1sxXSA9IGN0eF9pZDsK PiA+IC0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKPiA+ IC0JYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAibWlfcnBjIGRlc3QgYm8iLCA0MDk2 LCA2NCk7Cj4gPiArCWliYiA9IGludGVsX2JiX2NyZWF0ZShkcm1fZmQsIEJBVENIX1NaKTsKPiA+ ICsJYnVmID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCA0MDk2LCAxLCA4LCA2NCwKPiA+ICsJCQkg ICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKPiA+IC0JcmV0 ID0gZHJtX2ludGVsX2JvX21hcChibywgdHJ1ZSk7Cj4gPiAtCWlndF9hc3NlcnRfZXEocmV0LCAw KTsKPiA+IC0JbWVtc2V0KGJvLT52aXJ0dWFsLCAweDgwLCA0MDk2KTsKPiA+IC0JZHJtX2ludGVs X2JvX3VubWFwKGJvKTsKPiA+ICsJaW50ZWxfYnVmX2NwdV9tYXAoYnVmLCB0cnVlKTsKPiA+ICsJ bWVtc2V0KGJ1Zi0+cHRyLCAweDgwLCA0MDk2KTsKPiA+ICsJaW50ZWxfYnVmX3VubWFwKGJ1Zik7 Cj4gPiAgIAlzdHJlYW1fZmQgPSBfX3BlcmZfb3Blbihkcm1fZmQsICZwYXJhbSwgZmFsc2UpOwo+ ID4gICAjZGVmaW5lIFJFUE9SVF9JRCAweGRlYWRiZWVmCj4gPiAgICNkZWZpbmUgUkVQT1JUX09G RlNFVCAwCj4gPiAtCWVtaXRfcmVwb3J0X3BlcmZfY291bnQoYmF0Y2gsCj4gPiAtCQkJICAgICAg IGJvLAo+ID4gKwllbWl0X3JlcG9ydF9wZXJmX2NvdW50KGliYiwKPiA+ICsJCQkgICAgICAgYnVm LAo+ID4gICAJCQkgICAgICAgUkVQT1JUX09GRlNFVCwKPiA+ICAgCQkJICAgICAgIFJFUE9SVF9J RCk7Cj4gPiAtCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29u dGV4dCk7Cj4gPiArCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiLCBjdHhf aWQpOwo+ID4gKwlpbnRlbF9iYl9zeW5jKGliYik7Cj4gPiAtCXJldCA9IGRybV9pbnRlbF9ib19t YXAoYm8sIGZhbHNlKTsKPiA+IC0JaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gLQo+ID4gLQly ZXBvcnQzMiA9IGJvLT52aXJ0dWFsOwo+ID4gKwlpbnRlbF9idWZfY3B1X21hcChidWYsIGZhbHNl KTsKPiA+ICsJcmVwb3J0MzIgPSBidWYtPnB0cjsKPiA+ICAgCWZvcm1hdF9zaXplXzMyID0gZm9y bWF0LnNpemUgPj4gMjsKPiA+ICAgCWR1bXBfcmVwb3J0KHJlcG9ydDMyLCBmb3JtYXRfc2l6ZV8z MiwgIm1pLXJwYyIpOwo+ID4gQEAgLTMwMDYsMTEgKzI5NDUsMTEgQEAgZ2VuMTJfdGVzdF9taV9y cGModm9pZCkKPiA+ICAgCWlndF9hc3NlcnRfbmVxKHJlcG9ydDMyW2Zvcm1hdC5iX29mZiA+PiAy XSwgMHg4MDgwODA4MCk7Cj4gPiAgIAlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDMyW2Zvcm1hdF9zaXpl XzMyXSwgMHg4MDgwODA4MCk7Cj4gPiAtCWRybV9pbnRlbF9ib191bm1hcChibyk7Cj4gPiAtCWRy bV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Cj4gPiAtCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUo YmF0Y2gpOwo+ID4gLQlkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShjb250ZXh0KTsKPiA+ IC0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7Cj4gPiArCWludGVsX2J1Zl91bm1h cChidWYpOwo+ID4gKwlpbnRlbF9idWZfZGVzdHJveShidWYpOwo+ID4gKwlpbnRlbF9iYl9kZXN0 cm95KGliYik7Cj4gPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjdHhfaWQpOwo+ID4g KwlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7Cj4gPiAgIAlfX3BlcmZfY2xvc2Uoc3RyZWFtX2ZkKTsK PiA+ICAgfQo+ID4gQEAgLTMwMzQsNDEgKzI5NzMsMzMgQEAgdGVzdF9taV9ycGModm9pZCkKPiA+ ICAgCQkubnVtX3Byb3BlcnRpZXMgPSBzaXplb2YocHJvcGVydGllcykgLyAxNiwKPiA+ICAgCQku cHJvcGVydGllc19wdHIgPSB0b191c2VyX3BvaW50ZXIocHJvcGVydGllcyksCj4gPiAgIAl9Owo+ ID4gLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0 KGRybV9mZCwgNDA5Nik7Cj4gPiAtCWRybV9pbnRlbF9jb250ZXh0ICpjb250ZXh0Owo+ID4gLQlz dHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwo+ID4gLQlkcm1faW50ZWxfYm8gKmJvOwo+ ID4gLQl1aW50MzJfdCAqcmVwb3J0MzI7Cj4gPiAtCWludCByZXQ7Cj4gPiArCXN0cnVjdCBidWZf b3BzICpib3BzID0gYnVmX29wc19jcmVhdGUoZHJtX2ZkKTsKPiA+ICsJc3RydWN0IGludGVsX2Ji ICppYmI7Cj4gPiArCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsKPiA+ICsJdWludDMyX3QgKnJlcG9y dDMyLCBjdHhfaWQ7Cj4gPiAgIAlzdHJlYW1fZmQgPSBfX3BlcmZfb3Blbihkcm1fZmQsICZwYXJh bSwgZmFsc2UpOwo+ID4gLQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYnVmbWdy KTsKPiA+IC0KPiA+IC0JY29udGV4dCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVm bWdyKTsKPiA+IC0JaWd0X2Fzc2VydChjb250ZXh0KTsKPiA+ICsJY3R4X2lkID0gZ2VtX2NvbnRl eHRfY3JlYXRlKGRybV9mZCk7Cj4gPiAtCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2Mo YnVmbWdyLCBkZXZpZCk7Cj4gPiArCWliYiA9IGludGVsX2JiX2NyZWF0ZShkcm1fZmQsIEJBVENI X1NaKTsKPiA+ICsJYnVmID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCA0MDk2LCAxLCA4LCA2NCwK PiA+ICsJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsK PiA+IC0JYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAibWlfcnBjIGRlc3QgYm8iLCA0 MDk2LCA2NCk7Cj4gPiArCWludGVsX2J1Zl9jcHVfbWFwKGJ1ZiwgdHJ1ZSk7Cj4gPiArCW1lbXNl dChidWYtPnB0ciwgMHg4MCwgNDA5Nik7Cj4gPiArCWludGVsX2J1Zl91bm1hcChidWYpOwo+ID4g LQlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGJvLCB0cnVlKTsKPiA+IC0JaWd0X2Fzc2VydF9lcShy ZXQsIDApOwo+ID4gLQo+ID4gLQltZW1zZXQoYm8tPnZpcnR1YWwsIDB4ODAsIDQwOTYpOwo+ID4g LQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwo+ID4gLQo+ID4gLQllbWl0X3JlcG9ydF9wZXJmX2Nv dW50KGJhdGNoLAo+ID4gLQkJCSAgICAgICBibywgLyogZHN0ICovCj4gPiArCWVtaXRfcmVwb3J0 X3BlcmZfY291bnQoaWJiLAo+ID4gKwkJCSAgICAgICBidWYsIC8qIGRzdCAqLwo+ID4gICAJCQkg ICAgICAgMCwgLyogZHN0IG9mZnNldCBpbiBieXRlcyAqLwo+ID4gICAJCQkgICAgICAgMHhkZWFk YmVlZik7IC8qIHJlcG9ydCBJRCAqLwo+ID4gLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRo X2NvbnRleHQoYmF0Y2gsIGNvbnRleHQpOwo+ID4gLQo+ID4gLQlyZXQgPSBkcm1faW50ZWxfYm9f bWFwKGJvLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gLQlpZ3RfYXNzZXJ0X2VxKHJl dCwgMCk7Cj4gPiArCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiLCBjdHhf aWQpOwo+ID4gKwlpbnRlbF9iYl9zeW5jKGliYik7Cj4gPiAtCXJlcG9ydDMyID0gYm8tPnZpcnR1 YWw7Cj4gPiArCWludGVsX2J1Zl9jcHVfbWFwKGJ1ZiwgZmFsc2UpOwo+ID4gKwlyZXBvcnQzMiA9 IGJ1Zi0+cHRyOwo+ID4gICAJZHVtcF9yZXBvcnQocmVwb3J0MzIsIDY0LCAibWktcnBjIik7Cj4g PiAgIAlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDMyWzBdLCAweGRlYWRiZWVmKTsgLyogcmVwb3J0IElE ICovCj4gPiAgIAlpZ3RfYXNzZXJ0X25lcShyZXBvcnQzMlsxXSwgMCk7IC8qIHRpbWVzdGFtcCAq Lwo+ID4gQEAgLTMwNzYsMTcgKzMwMDcsMTcgQEAgdGVzdF9taV9ycGModm9pZCkKPiA+ICAgCWln dF9hc3NlcnRfbmVxKHJlcG9ydDMyWzYzXSwgMHg4MDgwODA4MCk7IC8qIGVuZCBvZiByZXBvcnQg Ki8KPiA+ICAgCWlndF9hc3NlcnRfZXEocmVwb3J0MzJbNjRdLCAweDgwODA4MDgwKTsgLyogYWZ0 ZXIgMjU2IGJ5dGUgcmVwb3J0ICovCj4gPiAtCWRybV9pbnRlbF9ib191bm1hcChibyk7Cj4gPiAt CWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Cj4gPiAtCWludGVsX2JhdGNoYnVmZmVyX2Zy ZWUoYmF0Y2gpOwo+ID4gLQlkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShjb250ZXh0KTsK PiA+IC0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7Cj4gPiArCWludGVsX2J1Zl91 bm1hcChidWYpOwo+ID4gKwlpbnRlbF9idWZfZGVzdHJveShidWYpOwo+ID4gKwlpbnRlbF9iYl9k ZXN0cm95KGliYik7Cj4gPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjdHhfaWQpOwo+ ID4gKwlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7Cj4gPiAgIAlfX3BlcmZfY2xvc2Uoc3RyZWFtX2Zk KTsKPiA+ICAgfQo+ID4gICBzdGF0aWMgdm9pZAo+ID4gLWVtaXRfc3RhbGxfdGltZXN0YW1wX2Fu ZF9ycGMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+IC0JCQkgICAgIGRybV9p bnRlbF9ibyAqZHN0LAo+ID4gK2VtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoc3RydWN0IGlu dGVsX2JiICppYmIsCj4gPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCj4gPiAgIAkJ CSAgICAgaW50IHRpbWVzdGFtcF9vZmZzZXQsCj4gPiAgIAkJCSAgICAgaW50IHJlcG9ydF9kc3Rf b2Zmc2V0LAo+ID4gICAJCQkgICAgIHVpbnQzMl90IHJlcG9ydF9pZCkKPiA+IEBAIC0zMDk1LDI3 ICszMDI2LDE5IEBAIGVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKPiA+ICAgCQkJCSAgIFBJUEVfQ09OVFJPTF9SRU5ERVJfVEFSR0VU X0ZMVVNIIHwKPiA+ICAgCQkJCSAgIFBJUEVfQ09OVFJPTF9XUklURV9USU1FU1RBTVApOwo+ID4g LQlpZiAoaW50ZWxfZ2VuKGRldmlkKSA+PSA4KSB7Cj4gPiAtCQlCRUdJTl9CQVRDSCg1LCAxKTsK PiA+IC0JCU9VVF9CQVRDSChHRlhfT1BfUElQRV9DT05UUk9MIHwgKDYgLSAyKSk7Cj4gPiAtCQlP VVRfQkFUQ0gocGlwZV9jdGxfZmxhZ3MpOwo+ID4gLQkJT1VUX1JFTE9DKGRzdCwgSTkxNV9HRU1f RE9NQUlOX0lOU1RSVUNUSU9OLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sCj4gPiAtCQkJ ICB0aW1lc3RhbXBfb2Zmc2V0KTsKPiA+IC0JCU9VVF9CQVRDSCgwKTsgLyogaW1tIGxvd2VyICov Cj4gPiAtCQlPVVRfQkFUQ0goMCk7IC8qIGltbSB1cHBlciAqLwo+ID4gLQkJQURWQU5DRV9CQVRD SCgpOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJQkVHSU5fQkFUQ0goNSwgMSk7Cj4gPiAtCQlPVVRf QkFUQ0goR0ZYX09QX1BJUEVfQ09OVFJPTCB8ICg1IC0gMikpOwo+ID4gLQkJT1VUX0JBVENIKHBp cGVfY3RsX2ZsYWdzKTsKPiA+IC0JCU9VVF9SRUxPQyhkc3QsIEk5MTVfR0VNX0RPTUFJTl9JTlNU UlVDVElPTiwgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLAo+ID4gLQkJCSAgdGltZXN0YW1w X29mZnNldCk7Cj4gPiAtCQlPVVRfQkFUQ0goMCk7IC8qIGltbSBsb3dlciAqLwo+ID4gLQkJT1VU X0JBVENIKDApOyAvKiBpbW0gdXBwZXIgKi8KPiA+IC0JCUFEVkFOQ0VfQkFUQ0goKTsKPiA+IC0J fQo+ID4gKwlpZiAoaW50ZWxfZ2VuKGRldmlkKSA+PSA4KQo+ID4gKwkJaW50ZWxfYmJfb3V0KGli YiwgR0ZYX09QX1BJUEVfQ09OVFJPTCB8ICg2IC0gMikpOwo+ID4gKwllbHNlCj4gPiArCQlpbnRl bF9iYl9vdXQoaWJiLCBHRlhfT1BfUElQRV9DT05UUk9MIHwgKDUgLSAyKSk7Cj4gPiArCj4gPiAr CWludGVsX2JiX291dChpYmIsIHBpcGVfY3RsX2ZsYWdzKTsKPiA+ICsJaW50ZWxfYmJfZW1pdF9y ZWxvYyhpYmIsIGRzdC0+aGFuZGxlLAo+ID4gKwkJCSAgICBJOTE1X0dFTV9ET01BSU5fSU5TVFJV Q1RJT04sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwKPiA+ICsJCQkgICAgdGltZXN0YW1w X29mZnNldCwgZHN0LT5hZGRyLm9mZnNldCk7Cj4gPiArCWludGVsX2JiX291dChpYmIsIDApOyAv KiBpbW0gbG93ZXIgKi8KPiA+ICsJaW50ZWxfYmJfb3V0KGliYiwgMCk7IC8qIGltbSB1cHBlciAq Lwo+ID4gLQllbWl0X3JlcG9ydF9wZXJmX2NvdW50KGJhdGNoLCBkc3QsIHJlcG9ydF9kc3Rfb2Zm c2V0LCByZXBvcnRfaWQpOwo+ID4gKwllbWl0X3JlcG9ydF9wZXJmX2NvdW50KGliYiwgZHN0LCBy ZXBvcnRfZHN0X29mZnNldCwgcmVwb3J0X2lkKTsKPiA+ICAgfQo+ID4gICAvKiBUZXN0cyB0aGUg SU5URUxfcGVyZm9ybWFuY2VfcXVlcnkgdXNlIGNhc2Ugd2hlcmUgYW4gdW5wcml2aWxlZ2VkIHBy b2Nlc3MKPiA+IEBAIC0zMTU2LDExICszMDc5LDEwIEBAIGhzd190ZXN0X3NpbmdsZV9jdHhfY291 bnRlcnModm9pZCkKPiA+ICAgCXdyaXRlX3U2NF9maWxlKCIvcHJvYy9zeXMvZGV2L2k5MTUvcGVy Zl9zdHJlYW1fcGFyYW5vaWQiLCAxKTsKPiA+ICAgCWlndF9mb3JrKGNoaWxkLCAxKSB7Cj4gPiAt CQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Cj4gPiAtCQlkcm1faW50ZWxfY29udGV4dCAqY29u dGV4dDAsICpjb250ZXh0MTsKPiA+IC0JCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7 Cj4gPiAtCQlzdHJ1Y3QgaWd0X2J1ZiBzcmNbM10sIGRzdFszXTsKPiA+IC0JCWRybV9pbnRlbF9i byAqYm87Cj4gPiArCQlzdHJ1Y3QgYnVmX29wcyAqYm9wczsKPiA+ICsJCXN0cnVjdCBpbnRlbF9i dWYgc3JjWzNdLCBkc3RbM10sICpkc3RfYnVmOwo+ID4gKwkJc3RydWN0IGludGVsX2JiICppYmIw LCAqaWJiMTsKPiA+ICsJCXVpbnQzMl90IGNvbnRleHQwX2lkLCBjb250ZXh0MV9pZDsKPiA+ICAg CQl1aW50MzJfdCAqcmVwb3J0MF8zMiwgKnJlcG9ydDFfMzI7Cj4gPiAgIAkJdWludDY0X3QgdGlt ZXN0YW1wMF82NCwgdGltZXN0YW1wMV82NDsKPiA+ICAgCQl1aW50MzJfdCBkZWx0YV90czY0LCBk ZWx0YV9vYTMyOwo+ID4gQEAgLTMxNjksMjYgKzMwOTEsMjQgQEAgaHN3X3Rlc3Rfc2luZ2xlX2N0 eF9jb3VudGVycyh2b2lkKQo+ID4gICAJCWludCBuX3NhbXBsZXNfd3JpdHRlbjsKPiA+ICAgCQlp bnQgd2lkdGggPSA4MDA7Cj4gPiAgIAkJaW50IGhlaWdodCA9IDYwMDsKPiA+IC0JCXVpbnQzMl90 IGN0eF9pZCA9IDB4ZmZmZmZmZmY7IC8qIGludmFsaWQgaWQgKi8KPiA+IC0JCWludCByZXQ7Cj4g PiAgIAkJaWd0X2Ryb3Bfcm9vdCgpOwo+ID4gLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9n ZW1faW5pdChkcm1fZmQsIDQwOTYpOwo+ID4gLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxl X3JldXNlKGJ1Zm1ncik7Cj4gPiArCQlib3BzID0gYnVmX29wc19jcmVhdGUoZHJtX2ZkKTsKPiA+ ICAgCQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Cj4gPiAtCQkJ c2NyYXRjaF9idWZfaW5pdChidWZtZ3IsICZzcmNbaV0sIHdpZHRoLCBoZWlnaHQsIDB4ZmYwMDAw ZmYpOwo+ID4gLQkJCXNjcmF0Y2hfYnVmX2luaXQoYnVmbWdyLCAmZHN0W2ldLCB3aWR0aCwgaGVp Z2h0LCAweDAwZmYwMGZmKTsKPiA+ICsJCQlzY3JhdGNoX2J1Zl9pbml0KGJvcHMsICZzcmNbaV0s IHdpZHRoLCBoZWlnaHQsIDB4ZmYwMDAwZmYpOwo+ID4gKwkJCXNjcmF0Y2hfYnVmX2luaXQoYm9w cywgJmRzdFtpXSwgd2lkdGgsIGhlaWdodCwgMHgwMGZmMDBmZik7Cj4gPiAgIAkJfQo+ID4gLQkJ YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKPiA+IC0KPiA+ IC0JCWNvbnRleHQwID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShidWZtZ3IpOwo+ID4g LQkJaWd0X2Fzc2VydChjb250ZXh0MCk7Cj4gPiAtCj4gPiAtCQljb250ZXh0MSA9IGRybV9pbnRl bF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPiA+IC0JCWlndF9hc3NlcnQoY29udGV4dDEp Owo+ID4gKwkJLyoKPiA+ICsJCSAqIFdlIGN1cnJlbnRseSBjYWNoZSBhZGRyZXNzZXMgZm9yIGJ1 ZmZlcnMgd2l0aGluCj4gPiArCQkgKiBpbnRlbF9iYiwgc28gdXNlIHNlcGFyYXRlIGJhdGNoZXMg Zm9yIGRpZmZlcmVudCBjb250ZXh0cwo+ID4gKwkJICovCj4gPiArCQlpYmIwID0gaW50ZWxfYmJf Y3JlYXRlKGRybV9mZCwgQkFUQ0hfU1opOwo+ID4gKwkJaWJiMSA9IGludGVsX2JiX2NyZWF0ZShk cm1fZmQsIEJBVENIX1NaKTsKPiA+ICsJCWNvbnRleHQwX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRl KGRybV9mZCk7Cj4gPiArCQljb250ZXh0MV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1fZmQp Owo+ID4gICAJCWlndF9kZWJ1Zygic3VibWl0dGluZyB3YXJtIHVwIHJlbmRlcl9jb3B5XG4iKTsK PiA+IEBAIC0zMjEyLDM0ICszMTMyLDMyIEBAIGhzd190ZXN0X3NpbmdsZV9jdHhfY291bnRlcnMo dm9pZCkKPiA+ICAgCQkgKiB1cCBwaW5uaW5nIHRoZSBjb250ZXh0IHNpbmNlIHRoZXJlIHdvbid0 IGV2ZXIgYmUgYSBwaW5uaW5nCj4gPiAgIAkJICogaG9vayBjYWxsYmFjay4KPiA+ICAgCQkgKi8K PiA+IC0JCXJlbmRlcl9jb3B5KGJhdGNoLAo+ID4gLQkJCSAgICBjb250ZXh0MCwKPiA+ICsJCXJl bmRlcl9jb3B5KGliYjAsCj4gPiArCQkJICAgIGNvbnRleHQwX2lkLAo+ID4gICAJCQkgICAgJnNy Y1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKPiA+ICAgCQkJICAgICZkc3RbMF0sIDAsIDApOwo+ ID4gLQkJcmV0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MCwgJmN0eF9p ZCk7Cj4gPiAtCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gPiAtCQlpZ3RfYXNzZXJ0X25lcShj dHhfaWQsIDB4ZmZmZmZmZmYpOwo+ID4gLQkJcHJvcGVydGllc1sxXSA9IGN0eF9pZDsKPiA+ICsJ CXByb3BlcnRpZXNbMV0gPSBjb250ZXh0MF9pZDsKPiA+IC0JCWludGVsX2JhdGNoYnVmZmVyX2Zs dXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDApOwo+ID4gKwkJaW50ZWxfYmJfZmx1c2hf cmVuZGVyX3dpdGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9pZCk7Cj4gPiArCQlpbnRlbF9iYl9z eW5jKGliYjApOwo+ID4gLQkJc2NyYXRjaF9idWZfbWVtc2V0KHNyY1swXS5ibywgd2lkdGgsIGhl aWdodCwgMHhmZjAwMDBmZik7Cj4gPiAtCQlzY3JhdGNoX2J1Zl9tZW1zZXQoZHN0WzBdLmJvLCB3 aWR0aCwgaGVpZ2h0LCAweDAwZmYwMGZmKTsKPiA+ICsJCXNjcmF0Y2hfYnVmX21lbXNldCgmc3Jj WzBdLCB3aWR0aCwgaGVpZ2h0LCAweGZmMDAwMGZmKTsKPiA+ICsJCXNjcmF0Y2hfYnVmX21lbXNl dCgmZHN0WzBdLCB3aWR0aCwgaGVpZ2h0LCAweDAwZmYwMGZmKTsKPiA+ICAgCQlpZ3RfZGVidWco Im9wZW5pbmcgaTkxNS1wZXJmIHN0cmVhbVxuIik7Cj4gPiAgIAkJc3RyZWFtX2ZkID0gX19wZXJm X29wZW4oZHJtX2ZkLCAmcGFyYW0sIGZhbHNlKTsKPiA+IC0JCWJvID0gZHJtX2ludGVsX2JvX2Fs bG9jKGJ1Zm1nciwgIm1pX3JwYyBkZXN0IGJvIiwgNDA5NiwgNjQpOwo+ID4gLQo+ID4gLQkJcmV0 ID0gZHJtX2ludGVsX2JvX21hcChibywgdHJ1ZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gLQkJ aWd0X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gKwkJZHN0X2J1ZiA9IGludGVsX2J1Zl9jcmVhdGUo Ym9wcywgNDA5NiwgMSwgOCwgNjQsCj4gPiArCQkJCQkgICBJOTE1X1RJTElOR19OT05FLAo+ID4g KwkJCQkJICAgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKPiA+IC0JCW1lbXNldChiby0+dmlydHVh bCwgMHg4MCwgNDA5Nik7Cj4gPiAtCQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwo+ID4gKwkJaW50 ZWxfYnVmX2NwdV9tYXAoZHN0X2J1ZiwgdHJ1ZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gKwkJ bWVtc2V0KGRzdF9idWYtPnB0ciwgMHg4MCwgNDA5Nik7Cj4gPiArCQlpbnRlbF9idWZfdW5tYXAo ZHN0X2J1Zik7Cj4gPiAtCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAo+ID4g LQkJCQkJICAgICBibywKPiA+ICsJCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoaWJiMCwK PiA+ICsJCQkJCSAgICAgZHN0X2J1ZiwKPiA+ICAgCQkJCQkgICAgIDUxMiAvKiB0aW1lc3RhbXAg b2Zmc2V0ICovLAo+ID4gICAJCQkJCSAgICAgMCwgLyogcmVwb3J0IGRzdCBvZmZzZXQgKi8KPiA+ ICAgCQkJCQkgICAgIDB4ZGVhZGJlZWYpOyAvKiByZXBvcnQgaWQgKi8KPiA+IEBAIC0zMjQ5LDQ1 ICszMTY3LDQ1IEBAIGhzd190ZXN0X3NpbmdsZV9jdHhfY291bnRlcnModm9pZCkKPiA+ICAgCQkg KiB0aGF0IHRoZSBQSVBFX0NPTlRST0wgKyBNSV9SUEMgY29tbWFuZHMgd2lsbCBiZSBpbiBhCj4g PiAgIAkJICogc2VwYXJhdGUgYmF0Y2ggZnJvbSB0aGUgY29weS4KPiA+ICAgCQkgKi8KPiA+IC0J CWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDApOwo+ ID4gKwkJaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9p ZCk7Cj4gPiAtCQlyZW5kZXJfY29weShiYXRjaCwKPiA+IC0JCQkgICAgY29udGV4dDAsCj4gPiAr CQlyZW5kZXJfY29weShpYmIwLAo+ID4gKwkJCSAgICBjb250ZXh0MF9pZCwKPiA+ICAgCQkJICAg ICZzcmNbMF0sIDAsIDAsIHdpZHRoLCBoZWlnaHQsCj4gPiAgIAkJCSAgICAmZHN0WzBdLCAwLCAw KTsKPiA+ICAgCQkvKiBBbm90aGVyIHJlZHVuZGFudCBmbHVzaCB0byBjbGFyaWZ5IGJhdGNoIGJv IGlzIGZyZWUgdG8gcmV1c2UgKi8KPiA+IC0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhf Y29udGV4dChiYXRjaCwgY29udGV4dDApOwo+ID4gKwkJaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dp dGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9pZCk7Cj4gPiAgIAkJLyogc3VibWl0IHR3byBjb3Bp ZXMgb24gdGhlIG90aGVyIGNvbnRleHQgdG8gYXZvaWQgYSBmYWxzZQo+ID4gICAJCSAqIHBvc2l0 aXZlIGluIGNhc2UgdGhlIGRyaXZlciBzb21laG93IGVuZGVkIHVwIGZpbHRlcmluZyBmb3IKPiA+ ICAgCQkgKiBjb250ZXh0MQo+ID4gICAJCSAqLwo+ID4gLQkJcmVuZGVyX2NvcHkoYmF0Y2gsCj4g PiAtCQkJICAgIGNvbnRleHQxLAo+ID4gKwkJcmVuZGVyX2NvcHkoaWJiMSwKPiA+ICsJCQkgICAg Y29udGV4dDFfaWQsCj4gPiAgIAkJCSAgICAmc3JjWzFdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ ID4gICAJCQkgICAgJmRzdFsxXSwgMCwgMCk7Cj4gPiAtCQlyZW5kZXJfY29weShiYXRjaCwKPiA+ IC0JCQkgICAgY29udGV4dDEsCj4gPiArCQlyZW5kZXJfY29weShpYmIxLAo+ID4gKwkJCSAgICBj b250ZXh0MV9pZCwKPiA+ICAgCQkJICAgICZzcmNbMl0sIDAsIDAsIHdpZHRoLCBoZWlnaHQsCj4g PiAgIAkJCSAgICAmZHN0WzJdLCAwLCAwKTsKPiA+ICAgCQkvKiBBbmQgYW5vdGhlciAqLwo+ID4g LQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MSk7 Cj4gPiArCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRleHQx X2lkKTsKPiA+IC0JCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoYmF0Y2gsCj4gPiAtCQkJ CQkgICAgIGJvLAo+ID4gKwkJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhpYmIwLAo+ID4g KwkJCQkJICAgICBkc3RfYnVmLAo+ID4gICAJCQkJCSAgICAgNTIwIC8qIHRpbWVzdGFtcCBvZmZz ZXQgKi8sCj4gPiAgIAkJCQkJICAgICAyNTYsIC8qIHJlcG9ydCBkc3Qgb2Zmc2V0ICovCj4gPiAg IAkJCQkJICAgICAweGJlZWZiZWVmKTsgLyogcmVwb3J0IGlkICovCj4gPiAtCQlpbnRlbF9iYXRj aGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQwKTsKPiA+ICsJCWludGVs X2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMCwgY29udGV4dDBfaWQpOwo+ID4gKwkJ aW50ZWxfYmJfc3luYyhpYmIwKTsKPiA+IC0JCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIGZh bHNlIC8qIHdyaXRlIGVuYWJsZSAqLyk7Cj4gPiAtCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4g PiArCQlpbnRlbF9idWZfY3B1X21hcChkc3RfYnVmLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUgKi8p Owo+ID4gLQkJcmVwb3J0MF8zMiA9IGJvLT52aXJ0dWFsOwo+ID4gKwkJcmVwb3J0MF8zMiA9IGRz dF9idWYtPnB0cjsKPiA+ICAgCQlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDBfMzJbMF0sIDB4ZGVhZGJl ZWYpOyAvKiByZXBvcnQgSUQgKi8KPiA+ICAgCQlpZ3RfYXNzZXJ0X25lcShyZXBvcnQwXzMyWzFd LCAwKTsgLyogdGltZXN0YW1wICovCj4gPiBAQCAtMzMwNyw4ICszMjI1LDggQEAgaHN3X3Rlc3Rf c2luZ2xlX2N0eF9jb3VudGVycyh2b2lkKQo+ID4gICAJCWlndF9kZWJ1ZygidGltZXN0YW1wMzIg MCA9ICV1XG4iLCByZXBvcnQwXzMyWzFdKTsKPiA+ICAgCQlpZ3RfZGVidWcoInRpbWVzdGFtcDMy IDEgPSAldVxuIiwgcmVwb3J0MV8zMlsxXSk7Cj4gPiAtCQl0aW1lc3RhbXAwXzY0ID0gKih1aW50 NjRfdCAqKSgoKHVpbnQ4X3QgKiliby0+dmlydHVhbCkgKyA1MTIpOwo+ID4gLQkJdGltZXN0YW1w MV82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90ICopYm8tPnZpcnR1YWwpICsgNTIwKTsKPiA+ ICsJCXRpbWVzdGFtcDBfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0 cikgKyA1MTIpOwo+ID4gKwkJdGltZXN0YW1wMV82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90 ICopZHN0X2J1Zi0+cHRyKSArIDUyMCk7Cj4gPiAgIAkJaWd0X2RlYnVnKCJ0aW1lc3RhbXA2NCAw ID0gJSJQUkl1NjQiXG4iLCB0aW1lc3RhbXAwXzY0KTsKPiA+ICAgCQlpZ3RfZGVidWcoInRpbWVz dGFtcDY0IDEgPSAlIlBSSXU2NCJcbiIsIHRpbWVzdGFtcDFfNjQpOwo+ID4gQEAgLTMzMzYsMTYg KzMyNTQsMTcgQEAgaHN3X3Rlc3Rfc2luZ2xlX2N0eF9jb3VudGVycyh2b2lkKQo+ID4gICAJCWln dF9hc3NlcnQoZGVsdGFfZGVsdGEgPD0gMzIwKTsKPiA+ICAgCQlmb3IgKGludCBpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Cj4gPiAtCQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNl KHNyY1tpXS5ibyk7Cj4gPiAtCQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGRzdFtpXS5ibyk7 Cj4gPiArCQkJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZzcmNbaV0pOwo+ID4gKwkJCWludGVsX2J1 Zl9jbG9zZShib3BzLCAmZHN0W2ldKTsKPiA+ICAgCQl9Cj4gPiAtCQlkcm1faW50ZWxfYm9fdW5t YXAoYm8pOwo+ID4gLQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKPiA+IC0JCWludGVs X2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwo+ID4gLQkJZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rl c3Ryb3koY29udGV4dDApOwo+ID4gLQkJZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koY29u dGV4dDEpOwo+ID4gLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7Cj4gPiArCQlp bnRlbF9idWZfdW5tYXAoZHN0X2J1Zik7Cj4gPiArCQlpbnRlbF9idWZfZGVzdHJveShkc3RfYnVm KTsKPiA+ICsJCWludGVsX2JiX2Rlc3Ryb3koaWJiMCk7Cj4gPiArCQlpbnRlbF9iYl9kZXN0cm95 KGliYjEpOwo+ID4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShkcm1fZmQsIGNvbnRleHQwX2lkKTsK PiA+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjb250ZXh0MV9pZCk7Cj4gPiArCQli dWZfb3BzX2Rlc3Ryb3koYm9wcyk7Cj4gPiAgIAkJX19wZXJmX2Nsb3NlKHN0cmVhbV9mZCk7Cj4g PiAgIAl9Cj4gPiBAQCAtMzQwNiwxMSArMzMyNSwxMCBAQCBnZW44X3Rlc3Rfc2luZ2xlX2N0eF9y ZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKPiA+ICAgCQlpZ3RfZm9ya19oZWxw ZXIoJmNoaWxkKSB7Cj4gPiAgIAkJCXN0cnVjdCBkcm1faTkxNV9wZXJmX3JlY29yZF9oZWFkZXIg KmhlYWRlcjsKPiA+IC0JCQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Cj4gPiAtCQkJZHJtX2lu dGVsX2NvbnRleHQgKmNvbnRleHQwLCAqY29udGV4dDE7Cj4gPiAtCQkJc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaDsKPiA+IC0JCQlzdHJ1Y3QgaWd0X2J1ZiBzcmNbM10sIGRzdFszXTsK PiA+IC0JCQlkcm1faW50ZWxfYm8gKmJvOwo+ID4gKwkJCXN0cnVjdCBidWZfb3BzICpib3BzOwo+ ID4gKwkJCXN0cnVjdCBpbnRlbF9iYiAqaWJiMCwgKmliYjE7Cj4gPiArCQkJc3RydWN0IGludGVs X2J1ZiBzcmNbM10sIGRzdFszXSwgKmRzdF9idWY7Cj4gPiArCQkJdWludDMyX3QgY29udGV4dDBf aWQsIGNvbnRleHQxX2lkOwo+ID4gICAJCQl1aW50MzJfdCAqcmVwb3J0MF8zMiwgKnJlcG9ydDFf MzI7Cj4gPiAgIAkJCXVpbnQzMl90ICpwcmV2LCAqbHByZXYgPSBOVUxMOwo+ID4gICAJCQl1aW50 NjRfdCB0aW1lc3RhbXAwXzY0LCB0aW1lc3RhbXAxXzY0Owo+ID4gQEAgLTM0MjgsMjEgKzMzNDYs MTcgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0ZXNfYV9jb3VudGVy KHZvaWQpCj4gPiAgIAkJCQkuZm9ybWF0ID0gdGVzdF9zZXQtPnBlcmZfb2FfZm9ybWF0Cj4gPiAg IAkJCX07Cj4gPiAtCQkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQs IDQwOTYpOwo+ID4gLQkJCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShidWZtZ3Ip Owo+ID4gKwkJCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShkcm1fZmQpOwo+ID4gICAJCQlmb3IgKGlu dCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Cj4gPiAtCQkJCXNjcmF0Y2hfYnVm X2luaXQoYnVmbWdyLCAmc3JjW2ldLCB3aWR0aCwgaGVpZ2h0LCAweGZmMDAwMGZmKTsKPiA+IC0J CQkJc2NyYXRjaF9idWZfaW5pdChidWZtZ3IsICZkc3RbaV0sIHdpZHRoLCBoZWlnaHQsIDB4MDBm ZjAwZmYpOwo+ID4gKwkJCQlzY3JhdGNoX2J1Zl9pbml0KGJvcHMsICZzcmNbaV0sIHdpZHRoLCBo ZWlnaHQsIDB4ZmYwMDAwZmYpOwo+ID4gKwkJCQlzY3JhdGNoX2J1Zl9pbml0KGJvcHMsICZkc3Rb aV0sIHdpZHRoLCBoZWlnaHQsIDB4MDBmZjAwZmYpOwo+ID4gICAJCQl9Cj4gPiAtCQkJYmF0Y2gg PSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKPiA+IC0KPiA+IC0JCQlj b250ZXh0MCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPiA+IC0JCQlp Z3RfYXNzZXJ0KGNvbnRleHQwKTsKPiA+IC0KPiA+IC0JCQljb250ZXh0MSA9IGRybV9pbnRlbF9n ZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPiA+IC0JCQlpZ3RfYXNzZXJ0KGNvbnRleHQxKTsK PiA+ICsJCQlpYmIwID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgQkFUQ0hfU1opOwo+ID4gKwkJ CWliYjEgPSBpbnRlbF9iYl9jcmVhdGUoZHJtX2ZkLCBCQVRDSF9TWik7Cj4gPiArCQkJY29udGV4 dDBfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2ZkKTsKPiA+ICsJCQljb250ZXh0MV9pZCA9 IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1fZmQpOwo+ID4gICAJCQlpZ3RfZGVidWcoInN1Ym1pdHRp bmcgd2FybSB1cCByZW5kZXJfY29weVxuIik7Cj4gPiBAQCAtMzQ2NiwzMiArMzM4MCwzMCBAQCBn ZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkK PiA+ICAgCQkJICogdXAgcGlubmluZyB0aGUgY29udGV4dCBzaW5jZSB0aGVyZSB3b24ndCBldmVy IGJlIGEgcGlubmluZwo+ID4gICAJCQkgKiBob29rIGNhbGxiYWNrLgo+ID4gICAJCQkgKi8KPiA+ IC0JCQlyZW5kZXJfY29weShiYXRjaCwKPiA+IC0JCQkJICAgIGNvbnRleHQwLAo+ID4gKwkJCXJl bmRlcl9jb3B5KGliYjAsCj4gPiArCQkJCSAgICBjb250ZXh0MF9pZCwKPiA+ICAgCQkJCSAgICAm c3JjWzBdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ID4gICAJCQkJICAgICZkc3RbMF0sIDAsIDAp Owo+ID4gKwkJCWludGVsX2JiX3N5bmMoaWJiMCk7Cj4gPiAtCQkJcmV0ID0gZHJtX2ludGVsX2dl bV9jb250ZXh0X2dldF9pZChjb250ZXh0MCwgJmN0eF9pZCk7Cj4gPiAtCQkJaWd0X2Fzc2VydF9l cShyZXQsIDApOwo+ID4gLQkJCWlndF9hc3NlcnRfbmVxKGN0eF9pZCwgMHhmZmZmZmZmZik7Cj4g PiAtCQkJcHJvcGVydGllc1sxXSA9IGN0eF9pZDsKPiA+ICsJCQlwcm9wZXJ0aWVzWzFdID0gY29u dGV4dDBfaWQ7Cj4gPiAtCQkJc2NyYXRjaF9idWZfbWVtc2V0KHNyY1swXS5ibywgd2lkdGgsIGhl aWdodCwgMHhmZjAwMDBmZik7Cj4gPiAtCQkJc2NyYXRjaF9idWZfbWVtc2V0KGRzdFswXS5ibywg d2lkdGgsIGhlaWdodCwgMHgwMGZmMDBmZik7Cj4gPiArCQkJc2NyYXRjaF9idWZfbWVtc2V0KCZz cmNbMF0sIHdpZHRoLCBoZWlnaHQsIDB4ZmYwMDAwZmYpOwo+ID4gKwkJCXNjcmF0Y2hfYnVmX21l bXNldCgmZHN0WzBdLCB3aWR0aCwgaGVpZ2h0LCAweDAwZmYwMGZmKTsKPiA+ICAgCQkJaWd0X2Rl YnVnKCJvcGVuaW5nIGk5MTUtcGVyZiBzdHJlYW1cbiIpOwo+ID4gICAJCQlzdHJlYW1fZmQgPSBf X3BlcmZfb3Blbihkcm1fZmQsICZwYXJhbSwgZmFsc2UpOwo+ID4gLQkJCWJvID0gZHJtX2ludGVs X2JvX2FsbG9jKGJ1Zm1nciwgIm1pX3JwYyBkZXN0IGJvIiwgNDA5NiwgNjQpOwo+ID4gLQo+ID4g LQkJCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIHRydWUgLyogd3JpdGUgZW5hYmxlICovKTsK PiA+IC0JCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gPiArCQkJZHN0X2J1ZiA9IGludGVsX2J1 Zl9jcmVhdGUoYm9wcywgNDA5NiwgMSwgOCwgNjQsCj4gPiArCQkJCQkJICAgSTkxNV9USUxJTkdf Tk9ORSwKPiA+ICsJCQkJCQkgICBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOwo+ID4gLQkJCW1lbXNl dChiby0+dmlydHVhbCwgMHg4MCwgNDA5Nik7Cj4gPiAtCQkJZHJtX2ludGVsX2JvX3VubWFwKGJv KTsKPiA+ICsJCQlpbnRlbF9idWZfY3B1X21hcChkc3RfYnVmLCB0cnVlIC8qIHdyaXRlIGVuYWJs ZSAqLyk7Cj4gPiArCQkJbWVtc2V0KGRzdF9idWYtPnB0ciwgMHg4MCwgNDA5Nik7Cj4gPiArCQkJ aW50ZWxfYnVmX3VubWFwKGRzdF9idWYpOwo+ID4gLQkJCWVtaXRfc3RhbGxfdGltZXN0YW1wX2Fu ZF9ycGMoYmF0Y2gsCj4gPiAtCQkJCQkJICAgICBibywKPiA+ICsJCQllbWl0X3N0YWxsX3RpbWVz dGFtcF9hbmRfcnBjKGliYjAsCj4gPiArCQkJCQkJICAgICBkc3RfYnVmLAo+ID4gICAJCQkJCQkg ICAgIDUxMiAvKiB0aW1lc3RhbXAgb2Zmc2V0ICovLAo+ID4gICAJCQkJCQkgICAgIDAsIC8qIHJl cG9ydCBkc3Qgb2Zmc2V0ICovCj4gPiAgIAkJCQkJCSAgICAgMHhkZWFkYmVlZik7IC8qIHJlcG9y dCBpZCAqLwo+ID4gQEAgLTM1MDEsNDkgKzM0MTMsNDYgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhf cmVuZGVyX3RhcmdldF93cml0ZXNfYV9jb3VudGVyKHZvaWQpCj4gPiAgIAkJCSAqIHRoYXQgdGhl IFBJUEVfQ09OVFJPTCArIE1JX1JQQyBjb21tYW5kcyB3aWxsIGJlIGluIGEKPiA+ICAgCQkJICog c2VwYXJhdGUgYmF0Y2ggZnJvbSB0aGUgY29weS4KPiA+ICAgCQkJICovCj4gPiAtCQkJaW50ZWxf YmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MCk7Cj4gPiArCQkJ aW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9pZCk7Cj4g PiAtCQkJcmVuZGVyX2NvcHkoYmF0Y2gsCj4gPiAtCQkJCSAgICBjb250ZXh0MCwKPiA+ICsJCQly ZW5kZXJfY29weShpYmIwLAo+ID4gKwkJCQkgICAgY29udGV4dDBfaWQsCj4gPiAgIAkJCQkgICAg JnNyY1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKPiA+ICAgCQkJCSAgICAmZHN0WzBdLCAwLCAw KTsKPiA+ICAgCQkJLyogQW5vdGhlciByZWR1bmRhbnQgZmx1c2ggdG8gY2xhcmlmeSBiYXRjaCBi byBpcyBmcmVlIHRvIHJldXNlICovCj4gPiAtCQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0 aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MCk7Cj4gPiArCQkJaW50ZWxfYmJfZmx1c2hfcmVuZGVy X3dpdGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9pZCk7Cj4gPiAgIAkJCS8qIHN1Ym1pdCB0d28g Y29waWVzIG9uIHRoZSBvdGhlciBjb250ZXh0IHRvIGF2b2lkIGEgZmFsc2UKPiA+ICAgCQkJICog cG9zaXRpdmUgaW4gY2FzZSB0aGUgZHJpdmVyIHNvbWVob3cgZW5kZWQgdXAgZmlsdGVyaW5nIGZv cgo+ID4gICAJCQkgKiBjb250ZXh0MQo+ID4gICAJCQkgKi8KPiA+IC0JCQlyZW5kZXJfY29weShi YXRjaCwKPiA+IC0JCQkJICAgIGNvbnRleHQxLAo+ID4gKwkJCXJlbmRlcl9jb3B5KGliYjEsCj4g PiArCQkJCSAgICBjb250ZXh0MV9pZCwKPiA+ICAgCQkJCSAgICAmc3JjWzFdLCAwLCAwLCB3aWR0 aCwgaGVpZ2h0LAo+ID4gICAJCQkJICAgICZkc3RbMV0sIDAsIDApOwo+ID4gLQkJCXJldCA9IGRy bV9pbnRlbF9nZW1fY29udGV4dF9nZXRfaWQoY29udGV4dDEsICZjdHgxX2lkKTsKPiA+IC0JCQlp Z3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gPiAtCQkJaWd0X2Fzc2VydF9uZXEoY3R4MV9pZCwgMHhm ZmZmZmZmZik7Cj4gPiAtCj4gPiAtCQkJcmVuZGVyX2NvcHkoYmF0Y2gsCj4gPiAtCQkJCSAgICBj b250ZXh0MSwKPiA+ICsJCQlyZW5kZXJfY29weShpYmIxLAo+ID4gKwkJCQkgICAgY29udGV4dDFf aWQsCj4gPiAgIAkJCQkgICAgJnNyY1syXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKPiA+ICAgCQkJ CSAgICAmZHN0WzJdLCAwLCAwKTsKPiA+ICAgCQkJLyogQW5kIGFub3RoZXIgKi8KPiA+IC0JCQlp bnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQxKTsKPiA+ ICsJCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRleHQxX2lk KTsKPiA+IC0JCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAo+ID4gLQkJCQkJ CSAgICAgYm8sCj4gPiArCQkJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhpYmIxLAo+ID4g KwkJCQkJCSAgICAgZHN0X2J1ZiwKPiA+ICAgCQkJCQkJICAgICA1MjAgLyogdGltZXN0YW1wIG9m ZnNldCAqLywKPiA+ICAgCQkJCQkJICAgICAyNTYsIC8qIHJlcG9ydCBkc3Qgb2Zmc2V0ICovCj4g PiAgIAkJCQkJCSAgICAgMHhiZWVmYmVlZik7IC8qIHJlcG9ydCBpZCAqLwo+ID4gLQkJCWludGVs X2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDEpOwo+ID4gKwkJ CWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMSwgY29udGV4dDFfaWQpOwo+ ID4gKwkJCWludGVsX2JiX3N5bmMoaWJiMSk7Cj4gPiArCQkJaW50ZWxfYmJfc3luYyhpYmIwKTsK PiA+IC0JCQlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGJvLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUg Ki8pOwo+ID4gLQkJCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPiA+ICsJCQlpbnRlbF9idWZfY3B1 X21hcChkc3RfYnVmLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gLQkJCXJlcG9ydDBf MzIgPSBiby0+dmlydHVhbDsKPiA+ICsJCQlyZXBvcnQwXzMyID0gZHN0X2J1Zi0+cHRyOwo+ID4g ICAJCQlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDBfMzJbMF0sIDB4ZGVhZGJlZWYpOyAvKiByZXBvcnQg SUQgKi8KPiA+ICAgCQkJaWd0X2Fzc2VydF9uZXEocmVwb3J0MF8zMlsxXSwgMCk7IC8qIHRpbWVz dGFtcCAqLwo+ID4gICAJCQlwcmV2ID0gcmVwb3J0MF8zMjsKPiA+IEBAIC0zNTU1LDYgKzM0NjQs NyBAQCBnZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIo dm9pZCkKPiA+ICAgCQkJaWd0X2Fzc2VydF9lcShyZXBvcnQxXzMyWzBdLCAweGJlZWZiZWVmKTsg LyogcmVwb3J0IElEICovCj4gPiAgIAkJCWlndF9hc3NlcnRfbmVxKHJlcG9ydDFfMzJbMV0sIDAp OyAvKiB0aW1lc3RhbXAgKi8KPiA+ICAgCQkJY3R4MV9pZCA9IHJlcG9ydDFfMzJbMl07Cj4gPiAr CQkJaWd0X2RlYnVnKCJDVFgxIElEOiAldVxuIiwgY3R4MV9pZCk7Cj4gPiAgIAkJCWR1bXBfcmVw b3J0KHJlcG9ydDFfMzIsIDY0LCAicmVwb3J0MV8zMiIpOwo+ID4gICAJCQltZW1zZXQoYWNjdW11 bGF0b3IuZGVsdGFzLCAwLCBzaXplb2YoYWNjdW11bGF0b3IuZGVsdGFzKSk7Cj4gPiBAQCAtMzU2 OSw4ICszNDc5LDggQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0ZXNf YV9jb3VudGVyKHZvaWQpCj4gPiAgIAkJCWlndF9kZWJ1ZygiY3R4X2lkIDAgPSAldVxuIiwgcmVw b3J0MF8zMlsyXSk7Cj4gPiAgIAkJCWlndF9kZWJ1ZygiY3R4X2lkIDEgPSAldVxuIiwgcmVwb3J0 MV8zMlsyXSk7Cj4gPiAtCQkJdGltZXN0YW1wMF82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90 ICopYm8tPnZpcnR1YWwpICsgNTEyKTsKPiA+IC0JCQl0aW1lc3RhbXAxXzY0ID0gKih1aW50NjRf dCAqKSgoKHVpbnQ4X3QgKiliby0+dmlydHVhbCkgKyA1MjApOwo+ID4gKwkJCXRpbWVzdGFtcDBf NjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0cikgKyA1MTIpOwo+ID4g KwkJCXRpbWVzdGFtcDFfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0 cikgKyA1MjApOwo+ID4gICAJCQlpZ3RfZGVidWcoInRzX3RpbWVzdGFtcDY0IDAgPSAlIlBSSXU2 NCJcbiIsIHRpbWVzdGFtcDBfNjQpOwo+ID4gICAJCQlpZ3RfZGVidWcoInRzX3RpbWVzdGFtcDY0 IDEgPSAlIlBSSXU2NCJcbiIsIHRpbWVzdGFtcDFfNjQpOwo+ID4gQEAgLTM3NTgsMjcgKzM2Njgs MjYgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0ZXNfYV9jb3VudGVy KHZvaWQpCj4gPiAgIAkJCQkgIHdpZHRoLCBoZWlnaHQpOwo+ID4gICAJCQlhY2N1bXVsYXRvcl9w cmludCgmYWNjdW11bGF0b3IsICJmaWx0ZXJlZCIpOwo+ID4gLQkJCXJldCA9IGRybV9pbnRlbF9i b19tYXAoc3JjWzBdLmJvLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gLQkJCWlndF9h c3NlcnRfZXEocmV0LCAwKTsKPiA+IC0JCQlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGRzdFswXS5i bywgZmFsc2UgLyogd3JpdGUgZW5hYmxlICovKTsKPiA+IC0JCQlpZ3RfYXNzZXJ0X2VxKHJldCwg MCk7Cj4gPiArCQkJaW50ZWxfYnVmX2NwdV9tYXAoJnNyY1swXSwgZmFsc2UgLyogd3JpdGUgZW5h YmxlICovKTsKPiA+ICsJCQlpbnRlbF9idWZfY3B1X21hcCgmZHN0WzBdLCBmYWxzZSAvKiB3cml0 ZSBlbmFibGUgKi8pOwo+ID4gLQkJCXJldCA9IG1lbWNtcChzcmNbMF0uYm8tPnZpcnR1YWwsIGRz dFswXS5iby0+dmlydHVhbCwgNCAqIHdpZHRoICogaGVpZ2h0KTsKPiA+IC0JCQlkcm1faW50ZWxf Ym9fdW5tYXAoc3JjWzBdLmJvKTsKPiA+IC0JCQlkcm1faW50ZWxfYm9fdW5tYXAoZHN0WzBdLmJv KTsKPiA+ICsJCQlyZXQgPSBtZW1jbXAoc3JjWzBdLnB0ciwgZHN0WzBdLnB0ciwgNCAqIHdpZHRo ICogaGVpZ2h0KTsKPiA+ICsJCQlpbnRlbF9idWZfdW5tYXAoJnNyY1swXSk7Cj4gPiArCQkJaW50 ZWxfYnVmX3VubWFwKCZkc3RbMF0pOwo+ID4gICBhZ2FpbjoKPiA+ICAgCQkJZm9yIChpbnQgaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykgewo+ID4gLQkJCQlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2Uoc3JjW2ldLmJvKTsKPiA+IC0JCQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGRz dFtpXS5ibyk7Cj4gPiArCQkJCWludGVsX2J1Zl9jbG9zZShib3BzLCAmc3JjW2ldKTsKPiA+ICsJ CQkJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZkc3RbaV0pOwo+ID4gICAJCQl9Cj4gPiAtCQkJZHJt X2ludGVsX2JvX3VubWFwKGJvKTsKPiA+IC0JCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8p Owo+ID4gLQkJCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwo+ID4gLQkJCWRybV9pbnRl bF9nZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQwKTsKPiA+IC0JCQlkcm1faW50ZWxfZ2VtX2Nv bnRleHRfZGVzdHJveShjb250ZXh0MSk7Cj4gPiAtCQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95 KGJ1Zm1ncik7Cj4gPiArCQkJaW50ZWxfYnVmX3VubWFwKGRzdF9idWYpOwo+ID4gKwkJCWludGVs X2J1Zl9kZXN0cm95KGRzdF9idWYpOwo+ID4gKwkJCWludGVsX2JiX2Rlc3Ryb3koaWJiMCk7Cj4g PiArCQkJaW50ZWxfYmJfZGVzdHJveShpYmIxKTsKPiA+ICsJCQlnZW1fY29udGV4dF9kZXN0cm95 KGRybV9mZCwgY29udGV4dDBfaWQpOwo+ID4gKwkJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2Zk LCBjb250ZXh0MV9pZCk7Cj4gPiArCQkJYnVmX29wc19kZXN0cm95KGJvcHMpOwo+ID4gICAJCQlf X3BlcmZfY2xvc2Uoc3RyZWFtX2ZkKTsKPiA+ICAgCQkJZ2VtX3F1aWVzY2VudF9ncHUoZHJtX2Zk KTsKPiA+IEBAIC0zODI1LDExICszNzM0LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9j dHhfaGVscGVyKHZvaWQpCj4gPiAgIAkJLm51bV9wcm9wZXJ0aWVzID0gQVJSQVlfU0laRShwcm9w ZXJ0aWVzKSAvIDIsCj4gPiAgIAkJLnByb3BlcnRpZXNfcHRyID0gdG9fdXNlcl9wb2ludGVyKHBy b3BlcnRpZXMpLAo+ID4gICAJfTsKPiA+IC0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwo+ID4g LQlkcm1faW50ZWxfY29udGV4dCAqY29udGV4dDAsICpjb250ZXh0MTsKPiA+IC0Jc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKPiA+IC0Jc3RydWN0IGlndF9idWYgc3JjWzNdLCBkc3Rb M107Cj4gPiAtCWRybV9pbnRlbF9ibyAqYm87Cj4gPiArCXN0cnVjdCBidWZfb3BzICpib3BzOwo+ ID4gKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjAsICppYmIxOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfYnVm IHNyY1szXSwgZHN0WzNdLCAqZHN0X2J1ZjsKPiA+ICsJdWludDMyX3QgY29udGV4dDBfaWQsIGNv bnRleHQxX2lkOwo+ID4gICAJdWludDMyX3QgKnJlcG9ydDBfMzIsICpyZXBvcnQxXzMyLCAqcmVw b3J0Ml8zMiwgKnJlcG9ydDNfMzI7Cj4gPiAgIAl1aW50NjRfdCB0aW1lc3RhbXAwXzY0LCB0aW1l c3RhbXAxXzY0Owo+ID4gICAJdWludDMyX3QgZGVsdGFfdHM2NCwgZGVsdGFfb2EzMjsKPiA+IEBA IC0zODQ1LDIxICszNzUzLDE3IEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVy KHZvaWQpCj4gPiAgIAkJLmZvcm1hdCA9IHRlc3Rfc2V0LT5wZXJmX29hX2Zvcm1hdAo+ID4gICAJ fTsKPiA+IC0JYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYp Owo+ID4gLQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYnVmbWdyKTsKPiA+ICsJ Ym9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRybV9mZCk7Cj4gPiAgIAlmb3IgKGludCBpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Cj4gPiAtCQlzY3JhdGNoX2J1Zl9pbml0KGJ1Zm1nciwg JnNyY1tpXSwgd2lkdGgsIGhlaWdodCwgMHhmZjAwMDBmZik7Cj4gPiAtCQlzY3JhdGNoX2J1Zl9p bml0KGJ1Zm1nciwgJmRzdFtpXSwgd2lkdGgsIGhlaWdodCwgMHgwMGZmMDBmZik7Cj4gPiArCQlz Y3JhdGNoX2J1Zl9pbml0KGJvcHMsICZzcmNbaV0sIHdpZHRoLCBoZWlnaHQsIDB4ZmYwMDAwZmYp Owo+ID4gKwkJc2NyYXRjaF9idWZfaW5pdChib3BzLCAmZHN0W2ldLCB3aWR0aCwgaGVpZ2h0LCAw eDAwZmYwMGZmKTsKPiA+ICAgCX0KPiA+IC0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxv YyhidWZtZ3IsIGRldmlkKTsKPiA+IC0KPiA+IC0JY29udGV4dDAgPSBkcm1faW50ZWxfZ2VtX2Nv bnRleHRfY3JlYXRlKGJ1Zm1ncik7Cj4gPiAtCWlndF9hc3NlcnQoY29udGV4dDApOwo+ID4gLQo+ ID4gLQljb250ZXh0MSA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPiA+ IC0JaWd0X2Fzc2VydChjb250ZXh0MSk7Cj4gPiArCWliYjAgPSBpbnRlbF9iYl9jcmVhdGUoZHJt X2ZkLCBCQVRDSF9TWik7Cj4gPiArCWliYjEgPSBpbnRlbF9iYl9jcmVhdGUoZHJtX2ZkLCBCQVRD SF9TWik7Cj4gPiArCWNvbnRleHQwX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9mZCk7Cj4g PiArCWNvbnRleHQxX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9mZCk7Cj4gPiAgIAlpZ3Rf ZGVidWcoInN1Ym1pdHRpbmcgd2FybSB1cCByZW5kZXJfY29weVxuIik7Cj4gPiBAQCAtMzg4Myw0 NCArMzc4Nyw0MiBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcih2b2lkKQo+ ID4gICAJICogdXAgcGlubmluZyB0aGUgY29udGV4dCBzaW5jZSB0aGVyZSB3b24ndCBldmVyIGJl IGEgcGlubmluZwo+ID4gICAJICogaG9vayBjYWxsYmFjay4KPiA+ICAgCSAqLwo+ID4gLQlyZW5k ZXJfY29weShiYXRjaCwgY29udGV4dDAsCj4gPiArCXJlbmRlcl9jb3B5KGliYjAsIGNvbnRleHQw X2lkLAo+ID4gICAJCSAgICAmc3JjWzBdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ID4gICAJCSAg ICAmZHN0WzBdLCAwLCAwKTsKPiA+ICAgCS8qIEluaXRpYWxpemUgdGhlIGNvbnRleHQgcGFyYW1l dGVyIHRvIHRoZSBwZXJmIG9wZW4gaW9jdGwgaGVyZSAqLwo+ID4gLQlyZXQgPSBkcm1faW50ZWxf Z2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRleHQwLCAmY3R4MF9pZCk7Cj4gPiAtCWlndF9hc3NlcnRf ZXEocmV0LCAwKTsKPiA+IC0JaWd0X2Fzc2VydF9uZXEoY3R4MF9pZCwgMHhmZmZmZmZmZik7Cj4g PiAtCXByb3BlcnRpZXNbMV0gPSBjdHgwX2lkOwo+ID4gKwlwcm9wZXJ0aWVzWzFdID0gY29udGV4 dDBfaWQ7Cj4gPiAgIAlpZ3RfZGVidWcoIm9wZW5pbmcgaTkxNS1wZXJmIHN0cmVhbVxuIik7Cj4g PiAgIAlzdHJlYW1fZmQgPSBfX3BlcmZfb3Blbihkcm1fZmQsICZwYXJhbSwgZmFsc2UpOwo+ID4g LQlibyA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICJtaV9ycGMgZGVzdCBibyIsIDQwOTYs IDY0KTsKPiA+ICsJZHN0X2J1ZiA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgNDA5NiwgMSwgOCwg NjQsCj4gPiArCQkJCSAgIEk5MTVfVElMSU5HX05PTkUsCj4gPiArCQkJCSAgIEk5MTVfQ09NUFJF U1NJT05fTk9ORSk7Cj4gPiAgIAkvKiBTZXQgd3JpdGUgZG9tYWluIHRvIGNwdSBicmllZmx5IHRv IGZpbGwgdGhlIGJ1ZmZlciB3aXRoIDgwcyAqLwo+ID4gLQlyZXQgPSBkcm1faW50ZWxfYm9fbWFw KGJvLCB0cnVlKTsKPiA+IC0JaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gLQltZW1zZXQoYm8t PnZpcnR1YWwsIDB4ODAsIDIwNDgpOwo+ID4gLQltZW1zZXQoYm8tPnZpcnR1YWwgKyAyMDQ4LCAw LCAyMDQ4KTsKPiA+IC0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKPiA+ICsJaW50ZWxfYnVmX2Nw dV9tYXAoZHN0X2J1ZiwgdHJ1ZSAvKiB3cml0ZSBlbmFibGUgKi8pOwo+ID4gKwltZW1zZXQoZHN0 X2J1Zi0+cHRyLCAweDgwLCAyMDQ4KTsKPiA+ICsJbWVtc2V0KCh1aW50OF90ICopIGRzdF9idWYt PnB0ciArIDIwNDgsIDAsIDIwNDgpOwo+ID4gKwlpbnRlbF9idWZfdW5tYXAoZHN0X2J1Zik7Cj4g PiAgIAkvKiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQwIGJlZm9yZSBtZWFzdXJhYmxlIHdv cmsgKi8KPiA+ICAgI2RlZmluZSBCT19USU1FU1RBTVBfT0ZGU0VUMCAxMDI0Cj4gPiAgICNkZWZp bmUgQk9fUkVQT1JUX09GRlNFVDAgMAo+ID4gICAjZGVmaW5lIEJPX1JFUE9SVF9JRDAgMHhkZWFk YmVlZgo+ID4gLQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAo+ID4gLQkJCQkg ICAgIGJvLAo+ID4gKwllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGliYjAsCj4gPiArCQkJ CSAgICAgZHN0X2J1ZiwKPiA+ICAgCQkJCSAgICAgQk9fVElNRVNUQU1QX09GRlNFVDAsCj4gPiAg IAkJCQkgICAgIEJPX1JFUE9SVF9PRkZTRVQwLAo+ID4gICAJCQkJICAgICBCT19SRVBPUlRfSUQw KTsKPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250 ZXh0MCk7Cj4gPiArCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMCwgY29u dGV4dDBfaWQpOwo+ID4gICAJLyogVGhpcyBpcyB0aGUgd29yay9jb250ZXh0IHRoYXQgaXMgbWVh c3VyZWQgZm9yIGNvdW50ZXIgaW5jcmVtZW50cyAqLwo+ID4gLQlyZW5kZXJfY29weShiYXRjaCwg Y29udGV4dDAsCj4gPiArCXJlbmRlcl9jb3B5KGliYjAsIGNvbnRleHQwX2lkLAo+ID4gICAJCSAg ICAmc3JjWzBdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ID4gICAJCSAgICAmZHN0WzBdLCAwLCAw KTsKPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250 ZXh0MCk7Cj4gPiArCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMCwgY29u dGV4dDBfaWQpOwo+ID4gICAJLyogU3VibWl0IGFuIG1pLXJwYyB0byBjb250ZXh0MSBiZWZvcmUg d29yawo+ID4gICAJICoKPiA+IEBAIC0zOTMxLDU0ICszODMzLDUxIEBAIHN0YXRpYyB2b2lkIGdl bjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCj4gPiAgICNkZWZpbmUgQk9fVElNRVNUQU1QX09G RlNFVDIgMTA0MAo+ID4gICAjZGVmaW5lIEJPX1JFUE9SVF9PRkZTRVQyIDUxMgo+ID4gICAjZGVm aW5lIEJPX1JFUE9SVF9JRDIgMHgwMGMwZmZlZQo+ID4gLQllbWl0X3N0YWxsX3RpbWVzdGFtcF9h bmRfcnBjKGJhdGNoLAo+ID4gLQkJCQkgICAgIGJvLAo+ID4gKwllbWl0X3N0YWxsX3RpbWVzdGFt cF9hbmRfcnBjKGliYjEsCj4gPiArCQkJCSAgICAgZHN0X2J1ZiwKPiA+ICAgCQkJCSAgICAgQk9f VElNRVNUQU1QX09GRlNFVDIsCj4gPiAgIAkJCQkgICAgIEJPX1JFUE9SVF9PRkZTRVQyLAo+ID4g ICAJCQkJICAgICBCT19SRVBPUlRfSUQyKTsKPiA+IC0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hf d2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MSk7Cj4gPiArCWludGVsX2JiX2ZsdXNoX3JlbmRl cl93aXRoX2NvbnRleHQoaWJiMSwgY29udGV4dDFfaWQpOwo+ID4gICAJLyogU3VibWl0IHR3byBj b3BpZXMgb24gdGhlIG90aGVyIGNvbnRleHQgdG8gYXZvaWQgYSBmYWxzZQo+ID4gICAJICogcG9z aXRpdmUgaW4gY2FzZSB0aGUgZHJpdmVyIHNvbWVob3cgZW5kZWQgdXAgZmlsdGVyaW5nIGZvcgo+ ID4gICAJICogY29udGV4dDEKPiA+ICAgCSAqLwo+ID4gLQlyZW5kZXJfY29weShiYXRjaCwgY29u dGV4dDEsCj4gPiArCXJlbmRlcl9jb3B5KGliYjEsIGNvbnRleHQxX2lkLAo+ID4gICAJCSAgICAm c3JjWzFdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+ID4gICAJCSAgICAmZHN0WzFdLCAwLCAwKTsK PiA+IC0JcmV0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MSwgJmN0eDFf aWQpOwo+ID4gLQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gPiAtCWlndF9hc3NlcnRfbmVxKGN0 eDFfaWQsIDB4ZmZmZmZmZmYpOwo+ID4gLQlyZW5kZXJfY29weShiYXRjaCwgY29udGV4dDEsCj4g PiArCXJlbmRlcl9jb3B5KGliYjEsIGNvbnRleHQxX2lkLAo+ID4gICAJCSAgICAmc3JjWzJdLCAw LCAwLCB3aWR0aCwgaGVpZ2h0LAo+ID4gICAJCSAgICAmZHN0WzJdLCAwLCAwKTsKPiA+IC0JaW50 ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MSk7Cj4gPiAr CWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMSwgY29udGV4dDFfaWQpOwo+ ID4gICAJLyogU3VibWl0IGFuIG1pLXJwYyB0byBjb250ZXh0MSBhZnRlciBhbGwgd29yayAqLwo+ ID4gICAjZGVmaW5lIEJPX1RJTUVTVEFNUF9PRkZTRVQzIDEwNDgKPiA+ICAgI2RlZmluZSBCT19S RVBPUlRfT0ZGU0VUMyA3NjgKPiA+ICAgI2RlZmluZSBCT19SRVBPUlRfSUQzIDB4MDFjMGZmZWUK PiA+IC0JZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKPiA+IC0JCQkJICAgICBi bywKPiA+ICsJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhpYmIxLAo+ID4gKwkJCQkgICAg IGRzdF9idWYsCj4gPiAgIAkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZTRVQzLAo+ID4gICAJCQkJ ICAgICBCT19SRVBPUlRfT0ZGU0VUMywKPiA+ICAgCQkJCSAgICAgQk9fUkVQT1JUX0lEMyk7Cj4g PiAtCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDEp Owo+ID4gKwlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRleHQx X2lkKTsKPiA+ICAgCS8qIFN1Ym1pdCBhbiBtaS1ycGMgdG8gY29udGV4dDAgYWZ0ZXIgYWxsIG1l YXN1cmFibGUgd29yayAqLwo+ID4gICAjZGVmaW5lIEJPX1RJTUVTVEFNUF9PRkZTRVQxIDEwMzIK PiA+ICAgI2RlZmluZSBCT19SRVBPUlRfT0ZGU0VUMSAyNTYKPiA+ICAgI2RlZmluZSBCT19SRVBP UlRfSUQxIDB4YmVlZmJlZWYKPiA+IC0JZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRj aCwKPiA+IC0JCQkJICAgICBibywKPiA+ICsJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhp YmIwLAo+ID4gKwkJCQkgICAgIGRzdF9idWYsCj4gPiAgIAkJCQkgICAgIEJPX1RJTUVTVEFNUF9P RkZTRVQxLAo+ID4gICAJCQkJICAgICBCT19SRVBPUlRfT0ZGU0VUMSwKPiA+ICAgCQkJCSAgICAg Qk9fUkVQT1JUX0lEMSk7Cj4gPiAtCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4 dChiYXRjaCwgY29udGV4dDApOwo+ID4gKwlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250 ZXh0KGliYjAsIGNvbnRleHQwX2lkKTsKPiA+ICsJaW50ZWxfYmJfc3luYyhpYmIwKTsKPiA+ICsJ aW50ZWxfYmJfc3luYyhpYmIxKTsKPiA+IC0JLyogU2V0IHdyaXRlIGRvbWFpbiB0byBub25lICov Cj4gPiAtCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIGZhbHNlKTsKPiA+IC0JaWd0X2Fzc2Vy dF9lcShyZXQsIDApOwo+ID4gKwlpbnRlbF9idWZfY3B1X21hcChkc3RfYnVmLCBmYWxzZSk7Cj4g PiAgIAkvKiBTYW5pdHkgY2hlY2sgcmVwb3J0cwo+ID4gICAJICogcmVwb3J0WF8zMlswXTogcmVw b3J0IGlkIHBhc3NlZCB3aXRoIG1pLXJwYwo+ID4gQEAgLTM5OTAsNyArMzg4OSw3IEBAIHN0YXRp YyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCj4gPiAgIAkgKiByZXBvcnQyXzMy OiBzdGFydCBvZiBvdGhlciB3b3JrCj4gPiAgIAkgKiByZXBvcnQzXzMyOiBlbmQgb2Ygb3RoZXIg d29yawo+ID4gICAJICovCj4gPiAtCXJlcG9ydDBfMzIgPSBiby0+dmlydHVhbDsKPiA+ICsJcmVw b3J0MF8zMiA9IGRzdF9idWYtPnB0cjsKPiA+ICAgCWlndF9hc3NlcnRfZXEocmVwb3J0MF8zMlsw XSwgMHhkZWFkYmVlZik7Cj4gPiAgIAlpZ3RfYXNzZXJ0X25lcShyZXBvcnQwXzMyWzFdLCAwKTsK PiA+ICAgCWN0eDBfaWQgPSByZXBvcnQwXzMyWzJdOwo+ID4gQEAgLTQwMDEsNiArMzkwMCw3IEBA IHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCj4gPiAgIAlpZ3RfYXNz ZXJ0X2VxKHJlcG9ydDFfMzJbMF0sIDB4YmVlZmJlZWYpOwo+ID4gICAJaWd0X2Fzc2VydF9uZXEo cmVwb3J0MV8zMlsxXSwgMCk7Cj4gPiAgIAljdHgxX2lkID0gcmVwb3J0MV8zMlsyXTsKPiA+ICsJ aWd0X2RlYnVnKCJDVFggSUQxOiAldVxuIiwgY3R4MV9pZCk7Cj4gPiAgIAlkdW1wX3JlcG9ydChy ZXBvcnQxXzMyLCA2NCwgInJlcG9ydDFfMzIiKTsKPiA+ICAgCS8qIFZlcmlmeSB0aGF0IGNvdW50 ZXJzIGluIGNvbnRleHQxIGFyZSBhbGwgemVyb2VzICovCj4gPiBAQCAtNDAwOSw3ICszOTA5LDcg QEAgc3RhdGljIHZvaWQgZ2VuMTJfc2luZ2xlX2N0eF9oZWxwZXIodm9pZCkKPiA+ICAgCWlndF9h c3NlcnRfbmVxKHJlcG9ydDJfMzJbMV0sIDApOwo+ID4gICAJZHVtcF9yZXBvcnQocmVwb3J0Ml8z MiwgNjQsICJyZXBvcnQyXzMyIik7Cj4gPiAgIAlpZ3RfYXNzZXJ0X2VxKDAsIG1lbWNtcCgmcmVw b3J0Ml8zMls0XSwKPiA+IC0JCQkJYm8tPnZpcnR1YWwgKyAyMDQ4LAo+ID4gKwkJCQkodWludDhf dCAqKSBkc3RfYnVmLT5wdHIgKyAyMDQ4LAo+ID4gICAJCQkJMjQwKSk7Cj4gPiAgIAlyZXBvcnQz XzMyID0gcmVwb3J0MF8zMiArIDE5MjsKPiA+IEBAIC00MDE3LDcgKzM5MTcsNyBAQCBzdGF0aWMg dm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcih2b2lkKQo+ID4gICAJaWd0X2Fzc2VydF9uZXEo cmVwb3J0M18zMlsxXSwgMCk7Cj4gPiAgIAlkdW1wX3JlcG9ydChyZXBvcnQzXzMyLCA2NCwgInJl cG9ydDNfMzIiKTsKPiA+ICAgCWlndF9hc3NlcnRfZXEoMCwgbWVtY21wKCZyZXBvcnQzXzMyWzRd LAo+ID4gLQkJCQliby0+dmlydHVhbCArIDIwNDgsCj4gPiArCQkJCSh1aW50OF90ICopIGRzdF9i dWYtPnB0ciArIDIwNDgsCj4gPiAgIAkJCQkyNDApKTsKPiA+ICAgCS8qIEFjY3VtdWxhdGUgZGVs dGFzIGZvciBjb3VudGVycyAtIEEwLCBBMjEgYW5kIEEyNiAqLwo+ID4gQEAgLTQwMzcsOCArMzkz Nyw4IEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCj4gPiAgIAkg KiB0aGUgT0EgcmVwb3J0IHRpbWVzdGFtcHMgc2hvdWxkIGJlIGFsbW9zdCBpZGVudGljYWwgYnV0 Cj4gPiAgIAkgKiBhbGxvdyBhIDUwMCBuYW5vc2Vjb25kcyBtYXJnaW4uCj4gPiAgIAkgKi8KPiA+ IC0JdGltZXN0YW1wMF82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90ICopYm8tPnZpcnR1YWwp ICsgQk9fVElNRVNUQU1QX09GRlNFVDApOwo+ID4gLQl0aW1lc3RhbXAxXzY0ID0gKih1aW50NjRf dCAqKSgoKHVpbnQ4X3QgKiliby0+dmlydHVhbCkgKyBCT19USU1FU1RBTVBfT0ZGU0VUMSk7Cj4g PiArCXRpbWVzdGFtcDBfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0 cikgKyBCT19USU1FU1RBTVBfT0ZGU0VUMCk7Cj4gPiArCXRpbWVzdGFtcDFfNjQgPSAqKHVpbnQ2 NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0cikgKyBCT19USU1FU1RBTVBfT0ZGU0VUMSk7 Cj4gPiAgIAlpZ3RfZGVidWcoInRzX3RpbWVzdGFtcDY0IDAgPSAlIlBSSXU2NCJcbiIsIHRpbWVz dGFtcDBfNjQpOwo+ID4gICAJaWd0X2RlYnVnKCJ0c190aW1lc3RhbXA2NCAxID0gJSJQUkl1NjQi XG4iLCB0aW1lc3RhbXAxXzY0KTsKPiA+IEBAIC00MDczLDIwICszOTczLDE4IEBAIHN0YXRpYyB2 b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCj4gPiAgIAkvKiBWZXJpZnkgdGhhdCB0 aGUgd29yayBhY3R1YWxseSBoYXBwZW5lZCBieSBjb21wYXJpbmcgdGhlIHNyYwo+ID4gICAJICog YW5kIGRzdCBidWZmZXJzCj4gPiAgIAkgKi8KPiA+IC0JcmV0ID0gZHJtX2ludGVsX2JvX21hcChz cmNbMF0uYm8sIGZhbHNlKTsKPiA+IC0JaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+ID4gLQlyZXQg PSBkcm1faW50ZWxfYm9fbWFwKGRzdFswXS5ibywgZmFsc2UpOwo+ID4gLQlpZ3RfYXNzZXJ0X2Vx KHJldCwgMCk7Cj4gPiArCWludGVsX2J1Zl9jcHVfbWFwKCZzcmNbMF0sIGZhbHNlKTsKPiA+ICsJ aW50ZWxfYnVmX2NwdV9tYXAoJmRzdFswXSwgZmFsc2UpOwo+ID4gKwo+ID4gKwlyZXQgPSBtZW1j bXAoc3JjWzBdLnB0ciwgZHN0WzBdLnB0ciwgNCAqIHdpZHRoICogaGVpZ2h0KTsKPiA+ICsJaW50 ZWxfYnVmX3VubWFwKCZzcmNbMF0pOwo+ID4gKwlpbnRlbF9idWZfdW5tYXAoJmRzdFswXSk7Cj4g PiAtCXJldCA9IG1lbWNtcChzcmNbMF0uYm8tPnZpcnR1YWwsIGRzdFswXS5iby0+dmlydHVhbCwg NCAqIHdpZHRoICogaGVpZ2h0KTsKPiA+ICAgCWlmIChyZXQgIT0gMCkgewo+ID4gICAJCWFjY3Vt dWxhdG9yX3ByaW50KCZhY2N1bXVsYXRvciwgInRvdGFsIik7Cj4gPiAgIAkJZXhpdChFQUdBSU4p Owo+ID4gICAJfQo+ID4gLQlkcm1faW50ZWxfYm9fdW5tYXAoc3JjWzBdLmJvKTsKPiA+IC0JZHJt X2ludGVsX2JvX3VubWFwKGRzdFswXS5ibyk7Cj4gPiAtCj4gPiAgIAkvKiBDaGVjayB0aGF0IHRo aXMgdGVzdCBwYXNzZWQuIFRoZSB0ZXN0IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgMngyCj4gPiAg IAkgKiBzYW1wbGVzIHdyaXR0ZW4gdG8gdGhlIHJlbmRlciB0YXJnZXQgdXNpbmcgdGhlIGNvdW50 ZXIgQTI2LiBGb3IKPiA+ICAgCSAqIE9BUiwgdGhpcyBjb3VudGVyIHdpbGwgb25seSBoYXZlIGlu Y3JlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBzcGVjaWZpYwo+ID4gQEAgLTQwOTYsMTYgKzM5OTQs MTcgQEAgc3RhdGljIHZvaWQgZ2VuMTJfc2luZ2xlX2N0eF9oZWxwZXIodm9pZCkKPiA+ICAgCS8q IENsZWFuIHVwICovCj4gPiAgIAlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsg aSsrKSB7Cj4gPiAtCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3JjW2ldLmJvKTsKPiA+IC0J CWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShkc3RbaV0uYm8pOwo+ID4gKwkJaW50ZWxfYnVmX2Ns b3NlKGJvcHMsICZzcmNbaV0pOwo+ID4gKwkJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZkc3RbaV0p Owo+ID4gICAJfQo+ID4gLQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwo+ID4gLQlkcm1faW50ZWxf Ym9fdW5yZWZlcmVuY2UoYm8pOwo+ID4gLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsK PiA+IC0JZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koY29udGV4dDApOwo+ID4gLQlkcm1f aW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShjb250ZXh0MSk7Cj4gPiAtCWRybV9pbnRlbF9idWZt Z3JfZGVzdHJveShidWZtZ3IpOwo+ID4gKwlpbnRlbF9idWZfdW5tYXAoZHN0X2J1Zik7Cj4gPiAr CWludGVsX2J1Zl9kZXN0cm95KGRzdF9idWYpOwo+ID4gKwlpbnRlbF9iYl9kZXN0cm95KGliYjAp Owo+ID4gKwlpbnRlbF9iYl9kZXN0cm95KGliYjEpOwo+ID4gKwlnZW1fY29udGV4dF9kZXN0cm95 KGRybV9mZCwgY29udGV4dDBfaWQpOwo+ID4gKwlnZW1fY29udGV4dF9kZXN0cm95KGRybV9mZCwg Y29udGV4dDFfaWQpOwo+ID4gKwlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7Cj4gPiAgIAlfX3BlcmZf Y2xvc2Uoc3RyZWFtX2ZkKTsKPiA+ICAgfQo+IAo+IApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK