From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 16/46] drm/i915/selftests: Mark up rpm wakerefs Date: Wed, 09 Jan 2019 14:54:21 +0200 Message-ID: <87ftu20z5u.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-16-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B6056E60D for ; Wed, 9 Jan 2019 12:56:02 +0000 (UTC) In-Reply-To: <20190107115509.12523-16-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVHJhY2sg dGhlIHRlbXBvcmFyeSB3YWtlcmVmcyB1c2VkIHdpdGhpbiB0aGUgc2VsZnRlc3RzIHNvIHRoYXQg bGVha3MgYXJlCj4gY2xlYXIuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMu YyAgIHwgIDUgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0u YyAgICAgfCAyOSArKysrKysrKysrKystLS0tLS0tCj4gIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fY29oZXJlbmN5LmMgICB8ICA1ICsrLS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMjcgKysrKysrKysrKy0tLS0tLS0KPiAgLi4uL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyAgIHwgMTEgKysrKy0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgfCAxMCArKysrLS0t Cj4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jICB8IDE4ICsr KysrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0 LmMgfCAyMiArKysrKysrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfZ3VjLmMgICAgfCAxMCArKysrLS0tCj4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2hhbmdjaGVjay5jICB8IDE1ICsrKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jICAgIHwgMjUgKysrKysrKysrLS0tLS0tLQo+ICAuLi4v ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAyNyArKysrKysrKysr LS0tLS0tLQo+ICAxMiBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgNzggZGVsZXRp b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1 Z2VfcGFnZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMK PiBpbmRleCA3MzFkZmQzZDNmYzguLmM3YTQ1OTkxNzNiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC0xNzYwLDYgKzE3NjAsNyBAQCBp bnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCX07Cj4gIAlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gIAlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4g IAlpbnQgZXJyOwo+ICAKPiAgCWlmICghSEFTX1BQR1RUKGRldl9wcml2KSkgewo+IEBAIC0xNzc1 LDcgKzE3NzYsNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsK PiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCWN0eCA9IGxpdmVfY29udGV4dChkZXZfcHJpdiwgZmls ZSk7Cj4gIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiBAQCAtMTc4OSw3ICsxNzkwLDcgQEAgaW50IGk5 MTVfZ2VtX2h1Z2VfcGFnZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAllcnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBjdHgpOwo+ICAKPiAgb3V0 X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4g KwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4gIAltb2NrX2ZpbGVfZnJlZShk ZXZfcHJpdiwgZmlsZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt LmMKPiBpbmRleCA3NjJlMWE3MTI1ZjUuLjAxYTQ2YzQ2ZmUyNSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gQEAgLTE2LDkgKzE2LDEwIEBAIHN0YXRp YyBpbnQgc3dpdGNoX3RvX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g IHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgZXJyID0gMDsK PiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldChpOTE1KTsKPiAgCj4gIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1 LCBpZCkgewo+ICAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+IEBAIC0zMiw3ICszMyw3IEBA IHN0YXRpYyBpbnQgc3dpdGNoX3RvX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gIAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwg d2FrZXJlZik7Cj4gIAo+ICAJcmV0dXJuIGVycjsKPiAgfQo+IEBAIC02NSw3ICs2Niw5IEBAIHN0 YXRpYyB2b2lkIHRyYXNoX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAg Cj4gIHN0YXRpYyB2b2lkIHNpbXVsYXRlX2hpYmVybmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgewo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQo aTkxNSk7Cj4gIAo+ICAJLyoKPiAgCSAqIEFzIGEgZmluYWwgc3RpbmcgaW4gdGhlIHRhaWwsIGlu dmFsaWRhdGUgc3RvbGVuLiBVbmRlciBhIHJlYWwgUzQsCj4gQEAgLTc2LDcgKzc5LDcgQEAgc3Rh dGljIHZvaWQgc2ltdWxhdGVfaGliZXJuYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICAJICovCj4gIAl0cmFzaF9zdG9sZW4oaTkxNSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9w bV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2Fr ZXJlZik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgcG1fcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiBAQCAtOTMsMzkgKzk2LDQ1IEBAIHN0YXRpYyBpbnQgcG1fcHJlcGFy ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIHN0YXRpYyB2b2lkIHBtX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWk5MTVfZ2VtX3N1c3Bl bmRfZ3R0X21hcHBpbmdzKGk5MTUpOwo+ICAJaTkxNV9nZW1fc3VzcGVuZF9sYXRlKGk5MTUpOwo+ ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1 bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBwbV9o aWJlcm5hdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCWludGVsX3J1 bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWk5MTVfZ2VtX3N1 c3BlbmRfZ3R0X21hcHBpbmdzKGk5MTUpOwo+ICAKPiAgCWk5MTVfZ2VtX2ZyZWV6ZShpOTE1KTsK PiAgCWk5MTVfZ2VtX2ZyZWV6ZV9sYXRlKGk5MTUpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2Vy ZWYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBwbV9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gIHsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiAgCS8q Cj4gIAkgKiBCb3RoIHN1c3BlbmQgYW5kIGhpYmVybmF0ZSBmb2xsb3cgdGhlIHNhbWUgd2FrZXVw IHBhdGggYW5kIGFzc3VtZQo+ICAJICogdGhhdCBydW50aW1lLXBtIGp1c3Qgd29ya3MuCj4gIAkg Ki8KPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1 bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWludGVsX2VuZ2luZXNfc2FuaXRpemUoaTkxNSwg ZmFsc2UpOwo+ICAJaTkxNV9nZW1fc2FuaXRpemUoaTkxNSk7Cj4gIAlpOTE1X2dlbV9yZXN1bWUo aTkxNSk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJ aW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bnQgaWd0X2dlbV9zdXNwZW5kKHZvaWQgKmFyZykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5kZXggZWVhNGZjMjQ0NWFl Li5mZDg5YTVhMzNjMWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gQEAgLTI3OSw2ICsyNzksNyBAQCBzdGF0aWMg aW50IGlndF9nZW1fY29oZXJlbmN5KHZvaWQgKmFyZykKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOwo+ICAJY29uc3Qgc3RydWN0IGlndF9jb2hlcmVuY3lfbW9kZSAqcmVh ZCwgKndyaXRlLCAqb3ZlcjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4g KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXVuc2lnbmVkIGxvbmcgY291bnQsIG47Cj4g IAl1MzIgKm9mZnNldHMsICp2YWx1ZXM7Cj4gIAlpbnQgZXJyID0gMDsKPiBAQCAtMjk4LDcgKzI5 OSw3IEBAIHN0YXRpYyBpbnQgaWd0X2dlbV9jb2hlcmVuY3kodm9pZCAqYXJnKQo+ICAJdmFsdWVz ID0gb2Zmc2V0cyArIG5jYWNoZWxpbmVzOwo+ICAKPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAlmb3IgKG92ZXIgPSBpZ3RfY29oZXJl bmN5X21vZGU7IG92ZXItPm5hbWU7IG92ZXIrKykgewo+ICAJCWlmICghb3Zlci0+c2V0KQo+ICAJ CQljb250aW51ZTsKPiBAQCAtMzc2LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbnQgaWd0X2dlbV9jb2hl cmVuY3kodm9pZCAqYXJnKQo+ICAJCX0KPiAgCX0KPiAgdW5sb2NrOgo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwg d2FrZXJlZik7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJ a2ZyZWUob2Zmc2V0cyk7Cj4gIAlyZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDZlMWEwNzExZDIwMS4u N2E5YjFmMjBiMDE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTExOSw2ICsxMTksNyBAQCBzdGF0aWMgaW50IGxp dmVfbm9wX3N3aXRjaCh2b2lkICphcmcpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7Cj4gIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqKmN0eDsKPiAgCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGU7Cj4gIAlzdHJ1Y3QgbGl2ZV90ZXN0IHQ7Cj4gIAl1bnNpZ25lZCBsb25nIG47Cj4g QEAgLTE0MCw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3N3aXRjaCh2b2lkICphcmcp Cj4gIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCj4gIAljdHggPSBrY2FsbG9jKG5j dHgsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIWN0eCkgewo+IEBAIC0yNDMs NyArMjQ0LDcgQEAgc3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKQo+ICAJfQo+ ICAKPiAgb3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1 KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZp bGUpOwo+ICAJcmV0dXJuIGVycjsKPiBAQCAtNTkzLDYgKzU5NCw4IEBAIHN0YXRpYyBpbnQgaWd0 X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCQl9Cj4gIAo+ICAJCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGk5MTUsIGlkKSB7Cj4gKwkJCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiAgCQkJ aWYgKCFlbmdpbmUtPmNvbnRleHRfc2l6ZSkKPiAgCQkJCWNvbnRpbnVlOyAvKiBObyBsb2dpY2Fs IGNvbnRleHQgc3VwcG9ydCBpbiBIVyAqLwo+ICAKPiBAQCAtNjA3LDkgKzYxMCw5IEBAIHN0YXRp YyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCQkJCX0KPiAgCQkJfQo+ICAKPiAtCQkJ aW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwkJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldChpOTE1KTsKPiAgCQkJZXJyID0gZ3B1X2ZpbGwob2JqLCBjdHgsIGVuZ2luZSwgZHcp Owo+IC0JCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwkJCWludGVs X3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJCQlpZiAoZXJyKSB7Cj4gIAkJCQlw cl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0aCBncHUgKCVzKSBp biBjdHggJXUgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAo+ICAJCQkJICAgICAgIG5kd29y ZHMsIGR3LCBtYXhfZHdvcmRzKG9iaiksCj4gQEAgLTY5OSw2ICs3MDIsOCBAQCBzdGF0aWMgaW50 IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAJCXVuc2lnbmVkIGludCBpZDsKPiAgCj4g IAkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQkJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gKwo+ICAJCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo ZW5naW5lKSkKPiAgCQkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtNzEzLDkgKzcxOCw5IEBAIHN0YXRp YyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCj4gIAkJCQkJaTkxNV9nZW1fb2JqZWN0 X3NldF9yZWFkb25seShvYmopOwo+ICAJCQl9Cj4gIAo+IC0JCQlpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKPiArCQkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJ CQllcnIgPSBncHVfZmlsbChvYmosIGN0eCwgZW5naW5lLCBkdyk7Cj4gLQkJCWludGVsX3J1bnRp bWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSwgd2FrZXJlZik7Cj4gIAkJCWlmIChlcnIpIHsKPiAgCQkJCXByX2VycigiRmFpbGVkIHRvIGZp bGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0 dD8gJXNdLCBlcnI9JWRcbiIsCj4gIAkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9kd29yZHMo b2JqKSwKPiBAQCAtOTc2LDYgKzk4MSw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtX2lzb2xhdGlvbih2 b2lkICphcmcpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAgCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHhfYSwgKmN0eF9iOwo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGU7Cj4gIAlJOTE1X1JORF9TVEFURShwcm5nKTsKPiAgCXVuc2lnbmVkIGxv bmcgY291bnQ7Cj4gQEAgLTEwMjIsNyArMTAyOCw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtX2lzb2xh dGlvbih2b2lkICphcmcpCj4gIAlHRU1fQlVHX09OKGN0eF9iLT5wcGd0dC0+dm0udG90YWwgIT0g dm1fdG90YWwpOwo+ICAJdm1fdG90YWwgLT0gSTkxNV9HVFRfUEFHRV9TSVpFOwo+ICAKPiAtCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwo+ICAKPiAgCWNvdW50ID0gMDsKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGk5MTUsIGlkKSB7Cj4gQEAgLTEwNjcsNyArMTA3Myw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtX2lz b2xhdGlvbih2b2lkICphcmcpCj4gIAkJY291bnQsIFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVtX3Jp bmdzKTsKPiAgCj4gIG91dF9ycG06Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQo aTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgb3V0X3Vu bG9jazoKPiAgCWlmIChlbmRfbGl2ZV90ZXN0KCZ0KSkKPiAgCQllcnIgPSAtRUlPOwo+IEBAIC0x MTY1LDYgKzExNzEsNyBAQCBzdGF0aWMgaW50IGlndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQo dm9pZCAqYXJnKQo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCS8qCj4gQEAgLTEx NzUsNyArMTE4Miw3IEBAIHN0YXRpYyBpbnQgaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCh2 b2lkICphcmcpCj4gIAkgKi8KPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWN0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUp Owo+ICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gQEAgLTEyMDAsNyArMTIwNyw3IEBAIHN0YXRpYyBp bnQgaWd0X3N3aXRjaF90b19rZXJuZWxfY29udGV4dCh2b2lkICphcmcpCj4gIAlpZiAoaWd0X2Zs dXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gIAkJZXJyID0gLUVJTzsKPiAgCj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1l X3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gIAo+ICAJa2VybmVsX2NvbnRleHRfY2xvc2UoY3R4KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+IGluZGV4IDhkMjJm NzNhOWI2My4uZTFmZjZhMWMyY2IwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiBAQCAtMzM2LDYgKzMzNiw3IEBAIHN0YXRpYyBp bnQgaWd0X2V2aWN0X2NvbnRleHRzKHZvaWQgKmFyZykKPiAgCQlzdHJ1Y3QgZHJtX21tX25vZGUg bm9kZTsKPiAgCQlzdHJ1Y3QgcmVzZXJ2ZWQgKm5leHQ7Cj4gIAl9ICpyZXNlcnZlZCA9IE5VTEw7 Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBkcm1fbW1fbm9kZSBob2xl Owo+ICAJdW5zaWduZWQgbG9uZyBjb3VudDsKPiAgCWludCBlcnI7Cj4gQEAgLTM1NSw3ICszNTYs NyBAQCBzdGF0aWMgaW50IGlndF9ldmljdF9jb250ZXh0cyh2b2lkICphcmcpCj4gIAkJcmV0dXJu IDA7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dChpOTE1KTsKPiAgCj4gIAkvKiBSZXNlcnZlIGEgYmxvY2sgc28gdGhhdCB3ZSBrbm93IHdlIGhh dmUgZW5vdWdoIHRvIGZpdCBhIGZldyBycSAqLwo+ICAJbWVtc2V0KCZob2xlLCAwLCBzaXplb2Yo aG9sZSkpOwo+IEBAIC00MDAsOCArNDAxLDEwIEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X2NvbnRl eHRzKHZvaWQgKmFyZykKPiAgCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gIAo+ICAJCWZpbGUg PSBtb2NrX2ZpbGUoaTkxNSk7Cj4gLQkJaWYgKElTX0VSUihmaWxlKSkKPiAtCQkJcmV0dXJuIFBU Ul9FUlIoZmlsZSk7Cj4gKwkJaWYgKElTX0VSUihmaWxlKSkgewo+ICsJCQllcnIgPSBQVFJfRVJS KGZpbGUpOwo+ICsJCQlicmVhazsKPiArCQl9CgpBbW9uZyB0aGUgcmVwZXRpdGlvbnMsIHRoaXMg d29rZSBtZSB1cC4KTG9va2VkIGxpa2Ugd2UgYnJlYWsgd2l0aCBtdXRleCBoZWxkIGJ1dCB3ZSBk b24ndC4KCkFuZCB0aGUgZHJtIG1tIG5vZGUgcmVtb3ZhbCBzZWVtcyB0byBjb3BlCmFzd2VsbC4K ClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNv bT4KCj4gIAo+ICAJCWNvdW50ID0gMDsKPiAgCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiBAQCAtNDY0LDcgKzQ2Nyw3IEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0X2NvbnRl eHRzKHZvaWQgKmFyZykKPiAgCX0KPiAgCWlmIChkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJmhvbGUp KQo+ICAJCWRybV9tbV9yZW1vdmVfbm9kZSgmaG9sZSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVm KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJcmV0 dXJuIGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0 dC5jCj4gaW5kZXggODdjYjA2MDJhNWZjLi5mZWE4YWIxNGU3OWQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTI3NSw2ICsyNzUs NyBAQCBzdGF0aWMgaW50IGxvd2xldmVsX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gIAo+ICAJCWZvciAobiA9IDA7IG4gPCBjb3VudDsgbisrKSB7Cj4gIAkJCXU2NCBhZGRy ID0gaG9sZV9zdGFydCArIG9yZGVyW25dICogQklUX1VMTChzaXplKTsKPiArCQkJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Cj4gIAo+ICAJCQlHRU1fQlVHX09OKGFkZHIgKyBCSVRfVUxMKHNpemUp ID4gdm0tPnRvdGFsKTsKPiAgCj4gQEAgLTI5Myw5ICsyOTQsOSBAQCBzdGF0aWMgaW50IGxvd2xl dmVsX2hvbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAkJCW1vY2tfdm1hLm5v ZGUuc2l6ZSA9IEJJVF9VTEwoc2l6ZSk7Cj4gIAkJCW1vY2tfdm1hLm5vZGUuc3RhcnQgPSBhZGRy Owo+ICAKPiAtCQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwkJCXdha2VyZWYgPSBp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCQkJdm0tPmluc2VydF9lbnRyaWVzKHZtLCAm bW9ja192bWEsIEk5MTVfQ0FDSEVfTk9ORSwgMCk7Cj4gLQkJCWludGVsX3J1bnRpbWVfcG1fcHV0 X3VuY2hlY2tlZChpOTE1KTsKPiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJl Zik7Cj4gIAkJfQo+ICAJCWNvdW50ID0gbjsKPiAgCj4gQEAgLTExNDQsNiArMTE0NSw3IEBAIHN0 YXRpYyBpbnQgaWd0X2dndHRfcGFnZSh2b2lkICphcmcpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGFyZzsKPiAgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmaTkxNS0+Z2d0 dDsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBkcm1fbW1fbm9kZSB0bXA7Cj4gIAl1bnNpZ25lZCBpbnQg Km9yZGVyLCBuOwo+ICAJaW50IGVycjsKPiBAQCAtMTE2OSw3ICsxMTcxLDcgQEAgc3RhdGljIGlu dCBpZ3RfZ2d0dF9wYWdlKHZvaWQgKmFyZykKPiAgCWlmIChlcnIpCj4gIAkJZ290byBvdXRfdW5w aW47Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAo+ICAJZm9yIChuID0gMDsgbiA8IGNvdW50OyBu KyspIHsKPiAgCQl1NjQgb2Zmc2V0ID0gdG1wLnN0YXJ0ICsgbiAqIFBBR0VfU0laRTsKPiBAQCAt MTIxNiw3ICsxMjE4LDcgQEAgc3RhdGljIGludCBpZ3RfZ2d0dF9wYWdlKHZvaWQgKmFyZykKPiAg CWtmcmVlKG9yZGVyKTsKPiAgb3V0X3JlbW92ZToKPiAgCWdndHQtPnZtLmNsZWFyX3JhbmdlKCZn Z3R0LT52bSwgdG1wLnN0YXJ0LCB0bXAuc2l6ZSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91 bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsK PiAgCWRybV9tbV9yZW1vdmVfbm9kZSgmdG1wKTsKPiAgb3V0X3VucGluOgo+ICAJaTkxNV9nZW1f b2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IGIwMzg5MGM1OTBkNy4uMzU3NWUxMzg3 YzNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9vYmplY3QuYwo+IEBAIC0zMDgsNiArMzA4LDcgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90 aWxpbmcodm9pZCAqYXJnKQo+ICAJY29uc3QgdW5zaWduZWQgaW50IG5yZWFsID0gMSA8PCAxMjsg LyogbGFyZ2VzdCB0aWxlIHJvdyB4MiAqLwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBhcmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgdGlsaW5nOwo+ICAJaW50IGVycjsKPiAgCj4gQEAg LTMzMyw3ICszMzQsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2b2lkICphcmcp Cj4gIAl9Cj4gIAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChpOTE1KTsKPiAgCj4gIAlpZiAoMSkgewo+ICAJCUlHVF9USU1FT1VUKGVuZCk7Cj4gQEAg LTQ0NCw3ICs0NDUsNyBAQCBuZXh0X3RpbGluZzogOwo+ICAJfQo+ICAKPiAgb3V0X3VubG9jazoK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICBvdXQ6 Cj4gQEAgLTUwNiwxMSArNTA3LDE0IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcmV0aXJlX3dvcmtl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCWlmICghaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKysp IHsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiArCj4gKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ ICAJCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoaTkxNSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4g IAl9Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiAgCWNh bmNlbF9kZWxheWVkX3dvcmtfc3luYygmaTkxNS0+Z3QucmV0aXJlX3dvcmspOwo+ICAJY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5pZGxlX3dvcmspOwo+ICB9Cj4gQEAgLTU3OCw2 ICs1ODIsOCBAQCBzdGF0aWMgaW50IGlndF9tbWFwX29mZnNldF9leGhhdXN0aW9uKHZvaWQgKmFy ZykKPiAgCj4gIAkvKiBOb3cgZmlsbCB3aXRoIGJ1c3kgZGVhZCBvYmplY3RzIHRoYXQgd2UgZXhw ZWN0IHRvIHJlYXAgKi8KPiAgCWZvciAobG9vcCA9IDA7IGxvb3AgPCAzOyBsb29wKyspIHsKPiAr CQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gIAkJaWYgKGk5MTVfdGVybWluYWxseV93 ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gIAkJCWJyZWFrOwo+ICAKPiBAQCAtNTg4LDkgKzU5 NCw5IEBAIHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQo+ ICAJCX0KPiAgCj4gIAkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQkJ aW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0KGk5MTUpOwo+ICAJCWVyciA9IG1ha2Vfb2JqX2J1c3kob2JqKTsKPiAtCQlpbnRlbF9y dW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSwgd2FrZXJlZik7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgCQlpZiAoZXJyKSB7Cj4gIAkJCXByX2VycigiW2xvb3AgJWRdIEZhaWxlZCB0byBidXN5 IHRoZSBvYmplY3RcbiIsIGxvb3ApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9yZXF1ZXN0LmMKPiBpbmRleCBlODg4MGNhYmQ1YzcuLjhiNzNhOGMyMTM3NyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiBA QCAtMzMyLDYgKzMzMiw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3BfcmVxdWVzdCh2b2lkICphcmcp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4g IAlzdHJ1Y3QgbGl2ZV90ZXN0IHQ7Cj4gIAl1bnNpZ25lZCBpbnQgaWQ7Cj4gIAlpbnQgZXJyID0g LUVOT0RFVjsKPiBAQCAtMzQyLDcgKzM0Myw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3BfcmVxdWVz dCh2b2lkICphcmcpCj4gIAkgKi8KPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGk5MTUsIGlkKSB7Cj4gIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCA9IE5VTEw7Cj4g QEAgLTQwMyw3ICs0MDQsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJn KQo+ICAJfQo+ICAKPiAgb3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hl Y2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJ bXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4g IH0KPiBAQCAtNDc4LDggKzQ3OSw5IEBAIHN0YXRpYyBpbnQgbGl2ZV9lbXB0eV9yZXF1ZXN0KHZv aWQgKmFyZykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4g IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlzdHJ1Y3QgbGl2ZV90ZXN0IHQ7 Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqYmF0Y2g7 Cj4gKwlzdHJ1Y3QgbGl2ZV90ZXN0IHQ7Cj4gIAl1bnNpZ25lZCBpbnQgaWQ7Cj4gIAlpbnQgZXJy ID0gMDsKPiAgCj4gQEAgLTQ4OSw3ICs0OTEsNyBAQCBzdGF0aWMgaW50IGxpdmVfZW1wdHlfcmVx dWVzdCh2b2lkICphcmcpCj4gIAkgKi8KPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9 IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWJhdGNoID0gZW1wdHlfYmF0Y2go aTkxNSk7Cj4gIAlpZiAoSVNfRVJSKGJhdGNoKSkgewo+IEBAIC01NTMsNyArNTU1LDcgQEAgc3Rh dGljIGludCBsaXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAJaTkxNV92bWFfdW5waW4o YmF0Y2gpOwo+ICAJaTkxNV92bWFfcHV0KGJhdGNoKTsKPiAgb3V0X3VubG9jazoKPiAtCWludGVs X3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtNjM3LDYgKzYzOSw3IEBAIHN0YXRpYyBpbnQg bGl2ZV9hbGxfZW5naW5lcyh2b2lkICphcmcpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9IGFyZzsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RbSTkxNV9OVU1fRU5HSU5FU107Cj4gKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqYmF0Y2g7Cj4gIAlzdHJ1Y3QgbGl2 ZV90ZXN0IHQ7Cj4gIAl1bnNpZ25lZCBpbnQgaWQ7Cj4gQEAgLTY0OCw3ICs2NTEsNyBAQCBzdGF0 aWMgaW50IGxpdmVfYWxsX2VuZ2luZXModm9pZCAqYXJnKQo+ICAJICovCj4gIAo+ICAJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChp OTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCj4gIAll cnIgPSBiZWdpbl9saXZlX3Rlc3QoJnQsIGk5MTUsIF9fZnVuY19fLCAiIik7Cj4gIAlpZiAoZXJy KQo+IEBAIC03MzEsNyArNzM0LDcgQEAgc3RhdGljIGludCBsaXZlX2FsbF9lbmdpbmVzKHZvaWQg KmFyZykKPiAgCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKPiAgCWk5MTVfdm1hX3B1dChiYXRjaCk7 Cj4gIG91dF91bmxvY2s6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7 Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gQEAgLTc0 Miw2ICs3NDUsNyBAQCBzdGF0aWMgaW50IGxpdmVfc2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFy ZykKPiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RbSTkxNV9OVU1fRU5HSU5FU10gPSB7 fTsKPiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXYgPSBOVUxMOwo+ICAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlzdHJ1 Y3QgbGl2ZV90ZXN0IHQ7Cj4gIAl1bnNpZ25lZCBpbnQgaWQ7Cj4gIAlpbnQgZXJyOwo+IEBAIC03 NTMsNyArNzU3LDcgQEAgc3RhdGljIGludCBsaXZlX3NlcXVlbnRpYWxfZW5naW5lcyh2b2lkICph cmcpCj4gIAkgKi8KPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWVyciA9IGJlZ2luX2xpdmVfdGVzdCgmdCwgaTkxNSwg X19mdW5jX18sICIiKTsKPiAgCWlmIChlcnIpCj4gQEAgLTg2MCw3ICs4NjQsNyBAQCBzdGF0aWMg aW50IGxpdmVfc2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFyZykKPiAgCQlpOTE1X3JlcXVlc3Rf cHV0KHJlcXVlc3RbaWRdKTsKPiAgCX0KPiAgb3V0X3VubG9jazoKPiAtCWludGVsX3J1bnRpbWVf cG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJl dHVybiBlcnI7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1 Yy5jCj4gaW5kZXggMzU5MGJhM2Q4ODk3Li5jNWUwYTBlOThmY2IgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d1Yy5jCj4gQEAgLTEzNywxMiArMTM3LDEzIEBA IHN0YXRpYyBib29sIGNsaWVudF9kb29yYmVsbF9pbl9zeW5jKHN0cnVjdCBpbnRlbF9ndWNfY2xp ZW50ICpjbGllbnQpCj4gIHN0YXRpYyBpbnQgaWd0X2d1Y19jbGllbnRzKHZvaWQgKmFyZ3MpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGFyZ3M7Cj4gKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1YzsKPiAgCWludCBl cnIgPSAwOwo+ICAKPiAgCUdFTV9CVUdfT04oIUhBU19HVUMoZGV2X3ByaXYpKTsKPiAgCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7Cj4gIAo+ICAJZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gIAlpZiAoIWd1Yykgewo+IEBAIC0y MjUsNyArMjI2LDcgQEAgc3RhdGljIGludCBpZ3RfZ3VjX2NsaWVudHModm9pZCAqYXJncykKPiAg CWd1Y19jbGllbnRzX2NyZWF0ZShndWMpOwo+ICAJZ3VjX2NsaWVudHNfZW5hYmxlKGd1Yyk7Cj4g IHVubG9jazoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7Cj4g KwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBA QCAtMjM4LDEzICsyMzksMTQgQEAgc3RhdGljIGludCBpZ3RfZ3VjX2NsaWVudHModm9pZCAqYXJn cykKPiAgc3RhdGljIGludCBpZ3RfZ3VjX2Rvb3JiZWxscyh2b2lkICphcmcpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGFyZzsKPiArCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwo+ICAJc3RydWN0IGludGVsX2d1YyAqZ3VjOwo+ICAJaW50IGksIGVyciA9IDA7 Cj4gIAl1MTYgZGJfaWQ7Cj4gIAo+ICAJR0VNX0JVR19PTighSEFTX0dVQyhkZXZfcHJpdikpOwo+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfcnVu dGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0 KGRldl9wcml2KTsKPiAgCj4gIAlndWMgPSAmZGV2X3ByaXYtPmd1YzsKPiAgCWlmICghZ3VjKSB7 Cj4gQEAgLTMzNyw3ICszMzksNyBAQCBzdGF0aWMgaW50IGlndF9ndWNfZG9vcmJlbGxzKHZvaWQg KmFyZykKPiAgCQkJZ3VjX2NsaWVudF9mcmVlKGNsaWVudHNbaV0pOwo+ICAJCX0KPiAgdW5sb2Nr Ogo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKPiArCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIGVycjsKPiAgfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCAz M2JkM2M0YjZmYTMuLjEyNTUwYjU1YzQyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMzg4LDEyICszODgsMTMgQEAg c3RhdGljIGludCBpZ3RfZ2xvYmFsX3Jlc2V0KHZvaWQgKmFyZykKPiAgc3RhdGljIGludCBpZ3Rf d2VkZ2VkX3Jlc2V0KHZvaWQgKmFyZykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBhcmc7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gIAkvKiBDaGVj ayB0aGF0IHdlIGNhbiByZWNvdmVyIGEgd2VkZ2VkIGRldmljZSB3aXRoIGEgR1BVIHJlc2V0ICov Cj4gIAo+ICAJaWd0X2dsb2JhbF9yZXNldF9sb2NrKGk5MTUpOwo+ICAJbXV0ZXhfbG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAr CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCj4gIAlpOTE1X2dlbV9z ZXRfd2VkZ2VkKGk5MTUpOwo+ICAJR0VNX0JVR19PTighaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgm aTkxNS0+Z3B1X2Vycm9yKSk7Cj4gQEAgLTQwMiw3ICs0MDMsNyBAQCBzdGF0aWMgaW50IGlndF93 ZWRnZWRfcmVzZXQodm9pZCAqYXJnKQo+ICAJaTkxNV9yZXNldChpOTE1LCBBTExfRU5HSU5FUywg TlVMTCk7Cj4gIAlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfUkVTRVRfSEFORE9GRiwgJmk5MTUt PmdwdV9lcnJvci5mbGFncykpOwo+ICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tl ZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCWlndF9nbG9iYWxfcmVzZXRf dW5sb2NrKGk5MTUpOwo+ICAKPiBAQCAtMTYwMCw2ICsxNjAxLDcgQEAgc3RhdGljIGludCBpZ3Rf YXRvbWljX3Jlc2V0KHZvaWQgKmFyZykKPiAgCQl7IH0KPiAgCX07Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJ aW50IGVyciA9IDA7Cj4gIAo+ICAJLyogQ2hlY2sgdGhhdCB0aGUgcmVzZXRzIGFyZSB1c2FibGUg ZnJvbSBhdG9taWMgY29udGV4dCAqLwo+IEBAIC0xNjA5LDcgKzE2MTEsNyBAQCBzdGF0aWMgaW50 IGlndF9hdG9taWNfcmVzZXQodm9pZCAqYXJnKQo+ICAKPiAgCWlndF9nbG9iYWxfcmVzZXRfbG9j ayhpOTE1KTsKPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50 ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoaTkxNSk7Cj4gIAo+ICAJLyogRmx1c2ggYW55IHJlcXVlc3RzIGJlZm9yZSB3ZSBnZXQgc3Rh cnRlZCBhbmQgY2hlY2sgYmFzaWNzICovCj4gIAlmb3JjZV9yZXNldChpOTE1KTsKPiBAQCAtMTYz Niw3ICsxNjM4LDcgQEAgc3RhdGljIGludCBpZ3RfYXRvbWljX3Jlc2V0KHZvaWQgKmFyZykKPiAg CWZvcmNlX3Jlc2V0KGk5MTUpOwo+ICAKPiAgdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJl Zik7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaWd0X2ds b2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAo+IEBAIC0xNjYwLDYgKzE2NjIsNyBAQCBpbnQg aW50ZWxfaGFuZ2NoZWNrX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICAJCVNVQlRFU1QoaWd0X2hhbmRsZV9lcnJvciksCj4gIAkJU1VCVEVTVChpZ3RfYXRv bWljX3Jlc2V0KSwKPiAgCX07Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWJvb2wg c2F2ZWRfaGFuZ2NoZWNrOwo+ICAJaW50IGVycjsKPiAgCj4gQEAgLTE2NjksNyArMTY3Miw3IEBA IGludCBpbnRlbF9oYW5nY2hlY2tfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gIAlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9y KSkKPiAgCQlyZXR1cm4gLUVJTzsgLyogd2UncmUgbG9uZyBwYXN0IGhvcGUgb2YgYSBzdWNjZXNz ZnVsIHJlc2V0ICovCj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAlzYXZlZF9oYW5nY2hlY2sgPSBm ZXRjaF9hbmRfemVybygmaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjayk7Cj4gIAo+ICAJ ZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7Cj4gQEAgLTE2NzksNyArMTY4Miw3IEBA IGludCBpbnRlbF9oYW5nY2hlY2tfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAK PiAgCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2sgPSBzYXZlZF9oYW5nY2hlY2s7Cj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1l X3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IGluZGV4IGFjMWIxOGExN2Yz Yy4uZTYwNzNjZDQ3MTljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF9scmMuYwo+IEBAIC0xOCwxMyArMTgsMTQgQEAgc3RhdGljIGludCBsaXZlX3Nhbml0eWNo ZWNrKHZvaWQgKmFyZykKPiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gIAllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGluOwo+ICsJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgZXJyID0gLUVOT01FTTsKPiAgCj4gIAlpZiAo IUhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoaTkxNSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJ bXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9ydW50aW1lX3Bt X2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAg Cj4gIAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3BpbiwgaTkxNSkpCj4gIAkJZ290byBlcnJfdW5s b2NrOwo+IEBAIC02NSw3ICs2Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9zYW5pdHljaGVjayh2b2lk ICphcmcpCj4gIAlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluKTsKPiAgZXJyX3VubG9jazoKPiAgCWln dF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+IC0JaW50ZWxfcnVudGltZV9w bV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2Fr ZXJlZik7Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0 dXJuIGVycjsKPiAgfQo+IEBAIC03NywxMyArNzgsMTQgQEAgc3RhdGljIGludCBsaXZlX3ByZWVt cHQodm9pZCAqYXJnKQo+ICAJc3RydWN0IGlndF9zcGlubmVyIHNwaW5faGksIHNwaW5fbG87Cj4g IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IGVyciA9IC1FTk9NRU07 Cj4gIAo+ICAJaWYgKCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChpOTE1KTsKPiAgCj4gIAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3Bpbl9oaSwgaTkxNSkp Cj4gIAkJZ290byBlcnJfdW5sb2NrOwo+IEBAIC0xNTgsNyArMTYwLDcgQEAgc3RhdGljIGludCBs aXZlX3ByZWVtcHQodm9pZCAqYXJnKQo+ICAJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbl9oaSk7Cj4g IGVycl91bmxvY2s6Cj4gIAlpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsK PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtMTcxLDEzICsxNzMsMTQgQEAg c3RhdGljIGludCBsaXZlX2xhdGVfcHJlZW1wdCh2b2lkICphcmcpCj4gIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Cj4gIAlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIGF0dHIgPSB7fTsK PiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAlpbnQgZXJyID0gLUVOT01FTTsKPiAgCj4gIAlpZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJF RU1QVElPTihpOTE1KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAKPiAgCWlmIChpZ3Rfc3Bpbm5l cl9pbml0KCZzcGluX2hpLCBpOTE1KSkKPiAgCQlnb3RvIGVycl91bmxvY2s7Cj4gQEAgLTI1MSw3 ICsyNTQsNyBAQCBzdGF0aWMgaW50IGxpdmVfbGF0ZV9wcmVlbXB0KHZvaWQgKmFyZykKPiAgCWln dF9zcGlubmVyX2ZpbmkoJnNwaW5faGkpOwo+ICBlcnJfdW5sb2NrOgo+ICAJaWd0X2ZsdXNoX3Rl c3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNo ZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAg CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4gZXJyOwo+ ICAKPiBAQCAtMjcwLDYgKzI3Myw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X2hhbmcodm9p ZCAqYXJnKQo+ICAJc3RydWN0IGlndF9zcGlubmVyIHNwaW5faGksIHNwaW5fbG87Cj4gIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK PiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IGVyciA9IC1FTk9NRU07Cj4gIAo+ ICAJaWYgKCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCj4gQEAgLTI3OSw3ICsy ODMsNyBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdF9oYW5nKHZvaWQgKmFyZykKPiAgCQlyZXR1 cm4gMDsKPiAgCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwo+ICAKPiAgCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZzcGluX2hpLCBpOTE1KSkK PiAgCQlnb3RvIGVycl91bmxvY2s7Cj4gQEAgLTM3NCw3ICszNzgsNyBAQCBzdGF0aWMgaW50IGxp dmVfcHJlZW1wdF9oYW5nKHZvaWQgKmFyZykKPiAgCWlndF9zcGlubmVyX2ZpbmkoJnNwaW5faGkp Owo+ICBlcnJfdW5sb2NrOgo+ICAJaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tF RCk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkxNSk7Cj4gKwlpbnRlbF9y dW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gQEAgLTU2Miw2ICs1NjYsNyBA QCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdF9zbW9rZSh2b2lkICphcmcpCj4gIAkJLm5jb250ZXh0 ID0gMTAyNCwKPiAgCX07Cj4gIAljb25zdCB1bnNpZ25lZCBpbnQgcGhhc2VbXSA9IHsgMCwgQkFU Q0ggfTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJaW50IGVyciA9IC1FTk9NRU07 Cj4gIAl1MzIgKmNzOwo+ICAJaW50IG47Cj4gQEAgLTU3Niw3ICs1ODEsNyBAQCBzdGF0aWMgaW50 IGxpdmVfcHJlZW1wdF9zbW9rZSh2b2lkICphcmcpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ ICAJbXV0ZXhfbG9jaygmc21va2UuaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpbnRlbF9y dW50aW1lX3BtX2dldChzbW9rZS5pOTE1KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3Bt X2dldChzbW9rZS5pOTE1KTsKPiAgCj4gIAlzbW9rZS5iYXRjaCA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfaW50ZXJuYWwoc21va2UuaTkxNSwgUEFHRV9TSVpFKTsKPiAgCWlmIChJU19FUlIoc21v a2UuYmF0Y2gpKSB7Cj4gQEAgLTYyNyw3ICs2MzIsNyBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1w dF9zbW9rZSh2b2lkICphcmcpCj4gIGVycl9iYXRjaDoKPiAgCWk5MTVfZ2VtX29iamVjdF9wdXQo c21va2UuYmF0Y2gpOwo+ICBlcnJfdW5sb2NrOgo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5j aGVja2VkKHNtb2tlLmk5MTUpOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoc21va2UuaTkxNSwg d2FrZXJlZik7Cj4gIAltdXRleF91bmxvY2soJnNtb2tlLmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAJa2ZyZWUoc21va2UuY29udGV4dHMpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IGluZGV4IDU0ZjVjMmRlM2Qw OC4uNDdlNjJlMTk5OWE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiBAQCAtMTUsMTAgKzE1LDExIEBACj4gIHN0YXRp YyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gIHJlYWRfbm9ucHJpdnMoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7 Cj4gKwljb25zdCB1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwo+ICAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKnJlc3VsdDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCWNv bnN0IHUzMiBiYXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7Cj4gIAl1MzIgc3JtLCAqY3M7Cj4gIAlp bnQgZXJyOwo+ICAJaW50IGk7Cj4gQEAgLTQ3LDkgKzQ4LDkgQEAgcmVhZF9ub25wcml2cyhzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gIAlpZiAoZXJyKQo+ICAJCWdvdG8gZXJyX29iajsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3Bt X2dldChlbmdpbmUtPmk5MTUpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGVu Z2luZS0+aTkxNSk7Cj4gIAlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4g LQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoZW5naW5lLT5pOTE1KTsKPiArCWludGVs X3J1bnRpbWVfcG1fcHV0KGVuZ2luZS0+aTkxNSwgd2FrZXJlZik7Cj4gIAlpZiAoSVNfRVJSKHJx KSkgewo+ICAJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAJCWdvdG8gZXJyX3BpbjsKPiBAQCAtMTgz LDIwICsxODQsMjEgQEAgc3dpdGNoX3RvX3NjcmF0Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gIHsKPiAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4g IAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICAJaW50IGVyciA9IDA7Cj4gIAo+ICAJY3R4ID0ga2VybmVsX2NvbnRleHQoZW5naW5lLT5pOTE1 KTsKPiAgCWlmIChJU19FUlIoY3R4KSkKPiAgCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICAKPiAt CWludGVsX3J1bnRpbWVfcG1fZ2V0KGVuZ2luZS0+aTkxNSk7Cj4gKwl3YWtlcmVmID0gaW50ZWxf cnVudGltZV9wbV9nZXQoZW5naW5lLT5pOTE1KTsKPiAgCj4gIAlpZiAoc3BpbikKPiAgCQlycSA9 IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KHNwaW4sIGN0eCwgZW5naW5lLCBNSV9OT09QKTsK PiAgCWVsc2UKPiAgCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gIAo+ IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGVuZ2luZS0+aTkxNSk7Cj4gKwlpbnRl bF9ydW50aW1lX3BtX3B1dChlbmdpbmUtPmk5MTUsIHdha2VyZWYpOwo+ICAKPiAgCWtlcm5lbF9j b250ZXh0X2Nsb3NlKGN0eCk7Cj4gIAo+IEBAIC0yMjgsNiArMjMwLDcgQEAgc3RhdGljIGludCBj aGVja193aGl0ZWxpc3RfYWNyb3NzX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgCWJvb2wgd2FudF9zcGluID0gcmVzZXQgPT0gZG9fZW5naW5lX3Jlc2V0Owo+ICAJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgCXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGluOwo+ ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCXByX2luZm8o IkNoZWNraW5nICVkIHdoaXRlbGlzdGVkIHJlZ2lzdGVycyAoUklOR19OT05QUklWKSBbJXNdXG4i LAo+IEBAIC0yNTMsOSArMjU2LDkgQEAgc3RhdGljIGludCBjaGVja193aGl0ZWxpc3RfYWNyb3Nz X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCWlmIChlcnIpCj4gIAkJ Z290byBvdXQ7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAllcnIgPSByZXNldChlbmdpbmUpOwo+ IC0JaW50ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGk5MTUpOwo+ICsJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gIAo+ICAJaWYgKHdhbnRfc3Bpbikgewo+ICAJCWln dF9zcGlubmVyX2VuZCgmc3Bpbik7Cj4gQEAgLTM0NCw2ICszNDcsNyBAQCBsaXZlX2dwdV9yZXNl dF9ndF9lbmdpbmVfd29ya2Fyb3VuZHModm9pZCAqYXJnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAgCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3Ig PSAmaTkxNS0+Z3B1X2Vycm9yOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAlib29s IG9rOwo+ICAKPiAgCWlmICghaW50ZWxfaGFzX2dwdV9yZXNldChpOTE1KSkKPiBAQCAtMzUyLDcg KzM1Niw3IEBAIGxpdmVfZ3B1X3Jlc2V0X2d0X2VuZ2luZV93b3JrYXJvdW5kcyh2b2lkICphcmcp Cj4gIAlwcl9pbmZvKCJWZXJpZnlpbmcgYWZ0ZXIgR1BVIHJlc2V0Li4uXG4iKTsKPiAgCj4gIAlp Z3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAgCj4gIAlvayA9 IHZlcmlmeV9ndF9lbmdpbmVfd2EoaTkxNSwgImJlZm9yZSByZXNldCIpOwo+ICAJaWYgKCFvaykK PiBAQCAtMzY0LDcgKzM2OCw3IEBAIGxpdmVfZ3B1X3Jlc2V0X2d0X2VuZ2luZV93b3JrYXJvdW5k cyh2b2lkICphcmcpCj4gIAlvayA9IHZlcmlmeV9ndF9lbmdpbmVfd2EoaTkxNSwgImFmdGVyIHJl c2V0Iik7Cj4gIAo+ICBvdXQ6Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dF91bmNoZWNrZWQoaTkx NSk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCWlndF9nbG9i YWxfcmVzZXRfdW5sb2NrKGk5MTUpOwo+ICAKPiAgCXJldHVybiBvayA/IDAgOiAtRVNSQ0g7Cj4g QEAgLTM3OSw2ICszODMsNyBAQCBsaXZlX2VuZ2luZV9yZXNldF9ndF9lbmdpbmVfd29ya2Fyb3Vu ZHModm9pZCAqYXJnKQo+ICAJc3RydWN0IGlndF9zcGlubmVyIHNwaW47Cj4gIAllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKPiAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICsJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gIAlpZiAoIWludGVsX2hhc19y ZXNldF9lbmdpbmUoaTkxNSkpCj4gQEAgLTM4OSw3ICszOTQsNyBAQCBsaXZlX2VuZ2luZV9yZXNl dF9ndF9lbmdpbmVfd29ya2Fyb3VuZHModm9pZCAqYXJnKQo+ICAJCXJldHVybiBQVFJfRVJSKGN0 eCk7Cj4gIAo+ICAJaWd0X2dsb2JhbF9yZXNldF9sb2NrKGk5MTUpOwo+IC0JaW50ZWxfcnVudGlt ZV9wbV9nZXQoaTkxNSk7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7 Cj4gIAo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAgCQlib29sIG9r Owo+IEBAIC00NDMsNyArNDQ4LDcgQEAgbGl2ZV9lbmdpbmVfcmVzZXRfZ3RfZW5naW5lX3dvcmth cm91bmRzKHZvaWQgKmFyZykKPiAgCX0KPiAgCj4gIGVycjoKPiAtCWludGVsX3J1bnRpbWVfcG1f cHV0X3VuY2hlY2tlZChpOTE1KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2Vy ZWYpOwo+ICAJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAlrZXJuZWxfY29udGV4 dF9jbG9zZShjdHgpOwo+ICAKPiAtLSAKPiAyLjIwLjEKPgo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK