From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH] drm/xen-front: Remove CMA support Date: Wed, 18 Apr 2018 10:27:18 +0300 Message-ID: References: <20180417074012.21311-1-andr2000@gmail.com> <20180417090401.GA31310@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB3C589A1A for ; Wed, 18 Apr 2018 07:27:22 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id v207-v6so1098565lfa.10 for ; Wed, 18 Apr 2018 00:27:22 -0700 (PDT) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDQvMTcvMjAxOCAxMjowOCBQTSwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4g T24gMDQvMTcvMjAxOCAxMjowNCBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4gT24gVHVlLCBB cHIgMTcsIDIwMTggYXQgMTA6NDA6MTJBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g d3JvdGU6Cj4+PiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1 c2hjaGVua29AZXBhbS5jb20+Cj4+Pgo+Pj4gRXZlbiBpZiB4ZW4tZnJvbnQgYWxsb2NhdGVzIGl0 cyBidWZmZXJzIGZyb20gY29udGlndW91cyBtZW1vcnkKPj4+IHRob3NlIGFyZSBzdGlsbCBub3Qg Y29udGlndW91cyBpbiBQQSBzcGFjZSwgZS5nLiB0aGUgYnVmZmVyIGlzIG9ubHkKPj4+IGNvbnRp Z3VvdXMgaW4gSVBBIHNwYWNlLgo+Pj4gVGhlIG9ubHkgdXNlLWNhc2UgZm9yIHRoaXMgbW9kZSB3 YXMgaWYgeGVuLWZyb250IGlzIHVzZWQgdG8gYWxsb2NhdGUKPj4+IGR1bWIgYnVmZmVycyB3aGlj aCBsYXRlciBiZSB1c2VkIGJ5IHNvbWUgb3RoZXIgZHJpdmVyIHJlcXVpcmluZwo+Pj4gY29udGln dW91cyBtZW1vcnksIGJ1dCB0aGVyZSBpcyBubyBjdXJyZW50bHkgc3VjaCBhIHVzZS1jYXNlIG9y Cj4+PiBpdCBjYW4gYmUgd29ya2VkIGFyb3VuZCB3aXRoIHhlbi1mcm9udC4KPj4gUGxlYXNlIGFs c28gbWVudGlvbiB0aGUgbmVudHMgY29uZnVzaW9uIGhlcmUsIGFuZCB0aGUgcGF0Y2ggdGhhdCAK Pj4gZml4ZXMgaXQuCj4+IE9yIGp1c3Qgb3V0cmlnaHQgdGFrZSB0aGUgY29tbWl0IG1lc3NhZ2Ug ZnJvbSBteSBwYXRjaCB3aXRoIGFsbCB0aGUKPj4gZGV0YWlsczoKPiBvaywgaWYgeW91IGRvbid0 IG1pbmQgdGhlbiBJJ2xsIHVzZSB5b3VyIGNvbW1pdCBtZXNzYWdlIGVudGlyZWx5Cj4+IMKgwqDC oMKgIGRybS94ZW46IERpc3NhYmxlIENNQSBzdXBwb3J0Cj4+IMKgwqDCoMKgIMKgwqDCoMKgIEl0 IHR1cm5zIG91dCB0aGlzIHdhcyBvbmx5IG5lZWRlZCB0byBwYXBlciBvdmVyIGEgYnVnIGluIAo+ PiB0aGUgQ01BCj4+IMKgwqDCoMKgIGhlbHBlcnMsIHdoaWNoIHdhcyBhZGRyZXNzZWQgaW4KPj4g wqDCoMKgwqAgwqDCoMKgwqAgY29tbWl0IDk5OGZiMWEwZjQ3OGI4MzQ5MjIyMGZmNzk1ODNiZjlh ZDUzOGJkZDgKPj4gwqDCoMKgwqAgQXV0aG9yOiBMaXZpdSBEdWRhdSA8TGl2aXUuRHVkYXVAYXJt LmNvbT4KPj4gwqDCoMKgwqAgRGF0ZTrCoMKgIEZyaSBOb3YgMTAgMTM6MzM6MTAgMjAxNyArMDAw MAo+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgIGRybTogZ2VtX2NtYV9oZWxwZXIuYzogQWxs b3cgaW1wb3J0aW5nIG9mIGNvbnRpZ3VvdXMgCj4+IHNjYXR0ZXJsaXN0cyB3aXRoIG5lbnRzID4g MQo+PiDCoMKgwqDCoCDCoMKgwqDCoCBXaXRob3V0IHRoaXMgdGhlIGZvbGxvd2luZyBwaXBlbGlu ZSBkaWRuJ3Qgd29yazoKPj4gwqDCoMKgwqAgwqDCoMKgwqAgZG9tVToKPj4gwqDCoMKgwqAgMS4g eGVuLWZyb250IGFsbG9jYXRlcyBhIG5vbi1jb250aWcgYnVmZmVyCj4+IMKgwqDCoMKgIDIuIGNy ZWF0ZXMgZ3JhbnRzIG91dCBvZiBpdAo+PiDCoMKgwqDCoCDCoMKgwqDCoCBkb20wOgo+PiDCoMKg wqDCoCAzLiBjb252ZXJ0cyB0aGUgZ3JhbnRzIGludG8gYSBkbWEtYnVmLiBTaW5jZSB0aGV5J3Jl IG5vbi1jb250aWcsIAo+PiB0aGUKPj4gwqDCoMKgwqAgc2NhdHRlci1saXN0IGlzIGh1Z2UuCj4+ IMKgwqDCoMKgIDQuIGltcG9ydHMgaXQgaW50byByY2FyLWR1LCB3aGljaCByZXF1aXJlcyBkbWEt Y29udGlnIG1lbW9yeSBmb3IKPj4gwqDCoMKgwqAgc2Nhbm91dC4KPj4gwqDCoMKgwqAgwqDCoMKg wqAgLT4gT24gdGhpcyBnaXZlbiBwbGF0Zm9ybSB0aGVyZSdzIGFuIElPTU1VLCBzbyBpbiB0aGVv cnkgCj4+IHRoaXMgc2hvdWxkCj4+IMKgwqDCoMKgIHdvcmsuIEJ1dCBpbiBwcmFjdGljZSB0aGlz IGZhaWxlZCwgYmVjYXVzZSBvZiB0aGUgaHVnZSBudW1iZXIgb2Ygc2cKPj4gwqDCoMKgwqAgZW50 cmllcywgZXZlbiB0aG91Z2ggdGhlIElPTU1VIGRyaXZlciBtYXBwZWQgaXQgYWxsIGludG8gYSAK Pj4gZG1hLWNvbnRpZwo+PiDCoMKgwqDCoCByYW5nZS4KPj4gwqDCoMKgwqAgwqDCoMKgwqAgV2l0 aCBhIGd1ZXN0LWNvbnRpZyBidWZmZXIgYWxsb2NhdGVkIGluIHN0ZXAgMSwgdGhpcyAKPj4gcHJv YmxlbSBkb2Vzbid0Cj4+IMKgwqDCoMKgIGV4aXN0LiBCdXQgdGhlcmUncyB0ZWNobmljYWxseSBu byByZWFzb24gdG8gcmVxdWlyZSBndWVzdC1jb250aWcKPj4gwqDCoMKgwqAgbWVtb3J5IGZvciB4 ZW4gYnVmZmVyIHNoYXJpbmcgdXNpbmcgZ3JhbnRzLgo+Pgo+PiBXaXRoIHRoZSBjb21taXQgbWVz c2FnZSBpbXByb3ZlZDoKPj4KPj4gQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+Cj4gVGhhbmsgeW91LAo+IEknbGwgd2FpdCBmb3IgYSBkYXkgYW5kIGFwcGx5 IHRvIGRybS1taXNjLW5leHQgaWYgdGhpcyBpcyBvawphcHBsaWVkIHRvIGRybS1taXNjLW5leHQK Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIAo+Pj4gPG9sZWtz YW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4gU3VnZ2VzdGVkLWJ5OiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+Pj4gLS0tCj4+PiDCoCBEb2N1bWVudGF0aW9u L2dwdS94ZW4tZnJvbnQucnN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTIgLS0tLQo+Pj4g wqAgZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAxMyAtLS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5ICstLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJt L3hlbi94ZW5fZHJtX2Zyb250LmPCoMKgwqDCoMKgwqDCoMKgIHwgNjIgKysrLS0tLS0tLS0tLS0t LQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmjCoMKgwqDCoMKgwqDC oMKgIHwgNDIgKystLS0tLS0tLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9nZW0uY8KgwqDCoMKgIHwgMTIgKy0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL3hlbi94 ZW5fZHJtX2Zyb250X2dlbS5owqDCoMKgwqAgfMKgIDMgLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJt L3hlbi94ZW5fZHJtX2Zyb250X2dlbV9jbWEuYyB8IDc5IAo+Pj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfc2hidWYuY8KgwqAg fCAyMiAtLS0tLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9zaGJ1 Zi5owqDCoCB8wqAgOCAtLS0KPj4+IMKgIDEwIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMo KyksIDI0MSBkZWxldGlvbnMoLSkKPj4+IMKgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtX2NtYS5jCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZ3B1L3hlbi1mcm9udC5yc3QgCj4+PiBiL0RvY3VtZW50YXRpb24vZ3B1L3hl bi1mcm9udC5yc3QKPj4+IGluZGV4IDAwOWQ5NDIzODZjNS4uZDk4OGRhN2QxOTgzIDEwMDY0NAo+ Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUveGVuLWZyb250LnJzdAo+Pj4gKysrIGIvRG9jdW1l bnRhdGlvbi9ncHUveGVuLWZyb250LnJzdAo+Pj4gQEAgLTE4LDE4ICsxOCw2IEBAIEJ1ZmZlcnMg YWxsb2NhdGVkIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIKPj4+IMKgIC4uIGtlcm5lbC1kb2M6OiBk cml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaAo+Pj4gwqDCoMKgwqAgOmRvYzogQnVm ZmVycyBhbGxvY2F0ZWQgYnkgdGhlIGZyb250ZW5kIGRyaXZlcgo+Pj4gwqAgLVdpdGggR0VNIENN QSBoZWxwZXJzCj4+PiAtfn5+fn5+fn5+fn5+fn5+fn5+fn4KPj4+IC0KPj4+IC0uLiBrZXJuZWwt ZG9jOjogZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmgKPj4+IC3CoMKgIDpkb2M6 IFdpdGggR0VNIENNQSBoZWxwZXJzCj4+PiAtCj4+PiAtV2l0aG91dCBHRU0gQ01BIGhlbHBlcnMK Pj4+IC1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+Pj4gLQo+Pj4gLS4uIGtlcm5lbC1kb2M6OiBk cml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaAo+Pj4gLcKgwqAgOmRvYzogV2l0aG91 dCBHRU0gQ01BIGhlbHBlcnMKPj4+IC0KPj4+IMKgIEJ1ZmZlcnMgYWxsb2NhdGVkIGJ5IHRoZSBi YWNrZW5kCj4+PiDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4gwqAgZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZyAKPj4+IGIvZHJpdmVycy9ncHUv ZHJtL3hlbi9LY29uZmlnCj4+PiBpbmRleCA0ZjRhYmM5MWYzYjYuLjRjY2ExNjA3ODJhYiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3hlbi9LY29uZmlnCj4+PiBAQCAtMTUsMTYgKzE1LDMgQEAgY29uZmlnIERSTV9Y RU5fRlJPTlRFTkQKPj4+IMKgwqDCoMKgwqAgaGVscAo+Pj4gwqDCoMKgwqDCoMKgwqAgQ2hvb3Nl IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBhIHBhcmEtdmlydHVhbGl6ZWQKPj4+ IMKgwqDCoMKgwqDCoMKgIGZyb250ZW5kIERSTS9LTVMgZHJpdmVyIGZvciBYZW4gZ3Vlc3QgT1Nl cy4KPj4+IC0KPj4+IC1jb25maWcgRFJNX1hFTl9GUk9OVEVORF9DTUEKPj4+IC3CoMKgwqAgYm9v bCAiVXNlIERSTSBDTUEgdG8gYWxsb2NhdGUgZHVtYiBidWZmZXJzIgo+Pj4gLcKgwqDCoCBkZXBl bmRzIG9uIERSTV9YRU5fRlJPTlRFTkQKPj4+IC3CoMKgwqAgc2VsZWN0IERSTV9LTVNfQ01BX0hF TFBFUgo+Pj4gLcKgwqDCoCBzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSCj4+PiAtwqDCoMKgIGhl bHAKPj4+IC3CoMKgwqDCoMKgIFVzZSBEUk0gQ01BIGhlbHBlcnMgdG8gYWxsb2NhdGUgZGlzcGxh eSBidWZmZXJzLgo+Pj4gLcKgwqDCoMKgwqAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSB1c2UtY2Fz ZXMgd2hlbiBndWVzdCBkcml2ZXIgbmVlZHMgdG8KPj4+IC3CoMKgwqDCoMKgIHNoYXJlIG9yIGV4 cG9ydCBidWZmZXJzIHRvIG90aGVyIGRyaXZlcnMgd2hpY2ggb25seSBleHBlY3QKPj4+IC3CoMKg wqDCoMKgIGNvbnRpZ3VvdXMgYnVmZmVycy4KPj4+IC3CoMKgwqDCoMKgIE5vdGU6IGluIHRoaXMg bW9kZSBkcml2ZXIgY2Fubm90IHVzZSBidWZmZXJzIGFsbG9jYXRlZAo+Pj4gLcKgwqDCoMKgwqAg YnkgdGhlIGJhY2tlbmQuCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtl ZmlsZSAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZQo+Pj4gaW5kZXggMzUyNzMw ZGM2YzEzLi43MTJhZmZmNWZmYzMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVu L01ha2VmaWxlCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlCj4+PiBAQCAt NSwxMiArNSw3IEBAIGRybV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5fZHJtX2Zyb250Lm8gXAo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRfY29ubi5vIFwKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZW5fZHJtX2Zyb250X2V2dGNobmwubyBc Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX2RybV9mcm9udF9zaGJ1Zi5v IFwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZW5fZHJtX2Zyb250X2NmZy5vCj4+ PiAtCj4+PiAtaWZlcSAoJChDT05GSUdfRFJNX1hFTl9GUk9OVEVORF9DTUEpLHkpCj4+PiAtwqDC oMKgIGRybV94ZW5fZnJvbnQtb2JqcyArPSB4ZW5fZHJtX2Zyb250X2dlbV9jbWEubwo+Pj4gLWVs c2UKPj4+IC3CoMKgwqAgZHJtX3hlbl9mcm9udC1vYmpzICs9IHhlbl9kcm1fZnJvbnRfZ2VtLm8K Pj4+IC1lbmRpZgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRf Y2ZnLm8gXAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRfZ2Vt Lm8KPj4+IMKgIMKgIG9iai0kKENPTkZJR19EUk1fWEVOX0ZST05URU5EKSArPSBkcm1feGVuX2Zy b250Lm8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQu YyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmMKPj4+IGluZGV4IDRh MDhiNzdmMWM5ZS4uMWIwZWE5YWMzMzBlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3hlbi94ZW5fZHJtX2Zyb250LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udC5jCj4+PiBAQCAtMTIsNyArMTIsNiBAQAo+Pj4gwqAgI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgo+Pj4gwqAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K Pj4+IMKgICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+Pj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dl bV9jbWFfaGVscGVyLmg+Cj4+PiDCoCDCoCAjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4+ PiDCoCBAQCAtMTY3LDEwICsxNjYsOSBAQCBpbnQgeGVuX2RybV9mcm9udF9tb2RlX3NldChzdHJ1 Y3QgCj4+PiB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlwZWxpbmUsCj4+PiDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4+PiDCoCB9Cj4+PiDCoCAtc3RhdGljIGludCBiZV9kYnVmX2NyZWF0 ZV9pbnQoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4+ICtpbnQgeGVu X2RybV9mcm9udF9kYnVmX2NyZWF0ZShzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9p bmZvLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0IGRidWZf Y29va2llLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgYnBwLCB1NjQgc2l6ZSwgc3RydWN0IHBhZ2UgKipwYWdlcywKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBzZ190YWJsZSAqc2d0 KQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJwcCwgdTY0IHNp emUsIHN0cnVjdCBwYWdlICoqcGFnZXMpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB4 ZW5fZHJtX2Zyb250X2V2dGNobmwgKmV2dGNobmw7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB4ZW5f ZHJtX2Zyb250X3NoYnVmICpzaGJ1ZjsKPj4+IEBAIC0xODcsNyArMTg1LDYgQEAgc3RhdGljIGlu dCBiZV9kYnVmX2NyZWF0ZV9pbnQoc3RydWN0IAo+Pj4geGVuX2RybV9mcm9udF9pbmZvICpmcm9u dF9pbmZvLAo+Pj4gwqDCoMKgwqDCoCBidWZfY2ZnLnhiX2RldiA9IGZyb250X2luZm8tPnhiX2Rl djsKPj4+IMKgwqDCoMKgwqAgYnVmX2NmZy5wYWdlcyA9IHBhZ2VzOwo+Pj4gwqDCoMKgwqDCoCBi dWZfY2ZnLnNpemUgPSBzaXplOwo+Pj4gLcKgwqDCoCBidWZfY2ZnLnNndCA9IHNndDsKPj4+IMKg wqDCoMKgwqAgYnVmX2NmZy5iZV9hbGxvYyA9IGZyb250X2luZm8tPmNmZy5iZV9hbGxvYzsKPj4+ IMKgIMKgwqDCoMKgwqAgc2hidWYgPSB4ZW5fZHJtX2Zyb250X3NoYnVmX2FsbG9jKCZidWZfY2Zn KTsKPj4+IEBAIC0yMzcsMjIgKzIzNCw2IEBAIHN0YXRpYyBpbnQgYmVfZGJ1Zl9jcmVhdGVfaW50 KHN0cnVjdCAKPj4+IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4+IMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4+IMKgIH0KPj4+IMKgIC1pbnQgeGVuX2RybV9mcm9udF9kYnVmX2Ny ZWF0ZV9mcm9tX3NndChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvIAo+Pj4gKmZyb250X2luZm8s Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0IGRi dWZfY29va2llLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJwcCwgdTY0IHNpemUsIHN0cnVjdCBzZ190 YWJsZSAqc2d0KQo+Pj4gLXsKPj4+IC3CoMKgwqAgcmV0dXJuIGJlX2RidWZfY3JlYXRlX2ludChm cm9udF9pbmZvLCBkYnVmX2Nvb2tpZSwgd2lkdGgsIGhlaWdodCwKPj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJwcCwgc2l6ZSwgTlVMTCwgc2d0KTsKPj4+IC19Cj4+PiAt Cj4+PiAtaW50IHhlbl9kcm1fZnJvbnRfZGJ1Zl9jcmVhdGVfZnJvbV9wYWdlcyhzdHJ1Y3QgeGVu X2RybV9mcm9udF9pbmZvIAo+Pj4gKmZyb250X2luZm8sCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1NjQgZGJ1Zl9jb29raWUsIHUzMiB3aWR0aCwgdTMyIGhl aWdodCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBi cHAsIHU2NCBzaXplLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQo+Pj4gLXsKPj4+IC3CoMKgwqAgcmV0 dXJuIGJlX2RidWZfY3JlYXRlX2ludChmcm9udF9pbmZvLCBkYnVmX2Nvb2tpZSwgd2lkdGgsIGhl aWdodCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJwcCwgc2l6ZSwg cGFnZXMsIE5VTEwpOwo+Pj4gLX0KPj4+IC0KPj4+IMKgIHN0YXRpYyBpbnQgeGVuX2RybV9mcm9u dF9kYnVmX2Rlc3Ryb3koc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAKPj4+ICpmcm9udF9pbmZv LAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1NjQg ZGJ1Zl9jb29raWUpCj4+PiDCoCB7Cj4+PiBAQCAtNDM0LDI0ICs0MTUsMTEgQEAgc3RhdGljIGlu dCB4ZW5fZHJtX2Rydl9kdW1iX2NyZWF0ZShzdHJ1Y3QgCj4+PiBkcm1fZmlsZSAqZmlscCwKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIC3C oMKgwqAgLyoKPj4+IC3CoMKgwqDCoCAqIEluIGNhc2Ugb2YgQ09ORklHX0RSTV9YRU5fRlJPTlRF TkRfQ01BIGdlbV9vYmogaXMgY29uc3RydWN0ZWQKPj4+IC3CoMKgwqDCoCAqIHZpYSBEUk0gQ01B IGhlbHBlcnMgYW5kIGRvZXNuJ3QgaGF2ZSAtPnBhZ2VzIGFsbG9jYXRlZAo+Pj4gLcKgwqDCoMKg ICogKHhlbmRybV9nZW1fZ2V0X3BhZ2VzIHdpbGwgcmV0dXJuIE5VTEwpLCBidXQgaW5zdGVhZCBj YW4gCj4+PiBwcm92aWRlCj4+PiAtwqDCoMKgwqAgKiBzZyB0YWJsZQo+Pj4gLcKgwqDCoMKgICov Cj4+PiAtwqDCoMKgIGlmICh4ZW5fZHJtX2Zyb250X2dlbV9nZXRfcGFnZXMob2JqKSkKPj4+IC3C oMKgwqDCoMKgwqDCoCByZXQgPSAKPj4+IHhlbl9kcm1fZnJvbnRfZGJ1Zl9jcmVhdGVfZnJvbV9w YWdlcyhkcm1faW5mby0+ZnJvbnRfaW5mbywKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgeGVuX2RybV9mcm9udF9kYnVmX3RvX2Nvb2tpZShvYmopLAo+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhcmdzLT53aWR0aCwgYXJncy0+aGVpZ2h0LCBhcmdzLT5icHAs Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyZ3MtPnNpemUsCj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRfZ2VtX2dldF9wYWdlcyhv YmopKTsKPj4+IC3CoMKgwqAgZWxzZQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IHhlbl9kcm1f ZnJvbnRfZGJ1Zl9jcmVhdGVfZnJvbV9zZ3QoZHJtX2luZm8tPmZyb250X2luZm8sCj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRfZGJ1Zl90b19jb29raWUo b2JqKSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJncy0+d2lkdGgsIGFy Z3MtPmhlaWdodCwgYXJncy0+YnBwLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhcmdzLT5zaXplLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZW5fZHJt X2Zyb250X2dlbV9nZXRfc2dfdGFibGUob2JqKSk7Cj4+PiArwqDCoMKgIHJldCA9IHhlbl9kcm1f ZnJvbnRfZGJ1Zl9jcmVhdGUoZHJtX2luZm8tPmZyb250X2luZm8sCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX2RybV9mcm9udF9kYnVmX3RvX2Nvb2tpZShv YmopLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFyZ3MtPndp ZHRoLCBhcmdzLT5oZWlnaHQsIGFyZ3MtPmJwcCwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhcmdzLT5zaXplLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHhlbl9kcm1fZnJvbnRfZ2VtX2dldF9wYWdlcyhvYmopKTsKPj4+IMKg wqDCoMKgwqAgaWYgKHJldCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxfYmFja2Vu ZDsKPj4+IMKgIEBAIC01MjMsMTEgKzQ5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIAo+Pj4geGVuX2RybV9kZXZfZm9wcyA9IHsKPj4+IMKgwqDCoMKgwqAgLnBvbGzC oMKgwqDCoMKgwqDCoMKgwqDCoCA9IGRybV9wb2xsLAo+Pj4gwqDCoMKgwqDCoCAucmVhZMKgwqDC oMKgwqDCoMKgwqDCoMKgID0gZHJtX3JlYWQsCj4+PiDCoMKgwqDCoMKgIC5sbHNlZWvCoMKgwqDC oMKgwqDCoMKgID0gbm9fbGxzZWVrLAo+Pj4gLSNpZmRlZiBDT05GSUdfRFJNX1hFTl9GUk9OVEVO RF9DTUEKPj4+IC3CoMKgwqAgLm1tYXDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGRybV9nZW1fY21h X21tYXAsCj4+PiAtI2Vsc2UKPj4+IMKgwqDCoMKgwqAgLm1tYXDCoMKgwqDCoMKgwqDCoMKgwqDC oCA9IHhlbl9kcm1fZnJvbnRfZ2VtX21tYXAsCj4+PiAtI2VuZGlmCj4+PiDCoCB9Owo+Pj4gwqAg wqAgc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB4ZW5fZHJtX2Rydl92 bV9vcHMgPSB7Cj4+PiBAQCAtNTQ3LDYgKzUxMSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZl ciB4ZW5fZHJtX2RyaXZlciA9IHsKPj4+IMKgwqDCoMKgwqAgLmdlbV9wcmltZV9leHBvcnTCoMKg wqDCoMKgwqDCoMKgwqAgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPj4+IMKgwqDCoMKgwqAgLmdl bV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSB4ZW5fZHJtX2Zyb250X2dlbV9pbXBvcnRfc2dfdGFi bGUsCj4+PiDCoMKgwqDCoMKgIC5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlwqDCoMKgID0geGVuX2Ry bV9mcm9udF9nZW1fZ2V0X3NnX3RhYmxlLAo+Pj4gK8KgwqDCoCAuZ2VtX3ByaW1lX3ZtYXDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgID0geGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdm1hcCwKPj4+ICvC oMKgwqAgLmdlbV9wcmltZV92dW5tYXDCoMKgwqDCoMKgwqDCoMKgwqAgPSB4ZW5fZHJtX2Zyb250 X2dlbV9wcmltZV92dW5tYXAsCj4+PiArwqDCoMKgIC5nZW1fcHJpbWVfbW1hcMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgPSB4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV9tbWFwLAo+Pj4gwqDCoMKgwqDC oCAuZHVtYl9jcmVhdGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0geGVuX2RybV9kcnZf ZHVtYl9jcmVhdGUsCj4+PiDCoMKgwqDCoMKgIC5mb3BzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgID0gJnhlbl9kcm1fZGV2X2ZvcHMsCj4+PiDCoMKgwqDCoMKgIC5u YW1lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gInhlbmRybS1k dSIsCj4+PiBAQCAtNTU1LDE1ICs1MjIsNiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgeGVu X2RybV9kcml2ZXIgPSB7Cj4+PiDCoMKgwqDCoMKgIC5tYWpvcsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAxLAo+Pj4gwqDCoMKgwqDCoCAubWlub3LCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gMCwKPj4+IMKgIC0jaWZkZWYgQ09ORklH X0RSTV9YRU5fRlJPTlRFTkRfQ01BCj4+PiAtwqDCoMKgIC5nZW1fcHJpbWVfdm1hcMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+Pj4gLcKgwqDCoCAuZ2Vt X3ByaW1lX3Z1bm1hcMKgwqDCoMKgwqDCoMKgwqDCoCA9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1h cCwKPj4+IC3CoMKgwqAgLmdlbV9wcmltZV9tbWFwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGRy bV9nZW1fY21hX3ByaW1lX21tYXAsCj4+PiAtI2Vsc2UKPj4+IC3CoMKgwqAgLmdlbV9wcmltZV92 bWFwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IHhlbl9kcm1fZnJvbnRfZ2VtX3ByaW1lX3ZtYXAs Cj4+PiAtwqDCoMKgIC5nZW1fcHJpbWVfdnVubWFwwqDCoMKgwqDCoMKgwqDCoMKgID0geGVuX2Ry bV9mcm9udF9nZW1fcHJpbWVfdnVubWFwLAo+Pj4gLcKgwqDCoCAuZ2VtX3ByaW1lX21tYXDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgID0geGVuX2RybV9mcm9udF9nZW1fcHJpbWVfbW1hcCwKPj4+IC0j ZW5kaWYKPj4+IMKgIH07Cj4+PiDCoCDCoCBzdGF0aWMgaW50IHhlbl9kcm1fZHJ2X2luaXQoc3Ry dWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuaCAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL3hl bi94ZW5fZHJtX2Zyb250LmgKPj4+IGluZGV4IDE2NTU0YjI0NjNkOC4uMmMyNDc5YjU3MWFlIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmgKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5oCj4+PiBAQCAtMjMsNDAgKzIz LDE0IEBACj4+PiDCoMKgICoKPj4+IMKgwqAgKiBEZXBlbmRpbmcgb24gdGhlIHJlcXVpcmVtZW50 cyBmb3IgdGhlIHBhcmEtdmlydHVhbGl6ZWQgCj4+PiBlbnZpcm9ubWVudCwgbmFtZWx5Cj4+PiDC oMKgICogcmVxdWlyZW1lbnRzIGRpY3RhdGVkIGJ5IHRoZSBhY2NvbXBhbnlpbmcgRFJNLyh2KUdQ VSBkcml2ZXJzIAo+Pj4gcnVubmluZyBpbiBib3RoCj4+PiAtICogaG9zdCBhbmQgZ3Vlc3QgZW52 aXJvbm1lbnRzLCBudW1iZXIgb2Ygb3BlcmF0aW5nIG1vZGVzIG9mIAo+Pj4gcGFyYS12aXJ0dWFs aXplZAo+Pj4gLSAqIGRpc3BsYXkgZHJpdmVyIGFyZSBzdXBwb3J0ZWQ6Cj4+PiAtICoKPj4+IC0g KiAtIGRpc3BsYXkgYnVmZmVycyBjYW4gYmUgYWxsb2NhdGVkIGJ5IGVpdGhlciBmcm9udGVuZCBk cml2ZXIgb3IgCj4+PiBiYWNrZW5kCj4+PiAtICogLSBkaXNwbGF5IGJ1ZmZlcnMgY2FuIGJlIGFs bG9jYXRlZCB0byBiZSBjb250aWd1b3VzIGluIG1lbW9yeSBvciAKPj4+IG5vdAo+Pj4gLSAqCj4+ PiAtICogTm90ZSEgRnJvbnRlbmQgZHJpdmVyIGl0c2VsZiBoYXMgbm8gZGVwZW5kZW5jeSBvbiBj b250aWd1b3VzIAo+Pj4gbWVtb3J5IGZvcgo+Pj4gLSAqIGl0cyBvcGVyYXRpb24uCj4+PiArICog aG9zdCBhbmQgZ3Vlc3QgZW52aXJvbm1lbnRzLCBkaXNwbGF5IGJ1ZmZlcnMgY2FuIGJlIGFsbG9j YXRlZCBieSAKPj4+IGVpdGhlcgo+Pj4gKyAqIGZyb250ZW5kIGRyaXZlciBvciBiYWNrZW5kLgo+ Pj4gwqDCoCAqLwo+Pj4gwqAgwqAgLyoqCj4+PiDCoMKgICogRE9DOiBCdWZmZXJzIGFsbG9jYXRl ZCBieSB0aGUgZnJvbnRlbmQgZHJpdmVyCj4+PiDCoMKgICoKPj4+IC0gKiBUaGUgYmVsb3cgbW9k ZXMgb2Ygb3BlcmF0aW9uIGFyZSBjb25maWd1cmVkIGF0IGNvbXBpbGUtdGltZSB2aWEKPj4+IC0g KiBmcm9udGVuZCBkcml2ZXIncyBrZXJuZWwgY29uZmlndXJhdGlvbjoKPj4+IC0gKi8KPj4+IC0K Pj4+IC0vKioKPj4+IC0gKiBET0M6IFdpdGggR0VNIENNQSBoZWxwZXJzCj4+PiAtICoKPj4+IC0g KiBUaGlzIHVzZS1jYXNlIGlzIHVzZWZ1bCB3aGVuIHVzZWQgd2l0aCBhY2NvbXBhbnlpbmcgRFJN L3ZHUFUgCj4+PiBkcml2ZXIgaW4KPj4+IC0gKiBndWVzdCBkb21haW4gd2hpY2ggd2FzIGRlc2ln bmVkIHRvIG9ubHkgd29yayB3aXRoIGNvbnRpZ3VvdXMgCj4+PiBidWZmZXJzLAo+Pj4gLSAqIGUu Zy4gRFJNIGRyaXZlciBiYXNlZCBvbiBHRU0gQ01BIGhlbHBlcnM6IHN1Y2ggZHJpdmVycyBjYW4g b25seSAKPj4+IGltcG9ydAo+Pj4gLSAqIGNvbnRpZ3VvdXMgUFJJTUUgYnVmZmVycywgdGh1cyBy ZXF1aXJpbmcgZnJvbnRlbmQgZHJpdmVyIHRvIHByb3ZpZGUKPj4+IC0gKiBzdWNoLiBJbiBvcmRl ciB0byBpbXBsZW1lbnQgdGhpcyBtb2RlIG9mIG9wZXJhdGlvbiBwYXJhLXZpcnR1YWxpemVkCj4+ PiAtICogZnJvbnRlbmQgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRvIHVzZSBHRU0gQ01BIGhl bHBlcnMuCj4+PiAtICovCj4+PiAtCj4+PiAtLyoqCj4+PiAtICogRE9DOiBXaXRob3V0IEdFTSBD TUEgaGVscGVycwo+Pj4gLSAqCj4+PiAtICogSWYgYWNjb21wYW55aW5nIGRyaXZlcnMgY2FuIGNv cGUgd2l0aCBub24tY29udGlndW91cyBtZW1vcnkgCj4+PiB0aGVuLCB0bwo+Pj4gLSAqIGxvd2Vy IHByZXNzdXJlIG9uIENNQSBzdWJzeXN0ZW0gb2YgdGhlIGtlcm5lbCwgZHJpdmVyIGNhbiBhbGxv Y2F0ZQo+Pj4gLSAqIGJ1ZmZlcnMgZnJvbSBzeXN0ZW0gbWVtb3J5Lgo+Pj4gKyAqIEluIHRoaXMg bW9kZSBvZiBvcGVyYXRpb24gZHJpdmVyIGFsbG9jYXRlcyBidWZmZXJzIGZyb20gc3lzdGVtIAo+ Pj4gbWVtb3J5Lgo+Pj4gwqDCoCAqCj4+PiDCoMKgICogTm90ZSEgSWYgdXNlZCB3aXRoIGFjY29t cGFueWluZyBEUk0vKHYpR1BVIGRyaXZlcnMgdGhpcyBtb2RlIG9mIAo+Pj4gb3BlcmF0aW9uCj4+ PiDCoMKgICogbWF5IHJlcXVpcmUgSU9NTVUgc3VwcG9ydCBvbiB0aGUgcGxhdGZvcm0sIHNvIGFj Y29tcGFueWluZyAKPj4+IERSTS92R1BVCj4+PiBAQCAtMTY0LDEzICsxMzgsOSBAQCBpbnQgeGVu X2RybV9mcm9udF9tb2RlX3NldChzdHJ1Y3QgCj4+PiB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGlu ZSAqcGlwZWxpbmUsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgeCwg dTMyIHksIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBicHAsIHU2NCBmYl9jb29raWUpOwo+Pj4gwqAgLWludCB4ZW5fZHJtX2Zy b250X2RidWZfY3JlYXRlX2Zyb21fc2d0KHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gCj4+PiAq ZnJvbnRfaW5mbywKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1NjQgZGJ1Zl9jb29raWUsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwKPj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgYnBwLCB1NjQgc2l6ZSwg c3RydWN0IHNnX3RhYmxlICpzZ3QpOwo+Pj4gLQo+Pj4gLWludCB4ZW5fZHJtX2Zyb250X2RidWZf Y3JlYXRlX2Zyb21fcGFnZXMoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAKPj4+ICpmcm9udF9p bmZvLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0IGRi dWZfY29va2llLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgYnBwLCB1NjQgc2l6ZSwgc3RydWN0IHBhZ2UgKipw YWdlcyk7Cj4+PiAraW50IHhlbl9kcm1fZnJvbnRfZGJ1Zl9jcmVhdGUoc3RydWN0IHhlbl9kcm1f ZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHU2NCBkYnVmX2Nvb2tpZSwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJwcCwgdTY0IHNpemUsIHN0cnVjdCBw YWdlICoqcGFnZXMpOwo+Pj4gwqAgwqAgaW50IHhlbl9kcm1fZnJvbnRfZmJfYXR0YWNoKHN0cnVj dCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHU2NCBkYnVmX2Nvb2tpZSwgdTY0IGZiX2Nvb2tpZSwgdTMyIHdpZHRo LAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0u YyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5jCj4+PiBpbmRl eCAzYjA0YTIyNjlkN2EuLmM4NWJmZTc1NzFjYiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl bi94ZW5fZHJtX2Zyb250X2dlbS5jCj4+PiBAQCAtMjEwLDE1ICsyMTAsOSBAQCB4ZW5fZHJtX2Zy b250X2dlbV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IAo+Pj4gZHJtX2RldmljZSAqZGV2LAo+Pj4g wqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJS X1BUUihyZXQpOwo+Pj4gwqAgLcKgwqDCoCAvKgo+Pj4gLcKgwqDCoMKgICogTi5CLiBBbHRob3Vn aCB3ZSBoYXZlIGFuIEFQSSB0byBjcmVhdGUgZGlzcGxheSBidWZmZXIgZnJvbSBzZ3QKPj4+IC3C oMKgwqDCoCAqIHdlIHVzZSBwYWdlcyBBUEksIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0aG9zZSBm b3IgR0VNIGhhbmRsaW5nLAo+Pj4gLcKgwqDCoMKgICogZS5nLiBmb3IgbWFwcGluZyBldGMuCj4+ PiAtwqDCoMKgwqAgKi8KPj4+IC3CoMKgwqAgcmV0ID0geGVuX2RybV9mcm9udF9kYnVmX2NyZWF0 ZV9mcm9tX3BhZ2VzKGRybV9pbmZvLT5mcm9udF9pbmZvLAo+Pj4gLSB4ZW5fZHJtX2Zyb250X2Ri dWZfdG9fY29va2llKCZ4ZW5fb2JqLT5iYXNlKSwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIDAsIDAsIHNpemUsCj4+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZW5fb2JqLT5w YWdlcyk7Cj4+PiArwqDCoMKgIHJldCA9IHhlbl9kcm1fZnJvbnRfZGJ1Zl9jcmVhdGUoZHJtX2lu Zm8tPmZyb250X2luZm8sCj4+PiArIHhlbl9kcm1fZnJvbnRfZGJ1Zl90b19jb29raWUoJnhlbl9v YmotPmJhc2UpLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAs IDAsIDAsIHNpemUsIHhlbl9vYmotPnBhZ2VzKTsKPj4+IMKgwqDCoMKgwqAgaWYgKHJldCA8IDAp Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+IMKgIGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmggCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uaAo+Pj4gaW5kZXggNTVlNTMxZjVh NzYzLi5kNWFiNzM0ZmRhZmUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hl bl9kcm1fZnJvbnRfZ2VtLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9nZW0uaAo+Pj4gQEAgLTI3LDggKzI3LDYgQEAgc3RydWN0IHBhZ2UgKip4ZW5fZHJtX2Zy b250X2dlbV9nZXRfcGFnZXMoc3RydWN0IAo+Pj4gZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4+PiDC oCDCoCB2b2lkIHhlbl9kcm1fZnJvbnRfZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkKHN0cnVjdCAK Pj4+IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKTsKPj4+IMKgIC0jaWZuZGVmIENPTkZJR19EUk1f WEVOX0ZST05URU5EX0NNQQo+Pj4gLQo+Pj4gwqAgaW50IHhlbl9kcm1fZnJvbnRfZ2VtX21tYXAo c3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCAKPj4+IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+Pj4g wqAgwqAgdm9pZCAqeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdlbV9vYmopOwo+Pj4gQEAgLTM4LDYgKzM2LDUgQEAgdm9pZCB4ZW5fZHJtX2Zyb250 X2dlbV9wcmltZV92dW5tYXAoc3RydWN0IAo+Pj4gZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosCj4+ PiDCoCDCoCBpbnQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdlbV9vYmosCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+Pj4gLSNlbmRpZgo+Pj4gwqAgwqAgI2VuZGlm IC8qIF9fWEVOX0RSTV9GUk9OVF9HRU1fSCAqLwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW1fY21hLmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS94 ZW4veGVuX2RybV9mcm9udF9nZW1fY21hLmMKPj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ Pj4gaW5kZXggYmEzMGE0YmMyYTM5Li4wMDAwMDAwMDAwMDAKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW1fY21hLmMKPj4+ICsrKyAvZGV2L251bGwKPj4+IEBA IC0xLDc5ICswLDAgQEAKPj4+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBP UiBNSVQKPj4+IC0KPj4+IC0vKgo+Pj4gLSAqwqAgWGVuIHBhcmEtdmlydHVhbCBEUk0gZGV2aWNl Cj4+PiAtICoKPj4+IC0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5j Lgo+Pj4gLSAqCj4+PiAtICogQXV0aG9yOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3Nh bmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+PiAtICovCj4+PiAtCj4+PiAtI2luY2x1ZGUg PGRybS9kcm1QLmg+Cj4+PiAtI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4+PiAtI2luY2x1ZGUg PGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+Pj4gLSNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFf aGVscGVyLmg+Cj4+PiAtCj4+PiAtI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKPj4+IC0jaW5j bHVkZSAieGVuX2RybV9mcm9udF9nZW0uaCIKPj4+IC0KPj4+IC1zdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKgo+Pj4gLXhlbl9kcm1fZnJvbnRfZ2VtX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHNnX3RhYmxlICpzZ3QpCj4+PiAtewo+Pj4gLcKgwqDCoCBzdHJ1 Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8gPSBkZXYtPmRldl9wcml2YXRlOwo+ Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7Cj4+PiAtwqDCoMKgIHN0 cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmo7Cj4+PiAtwqDCoMKgIGludCByZXQ7Cj4+ PiAtCj4+PiAtwqDCoMKgIGdlbV9vYmogPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFi bGUoZGV2LCBhdHRhY2gsIHNndCk7Cj4+PiAtwqDCoMKgIGlmIChJU19FUlJfT1JfTlVMTChnZW1f b2JqKSkKPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gZ2VtX29iajsKPj4+IC0KPj4+IC3CoMKg wqAgY21hX29iaiA9IHRvX2RybV9nZW1fY21hX29iaihnZW1fb2JqKTsKPj4+IC0KPj4+IC3CoMKg wqAgcmV0ID0geGVuX2RybV9mcm9udF9kYnVmX2NyZWF0ZV9mcm9tX3NndChkcm1faW5mby0+ZnJv bnRfaW5mbywKPj4+IC0geGVuX2RybV9mcm9udF9kYnVmX3RvX2Nvb2tpZShnZW1fb2JqKSwKPj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgMCwg MCwgZ2VtX29iai0+c2l6ZSwKPj4+IC0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlKGdl bV9vYmopKTsKPj4+IC3CoMKgwqAgaWYgKHJldCA8IDApCj4+PiAtwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIEVSUl9QVFIocmV0KTsKPj4+IC0KPj4+IC3CoMKgwqAgRFJNX0RFQlVHKCJJbXBvcnRlZCBD TUEgYnVmZmVyIG9mIHNpemUgJXp1XG4iLCBnZW1fb2JqLT5zaXplKTsKPj4+IC0KPj4+IC3CoMKg wqAgcmV0dXJuIGdlbV9vYmo7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0cnVjdCBzZ190YWJsZSAqeGVu X2RybV9mcm9udF9nZW1fZ2V0X3NnX3RhYmxlKHN0cnVjdCAKPj4+IGRybV9nZW1fb2JqZWN0ICpn ZW1fb2JqKQo+Pj4gLXsKPj4+IC3CoMKgwqAgcmV0dXJuIGRybV9nZW1fY21hX3ByaW1lX2dldF9z Z190YWJsZShnZW1fb2JqKTsKPj4+IC19Cj4+PiAtCj4+PiAtc3RydWN0IGRybV9nZW1fb2JqZWN0 ICp4ZW5fZHJtX2Zyb250X2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgCj4+PiAqZGV2LAo+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90 IHNpemUpCj4+PiAtewo+Pj4gLcKgwqDCoCBzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAq ZHJtX2luZm8gPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX2dlbV9j bWFfb2JqZWN0ICpjbWFfb2JqOwo+Pj4gLQo+Pj4gLcKgwqDCoCBpZiAoZHJtX2luZm8tPmZyb250 X2luZm8tPmNmZy5iZV9hbGxvYykgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIC8qIFRoaXMgdXNlLWNh c2UgaXMgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHByb2JhYmx5IHdvbid0IGJlICovCj4+PiAtwqDC oMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJCYWNrZW5kIGFsbG9jYXRlZCBidWZmZXJzIGFuZCBDTUEg aGVscGVycyBhcmUgCj4+PiBub3Qgc3VwcG9ydGVkIGF0IHRoZSBzYW1lIHRpbWVcbiIpOwo+Pj4g LcKgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+Pj4gLcKgwqDCoCB9Cj4+ PiAtCj4+PiAtwqDCoMKgIGNtYV9vYmogPSBkcm1fZ2VtX2NtYV9jcmVhdGUoZGV2LCBzaXplKTsK Pj4+IC3CoMKgwqAgaWYgKElTX0VSUl9PUl9OVUxMKGNtYV9vYmopKQo+Pj4gLcKgwqDCoMKgwqDC oMKgIHJldHVybiBFUlJfQ0FTVChjbWFfb2JqKTsKPj4+IC0KPj4+IC3CoMKgwqAgcmV0dXJuICZj bWFfb2JqLT5iYXNlOwo+Pj4gLX0KPj4+IC0KPj4+IC12b2lkIHhlbl9kcm1fZnJvbnRfZ2VtX2Zy ZWVfb2JqZWN0X3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAKPj4+ICpnZW1fb2JqKQo+ Pj4gLXsKPj4+IC3CoMKgwqAgZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QoZ2VtX29iaik7Cj4+PiAt fQo+Pj4gLQo+Pj4gLXN0cnVjdCBwYWdlICoqeGVuX2RybV9mcm9udF9nZW1fZ2V0X3BhZ2VzKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAKPj4+ICpnZW1fb2JqKQo+Pj4gLXsKPj4+IC3CoMKgwqAgcmV0 dXJuIE5VTEw7Cj4+PiAtfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9zaGJ1Zi5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJv bnRfc2hidWYuYwo+Pj4gaW5kZXggMTk5MTRkZGU0YjNkLi5kNTcwNTI1MWEwZDYgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfc2hidWYuYwo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X3NoYnVmLmMKPj4+IEBAIC04OSwx MCArODksNiBAQCB2b2lkIHhlbl9kcm1fZnJvbnRfc2hidWZfZnJlZShzdHJ1Y3QgCj4+PiB4ZW5f ZHJtX2Zyb250X3NoYnVmICpidWYpCj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgwqDCoMKgwqAga2Zy ZWUoYnVmLT5ncmVmcyk7Cj4+PiDCoMKgwqDCoMKgIGtmcmVlKGJ1Zi0+ZGlyZWN0b3J5KTsKPj4+ IC3CoMKgwqAgaWYgKGJ1Zi0+c2d0KSB7Cj4+PiAtwqDCoMKgwqDCoMKgwqAgc2dfZnJlZV90YWJs ZShidWYtPnNndCk7Cj4+PiAtwqDCoMKgwqDCoMKgwqAga3ZmcmVlKGJ1Zi0+cGFnZXMpOwo+Pj4g LcKgwqDCoCB9Cj4+PiDCoMKgwqDCoMKgIGtmcmVlKGJ1Zik7Cj4+PiDCoCB9Cj4+PiDCoCBAQCAt MzUwLDE3ICszNDYsNiBAQCBzdGF0aWMgaW50IGdyYW50X3JlZmVyZW5jZXMoc3RydWN0IAo+Pj4g eGVuX2RybV9mcm9udF9zaGJ1ZiAqYnVmKQo+Pj4gwqAgwqAgc3RhdGljIGludCBhbGxvY19zdG9y YWdlKHN0cnVjdCB4ZW5fZHJtX2Zyb250X3NoYnVmICpidWYpCj4+PiDCoCB7Cj4+PiAtwqDCoMKg IGlmIChidWYtPnNndCkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIGJ1Zi0+cGFnZXMgPSBrdm1hbGxv Y19hcnJheShidWYtPm51bV9wYWdlcywKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwgR0ZQX0tFUk5FTCk7Cj4+ PiAtwqDCoMKgwqDCoMKgwqAgaWYgKCFidWYtPnBhZ2VzKQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+PiAtCj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKGRybV9w cmltZV9zZ190b19wYWdlX2FkZHJfYXJyYXlzKGJ1Zi0+c2d0LCBidWYtPnBhZ2VzLAo+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE5V TEwsIGJ1Zi0+bnVtX3BhZ2VzKSA8IDApCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVJTlZBTDsKPj4+IC3CoMKgwqAgfQo+Pj4gLQo+Pj4gwqDCoMKgwqDCoCBidWYtPmdyZWZz ID0ga2NhbGxvYyhidWYtPm51bV9ncmVmcywgc2l6ZW9mKCpidWYtPmdyZWZzKSwgCj4+PiBHRlBf S0VSTkVMKTsKPj4+IMKgwqDCoMKgwqAgaWYgKCFidWYtPmdyZWZzKQo+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gQEAgLTM5NiwxMiArMzgxLDYgQEAgeGVuX2RybV9m cm9udF9zaGJ1Zl9hbGxvYyhzdHJ1Y3QgCj4+PiB4ZW5fZHJtX2Zyb250X3NoYnVmX2NmZyAqY2Zn KQo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuX2RybV9mcm9udF9zaGJ1ZiAqYnVmOwo+Pj4gwqDC oMKgwqDCoCBpbnQgcmV0Owo+Pj4gwqAgLcKgwqDCoCAvKiBlaXRoZXIgcGFnZXMgb3Igc2d0LCBu b3QgYm90aCAqLwo+Pj4gLcKgwqDCoCBpZiAodW5saWtlbHkoY2ZnLT5wYWdlcyAmJiBjZmctPnNn dCkpIHsKPj4+IC3CoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIkNhbm5vdCBoYW5kbGUgYnVmZmVy IGFsbG9jYXRpb24gd2l0aCBib3RoIHBhZ2VzIAo+Pj4gYW5kIHNnIHRhYmxlIHByb3ZpZGVkXG4i KTsKPj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4+IC3CoMKgwqAgfQo+Pj4gLQo+ Pj4gwqDCoMKgwqDCoCBidWYgPSBremFsbG9jKHNpemVvZigqYnVmKSwgR0ZQX0tFUk5FTCk7Cj4+ PiDCoMKgwqDCoMKgIGlmICghYnVmKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxM Owo+Pj4gQEAgLTQxMyw3ICszOTIsNiBAQCB4ZW5fZHJtX2Zyb250X3NoYnVmX2FsbG9jKHN0cnVj dCAKPj4+IHhlbl9kcm1fZnJvbnRfc2hidWZfY2ZnICpjZmcpCj4+PiDCoCDCoMKgwqDCoMKgIGJ1 Zi0+eGJfZGV2ID0gY2ZnLT54Yl9kZXY7Cj4+PiDCoMKgwqDCoMKgIGJ1Zi0+bnVtX3BhZ2VzID0g RElWX1JPVU5EX1VQKGNmZy0+c2l6ZSwgUEFHRV9TSVpFKTsKPj4+IC3CoMKgwqAgYnVmLT5zZ3Qg PSBjZmctPnNndDsKPj4+IMKgwqDCoMKgwqAgYnVmLT5wYWdlcyA9IGNmZy0+cGFnZXM7Cj4+PiDC oCDCoMKgwqDCoMKgIGJ1Zi0+b3BzLT5jYWxjX251bV9ncmVmcyhidWYpOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9zaGJ1Zi5oIAo+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfc2hidWYuaAo+Pj4gaW5kZXggOGMwMzdmZDc2 MDhiLi43NTQ1YzY5MjUzOWUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hl bl9kcm1fZnJvbnRfc2hidWYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJt X2Zyb250X3NoYnVmLmgKPj4+IEBAIC0yOSwxNiArMjksOSBAQCBzdHJ1Y3QgeGVuX2RybV9mcm9u dF9zaGJ1ZiB7Cj4+PiDCoMKgwqDCoMKgIGdyYW50X3JlZl90ICpncmVmczsKPj4+IMKgwqDCoMKg wqAgdW5zaWduZWQgY2hhciAqZGlyZWN0b3J5Owo+Pj4gwqAgLcKgwqDCoCAvKgo+Pj4gLcKgwqDC oMKgICogdGhlcmUgYXJlIDIgd2F5cyB0byBwcm92aWRlIGJhY2tpbmcgc3RvcmFnZSBmb3IgdGhp cyBzaGFyZWQgCj4+PiBidWZmZXI6Cj4+PiAtwqDCoMKgwqAgKiBlaXRoZXIgcGFnZXMgb3Igc2d0 LiBpZiBidWZmZXIgY3JlYXRlZCBmcm9tIHNndCB0aGVuIHdlIG93bgo+Pj4gLcKgwqDCoMKgICog dGhlIHBhZ2VzIGFuZCBtdXN0IGZyZWUgdGhvc2Ugb3Vyc2VsdmVzIG9uIGNsb3N1cmUKPj4+IC3C oMKgwqDCoCAqLwo+Pj4gwqDCoMKgwqDCoCBpbnQgbnVtX3BhZ2VzOwo+Pj4gwqDCoMKgwqDCoCBz dHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+Pj4gwqAgLcKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsK Pj4+IC0KPj4+IMKgwqDCoMKgwqAgc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhiX2RldjsKPj4+IMKg IMKgwqDCoMKgwqAgLyogdGhlc2UgYXJlIHRoZSBvcHMgdXNlZCBpbnRlcm5hbGx5IGRlcGVuZGlu ZyBvbiBiZV9hbGxvYyAKPj4+IG1vZGUgKi8KPj4+IEBAIC01Miw3ICs0NSw2IEBAIHN0cnVjdCB4 ZW5fZHJtX2Zyb250X3NoYnVmX2NmZyB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCB4ZW5idXNfZGV2 aWNlICp4Yl9kZXY7Cj4+PiDCoMKgwqDCoMKgIHNpemVfdCBzaXplOwo+Pj4gwqDCoMKgwqDCoCBz dHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+Pj4gLcKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKPj4+ IMKgwqDCoMKgwqAgYm9vbCBiZV9hbGxvYzsKPj4+IMKgIH07Cj4+PiDCoCAtLQo+Pj4gMi4xNy4w Cj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=