From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Subject: Re: [PATCH] drm/amdgpu: reserve GDS resources statically Date: Thu, 13 Sep 2018 11:27:29 -0400 Message-ID: References: <20180912203358.2172-1-maraeo@gmail.com> <904d7dbb-eeec-03a0-92c8-5c5170a7b43c@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <904d7dbb-eeec-03a0-92c8-5c5170a7b43c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=C3=B6nig?= Cc: amd-gfx mailing list VGhhdCdzIE9LLiBXZSBkb24ndCBuZWVkIElCcyB0byBnZXQgdGhlIHNhbWUgVk1JRC4KCk1hcmVr CgpPbiBUaHUsIFNlcCAxMywgMjAxOCBhdCA0OjQwIEFNLCBDaHJpc3RpYW4gS8O2bmlnCjxja29l bmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4gQXMgZGlzY3Vzc2VkIGludGVy bmFsbHkgdGhhdCBkb2Vzbid0IHdvcmsgYmVjYXVzZSB0aHJlYWRzIGRvbid0IG5lY2Vzc2FyeQo+ IGdldCB0aGUgc2FtZSBWTUlEIGFzc2lnbmVkLgo+Cj4gQ2hyaXN0aWFuLgo+Cj4gQW0gMTIuMDku MjAxOCB1bSAyMjozMyBzY2hyaWViIE1hcmVrIE9sxaHDoWs6Cj4+Cj4+IEZyb206IE1hcmVrIE9s xaHDoWsgPG1hcmVrLm9sc2FrQGFtZC5jb20+Cj4+Cj4+IEkndmUgY2hvc2VuIHRvIGRvIGl0IGxp a2UgdGhpcyBiZWNhdXNlIGl0J3MgZWFzeSBhbmQgYWxsb3dzIGFuIGFyYml0cmFyeQo+PiBudW1i ZXIgb2YgcHJvY2Vzc2VzLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJl ay5vbHNha0BhbWQuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYm9fbGlzdC5jIHwgIDEwIC0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2JvX2xpc3QuaCB8ICAgMyAtCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMgICAgICB8ICAyMCAtLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2dkcy5oICAgICB8ICAxOSArLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2VtLmMgICAgIHwgIDI0ICstLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWRzLmMgICAgIHwgICA2IC0KPj4gICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWRzLmggICAgIHwgICA3IC0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2pvYi5oICAgICB8ICAgMyAtCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2ttcy5jICAgICB8ICAxNCArLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgIHwgIDIxIC0tLS0KPj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmggIHwgICA2IC0KPj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oICAgIHwgICA1IC0KPj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMgICAgIHwgIDYxIC0tLS0tLS0tLS0KPj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmggICAgIHwgICA4IC0tCj4+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgICB8ICAzNCArLS0tLS0KPj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jICAgICAgIHwgMTI1ICsrKysr LS0tLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAu YyAgICAgICB8IDEyMyArKysrKy0tLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3Y5XzAuYyAgICAgICB8IDEyNCArKysrKystLS0tLS0tLS0tLS0tCj4+ICAg aW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmggICAgICAgICAgICAgICB8ICAxNSArLS0KPj4g ICAxOSBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNTE5IGRlbGV0aW9ucygtKQo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xp c3QuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmMKPj4g aW5kZXggYjgwMjQzZDM5NzJlLi43MjY0YTQ5MzBiODggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JvX2xpc3QuYwo+PiBAQCAtNzEsMjMgKzcxLDIwIEBAIGlu dCBhbWRncHVfYm9fbGlzdF9jcmVhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IHN0 cnVjdCBkcm1fZmlsZSAqZmlscCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv IHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkpKQo+PiAgICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4+ICAgICAgICAgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2Jv X2xpc3QpOwo+PiAgICAgICAgIHNpemUgKz0gbnVtX2VudHJpZXMgKiBzaXplb2Yoc3RydWN0IGFt ZGdwdV9ib19saXN0X2VudHJ5KTsKPj4gICAgICAgICBsaXN0ID0ga3ZtYWxsb2Moc2l6ZSwgR0ZQ X0tFUk5FTCk7Cj4+ICAgICAgICAgaWYgKCFsaXN0KQo+PiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07Cj4+ICAgICAgICAga3JlZl9pbml0KCZsaXN0LT5yZWZjb3VudCk7Cj4+IC0gICAg ICAgbGlzdC0+Z2RzX29iaiA9IGFkZXYtPmdkcy5nZHNfZ2Z4X2JvOwo+PiAtICAgICAgIGxpc3Qt Pmd3c19vYmogPSBhZGV2LT5nZHMuZ3dzX2dmeF9ibzsKPj4gLSAgICAgICBsaXN0LT5vYV9vYmog PSBhZGV2LT5nZHMub2FfZ2Z4X2JvOwo+PiAgICAgICAgIGFycmF5ID0gYW1kZ3B1X2JvX2xpc3Rf YXJyYXlfZW50cnkobGlzdCwgMCk7Cj4+ICAgICAgICAgbWVtc2V0KGFycmF5LCAwLCBudW1fZW50 cmllcyAqIHNpemVvZihzdHJ1Y3QKPj4gYW1kZ3B1X2JvX2xpc3RfZW50cnkpKTsKPj4gICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtX2VudHJpZXM7ICsraSkgewo+PiAgICAgICAgICAgICAgICAg c3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5ICplbnRyeTsKPj4gICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iajsKPj4gICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRn cHVfYm8gKmJvOwo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqdXNlcm1tOwo+ PiAgIEBAIC0xMTEsMjcgKzEwOCwyMCBAQCBpbnQgYW1kZ3B1X2JvX2xpc3RfY3JlYXRlKHN0cnVj dCBhbWRncHVfZGV2aWNlCj4+ICphZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsCj4+ICAgICAg ICAgICAgICAgICB9IGVsc2Ugewo+PiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9ICZh cnJheVtsYXN0X2VudHJ5KytdOwo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgICAg ICAgZW50cnktPnJvYmogPSBibzsKPj4gICAgICAgICAgICAgICAgIGVudHJ5LT5wcmlvcml0eSA9 IG1pbihpbmZvW2ldLmJvX3ByaW9yaXR5LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFNREdQVV9CT19MSVNUX01BWF9QUklPUklUWSk7Cj4+ICAgICAgICAgICAgICAg ICBlbnRyeS0+dHYuYm8gPSAmZW50cnktPnJvYmotPnRibzsKPj4gICAgICAgICAgICAgICAgIGVu dHJ5LT50di5zaGFyZWQgPSAhZW50cnktPnJvYmotPnByaW1lX3NoYXJlZF9jb3VudDsKPj4gICAt ICAgICAgICAgICAgIGlmIChlbnRyeS0+cm9iai0+cHJlZmVycmVkX2RvbWFpbnMgPT0KPj4gQU1E R1BVX0dFTV9ET01BSU5fR0RTKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICBsaXN0LT5nZHNf b2JqID0gZW50cnktPnJvYmo7Cj4+IC0gICAgICAgICAgICAgICBpZiAoZW50cnktPnJvYmotPnBy ZWZlcnJlZF9kb21haW5zID09Cj4+IEFNREdQVV9HRU1fRE9NQUlOX0dXUykKPj4gLSAgICAgICAg ICAgICAgICAgICAgICAgbGlzdC0+Z3dzX29iaiA9IGVudHJ5LT5yb2JqOwo+PiAtICAgICAgICAg ICAgICAgaWYgKGVudHJ5LT5yb2JqLT5wcmVmZXJyZWRfZG9tYWlucyA9PQo+PiBBTURHUFVfR0VN X0RPTUFJTl9PQSkKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgbGlzdC0+b2Ffb2JqID0gZW50 cnktPnJvYmo7Cj4+IC0KPj4gICAgICAgICAgICAgICAgIHRvdGFsX3NpemUgKz0gYW1kZ3B1X2Jv X3NpemUoZW50cnktPnJvYmopOwo+PiAgICAgICAgICAgICAgICAgdHJhY2VfYW1kZ3B1X2JvX2xp c3Rfc2V0KGxpc3QsIGVudHJ5LT5yb2JqKTsKPj4gICAgICAgICB9Cj4+ICAgICAgICAgbGlzdC0+ Zmlyc3RfdXNlcnB0ciA9IGZpcnN0X3VzZXJwdHI7Cj4+ICAgICAgICAgbGlzdC0+bnVtX2VudHJp ZXMgPSBudW1fZW50cmllczsKPj4gICAgICAgICB0cmFjZV9hbWRncHVfY3NfYm9fc3RhdHVzKGxp c3QtPm51bV9lbnRyaWVzLCB0b3RhbF9zaXplKTsKPj4gICAgICAgICAqcmVzdWx0ID0gbGlzdDsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0 LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5oCj4+IGlu ZGV4IDYxYjA4OTc2OGUxYy4uMzBmMTJhNjBhYTI4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYm9fbGlzdC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9ib19saXN0LmgKPj4gQEAgLTM2LDIzICszNiwyMCBAQCBzdHJ1 Y3QgYW1kZ3B1X2JvX2xpc3RfZW50cnkgewo+PiAgICAgICAgIHN0cnVjdCB0dG1fdmFsaWRhdGVf YnVmZmVyICAgICAgdHY7Cj4+ICAgICAgICAgc3RydWN0IGFtZGdwdV9ib192YSAgICAgICAgICAg ICAqYm9fdmE7Cj4+ICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICBwcmlv cml0eTsKPj4gICAgICAgICBzdHJ1Y3QgcGFnZSAgICAgICAgICAgICAgICAgICAgICoqdXNlcl9w YWdlczsKPj4gICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaW52 YWxpZGF0ZWQ7Cj4+ICAgfTsKPj4gICAgIHN0cnVjdCBhbWRncHVfYm9fbGlzdCB7Cj4+ICAgICAg ICAgc3RydWN0IHJjdV9oZWFkIHJoZWFkOwo+PiAgICAgICAgIHN0cnVjdCBrcmVmIHJlZmNvdW50 Owo+PiAtICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmdkc19vYmo7Cj4+IC0gICAgICAgc3RydWN0 IGFtZGdwdV9ibyAqZ3dzX29iajsKPj4gLSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpvYV9vYmo7 Cj4+ICAgICAgICAgdW5zaWduZWQgZmlyc3RfdXNlcnB0cjsKPj4gICAgICAgICB1bnNpZ25lZCBu dW1fZW50cmllczsKPj4gICB9Owo+PiAgICAgaW50IGFtZGdwdV9ib19saXN0X2dldChzdHJ1Y3Qg YW1kZ3B1X2Zwcml2ICpmcHJpdiwgaW50IGlkLAo+PiAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBhbWRncHVfYm9fbGlzdCAqKnJlc3VsdCk7Cj4+ICAgdm9pZCBhbWRncHVfYm9fbGlzdF9n ZXRfbGlzdChzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3QgKmxpc3QsCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdmFsaWRhdGVkKTsKPj4gICB2b2lkIGFtZGdw dV9ib19saXN0X3B1dChzdHJ1Y3QgYW1kZ3B1X2JvX2xpc3QgKmxpc3QpOwo+PiAgIGludCBhbWRn cHVfYm9fY3JlYXRlX2xpc3RfZW50cnlfYXJyYXkoc3RydWN0IGRybV9hbWRncHVfYm9fbGlzdF9p biAqaW4sCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3MuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+IGluZGV4 IDEwODFmZDAwYjA1OS4uODhiNThmYWNmMjllIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfY3MuYwo+PiBAQCAtNTY1LDIzICs1NjUsMjAgQEAgc3RhdGljIGludCBhbWRn cHVfY3NfbGlzdF92YWxpZGF0ZShzdHJ1Y3QKPj4gYW1kZ3B1X2NzX3BhcnNlciAqcCwKPj4gICAg ICAgICByZXR1cm4gMDsKPj4gICB9Cj4+ICAgICBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJf Ym9zKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuaW9uIGRybV9hbWRncHVfY3MgKmNzKQo+PiAgIHsKPj4gICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+PiAgICAgICAg IHN0cnVjdCBhbWRncHVfdm0gKnZtID0gJmZwcml2LT52bTsKPj4gICAgICAgICBzdHJ1Y3QgYW1k Z3B1X2JvX2xpc3RfZW50cnkgKmU7Cj4+ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkdXBsaWNh dGVzOwo+PiAtICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmdkczsKPj4gLSAgICAgICBzdHJ1Y3Qg YW1kZ3B1X2JvICpnd3M7Cj4+IC0gICAgICAgc3RydWN0IGFtZGdwdV9ibyAqb2E7Cj4+ICAgICAg ICAgdW5zaWduZWQgdHJpZXMgPSAxMDsKPj4gICAgICAgICBpbnQgcjsKPj4gICAgICAgICBJTklU X0xJU1RfSEVBRCgmcC0+dmFsaWRhdGVkKTsKPj4gICAgICAgICAvKiBwLT5ib19saXN0IGNvdWxk IGFscmVhZHkgYmUgYXNzaWduZWQgaWYKPj4gQU1ER1BVX0NIVU5LX0lEX0JPX0hBTkRMRVMgaXMg cHJlc2VudCAqLwo+PiAgICAgICAgIGlmIChjcy0+aW4uYm9fbGlzdF9oYW5kbGUpIHsKPj4gICAg ICAgICAgICAgICAgIGlmIChwLT5ib19saXN0KQo+PiAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPj4gICBAQCAtNzA1LDQwICs3MDIsMjMgQEAgc3RhdGljIGludCBhbWRn cHVfY3NfcGFyc2VyX2JvcyhzdHJ1Y3QKPj4gYW1kZ3B1X2NzX3BhcnNlciAqcCwKPj4gICAgICAg ICByID0gYW1kZ3B1X2NzX2xpc3RfdmFsaWRhdGUocCwgJnAtPnZhbGlkYXRlZCk7Cj4+ICAgICAg ICAgaWYgKHIpIHsKPj4gICAgICAgICAgICAgICAgIERSTV9FUlJPUigiYW1kZ3B1X2NzX2xpc3Rf dmFsaWRhdGUodmFsaWRhdGVkKSBmYWlsZWQuXG4iKTsKPj4gICAgICAgICAgICAgICAgIGdvdG8g ZXJyb3JfdmFsaWRhdGU7Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIGFtZGdwdV9jc19yZXBvcnRf bW92ZWRfYnl0ZXMocC0+YWRldiwgcC0+Ynl0ZXNfbW92ZWQsCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwLT5ieXRlc19tb3ZlZF92aXMpOwo+PiAgIC0gICAgIGdkcyA9 IHAtPmJvX2xpc3QtPmdkc19vYmo7Cj4+IC0gICAgICAgZ3dzID0gcC0+Ym9fbGlzdC0+Z3dzX29i ajsKPj4gLSAgICAgICBvYSA9IHAtPmJvX2xpc3QtPm9hX29iajsKPj4gLQo+PiAgICAgICAgIGFt ZGdwdV9ib19saXN0X2Zvcl9lYWNoX2VudHJ5KGUsIHAtPmJvX2xpc3QpCj4+ICAgICAgICAgICAg ICAgICBlLT5ib192YSA9IGFtZGdwdV92bV9ib19maW5kKHZtLCBlLT5yb2JqKTsKPj4gICAtICAg ICBpZiAoZ2RzKSB7Cj4+IC0gICAgICAgICAgICAgICBwLT5qb2ItPmdkc19iYXNlID0gYW1kZ3B1 X2JvX2dwdV9vZmZzZXQoZ2RzKTsKPj4gLSAgICAgICAgICAgICAgIHAtPmpvYi0+Z2RzX3NpemUg PSBhbWRncHVfYm9fc2l6ZShnZHMpOwo+PiAtICAgICAgIH0KPj4gLSAgICAgICBpZiAoZ3dzKSB7 Cj4+IC0gICAgICAgICAgICAgICBwLT5qb2ItPmd3c19iYXNlID0gYW1kZ3B1X2JvX2dwdV9vZmZz ZXQoZ3dzKTsKPj4gLSAgICAgICAgICAgICAgIHAtPmpvYi0+Z3dzX3NpemUgPSBhbWRncHVfYm9f c2l6ZShnd3MpOwo+PiAtICAgICAgIH0KPj4gLSAgICAgICBpZiAob2EpIHsKPj4gLSAgICAgICAg ICAgICAgIHAtPmpvYi0+b2FfYmFzZSA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KG9hKTsKPj4gLSAg ICAgICAgICAgICAgIHAtPmpvYi0+b2Ffc2l6ZSA9IGFtZGdwdV9ib19zaXplKG9hKTsKPj4gLSAg ICAgICB9Cj4+IC0KPj4gICAgICAgICBpZiAoIXIgJiYgcC0+dWZfZW50cnkucm9iaikgewo+PiAg ICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9ibyAqdWYgPSBwLT51Zl9lbnRyeS5yb2JqOwo+ PiAgICAgICAgICAgICAgICAgciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmdWYtPnRibyk7Cj4+ ICAgICAgICAgICAgICAgICBwLT5qb2ItPnVmX2FkZHIgKz0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQo dWYpOwo+PiAgICAgICAgIH0KPj4gICAgIGVycm9yX3ZhbGlkYXRlOgo+PiAgICAgICAgIGlmIChy KQo+PiAgICAgICAgICAgICAgICAgdHRtX2V1X2JhY2tvZmZfcmVzZXJ2YXRpb24oJnAtPnRpY2tl dCwgJnAtPnZhbGlkYXRlZCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2RzLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2RzLmgKPj4gaW5kZXggZTczNzI4ZDkwMzg4Li42OWJhMjVjMmU5MjEgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZHMuaAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2RzLmgKPj4gQEAgLTE3LDQ4ICsxNywzMyBAQAo+ PiAgICAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUwo+PiBPUgo+PiAgICAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+PiAgICAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgo+PiAgICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4gICAg Kgo+PiAgICAqLwo+PiAgICAgI2lmbmRlZiBfX0FNREdQVV9HRFNfSF9fCj4+ICAgI2RlZmluZSBf X0FNREdQVV9HRFNfSF9fCj4+ICAgLS8qIEJlY2F1c2UgVFRNIHJlcXVlc3QgdGhhdCBhbGxvYWN0 ZWQgYnVmZmVyIHNob3VsZCBiZSBQQUdFX1NJWkUKPj4gYWxpZ25lZCwKPj4gLSAqIHdlIHNob3Vs ZCByZXBvcnQgR0RTL0dXUy9PQSBzaXplIGFzIFBBR0VfU0laRSBhbGlnbmVkCj4+IC0gKiAqLwo+ PiAtI2RlZmluZSBBTURHUFVfR0RTX1NISUZUICAgICAgIDIKPj4gLSNkZWZpbmUgQU1ER1BVX0dX U19TSElGVCAgICAgICBQQUdFX1NISUZUCj4+IC0jZGVmaW5lIEFNREdQVV9PQV9TSElGVCAgICAg ICAgICAgICAgICBQQUdFX1NISUZUCj4+IC0KPj4gICBzdHJ1Y3QgYW1kZ3B1X3Jpbmc7Cj4+ICAg c3RydWN0IGFtZGdwdV9ibzsKPj4gICAgIHN0cnVjdCBhbWRncHVfZ2RzX2FzaWNfaW5mbyB7Cj4+ ICAgICAgICAgdWludDMyX3QgICAgICAgIHRvdGFsX3NpemU7Cj4+IC0gICAgICAgdWludDMyX3Qg ICAgICAgIGdmeF9wYXJ0aXRpb25fc2l6ZTsKPj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgY3Nf cGFydGl0aW9uX3NpemU7Cj4+ICsgICAgICAgdWludDMyX3QgICAgICAgIGdmeF9zaXplX3Blcl92 bWlkOwo+PiArICAgICAgIHVpbnQzMl90ICAgICAgICBrZmRfc2l6ZV9wZXJfdm1pZDsKPj4gICB9 Owo+PiAgICAgc3RydWN0IGFtZGdwdV9nZHMgewo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfZ2Rz X2FzaWNfaW5mbyAgICAgbWVtOwo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfZ2RzX2FzaWNfaW5m byAgICAgZ3dzOwo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfZ2RzX2FzaWNfaW5mbyAgICAgb2E7 Cj4+IC0gICAgICAgLyogQXQgcHJlc2VudCwgR0RTLCBHV1MgYW5kIE9BIHJlc291cmNlcyBmb3Ig Z2Z4IChncmFwaGljcykKPj4gLSAgICAgICAgKiBpcyBhbHdheXMgcHJlLWFsbG9jYXRlZCBhbmQg YXZhaWxhYmxlIGZvciBncmFwaGljcyBvcGVyYXRpb24uCj4+IC0gICAgICAgICogU3VjaCByZXNv dXJjZSBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgZ2Z4IGNsaWVudHMuCj4+IC0gICAgICAgICogVE9E TzogbW92ZSB0aGlzIG9wZXJhdGlvbiB0byB1c2VyIHNwYWNlCj4+IC0gICAgICAgICogKi8KPj4g LSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvKiAgICAgICAgICAgICAgIGdkc19nZnhfYm87Cj4+IC0g ICAgICAgc3RydWN0IGFtZGdwdV9ibyogICAgICAgICAgICAgICBnd3NfZ2Z4X2JvOwo+PiAtICAg ICAgIHN0cnVjdCBhbWRncHVfYm8qICAgICAgICAgICAgICAgb2FfZ2Z4X2JvOwo+PiAgIH07Cj4+ ICAgICBzdHJ1Y3QgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0IHsKPj4gICAgICAgICB1aW50MzJfdCAg ICAgICAgbWVtX2Jhc2U7Cj4+ICAgICAgICAgdWludDMyX3QgICAgICAgIG1lbV9zaXplOwo+PiAg ICAgICAgIHVpbnQzMl90ICAgICAgICBnd3M7Cj4+ICAgICAgICAgdWludDMyX3QgICAgICAgIG9h Owo+PiAgIH07Cj4+ICAgICAjZW5kaWYgLyogX19BTURHUFVfR0RTX0hfXyAqLwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+IGluZGV4IGQzMGEwODM4ODUxYi4u Yzg3YWQ0YjRkMGI2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dl bS5jCj4+IEBAIC0yMjMsNDMgKzIyMywyNSBAQCBpbnQgYW1kZ3B1X2dlbV9jcmVhdGVfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gdm9pZCAqZGF0YSwKPj4gICAgICAgICBpZiAoZmxh Z3MgJiB+KEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQgfAo+PiAgICAgICAg ICAgICAgICAgICAgICAgQU1ER1BVX0dFTV9DUkVBVEVfTk9fQ1BVX0FDQ0VTUyB8Cj4+ICAgICAg ICAgICAgICAgICAgICAgICBBTURHUFVfR0VNX0NSRUFURV9DUFVfR1RUX1VTV0MgfAo+PiAgICAg ICAgICAgICAgICAgICAgICAgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DTEVBUkVEIHwKPj4gICAg ICAgICAgICAgICAgICAgICAgIEFNREdQVV9HRU1fQ1JFQVRFX1ZNX0FMV0FZU19WQUxJRCB8Cj4+ ICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVfR0VNX0NSRUFURV9FWFBMSUNJVF9TWU5DKSkK Pj4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiAgICAgICAgIC8qIHJlamVjdCBp bnZhbGlkIGdlbSBkb21haW5zICovCj4+IC0gICAgICAgaWYgKGFyZ3MtPmluLmRvbWFpbnMgJiB+ QU1ER1BVX0dFTV9ET01BSU5fTUFTSykKPj4gKyAgICAgICBpZiAoYXJncy0+aW4uZG9tYWlucyAm IH4oQU1ER1BVX0dFTV9ET01BSU5fQ1BVIHwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RUIHwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQU1ER1BVX0dFTV9ET01BSU5fVlJBTSkpCj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPj4gICAtICAgICAvKiBjcmVhdGUgYSBnZW0gb2JqZWN0IHRvIGNvbnRhaW4g dGhpcyBvYmplY3QgaW4gKi8KPj4gLSAgICAgICBpZiAoYXJncy0+aW4uZG9tYWlucyAmIChBTURH UFVfR0VNX0RPTUFJTl9HRFMgfAo+PiAtICAgICAgICAgICBBTURHUFVfR0VNX0RPTUFJTl9HV1Mg fCBBTURHUFVfR0VNX0RPTUFJTl9PQSkpIHsKPj4gLSAgICAgICAgICAgICAgIGlmIChmbGFncyAm IEFNREdQVV9HRU1fQ1JFQVRFX1ZNX0FMV0FZU19WQUxJRCkgewo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAvKiBpZiBnZHMgYm8gaXMgY3JlYXRlZCBmcm9tIHVzZXIgc3BhY2UsIGl0IG11c3QK Pj4gYmUKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICogcGFzc2VkIHRvIGJvIGxpc3QKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICovCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIERS TV9FUlJPUigiR0RTIGJvIGNhbm5vdCBiZSBwZXItdm0tYm9cbiIpOwo+PiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gLSAgICAgICAgICAgICAgIH0KPj4gLSAgICAg ICAgICAgICAgIGZsYWdzIHw9IEFNREdQVV9HRU1fQ1JFQVRFX05PX0NQVV9BQ0NFU1M7Cj4+IC0g ICAgICAgICAgICAgICBpZiAoYXJncy0+aW4uZG9tYWlucyA9PSBBTURHUFVfR0VNX0RPTUFJTl9H RFMpCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzaXplIDw8IEFNREdQVV9HRFNf U0hJRlQ7Cj4+IC0gICAgICAgICAgICAgICBlbHNlIGlmIChhcmdzLT5pbi5kb21haW5zID09IEFN REdQVV9HRU1fRE9NQUlOX0dXUykKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHNp emUgPDwgQU1ER1BVX0dXU19TSElGVDsKPj4gLSAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3Mt PmluLmRvbWFpbnMgPT0gQU1ER1BVX0dFTV9ET01BSU5fT0EpCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgIHNpemUgPSBzaXplIDw8IEFNREdQVV9PQV9TSElGVDsKPj4gLSAgICAgICAgICAgICAg IGVsc2UKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+IC0gICAg ICAgfQo+PiAgICAgICAgIHNpemUgPSByb3VuZHVwKHNpemUsIFBBR0VfU0laRSk7Cj4+ICAgICAg ICAgaWYgKGZsYWdzICYgQU1ER1BVX0dFTV9DUkVBVEVfVk1fQUxXQVlTX1ZBTElEKSB7Cj4+ICAg ICAgICAgICAgICAgICByID0gYW1kZ3B1X2JvX3Jlc2VydmUodm0tPnJvb3QuYmFzZS5ibywgZmFs c2UpOwo+PiAgICAgICAgICAgICAgICAgaWYgKHIpCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiByOwo+PiAgICAgICAgICAgICAgICAgcmVzdiA9IHZtLT5yb290LmJhc2UuYm8tPnRi by5yZXN2Owo+PiAgICAgICAgIH0KPj4gICBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2lkcy5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2lkcy5jCj4+IGluZGV4IDNhMDcyYTdhMzlmMC4uYzJlNmExYTExZDdmIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWRzLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5jCj4+IEBAIC01MTYsMjYgKzUxNiwy MCBAQCB2b2lkIGFtZGdwdV92bWlkX2ZyZWVfcmVzZXJ2ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UK Pj4gKmFkZXYsCj4+ICAgICogUmVzZXQgc2F2ZWQgR0RXLCBHV1MgYW5kIE9BIHRvIGZvcmNlIHN3 aXRjaCBvbiBuZXh0IGZsdXNoLgo+PiAgICAqLwo+PiAgIHZvaWQgYW1kZ3B1X3ZtaWRfcmVzZXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHZtaHViLAo+PiAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIHZtaWQpCj4+ICAgewo+PiAgICAgICAgIHN0cnVjdCBhbWRn cHVfdm1pZF9tZ3IgKmlkX21nciA9ICZhZGV2LT52bV9tYW5hZ2VyLmlkX21nclt2bWh1Yl07Cj4+ ICAgICAgICAgc3RydWN0IGFtZGdwdV92bWlkICppZCA9ICZpZF9tZ3ItPmlkc1t2bWlkXTsKPj4g ICAgICAgICBtdXRleF9sb2NrKCZpZF9tZ3ItPmxvY2spOwo+PiAgICAgICAgIGlkLT5vd25lciA9 IDA7Cj4+IC0gICAgICAgaWQtPmdkc19iYXNlID0gMDsKPj4gLSAgICAgICBpZC0+Z2RzX3NpemUg PSAwOwo+PiAtICAgICAgIGlkLT5nd3NfYmFzZSA9IDA7Cj4+IC0gICAgICAgaWQtPmd3c19zaXpl ID0gMDsKPj4gLSAgICAgICBpZC0+b2FfYmFzZSA9IDA7Cj4+IC0gICAgICAgaWQtPm9hX3NpemUg PSAwOwo+PiAgICAgICAgIG11dGV4X3VubG9jaygmaWRfbWdyLT5sb2NrKTsKPj4gICB9Cj4+ICAg ICAvKioKPj4gICAgKiBhbWRncHVfdm1pZF9yZXNldF9hbGwgLSByZXNldCBWTUlEIHRvIHplcm8K Pj4gICAgKgo+PiAgICAqIEBhZGV2OiBhbWRncHUgZGV2aWNlIHN0cnVjdHVyZQo+PiAgICAqCj4+ ICAgICogUmVzZXQgVk1JRCB0byBmb3JjZSBmbHVzaCBvbiBuZXh0IHVzZQo+PiAgICAqLwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5oCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5oCj4+IGluZGV4IDc2MjU0MTlm MGZjMi4uMDYwNzhlNjY1NTMyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfaWRzLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2lkcy5oCj4+IEBAIC00NCwyNyArNDQsMjAgQEAgc3RydWN0IGFtZGdwdV92bWlkIHsKPj4g ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3N5bmMgICAgICBhY3RpdmU7Cj4+ICAgICAgICAgc3RydWN0 IGRtYV9mZW5jZSAgICAgICAgKmxhc3RfZmx1c2g7Cj4+ICAgICAgICAgdWludDY0X3QgICAgICAg ICAgICAgICAgb3duZXI7Cj4+ICAgICAgICAgdWludDY0X3QgICAgICAgICAgICAgICAgcGRfZ3B1 X2FkZHI7Cj4+ICAgICAgICAgLyogbGFzdCBmbHVzaGVkIFBEL1BUIHVwZGF0ZSAqLwo+PiAgICAg ICAgIHN0cnVjdCBkbWFfZmVuY2UgICAgICAgICpmbHVzaGVkX3VwZGF0ZXM7Cj4+ICAgICAgICAg dWludDMyX3QgICAgICAgICAgICAgICAgY3VycmVudF9ncHVfcmVzZXRfY291bnQ7Cj4+ICAgLSAg ICAgdWludDMyX3QgICAgICAgICAgICAgICAgZ2RzX2Jhc2U7Cj4+IC0gICAgICAgdWludDMyX3Qg ICAgICAgICAgICAgICAgZ2RzX3NpemU7Cj4+IC0gICAgICAgdWludDMyX3QgICAgICAgICAgICAg ICAgZ3dzX2Jhc2U7Cj4+IC0gICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgZ3dzX3NpemU7 Cj4+IC0gICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgb2FfYmFzZTsKPj4gLSAgICAgICB1 aW50MzJfdCAgICAgICAgICAgICAgICBvYV9zaXplOwo+PiAtCj4+ICAgICAgICAgdW5zaWduZWQg ICAgICAgICAgICAgICAgcGFzaWQ7Cj4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAgICAgICAg KnBhc2lkX21hcHBpbmc7Cj4+ICAgfTsKPj4gICAgIHN0cnVjdCBhbWRncHVfdm1pZF9tZ3Igewo+ PiAgICAgICAgIHN0cnVjdCBtdXRleCAgICAgICAgICAgIGxvY2s7Cj4+ICAgICAgICAgdW5zaWdu ZWQgICAgICAgICAgICAgICAgbnVtX2lkczsKPj4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAg ICAgICBpZHNfbHJ1Owo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfdm1pZCAgICAgIGlkc1tBTURH UFVfTlVNX1ZNSURdOwo+PiAgICAgICAgIGF0b21pY190ICAgICAgICAgICAgICAgIHJlc2VydmVk X3ZtaWRfbnVtOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2pvYi5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5oCj4+ IGluZGV4IDU3Y2ZlNzhhMjYyYi4uM2RiNTUzZjZhZDAxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5oCj4+IEBAIC00MiwyMyArNDIsMjAgQEAgc3RydWN0IGFt ZGdwdV9qb2Igewo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfc3luYyAgICAgIHNjaGVkX3N5bmM7 Cj4+ICAgICAgICAgc3RydWN0IGFtZGdwdV9pYiAgICAgICAgKmliczsKPj4gICAgICAgICBzdHJ1 Y3QgZG1hX2ZlbmNlICAgICAgICAqZmVuY2U7IC8qIHRoZSBodyBmZW5jZSAqLwo+PiAgICAgICAg IHVpbnQzMl90ICAgICAgICAgICAgICAgIHByZWFtYmxlX3N0YXR1czsKPj4gICAgICAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICBudW1faWJzOwo+PiAgICAgICAgIHZvaWQgICAgICAgICAgICAg ICAgICAgICpvd25lcjsKPj4gICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICB2bV9uZWVk c19mbHVzaDsKPj4gICAgICAgICB1aW50NjRfdCAgICAgICAgICAgICAgICB2bV9wZF9hZGRyOwo+ PiAgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgIHZtaWQ7Cj4+ICAgICAgICAgdW5zaWdu ZWQgICAgICAgICAgICAgICAgcGFzaWQ7Cj4+IC0gICAgICAgdWludDMyX3QgICAgICAgICAgICAg ICAgZ2RzX2Jhc2UsIGdkc19zaXplOwo+PiAtICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg IGd3c19iYXNlLCBnd3Nfc2l6ZTsKPj4gLSAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBv YV9iYXNlLCBvYV9zaXplOwo+PiAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHZyYW1f bG9zdF9jb3VudGVyOwo+PiAgICAgICAgIC8qIHVzZXIgZmVuY2UgaGFuZGxpbmcgKi8KPj4gICAg ICAgICB1aW50NjRfdCAgICAgICAgICAgICAgICB1Zl9hZGRyOwo+PiAgICAgICAgIHVpbnQ2NF90 ICAgICAgICAgICAgICAgIHVmX3NlcXVlbmNlOwo+PiAgICAgfTsKPj4gICAgIGludCBhbWRncHVf am9iX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAo+ PiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqKmpvYiwgc3RydWN0IGFt ZGdwdV92bSAqdm0pOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2ttcy5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5j Cj4+IGluZGV4IDI5YWMzODczZWViMC4uMjA5OTU0MjkwOTU0IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCj4+IEBAIC01MTcsMjcgKzUxNywyNyBAQCBzdGF0 aWMgaW50IGFtZGdwdV9pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+IHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZQo+PiAgICAgICAgIGNhc2UgQU1ER1BVX0lORk9fVklTX1ZS QU1fVVNBR0U6Cj4+ICAgICAgICAgICAgICAgICB1aTY0ID0KPj4gYW1kZ3B1X3ZyYW1fbWdyX3Zp c191c2FnZSgmYWRldi0+bW1hbi5iZGV2Lm1hbltUVE1fUExfVlJBTV0pOwo+PiAgICAgICAgICAg ICAgICAgcmV0dXJuIGNvcHlfdG9fdXNlcihvdXQsICZ1aTY0LCBtaW4oc2l6ZSwgOHUpKSA/IC1F RkFVTFQgOgo+PiAwOwo+PiAgICAgICAgIGNhc2UgQU1ER1BVX0lORk9fR1RUX1VTQUdFOgo+PiAg ICAgICAgICAgICAgICAgdWk2NCA9Cj4+IGFtZGdwdV9ndHRfbWdyX3VzYWdlKCZhZGV2LT5tbWFu LmJkZXYubWFuW1RUTV9QTF9UVF0pOwo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlfdG9f dXNlcihvdXQsICZ1aTY0LCBtaW4oc2l6ZSwgOHUpKSA/IC1FRkFVTFQgOgo+PiAwOwo+PiAgICAg ICAgIGNhc2UgQU1ER1BVX0lORk9fR0RTX0NPTkZJRzogewo+PiAgICAgICAgICAgICAgICAgc3Ry dWN0IGRybV9hbWRncHVfaW5mb19nZHMgZ2RzX2luZm87Cj4+ICAgICAgICAgICAgICAgICBtZW1z ZXQoJmdkc19pbmZvLCAwLCBzaXplb2YoZ2RzX2luZm8pKTsKPj4gLSAgICAgICAgICAgICAgIGdk c19pbmZvLmdkc19nZnhfcGFydGl0aW9uX3NpemUgPQo+PiBhZGV2LT5nZHMubWVtLmdmeF9wYXJ0 aXRpb25fc2l6ZSA+PiBBTURHUFVfR0RTX1NISUZUOwo+PiAtICAgICAgICAgICAgICAgZ2RzX2lu Zm8uY29tcHV0ZV9wYXJ0aXRpb25fc2l6ZSA9Cj4+IGFkZXYtPmdkcy5tZW0uY3NfcGFydGl0aW9u X3NpemUgPj4gQU1ER1BVX0dEU19TSElGVDsKPj4gLSAgICAgICAgICAgICAgIGdkc19pbmZvLmdk c190b3RhbF9zaXplID0gYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplID4+Cj4+IEFNREdQVV9HRFNf U0hJRlQ7Cj4+IC0gICAgICAgICAgICAgICBnZHNfaW5mby5nd3NfcGVyX2dmeF9wYXJ0aXRpb24g PQo+PiBhZGV2LT5nZHMuZ3dzLmdmeF9wYXJ0aXRpb25fc2l6ZSA+PiBBTURHUFVfR1dTX1NISUZU Owo+PiAtICAgICAgICAgICAgICAgZ2RzX2luZm8uZ3dzX3Blcl9jb21wdXRlX3BhcnRpdGlvbiA9 Cj4+IGFkZXYtPmdkcy5nd3MuY3NfcGFydGl0aW9uX3NpemUgPj4gQU1ER1BVX0dXU19TSElGVDsK Pj4gLSAgICAgICAgICAgICAgIGdkc19pbmZvLm9hX3Blcl9nZnhfcGFydGl0aW9uID0KPj4gYWRl di0+Z2RzLm9hLmdmeF9wYXJ0aXRpb25fc2l6ZSA+PiBBTURHUFVfT0FfU0hJRlQ7Cj4+IC0gICAg ICAgICAgICAgICBnZHNfaW5mby5vYV9wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+PiBhZGV2LT5n ZHMub2EuY3NfcGFydGl0aW9uX3NpemUgPj4gQU1ER1BVX09BX1NISUZUOwo+PiArICAgICAgICAg ICAgICAgZ2RzX2luZm8uZ2RzX2dmeF9wYXJ0aXRpb25fc2l6ZSA9Cj4+IGFkZXYtPmdkcy5tZW0u Z2Z4X3NpemVfcGVyX3ZtaWQ7Cj4+ICsgICAgICAgICAgICAgICBnZHNfaW5mby5jb21wdXRlX3Bh cnRpdGlvbl9zaXplID0KPj4gYWRldi0+Z2RzLm1lbS5rZmRfc2l6ZV9wZXJfdm1pZDsKPj4gKyAg ICAgICAgICAgICAgIGdkc19pbmZvLmdkc190b3RhbF9zaXplID0gYWRldi0+Z2RzLm1lbS50b3Rh bF9zaXplOwo+PiArICAgICAgICAgICAgICAgZ2RzX2luZm8uZ3dzX3Blcl9nZnhfcGFydGl0aW9u ID0KPj4gYWRldi0+Z2RzLmd3cy5nZnhfc2l6ZV9wZXJfdm1pZDsKPj4gKyAgICAgICAgICAgICAg IGdkc19pbmZvLmd3c19wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+PiBhZGV2LT5nZHMuZ3dzLmtm ZF9zaXplX3Blcl92bWlkOwo+PiArICAgICAgICAgICAgICAgZ2RzX2luZm8ub2FfcGVyX2dmeF9w YXJ0aXRpb24gPQo+PiBhZGV2LT5nZHMub2EuZ2Z4X3NpemVfcGVyX3ZtaWQ7Cj4+ICsgICAgICAg ICAgICAgICBnZHNfaW5mby5vYV9wZXJfY29tcHV0ZV9wYXJ0aXRpb24gPQo+PiBhZGV2LT5nZHMu b2Eua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+ICAgICAgICAgICAgICAgICByZXR1cm4gY29weV90b191 c2VyKG91dCwgJmdkc19pbmZvLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtaW4oKHNpemVfdClzaXplLCBzaXplb2YoZ2RzX2luZm8pKSkgPwo+PiAtRUZBVUxUIDogMDsK Pj4gICAgICAgICB9Cj4+ICAgICAgICAgY2FzZSBBTURHUFVfSU5GT19WUkFNX0dUVDogewo+PiAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9hbWRncHVfaW5mb192cmFtX2d0dCB2cmFtX2d0dDsK Pj4gICAgICAgICAgICAgICAgIHZyYW1fZ3R0LnZyYW1fc2l6ZSA9IGFkZXYtPmdtYy5yZWFsX3Zy YW1fc2l6ZSAtCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pYzY0X3JlYWQoJmFkZXYt PnZyYW1fcGluX3NpemUpOwo+PiAgICAgICAgICAgICAgICAgdnJhbV9ndHQudnJhbV9jcHVfYWNj ZXNzaWJsZV9zaXplID0KPj4gYWRldi0+Z21jLnZpc2libGVfdnJhbV9zaXplIC0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgYXRvbWljNjRfcmVhZCgmYWRldi0+dmlzaWJsZV9waW5fc2l6ZSk7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0 LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4gaW5k ZXggZGU5OTBiZGNkZDZjLi43Njc3MGE4YzI5YTUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4gQEAgLTE3OCw0MSArMTc4LDIwIEBAIHZvaWQg YW1kZ3B1X2JvX3BsYWNlbWVudF9mcm9tX2RvbWFpbihzdHJ1Y3QKPj4gYW1kZ3B1X2JvICphYm8s IHUzMiBkb21haW4pCj4+ICAgICAgICAgICAgICAgICBwbGFjZXNbY10ubHBmbiA9IDA7Cj4+ICAg ICAgICAgICAgICAgICBwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19TWVNURU07Cj4+ICAg ICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBBTURHUFVfR0VNX0NSRUFURV9DUFVfR1RUX1VTV0Mp Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExfRkxB R19XQyB8Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFRNX1BMX0ZMQUdfVU5D QUNIRUQ7Cj4+ICAgICAgICAgICAgICAgICBlbHNlCj4+ICAgICAgICAgICAgICAgICAgICAgICAg IHBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExfRkxBR19DQUNIRUQ7Cj4+ICAgICAgICAgICAgICAg ICBjKys7Cj4+ICAgICAgICAgfQo+PiAgIC0gICAgIGlmIChkb21haW4gJiBBTURHUFVfR0VNX0RP TUFJTl9HRFMpIHsKPj4gLSAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mcGZuID0gMDsKPj4gLSAg ICAgICAgICAgICAgIHBsYWNlc1tjXS5scGZuID0gMDsKPj4gLSAgICAgICAgICAgICAgIHBsYWNl c1tjXS5mbGFncyA9IFRUTV9QTF9GTEFHX1VOQ0FDSEVEIHwKPj4gQU1ER1BVX1BMX0ZMQUdfR0RT Owo+PiAtICAgICAgICAgICAgICAgYysrOwo+PiAtICAgICAgIH0KPj4gLQo+PiAtICAgICAgIGlm IChkb21haW4gJiBBTURHUFVfR0VNX0RPTUFJTl9HV1MpIHsKPj4gLSAgICAgICAgICAgICAgIHBs YWNlc1tjXS5mcGZuID0gMDsKPj4gLSAgICAgICAgICAgICAgIHBsYWNlc1tjXS5scGZuID0gMDsK Pj4gLSAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mbGFncyA9IFRUTV9QTF9GTEFHX1VOQ0FDSEVE IHwKPj4gQU1ER1BVX1BMX0ZMQUdfR1dTOwo+PiAtICAgICAgICAgICAgICAgYysrOwo+PiAtICAg ICAgIH0KPj4gLQo+PiAtICAgICAgIGlmIChkb21haW4gJiBBTURHUFVfR0VNX0RPTUFJTl9PQSkg ewo+PiAtICAgICAgICAgICAgICAgcGxhY2VzW2NdLmZwZm4gPSAwOwo+PiAtICAgICAgICAgICAg ICAgcGxhY2VzW2NdLmxwZm4gPSAwOwo+PiAtICAgICAgICAgICAgICAgcGxhY2VzW2NdLmZsYWdz ID0gVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfAo+PiBBTURHUFVfUExfRkxBR19PQTsKPj4gLSAgICAg ICAgICAgICAgIGMrKzsKPj4gLSAgICAgICB9Cj4+IC0KPj4gICAgICAgICBpZiAoIWMpIHsKPj4g ICAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mcGZuID0gMDsKPj4gICAgICAgICAgICAgICAgIHBs YWNlc1tjXS5scGZuID0gMDsKPj4gICAgICAgICAgICAgICAgIHBsYWNlc1tjXS5mbGFncyA9IFRU TV9QTF9NQVNLX0NBQ0hJTkcgfAo+PiBUVE1fUExfRkxBR19TWVNURU07Cj4+ICAgICAgICAgICAg ICAgICBjKys7Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIEJVR19PTihjID49IEFNREdQVV9CT19N QVhfUExBQ0VNRU5UUyk7Cj4+ICAgICAgICAgcGxhY2VtZW50LT5udW1fcGxhY2VtZW50ID0gYzsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu aAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+PiBpbmRl eCA5MDdmZGY0NmQ4OTUuLmUwODk5NjRjYmNiNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+PiBAQCAtMTIwLDI2ICsxMjAsMjAgQEAgc3RhdGlj IGlubGluZSBzdHJ1Y3QgYW1kZ3B1X2JvCj4+ICp0dG1fdG9fYW1kZ3B1X2JvKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqdGJvKQo+PiAgICAqLwo+PiAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg YW1kZ3B1X21lbV90eXBlX3RvX2RvbWFpbih1MzIgbWVtX3R5cGUpCj4+ICAgewo+PiAgICAgICAg IHN3aXRjaCAobWVtX3R5cGUpIHsKPj4gICAgICAgICBjYXNlIFRUTV9QTF9WUkFNOgo+PiAgICAg ICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9NQUlOX1ZSQU07Cj4+ICAgICAgICAgY2Fz ZSBUVE1fUExfVFQ6Cj4+ICAgICAgICAgICAgICAgICByZXR1cm4gQU1ER1BVX0dFTV9ET01BSU5f R1RUOwo+PiAgICAgICAgIGNhc2UgVFRNX1BMX1NZU1RFTToKPj4gICAgICAgICAgICAgICAgIHJl dHVybiBBTURHUFVfR0VNX0RPTUFJTl9DUFU7Cj4+IC0gICAgICAgY2FzZSBBTURHUFVfUExfR0RT Ogo+PiAtICAgICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9NQUlOX0dEUzsKPj4gLSAg ICAgICBjYXNlIEFNREdQVV9QTF9HV1M6Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gQU1ER1BV X0dFTV9ET01BSU5fR1dTOwo+PiAtICAgICAgIGNhc2UgQU1ER1BVX1BMX09BOgo+PiAtICAgICAg ICAgICAgICAgcmV0dXJuIEFNREdQVV9HRU1fRE9NQUlOX09BOwo+PiAgICAgICAgIGRlZmF1bHQ6 Cj4+ICAgICAgICAgICAgICAgICBicmVhazsKPj4gICAgICAgICB9Cj4+ICAgICAgICAgcmV0dXJu IDA7Cj4+ICAgfQo+PiAgICAgLyoqCj4+ICAgICogYW1kZ3B1X2JvX3Jlc2VydmUgLSByZXNlcnZl IGJvCj4+ICAgICogQGJvOiAgICAgICAgICAgICAgIGJvIHN0cnVjdHVyZQo+PiAgICAqIEBub19p bnRyOiAgZG9uJ3QgcmV0dXJuIC1FUkVTVEFSVFNZUyBvbiBwZW5kaW5nIHNpZ25hbAo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+PiBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPj4gaW5kZXggOWNjMjM5OTY4 ZTQwLi5mNmVhOTYwNGU2MTEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9yaW5nLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+PiBAQCAtMTMwLDI0ICsxMzAsMjAgQEAgc3RydWN0IGFtZGdwdV9yaW5nX2Z1 bmNzIHsKPj4gICAgICAgICAvKiBjb21tYW5kIGVtaXQgZnVuY3Rpb25zICovCj4+ICAgICAgICAg dm9pZCAoKmVtaXRfaWIpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9pYiAqaWIsCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIHZtaWQsIGJvb2wgY3R4X3N3aXRjaCk7Cj4+ICAgICAgICAgdm9pZCAoKmVt aXRfZmVuY2UpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDY0X3QgYWRkciwKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2VxLCB1bnNpZ25lZCBmbGFncyk7Cj4+ ICAgICAgICAgdm9pZCAoKmVtaXRfcGlwZWxpbmVfc3luYykoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nKTsKPj4gICAgICAgICB2b2lkICgqZW1pdF92bV9mbHVzaCkoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1bnNpZ25lZCB2bWlkLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCBwZF9hZGRyKTsKPj4gICAgICAgICB2b2lkICgqZW1pdF9oZHBfZmx1c2gpKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZyk7Cj4+IC0gICAgICAgdm9pZCAoKmVtaXRfZ2RzX3N3aXRjaCko c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCB2bWlkLAo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGdkc19iYXNlLCB1aW50MzJfdCBnZHNfc2l6ZSwK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBnd3NfYmFzZSwgdWlu dDMyX3QgZ3dzX3NpemUsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3Qgb2FfYmFzZSwgdWludDMyX3Qgb2Ffc2l6ZSk7Cj4+ICAgICAgICAgLyogdGVzdGluZyBmdW5j dGlvbnMgKi8KPj4gICAgICAgICBpbnQgKCp0ZXN0X3JpbmcpKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZyk7Cj4+ICAgICAgICAgaW50ICgqdGVzdF9pYikoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LCBsb25nIHRpbWVvdXQpOwo+PiAgICAgICAgIC8qIGluc2VydCBOT1AgcGFja2V0cyAqLwo+PiAg ICAgICAgIHZvaWQgKCppbnNlcnRfbm9wKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQz Ml90IGNvdW50KTsKPj4gICAgICAgICB2b2lkICgqaW5zZXJ0X3N0YXJ0KShzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcpOwo+PiAgICAgICAgIHZvaWQgKCppbnNlcnRfZW5kKShzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcpOwo+PiAgICAgICAgIC8qIHBhZCB0aGUgaW5kaXJlY3QgYnVmZmVyIHRvIHRo ZSBuZWNlc3NhcnkgbnVtYmVyIG9mIGR3ICovCj4+ICAgICAgICAgdm9pZCAoKnBhZF9pYikoc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2liICppYik7Cj4+ICAgICAgICAg dW5zaWduZWQgKCppbml0X2NvbmRfZXhlYykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4g QEAgLTIyNiwyMSArMjIyLDIwIEBAIHN0cnVjdCBhbWRncHVfcmluZyB7Cj4+ICAgI2RlZmluZSBh bWRncHVfcmluZ19wYXRjaF9jc19pbl9wbGFjZShyLCBwLCBpYikKPj4gKChyKS0+ZnVuY3MtPnBh dGNoX2NzX2luX3BsYWNlKChwKSwgKGliKSkpCj4+ICAgI2RlZmluZSBhbWRncHVfcmluZ190ZXN0 X3JpbmcocikgKHIpLT5mdW5jcy0+dGVzdF9yaW5nKChyKSkKPj4gICAjZGVmaW5lIGFtZGdwdV9y aW5nX3Rlc3RfaWIociwgdCkgKHIpLT5mdW5jcy0+dGVzdF9pYigociksICh0KSkKPj4gICAjZGVm aW5lIGFtZGdwdV9yaW5nX2dldF9ycHRyKHIpIChyKS0+ZnVuY3MtPmdldF9ycHRyKChyKSkKPj4g ICAjZGVmaW5lIGFtZGdwdV9yaW5nX2dldF93cHRyKHIpIChyKS0+ZnVuY3MtPmdldF93cHRyKChy KSkKPj4gICAjZGVmaW5lIGFtZGdwdV9yaW5nX3NldF93cHRyKHIpIChyKS0+ZnVuY3MtPnNldF93 cHRyKChyKSkKPj4gICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfaWIociwgaWIsIHZtaWQsIGMp IChyKS0+ZnVuY3MtPmVtaXRfaWIoKHIpLAo+PiAoaWIpLCAodm1pZCksIChjKSkKPj4gICAjZGVm aW5lIGFtZGdwdV9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYyhyKQo+PiAociktPmZ1bmNzLT5lbWl0 X3BpcGVsaW5lX3N5bmMoKHIpKQo+PiAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF92bV9mbHVz aChyLCB2bWlkLCBhZGRyKQo+PiAociktPmZ1bmNzLT5lbWl0X3ZtX2ZsdXNoKChyKSwgKHZtaWQp LCAoYWRkcikpCj4+ICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2ZlbmNlKHIsIGFkZHIsIHNl cSwgZmxhZ3MpCj4+IChyKS0+ZnVuY3MtPmVtaXRfZmVuY2UoKHIpLCAoYWRkciksIChzZXEpLCAo ZmxhZ3MpKQo+PiAtI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2dkc19zd2l0Y2gociwgdiwgZGIs IGRzLCB3Yiwgd3MsIGFiLCBhcykKPj4gKHIpLT5mdW5jcy0+ZW1pdF9nZHNfc3dpdGNoKChyKSwg KHYpLCAoZGIpLCAoZHMpLCAod2IpLCAod3MpLCAoYWIpLCAoYXMpKQo+PiAgICNkZWZpbmUgYW1k Z3B1X3JpbmdfZW1pdF9oZHBfZmx1c2gocikgKHIpLT5mdW5jcy0+ZW1pdF9oZHBfZmx1c2goKHIp KQo+PiAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9zd2l0Y2hfYnVmZmVyKHIpCj4+IChyKS0+ ZnVuY3MtPmVtaXRfc3dpdGNoX2J1ZmZlcigocikpCj4+ICAgI2RlZmluZSBhbWRncHVfcmluZ19l bWl0X2NudHhjbnRsKHIsIGQpIChyKS0+ZnVuY3MtPmVtaXRfY250eGNudGwoKHIpLAo+PiAoZCkp Cj4+ICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JyZWcociwgZCkgKHIpLT5mdW5jcy0+ZW1p dF9ycmVnKChyKSwgKGQpKQo+PiAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF93cmVnKHIsIGQs IHYpIChyKS0+ZnVuY3MtPmVtaXRfd3JlZygociksIChkKSwKPj4gKHYpKQo+PiAgICNkZWZpbmUg YW1kZ3B1X3JpbmdfZW1pdF9yZWdfd2FpdChyLCBkLCB2LCBtKQo+PiAociktPmZ1bmNzLT5lbWl0 X3JlZ193YWl0KChyKSwgKGQpLCAodiksIChtKSkKPj4gICAjZGVmaW5lIGFtZGdwdV9yaW5nX2Vt aXRfcmVnX3dyaXRlX3JlZ193YWl0KHIsIGQwLCBkMSwgdiwgbSkKPj4gKHIpLT5mdW5jcy0+ZW1p dF9yZWdfd3JpdGVfcmVnX3dhaXQoKHIpLCAoZDApLCAoZDEpLCAodiksIChtKSkKPj4gICAjZGVm aW5lIGFtZGdwdV9yaW5nX2VtaXRfdG16KHIsIGIpIChyKS0+ZnVuY3MtPmVtaXRfdG16KChyKSwg KGIpKQo+PiAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfcGFkX2liKHIsIGliKSAoKHIpLT5mdW5jcy0+ cGFkX2liKChyKSwgKGliKSkpCj4+ICAgI2RlZmluZSBhbWRncHVfcmluZ19pbml0X2NvbmRfZXhl YyhyKSAociktPmZ1bmNzLT5pbml0X2NvbmRfZXhlYygocikpCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4gaW5kZXggOGExNThlZTkyMmY3Li4yY2M2MmIwZTdl YTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0u Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4gQEAg LTE5NSwzMCArMTk1LDIwIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2luaXRfbWVtX3R5cGUoc3RydWN0 IHR0bV9ib19kZXZpY2UKPj4gKmJkZXYsIHVpbnQzMl90IHR5cGUsCj4+ICAgICAgICAgICAgICAg ICBicmVhazsKPj4gICAgICAgICBjYXNlIFRUTV9QTF9WUkFNOgo+PiAgICAgICAgICAgICAgICAg LyogIk9uLWNhcmQiIHZpZGVvIHJhbSAqLwo+PiAgICAgICAgICAgICAgICAgbWFuLT5mdW5jID0g JmFtZGdwdV92cmFtX21ncl9mdW5jOwo+PiAgICAgICAgICAgICAgICAgbWFuLT5ncHVfb2Zmc2V0 ID0gYWRldi0+Z21jLnZyYW1fc3RhcnQ7Cj4+ICAgICAgICAgICAgICAgICBtYW4tPmZsYWdzID0g VFRNX01FTVRZUEVfRkxBR19GSVhFRCB8Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VFRNX01FTVRZUEVfRkxBR19NQVBQQUJMRTsKPj4gICAgICAgICAgICAgICAgIG1hbi0+YXZhaWxh YmxlX2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNBQ0hFRCB8Cj4+IFRUTV9QTF9GTEFHX1dDOwo+ PiAgICAgICAgICAgICAgICAgbWFuLT5kZWZhdWx0X2NhY2hpbmcgPSBUVE1fUExfRkxBR19XQzsK Pj4gICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAtICAgICAgIGNhc2UgQU1ER1BVX1BMX0dEUzoK Pj4gLSAgICAgICBjYXNlIEFNREdQVV9QTF9HV1M6Cj4+IC0gICAgICAgY2FzZSBBTURHUFVfUExf T0E6Cj4+IC0gICAgICAgICAgICAgICAvKiBPbi1jaGlwIEdEUyBtZW1vcnkqLwo+PiAtICAgICAg ICAgICAgICAgbWFuLT5mdW5jID0gJnR0bV9ib19tYW5hZ2VyX2Z1bmM7Cj4+IC0gICAgICAgICAg ICAgICBtYW4tPmdwdV9vZmZzZXQgPSAwOwo+PiAtICAgICAgICAgICAgICAgbWFuLT5mbGFncyA9 IFRUTV9NRU1UWVBFX0ZMQUdfRklYRUQgfAo+PiBUVE1fTUVNVFlQRV9GTEFHX0NNQTsKPj4gLSAg ICAgICAgICAgICAgIG1hbi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfRkxBR19VTkNBQ0hF RDsKPj4gLSAgICAgICAgICAgICAgIG1hbi0+ZGVmYXVsdF9jYWNoaW5nID0gVFRNX1BMX0ZMQUdf VU5DQUNIRUQ7Cj4+IC0gICAgICAgICAgICAgICBicmVhazsKPj4gICAgICAgICBkZWZhdWx0Ogo+ PiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBtZW1vcnkgdHlwZSAldVxu IiwgKHVuc2lnbmVkKXR5cGUpOwo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ ICAgICAgICAgfQo+PiAgICAgICAgIHJldHVybiAwOwo+PiAgIH0KPj4gICAgIC8qKgo+PiAgICAq IGFtZGdwdV9ldmljdF9mbGFncyAtIENvbXB1dGUgcGxhY2VtZW50IGZsYWdzCj4+ICAgICoKPj4g QEAgLTEwMzksMjUgKzEwMjksMjAgQEAgc3RhdGljIGludCBhbWRncHVfdHRtX2JhY2tlbmRfYmlu ZChzdHJ1Y3QgdHRtX3R0Cj4+ICp0dG0sCj4+ICAgICAgICAgICAgICAgICBpZiAocikgewo+PiAg ICAgICAgICAgICAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gdXNlcnB0clxu Iik7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAgICAgICAgICAgICAg ICAgfQo+PiAgICAgICAgIH0KPj4gICAgICAgICBpZiAoIXR0bS0+bnVtX3BhZ2VzKSB7Cj4+ICAg ICAgICAgICAgICAgICBXQVJOKDEsICJub3RoaW5nIHRvIGJpbmQgJWx1IHBhZ2VzIGZvciBtcmVn ICVwIGJhY2sKPj4gJXAhXG4iLAo+PiAgICAgICAgICAgICAgICAgICAgICB0dG0tPm51bV9wYWdl cywgYm9fbWVtLCB0dG0pOwo+PiAgICAgICAgIH0KPj4gICAtICAgICBpZiAoYm9fbWVtLT5tZW1f dHlwZSA9PSBBTURHUFVfUExfR0RTIHx8Cj4+IC0gICAgICAgICAgIGJvX21lbS0+bWVtX3R5cGUg PT0gQU1ER1BVX1BMX0dXUyB8fAo+PiAtICAgICAgICAgICBib19tZW0tPm1lbV90eXBlID09IEFN REdQVV9QTF9PQSkKPj4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiAtCj4+ICAg ICAgICAgaWYgKCFhbWRncHVfZ3R0X21ncl9oYXNfZ2FydF9hZGRyKGJvX21lbSkpIHsKPj4gICAg ICAgICAgICAgICAgIGd0dC0+b2Zmc2V0ID0gQU1ER1BVX0JPX0lOVkFMSURfT0ZGU0VUOwo+PiAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICAgICAgICAgfQo+PiAgICAgICAgIC8qIGNvbXB1 dGUgUFRFIGZsYWdzIHJlbGV2YW50IHRvIHRoaXMgQk8gbWVtb3J5ICovCj4+ICAgICAgICAgZmxh Z3MgPSBhbWRncHVfdHRtX3R0X3B0ZV9mbGFncyhhZGV2LCB0dG0sIGJvX21lbSk7Cj4+ICAgICAg ICAgLyogYmluZCBwYWdlcyBpbnRvIEdBUlQgcGFnZSB0YWJsZXMgKi8KPj4gICAgICAgICBndHQt Pm9mZnNldCA9ICgodTY0KWJvX21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVCkgLQo+PiBhZGV2LT5n bWMuZ2FydF9zdGFydDsKPj4gQEAgLTE4MTgsNjAgKzE4MDMsMjAgQEAgaW50IGFtZGdwdV90dG1f aW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gICAgICAgICAvKiBJbml0aWFsaXpl IEdUVCBtZW1vcnkgcG9vbCAqLwo+PiAgICAgICAgIHIgPSB0dG1fYm9faW5pdF9tbSgmYWRldi0+ bW1hbi5iZGV2LCBUVE1fUExfVFQsIGd0dF9zaXplID4+Cj4+IFBBR0VfU0hJRlQpOwo+PiAgICAg ICAgIGlmIChyKSB7Cj4+ICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCBpbml0aWFs aXppbmcgR1RUIGhlYXAuXG4iKTsKPj4gICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAgICAg ICAgIH0KPj4gICAgICAgICBEUk1fSU5GTygiYW1kZ3B1OiAldU0gb2YgR1RUIG1lbW9yeSByZWFk eS5cbiIsCj4+ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKShndHRfc2l6ZSAvICgxMDI0ICog MTAyNCkpKTsKPj4gICAtICAgICAvKiBJbml0aWFsaXplIHZhcmlvdXMgb24tY2hpcCBtZW1vcnkg cG9vbHMgKi8KPj4gLSAgICAgICBhZGV2LT5nZHMubWVtLnRvdGFsX3NpemUgPSBhZGV2LT5nZHMu bWVtLnRvdGFsX3NpemUgPDwKPj4gQU1ER1BVX0dEU19TSElGVDsKPj4gLSAgICAgICBhZGV2LT5n ZHMubWVtLmdmeF9wYXJ0aXRpb25fc2l6ZSA9Cj4+IGFkZXYtPmdkcy5tZW0uZ2Z4X3BhcnRpdGlv bl9zaXplIDw8IEFNREdQVV9HRFNfU0hJRlQ7Cj4+IC0gICAgICAgYWRldi0+Z2RzLm1lbS5jc19w YXJ0aXRpb25fc2l6ZSA9IGFkZXYtPmdkcy5tZW0uY3NfcGFydGl0aW9uX3NpemUKPj4gPDwgQU1E R1BVX0dEU19TSElGVDsKPj4gLSAgICAgICBhZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUgPSBhZGV2 LT5nZHMuZ3dzLnRvdGFsX3NpemUgPDwKPj4gQU1ER1BVX0dXU19TSElGVDsKPj4gLSAgICAgICBh ZGV2LT5nZHMuZ3dzLmdmeF9wYXJ0aXRpb25fc2l6ZSA9Cj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3Bh cnRpdGlvbl9zaXplIDw8IEFNREdQVV9HV1NfU0hJRlQ7Cj4+IC0gICAgICAgYWRldi0+Z2RzLmd3 cy5jc19wYXJ0aXRpb25fc2l6ZSA9IGFkZXYtPmdkcy5nd3MuY3NfcGFydGl0aW9uX3NpemUKPj4g PDwgQU1ER1BVX0dXU19TSElGVDsKPj4gLSAgICAgICBhZGV2LT5nZHMub2EudG90YWxfc2l6ZSA9 IGFkZXYtPmdkcy5vYS50b3RhbF9zaXplIDw8Cj4+IEFNREdQVV9PQV9TSElGVDsKPj4gLSAgICAg ICBhZGV2LT5nZHMub2EuZ2Z4X3BhcnRpdGlvbl9zaXplID0gYWRldi0+Z2RzLm9hLmdmeF9wYXJ0 aXRpb25fc2l6ZQo+PiA8PCBBTURHUFVfT0FfU0hJRlQ7Cj4+IC0gICAgICAgYWRldi0+Z2RzLm9h LmNzX3BhcnRpdGlvbl9zaXplID0gYWRldi0+Z2RzLm9hLmNzX3BhcnRpdGlvbl9zaXplIDw8Cj4+ IEFNREdQVV9PQV9TSElGVDsKPj4gLSAgICAgICAvKiBHRFMgTWVtb3J5ICovCj4+IC0gICAgICAg aWYgKGFkZXYtPmdkcy5tZW0udG90YWxfc2l6ZSkgewo+PiAtICAgICAgICAgICAgICAgciA9IHR0 bV9ib19pbml0X21tKCZhZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9HRFMsCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplID4+Cj4+ IFBBR0VfU0hJRlQpOwo+PiAtICAgICAgICAgICAgICAgaWYgKHIpIHsKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgaW5pdGlhbGl6aW5nIEdEUyBoZWFwLlxuIik7 Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtICAgICAgICAgICAgICAg fQo+PiAtICAgICAgIH0KPj4gLQo+PiAtICAgICAgIC8qIEdXUyAqLwo+PiAtICAgICAgIGlmIChh ZGV2LT5nZHMuZ3dzLnRvdGFsX3NpemUpIHsKPj4gLSAgICAgICAgICAgICAgIHIgPSB0dG1fYm9f aW5pdF9tbSgmYWRldi0+bW1hbi5iZGV2LCBBTURHUFVfUExfR1dTLAo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPmdkcy5nd3MudG90YWxfc2l6ZSA+Pgo+PiBQQUdF X1NISUZUKTsKPj4gLSAgICAgICAgICAgICAgIGlmIChyKSB7Cj4+IC0gICAgICAgICAgICAgICAg ICAgICAgIERSTV9FUlJPUigiRmFpbGVkIGluaXRpYWxpemluZyBnd3MgaGVhcC5cbiIpOwo+PiAt ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4gLSAgICAgICAgICAgICAgIH0KPj4g LSAgICAgICB9Cj4+IC0KPj4gLSAgICAgICAvKiBPQSAqLwo+PiAtICAgICAgIGlmIChhZGV2LT5n ZHMub2EudG90YWxfc2l6ZSkgewo+PiAtICAgICAgICAgICAgICAgciA9IHR0bV9ib19pbml0X21t KCZhZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9PQSwKPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhZGV2LT5nZHMub2EudG90YWxfc2l6ZSA+PiBQQUdFX1NISUZUKTsKPj4g LSAgICAgICAgICAgICAgIGlmIChyKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgIERSTV9F UlJPUigiRmFpbGVkIGluaXRpYWxpemluZyBvYSBoZWFwLlxuIik7Cj4+IC0gICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiByOwo+PiAtICAgICAgICAgICAgICAgfQo+PiAtICAgICAgIH0KPj4g LQo+PiAgICAgICAgIC8qIFJlZ2lzdGVyIGRlYnVnZnMgZW50cmllcyBmb3IgYW1kZ3B1X3R0bSAq Lwo+PiAgICAgICAgIHIgPSBhbWRncHVfdHRtX2RlYnVnZnNfaW5pdChhZGV2KTsKPj4gICAgICAg ICBpZiAocikgewo+PiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdCBk ZWJ1Z2ZzXG4iKTsKPj4gICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAgICAgICAgIH0KPj4g ICAgICAgICByZXR1cm4gMDsKPj4gICB9Cj4+ICAgICAvKioKPj4gQEAgLTE4OTIsMjYgKzE4Mzcs MjAgQEAgdm9pZCBhbWRncHVfdHRtX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ ICAgICAgICAgICAgICAgICByZXR1cm47Cj4+ICAgICAgICAgYW1kZ3B1X3R0bV9kZWJ1Z2ZzX2Zp bmkoYWRldik7Cj4+ICAgICAgICAgYW1kZ3B1X3R0bV9md19yZXNlcnZlX3ZyYW1fZmluaShhZGV2 KTsKPj4gICAgICAgICBpZiAoYWRldi0+bW1hbi5hcGVyX2Jhc2Vfa2FkZHIpCj4+ICAgICAgICAg ICAgICAgICBpb3VubWFwKGFkZXYtPm1tYW4uYXBlcl9iYXNlX2thZGRyKTsKPj4gICAgICAgICBh ZGV2LT5tbWFuLmFwZXJfYmFzZV9rYWRkciA9IE5VTEw7Cj4+ICAgICAgICAgdHRtX2JvX2NsZWFu X21tKCZhZGV2LT5tbWFuLmJkZXYsIFRUTV9QTF9WUkFNKTsKPj4gICAgICAgICB0dG1fYm9fY2xl YW5fbW0oJmFkZXYtPm1tYW4uYmRldiwgVFRNX1BMX1RUKTsKPj4gLSAgICAgICBpZiAoYWRldi0+ Z2RzLm1lbS50b3RhbF9zaXplKQo+PiAtICAgICAgICAgICAgICAgdHRtX2JvX2NsZWFuX21tKCZh ZGV2LT5tbWFuLmJkZXYsIEFNREdQVV9QTF9HRFMpOwo+PiAtICAgICAgIGlmIChhZGV2LT5nZHMu Z3dzLnRvdGFsX3NpemUpCj4+IC0gICAgICAgICAgICAgICB0dG1fYm9fY2xlYW5fbW0oJmFkZXYt Pm1tYW4uYmRldiwgQU1ER1BVX1BMX0dXUyk7Cj4+IC0gICAgICAgaWYgKGFkZXYtPmdkcy5vYS50 b3RhbF9zaXplKQo+PiAtICAgICAgICAgICAgICAgdHRtX2JvX2NsZWFuX21tKCZhZGV2LT5tbWFu LmJkZXYsIEFNREdQVV9QTF9PQSk7Cj4+ICAgICAgICAgdHRtX2JvX2RldmljZV9yZWxlYXNlKCZh ZGV2LT5tbWFuLmJkZXYpOwo+PiAgICAgICAgIGFtZGdwdV90dG1fZ2xvYmFsX2ZpbmkoYWRldik7 Cj4+ICAgICAgICAgYWRldi0+bW1hbi5pbml0aWFsaXplZCA9IGZhbHNlOwo+PiAgICAgICAgIERS TV9JTkZPKCJhbWRncHU6IHR0bSBmaW5hbGl6ZWRcbiIpOwo+PiAgIH0KPj4gICAgIC8qKgo+PiAg ICAqIGFtZGdwdV90dG1fc2V0X2J1ZmZlcl9mdW5jc19zdGF0dXMgLSBlbmFibGUvZGlzYWJsZSB1 c2Ugb2YgYnVmZmVyCj4+IGZ1bmN0aW9ucwo+PiAgICAqCj4+ICAgICogQGFkZXY6IGFtZGdwdV9k ZXZpY2UgcG9pbnRlcgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3R0bS5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5o Cj4+IGluZGV4IGZlOGYyNzZlOTgxMS4uMDQ1NTdhMzgyYjE5IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+IEBAIC0yMCwyOCArMjAsMjAgQEAKPj4gICAg KiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4+ICAgICoKPj4gICAgKi8KPj4gICAg ICNpZm5kZWYgX19BTURHUFVfVFRNX0hfXwo+PiAgICNkZWZpbmUgX19BTURHUFVfVFRNX0hfXwo+ PiAgICAgI2luY2x1ZGUgImFtZGdwdS5oIgo+PiAgICNpbmNsdWRlIDxkcm0vZ3B1X3NjaGVkdWxl ci5oPgo+PiAgIC0jZGVmaW5lIEFNREdQVV9QTF9HRFMgICAgICAgICAgICAgICAgKFRUTV9QTF9Q UklWICsgMCkKPj4gLSNkZWZpbmUgQU1ER1BVX1BMX0dXUyAgICAgICAgICAoVFRNX1BMX1BSSVYg KyAxKQo+PiAtI2RlZmluZSBBTURHUFVfUExfT0EgICAgICAgICAgIChUVE1fUExfUFJJViArIDIp Cj4+IC0KPj4gLSNkZWZpbmUgQU1ER1BVX1BMX0ZMQUdfR0RTICAgICAgICAgICAgIChUVE1fUExf RkxBR19QUklWIDw8IDApCj4+IC0jZGVmaW5lIEFNREdQVV9QTF9GTEFHX0dXUyAgICAgICAgICAg ICAoVFRNX1BMX0ZMQUdfUFJJViA8PCAxKQo+PiAtI2RlZmluZSBBTURHUFVfUExfRkxBR19PQSAg ICAgICAgICAgICAgKFRUTV9QTF9GTEFHX1BSSVYgPDwgMikKPj4gLQo+PiAgICNkZWZpbmUgQU1E R1BVX0dUVF9NQVhfVFJBTlNGRVJfU0laRSAgNTEyCj4+ICAgI2RlZmluZSBBTURHUFVfR1RUX05V TV9UUkFOU0ZFUl9XSU5ET1dTICAgICAgIDIKPj4gICAgIHN0cnVjdCBhbWRncHVfbW1hbiB7Cj4+ ICAgICAgICAgc3RydWN0IHR0bV9ib19nbG9iYWxfcmVmICAgICAgICBib19nbG9iYWxfcmVmOwo+ PiAgICAgICAgIHN0cnVjdCBkcm1fZ2xvYmFsX3JlZmVyZW5jZSAgICAgbWVtX2dsb2JhbF9yZWY7 Cj4+ICAgICAgICAgc3RydWN0IHR0bV9ib19kZXZpY2UgICAgICAgICAgICBiZGV2Owo+PiAgICAg ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX2dsb2JhbF9yZWZlcmVuY2Vk Owo+PiAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ7 Cj4+ICAgICAgICAgdm9pZCBfX2lvbWVtICAgICAgICAgICAgICAgICAgICAqYXBlcl9iYXNlX2th ZGRyOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiBpbmRleCBi ZTE2NTlmZWRmOTQuLmM2NmYxYzZmMGJhOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmMKPj4gQEAgLTgwMyw4NiArODAzLDY5IEBAIHZvaWQgYW1kZ3B1X3ZtX2No ZWNrX2NvbXB1dGVfYnVnKHN0cnVjdAo+PiBhbWRncHVfZGV2aWNlICphZGV2KQo+PiAgICAqIFJl dHVybnM6Cj4+ICAgICogVHJ1ZSBpZiBzeW5jIGlzIG5lZWRlZC4KPj4gICAgKi8KPj4gICBib29s IGFtZGdwdV92bV9uZWVkX3BpcGVsaW5lX3N5bmMoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9qb2IgKmpv YikKPj4gICB7Cj4+ICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5h ZGV2Owo+PiAgICAgICAgIHVuc2lnbmVkIHZtaHViID0gcmluZy0+ZnVuY3MtPnZtaHViOwo+PiAg ICAgICAgIHN0cnVjdCBhbWRncHVfdm1pZF9tZ3IgKmlkX21nciA9ICZhZGV2LT52bV9tYW5hZ2Vy LmlkX21nclt2bWh1Yl07Cj4+ICAgICAgICAgc3RydWN0IGFtZGdwdV92bWlkICppZDsKPj4gLSAg ICAgICBib29sIGdkc19zd2l0Y2hfbmVlZGVkOwo+PiAgICAgICAgIGJvb2wgdm1fZmx1c2hfbmVl ZGVkID0gam9iLT52bV9uZWVkc19mbHVzaCB8fAo+PiByaW5nLT5oYXNfY29tcHV0ZV92bV9idWc7 Cj4+ICAgICAgICAgaWYgKGpvYi0+dm1pZCA9PSAwKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwo+PiAgICAgICAgIGlkID0gJmlkX21nci0+aWRzW2pvYi0+dm1pZF07Cj4+IC0gICAg ICAgZ2RzX3N3aXRjaF9uZWVkZWQgPSByaW5nLT5mdW5jcy0+ZW1pdF9nZHNfc3dpdGNoICYmICgK Pj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfYmFzZSAhPSBqb2ItPmdkc19iYXNlIHx8Cj4+IC0g ICAgICAgICAgICAgICBpZC0+Z2RzX3NpemUgIT0gam9iLT5nZHNfc2l6ZSB8fAo+PiAtICAgICAg ICAgICAgICAgaWQtPmd3c19iYXNlICE9IGpvYi0+Z3dzX2Jhc2UgfHwKPj4gLSAgICAgICAgICAg ICAgIGlkLT5nd3Nfc2l6ZSAhPSBqb2ItPmd3c19zaXplIHx8Cj4+IC0gICAgICAgICAgICAgICBp ZC0+b2FfYmFzZSAhPSBqb2ItPm9hX2Jhc2UgfHwKPj4gLSAgICAgICAgICAgICAgIGlkLT5vYV9z aXplICE9IGpvYi0+b2Ffc2l6ZSk7Cj4+ICAgICAgICAgaWYgKGFtZGdwdV92bWlkX2hhZF9ncHVf cmVzZXQoYWRldiwgaWQpKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4+ICAgLSAg ICAgcmV0dXJuIHZtX2ZsdXNoX25lZWRlZCB8fCBnZHNfc3dpdGNoX25lZWRlZDsKPj4gKyAgICAg ICByZXR1cm4gdm1fZmx1c2hfbmVlZGVkOwo+PiAgIH0KPj4gICAgIC8qKgo+PiAgICAqIGFtZGdw dV92bV9mbHVzaCAtIGhhcmR3YXJlIGZsdXNoIHRoZSB2bQo+PiAgICAqCj4+ICAgICogQHJpbmc6 IHJpbmcgdG8gdXNlIGZvciBmbHVzaAo+PiAgICAqIEBqb2I6ICByZWxhdGVkIGpvYgo+PiAgICAq IEBuZWVkX3BpcGVfc3luYzogaXMgcGlwZSBzeW5jIG5lZWRlZAo+PiAgICAqCj4+ICAgICogRW1p dCBhIFZNIGZsdXNoIHdoZW4gaXQgaXMgbmVjZXNzYXJ5Lgo+PiAgICAqCj4+ICAgICogUmV0dXJu czoKPj4gICAgKiAwIG9uIHN1Y2Nlc3MsIGVycm5vIG90aGVyd2lzZS4KPj4gICAgKi8KPj4gICBp bnQgYW1kZ3B1X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdw dV9qb2IgKmpvYiwKPj4gYm9vbCBuZWVkX3BpcGVfc3luYykKPj4gICB7Cj4+ICAgICAgICAgc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiAgICAgICAgIHVuc2lnbmVk IHZtaHViID0gcmluZy0+ZnVuY3MtPnZtaHViOwo+PiAgICAgICAgIHN0cnVjdCBhbWRncHVfdm1p ZF9tZ3IgKmlkX21nciA9ICZhZGV2LT52bV9tYW5hZ2VyLmlkX21nclt2bWh1Yl07Cj4+ICAgICAg ICAgc3RydWN0IGFtZGdwdV92bWlkICppZCA9ICZpZF9tZ3ItPmlkc1tqb2ItPnZtaWRdOwo+PiAt ICAgICAgIGJvb2wgZ2RzX3N3aXRjaF9uZWVkZWQgPSByaW5nLT5mdW5jcy0+ZW1pdF9nZHNfc3dp dGNoICYmICgKPj4gLSAgICAgICAgICAgICAgIGlkLT5nZHNfYmFzZSAhPSBqb2ItPmdkc19iYXNl IHx8Cj4+IC0gICAgICAgICAgICAgICBpZC0+Z2RzX3NpemUgIT0gam9iLT5nZHNfc2l6ZSB8fAo+ PiAtICAgICAgICAgICAgICAgaWQtPmd3c19iYXNlICE9IGpvYi0+Z3dzX2Jhc2UgfHwKPj4gLSAg ICAgICAgICAgICAgIGlkLT5nd3Nfc2l6ZSAhPSBqb2ItPmd3c19zaXplIHx8Cj4+IC0gICAgICAg ICAgICAgICBpZC0+b2FfYmFzZSAhPSBqb2ItPm9hX2Jhc2UgfHwKPj4gLSAgICAgICAgICAgICAg IGlkLT5vYV9zaXplICE9IGpvYi0+b2Ffc2l6ZSk7Cj4+ICAgICAgICAgYm9vbCB2bV9mbHVzaF9u ZWVkZWQgPSBqb2ItPnZtX25lZWRzX2ZsdXNoOwo+PiAgICAgICAgIGJvb2wgcGFzaWRfbWFwcGlu Z19uZWVkZWQgPSBpZC0+cGFzaWQgIT0gam9iLT5wYXNpZCB8fAo+PiAgICAgICAgICAgICAgICAg IWlkLT5wYXNpZF9tYXBwaW5nIHx8Cj4+ICAgICAgICAgICAgICAgICAhZG1hX2ZlbmNlX2lzX3Np Z25hbGVkKGlkLT5wYXNpZF9tYXBwaW5nKTsKPj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSA9IE5VTEw7Cj4+ICAgICAgICAgdW5zaWduZWQgcGF0Y2hfb2Zmc2V0ID0gMDsKPj4gICAg ICAgICBpbnQgcjsKPj4gICAgICAgICBpZiAoYW1kZ3B1X3ZtaWRfaGFkX2dwdV9yZXNldChhZGV2 LCBpZCkpIHsKPj4gLSAgICAgICAgICAgICAgIGdkc19zd2l0Y2hfbmVlZGVkID0gdHJ1ZTsKPj4g ICAgICAgICAgICAgICAgIHZtX2ZsdXNoX25lZWRlZCA9IHRydWU7Cj4+ICAgICAgICAgICAgICAg ICBwYXNpZF9tYXBwaW5nX25lZWRlZCA9IHRydWU7Cj4+ICAgICAgICAgfQo+PiAgIC0gICAgIGdk c19zd2l0Y2hfbmVlZGVkICY9ICEhcmluZy0+ZnVuY3MtPmVtaXRfZ2RzX3N3aXRjaDsKPj4gICAg ICAgICB2bV9mbHVzaF9uZWVkZWQgJj0gISFyaW5nLT5mdW5jcy0+ZW1pdF92bV9mbHVzaCAgJiYK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgam9iLT52bV9wZF9hZGRyICE9IEFNREdQVV9CT19J TlZBTElEX09GRlNFVDsKPj4gICAgICAgICBwYXNpZF9tYXBwaW5nX25lZWRlZCAmPSBhZGV2LT5n bWMuZ21jX2Z1bmNzLT5lbWl0X3Bhc2lkX21hcHBpbmcgJiYKPj4gICAgICAgICAgICAgICAgIHJp bmctPmZ1bmNzLT5lbWl0X3dyZWc7Cj4+ICAgLSAgICAgaWYgKCF2bV9mbHVzaF9uZWVkZWQgJiYg IWdkc19zd2l0Y2hfbmVlZGVkICYmICFuZWVkX3BpcGVfc3luYykKPj4gKyAgICAgICBpZiAoIXZt X2ZsdXNoX25lZWRlZCAmJiAhbmVlZF9waXBlX3N5bmMpCj4+ICAgICAgICAgICAgICAgICByZXR1 cm4gMDsKPj4gICAgICAgICBpZiAocmluZy0+ZnVuY3MtPmluaXRfY29uZF9leGVjKQo+PiAgICAg ICAgICAgICAgICAgcGF0Y2hfb2Zmc2V0ID0gYW1kZ3B1X3JpbmdfaW5pdF9jb25kX2V4ZWMocmlu Zyk7Cj4+ICAgICAgICAgaWYgKG5lZWRfcGlwZV9zeW5jKQo+PiAgICAgICAgICAgICAgICAgYW1k Z3B1X3JpbmdfZW1pdF9waXBlbGluZV9zeW5jKHJpbmcpOwo+PiAgICAgICAgIGlmICh2bV9mbHVz aF9uZWVkZWQpIHsKPj4gICAgICAgICAgICAgICAgIHRyYWNlX2FtZGdwdV92bV9mbHVzaChyaW5n LCBqb2ItPnZtaWQsIGpvYi0+dm1fcGRfYWRkcik7Cj4+IEBAIC05MDcsMzMgKzg5MCwyMCBAQCBp bnQgYW1kZ3B1X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0Cj4+IGFt ZGdwdV9qb2IgKmpvYiwgYm9vbCBuZWVkXwo+PiAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZpZF9tZ3ItPmxvY2spOwo+PiAgICAgICAgIH0KPj4gICAgICAgICBpZiAocGFzaWRfbWFwcGlu Z19uZWVkZWQpIHsKPj4gICAgICAgICAgICAgICAgIGlkLT5wYXNpZCA9IGpvYi0+cGFzaWQ7Cj4+ ICAgICAgICAgICAgICAgICBkbWFfZmVuY2VfcHV0KGlkLT5wYXNpZF9tYXBwaW5nKTsKPj4gICAg ICAgICAgICAgICAgIGlkLT5wYXNpZF9tYXBwaW5nID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7Cj4+ ICAgICAgICAgfQo+PiAgICAgICAgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+PiAgIC0gICAgIGlm IChyaW5nLT5mdW5jcy0+ZW1pdF9nZHNfc3dpdGNoICYmIGdkc19zd2l0Y2hfbmVlZGVkKSB7Cj4+ IC0gICAgICAgICAgICAgICBpZC0+Z2RzX2Jhc2UgPSBqb2ItPmdkc19iYXNlOwo+PiAtICAgICAg ICAgICAgICAgaWQtPmdkc19zaXplID0gam9iLT5nZHNfc2l6ZTsKPj4gLSAgICAgICAgICAgICAg IGlkLT5nd3NfYmFzZSA9IGpvYi0+Z3dzX2Jhc2U7Cj4+IC0gICAgICAgICAgICAgICBpZC0+Z3dz X3NpemUgPSBqb2ItPmd3c19zaXplOwo+PiAtICAgICAgICAgICAgICAgaWQtPm9hX2Jhc2UgPSBq b2ItPm9hX2Jhc2U7Cj4+IC0gICAgICAgICAgICAgICBpZC0+b2Ffc2l6ZSA9IGpvYi0+b2Ffc2l6 ZTsKPj4gLSAgICAgICAgICAgICAgIGFtZGdwdV9yaW5nX2VtaXRfZ2RzX3N3aXRjaChyaW5nLCBq b2ItPnZtaWQsCj4+IGpvYi0+Z2RzX2Jhc2UsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgam9iLT5nZHNfc2l6ZSwgam9iLT5nd3NfYmFzZSwKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2ItPmd3c19zaXplLCBqb2It Pm9hX2Jhc2UsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg am9iLT5vYV9zaXplKTsKPj4gLSAgICAgICB9Cj4+IC0KPj4gICAgICAgICBpZiAocmluZy0+ZnVu Y3MtPnBhdGNoX2NvbmRfZXhlYykKPj4gICAgICAgICAgICAgICAgIGFtZGdwdV9yaW5nX3BhdGNo X2NvbmRfZXhlYyhyaW5nLCBwYXRjaF9vZmZzZXQpOwo+PiAgICAgICAgIC8qIHRoZSBkb3VibGUg U1dJVENIX0JVRkZFUiBoZXJlICpjYW5ub3QqIGJlIHNraXBwZWQgYnkgQ09ORF9FWEVDCj4+ICov Cj4+ICAgICAgICAgaWYgKHJpbmctPmZ1bmNzLT5lbWl0X3N3aXRjaF9idWZmZXIpIHsKPj4gICAg ICAgICAgICAgICAgIGFtZGdwdV9yaW5nX2VtaXRfc3dpdGNoX2J1ZmZlcihyaW5nKTsKPj4gICAg ICAgICAgICAgICAgIGFtZGdwdV9yaW5nX2VtaXRfc3dpdGNoX2J1ZmZlcihyaW5nKTsKPj4gICAg ICAgICB9Cj4+ICAgICAgICAgcmV0dXJuIDA7Cj4+ICAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2dmeF92N18wLmMKPj4gaW5kZXggYTE1ZDljMGYyMzNiLi5mNTIyOGUxNjljM2EgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYwo+PiBAQCAtMTg5MCwyMSAr MTg5MCwyMSBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9jb25maWdfaW5pdChzdHJ1Y3QKPj4gYW1k Z3B1X2RldmljZSAqYWRldikKPj4gICAgKgo+PiAgICAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBv aW50ZXIKPj4gICAgKgo+PiAgICAqIENvbmZpZ3VyZXMgdGhlIDNEIGVuZ2luZSBhbmQgdGlsaW5n IGNvbmZpZ3VyYXRpb24KPj4gICAgKiByZWdpc3RlcnMgc28gdGhhdCB0aGUgM0QgZW5naW5lIGlz IHVzYWJsZS4KPj4gICAgKi8KPj4gICBzdGF0aWMgdm9pZCBnZnhfdjdfMF9ncHVfaW5pdChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gICB7Cj4+ICAgICAgICAgdTMyIHNoX21lbV9jZmcs IHNoX3N0YXRpY19tZW1fY2ZnLCBzaF9tZW1fYmFzZTsKPj4gICAgICAgICB1MzIgdG1wOwo+PiAt ICAgICAgIGludCBpOwo+PiArICAgICAgIGludCBpLCB2bWlkOwo+PiAgICAgICAgIFdSRUczMiht bUdSQk1fQ05UTCwgKDB4ZmYgPDwgR1JCTV9DTlRMX19SRUFEX1RJTUVPVVRfX1NISUZUKSk7Cj4+ ICAgICAgICAgV1JFRzMyKG1tR0JfQUREUl9DT05GSUcsIGFkZXYtPmdmeC5jb25maWcuZ2JfYWRk cl9jb25maWcpOwo+PiAgICAgICAgIFdSRUczMihtbUhEUF9BRERSX0NPTkZJRywgYWRldi0+Z2Z4 LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyk7Cj4+ICAgICAgICAgV1JFRzMyKG1tRE1JRl9BRERSX0NB TEMsIGFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25maWcpOwo+PiAgICAgICAgIGdmeF92N18w X3RpbGluZ19tb2RlX3RhYmxlX2luaXQoYWRldik7Cj4+ICAgICAgICAgZ2Z4X3Y3XzBfc2V0dXBf cmIoYWRldik7Cj4+IEBAIC0yMDE0LDIwICsyMDE0LDQyIEBAIHN0YXRpYyB2b2lkIGdmeF92N18w X2dwdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlCj4+ICphZGV2KQo+PiAgICAgICAgIHRtcCA9 IFJSRUczMihtbVNQSV9BUkJfUFJJT1JJVFkpOwo+PiAgICAgICAgIHRtcCA9IFJFR19TRVRfRklF TEQodG1wLCBTUElfQVJCX1BSSU9SSVRZLCBQSVBFX09SREVSX1RTMCwgMik7Cj4+ICAgICAgICAg dG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFNQSV9BUkJfUFJJT1JJVFksIFBJUEVfT1JERVJfVFMx LCAyKTsKPj4gICAgICAgICB0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgU1BJX0FSQl9QUklPUklU WSwgUElQRV9PUkRFUl9UUzIsIDIpOwo+PiAgICAgICAgIHRtcCA9IFJFR19TRVRfRklFTEQodG1w LCBTUElfQVJCX1BSSU9SSVRZLCBQSVBFX09SREVSX1RTMywgMik7Cj4+ICAgICAgICAgV1JFRzMy KG1tU1BJX0FSQl9QUklPUklUWSwgdG1wKTsKPj4gICAgICAgICBtdXRleF91bmxvY2soJmFkZXYt PmdyYm1faWR4X211dGV4KTsKPj4gICArICAgICBmb3IgKHZtaWQgPSAwOyB2bWlkIDwgQU1ER1BV X05VTV9WTUlEOyB2bWlkKyspIHsKPj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGdkc19zaXpl LCBnd3Nfc2l6ZSwgb2Ffc2l6ZTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKHZtaWQgPCBh ZGV2LT52bV9tYW5hZ2VyLmlkX21ncltBTURHUFVfR0ZYSFVCXS5udW1faWRzKQo+PiB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGdkc19zaXplID0gYWRldi0+Z2RzLm1lbS5nZnhfc2l6ZV9w ZXJfdm1pZDsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ3dzX3NpemUgPSBhZGV2LT5nZHMu Z3dzLmdmeF9zaXplX3Blcl92bWlkOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBvYV9zaXpl ID0gYWRldi0+Z2RzLm9hLmdmeF9zaXplX3Blcl92bWlkOwo+PiArICAgICAgICAgICAgICAgfSBl bHNlIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2RzX3NpemUgPSBhZGV2LT5nZHMubWVt LmtmZF9zaXplX3Blcl92bWlkOwo+PiArICAgICAgICAgICAgICAgICAgICAgICBnd3Nfc2l6ZSA9 IGFkZXYtPmdkcy5nd3Mua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIG9hX3NpemUgPSBhZGV2LT5nZHMub2Eua2ZkX3NpemVfcGVyX3ZtaWQ7Cj4+ICsgICAgICAg ICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIFdSRUczMihhbWRncHVfZ2RzX3JlZ19v ZmZzZXRbdm1pZF0ubWVtX2Jhc2UsIHZtaWQgKgo+PiBnZHNfc2l6ZSk7Cj4+ICsgICAgICAgICAg ICAgICBXUkVHMzIoYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRdLm1lbV9zaXplLCBnZHNfc2l6 ZSk7Cj4+ICsgICAgICAgICAgICAgICBXUkVHMzIoYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRd Lmd3cywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAodm1pZCAqIGd3c19zaXplKSB8Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgKGd3c19zaXplIDw8IEdEU19HV1NfVk1JRDBfX1NJWkVfX1NI SUZUKSk7Cj4+ICsgICAgICAgICAgICAgICBXUkVHMzIoYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3Zt aWRdLm9hLAo+PiArICAgICAgICAgICAgICAgICAgICAgICgoMSA8PCBvYV9zaXplKSAtIDEpIDw8 ICh2bWlkICogb2Ffc2l6ZSkpOwo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgIHVkZWxheSg1 MCk7Cj4+ICAgfQo+PiAgICAgLyoKPj4gICAgKiBHUFUgc2NyYXRjaCByZWdpc3RlcnMgaGVscGVy cyBmdW5jdGlvbi4KPj4gICAgKi8KPj4gICAvKioKPj4gICAgKiBnZnhfdjdfMF9zY3JhdGNoX2lu aXQgLSBzZXR1cCBkcml2ZXIgaW5mbyBmb3IgQ1Agc2NyYXRjaCByZWdzCj4+ICAgICoKPj4gICAg KiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4+IEBAIC00MTU3LDY4ICs0MTc5LDIwIEBA IHN0YXRpYyB1aW50NjRfdAo+PiBnZnhfdjdfMF9nZXRfZ3B1X2Nsb2NrX2NvdW50ZXIoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAgICAgICAgdWludDY0X3QgY2xvY2s7Cj4+ICAgICAg ICAgbXV0ZXhfbG9jaygmYWRldi0+Z2Z4LmdwdV9jbG9ja19tdXRleCk7Cj4+ICAgICAgICAgV1JF RzMyKG1tUkxDX0NBUFRVUkVfR1BVX0NMT0NLX0NPVU5ULCAxKTsKPj4gICAgICAgICBjbG9jayA9 ICh1aW50NjRfdClSUkVHMzIobW1STENfR1BVX0NMT0NLX0NPVU5UX0xTQikgfAo+PiAgICAgICAg ICAgICAgICAgKCh1aW50NjRfdClSUkVHMzIobW1STENfR1BVX0NMT0NLX0NPVU5UX01TQikgPDwg MzJVTEwpOwo+PiAgICAgICAgIG11dGV4X3VubG9jaygmYWRldi0+Z2Z4LmdwdV9jbG9ja19tdXRl eCk7Cj4+ICAgICAgICAgcmV0dXJuIGNsb2NrOwo+PiAgIH0KPj4gICAtc3RhdGljIHZvaWQgZ2Z4 X3Y3XzBfcmluZ19lbWl0X2dkc19zd2l0Y2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2bWlkLAo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBnZHNf YmFzZSwgdWludDMyX3QKPj4gZ2RzX3NpemUsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGd3c19iYXNlLCB1aW50MzJfdAo+PiBnd3Nfc2l6ZSwK Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb2Ff YmFzZSwgdWludDMyX3QKPj4gb2Ffc2l6ZSkKPj4gLXsKPj4gLSAgICAgICBnZHNfYmFzZSA9IGdk c19iYXNlID4+IEFNREdQVV9HRFNfU0hJRlQ7Cj4+IC0gICAgICAgZ2RzX3NpemUgPSBnZHNfc2l6 ZSA+PiBBTURHUFVfR0RTX1NISUZUOwo+PiAtCj4+IC0gICAgICAgZ3dzX2Jhc2UgPSBnd3NfYmFz ZSA+PiBBTURHUFVfR1dTX1NISUZUOwo+PiAtICAgICAgIGd3c19zaXplID0gZ3dzX3NpemUgPj4g QU1ER1BVX0dXU19TSElGVDsKPj4gLQo+PiAtICAgICAgIG9hX2Jhc2UgPSBvYV9iYXNlID4+IEFN REdQVV9PQV9TSElGVDsKPj4gLSAgICAgICBvYV9zaXplID0gb2Ffc2l6ZSA+PiBBTURHUFVfT0Ff U0hJRlQ7Cj4+IC0KPj4gLSAgICAgICAvKiBHRFMgQmFzZSAqLwo+PiAtICAgICAgIGFtZGdwdV9y aW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19XUklURV9EQVRBLCAzKSk7Cj4+IC0gICAg ICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKFdSSVRFX0RBVEFfRU5HSU5FX1NFTCgwKSB8Cj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfREFUQV9EU1RfU0VMKDApKSk7 Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0 W3ZtaWRdLm1lbV9iYXNlKTsKPj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsK Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBnZHNfYmFzZSk7Cj4+IC0KPj4gLSAg ICAgICAvKiBHRFMgU2l6ZSAqLwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBB Q0tFVDMoUEFDS0VUM19XUklURV9EQVRBLCAzKSk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgKFdSSVRFX0RBVEFfRU5HSU5FX1NFTCgwKSB8Cj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgV1JJVEVfREFUQV9EU1RfU0VMKDApKSk7Cj4+IC0gICAgICAgYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRdLm1lbV9zaXplKTsK Pj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKPj4gLSAgICAgICBhbWRncHVf cmluZ193cml0ZShyaW5nLCBnZHNfc2l6ZSk7Cj4+IC0KPj4gLSAgICAgICAvKiBHV1MgKi8KPj4g LSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfV1JJVEVfREFU QSwgMykpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIChXUklURV9EQVRBX0VO R0lORV9TRUwoMCkgfAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX0RB VEFfRFNUX1NFTCgwKSkpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGFtZGdw dV9nZHNfcmVnX29mZnNldFt2bWlkXS5nd3MpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIDApOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGd3c19zaXplIDw8 IEdEU19HV1NfVk1JRDBfX1NJWkVfX1NISUZUIHwKPj4gZ3dzX2Jhc2UpOwo+PiAtCj4+IC0gICAg ICAgLyogT0EgKi8KPj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBB Q0tFVDNfV1JJVEVfREFUQSwgMykpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs IChXUklURV9EQVRBX0VOR0lORV9TRUwoMCkgfAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFdSSVRFX0RBVEFfRFNUX1NFTCgwKSkpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIGFtZGdwdV9nZHNfcmVnX29mZnNldFt2bWlkXS5vYSk7Cj4+IC0gICAgICAgYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgMCk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgKDEgPDwgKG9hX3NpemUgKyBvYV9iYXNlKSkgLSAoMSA8PAo+PiBvYV9iYXNlKSk7Cj4+IC19 Cj4+IC0KPj4gICBzdGF0aWMgdm9pZCBnZnhfdjdfMF9yaW5nX3NvZnRfcmVjb3Zlcnkoc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLAo+PiB1bnNpZ25lZCB2bWlkKQo+PiAgIHsKPj4gICAgICAgICBz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+ICAgICAgICAgdWludDMy X3QgdmFsdWUgPSAwOwo+PiAgICAgICAgIHZhbHVlID0gUkVHX1NFVF9GSUVMRCh2YWx1ZSwgU1Ff Q01ELCBDTUQsIDB4MDMpOwo+PiAgICAgICAgIHZhbHVlID0gUkVHX1NFVF9GSUVMRCh2YWx1ZSwg U1FfQ01ELCBNT0RFLCAweDAxKTsKPj4gICAgICAgICB2YWx1ZSA9IFJFR19TRVRfRklFTEQodmFs dWUsIFNRX0NNRCwgQ0hFQ0tfVk1JRCwgMSk7Cj4+ICAgICAgICAgdmFsdWUgPSBSRUdfU0VUX0ZJ RUxEKHZhbHVlLCBTUV9DTUQsIFZNX0lELCB2bWlkKTsKPj4gICAgICAgICBXUkVHMzIobW1TUV9D TUQsIHZhbHVlKTsKPj4gQEAgLTQ1ODQsNTUgKzQ1NTgsMzIgQEAgc3RhdGljIGludCBnZnhfdjdf MF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaWQsCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBr LCBqKTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaWQrKzsKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgfQo+PiAgICAgICAgICAgICAgICAgfQo+PiAgICAgICAgIH0KPj4gICAtICAgICAvKiByZXNl cnZlIEdEUywgR1dTIGFuZCBPQSByZXNvdXJjZSBmb3IgZ2Z4ICovCj4+IC0gICAgICAgciA9IGFt ZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsCj4+IGFkZXYtPmdkcy5tZW0uZ2Z4X3BhcnRpdGlv bl9zaXplLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUs IEFNREdQVV9HRU1fRE9NQUlOX0dEUywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmFkZXYtPmdkcy5nZHNfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAgICBpZiAo cikKPj4gLSAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+IC0gICAgICAgciA9IGFtZGdw dV9ib19jcmVhdGVfa2VybmVsKGFkZXYsCj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3BhcnRpdGlvbl9z aXplLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUsIEFN REdQVV9HRU1fRE9NQUlOX0dXUywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmFkZXYtPmdkcy5nd3NfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAgICBpZiAocikK Pj4gLSAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+IC0gICAgICAgciA9IGFtZGdwdV9i b19jcmVhdGVfa2VybmVsKGFkZXYsIGFkZXYtPmdkcy5vYS5nZnhfcGFydGl0aW9uX3NpemUsCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfU0laRSwgQU1ER1BVX0dF TV9ET01BSU5fT0EsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGV2 LT5nZHMub2FfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAgICBpZiAocikKPj4gLSAgICAg ICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+ICAgICAgICAgYWRldi0+Z2Z4LmNlX3JhbV9zaXpl ID0gMHg4MDAwOwo+PiAgICAgICAgIGdmeF92N18wX2dwdV9lYXJseV9pbml0KGFkZXYpOwo+PiAg ICAgICAgIHJldHVybiByOwo+PiAgIH0KPj4gICAgIHN0YXRpYyBpbnQgZ2Z4X3Y3XzBfc3dfZmlu aSh2b2lkICpoYW5kbGUpCj4+ICAgewo+PiAgICAgICAgIGludCBpOwo+PiAgICAgICAgIHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ PiAgIC0gICAgIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgmYWRldi0+Z2RzLm9hX2dmeF9ibywgTlVM TCwgTlVMTCk7Cj4+IC0gICAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5nZHMuZ3dz X2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+IC0gICAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZh ZGV2LT5nZHMuZ2RzX2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+IC0KPj4gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgYWRldi0+Z2Z4Lm51bV9nZnhfcmluZ3M7IGkrKykKPj4gICAgICAgICAgICAgICAg IGFtZGdwdV9yaW5nX2ZpbmkoJmFkZXYtPmdmeC5nZnhfcmluZ1tpXSk7Cj4+ICAgICAgICAgZm9y IChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5nczsgaSsrKQo+PiAgICAgICAg ICAgICAgICAgYW1kZ3B1X3JpbmdfZmluaSgmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXSk7Cj4+ ICAgICAgICAgZ2Z4X3Y3XzBfY3BfY29tcHV0ZV9maW5pKGFkZXYpOwo+PiAgICAgICAgIGdmeF92 N18wX3JsY19maW5pKGFkZXYpOwo+PiAgICAgICAgIGdmeF92N18wX21lY19maW5pKGFkZXYpOwo+ PiAgICAgICAgIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgmYWRldi0+Z2Z4LnJsYy5jbGVhcl9zdGF0 ZV9vYmosCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZXYtPmdmeC5ybGMu Y2xlYXJfc3RhdGVfZ3B1X2FkZHIsCj4+IEBAIC01MDczLDY0ICs1MDI0LDYwIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgYW1kX2lwX2Z1bmNzIGdmeF92N18wX2lwX2Z1bmNzCj4+ID0gewo+PiAgICAg c3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyBnZnhfdjdfMF9yaW5nX2Z1bmNz X2dmeCA9IHsKPj4gICAgICAgICAudHlwZSA9IEFNREdQVV9SSU5HX1RZUEVfR0ZYLAo+PiAgICAg ICAgIC5hbGlnbl9tYXNrID0gMHhmZiwKPj4gICAgICAgICAubm9wID0gUEFDS0VUMyhQQUNLRVQz X05PUCwgMHgzRkZGKSwKPj4gICAgICAgICAuc3VwcG9ydF82NGJpdF9wdHJzID0gZmFsc2UsCj4+ ICAgICAgICAgLmdldF9ycHRyID0gZ2Z4X3Y3XzBfcmluZ19nZXRfcnB0ciwKPj4gICAgICAgICAu Z2V0X3dwdHIgPSBnZnhfdjdfMF9yaW5nX2dldF93cHRyX2dmeCwKPj4gICAgICAgICAuc2V0X3dw dHIgPSBnZnhfdjdfMF9yaW5nX3NldF93cHRyX2dmeCwKPj4gICAgICAgICAuZW1pdF9mcmFtZV9z aXplID0KPj4gLSAgICAgICAgICAgICAgIDIwICsgLyogZ2Z4X3Y3XzBfcmluZ19lbWl0X2dkc19z d2l0Y2ggKi8KPj4gICAgICAgICAgICAgICAgIDcgKyAvKiBnZnhfdjdfMF9yaW5nX2VtaXRfaGRw X2ZsdXNoICovCj4+ICAgICAgICAgICAgICAgICA1ICsgLyogaGRwIGludmFsaWRhdGUgKi8KPj4g ICAgICAgICAgICAgICAgIDEyICsgMTIgKyAxMiArIC8qIGdmeF92N18wX3JpbmdfZW1pdF9mZW5j ZV9nZnggeDMgZm9yIHVzZXIKPj4gZmVuY2UsIHZtIGZlbmNlICovCj4+ICAgICAgICAgICAgICAg ICA3ICsgNCArIC8qIGdmeF92N18wX3JpbmdfZW1pdF9waXBlbGluZV9zeW5jICovCj4+ICAgICAg ICAgICAgICAgICBDSUtfRkxVU0hfR1BVX1RMQl9OVU1fV1JFRyAqIDUgKyA3ICsgNiArIC8qCj4+ IGdmeF92N18wX3JpbmdfZW1pdF92bV9mbHVzaCAqLwo+PiAgICAgICAgICAgICAgICAgMyArIDQs IC8qIGdmeF92N19yaW5nX2VtaXRfY250eGNudGwgaW5jbHVkaW5nIHZndCBmbHVzaCovCj4+ICAg ICAgICAgLmVtaXRfaWJfc2l6ZSA9IDQsIC8qIGdmeF92N18wX3JpbmdfZW1pdF9pYl9nZnggKi8K Pj4gICAgICAgICAuZW1pdF9pYiA9IGdmeF92N18wX3JpbmdfZW1pdF9pYl9nZngsCj4+ICAgICAg ICAgLmVtaXRfZmVuY2UgPSBnZnhfdjdfMF9yaW5nX2VtaXRfZmVuY2VfZ2Z4LAo+PiAgICAgICAg IC5lbWl0X3BpcGVsaW5lX3N5bmMgPSBnZnhfdjdfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYywK Pj4gICAgICAgICAuZW1pdF92bV9mbHVzaCA9IGdmeF92N18wX3JpbmdfZW1pdF92bV9mbHVzaCwK Pj4gLSAgICAgICAuZW1pdF9nZHNfc3dpdGNoID0gZ2Z4X3Y3XzBfcmluZ19lbWl0X2dkc19zd2l0 Y2gsCj4+ICAgICAgICAgLmVtaXRfaGRwX2ZsdXNoID0gZ2Z4X3Y3XzBfcmluZ19lbWl0X2hkcF9m bHVzaCwKPj4gICAgICAgICAudGVzdF9yaW5nID0gZ2Z4X3Y3XzBfcmluZ190ZXN0X3JpbmcsCj4+ ICAgICAgICAgLnRlc3RfaWIgPSBnZnhfdjdfMF9yaW5nX3Rlc3RfaWIsCj4+ICAgICAgICAgLmlu c2VydF9ub3AgPSBhbWRncHVfcmluZ19pbnNlcnRfbm9wLAo+PiAgICAgICAgIC5wYWRfaWIgPSBh bWRncHVfcmluZ19nZW5lcmljX3BhZF9pYiwKPj4gICAgICAgICAuZW1pdF9jbnR4Y250bCA9IGdm eF92N19yaW5nX2VtaXRfY250eGNudGwsCj4+ICAgICAgICAgLmVtaXRfd3JlZyA9IGdmeF92N18w X3JpbmdfZW1pdF93cmVnLAo+PiAgICAgICAgIC5zb2Z0X3JlY292ZXJ5ID0gZ2Z4X3Y3XzBfcmlu Z19zb2Z0X3JlY292ZXJ5LAo+PiAgIH07Cj4+ICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdw dV9yaW5nX2Z1bmNzIGdmeF92N18wX3JpbmdfZnVuY3NfY29tcHV0ZSA9IHsKPj4gICAgICAgICAu dHlwZSA9IEFNREdQVV9SSU5HX1RZUEVfQ09NUFVURSwKPj4gICAgICAgICAuYWxpZ25fbWFzayA9 IDB4ZmYsCj4+ICAgICAgICAgLm5vcCA9IFBBQ0tFVDMoUEFDS0VUM19OT1AsIDB4M0ZGRiksCj4+ ICAgICAgICAgLnN1cHBvcnRfNjRiaXRfcHRycyA9IGZhbHNlLAo+PiAgICAgICAgIC5nZXRfcnB0 ciA9IGdmeF92N18wX3JpbmdfZ2V0X3JwdHIsCj4+ICAgICAgICAgLmdldF93cHRyID0gZ2Z4X3Y3 XzBfcmluZ19nZXRfd3B0cl9jb21wdXRlLAo+PiAgICAgICAgIC5zZXRfd3B0ciA9IGdmeF92N18w X3Jpbmdfc2V0X3dwdHJfY29tcHV0ZSwKPj4gICAgICAgICAuZW1pdF9mcmFtZV9zaXplID0KPj4g LSAgICAgICAgICAgICAgIDIwICsgLyogZ2Z4X3Y3XzBfcmluZ19lbWl0X2dkc19zd2l0Y2ggKi8K Pj4gICAgICAgICAgICAgICAgIDcgKyAvKiBnZnhfdjdfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoICov Cj4+ICAgICAgICAgICAgICAgICA1ICsgLyogaGRwIGludmFsaWRhdGUgKi8KPj4gICAgICAgICAg ICAgICAgIDcgKyAvKiBnZnhfdjdfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYyAqLwo+PiAgICAg ICAgICAgICAgICAgQ0lLX0ZMVVNIX0dQVV9UTEJfTlVNX1dSRUcgKiA1ICsgNyArIC8qCj4+IGdm eF92N18wX3JpbmdfZW1pdF92bV9mbHVzaCAqLwo+PiAgICAgICAgICAgICAgICAgNyArIDcgKyA3 LCAvKiBnZnhfdjdfMF9yaW5nX2VtaXRfZmVuY2VfY29tcHV0ZSB4MyBmb3IgdXNlcgo+PiBmZW5j ZSwgdm0gZmVuY2UgKi8KPj4gICAgICAgICAuZW1pdF9pYl9zaXplID0gNCwgLyogZ2Z4X3Y3XzBf cmluZ19lbWl0X2liX2NvbXB1dGUgKi8KPj4gICAgICAgICAuZW1pdF9pYiA9IGdmeF92N18wX3Jp bmdfZW1pdF9pYl9jb21wdXRlLAo+PiAgICAgICAgIC5lbWl0X2ZlbmNlID0gZ2Z4X3Y3XzBfcmlu Z19lbWl0X2ZlbmNlX2NvbXB1dGUsCj4+ICAgICAgICAgLmVtaXRfcGlwZWxpbmVfc3luYyA9IGdm eF92N18wX3JpbmdfZW1pdF9waXBlbGluZV9zeW5jLAo+PiAgICAgICAgIC5lbWl0X3ZtX2ZsdXNo ID0gZ2Z4X3Y3XzBfcmluZ19lbWl0X3ZtX2ZsdXNoLAo+PiAtICAgICAgIC5lbWl0X2dkc19zd2l0 Y2ggPSBnZnhfdjdfMF9yaW5nX2VtaXRfZ2RzX3N3aXRjaCwKPj4gICAgICAgICAuZW1pdF9oZHBf Zmx1c2ggPSBnZnhfdjdfMF9yaW5nX2VtaXRfaGRwX2ZsdXNoLAo+PiAgICAgICAgIC50ZXN0X3Jp bmcgPSBnZnhfdjdfMF9yaW5nX3Rlc3RfcmluZywKPj4gICAgICAgICAudGVzdF9pYiA9IGdmeF92 N18wX3JpbmdfdGVzdF9pYiwKPj4gICAgICAgICAuaW5zZXJ0X25vcCA9IGFtZGdwdV9yaW5nX2lu c2VydF9ub3AsCj4+ICAgICAgICAgLnBhZF9pYiA9IGFtZGdwdV9yaW5nX2dlbmVyaWNfcGFkX2li LAo+PiAgICAgICAgIC5lbWl0X3dyZWcgPSBnZnhfdjdfMF9yaW5nX2VtaXRfd3JlZywKPj4gICB9 Owo+PiAgICAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0X3JpbmdfZnVuY3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCj4+ICAgewo+PiBAQCAtNTE2OSw0MiArNTExNiwyOCBAQCBzdGF0aWMg dm9pZCBnZnhfdjdfMF9zZXRfaXJxX2Z1bmNzKHN0cnVjdAo+PiBhbWRncHVfZGV2aWNlICphZGV2 KQo+PiAgICAgICAgIGFkZXYtPmdmeC5wcml2X2luc3RfaXJxLmZ1bmNzID0gJmdmeF92N18wX3By aXZfaW5zdF9pcnFfZnVuY3M7Cj4+ICAgfQo+PiAgICAgc3RhdGljIHZvaWQgZ2Z4X3Y3XzBfc2V0 X2dkc19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiAgIHsKPj4gICAgICAgICAv KiBpbml0IGFzY2kgZ2RzIGluZm8gKi8KPj4gICAgICAgICBhZGV2LT5nZHMubWVtLnRvdGFsX3Np emUgPSBSUkVHMzIobW1HRFNfVk1JRDBfU0laRSk7Cj4+ICAgICAgICAgYWRldi0+Z2RzLmd3cy50 b3RhbF9zaXplID0gNjQ7Cj4+ICAgICAgICAgYWRldi0+Z2RzLm9hLnRvdGFsX3NpemUgPSAxNjsK Pj4gICAtICAgICBpZiAoYWRldi0+Z2RzLm1lbS50b3RhbF9zaXplID09IDY0ICogMTAyNCkgewo+ PiAtICAgICAgICAgICAgICAgYWRldi0+Z2RzLm1lbS5nZnhfcGFydGl0aW9uX3NpemUgPSA0MDk2 Owo+PiAtICAgICAgICAgICAgICAgYWRldi0+Z2RzLm1lbS5jc19wYXJ0aXRpb25fc2l6ZSA9IDQw OTY7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5nd3MuZ2Z4X3BhcnRpdGlvbl9z aXplID0gNDsKPj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5nd3MuY3NfcGFydGl0aW9uX3Np emUgPSA0Owo+PiAtCj4+IC0gICAgICAgICAgICAgICBhZGV2LT5nZHMub2EuZ2Z4X3BhcnRpdGlv bl9zaXplID0gNDsKPj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdkcy5vYS5jc19wYXJ0aXRpb25f c2l6ZSA9IDE7Cj4+IC0gICAgICAgfSBlbHNlIHsKPj4gLSAgICAgICAgICAgICAgIGFkZXYtPmdk cy5tZW0uZ2Z4X3BhcnRpdGlvbl9zaXplID0gMTAyNDsKPj4gLSAgICAgICAgICAgICAgIGFkZXYt Pmdkcy5tZW0uY3NfcGFydGl0aW9uX3NpemUgPSAxMDI0Owo+PiAtCj4+IC0gICAgICAgICAgICAg ICBhZGV2LT5nZHMuZ3dzLmdmeF9wYXJ0aXRpb25fc2l6ZSA9IDE2Owo+PiAtICAgICAgICAgICAg ICAgYWRldi0+Z2RzLmd3cy5jc19wYXJ0aXRpb25fc2l6ZSA9IDE2Owo+PiAtCj4+IC0gICAgICAg ICAgICAgICBhZGV2LT5nZHMub2EuZ2Z4X3BhcnRpdGlvbl9zaXplID0gNDsKPj4gLSAgICAgICAg ICAgICAgIGFkZXYtPmdkcy5vYS5jc19wYXJ0aXRpb25fc2l6ZSA9IDQ7Cj4+IC0gICAgICAgfQo+ PiArICAgICAgIGFkZXYtPmdkcy5tZW0uZ2Z4X3NpemVfcGVyX3ZtaWQgPSBhZGV2LT5nZHMubWVt LnRvdGFsX3NpemUgLwo+PiBBTURHUFVfTlVNX1ZNSUQ7Cj4+ICsgICAgICAgYWRldi0+Z2RzLm1l bS5rZmRfc2l6ZV9wZXJfdm1pZCA9IGFkZXYtPmdkcy5tZW0udG90YWxfc2l6ZSAvCj4+IEFNREdQ VV9OVU1fVk1JRDsKPj4gKyAgICAgICBhZGV2LT5nZHMuZ3dzLmdmeF9zaXplX3Blcl92bWlkID0g YWRldi0+Z2RzLmd3cy50b3RhbF9zaXplIC8KPj4gQU1ER1BVX05VTV9WTUlEOwo+PiArICAgICAg IGFkZXYtPmdkcy5nd3Mua2ZkX3NpemVfcGVyX3ZtaWQgPSBhZGV2LT5nZHMuZ3dzLnRvdGFsX3Np emUgLwo+PiBBTURHUFVfTlVNX1ZNSUQ7Cj4+ICsgICAgICAgYWRldi0+Z2RzLm9hLmdmeF9zaXpl X3Blcl92bWlkID0gYWRldi0+Z2RzLm9hLnRvdGFsX3NpemUgLyA4OyAvKgo+PiBnZnggb25seSAq Lwo+PiArICAgICAgIGFkZXYtPmdkcy5vYS5rZmRfc2l6ZV9wZXJfdm1pZCA9IDA7Cj4+ICAgfQo+ PiAgIC0KPj4gICBzdGF0aWMgdm9pZCBnZnhfdjdfMF9nZXRfY3VfaW5mbyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKPj4gICB7Cj4+ICAgICAgICAgaW50IGksIGosIGssIGNvdW50ZXIsIGFj dGl2ZV9jdV9udW1iZXIgPSAwOwo+PiAgICAgICAgIHUzMiBtYXNrLCBiaXRtYXAsIGFvX2JpdG1h cCwgYW9fY3VfbWFzayA9IDA7Cj4+ICAgICAgICAgc3RydWN0IGFtZGdwdV9jdV9pbmZvICpjdV9p bmZvID0gJmFkZXYtPmdmeC5jdV9pbmZvOwo+PiAgICAgICAgIHVuc2lnbmVkIGRpc2FibGVfbWFz a3NbNCAqIDJdOwo+PiAgICAgICAgIHUzMiBhb19jdV9udW07Cj4+ICAgICAgICAgaWYgKGFkZXYt PmZsYWdzICYgQU1EX0lTX0FQVSkKPj4gICAgICAgICAgICAgICAgIGFvX2N1X251bSA9IDI7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwo+PiBpbmRleCAzODgyNjg5YjJk OGYuLmIxMWE1NGJkMDY2OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y4XzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhf MC5jCj4+IEBAIC0yMTU0LDU3ICsyMTU0LDM0IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfc3dfaW5p dCh2b2lkICpoYW5kbGUpCj4+ICAgICAgICAga2lxID0gJmFkZXYtPmdmeC5raXE7Cj4+ICAgICAg ICAgciA9IGFtZGdwdV9nZnhfa2lxX2luaXRfcmluZyhhZGV2LCAma2lxLT5yaW5nLCAma2lxLT5p cnEpOwo+PiAgICAgICAgIGlmIChyKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Cj4+ICAg ICAgICAgLyogY3JlYXRlIE1RRCBmb3IgYWxsIGNvbXB1dGUgcXVldWVzIGFzIHdlbGwgYXMgS0lR IGZvciBTUklPViBjYXNlCj4+ICovCj4+ICAgICAgICAgciA9IGFtZGdwdV9nZnhfY29tcHV0ZV9t cWRfc3dfaW5pdChhZGV2LCBzaXplb2Yoc3RydWN0Cj4+IHZpX21xZF9hbGxvY2F0aW9uKSk7Cj4+ ICAgICAgICAgaWYgKHIpCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4gICAtICAgICAv KiByZXNlcnZlIEdEUywgR1dTIGFuZCBPQSByZXNvdXJjZSBmb3IgZ2Z4ICovCj4+IC0gICAgICAg ciA9IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsCj4+IGFkZXYtPmdkcy5tZW0uZ2Z4X3Bh cnRpdGlvbl9zaXplLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdF X1NJWkUsIEFNREdQVV9HRU1fRE9NQUlOX0dEUywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmFkZXYtPmdkcy5nZHNfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAg ICBpZiAocikKPj4gLSAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+IC0gICAgICAgciA9 IGFtZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsCj4+IGFkZXYtPmdkcy5nd3MuZ2Z4X3BhcnRp dGlvbl9zaXplLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJ WkUsIEFNREdQVV9HRU1fRE9NQUlOX0dXUywKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmFkZXYtPmdkcy5nd3NfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAgICBp ZiAocikKPj4gLSAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+IC0gICAgICAgciA9IGFt ZGdwdV9ib19jcmVhdGVfa2VybmVsKGFkZXYsIGFkZXYtPmdkcy5vYS5nZnhfcGFydGl0aW9uX3Np emUsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfU0laRSwgQU1E R1BVX0dFTV9ET01BSU5fT0EsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZhZGV2LT5nZHMub2FfZ2Z4X2JvLCBOVUxMLCBOVUxMKTsKPj4gLSAgICAgICBpZiAocikKPj4g LSAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAtCj4+ICAgICAgICAgYWRldi0+Z2Z4LmNlX3Jh bV9zaXplID0gMHg4MDAwOwo+PiAgICAgICAgIHIgPSBnZnhfdjhfMF9ncHVfZWFybHlfaW5pdChh ZGV2KTsKPj4gICAgICAgICBpZiAocikKPj4gICAgICAgICAgICAgICAgIHJldHVybiByOwo+PiAg ICAgICAgIHJldHVybiAwOwo+PiAgIH0KPj4gICAgIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfc3dfZmlu aSh2b2lkICpoYW5kbGUpCj4+ICAgewo+PiAgICAgICAgIGludCBpOwo+PiAgICAgICAgIHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+ PiAgIC0gICAgIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgmYWRldi0+Z2RzLm9hX2dmeF9ibywgTlVM TCwgTlVMTCk7Cj4+IC0gICAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZhZGV2LT5nZHMuZ3dz X2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+IC0gICAgICAgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCZh ZGV2LT5nZHMuZ2RzX2dmeF9ibywgTlVMTCwgTlVMTCk7Cj4+IC0KPj4gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgYWRldi0+Z2Z4Lm51bV9nZnhfcmluZ3M7IGkrKykKPj4gICAgICAgICAgICAgICAg IGFtZGdwdV9yaW5nX2ZpbmkoJmFkZXYtPmdmeC5nZnhfcmluZ1tpXSk7Cj4+ICAgICAgICAgZm9y IChpID0gMDsgaSA8IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5nczsgaSsrKQo+PiAgICAgICAg ICAgICAgICAgYW1kZ3B1X3JpbmdfZmluaSgmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1tpXSk7Cj4+ ICAgICAgICAgYW1kZ3B1X2dmeF9jb21wdXRlX21xZF9zd19maW5pKGFkZXYpOwo+PiAgICAgICAg IGFtZGdwdV9nZnhfa2lxX2ZyZWVfcmluZygmYWRldi0+Z2Z4LmtpcS5yaW5nLCAmYWRldi0+Z2Z4 LmtpcS5pcnEpOwo+PiAgICAgICAgIGFtZGdwdV9nZnhfa2lxX2ZpbmkoYWRldik7Cj4+ICAgICAg ICAgZ2Z4X3Y4XzBfbWVjX2ZpbmkoYWRldik7Cj4+IEBAIC0zODUwLDIxICszODI3LDIxIEBAIHN0 YXRpYyB2b2lkIGdmeF92OF8wX2NvbmZpZ19pbml0KHN0cnVjdAo+PiBhbWRncHVfZGV2aWNlICph ZGV2KQo+PiAgICAgICAgIGNhc2UgQ0hJUF9DQVJSSVpPOgo+PiAgICAgICAgIGNhc2UgQ0hJUF9T VE9ORVk6Cj4+ICAgICAgICAgICAgICAgICBhZGV2LT5nZnguY29uZmlnLmRvdWJsZV9vZmZjaGlw X2xkc19idWYgPSAwOwo+PiAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgfQo+PiAg IH0KPj4gICAgIHN0YXRpYyB2b2lkIGdmeF92OF8wX2dwdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQo+PiAgIHsKPj4gICAgICAgICB1MzIgdG1wLCBzaF9zdGF0aWNfbWVtX2NmZzsK Pj4gLSAgICAgICBpbnQgaTsKPj4gKyAgICAgICBpbnQgaSwgdm1pZDsKPj4gICAgICAgICBXUkVH MzJfRklFTEQoR1JCTV9DTlRMLCBSRUFEX1RJTUVPVVQsIDB4RkYpOwo+PiAgICAgICAgIFdSRUcz MihtbUdCX0FERFJfQ09ORklHLCBhZGV2LT5nZnguY29uZmlnLmdiX2FkZHJfY29uZmlnKTsKPj4g ICAgICAgICBXUkVHMzIobW1IRFBfQUREUl9DT05GSUcsIGFkZXYtPmdmeC5jb25maWcuZ2JfYWRk cl9jb25maWcpOwo+PiAgICAgICAgIFdSRUczMihtbURNSUZfQUREUl9DQUxDLCBhZGV2LT5nZngu Y29uZmlnLmdiX2FkZHJfY29uZmlnKTsKPj4gICAgICAgICBnZnhfdjhfMF90aWxpbmdfbW9kZV90 YWJsZV9pbml0KGFkZXYpOwo+PiAgICAgICAgIGdmeF92OF8wX3NldHVwX3JiKGFkZXYpOwo+PiAg ICAgICAgIGdmeF92OF8wX2dldF9jdV9pbmZvKGFkZXYpOwo+PiAgICAgICAgIGdmeF92OF8wX2Nv bmZpZ19pbml0KGFkZXYpOwo+PiBAQCAtMzkyNywyMCArMzkwNCw0MSBAQCBzdGF0aWMgdm9pZCBn ZnhfdjhfMF9ncHVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZQo+PiAqYWRldikKPj4gICAgICAg ICB0bXAgPSBSUkVHMzIobW1TUElfQVJCX1BSSU9SSVRZKTsKPj4gICAgICAgICB0bXAgPSBSRUdf U0VUX0ZJRUxEKHRtcCwgU1BJX0FSQl9QUklPUklUWSwgUElQRV9PUkRFUl9UUzAsIDIpOwo+PiAg ICAgICAgIHRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBTUElfQVJCX1BSSU9SSVRZLCBQSVBFX09S REVSX1RTMSwgMik7Cj4+ICAgICAgICAgdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFNQSV9BUkJf UFJJT1JJVFksIFBJUEVfT1JERVJfVFMyLCAyKTsKPj4gICAgICAgICB0bXAgPSBSRUdfU0VUX0ZJ RUxEKHRtcCwgU1BJX0FSQl9QUklPUklUWSwgUElQRV9PUkRFUl9UUzMsIDIpOwo+PiAgICAgICAg IFdSRUczMihtbVNQSV9BUkJfUFJJT1JJVFksIHRtcCk7Cj4+ICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZhZGV2LT5ncmJtX2lkeF9tdXRleCk7Cj4+ICAgKyAgICAgZm9yICh2bWlkID0gMDsgdm1pZCA8 IEFNREdQVV9OVU1fVk1JRDsgdm1pZCsrKSB7Cj4+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBn ZHNfc2l6ZSwgZ3dzX3NpemUsIG9hX3NpemU7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmICh2 bWlkIDwgYWRldi0+dm1fbWFuYWdlci5pZF9tZ3JbQU1ER1BVX0dGWEhVQl0ubnVtX2lkcykKPj4g ewo+PiArICAgICAgICAgICAgICAgICAgICAgICBnZHNfc2l6ZSA9IGFkZXYtPmdkcy5tZW0uZ2Z4 X3NpemVfcGVyX3ZtaWQ7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGd3c19zaXplID0gYWRl di0+Z2RzLmd3cy5nZnhfc2l6ZV9wZXJfdm1pZDsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg b2Ffc2l6ZSA9IGFkZXYtPmdkcy5vYS5nZnhfc2l6ZV9wZXJfdm1pZDsKPj4gKyAgICAgICAgICAg ICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdkc19zaXplID0gYWRldi0+ Z2RzLm1lbS5rZmRfc2l6ZV9wZXJfdm1pZDsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ3dz X3NpemUgPSBhZGV2LT5nZHMuZ3dzLmtmZF9zaXplX3Blcl92bWlkOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICBvYV9zaXplID0gYWRldi0+Z2RzLm9hLmtmZF9zaXplX3Blcl92bWlkOwo+PiAr ICAgICAgICAgICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgICAgICBXUkVHMzIoYW1kZ3B1X2dk c19yZWdfb2Zmc2V0W3ZtaWRdLm1lbV9iYXNlLCB2bWlkICoKPj4gZ2RzX3NpemUpOwo+PiArICAg ICAgICAgICAgICAgV1JFRzMyKGFtZGdwdV9nZHNfcmVnX29mZnNldFt2bWlkXS5tZW1fc2l6ZSwg Z2RzX3NpemUpOwo+PiArICAgICAgICAgICAgICAgV1JFRzMyKGFtZGdwdV9nZHNfcmVnX29mZnNl dFt2bWlkXS5nd3MsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgKHZtaWQgKiBnd3Nfc2l6ZSkg fAo+PiArICAgICAgICAgICAgICAgICAgICAgIChnd3Nfc2l6ZSA8PCBHRFNfR1dTX1ZNSUQwX19T SVpFX19TSElGVCkpOwo+PiArICAgICAgICAgICAgICAgV1JFRzMyKGFtZGdwdV9nZHNfcmVnX29m ZnNldFt2bWlkXS5vYSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAoKDEgPDwgb2Ffc2l6ZSkg LSAxKSA8PCAodm1pZCAqIG9hX3NpemUpKTsKPj4gKyAgICAgICB9Cj4+ICAgfQo+PiAgICAgc3Rh dGljIHZvaWQgZ2Z4X3Y4XzBfd2FpdF9mb3JfcmxjX3NlcmRlcyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKPj4gICB7Cj4+ICAgICAgICAgdTMyIGksIGosIGs7Cj4+ICAgICAgICAgdTMyIG1h c2s7Cj4+ICAgICAgICAgbXV0ZXhfbG9jaygmYWRldi0+Z3JibV9pZHhfbXV0ZXgpOwo+PiAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBhZGV2LT5nZnguY29uZmlnLm1heF9zaGFkZXJfZW5naW5lczsg aSsrKSB7Cj4+ICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYWRldi0+Z2Z4LmNvbmZp Zy5tYXhfc2hfcGVyX3NlOyBqKyspIHsKPj4gQEAgLTUzODMsNjggKzUzODEsMjAgQEAgc3RhdGlj IHVpbnQ2NF90Cj4+IGdmeF92OF8wX2dldF9ncHVfY2xvY2tfY291bnRlcihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKPj4gICAgICAgICB1aW50NjRfdCBjbG9jazsKPj4gICAgICAgICBtdXRl eF9sb2NrKCZhZGV2LT5nZnguZ3B1X2Nsb2NrX211dGV4KTsKPj4gICAgICAgICBXUkVHMzIobW1S TENfQ0FQVFVSRV9HUFVfQ0xPQ0tfQ09VTlQsIDEpOwo+PiAgICAgICAgIGNsb2NrID0gKHVpbnQ2 NF90KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTFNCKSB8Cj4+ICAgICAgICAgICAgICAg ICAoKHVpbnQ2NF90KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTVNCKSA8PCAzMlVMTCk7 Cj4+ICAgICAgICAgbXV0ZXhfdW5sb2NrKCZhZGV2LT5nZnguZ3B1X2Nsb2NrX211dGV4KTsKPj4g ICAgICAgICByZXR1cm4gY2xvY2s7Cj4+ICAgfQo+PiAgIC1zdGF0aWMgdm9pZCBnZnhfdjhfMF9y aW5nX2VtaXRfZ2RzX3N3aXRjaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZtaWQsCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGdkc19iYXNlLCB1 aW50MzJfdAo+PiBnZHNfc2l6ZSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZ3dzX2Jhc2UsIHVpbnQzMl90Cj4+IGd3c19zaXplLAo+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvYV9iYXNlLCB1 aW50MzJfdAo+PiBvYV9zaXplKQo+PiAtewo+PiAtICAgICAgIGdkc19iYXNlID0gZ2RzX2Jhc2Ug Pj4gQU1ER1BVX0dEU19TSElGVDsKPj4gLSAgICAgICBnZHNfc2l6ZSA9IGdkc19zaXplID4+IEFN REdQVV9HRFNfU0hJRlQ7Cj4+IC0KPj4gLSAgICAgICBnd3NfYmFzZSA9IGd3c19iYXNlID4+IEFN REdQVV9HV1NfU0hJRlQ7Cj4+IC0gICAgICAgZ3dzX3NpemUgPSBnd3Nfc2l6ZSA+PiBBTURHUFVf R1dTX1NISUZUOwo+PiAtCj4+IC0gICAgICAgb2FfYmFzZSA9IG9hX2Jhc2UgPj4gQU1ER1BVX09B X1NISUZUOwo+PiAtICAgICAgIG9hX3NpemUgPSBvYV9zaXplID4+IEFNREdQVV9PQV9TSElGVDsK Pj4gLQo+PiAtICAgICAgIC8qIEdEUyBCYXNlICovCj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgUEFDS0VUMyhQQUNLRVQzX1dSSVRFX0RBVEEsIDMpKTsKPj4gLSAgICAgICBhbWRn cHVfcmluZ193cml0ZShyaW5nLCAoV1JJVEVfREFUQV9FTkdJTkVfU0VMKDApIHwKPj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9EQVRBX0RTVF9TRUwoMCkpKTsKPj4gLSAg ICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBhbWRncHVfZ2RzX3JlZ19vZmZzZXRbdm1pZF0u bWVtX2Jhc2UpOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+PiAtICAg ICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGdkc19iYXNlKTsKPj4gLQo+PiAtICAgICAgIC8q IEdEUyBTaXplICovCj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUMyhQ QUNLRVQzX1dSSVRFX0RBVEEsIDMpKTsKPj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5n LCAoV1JJVEVfREFUQV9FTkdJTkVfU0VMKDApIHwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBXUklURV9EQVRBX0RTVF9TRUwoMCkpKTsKPj4gLSAgICAgICBhbWRncHVfcmluZ193 cml0ZShyaW5nLCBhbWRncHVfZ2RzX3JlZ19vZmZzZXRbdm1pZF0ubWVtX3NpemUpOwo+PiAtICAg ICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIGdkc19zaXplKTsKPj4gLQo+PiAtICAgICAgIC8qIEdXUyAqLwo+PiAtICAgICAg IGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19XUklURV9EQVRBLCAzKSk7 Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKFdSSVRFX0RBVEFfRU5HSU5FX1NF TCgwKSB8Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfREFUQV9EU1Rf U0VMKDApKSk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgYW1kZ3B1X2dkc19y ZWdfb2Zmc2V0W3ZtaWRdLmd3cyk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg MCk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgZ3dzX3NpemUgPDwgR0RTX0dX U19WTUlEMF9fU0laRV9fU0hJRlQgfAo+PiBnd3NfYmFzZSk7Cj4+IC0KPj4gLSAgICAgICAvKiBP QSAqLwo+PiAtICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19X UklURV9EQVRBLCAzKSk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKFdSSVRF X0RBVEFfRU5HSU5FX1NFTCgwKSB8Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg V1JJVEVfREFUQV9EU1RfU0VMKDApKSk7Cj4+IC0gICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgYW1kZ3B1X2dkc19yZWdfb2Zmc2V0W3ZtaWRdLm9hKTsKPj4gLSAgICAgICBhbWRncHVfcmlu Z193cml0ZShyaW5nLCAwKTsKPj4gLSAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAoMSA8 PCAob2Ffc2l6ZSArIG9hX2Jhc2UpKSAtICgxIDw8Cj4+IG9hX2Jhc2UpKTsKPj4gLX0KPj4gLQo+ PiAgIHN0YXRpYyB1aW50MzJfdCB3YXZlX3JlYWRfaW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCBzaW1kLAo+PiB1aW50MzJfdCB3YXZlLCB1aW50MzJfdCBhZGRyZXNzKQo+ PiAgIHsKPj4gICAgICAgICBXUkVHMzIobW1TUV9JTkRfSU5ERVgsCj4+ICAgICAgICAgICAgICAg ICAod2F2ZSA8PCBTUV9JTkRfSU5ERVhfX1dBVkVfSURfX1NISUZUKSB8Cj4+ICAgICAgICAgICAg ICAgICAoc2ltZCA8PCBTUV9JTkRfSU5ERVhfX1NJTURfSURfX1NISUZUKSB8Cj4+ICAgICAgICAg ICAgICAgICAoYWRkcmVzcyA8PCBTUV9JTkRfSU5ERVhfX0lOREVYX19TSElGVCkgfAo+PiAgICAg ICAgICAgICAgICAgKFNRX0lORF9JTkRFWF9fRk9SQ0VfUkVBRF9NQVNLKSk7Cj4+ICAgICAgICAg cmV0dXJuIFJSRUczMihtbVNRX0lORF9EQVRBKTsKPj4gICB9Cj4+ICAgQEAgLTcxMzIsMjEgKzcw ODIsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcwo+PiBnZnhfdjhf MF9yaW5nX2Z1bmNzX2dmeCA9IHsKPj4gICAgICAgICAgICAgICAgIDMxICsgLyogREVfTUVUQSAq Lwo+PiAgICAgICAgICAgICAgICAgMyArIC8qIENOVFhfQ1RSTCAqLwo+PiAgICAgICAgICAgICAg ICAgNSArIC8qIEhEUF9JTlZMICovCj4+ICAgICAgICAgICAgICAgICA4ICsgOCArIC8qIEZFTkNF IHgyICovCj4+ICAgICAgICAgICAgICAgICAyLCAvKiBTV0lUQ0hfQlVGRkVSICovCj4+ICAgICAg ICAgLmVtaXRfaWJfc2l6ZSA9IDQsIC8qIGdmeF92OF8wX3JpbmdfZW1pdF9pYl9nZnggKi8KPj4g ICAgICAgICAuZW1pdF9pYiA9IGdmeF92OF8wX3JpbmdfZW1pdF9pYl9nZngsCj4+ICAgICAgICAg LmVtaXRfZmVuY2UgPSBnZnhfdjhfMF9yaW5nX2VtaXRfZmVuY2VfZ2Z4LAo+PiAgICAgICAgIC5l bWl0X3BpcGVsaW5lX3N5bmMgPSBnZnhfdjhfMF9yaW5nX2VtaXRfcGlwZWxpbmVfc3luYywKPj4g ICAgICAgICAuZW1pdF92bV9mbHVzaCA9IGdmeF92OF8wX3JpbmdfZW1pdF92bV9mbHVzaCwKPj4g LSAgICAgICAuZW1pdF9nZHNfc3dpdGNoID0gZ2Z4X3Y4XzBfcmluZ19lbWl0X2dkc19zd2l0Y2gs Cj4+ICAgICAgICAgLmVtaXRfaGRwX2ZsdXNoID0gZ2Z4X3Y4XzBfcmluZ19lbWl0X2hkcF9mbHVz aCwKPj4gICAgICAgICAudGVzdF9yaW5nID0gZ2Z4X3Y4XzBfcmluZ190ZXN0X3JpbmcsCj4+ICAg ICAgICAgLnRlc3RfaWIgPSBnZnhfdjhfMF9yaW5nX3Rlc3RfaWIsCj4+ICAgICAgICAgLmluc2Vy dF9ub3AgPSBhbWRncHVfcmluZ19pbnNlcnRfbm9wLAo+PiAgICAgICAgIC5wYWRfaWIgPSBhbWRn cHVfcmluZ19nZW5lcmljX3BhZF9pYiwKPj4gICAgICAgICAuZW1pdF9zd2l0Y2hfYnVmZmVyID0g Z2Z4X3Y4X3JpbmdfZW1pdF9zYiwKPj4gICAgICAgICAuZW1pdF9jbnR4Y250bCA9IGdmeF92OF9y aW5nX2VtaXRfY250eGNudGwsCj4+ICAgICAgICAgLmluaXRfY29uZF9leGVjID0gZ2Z4X3Y4XzBf cmluZ19lbWl0X2luaXRfY29uZF9leGVjLAo+PiAgICAgICAgIC5wYXRjaF9jb25kX2V4ZWMgPSBn ZnhfdjhfMF9yaW5nX2VtaXRfcGF0Y2hfY29uZF9leGVjLAo+PiAgICAgICAgIC5lbWl0X3dyZWcg PSBnZnhfdjhfMF9yaW5nX2VtaXRfd3JlZywKPj4gQEAgLTcxNTUsNTEgKzcxMDQsNDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcwo+PiBnZnhfdjhfMF9yaW5nX2Z1bmNz X2dmeCA9IHsKPj4gICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgZ2Z4 X3Y4XzBfcmluZ19mdW5jc19jb21wdXRlID0gewo+PiAgICAgICAgIC50eXBlID0gQU1ER1BVX1JJ TkdfVFlQRV9DT01QVVRFLAo+PiAgICAgICAgIC5hbGlnbl9tYXNrID0gMHhmZiwKPj4gICAgICAg ICAubm9wID0gUEFDS0VUMyhQQUNLRVQzX05PUCwgMHgzRkZGKSwKPj4gICAgICAgICAuc3VwcG9y dF82NGJpdF9wdHJzID0gZmFsc2UsCj4+ICAgICAgICAgLmdldF9ycHRyID0gZ2Z4X3Y4XzBfcmlu Z19nZXRfcnB0ciwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==