From mboxrd@z Thu Jan 1 00:00:00 1970 From: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH 01/19] drm/msm: dpu_encoder: Replace DPU_EVT with tracepoints Date: Tue, 26 Jun 2018 21:27:31 +0530 Message-ID: References: <20180620204841.56354-1-seanpaul@chromium.org> <20180620204841.56354-2-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180620204841.56354-2-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0wNi0yMSAwMjoxOCwgU2VhbiBQYXVsIHdyb3RlOgo+IFRoaXMgcGF0Y2ggY29udmVy dHMgYWxsIERQVV9FVlRzIGluIGRwdV9lbmNvZGVyIHdpdGggZWl0aGVyIGEgRFJNXyogbG9nCj4g bWVzc2FnZSBvciBhIGxpbnV4IHRyYWNlcG9pbnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2VhbiBQ YXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBSYWplc2ggWWFkYXYgPHJ5 YWRhdkBjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuYyB8IDI5MCArKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaCAgIHwgMzI5ICsrKysrKysrKysrKysrKysrKysr Cj4gIDIgZmlsZXMgY2hhbmdlZCwgNDY0IGluc2VydGlvbnMoKyksIDE1NSBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXIuYwo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+IGlu ZGV4IDExYTEwNDViZjEzMi4uNmFhZDQwZGNjYjA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4gQEAgLTI1NCwxMSArMjU0LDkgQEAgc3RhdGlj IGlubGluZSBpbnQKPiBfZHB1X2VuY29kZXJfcG93ZXJfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0ICpkcHVfZW5jLAo+ICB2b2lkIGRwdV9lbmNvZGVyX2hlbHBlcl9yZXBvcnRfaXJxX3Rp bWVvdXQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgCj4gKnBoeXNfZW5jLAo+ICAJCWVudW0gZHB1 X2ludHJfaWR4IGludHJfaWR4KQo+ICB7Cj4gLQlEUFVfRVZUMzIoRFJNSUQocGh5c19lbmMtPnBh cmVudCksCj4gLQkJCXBoeXNfZW5jLT5pbnRmX2lkeCAtIElOVEZfMCwKPiAtCQkJcGh5c19lbmMt Pmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAo+IC0JCQlpbnRyX2lkeCk7Cj4gLQlEUFVfRVJST1Jf UEhZUyhwaHlzX2VuYywgImlycSAlZCB0aW1lb3V0XG4iLCBpbnRyX2lkeCk7Cj4gKwlEUk1fRVJS T1IoImlycSB0aW1lb3V0IGlkPSV1LCBpbnRmPSVkLCBwcD0lZCwgaW50cj0lZFxuIiwKPiArCQkg IERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLCBwaHlzX2VuYy0+aW50Zl9pZHggLSBJTlRGXzAsCj4g KwkJICBwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsIGludHJfaWR4KTsKPiAKPiAg CWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSkKPiAgCQlwaHlzX2Vu Yy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSgKPiBAQCAtMjg0LDI1ICsyODIsMjMgQEAg aW50IGRwdV9lbmNvZGVyX2hlbHBlcl93YWl0X2Zvcl9pcnEoc3RydWN0Cj4gZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmMsCj4gCj4gIAkvKiByZXR1cm4gRVdPVUxEQkxPQ0sgc2luY2Ugd2Uga25v dyB0aGUgd2FpdCBpc24ndCBuZWNlc3NhcnkgKi8KPiAgCWlmIChwaHlzX2VuYy0+ZW5hYmxlX3N0 YXRlID09IERQVV9FTkNfRElTQUJMRUQpIHsKPiAtCQlEUFVfRVJST1JfUEhZUyhwaHlzX2VuYywg ImVuY29kZXIgaXMgZGlzYWJsZWRcbiIpOwo+IC0JCURQVV9FVlQzMihEUk1JRChwaHlzX2VuYy0+ cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdfaWR4LAo+IC0JCQkJaXJxLT5pcnFfaWR4LCBpbnRy X2lkeCwgRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJRFJNX0VSUk9SKCJlbmNvZGVyIGlzIGRpc2Fi bGVkIGlkPSV1LCBpbnRyPSVkLCBodz0lZCwgaXJxPSVkIiwKPiArCQkJICBEUk1JRChwaHlzX2Vu Yy0+cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdfaWR4LAo+ICsJCQkgIGlycS0+aXJxX2lkeCk7 Cj4gIAkJcmV0dXJuIC1FV09VTERCTE9DSzsKPiAgCX0KPiAKPiAgCWlmIChpcnEtPmlycV9pZHgg PCAwKSB7Cj4gLQkJRFBVX0RFQlVHX1BIWVMocGh5c19lbmMsICJpcnEgJXMgaHcgJWQgZGlzYWJs ZWQsIHNraXAgd2FpdFxuIiwKPiAtCQkJCWlycS0+bmFtZSwgaXJxLT5od19pZHgpOwo+IC0JCURQ VV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdfaWR4LAo+ IC0JCQkJaXJxLT5pcnFfaWR4KTsKPiArCQlEUk1fREVCVUdfS01TKCJza2lwIGlycSB3YWl0IGlk PSV1LCBpbnRyPSVkLCBodz0lZCwgaXJxPSVzIiwKPiArCQkJICAgICAgRFJNSUQocGh5c19lbmMt PnBhcmVudCksIGludHJfaWR4LCBpcnEtPmh3X2lkeCwKPiArCQkJICAgICAgaXJxLT5uYW1lKTsK PiAgCQlyZXR1cm4gMDsKPiAgCX0KPiAKPiAtCURQVV9ERUJVR19QSFlTKHBoeXNfZW5jLCAicGVu ZGluZ19jbnQgJWRcbiIsCj4gLQkJCWF0b21pY19yZWFkKHdhaXRfaW5mby0+YXRvbWljX2NudCkp Owo+IC0JRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGludHJfaWR4 LCBpcnEtPmh3X2lkeCwKPiAtCQlpcnEtPmlycV9pZHgsIHBoeXNfZW5jLT5od19wcC0+aWR4IC0g UElOR1BPTkdfMCwKPiAtCQlhdG9taWNfcmVhZCh3YWl0X2luZm8tPmF0b21pY19jbnQpLCBEUFVf RVZUTE9HX0ZVTkNfRU5UUlkpOwo+ICsJRFJNX0RFQlVHX0tNUygiaWQ9JXUsIGludHI9JWQsIGh3 PSVkLCBpcnE9JWQsIHBwPSVkLCBwZW5kaW5nX2NudD0lZCIsCj4gKwkJICAgICAgRFJNSUQocGh5 c19lbmMtPnBhcmVudCksIGludHJfaWR4LCBpcnEtPmh3X2lkeCwKPiArCQkgICAgICBpcnEtPmly cV9pZHgsIHBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwKPiArCQkgICAgICBhdG9t aWNfcmVhZCh3YWl0X2luZm8tPmF0b21pY19jbnQpKTsKPiAKPiAgCXJldCA9IGRwdV9lbmNvZGVy X2hlbHBlcl93YWl0X2V2ZW50X3RpbWVvdXQoCj4gIAkJCURSTUlEKHBoeXNfZW5jLT5wYXJlbnQp LAo+IEBAIC0zMTUsMzYgKzMxMSwzMyBAQCBpbnQgZHB1X2VuY29kZXJfaGVscGVyX3dhaXRfZm9y X2lycShzdHJ1Y3QKPiBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKPiAgCQlpZiAoaXJxX3N0 YXR1cykgewo+ICAJCQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IAo+IC0JCQlEUFVfRVZUMzIoRFJN SUQocGh5c19lbmMtPnBhcmVudCksIGludHJfaWR4LAo+IC0JCQkJaXJxLT5od19pZHgsIGlycS0+ aXJxX2lkeCwKPiAtCQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwKPiAtCQkJ CWF0b21pY19yZWFkKHdhaXRfaW5mby0+YXRvbWljX2NudCkpOwo+IC0JCQlEUFVfREVCVUdfUEhZ UyhwaHlzX2VuYywKPiAtCQkJCQkiZG9uZSBidXQgaXJxICVkIG5vdCB0cmlnZ2VyZWRcbiIsCj4g LQkJCQkJaXJxLT5pcnFfaWR4KTsKPiArCQkJRFJNX0RFQlVHX0tNUygiaXJxIG5vdCB0cmlnZ2Vy ZWQgaWQ9JXUsIGludHI9JWQsICIKPiArCQkJCSAgICAgICJodz0lZCwgaXJxPSVkLCBwcD0lZCwg YXRvbWljX2NudD0lZCIsCj4gKwkJCQkgICAgICBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50 cl9pZHgsCj4gKwkJCQkgICAgICBpcnEtPmh3X2lkeCwgaXJxLT5pcnFfaWR4LAo+ICsJCQkJICAg ICAgcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAo+ICsJCQkJICAgICAgYXRvbWlj X3JlYWQod2FpdF9pbmZvLT5hdG9taWNfY250KSk7Cj4gIAkJCWxvY2FsX2lycV9zYXZlKGZsYWdz KTsKPiAgCQkJaXJxLT5jYi5mdW5jKHBoeXNfZW5jLCBpcnEtPmlycV9pZHgpOwo+ICAJCQlsb2Nh bF9pcnFfcmVzdG9yZShmbGFncyk7Cj4gIAkJCXJldCA9IDA7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJ cmV0ID0gLUVUSU1FRE9VVDsKPiAtCQkJRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQp LCBpbnRyX2lkeCwKPiAtCQkJCWlycS0+aHdfaWR4LCBpcnEtPmlycV9pZHgsCj4gLQkJCQlwaHlz X2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsCj4gLQkJCQlhdG9taWNfcmVhZCh3YWl0X2lu Zm8tPmF0b21pY19jbnQpLCBpcnFfc3RhdHVzLAo+IC0JCQkJRFBVX0VWVExPR19FUlJPUik7Cj4g KwkJCURSTV9ERUJVR19LTVMoImlycSB0aW1lb3V0IGlkPSV1LCBpbnRyPSVkLCAiCj4gKwkJCQkg ICAgICAiaHc9JWQsIGlycT0lZCwgcHA9JWQsIGF0b21pY19jbnQ9JWQiLAo+ICsJCQkJICAgICAg RFJNSUQocGh5c19lbmMtPnBhcmVudCksIGludHJfaWR4LAo+ICsJCQkJICAgICAgaXJxLT5od19p ZHgsIGlycS0+aXJxX2lkeCwKPiArCQkJCSAgICAgIHBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElO R1BPTkdfMCwKPiArCQkJCSAgICAgIGF0b21pY19yZWFkKHdhaXRfaW5mby0+YXRvbWljX2NudCkp Owo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gIAkJcmV0ID0gMDsKPiAtCQlEUFVfRVZUMzIoRFJNSUQo cGh5c19lbmMtPnBhcmVudCksIGludHJfaWR4LCBpcnEtPmh3X2lkeCwKPiAtCQkJaXJxLT5pcnFf aWR4LCBwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsCj4gKwkJdHJhY2VfZHB1X2Vu Y19pcnFfd2FpdF9zdWNjZXNzKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAo+ICsJCQlpbnRyX2lk eCwgaXJxLT5od19pZHgsIGlycS0+aXJxX2lkeCwKPiArCQkJcGh5c19lbmMtPmh3X3BwLT5pZHgg LSBQSU5HUE9OR18wLAo+ICAJCQlhdG9taWNfcmVhZCh3YWl0X2luZm8tPmF0b21pY19jbnQpKTsK PiAgCX0KPiAKPiAtCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLCBp bnRyX2lkeCwgaXJxLT5od19pZHgsCj4gLQkJaXJxLT5pcnFfaWR4LCByZXQsIHBoeXNfZW5jLT5o d19wcC0+aWR4IC0gUElOR1BPTkdfMCwKPiAtCQlhdG9taWNfcmVhZCh3YWl0X2luZm8tPmF0b21p Y19jbnQpLCBEUFVfRVZUTE9HX0ZVTkNfRVhJVCk7Cj4gLQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ IAo+IEBAIC0zODgsMjIgKzM4MSwxNyBAQCBpbnQgZHB1X2VuY29kZXJfaGVscGVyX3JlZ2lzdGVy X2lycShzdHJ1Y3QKPiBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKPiAKPiAgCXJldCA9IGRw dV9jb3JlX2lycV9lbmFibGUocGh5c19lbmMtPmRwdV9rbXMsICZpcnEtPmlycV9pZHgsIDEpOwo+ ICAJaWYgKHJldCkgewo+IC0JCURQVV9FUlJPUl9QSFlTKHBoeXNfZW5jLAo+IC0JCQkiZW5hYmxl IElSUSBmb3IgaW50cjolcyBmYWlsZWQsIGlycV9pZHggJWRcbiIsCj4gLQkJCWlycS0+bmFtZSwg aXJxLT5pcnFfaWR4KTsKPiAtCj4gKwkJRFJNX0VSUk9SKCJlbmFibGUgZmFpbGVkIGlkPSV1LCBp bnRyPSVkLCBodz0lZCwgaXJxPSVkIiwKPiArCQkJICBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwg aW50cl9pZHgsIGlycS0+aHdfaWR4LAo+ICsJCQkgIGlycS0+aXJxX2lkeCk7Cj4gIAkJZHB1X2Nv cmVfaXJxX3VucmVnaXN0ZXJfY2FsbGJhY2socGh5c19lbmMtPmRwdV9rbXMsCj4gIAkJCQlpcnEt PmlycV9pZHgsICZpcnEtPmNiKTsKPiAtCj4gLQkJRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5w YXJlbnQpLCBpbnRyX2lkeCwgaXJxLT5od19pZHgsCj4gLQkJCQlpcnEtPmlycV9pZHgsIERQVV9F VlRMT0dfRVJST1IpOwo+ICAJCWlycS0+aXJxX2lkeCA9IC1FSU5WQUw7Cj4gIAkJcmV0dXJuIHJl dDsKPiAgCX0KPiAKPiAtCURQVV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9p ZHgsIGlycS0+aHdfaWR4LCAKPiBpcnEtPmlycV9pZHgpOwo+IC0JRFBVX0RFQlVHX1BIWVMocGh5 c19lbmMsICJyZWdpc3RlcmVkIGlycSAlcyBpZHg6ICVkXG4iLAo+IC0JCQlpcnEtPm5hbWUsIGly cS0+aXJxX2lkeCk7Cj4gKwl0cmFjZV9kcHVfZW5jX2lycV9yZWdpc3Rlcl9zdWNjZXNzKERSTUlE KHBoeXNfZW5jLT5wYXJlbnQpLCBpbnRyX2lkeCwKPiArCQkJCWlycS0+aHdfaWR4LCBpcnEtPmly cV9pZHgpOwo+IAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC00MjIsMjggKzQxMCwyOSBAQCBp bnQgZHB1X2VuY29kZXJfaGVscGVyX3VucmVnaXN0ZXJfaXJxKHN0cnVjdAo+IGRwdV9lbmNvZGVy X3BoeXMgKnBoeXNfZW5jLAo+IAo+ICAJLyogc2lsZW50bHkgc2tpcCBpcnFzIHRoYXQgd2VyZW4n dCByZWdpc3RlcmVkICovCj4gIAlpZiAoaXJxLT5pcnFfaWR4IDwgMCkgewo+IC0JCURQVV9FUlJP UigKPiAtCQkJImV4dHJhIHVucmVnaXN0ZXIgaXJxLCBlbmMlZCBpbnRyX2lkeDoweCV4IGh3X2lk eDoweCV4IAo+IGlycV9pZHg6MHgleFxuIiwKPiAtCQkJCURSTUlEKHBoeXNfZW5jLT5wYXJlbnQp LCBpbnRyX2lkeCwgaXJxLT5od19pZHgsCj4gLQkJCQlpcnEtPmlycV9pZHgpOwo+IC0JCURQVV9F VlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdfaWR4LAo+IC0J CQkJaXJxLT5pcnFfaWR4LCBEUFVfRVZUTE9HX0VSUk9SKTsKPiArCQlEUk1fRVJST1IoImR1cGxp Y2F0ZSB1bnJlZ2lzdGVyIGlkPSV1LCBpbnRyPSVkLCBodz0lZCwgaXJxPSVkIiwKPiArCQkJICBE Uk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdfaWR4LAo+ICsJCQkgIGly cS0+aXJxX2lkeCk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gCj4gIAlyZXQgPSBkcHVfY29yZV9p cnFfZGlzYWJsZShwaHlzX2VuYy0+ZHB1X2ttcywgJmlycS0+aXJxX2lkeCwgMSk7Cj4gLQlpZiAo cmV0KQo+IC0JCURQVV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9pZHgsIGly cS0+aHdfaWR4LAo+IC0JCQkJaXJxLT5pcnFfaWR4LCByZXQsIERQVV9FVlRMT0dfRVJST1IpOwo+ ICsJaWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiZGlhYmxlIGZhaWxlZCBpZD0ldSwgaW50cj0l ZCwgaHc9JWQsIGlycT0lZCByZXQ9JWQiLAo+ICsJCQkgIERSTUlEKHBoeXNfZW5jLT5wYXJlbnQp LCBpbnRyX2lkeCwgaXJxLT5od19pZHgsCj4gKwkJCSAgaXJxLT5pcnFfaWR4LCByZXQpOwo+ICsJ fQo+IAo+ICAJcmV0ID0gZHB1X2NvcmVfaXJxX3VucmVnaXN0ZXJfY2FsbGJhY2socGh5c19lbmMt PmRwdV9rbXMsIAo+IGlycS0+aXJxX2lkeCwKPiAgCQkJJmlycS0+Y2IpOwo+IC0JaWYgKHJldCkK PiAtCQlEUFVfRVZUMzIoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGludHJfaWR4LCBpcnEtPmh3 X2lkeCwKPiAtCQkJCWlycS0+aXJxX2lkeCwgcmV0LCBEUFVfRVZUTE9HX0VSUk9SKTsKPiArCWlm IChyZXQpIHsKPiArCQlEUk1fRVJST1IoInVucmVnIGNiIGZhaWwgaWQ9JXUsIGludHI9JWQsIGh3 PSVkLCBpcnE9JWQgcmV0PSVkIiwKPiArCQkJICBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50 cl9pZHgsIGlycS0+aHdfaWR4LAo+ICsJCQkgIGlycS0+aXJxX2lkeCwgcmV0KTsKPiArCX0KPiAK PiAtCURQVV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaW50cl9pZHgsIGlycS0+aHdf aWR4LCAKPiBpcnEtPmlycV9pZHgpOwo+IC0JRFBVX0RFQlVHX1BIWVMocGh5c19lbmMsICJ1bnJl Z2lzdGVyZWQgJWRcbiIsIGlycS0+aXJxX2lkeCk7Cj4gKwl0cmFjZV9kcHVfZW5jX2lycV91bnJl Z2lzdGVyX3N1Y2Nlc3MoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIAo+IGludHJfaWR4LAo+ICsJ CQkJCSAgICAgaXJxLT5od19pZHgsIGlycS0+aXJxX2lkeCk7Cj4gCj4gIAlpcnEtPmlycV9pZHgg PSAtRUlOVkFMOwo+IAo+IEBAIC02MjgsNyArNjE3LDcgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rl cl92aXJ0X2F0b21pY19jaGVjaygKPiAgCWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7 Cj4gIAltb2RlID0gJmNydGNfc3RhdGUtPm1vZGU7Cj4gIAlhZGpfbW9kZSA9ICZjcnRjX3N0YXRl LT5hZGp1c3RlZF9tb2RlOwo+IC0JRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpKTsKPiArCXRyYWNl X2RwdV9lbmNfYXRvbWljX2NoZWNrKERSTUlEKGRybV9lbmMpKTsKPiAKPiAgCS8qCj4gIAkgKiBk aXNwbGF5IGRyaXZlcnMgbWF5IHBvcHVsYXRlIHByaXZhdGUgZmllbGRzIG9mIHRoZSBkcm0gZGlz cGxheSAKPiBtb2RlCj4gQEAgLTY3Niw3ICs2NjUsOCBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVy X3ZpcnRfYXRvbWljX2NoZWNrKAo+ICAJaWYgKCFyZXQpCj4gIAkJZHJtX21vZGVfc2V0X2NydGNp bmZvKGFkal9tb2RlLCAwKTsKPiAKPiAtCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgYWRqX21v ZGUtPmZsYWdzLCBhZGpfbW9kZS0+cHJpdmF0ZV9mbGFncyk7Cj4gKwl0cmFjZV9kcHVfZW5jX2F0 b21pY19jaGVja19mbGFncyhEUk1JRChkcm1fZW5jKSwgYWRqX21vZGUtPmZsYWdzLAo+ICsJCQlh ZGpfbW9kZS0+cHJpdmF0ZV9mbGFncyk7Cj4gCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTc2 Niw4ICs3NTYsNyBAQCBzdGF0aWMgdm9pZAo+IF9kcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9s X2hlbHBlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCj4gIAlwcml2ID0gZHJtX2VuYy0+ ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7Cj4g Cj4gLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJlbmFibGU6JWRcbiIsIGVuYWJsZSk7Cj4gLQlE UFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGVuYWJsZSk7Cj4gKwl0cmFjZV9kcHVfZW5jX3JjX2hl bHBlcihEUk1JRChkcm1fZW5jKSwgZW5hYmxlKTsKPiAKPiAgCWlmICghZHB1X2VuYy0+Y3VyX21h c3Rlcikgewo+ICAJCURQVV9FUlJPUigiZW5jb2RlciBtYXN0ZXIgbm90IHNldFxuIik7Cj4gQEAg LTgyNSwxMCArODE0LDggQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9s KHN0cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCQlzd19ldmVudCAhPSBEUFVfRU5D X1JDX0VWRU5UX1BSRV9TVE9QKSkKPiAgCQlyZXR1cm4gMDsKPiAKPiAtCURQVV9ERUJVR19FTkMo ZHB1X2VuYywgInN3X2V2ZW50OiVkLCBpZGxlX3BjX3N1cHBvcnRlZDolZFxuIiwgCj4gc3dfZXZl bnQsCj4gLQkJCWRwdV9lbmMtPmlkbGVfcGNfc3VwcG9ydGVkKTsKPiAtCURQVV9FVlQzMl9WRVJC T1NFKERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwgCj4gZHB1X2VuYy0+aWRsZV9wY19zdXBwb3J0 ZWQsCj4gLQkJCWRwdV9lbmMtPnJjX3N0YXRlLCBEUFVfRVZUTE9HX0ZVTkNfRU5UUlkpOwo+ICsJ dHJhY2VfZHB1X2VuY19yYyhEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsIAo+IGRwdV9lbmMtPmlk bGVfcGNfc3VwcG9ydGVkLAo+ICsJCQkgZHB1X2VuYy0+cmNfc3RhdGUsICJiZWdpbiIpOwo+IAo+ ICAJc3dpdGNoIChzd19ldmVudCkgewo+ICAJY2FzZSBEUFVfRU5DX1JDX0VWRU5UX0tJQ0tPRkY6 Cj4gQEAgLTg0MiwxOCArODI5LDE1IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcmVzb3VyY2Vf Y29udHJvbChzdHJ1Y3QKPiBkcm1fZW5jb2RlciAqZHJtX2VuYywKPiAKPiAgCQkvKiByZXR1cm4g aWYgdGhlIHJlc291cmNlIGNvbnRyb2wgaXMgYWxyZWFkeSBpbiBPTiBzdGF0ZSAqLwo+ICAJCWlm IChkcHVfZW5jLT5yY19zdGF0ZSA9PSBEUFVfRU5DX1JDX1NUQVRFX09OKSB7Cj4gLQkJCURQVV9E RUJVR19FTkMoZHB1X2VuYywgInN3X2V2ZW50OiVkLCByYyBpbiBPTiBzdGF0ZVxuIiwKPiAtCQkJ CQlzd19ldmVudCk7Cj4gLQkJCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsIGRw dV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJRFBVX0VWVExPR19GVU5DX0NBU0UxKTsKPiArCQkJRFJN X0RFQlVHX0tNUygiaWQ7JXUsIHN3X2V2ZW50OiVkLCByYyBpbiBPTiBzdGF0ZVxuIiwKPiArCQkJ CSAgICAgIERSTUlEKGRybV9lbmMpLCBzd19ldmVudCk7Cj4gIAkJCW11dGV4X3VubG9jaygmZHB1 X2VuYy0+cmNfbG9jayk7Cj4gIAkJCXJldHVybiAwOwo+ICAJCX0gZWxzZSBpZiAoZHB1X2VuYy0+ cmNfc3RhdGUgIT0gRFBVX0VOQ19SQ19TVEFURV9PRkYgJiYKPiAgCQkJCWRwdV9lbmMtPnJjX3N0 YXRlICE9IERQVV9FTkNfUkNfU1RBVEVfSURMRSkgewo+IC0JCQlEUFVfRVJST1JfRU5DKGRwdV9l bmMsICJzd19ldmVudDolZCwgcmMgaW4gc3RhdGUgJWRcbiIsCj4gLQkJCQkJc3dfZXZlbnQsIGRw dV9lbmMtPnJjX3N0YXRlKTsKPiAtCQkJRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBzd19ldmVu dCwgZHB1X2VuYy0+cmNfc3RhdGUsCj4gLQkJCQkJRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJCURS TV9ERUJVR19LTVMoImlkOyV1LCBzd19ldmVudDolZCwgcmMgaW4gc3RhdGUgJWRcbiIsCj4gKwkJ CQkgICAgICBEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsCj4gKwkJCQkgICAgICBkcHVfZW5jLT5y Y19zdGF0ZSk7Cj4gIAkJCW11dGV4X3VubG9jaygmZHB1X2VuYy0+cmNfbG9jayk7Cj4gIAkJCXJl dHVybiAtRUlOVkFMOwo+ICAJCX0KPiBAQCAtODYzLDEwICs4NDcsMTIgQEAgc3RhdGljIGludCBk cHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9sKHN0cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5j LAo+ICAJCWVsc2UKPiAgCQkJX2RwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2xfaGVscGVyKGRy bV9lbmMsIHRydWUpOwo+IAo+IC0JCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQs IGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJRFBVX0VOQ19SQ19TVEFURV9PTiwgRFBVX0VWVExP R19GVU5DX0NBU0UxKTsKPiAgCQlkcHVfZW5jLT5yY19zdGF0ZSA9IERQVV9FTkNfUkNfU1RBVEVf T047Cj4gCj4gKwkJdHJhY2VfZHB1X2VuY19yYyhEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsCj4g KwkJCQkgZHB1X2VuYy0+aWRsZV9wY19zdXBwb3J0ZWQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+ICsJ CQkJICJraWNrb2ZmIik7Cj4gKwo+ICAJCW11dGV4X3VubG9jaygmZHB1X2VuYy0+cmNfbG9jayk7 Cj4gIAkJYnJlYWs7Cj4gCj4gQEAgLTg3OCwxMCArODY0LDkgQEAgc3RhdGljIGludCBkcHVfZW5j b2Rlcl9yZXNvdXJjZV9jb250cm9sKHN0cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJ CSAqIHRoZSByZXNvdXJjZV9jb250cm9sCj4gIAkJICovCj4gIAkJaWYgKGRwdV9lbmMtPnJjX3N0 YXRlICE9IERQVV9FTkNfUkNfU1RBVEVfT04pIHsKPiAtCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5j LCAic3dfZXZlbnQ6JWQscmM6JWQtdW5leHBlY3RlZFxuIiwKPiAtCQkJCQlzd19ldmVudCwgZHB1 X2VuYy0+cmNfc3RhdGUpOwo+IC0JCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50 LCBkcHVfZW5jLT5yY19zdGF0ZSwKPiAtCQkJCQlEUFVfRVZUTE9HX0VSUk9SKTsKPiArCQkJRFJN X0RFQlVHX0tNUygiaWQ6JWQsIHN3X2V2ZW50OiVkLHJjOiVkLXVuZXhwZWN0ZWRcbiIsCj4gKwkJ CQkgICAgICBEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsCj4gKwkJCQkgICAgICBkcHVfZW5jLT5y Y19zdGF0ZSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAKPiBAQCAtODkwLDkgKzg3 NSw4IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcmVzb3VyY2VfY29udHJvbChzdHJ1Y3QKPiBk cm1fZW5jb2RlciAqZHJtX2VuYywKPiAgCQkgKiBmcmFtZXMgcGVuZGluZwo+ICAJCSAqLwo+ICAJ CWlmIChkcHVfY3J0Y19mcmFtZV9wZW5kaW5nKGRybV9lbmMtPmNydGMpID4gMSkgewo+IC0JCQlE UFVfREVCVUdfRU5DKGRwdV9lbmMsICJza2lwIHNjaGVkdWxlIHdvcmsiKTsKPiAtCQkJRFBVX0VW VDMyKERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwgZHB1X2VuYy0+cmNfc3RhdGUsCj4gLQkJCQlE UFVfRVZUTE9HX0ZVTkNfQ0FTRTIpOwo+ICsJCQlEUk1fREVCVUdfS01TKCJpZDolZCBza2lwIHNj aGVkdWxlIHdvcmtcbiIsCj4gKwkJCQkgICAgICBEUk1JRChkcm1fZW5jKSk7Cj4gIAkJCXJldHVy biAwOwo+ICAJCX0KPiAKPiBAQCAtOTAxLDEwICs4ODUsOSBAQCBzdGF0aWMgaW50IGRwdV9lbmNv ZGVyX3Jlc291cmNlX2NvbnRyb2woc3RydWN0Cj4gZHJtX2VuY29kZXIgKmRybV9lbmMsCj4gIAkJ CSZkcHVfZW5jLT5kZWxheWVkX29mZl93b3JrLAo+ICAJCQltc2Vjc190b19qaWZmaWVzKGRwdV9l bmMtPmlkbGVfdGltZW91dCkpOwo+IAo+IC0JCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgc3df ZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJZHB1X2VuYy0+aWRsZV90aW1lb3V0LCBE UFVfRVZUTE9HX0ZVTkNfQ0FTRTIpOwo+IC0JCURQVV9ERUJVR19FTkMoZHB1X2VuYywgInN3X2V2 ZW50OiVkLCB3b3JrIHNjaGVkdWxlZFxuIiwKPiAtCQkJCXN3X2V2ZW50KTsKPiArCQl0cmFjZV9k cHVfZW5jX3JjKERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwKPiArCQkJCSBkcHVfZW5jLT5pZGxl X3BjX3N1cHBvcnRlZCwgZHB1X2VuYy0+cmNfc3RhdGUsCj4gKwkJCQkgImZyYW1lIGRvbmUiKTsK PiAgCQlicmVhazsKPiAKPiAgCWNhc2UgRFBVX0VOQ19SQ19FVkVOVF9QUkVfU1RPUDoKPiBAQCAt OTIzLDIwICs5MDYsMTkgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9s KHN0cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCS8qIHNraXAgaWYgaXMgYWxyZWFk eSBPRkYgb3IgSURMRSwgcmVzb3VyY2VzIGFyZSBvZmYgYWxyZWFkeSAqLwo+ICAJCWVsc2UgaWYg KGRwdV9lbmMtPnJjX3N0YXRlID09IERQVV9FTkNfUkNfU1RBVEVfT0ZGIHx8Cj4gIAkJCQlkcHVf ZW5jLT5yY19zdGF0ZSA9PSBEUFVfRU5DX1JDX1NUQVRFX0lETEUpIHsKPiAtCQkJRFBVX0RFQlVH X0VOQyhkcHVfZW5jLCAic3dfZXZlbnQ6JWQsIHJjIGluICVkIHN0YXRlXG4iLAo+IC0JCQkJCXN3 X2V2ZW50LCBkcHVfZW5jLT5yY19zdGF0ZSk7Cj4gLQkJCURQVV9FVlQzMihEUk1JRChkcm1fZW5j KSwgc3dfZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJRFBVX0VWVExPR19GVU5DX0NB U0UzKTsKPiArCQkJRFJNX0RFQlVHX0tNUygiaWQ6JXUsIHN3X2V2ZW50OiVkLCByYyBpbiAlZCBz dGF0ZVxuIiwKPiArCQkJCSAgICAgIERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwKPiArCQkJCSAg ICAgIGRwdV9lbmMtPnJjX3N0YXRlKTsKPiAgCQkJbXV0ZXhfdW5sb2NrKCZkcHVfZW5jLT5yY19s b2NrKTsKPiAgCQkJcmV0dXJuIDA7Cj4gIAkJfQo+IAo+IC0JCURQVV9FVlQzMihEUk1JRChkcm1f ZW5jKSwgc3dfZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJRFBVX0VOQ19SQ19TVEFU RV9QUkVfT0ZGLAo+IC0JCQkJRFBVX0VWVExPR19GVU5DX0NBU0UzKTsKPiAtCj4gIAkJZHB1X2Vu Yy0+cmNfc3RhdGUgPSBEUFVfRU5DX1JDX1NUQVRFX1BSRV9PRkY7Cj4gCj4gKwkJdHJhY2VfZHB1 X2VuY19yYyhEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsCj4gKwkJCQkgZHB1X2VuYy0+aWRsZV9w Y19zdXBwb3J0ZWQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+ICsJCQkJICJwcmUgc3RvcCIpOwo+ICsK PiAgCQltdXRleF91bmxvY2soJmRwdV9lbmMtPnJjX2xvY2spOwo+ICAJCWJyZWFrOwo+IAo+IEBA IC05NDUsMTcgKzkyNywxMyBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRy b2woc3RydWN0Cj4gZHJtX2VuY29kZXIgKmRybV9lbmMsCj4gCj4gIAkJLyogcmV0dXJuIGlmIHRo ZSByZXNvdXJjZSBjb250cm9sIGlzIGFscmVhZHkgaW4gT0ZGIHN0YXRlICovCj4gIAkJaWYgKGRw dV9lbmMtPnJjX3N0YXRlID09IERQVV9FTkNfUkNfU1RBVEVfT0ZGKSB7Cj4gLQkJCURQVV9ERUJV R19FTkMoZHB1X2VuYywgInN3X2V2ZW50OiVkLCByYyBpbiBPRkYgc3RhdGVcbiIsCj4gLQkJCQkJ c3dfZXZlbnQpOwo+IC0JCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50LCBkcHVf ZW5jLT5yY19zdGF0ZSwKPiAtCQkJCURQVV9FVlRMT0dfRlVOQ19DQVNFNCk7Cj4gKwkJCURSTV9E RUJVR19LTVMoImlkOiAldSwgc3dfZXZlbnQ6JWQsIHJjIGluIE9GRiBzdGF0ZVxuIiwKPiArCQkJ CSAgICAgIERSTUlEKGRybV9lbmMpLCBzd19ldmVudCk7Cj4gIAkJCW11dGV4X3VubG9jaygmZHB1 X2VuYy0+cmNfbG9jayk7Cj4gIAkJCXJldHVybiAwOwo+ICAJCX0gZWxzZSBpZiAoZHB1X2VuYy0+ cmNfc3RhdGUgPT0gRFBVX0VOQ19SQ19TVEFURV9PTikgewo+IC0JCQlEUFVfRVJST1JfRU5DKGRw dV9lbmMsICJzd19ldmVudDolZCwgcmMgaW4gc3RhdGUgJWRcbiIsCj4gLQkJCQkJc3dfZXZlbnQs IGRwdV9lbmMtPnJjX3N0YXRlKTsKPiAtCQkJRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBzd19l dmVudCwgZHB1X2VuYy0+cmNfc3RhdGUsCj4gLQkJCQkJRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJ CURSTV9FUlJPUigiaWQ6ICV1LCBzd19ldmVudDolZCwgcmMgaW4gc3RhdGUgJWRcbiIsCj4gKwkJ CQkgIERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwgZHB1X2VuYy0+cmNfc3RhdGUpOwo+ICAJCQlt dXRleF91bmxvY2soJmRwdV9lbmMtPnJjX2xvY2spOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAg CQl9Cj4gQEAgLTk2NywxMSArOTQ1LDEyIEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcmVzb3Vy Y2VfY29udHJvbChzdHJ1Y3QKPiBkcm1fZW5jb2RlciAqZHJtX2VuYywKPiAgCQlpZiAoZHB1X2Vu Yy0+cmNfc3RhdGUgPT0gRFBVX0VOQ19SQ19TVEFURV9QUkVfT0ZGKQo+ICAJCQlfZHB1X2VuY29k ZXJfcmVzb3VyY2VfY29udHJvbF9oZWxwZXIoZHJtX2VuYywgZmFsc2UpOwo+IAo+IC0JCURQVV9F VlQzMihEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJ RFBVX0VOQ19SQ19TVEFURV9PRkYsIERQVV9FVlRMT0dfRlVOQ19DQVNFNCk7Cj4gLQo+ICAJCWRw dV9lbmMtPnJjX3N0YXRlID0gRFBVX0VOQ19SQ19TVEFURV9PRkY7Cj4gCj4gKwkJdHJhY2VfZHB1 X2VuY19yYyhEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsCj4gKwkJCQkgZHB1X2VuYy0+aWRsZV9w Y19zdXBwb3J0ZWQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+ICsJCQkJICJzdG9wIik7Cj4gKwo+ICAJ CW11dGV4X3VubG9jaygmZHB1X2VuYy0+cmNfbG9jayk7Cj4gIAkJYnJlYWs7Cj4gCj4gQEAgLTk3 OSwxMCArOTU4LDggQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9sKHN0 cnVjdAo+IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCW11dGV4X2xvY2soJmRwdV9lbmMtPnJj X2xvY2spOwo+IAo+ICAJCWlmIChkcHVfZW5jLT5yY19zdGF0ZSAhPSBEUFVfRU5DX1JDX1NUQVRF X09OKSB7Cj4gLQkJCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgInN3X2V2ZW50OiVkLCByYzolZCAh T04gc3RhdGVcbiIsCj4gLQkJCQkJc3dfZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlKTsKPiAtCQkJ RFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwgZHB1X2VuYy0+cmNfc3RhdGUsCj4g LQkJCQkJRFBVX0VWVExPR19FUlJPUik7Cj4gKwkJCURSTV9FUlJPUigiaWQ6ICV1LCBzd19ldmVu dDolZCwgcmM6JWQgIU9OIHN0YXRlXG4iLAo+ICsJCQkJICBEUk1JRChkcm1fZW5jKSwgc3dfZXZl bnQsIGRwdV9lbmMtPnJjX3N0YXRlKTsKPiAgCQkJbXV0ZXhfdW5sb2NrKCZkcHVfZW5jLT5yY19s b2NrKTsKPiAgCQkJcmV0dXJuIDA7Cj4gIAkJfQo+IEBAIC05OTIsMTEgKzk2OSw4IEBAIHN0YXRp YyBpbnQgZHB1X2VuY29kZXJfcmVzb3VyY2VfY29udHJvbChzdHJ1Y3QKPiBkcm1fZW5jb2RlciAq ZHJtX2VuYywKPiAgCQkgKiBpZ25vcmUgdGhlIElETEUgZXZlbnQsIGl0J3MgcHJvYmFibHkgYSBz dGFsZSB0aW1lciBldmVudAo+ICAJCSAqLwo+ICAJCWlmIChkcHVfZW5jLT5mcmFtZV9idXN5X21h c2tbMF0pIHsKPiAtCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLAo+IC0JCQkJCSJzd19ldmVudDol ZCwgcmM6JWQgZnJhbWUgcGVuZGluZ1xuIiwKPiAtCQkJCQlzd19ldmVudCwgZHB1X2VuYy0+cmNf c3RhdGUpOwo+IC0JCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50LCBkcHVfZW5j LT5yY19zdGF0ZSwKPiAtCQkJCQlEUFVfRVZUTE9HX0VSUk9SKTsKPiArCQkJRFJNX0VSUk9SKCJp ZDoldSwgc3dfZXZlbnQ6JWQsIHJjOiVkIGZyYW1lIHBlbmRpbmdcbiIsCj4gKwkJCQkgIERSTUlE KGRybV9lbmMpLCBzd19ldmVudCwgZHB1X2VuYy0+cmNfc3RhdGUpOwo+ICAJCQltdXRleF91bmxv Y2soJmRwdV9lbmMtPnJjX2xvY2spOwo+ICAJCQlyZXR1cm4gMDsKPiAgCQl9Cj4gQEAgLTEwMDYs MjEgKzk4MCwyNyBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2woc3Ry dWN0Cj4gZHJtX2VuY29kZXIgKmRybV9lbmMsCj4gIAkJZWxzZQo+ICAJCQlfZHB1X2VuY29kZXJf cmVzb3VyY2VfY29udHJvbF9oZWxwZXIoZHJtX2VuYywgZmFsc2UpOwo+IAo+IC0JCURQVV9FVlQz MihEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsIGRwdV9lbmMtPnJjX3N0YXRlLAo+IC0JCQkJRFBV X0VOQ19SQ19TVEFURV9JRExFLCBEUFVfRVZUTE9HX0ZVTkNfQ0FTRTcpOwo+ICAJCWRwdV9lbmMt PnJjX3N0YXRlID0gRFBVX0VOQ19SQ19TVEFURV9JRExFOwo+IAo+ICsJCXRyYWNlX2RwdV9lbmNf cmMoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50LAo+ICsJCQkJIGRwdV9lbmMtPmlkbGVfcGNfc3Vw cG9ydGVkLCBkcHVfZW5jLT5yY19zdGF0ZSwKPiArCQkJCSAiaWRsZSIpOwo+ICsKPiAgCQltdXRl eF91bmxvY2soJmRwdV9lbmMtPnJjX2xvY2spOwo+ICAJCWJyZWFrOwo+IAo+ICAJZGVmYXVsdDoK PiAtCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50LCBEUFVfRVZUTE9HX0VSUk9S KTsKPiAtCQlEUFVfRVJST1IoInVuZXhwZWN0ZWQgc3dfZXZlbnQ6ICVkXG4iLCBzd19ldmVudCk7 Cj4gKwkJRFJNX0VSUk9SKCJpZDoldSwgdW5leHBlY3RlZCBzd19ldmVudDogJWRcbiIsIERSTUlE KGRybV9lbmMpLAo+ICsJCQkgIHN3X2V2ZW50KTsKPiArCQl0cmFjZV9kcHVfZW5jX3JjKERSTUlE KGRybV9lbmMpLCBzd19ldmVudCwKPiArCQkJCSBkcHVfZW5jLT5pZGxlX3BjX3N1cHBvcnRlZCwg ZHB1X2VuYy0+cmNfc3RhdGUsCj4gKwkJCQkgImVycm9yIik7Cj4gIAkJYnJlYWs7Cj4gIAl9Cj4g Cj4gLQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChkcm1fZW5jKSwgc3dfZXZlbnQsIAo+IGRwdV9l bmMtPmlkbGVfcGNfc3VwcG9ydGVkLAo+IC0JCQlkcHVfZW5jLT5yY19zdGF0ZSwgRFBVX0VWVExP R19GVU5DX0VYSVQpOwo+ICsJdHJhY2VfZHB1X2VuY19yYyhEUk1JRChkcm1fZW5jKSwgc3dfZXZl bnQsCj4gKwkJCSBkcHVfZW5jLT5pZGxlX3BjX3N1cHBvcnRlZCwgZHB1X2VuYy0+cmNfc3RhdGUs Cj4gKwkJCSAiZW5kIik7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IAo+IEBAIC0xMDUwLDcgKzEwMzAs NyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X21vZGVfc2V0KHN0cnVjdAo+IGRybV9l bmNvZGVyICpkcm1fZW5jLAo+ICAJZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKPiAg CWNvbm5lY3Rvcl9saXN0ID0gJmRwdV9rbXMtPmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xp c3Q7Cj4gCj4gLQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYykpOwo+ICsJdHJhY2VfZHB1X2VuY19t b2RlX3NldChEUk1JRChkcm1fZW5jKSk7Cj4gCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5f aXRlciwgY29ubmVjdG9yX2xpc3QsIGhlYWQpCj4gIAkJaWYgKGNvbm5faXRlci0+ZW5jb2RlciA9 PSBkcm1fZW5jKQo+IEBAIC0xMTgwLDggKzExNjAsOCBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rl cl92aXJ0X2VuYWJsZShzdHJ1Y3QKPiBkcm1fZW5jb2RlciAqZHJtX2VuYykKPiAgCWRwdV9lbmMg PSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwo+ICAJY3VyX21vZGUgPSAmZHB1X2VuYy0+ YmFzZS5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiAKPiAtCURQVV9ERUJVR19FTkMoZHB1 X2VuYywgIlxuIik7Cj4gLQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGN1cl9tb2RlLT5oZGlz cGxheSwgY3VyX21vZGUtPnZkaXNwbGF5KTsKPiArCXRyYWNlX2RwdV9lbmNfZW5hYmxlKERSTUlE KGRybV9lbmMpLCBjdXJfbW9kZS0+aGRpc3BsYXksCj4gKwkJCSAgICAgY3VyX21vZGUtPnZkaXNw bGF5KTsKPiAKPiAgCWRwdV9lbmMtPmN1cl9tYXN0ZXIgPSBOVUxMOwo+ICAJZm9yIChpID0gMDsg aSA8IGRwdV9lbmMtPm51bV9waHlzX2VuY3M7IGkrKykgewo+IEBAIC0xMjU2LDcgKzEyMzYsNyBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2Rpc2FibGUoc3RydWN0Cj4gZHJtX2VuY29k ZXIgKmRybV9lbmMpCj4gIAlwcml2ID0gZHJtX2VuYy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWRw dV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7Cj4gCj4gLQlEUFVfRVZUMzIoRFJNSUQoZHJt X2VuYykpOwo+ICsJdHJhY2VfZHB1X2VuY19kaXNhYmxlKERSTUlEKGRybV9lbmMpKTsKPiAKPiAg CS8qIHdhaXQgZm9yIGlkbGUgKi8KPiAgCWRwdV9lbmNvZGVyX3dhaXRfZm9yX2V2ZW50KGRybV9l bmMsIE1TTV9FTkNfVFhfQ09NUExFVEUpOwo+IEBAIC0xMzM0LDcgKzEzMTQsOCBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl91bmRlcnJ1bl9jYWxsYmFjayhzdHJ1Y3QKPiBkcm1fZW5jb2RlciAq ZHJtX2VuYywKPiAKPiAgCURQVV9BVFJBQ0VfQkVHSU4oImVuY29kZXJfdW5kZXJydW5fY2FsbGJh Y2siKTsKPiAgCWF0b21pY19pbmMoJnBoeV9lbmMtPnVuZGVycnVuX2NudCk7Cj4gLQlEUFVfRVZU MzIoRFJNSUQoZHJtX2VuYyksIGF0b21pY19yZWFkKCZwaHlfZW5jLT51bmRlcnJ1bl9jbnQpKTsK PiArCXRyYWNlX2RwdV9lbmNfdW5kZXJydW5fY2IoRFJNSUQoZHJtX2VuYyksCj4gKwkJCQkgIGF0 b21pY19yZWFkKCZwaHlfZW5jLT51bmRlcnJ1bl9jbnQpKTsKPiAgCURQVV9BVFJBQ0VfRU5EKCJl bmNvZGVyX3VuZGVycnVuX2NhbGxiYWNrIik7Cj4gIH0KPiAKPiBAQCAtMTM1Miw4ICsxMzMzLDcg QEAgdm9pZCBkcHVfZW5jb2Rlcl9yZWdpc3Rlcl92YmxhbmtfY2FsbGJhY2soc3RydWN0Cj4gZHJt X2VuY29kZXIgKmRybV9lbmMsCj4gIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwo+ ICAJCXJldHVybjsKPiAgCX0KPiAtCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlxuIik7Cj4gLQlE UFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGVuYWJsZSk7Cj4gKwl0cmFjZV9kcHVfZW5jX3ZibGFu a19jYihEUk1JRChkcm1fZW5jKSwgZW5hYmxlKTsKPiAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZk cHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+ICAJZHB1X2VuYy0+Y3J0Y192Ymxh bmtfY2IgPSB2YmxfY2I7Cj4gQEAgLTEzODIsOCArMTM2Miw3IEBAIHZvaWQKPiBkcHVfZW5jb2Rl cl9yZWdpc3Rlcl9mcmFtZV9ldmVudF9jYWxsYmFjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9l bmMsCj4gIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwo+ICAJCXJldHVybjsKPiAg CX0KPiAtCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlxuIik7Cj4gLQlEUFVfRVZUMzIoRFJNSUQo ZHJtX2VuYyksIGVuYWJsZSwgMCk7Cj4gKwl0cmFjZV9kcHVfZW5jX2ZyYW1lX2V2ZW50X2NiKERS TUlEKGRybV9lbmMpLCBlbmFibGUpOwo+IAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9lbmMt PmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7Cj4gIAlkcHVfZW5jLT5jcnRjX2ZyYW1lX2V2ZW50 X2NiID0gZnJhbWVfZXZlbnRfY2I7Cj4gQEAgLTE0MDcsNyArMTM4Niw4IEBAIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX2ZyYW1lX2RvbmVfY2FsbGJhY2soCj4gIAkJCSAqIHN1cHByZXNzIGZyYW1l X2RvbmUgd2l0aG91dCB3YWl0ZXIsCj4gIAkJCSAqIGxpa2VseSBhdXRvcmVmcmVzaAo+ICAJCQkg Ki8KPiAtCQkJRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBldmVudCwgcmVhZHlfcGh5cy0+aW50 Zl9pZHgpOwo+ICsJCQl0cmFjZV9kcHVfZW5jX2ZyYW1lX2RvbmVfY2Jfbm90X2J1c3koRFJNSUQo ZHJtX2VuYyksCj4gKwkJCQkJZXZlbnQsIHJlYWR5X3BoeXMtPmludGZfaWR4KTsKPiAgCQkJcmV0 dXJuOwo+ICAJCX0KPiAKPiBAQCAtMTQxNSw4ICsxMzk1LDggQEAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfZnJhbWVfZG9uZV9jYWxsYmFjaygKPiAgCQlmb3IgKGkgPSAwOyBpIDwgZHB1X2VuYy0+ bnVtX3BoeXNfZW5jczsgaSsrKSB7Cj4gIAkJCWlmIChkcHVfZW5jLT5waHlzX2VuY3NbaV0gPT0g cmVhZHlfcGh5cykgewo+ICAJCQkJY2xlYXJfYml0KGksIGRwdV9lbmMtPmZyYW1lX2J1c3lfbWFz ayk7Cj4gLQkJCQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChkcm1fZW5jKSwgaSwKPiAtCQkJCQlk cHVfZW5jLT5mcmFtZV9idXN5X21hc2tbMF0pOwo+ICsJCQkJdHJhY2VfZHB1X2VuY19mcmFtZV9k b25lX2NiKERSTUlEKGRybV9lbmMpLCBpLAo+ICsJCQkJCQlkcHVfZW5jLT5mcmFtZV9idXN5X21h c2tbMF0pOwo+ICAJCQl9Cj4gIAkJfQo+IAo+IEBAIC0xNDY3LDYgKzE0NDcsNyBAQCBzdGF0aWMg aW5saW5lIHZvaWQKPiBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmRybV9lbmMsCj4gIHsKPiAgCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Cj4gIAlpbnQgcGVu ZGluZ19raWNrb2ZmX2NudDsKPiArCXUzMiByZXQgPSBVSU5UX01BWDsKPiAKPiAgCWlmICghZHJt X2VuYyB8fCAhcGh5cykgewo+ICAJCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChzKSwgZHJt X2VuYyAlZCwgcGh5c19lbmMgJWRcbiIsCj4gQEAgLTE0OTMsMTEgKzE0NzQsMTAgQEAgc3RhdGlj IGlubGluZSB2b2lkCj4gX2RwdV9lbmNvZGVyX3RyaWdnZXJfZmx1c2goc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jLAo+ICAJY3RsLT5vcHMudHJpZ2dlcl9mbHVzaChjdGwpOwo+IAo+ICAJaWYg KGN0bC0+b3BzLmdldF9wZW5kaW5nX2ZsdXNoKQo+IC0JCURQVV9FVlQzMihEUk1JRChkcm1fZW5j KSwgcGh5cy0+aW50Zl9pZHgsIHBlbmRpbmdfa2lja29mZl9jbnQsCj4gLQkJCWN0bC0+aWR4LCBj dGwtPm9wcy5nZXRfcGVuZGluZ19mbHVzaChjdGwpKTsKPiAtCWVsc2UKPiAtCQlEUFVfRVZUMzIo RFJNSUQoZHJtX2VuYyksIHBoeXMtPmludGZfaWR4LCBjdGwtPmlkeCwKPiAtCQkJCQkJcGVuZGlu Z19raWNrb2ZmX2NudCk7Cj4gKwkJcmV0ID0gY3RsLT5vcHMuZ2V0X3BlbmRpbmdfZmx1c2goY3Rs KTsKPiArCj4gKwl0cmFjZV9kcHVfZW5jX3RyaWdnZXJfZmx1c2goRFJNSUQoZHJtX2VuYyksIHBo eXMtPmludGZfaWR4LAo+ICsJCQkJICAgIHBlbmRpbmdfa2lja29mZl9jbnQsIGN0bC0+aWR4LCBy ZXQpOwo+ICB9Cj4gCj4gIC8qKgo+IEBAIC0xNTMyLDcgKzE1MTIsNyBAQCB2b2lkIGRwdV9lbmNv ZGVyX2hlbHBlcl90cmlnZ2VyX3N0YXJ0KHN0cnVjdAo+IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNf ZW5jKQo+ICAJY3RsID0gcGh5c19lbmMtPmh3X2N0bDsKPiAgCWlmIChjdGwgJiYgY3RsLT5vcHMu dHJpZ2dlcl9zdGFydCkgewo+ICAJCWN0bC0+b3BzLnRyaWdnZXJfc3RhcnQoY3RsKTsKPiAtCQlE UFVfRVZUMzIoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGN0bC0+aWR4KTsKPiArCQl0cmFjZV9k cHVfZW5jX3RyaWdnZXJfc3RhcnQoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIGN0bC0+aWR4KTsK PiAgCX0KPiAgfQo+IAo+IEBAIC0xNTUxLDggKzE1MzEsOSBAQCBpbnQgZHB1X2VuY29kZXJfaGVs cGVyX3dhaXRfZXZlbnRfdGltZW91dCgKPiAgCQkJCWF0b21pY19yZWFkKGluZm8tPmF0b21pY19j bnQpID09IDAsIGppZmZpZXMpOwo+ICAJCXRpbWUgPSBrdGltZV90b19tcyhrdGltZV9nZXQoKSk7 Cj4gCj4gLQkJRFBVX0VWVDMyX1ZFUkJPU0UoZHJtX2lkLCBod19pZCwgcmMsIHRpbWUsIGV4cGVj dGVkX3RpbWUsCj4gLQkJCQlhdG9taWNfcmVhZChpbmZvLT5hdG9taWNfY250KSk7Cj4gKwkJdHJh Y2VfZHB1X2VuY193YWl0X2V2ZW50X3RpbWVvdXQoZHJtX2lkLCBod19pZCwgcmMsIHRpbWUsCj4g KwkJCQkJCSBleHBlY3RlZF90aW1lLAo+ICsJCQkJCQkgYXRvbWljX3JlYWQoaW5mby0+YXRvbWlj X2NudCkpOwo+ICAJLyogSWYgd2UgdGltZWQgb3V0LCBjb3VudGVyIGlzIHZhbGlkIGFuZCB0aW1l IGlzIGxlc3MsIHdhaXQgYWdhaW4gKi8KPiAgCX0gd2hpbGUgKGF0b21pY19yZWFkKGluZm8tPmF0 b21pY19jbnQpICYmIChyYyA9PSAwKSAmJgo+ICAJCQkodGltZSA8IGV4cGVjdGVkX3RpbWUpKTsK PiBAQCAtMTU3Niw4ICsxNTU3LDggQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfaHdfcmVzZXQo c3RydWN0Cj4gZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIAlpZiAoIWN0bCB8fCAhY3Rs LT5vcHMucmVzZXQpCj4gIAkJcmV0dXJuOwo+IAo+IC0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAi Y3RsICVkIHJlc2V0XG4iLCAgY3RsLT5pZHgpOwo+IC0JRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5j LT5wYXJlbnQpLCBjdGwtPmlkeCk7Cj4gKwlEUk1fREVCVUdfS01TKCJpZDoldSBjdGwgJWQgcmVz ZXRcbiIsIERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAo+ICsJCSAgICAgIGN0bC0+aWR4KTsKPiAK PiAgCXJjID0gY3RsLT5vcHMucmVzZXQoY3RsKTsKPiAgCWlmIChyYykgewo+IEBAIC0xODMyLDcg KzE4MTMsNyBAQCBzdGF0aWMgdm9pZAo+IGRwdV9lbmNvZGVyX3ZzeW5jX2V2ZW50X3dvcmtfaGFu ZGxlcihzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKQo+ICAJaWYgKF9kcHVfZW5jb2Rlcl93YWtl dXBfdGltZSgmZHB1X2VuYy0+YmFzZSwgJndha2V1cF90aW1lKSkKPiAgCQlyZXR1cm47Cj4gCj4g LQlEUFVfRVZUMzJfVkVSQk9TRShrdGltZV90b19tcyh3YWtldXBfdGltZSkpOwo+ICsJdHJhY2Vf ZHB1X2VuY192c3luY19ldmVudF93b3JrKERSTUlEKCZkcHVfZW5jLT5iYXNlKSwgd2FrZXVwX3Rp bWUpOwo+ICAJbW9kX3RpbWVyKCZkcHVfZW5jLT52c3luY19ldmVudF90aW1lciwKPiAgCQkJbnNl Y3NfdG9famlmZmllcyhrdGltZV90b19ucyh3YWtldXBfdGltZSkpKTsKPiAgfQo+IEBAIC0xODUx LDggKzE4MzIsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfZm9yX2tpY2tvZmYoc3RydWN0 Cj4gZHJtX2VuY29kZXIgKmRybV9lbmMsCj4gIAl9Cj4gIAlkcHVfZW5jID0gdG9fZHB1X2VuY29k ZXJfdmlydChkcm1fZW5jKTsKPiAKPiAtCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlxuIik7Cj4g LQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYykpOwo+ICsJdHJhY2VfZHB1X2VuY19wcmVwYXJlX2tp Y2tvZmYoRFJNSUQoZHJtX2VuYykpOwo+IAo+ICAJLyogcHJlcGFyZSBmb3IgbmV4dCBraWNrb2Zm LCBtYXkgaW5jbHVkZSB3YWl0aW5nIG9uIHByZXZpb3VzIGtpY2tvZmYgCj4gKi8KPiAgCURQVV9B VFJBQ0VfQkVHSU4oImVuY19wcmVwYXJlX2Zvcl9raWNrb2ZmIik7Cj4gQEAgLTE4NzEsNyArMTg1 MSw3IEBAIHZvaWQgZHB1X2VuY29kZXJfcHJlcGFyZV9mb3Jfa2lja29mZihzdHJ1Y3QKPiBkcm1f ZW5jb2RlciAqZHJtX2VuYywKPiAKPiAgCS8qIGlmIGFueSBwaHlzIG5lZWRzIHJlc2V0LCByZXNl dCBhbGwgcGh5cywgaW4tb3JkZXIgKi8KPiAgCWlmIChuZWVkc19od19yZXNldCkgewo+IC0JCURQ VV9FVlQzMihEUk1JRChkcm1fZW5jKSwgRFBVX0VWVExPR19GVU5DX0NBU0UxKTsKPiArCQl0cmFj ZV9kcHVfZW5jX3ByZXBhcmVfa2lja29mZl9yZXNldChEUk1JRChkcm1fZW5jKSk7Cj4gIAkJZm9y IChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlzX2VuY3M7IGkrKykgewo+ICAJCQlwaHlzID0g ZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+ICAJCQlpZiAocGh5cyAmJiBwaHlzLT5vcHMuaHdfcmVz ZXQpCj4gQEAgLTE4OTQsNyArMTg3NCw3IEBAIHZvaWQgZHB1X2VuY29kZXJfa2lja29mZihzdHJ1 Y3QgZHJtX2VuY29kZXIgCj4gKmRybV9lbmMpCj4gIAlEUFVfQVRSQUNFX0JFR0lOKCJlbmNvZGVy X2tpY2tvZmYiKTsKPiAgCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwo+ IAo+IC0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiXG4iKTsKPiArCXRyYWNlX2RwdV9lbmNfa2lj a29mZihEUk1JRChkcm1fZW5jKSk7Cj4gCj4gIAlhdG9taWNfc2V0KCZkcHVfZW5jLT5mcmFtZV9k b25lX3RpbWVvdXQsCj4gIAkJCURQVV9GUkFNRV9ET05FX1RJTUVPVVQgKiAxMDAwIC8KPiBAQCAt MTkxNCw3ICsxODk0LDggQEAgdm9pZCBkcHVfZW5jb2Rlcl9raWNrb2ZmKHN0cnVjdCBkcm1fZW5j b2RlciAKPiAqZHJtX2VuYykKPiAKPiAgCWlmIChkcHVfZW5jLT5kaXNwX2luZm8uaW50Zl90eXBl ID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kgJiYKPiAgCQkJIV9kcHVfZW5jb2Rlcl93YWtldXBf dGltZShkcm1fZW5jLCAmd2FrZXVwX3RpbWUpKSB7Cj4gLQkJRFBVX0VWVDMyX1ZFUkJPU0Uoa3Rp bWVfdG9fbXMod2FrZXVwX3RpbWUpKTsKPiArCQl0cmFjZV9kcHVfZW5jX2Vhcmx5X2tpY2tvZmYo RFJNSUQoZHJtX2VuYyksCj4gKwkJCQkJICAgIGt0aW1lX3RvX21zKHdha2V1cF90aW1lKSk7Cj4g IAkJbW9kX3RpbWVyKCZkcHVfZW5jLT52c3luY19ldmVudF90aW1lciwKPiAgCQkJCW5zZWNzX3Rv X2ppZmZpZXMoa3RpbWVfdG9fbnMod2FrZXVwX3RpbWUpKSk7Cj4gIAl9Cj4gQEAgLTI0MTUsMTkg KzIzOTYsMTggQEAgc3RhdGljIHZvaWQKPiBkcHVfZW5jb2Rlcl9mcmFtZV9kb25lX3RpbWVvdXQo c3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gIAlwcml2ID0gZHJtX2VuYy0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiAKPiAgCWlmICghZHB1X2VuYy0+ZnJhbWVfYnVzeV9tYXNrWzBdIHx8ICFkcHVfZW5jLT5j cnRjX2ZyYW1lX2V2ZW50X2NiKSB7Cj4gLQkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiaW52YWxp ZCB0aW1lb3V0XG4iKTsKPiAtCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGRwdV9lbmMtPmZy YW1lX2J1c3lfbWFza1swXSwgMCk7Cj4gKwkJRFJNX0RFQlVHX0tNUygiaWQ6JXUgaW52YWxpZCB0 aW1lb3V0IGZyYW1lX2J1c3lfbWFzaz0lbHVcbiIsCj4gKwkJCSAgICAgIERSTUlEKGRybV9lbmMp LCBkcHVfZW5jLT5mcmFtZV9idXN5X21hc2tbMF0pOwo+ICAJCXJldHVybjsKPiAgCX0gZWxzZSBp ZiAoIWF0b21pY194Y2hnKCZkcHVfZW5jLT5mcmFtZV9kb25lX3RpbWVvdXQsIDApKSB7Cj4gLQkJ RFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAiaW52YWxpZCB0aW1lb3V0XG4iKTsKPiAtCQlEUFVfRVZU MzIoRFJNSUQoZHJtX2VuYyksIDAsIDEpOwo+ICsJCURSTV9ERUJVR19LTVMoImlkOiV1IGludmFs aWQgdGltZW91dFxuIiwgRFJNSUQoZHJtX2VuYykpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAKPiAg CURQVV9FUlJPUl9FTkMoZHB1X2VuYywgImZyYW1lIGRvbmUgdGltZW91dFxuIik7Cj4gCj4gIAll dmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VSUk9SOwo+IC0JRFBVX0VWVDMyKERSTUlE KGRybV9lbmMpLCBldmVudCk7Cj4gKwl0cmFjZV9kcHVfZW5jX2ZyYW1lX2RvbmVfdGltZW91dChE Uk1JRChkcm1fZW5jKSwgZXZlbnQpOwo+ICAJZHB1X2VuYy0+Y3J0Y19mcmFtZV9ldmVudF9jYihk cHVfZW5jLT5jcnRjX2ZyYW1lX2V2ZW50X2NiX2RhdGEsIAo+IGV2ZW50KTsKPiAgfQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaAo+IGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3RyYWNlLmgKPiBpbmRleCBiYmMwZmU2 NWVmYWMuLmIwMGJkY2QwZjRlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfdHJhY2UuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV90cmFjZS5oCj4gQEAgLTE3LDYgKzE3LDkgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50Lmg+Cj4gCj4gKyNpbmNsdWRlICJkcHVf ZW5jb2Rlcl9waHlzLmgiCj4gKyNpbmNsdWRlICJkcHVfaHdfbWRzcy5oIgo+ICsKPiAgI3VuZGVm IFRSQUNFX1NZU1RFTQo+ICAjZGVmaW5lIFRSQUNFX1NZU1RFTSBkcHUKPiAgI3VuZGVmIFRSQUNF X0lOQ0xVREVfRklMRQo+IEBAIC0yMzAsNiArMjMzLDMzMiBAQCBUUkFDRV9FVkVOVChkcHVfcGVy Zl9jcnRjX3VwZGF0ZSwKPiAgCQkJX19lbnRyeS0+dXBkYXRlX2NsaykKPiAgKTsKPiAKPiArREVD TEFSRV9FVkVOVF9DTEFTUyhkcHVfZW5jX2lycV90ZW1wbGF0ZSwKPiArCVRQX1BST1RPKHVpbnQz Ml90IGRybV9pZCwgZW51bSBkcHVfaW50cl9pZHggaW50cl9pZHgsIGludCBod19pZHgsCj4gKwkJ IGludCBpcnFfaWR4KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBpbnRyX2lkeCwgaHdfaWR4LCBpcnFf aWR4KSwKPiArCVRQX1NUUlVDVF9fZW50cnkoCj4gKwkJX19maWVsZCgJdWludDMyX3QsCQlkcm1f aWQJCSkKPiArCQlfX2ZpZWxkKAllbnVtIGRwdV9pbnRyX2lkeCwJaW50cl9pZHgJKQo+ICsJCV9f ZmllbGQoCWludCwJCQlod19pZHgJCSkKPiArCQlfX2ZpZWxkKAlpbnQsCQkJaXJxX2lkeAkJKQo+ ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9pZCA9IGRybV9pZDsK PiArCQlfX2VudHJ5LT5pbnRyX2lkeCA9IGludHJfaWR4Owo+ICsJCV9fZW50cnktPmh3X2lkeCA9 IGh3X2lkeDsKPiArCQlfX2VudHJ5LT5pcnFfaWR4ID0gaXJxX2lkeDsKPiArCSksCj4gKwlUUF9w cmludGsoImlkPSV1LCBpbnRyPSVkLCBodz0lZCwgaXJxPSVkIiwKPiArCQkgIF9fZW50cnktPmRy bV9pZCwgX19lbnRyeS0+aW50cl9pZHgsIF9fZW50cnktPmh3X2lkeCwKPiArCQkgIF9fZW50cnkt PmlycV9pZHgpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZW5jX2lycV90ZW1wbGF0ZSwgZHB1 X2VuY19pcnFfcmVnaXN0ZXJfc3VjY2VzcywKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwg ZW51bSBkcHVfaW50cl9pZHggaW50cl9pZHgsIGludCBod19pZHgsCj4gKwkJIGludCBpcnFfaWR4 KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBpbnRyX2lkeCwgaHdfaWR4LCBpcnFfaWR4KQo+ICspOwo+ ICtERUZJTkVfRVZFTlQoZHB1X2VuY19pcnFfdGVtcGxhdGUsIGRwdV9lbmNfaXJxX3VucmVnaXN0 ZXJfc3VjY2VzcywKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwgZW51bSBkcHVfaW50cl9p ZHggaW50cl9pZHgsIGludCBod19pZHgsCj4gKwkJIGludCBpcnFfaWR4KSwKPiArCVRQX0FSR1Mo ZHJtX2lkLCBpbnRyX2lkeCwgaHdfaWR4LCBpcnFfaWR4KQo+ICspOwo+ICsKPiArVFJBQ0VfRVZF TlQoZHB1X2VuY19pcnFfd2FpdF9zdWNjZXNzLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lk LCBlbnVtIGRwdV9pbnRyX2lkeCBpbnRyX2lkeCwgaW50IGh3X2lkeCwKPiArCQkgaW50IGlycV9p ZHgsIGVudW0gZHB1X3Bpbmdwb25nIHBwX2lkeCwgaW50IGF0b21pY19jbnQpLAo+ICsJVFBfQVJH Uyhkcm1faWQsIGludHJfaWR4LCBod19pZHgsIGlycV9pZHgsIHBwX2lkeCwgYXRvbWljX2NudCks Cj4gKwlUUF9TVFJVQ1RfX2VudHJ5KAo+ICsJCV9fZmllbGQoCXVpbnQzMl90LAkJZHJtX2lkCQkp Cj4gKwkJX19maWVsZCgJZW51bSBkcHVfaW50cl9pZHgsCWludHJfaWR4CSkKPiArCQlfX2ZpZWxk KAlpbnQsCQkJaHdfaWR4CQkpCj4gKwkJX19maWVsZCgJaW50LAkJCWlycV9pZHgJCSkKPiArCQlf X2ZpZWxkKAllbnVtIGRwdV9waW5ncG9uZywJcHBfaWR4CQkpCj4gKwkJX19maWVsZCgJaW50LAkJ CWF0b21pY19jbnQJKQo+ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRy bV9pZCA9IGRybV9pZDsKPiArCQlfX2VudHJ5LT5pbnRyX2lkeCA9IGludHJfaWR4Owo+ICsJCV9f ZW50cnktPmh3X2lkeCA9IGh3X2lkeDsKPiArCQlfX2VudHJ5LT5pcnFfaWR4ID0gaXJxX2lkeDsK PiArCQlfX2VudHJ5LT5wcF9pZHggPSBwcF9pZHg7Cj4gKwkJX19lbnRyeS0+YXRvbWljX2NudCA9 IGF0b21pY19jbnQ7Cj4gKwkpLAo+ICsJVFBfcHJpbnRrKCJpZD0ldSwgaW50cj0lZCwgaHc9JWQs IGlycT0lZCwgcHA9JWQsIGF0b21pY19jbnQ9JWQiLAo+ICsJCSAgX19lbnRyeS0+ZHJtX2lkLCBf X2VudHJ5LT5pbnRyX2lkeCwgX19lbnRyeS0+aHdfaWR4LAo+ICsJCSAgX19lbnRyeS0+aXJxX2lk eCwgX19lbnRyeS0+cHBfaWR4LCBfX2VudHJ5LT5hdG9taWNfY250KQo+ICspOwo+ICsKPiArREVD TEFSRV9FVkVOVF9DTEFTUyhkcHVfZHJtX29ial90ZW1wbGF0ZSwKPiArCVRQX1BST1RPKHVpbnQz Ml90IGRybV9pZCksCj4gKwlUUF9BUkdTKGRybV9pZCksCj4gKwlUUF9TVFJVQ1RfX2VudHJ5KAo+ ICsJCV9fZmllbGQoCXVpbnQzMl90LAkJZHJtX2lkCQkpCj4gKwkpLAo+ICsJVFBfZmFzdF9hc3Np Z24oCj4gKwkJX19lbnRyeS0+ZHJtX2lkID0gZHJtX2lkOwo+ICsJKSwKPiArCVRQX3ByaW50aygi aWQ9JXUiLCBfX2VudHJ5LT5kcm1faWQpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZHJtX29i al90ZW1wbGF0ZSwgZHB1X2VuY19hdG9taWNfY2hlY2ssCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBk cm1faWQpLAo+ICsJVFBfQVJHUyhkcm1faWQpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZHJt X29ial90ZW1wbGF0ZSwgZHB1X2VuY19tb2RlX3NldCwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRy bV9pZCksCj4gKwlUUF9BUkdTKGRybV9pZCkKPiArKTsKPiArREVGSU5FX0VWRU5UKGRwdV9kcm1f b2JqX3RlbXBsYXRlLCBkcHVfZW5jX2Rpc2FibGUsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1f aWQpLAo+ICsJVFBfQVJHUyhkcm1faWQpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZHJtX29i al90ZW1wbGF0ZSwgZHB1X2VuY19raWNrb2ZmLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lk KSwKPiArCVRQX0FSR1MoZHJtX2lkKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2RybV9vYmpf dGVtcGxhdGUsIGRwdV9lbmNfcHJlcGFyZV9raWNrb2ZmLAo+ICsJVFBfUFJPVE8odWludDMyX3Qg ZHJtX2lkKSwKPiArCVRQX0FSR1MoZHJtX2lkKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2Ry bV9vYmpfdGVtcGxhdGUsIGRwdV9lbmNfcHJlcGFyZV9raWNrb2ZmX3Jlc2V0LAo+ICsJVFBfUFJP VE8odWludDMyX3QgZHJtX2lkKSwKPiArCVRQX0FSR1MoZHJtX2lkKQo+ICspOwo+ICsKPiArVFJB Q0VfRVZFTlQoZHB1X2VuY19lbmFibGUsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGlu dCBoZGlzcGxheSwgaW50IHZkaXNwbGF5KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBoZGlzcGxheSwg dmRpc3BsYXkpLAo+ICsJVFBfU1RSVUNUX19lbnRyeSgKPiArCQlfX2ZpZWxkKAl1aW50MzJfdCwJ CWRybV9pZAkJKQo+ICsJCV9fZmllbGQoCWludCwJCQloZGlzcGxheQkpCj4gKwkJX19maWVsZCgJ aW50LAkJCXZkaXNwbGF5CSkKPiArCSksCj4gKwlUUF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5 LT5kcm1faWQgPSBkcm1faWQ7Cj4gKwkJX19lbnRyeS0+aGRpc3BsYXkgPSBoZGlzcGxheTsKPiAr CQlfX2VudHJ5LT52ZGlzcGxheSA9IHZkaXNwbGF5Owo+ICsJKSwKPiArCVRQX3ByaW50aygiaWQ9 JXUsIG1vZGU9JWR4JWQiLAo+ICsJCSAgX19lbnRyeS0+ZHJtX2lkLCBfX2VudHJ5LT5oZGlzcGxh eSwgX19lbnRyeS0+dmRpc3BsYXkpCj4gKyk7Cj4gKwo+ICtERUNMQVJFX0VWRU5UX0NMQVNTKGRw dV9lbmNfa2V5dmFsX3RlbXBsYXRlLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCBpbnQg dmFsKSwKPiArCVRQX0FSR1MoZHJtX2lkLCB2YWwpLAo+ICsJVFBfU1RSVUNUX19lbnRyeSgKPiAr CQlfX2ZpZWxkKAl1aW50MzJfdCwJZHJtX2lkCSkKPiArCQlfX2ZpZWxkKAlpbnQsCQl2YWwJKQo+ ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9pZCA9IGRybV9pZDsK PiArCQlfX2VudHJ5LT52YWwgPSB2YWw7Cj4gKwkpLAo+ICsJVFBfcHJpbnRrKCJpZD0ldSwgdmFs PSVkIiwgX19lbnRyeS0+ZHJtX2lkLCBfX2VudHJ5LT52YWwpCj4gKyk7Cj4gK0RFRklORV9FVkVO VChkcHVfZW5jX2tleXZhbF90ZW1wbGF0ZSwgZHB1X2VuY191bmRlcnJ1bl9jYiwKPiArCVRQX1BS T1RPKHVpbnQzMl90IGRybV9pZCwgaW50IGNvdW50KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBjb3Vu dCkKPiArKTsKPiArREVGSU5FX0VWRU5UKGRwdV9lbmNfa2V5dmFsX3RlbXBsYXRlLCBkcHVfZW5j X3RyaWdnZXJfc3RhcnQsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGludCBjdGxfaWR4 KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBjdGxfaWR4KQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQo ZHB1X2VuY19hdG9taWNfY2hlY2tfZmxhZ3MsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQs IHVuc2lnbmVkIGludCBmbGFncywgaW50IHByaXZhdGVfZmxhZ3MpLAo+ICsJVFBfQVJHUyhkcm1f aWQsIGZsYWdzLCBwcml2YXRlX2ZsYWdzKSwKPiArCVRQX1NUUlVDVF9fZW50cnkoCj4gKwkJX19m aWVsZCgJdWludDMyX3QsCQlkcm1faWQJCSkKPiArCQlfX2ZpZWxkKAl1bnNpZ25lZCBpbnQsCQlm bGFncwkJKQo+ICsJCV9fZmllbGQoCWludCwJCQlwcml2YXRlX2ZsYWdzCSkKPiArCSksCj4gKwlU UF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT5kcm1faWQgPSBkcm1faWQ7Cj4gKwkJX19lbnRy eS0+ZmxhZ3MgPSBmbGFnczsKPiArCQlfX2VudHJ5LT5wcml2YXRlX2ZsYWdzID0gcHJpdmF0ZV9m bGFnczsKPiArCSksCj4gKwlUUF9wcmludGsoImlkPSV1LCBmbGFncz0ldSwgcHJpdmF0ZV9mbGFn cz0lZCIsCj4gKwkJICBfX2VudHJ5LT5kcm1faWQsIF9fZW50cnktPmZsYWdzLCBfX2VudHJ5LT5w cml2YXRlX2ZsYWdzKQo+ICspOwo+ICsKPiArREVDTEFSRV9FVkVOVF9DTEFTUyhkcHVfZW5jX2lk X2VuYWJsZV90ZW1wbGF0ZSwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9pZCwgYm9vbCBlbmFi bGUpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGVuYWJsZSksCj4gKwlUUF9TVFJVQ1RfX2VudHJ5KAo+ ICsJCV9fZmllbGQoCXVpbnQzMl90LAkJZHJtX2lkCQkpCj4gKwkJX19maWVsZCgJYm9vbCwJCQll bmFibGUJCSkKPiArCSksCj4gKwlUUF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT5kcm1faWQg PSBkcm1faWQ7Cj4gKwkJX19lbnRyeS0+ZW5hYmxlID0gZW5hYmxlOwo+ICsJKSwKPiArCVRQX3By aW50aygiaWQ9JXUsIGVuYWJsZT0lcyIsCj4gKwkJICBfX2VudHJ5LT5kcm1faWQsIF9fZW50cnkt PmVuYWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZW5j X2lkX2VuYWJsZV90ZW1wbGF0ZSwgZHB1X2VuY19yY19oZWxwZXIsCj4gKwlUUF9QUk9UTyh1aW50 MzJfdCBkcm1faWQsIGJvb2wgZW5hYmxlKSwKPiArCVRQX0FSR1MoZHJtX2lkLCBlbmFibGUpCj4g Kyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZW5jX2lkX2VuYWJsZV90ZW1wbGF0ZSwgZHB1X2VuY192 YmxhbmtfY2IsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGJvb2wgZW5hYmxlKSwKPiAr CVRQX0FSR1MoZHJtX2lkLCBlbmFibGUpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfZW5jX2lk X2VuYWJsZV90ZW1wbGF0ZSwgZHB1X2VuY19mcmFtZV9ldmVudF9jYiwKPiArCVRQX1BST1RPKHVp bnQzMl90IGRybV9pZCwgYm9vbCBlbmFibGUpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGVuYWJsZSkK PiArKTsKPiArCj4gK1RSQUNFX0VWRU5UKGRwdV9lbmNfcmMsCj4gKwlUUF9QUk9UTyh1aW50MzJf dCBkcm1faWQsIHUzMiBzd19ldmVudCwgYm9vbCBpZGxlX3BjX3N1cHBvcnRlZCwKPiArCQkgaW50 IHJjX3N0YXRlLCBjb25zdCBjaGFyICpzdGFnZSksCj4gKwlUUF9BUkdTKGRybV9pZCwgc3dfZXZl bnQsIGlkbGVfcGNfc3VwcG9ydGVkLCByY19zdGF0ZSwgc3RhZ2UpLAo+ICsJVFBfU1RSVUNUX19l bnRyeSgKPiArCQlfX2ZpZWxkKAl1aW50MzJfdCwJZHJtX2lkCQkJKQo+ICsJCV9fZmllbGQoCXUz MiwJCXN3X2V2ZW50CQkpCj4gKwkJX19maWVsZCgJYm9vbCwJCWlkbGVfcGNfc3VwcG9ydGVkCSkK PiArCQlfX2ZpZWxkKAlpbnQsCQlyY19zdGF0ZQkJKQo+ICsJCV9fc3RyaW5nKAlzdGFnZV9zdHIs CXN0YWdlCQkJKQo+ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9p ZCA9IGRybV9pZDsKPiArCQlfX2VudHJ5LT5zd19ldmVudCA9IHN3X2V2ZW50Owo+ICsJCV9fZW50 cnktPmlkbGVfcGNfc3VwcG9ydGVkID0gaWRsZV9wY19zdXBwb3J0ZWQ7Cj4gKwkJX19lbnRyeS0+ cmNfc3RhdGUgPSByY19zdGF0ZTsKPiArCQlfX2Fzc2lnbl9zdHIoc3RhZ2Vfc3RyLCBzdGFnZSk7 Cj4gKwkpLAo+ICsJVFBfcHJpbnRrKCIlczogaWQ6JXUsIHN3X2V2ZW50OiVkLCBpZGxlX3BjX3N1 cHBvcnRlZDolcywgCj4gcmNfc3RhdGU6JWRcbiIsCj4gKwkJICBfX2dldF9zdHIoc3RhZ2Vfc3Ry KSwgX19lbnRyeS0+ZHJtX2lkLCBfX2VudHJ5LT5zd19ldmVudCwKPiArCQkgIF9fZW50cnktPmlk bGVfcGNfc3VwcG9ydGVkID8gInRydWUiIDogImZhbHNlIiwKPiArCQkgIF9fZW50cnktPnJjX3N0 YXRlKQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQoZHB1X2VuY19mcmFtZV9kb25lX2NiX25vdF9i dXN5LAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCB1MzIgZXZlbnQsIGVudW0gZHB1X2lu dGYgaW50Zl9pZHgpLAo+ICsJVFBfQVJHUyhkcm1faWQsIGV2ZW50LCBpbnRmX2lkeCksCj4gKwlU UF9TVFJVQ1RfX2VudHJ5KAo+ICsJCV9fZmllbGQoCXVpbnQzMl90LAlkcm1faWQJCSkKPiArCQlf X2ZpZWxkKAl1MzIsCQlldmVudAkJKQo+ICsJCV9fZmllbGQoCWVudW0gZHB1X2ludGYsCWludGZf aWR4CSkKPiArCSksCj4gKwlUUF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT5kcm1faWQgPSBk cm1faWQ7Cj4gKwkJX19lbnRyeS0+ZXZlbnQgPSBldmVudDsKPiArCQlfX2VudHJ5LT5pbnRmX2lk eCA9IGludGZfaWR4Owo+ICsJKSwKPiArCVRQX3ByaW50aygiaWQ9JXUsIGV2ZW50PSV1LCBpbnRm PSVkIiwgX19lbnRyeS0+ZHJtX2lkLCAKPiBfX2VudHJ5LT5ldmVudCwKPiArCQkgIF9fZW50cnkt PmludGZfaWR4KQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQoZHB1X2VuY19mcmFtZV9kb25lX2Ni LAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCB1bnNpZ25lZCBpbnQgaWR4LAo+ICsJCSB1 bnNpZ25lZCBsb25nIGZyYW1lX2J1c3lfbWFzayksCj4gKwlUUF9BUkdTKGRybV9pZCwgaWR4LCBm cmFtZV9idXN5X21hc2spLAo+ICsJVFBfU1RSVUNUX19lbnRyeSgKPiArCQlfX2ZpZWxkKAl1aW50 MzJfdCwJCWRybV9pZAkJKQo+ICsJCV9fZmllbGQoCXVuc2lnbmVkIGludCwJCWlkeAkJKQo+ICsJ CV9fZmllbGQoCXVuc2lnbmVkIGxvbmcsCQlmcmFtZV9idXN5X21hc2sJKQo+ICsJKSwKPiArCVRQ X2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmRybV9pZCA9IGRybV9pZDsKPiArCQlfX2VudHJ5 LT5pZHggPSBpZHg7Cj4gKwkJX19lbnRyeS0+ZnJhbWVfYnVzeV9tYXNrID0gZnJhbWVfYnVzeV9t YXNrOwo+ICsJKSwKPiArCVRQX3ByaW50aygiaWQ9JXUsIGlkeD0ldSwgZnJhbWVfYnVzeV9tYXNr PSVseCIsIF9fZW50cnktPmRybV9pZCwKPiArCQkgIF9fZW50cnktPmlkeCwgX19lbnRyeS0+ZnJh bWVfYnVzeV9tYXNrKQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQoZHB1X2VuY190cmlnZ2VyX2Zs dXNoLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCBlbnVtIGRwdV9pbnRmIGludGZfaWR4 LAo+ICsJCSBpbnQgcGVuZGluZ19raWNrb2ZmX2NudCwgaW50IGN0bF9pZHgsIHUzMiBwZW5kaW5n X2ZsdXNoX3JldCksCj4gKwlUUF9BUkdTKGRybV9pZCwgaW50Zl9pZHgsIHBlbmRpbmdfa2lja29m Zl9jbnQsIGN0bF9pZHgsCj4gKwkJcGVuZGluZ19mbHVzaF9yZXQpLAo+ICsJVFBfU1RSVUNUX19l bnRyeSgKPiArCQlfX2ZpZWxkKAl1aW50MzJfdCwJZHJtX2lkCQkJKQo+ICsJCV9fZmllbGQoCWVu dW0gZHB1X2ludGYsCWludGZfaWR4CQkpCj4gKwkJX19maWVsZCgJaW50LAkJcGVuZGluZ19raWNr b2ZmX2NudAkpCj4gKwkJX19maWVsZCgJaW50LAkJY3RsX2lkeAkJCSkKPiArCQlfX2ZpZWxkKAl1 MzIsCQlwZW5kaW5nX2ZsdXNoX3JldAkpCj4gKwkpLAo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJ X19lbnRyeS0+ZHJtX2lkID0gZHJtX2lkOwo+ICsJCV9fZW50cnktPmludGZfaWR4ID0gaW50Zl9p ZHg7Cj4gKwkJX19lbnRyeS0+cGVuZGluZ19raWNrb2ZmX2NudCA9IHBlbmRpbmdfa2lja29mZl9j bnQ7Cj4gKwkJX19lbnRyeS0+Y3RsX2lkeCA9IGN0bF9pZHg7Cj4gKwkJX19lbnRyeS0+cGVuZGlu Z19mbHVzaF9yZXQgPSBwZW5kaW5nX2ZsdXNoX3JldDsKPiArCSksCj4gKwlUUF9wcmludGsoImlk PSV1LCBpbnRmX2lkeD0lZCwgcGVuZGluZ19raWNrb2ZmX2NudD0lZCBjdGxfaWR4PSVkICIKPiAr CQkgICJwZW5kaW5nX2ZsdXNoX3JldD0ldSIsIF9fZW50cnktPmRybV9pZCwKPiArCQkgIF9fZW50 cnktPmludGZfaWR4LCBfX2VudHJ5LT5wZW5kaW5nX2tpY2tvZmZfY250LAo+ICsJCSAgX19lbnRy eS0+Y3RsX2lkeCwgX19lbnRyeS0+cGVuZGluZ19mbHVzaF9yZXQpCj4gKyk7Cj4gKwo+ICtERUNM QVJFX0VWRU5UX0NMQVNTKGRwdV9lbmNfa3RpbWVfdGVtcGxhdGUsCj4gKwlUUF9QUk9UTyh1aW50 MzJfdCBkcm1faWQsIGt0aW1lX3QgdGltZSksCj4gKwlUUF9BUkdTKGRybV9pZCwgdGltZSksCj4g KwlUUF9TVFJVQ1RfX2VudHJ5KAo+ICsJCV9fZmllbGQoCXVpbnQzMl90LAlkcm1faWQJKQo+ICsJ CV9fZmllbGQoCWt0aW1lX3QsCXRpbWUJKQo+ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJ CV9fZW50cnktPmRybV9pZCA9IGRybV9pZDsKPiArCQlfX2VudHJ5LT50aW1lID0gdGltZTsKPiAr CSksCj4gKwlUUF9wcmludGsoImlkPSV1LCB0aW1lPSVsbGQiLCBfX2VudHJ5LT5kcm1faWQsCj4g KwkJICBrdGltZV90b19tcyhfX2VudHJ5LT50aW1lKSkKPiArKTsKPiArREVGSU5FX0VWRU5UKGRw dV9lbmNfa3RpbWVfdGVtcGxhdGUsIGRwdV9lbmNfdnN5bmNfZXZlbnRfd29yaywKPiArCVRQX1BS T1RPKHVpbnQzMl90IGRybV9pZCwga3RpbWVfdCB0aW1lKSwKPiArCVRQX0FSR1MoZHJtX2lkLCB0 aW1lKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoZHB1X2VuY19rdGltZV90ZW1wbGF0ZSwgZHB1X2Vu Y19lYXJseV9raWNrb2ZmLAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCBrdGltZV90IHRp bWUpLAo+ICsJVFBfQVJHUyhkcm1faWQsIHRpbWUpCj4gKyk7Cj4gKwo+ICtERUNMQVJFX0VWRU5U X0NMQVNTKGRwdV9pZF9ldmVudF90ZW1wbGF0ZSwKPiArCVRQX1BST1RPKHVpbnQzMl90IGRybV9p ZCwgdTMyIGV2ZW50KSwKPiArCVRQX0FSR1MoZHJtX2lkLCBldmVudCksCj4gKwlUUF9TVFJVQ1Rf X2VudHJ5KAo+ICsJCV9fZmllbGQoCXVpbnQzMl90LAlkcm1faWQJKQo+ICsJCV9fZmllbGQoCXUz MiwJCWV2ZW50CSkKPiArCSksCj4gKwlUUF9mYXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT5kcm1f aWQgPSBkcm1faWQ7Cj4gKwkJX19lbnRyeS0+ZXZlbnQgPSBldmVudDsKPiArCSksCj4gKwlUUF9w cmludGsoImlkPSV1LCBldmVudD0ldSIsIF9fZW50cnktPmRybV9pZCwgX19lbnRyeS0+ZXZlbnQp Cj4gKyk7Cj4gK0RFRklORV9FVkVOVChkcHVfaWRfZXZlbnRfdGVtcGxhdGUsIGRwdV9lbmNfZnJh bWVfZG9uZV90aW1lb3V0LAo+ICsJVFBfUFJPVE8odWludDMyX3QgZHJtX2lkLCB1MzIgZXZlbnQp LAo+ICsJVFBfQVJHUyhkcm1faWQsIGV2ZW50KQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQoZHB1 X2VuY193YWl0X2V2ZW50X3RpbWVvdXQsCj4gKwlUUF9QUk9UTyh1aW50MzJfdCBkcm1faWQsIGlu dDMyX3QgaHdfaWQsIGludCByYywgczY0IHRpbWUsCj4gKwkJIHM2NCBleHBlY3RlZF90aW1lLCBp bnQgYXRvbWljX2NudCksCj4gKwlUUF9BUkdTKGRybV9pZCwgaHdfaWQsIHJjLCB0aW1lLCBleHBl Y3RlZF90aW1lLCBhdG9taWNfY250KSwKPiArCVRQX1NUUlVDVF9fZW50cnkoCj4gKwkJX19maWVs ZCgJdWludDMyX3QsCWRybV9pZAkJKQo+ICsJCV9fZmllbGQoCWludDMyX3QsCWh3X2lkCQkpCj4g KwkJX19maWVsZCgJaW50LAkJcmMJCSkKPiArCQlfX2ZpZWxkKAlzNjQsCQl0aW1lCQkpCj4gKwkJ X19maWVsZCgJczY0LAkJZXhwZWN0ZWRfdGltZQkpCj4gKwkJX19maWVsZCgJaW50LAkJYXRvbWlj X2NudAkpCj4gKwkpLAo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJX19lbnRyeS0+ZHJtX2lkID0g ZHJtX2lkOwo+ICsJCV9fZW50cnktPmh3X2lkID0gaHdfaWQ7Cj4gKwkJX19lbnRyeS0+cmMgPSBy YzsKPiArCQlfX2VudHJ5LT50aW1lID0gdGltZTsKPiArCQlfX2VudHJ5LT5leHBlY3RlZF90aW1l ID0gZXhwZWN0ZWRfdGltZTsKPiArCQlfX2VudHJ5LT5hdG9taWNfY250ID0gYXRvbWljX2NudDsK PiArCSksCj4gKwlUUF9wcmludGsoImlkPSV1LCBod19pZD0lZCwgcmM9JWQsIHRpbWU9JWxsZCwg ZXhwZWN0ZWQ9JWxsZCBjbnQ9JWQiLAo+ICsJCSAgX19lbnRyeS0+ZHJtX2lkLCBfX2VudHJ5LT5o d19pZCwgX19lbnRyeS0+cmMsIF9fZW50cnktPnRpbWUsCj4gKwkJICBfX2VudHJ5LT5leHBlY3Rl ZF90aW1lLCBfX2VudHJ5LT5hdG9taWNfY250KQo+ICspOwo+ICsKPiArCj4gICNkZWZpbmUgRFBV X0FUUkFDRV9FTkQobmFtZSkgdHJhY2VfdHJhY2luZ19tYXJrX3dyaXRlKGN1cnJlbnQtPnRnaWQs IAo+IG5hbWUsIDApCj4gICNkZWZpbmUgRFBVX0FUUkFDRV9CRUdJTihuYW1lKSB0cmFjZV90cmFj aW5nX21hcmtfd3JpdGUoY3VycmVudC0+dGdpZCwgCj4gbmFtZSwgMSkKPiAgI2RlZmluZSBEUFVf QVRSQUNFX0ZVTkMoKSBEUFVfQVRSQUNFX0JFR0lOKF9fZnVuY19fKQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZy ZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K