From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9A6BC433EF for ; Tue, 28 Sep 2021 15:27:49 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6549F611BD for ; Tue, 28 Sep 2021 15:27:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6549F611BD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=NVV+QEJoZqIrLWQelLu4TXj3HZI23InxsFNjQmGJc3k=; b=vsMuJTcLLpLSo26CYAmiyxvMa9 0nHKEbnJmtrv4o5I34As61yjr35y8kqO8nTgSo76cCTYg+ks/CCbcAQgm7CN3/Bh32VVYfuJvkwbh q/rlyFykRZI+9tshrthedsx7QWgC1bmwx4iSzN3GZrruqrK4kWNCuQkPA/bPzYJqEVPsLZzjjTIgP 70mNvwHFDD0HZaCW+M/YSf2lTCO/DmjicofSnlgFxh4W4ClQSOjdaZIT6TrL4QHt87kVPUtu+FQ+c Q68vJJHzh171aZfGBSFscpKxfGzfaIjl81IWkYZzqmjXFNeY/CAG+wihKheRzQwUQOTV5oWJie+wR OFw00jeA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVF1F-007m4C-2d; Tue, 28 Sep 2021 15:27:45 +0000 Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVF0w-007lzH-PO; Tue, 28 Sep 2021 15:27:30 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id 7B6431F43520 Subject: Re: [PATCH v6 09/10] media: hantro: Support VP9 on the G2 core To: Nicolas Dufresne , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Cc: Benjamin Gaignard , Boris Brezillon , Ezequiel Garcia , Fabio Estevam , Greg Kroah-Hartman , Hans Verkuil , Heiko Stuebner , Jernej Skrabec , Mauro Carvalho Chehab , NXP Linux Team , Pengutronix Kernel Team , Philipp Zabel , Sascha Hauer , Shawn Guo , kernel@collabora.com References: <20210927151958.24426-1-andrzej.p@collabora.com> <20210927151958.24426-10-andrzej.p@collabora.com> <79d74f26c1b36c77723ef57adf1ee7148b2ae36b.camel@collabora.com> From: Andrzej Pietrasiewicz Message-ID: <6a93e756-67f1-3fa6-7ae2-c8430345f897@collabora.com> Date: Tue, 28 Sep 2021 17:27:20 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <79d74f26c1b36c77723ef57adf1ee7148b2ae36b.camel@collabora.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210928_082727_114166_EBB9E658 X-CRM114-Status: GOOD ( 24.13 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgTmljb2xhcywKClcgZG5pdSAyOC4wOS4yMDIxIG/CoDE3OjAyLCBOaWNvbGFzIER1ZnJlc25l IHBpc3plOgo+IExlIGx1bmRpIDI3IHNlcHRlbWJyZSAyMDIxIMOgIDE3OjE5ICswMjAwLCBBbmRy emVqIFBpZXRyYXNpZXdpY3ogYSDDqWNyaXTCoDoKPj4gVmVyaVNpbGljb24gSGFudHJvIEcyIGNv cmUgc3VwcG9ydHMgVlA5IGNvZGVjLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFBpZXRy YXNpZXdpY3ogPGFuZHJ6ZWoucEBjb2xsYWJvcmEuY29tPgo+PiBSZXZpZXdlZC1ieTogQmVuamFt aW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+IC0tLQo+PiAg IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vS2NvbmZpZyAgICAgICAgICB8ICAgMSArCj4+ ICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9NYWtlZmlsZSAgICAgICAgIHwgICA2ICst Cj4+ICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8uaCAgICAgICAgIHwgIDI2 ICsKPj4gICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19kcnYuYyAgICAgfCAg MTggKy0KPj4gICBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmgg fCAgOTcgKysKPj4gICAuLi4vc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3ZwOV9kZWMu YyAgfCA5NzggKysrKysrKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hh bnRyby9oYW50cm9faHcuaCAgICAgIHwgIDY3ICsrCj4+ICAgZHJpdmVycy9zdGFnaW5nL21lZGlh L2hhbnRyby9oYW50cm9fdjRsMi5jICAgIHwgICA2ICsKPj4gICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192cDkuYyAgICAgfCAyNDAgKysrKysKPj4gICBkcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyb192cDkuaCAgICAgfCAxMDMgKysKPj4gICBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jICAgfCAgMjIgKy0KPj4gICAxMSBmaWxl cyBjaGFuZ2VkLCAxNTYwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3ZwOV9k ZWMuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJv L2hhbnRyb192cDkuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192cDkuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L21lZGlhL2hhbnRyby9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9LY29u ZmlnCj4+IGluZGV4IDIwYjFmNmQ3YjY5Yy4uMDBhNTdkODhjOTJlIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9zdGFn aW5nL21lZGlhL2hhbnRyby9LY29uZmlnCj4+IEBAIC05LDYgKzksNyBAQCBjb25maWcgVklERU9f SEFOVFJPCj4+ICAgCXNlbGVjdCBWSURFT0JVRjJfVk1BTExPQwo+PiAgIAlzZWxlY3QgVjRMMl9N RU0yTUVNX0RFVgo+PiAgIAlzZWxlY3QgVjRMMl9IMjY0Cj4+ICsJc2VsZWN0IFY0TDJfVlA5Cj4+ ICAgCWhlbHAKPj4gICAJICBTdXBwb3J0IGZvciB0aGUgSGFudHJvIElQIGJhc2VkIFZpZGVvIFBy b2Nlc3NpbmcgVW5pdHMgcHJlc2VudCBvbgo+PiAgIAkgIFJvY2tjaGlwIGFuZCBOWFAgaS5NWDhN IFNvQ3MsIHdoaWNoIGFjY2VsZXJhdGUgdmlkZW8gYW5kIGltYWdlCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9NYWtlZmlsZQo+PiBpbmRleCBmZTZkODQ4NzFkMDcuLjI4YWYwYTFlZTRiZiAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9NYWtlZmlsZQo+PiAr KysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL01ha2VmaWxlCj4+IEBAIC0xMCw5ICsx MCwxMCBAQCBoYW50cm8tdnB1LXkgKz0gXAo+PiAgIAkJaGFudHJvX2cxLm8gXAo+PiAgIAkJaGFu dHJvX2cxX2gyNjRfZGVjLm8gXAo+PiAgIAkJaGFudHJvX2cxX21wZWcyX2RlYy5vIFwKPj4gLQkJ aGFudHJvX2cyX2hldmNfZGVjLm8gXAo+PiAgIAkJaGFudHJvX2cxX3ZwOF9kZWMubyBcCj4+ICAg CQloYW50cm9fZzIubyBcCj4+ICsJCWhhbnRyb19nMl9oZXZjX2RlYy5vIFwKPj4gKwkJaGFudHJv X2cyX3ZwOV9kZWMubyBcCj4+ICAgCQlyb2NrY2hpcF92cHUyX2h3X2pwZWdfZW5jLm8gXAo+PiAg IAkJcm9ja2NoaXBfdnB1Ml9od19oMjY0X2RlYy5vIFwKPj4gICAJCXJvY2tjaGlwX3ZwdTJfaHdf bXBlZzJfZGVjLm8gXAo+PiBAQCAtMjEsNyArMjIsOCBAQCBoYW50cm8tdnB1LXkgKz0gXAo+PiAg IAkJaGFudHJvX2gyNjQubyBcCj4+ICAgCQloYW50cm9faGV2Yy5vIFwKPj4gICAJCWhhbnRyb19t cGVnMi5vIFwKPj4gLQkJaGFudHJvX3ZwOC5vCj4+ICsJCWhhbnRyb192cDgubyBcCj4+ICsJCWhh bnRyb192cDkubwo+PiAgIAo+PiAgIGhhbnRyby12cHUtJChDT05GSUdfVklERU9fSEFOVFJPX0lN WDhNKSArPSBcCj4+ICAgCQlpbXg4bV92cHVfaHcubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8uaCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50 cm8vaGFudHJvLmgKPj4gaW5kZXggZDkxZWIyYjFjNTA5Li4xZThjMWE2ZTNlYjAgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPj4gKysrIGIvZHJp dmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8uaAo+PiBAQCAtMzYsNiArMzYsNyBAQCBz dHJ1Y3QgaGFudHJvX3Bvc3Rwcm9jX29wczsKPj4gICAjZGVmaW5lIEhBTlRST19WUDhfREVDT0RF UglCSVQoMTcpCj4+ICAgI2RlZmluZSBIQU5UUk9fSDI2NF9ERUNPREVSCUJJVCgxOCkKPj4gICAj ZGVmaW5lIEhBTlRST19IRVZDX0RFQ09ERVIJQklUKDE5KQo+PiArI2RlZmluZSBIQU5UUk9fVlA5 X0RFQ09ERVIJQklUKDIwKQo+PiAgICNkZWZpbmUgSEFOVFJPX0RFQ09ERVJTCQkweGZmZmYwMDAw Cj4+ICAgCj4+ICAgLyoqCj4+IEBAIC0xMTAsNiArMTExLDcgQEAgZW51bSBoYW50cm9fY29kZWNf bW9kZSB7Cj4+ICAgCUhBTlRST19NT0RFX01QRUcyX0RFQywKPj4gICAJSEFOVFJPX01PREVfVlA4 X0RFQywKPj4gICAJSEFOVFJPX01PREVfSEVWQ19ERUMsCj4+ICsJSEFOVFJPX01PREVfVlA5X0RF QywKPj4gICB9Owo+PiAgIAo+PiAgIC8qCj4+IEBAIC0yMjMsNiArMjI1LDcgQEAgc3RydWN0IGhh bnRyb19kZXYgewo+PiAgICAqIEBtcGVnMl9kZWM6CQlNUEVHLTItZGVjb2RpbmcgY29udGV4dC4K Pj4gICAgKiBAdnA4X2RlYzoJCVZQOC1kZWNvZGluZyBjb250ZXh0Lgo+PiAgICAqIEBoZXZjX2Rl YzoJCUhFVkMtZGVjb2RpbmcgY29udGV4dC4KPj4gKyAqIEB2cDlfZGVjOgkJVlA5LWRlY29kaW5n IGNvbnRleHQuCj4+ICAgICovCj4+ICAgc3RydWN0IGhhbnRyb19jdHggewo+PiAgIAlzdHJ1Y3Qg aGFudHJvX2RldiAqZGV2Owo+PiBAQCAtMjUwLDYgKzI1Myw3IEBAIHN0cnVjdCBoYW50cm9fY3R4 IHsKPj4gICAJCXN0cnVjdCBoYW50cm9fbXBlZzJfZGVjX2h3X2N0eCBtcGVnMl9kZWM7Cj4+ICAg CQlzdHJ1Y3QgaGFudHJvX3ZwOF9kZWNfaHdfY3R4IHZwOF9kZWM7Cj4+ICAgCQlzdHJ1Y3QgaGFu dHJvX2hldmNfZGVjX2h3X2N0eCBoZXZjX2RlYzsKPj4gKwkJc3RydWN0IGhhbnRyb192cDlfZGVj X2h3X2N0eCB2cDlfZGVjOwo+PiAgIAl9Owo+PiAgIH07Cj4+ICAgCj4+IEBAIC0yOTksNiArMzAz LDIyIEBAIHN0cnVjdCBoYW50cm9fcG9zdHByb2NfcmVncyB7Cj4+ICAgCXN0cnVjdCBoYW50cm9f cmVnIGRpc3BsYXlfd2lkdGg7Cj4+ICAgfTsKPj4gICAKPj4gK3N0cnVjdCBoYW50cm9fdnA5X2Rl Y29kZWRfYnVmZmVyX2luZm8gewo+PiArCS8qIEluZm8gbmVlZGVkIHdoZW4gdGhlIGRlY29kZWQg ZnJhbWUgc2VydmVzIGFzIGEgcmVmZXJlbmNlIGZyYW1lLiAqLwo+PiArCXVuc2lnbmVkIHNob3J0 IHdpZHRoOwo+PiArCXVuc2lnbmVkIHNob3J0IGhlaWdodDsKPj4gKwl1MzIgYml0X2RlcHRoIDog NDsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBoYW50cm9fZGVjb2RlZF9idWZmZXIgewo+PiArCS8q IE11c3QgYmUgdGhlIGZpcnN0IGZpZWxkIGluIHRoaXMgc3RydWN0LiAqLwo+PiArCXN0cnVjdCB2 NGwyX20ybV9idWZmZXIgYmFzZTsKPj4gKwo+PiArCXVuaW9uIHsKPj4gKwkJc3RydWN0IGhhbnRy b192cDlfZGVjb2RlZF9idWZmZXJfaW5mbyB2cDk7Cj4+ICsJfTsKPj4gK307Cj4+ICsKPj4gICAv KiBMb2dnaW5nIGhlbHBlcnMgKi8KPj4gICAKPj4gICAvKioKPj4gQEAgLTQzNiw2ICs0NTYsMTIg QEAgaGFudHJvX2dldF9kZWNfYnVmX2FkZHIoc3RydWN0IGhhbnRyb19jdHggKmN0eCwgc3RydWN0 IHZiMl9idWZmZXIgKnZiKQo+PiAgIAlyZXR1cm4gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2Fk ZHIodmIsIDApOwo+PiAgIH0KPj4gICAKPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhhbnRyb19k ZWNvZGVkX2J1ZmZlciAqCj4+ICt2YjJfdG9faGFudHJvX2RlY29kZWRfYnVmKHN0cnVjdCB2YjJf YnVmZmVyICpidWYpCj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihidWYsIHN0cnVjdCBo YW50cm9fZGVjb2RlZF9idWZmZXIsIGJhc2UudmIudmIyX2J1Zik7Cj4+ICt9Cj4+ICsKPj4gICB2 b2lkIGhhbnRyb19wb3N0cHJvY19kaXNhYmxlKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+PiAg IHZvaWQgaGFudHJvX3Bvc3Rwcm9jX2VuYWJsZShzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPj4g ICB2b2lkIGhhbnRyb19wb3N0cHJvY19mcmVlKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZHJ2LmMgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19kcnYuYwo+PiBpbmRleCA4YTJlZGQ2 N2YyYzYuLjgwMGM4ODc5YWVlMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L2hhbnRyby9oYW50cm9fZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm9fZHJ2LmMKPj4gQEAgLTIzMiw3ICsyMzIsNyBAQCBxdWV1ZV9pbml0KHZvaWQgKnBy aXYsIHN0cnVjdCB2YjJfcXVldWUgKnNyY192cSwgc3RydWN0IHZiMl9xdWV1ZSAqZHN0X3ZxKQo+ PiAgIAlkc3RfdnEtPmlvX21vZGVzID0gVkIyX01NQVAgfCBWQjJfRE1BQlVGOwo+PiAgIAlkc3Rf dnEtPmRydl9wcml2ID0gY3R4Owo+PiAgIAlkc3RfdnEtPm9wcyA9ICZoYW50cm9fcXVldWVfb3Bz Owo+PiAtCWRzdF92cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX20ybV9i dWZmZXIpOwo+PiArCWRzdF92cS0+YnVmX3N0cnVjdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBoYW50 cm9fZGVjb2RlZF9idWZmZXIpOwo+PiAgIAlkc3RfdnEtPnRpbWVzdGFtcF9mbGFncyA9IFY0TDJf QlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7Cj4+ICAgCWRzdF92cS0+bG9jayA9ICZjdHgtPmRldi0+ dnB1X211dGV4Owo+PiAgIAlkc3RfdnEtPmRldiA9IGN0eC0+ZGV2LT52NGwyX2Rldi5kZXY7Cj4+ IEBAIC0yNjYsNiArMjY2LDEyIEBAIHN0YXRpYyBpbnQgaGFudHJvX3RyeV9jdHJsKHN0cnVjdCB2 NGwyX2N0cmwgKmN0cmwpCj4+ICAgCQlpZiAoc3BzLT5mbGFncyAmIFY0TDJfSEVWQ19TUFNfRkxB R19TQ0FMSU5HX0xJU1RfRU5BQkxFRCkKPj4gICAJCQkvKiBObyBzY2FsaW5nIHN1cHBvcnQgKi8K Pj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9IGVsc2UgaWYgKGN0cmwtPmlkID09IFY0TDJf Q0lEX1NUQVRFTEVTU19WUDlfRlJBTUUpIHsKPj4gKwkJY29uc3Qgc3RydWN0IHY0bDJfY3RybF92 cDlfZnJhbWUgKmRlY19wYXJhbXMgPSBjdHJsLT5wX25ldy5wX3ZwOV9mcmFtZTsKPj4gKwo+PiAr CQkvKiBXZSBvbmx5IHN1cHBvcnQgcHJvZmlsZSAwICovCj4+ICsJCWlmIChkZWNfcGFyYW1zLT5w cm9maWxlICE9IDApCj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4gICAJfQo+PiAgIAlyZXR1cm4g MDsKPj4gICB9Cj4+IEBAIC00NTksNiArNDY1LDE2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGFu dHJvX2N0cmwgY29udHJvbHNbXSA9IHsKPj4gICAJCQkuc3RlcCA9IDEsCj4+ICAgCQkJLm9wcyA9 ICZoYW50cm9faGV2Y19jdHJsX29wcywKPj4gICAJCX0sCj4+ICsJfSwgewo+PiArCQkuY29kZWMg PSBIQU5UUk9fVlA5X0RFQ09ERVIsCj4+ICsJCS5jZmcgPSB7Cj4+ICsJCQkuaWQgPSBWNEwyX0NJ RF9TVEFURUxFU1NfVlA5X0ZSQU1FLAo+PiArCQl9LAo+PiArCX0sIHsKPj4gKwkJLmNvZGVjID0g SEFOVFJPX1ZQOV9ERUNPREVSLAo+PiArCQkuY2ZnID0gewo+PiArCQkJLmlkID0gVjRMMl9DSURf U1RBVEVMRVNTX1ZQOV9DT01QUkVTU0VEX0hEUiwKPj4gKwkJfSwKPj4gICAJfSwKPj4gICB9Owo+ PiAgIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9f ZzJfcmVncy5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5o Cj4+IGluZGV4IDBhYzBiYTM3NWU4MC4uMjFjYTIxNjQ4NjE0IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmgKPj4gKysrIGIvZHJpdmVy cy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5oCj4+IEBAIC0yOCw2ICsyOCw3 IEBACj4+ICAgI2RlZmluZSBHMl9SRUdfSU5URVJSVVBUX0RFQ19FCQlCSVQoMCkKPj4gICAKPj4g ICAjZGVmaW5lIEhFVkNfREVDX01PREUJCQkweGMKPj4gKyNkZWZpbmUgVlA5X0RFQ19NT0RFCQkJ MHhkCj4+ICAgCj4+ICAgI2RlZmluZSBCVVNfV0lEVEhfMzIJCQkwCj4+ICAgI2RlZmluZSBCVVNf V0lEVEhfNjQJCQkxCj4+IEBAIC00OSw2ICs1MCw3IEBACj4+ICAgI2RlZmluZSBnMl9waWNfaGVp Z2h0X2luX2NicwlHMl9ERUNfUkVHKDQsIDYsICAweDFmZmYpCj4+ICAgI2RlZmluZSBnMl9udW1f cmVmX2ZyYW1lcwlHMl9ERUNfUkVHKDQsIDAsICAweDFmKQo+PiAgIAo+PiArI2RlZmluZSBnMl9z dGFydF9iaXQJCUcyX0RFQ19SRUcoNSwgMjUsIDB4N2YpCj4+ICAgI2RlZmluZSBnMl9zY2FsaW5n X2xpc3RfZQlHMl9ERUNfUkVHKDUsIDI0LCAweDEpCj4+ICAgI2RlZmluZSBnMl9jYl9xcF9vZmZz ZXQJCUcyX0RFQ19SRUcoNSwgMTksIDB4MWYpCj4+ICAgI2RlZmluZSBnMl9jcl9xcF9vZmZzZXQJ CUcyX0RFQ19SRUcoNSwgMTQsIDB4MWYpCj4+IEBAIC04NCw2ICs4Niw3IEBACj4+ICAgI2RlZmlu ZSBnMl9iaXRfZGVwdGhfeV9taW51czgJRzJfREVDX1JFRyg4LCA2LCAgMHgzKQo+PiAgICNkZWZp bmUgZzJfYml0X2RlcHRoX2NfbWludXM4CUcyX0RFQ19SRUcoOCwgNCwgIDB4MykKPj4gICAjZGVm aW5lIGcyX291dHB1dF84X2JpdHMJRzJfREVDX1JFRyg4LCAzLCAgMHgxKQo+PiArI2RlZmluZSBn Ml9vdXRwdXRfZm9ybWF0CUcyX0RFQ19SRUcoOCwgMCwgIDB4NykKPj4gICAKPj4gICAjZGVmaW5l IGcyX3JlZmlkeDFfYWN0aXZlCUcyX0RFQ19SRUcoOSwgMTksIDB4MWYpCj4+ICAgI2RlZmluZSBn Ml9yZWZpZHgwX2FjdGl2ZQlHMl9ERUNfUkVHKDksIDE0LCAweDFmKQo+PiBAQCAtOTYsNiArOTks MTQgQEAKPj4gICAjZGVmaW5lIGcyX3RpbGVfZQkJRzJfREVDX1JFRygxMCwgMSwgIDB4MSkKPj4g ICAjZGVmaW5lIGcyX2VudHJvcHlfc3luY19lCUcyX0RFQ19SRUcoMTAsIDAsICAweDEpCj4+ICAg Cj4+ICsjZGVmaW5lIHZwOV90cmFuc2Zvcm1fbW9kZQlHMl9ERUNfUkVHKDExLCAyNywgMHg3KQo+ PiArI2RlZmluZSB2cDlfZmlsdF9zaGFycG5lc3MJRzJfREVDX1JFRygxMSwgMjEsIDB4NykKPj4g KyNkZWZpbmUgdnA5X21jb21wX2ZpbHRfdHlwZQlHMl9ERUNfUkVHKDExLCAgOCwgMHg3KQo+PiAr I2RlZmluZSB2cDlfaGlnaF9wcmVjX212X2UJRzJfREVDX1JFRygxMSwgIDcsIDB4MSkKPj4gKyNk ZWZpbmUgdnA5X2NvbXBfcHJlZF9tb2RlCUcyX0RFQ19SRUcoMTEsICA0LCAweDMpCj4+ICsjZGVm aW5lIHZwOV9ncmVmX3NpZ25fYmlhcwlHMl9ERUNfUkVHKDExLCAgMiwgMHgxKQo+PiArI2RlZmlu ZSB2cDlfYXJlZl9zaWduX2JpYXMJRzJfREVDX1JFRygxMSwgIDAsIDB4MSkKPj4gKwo+PiAgICNk ZWZpbmUgZzJfcmVmZXJfbHRlcm1fZQlHMl9ERUNfUkVHKDEyLCAxNiwgMHhmZmZmKQo+PiAgICNk ZWZpbmUgZzJfbWluX2NiX3NpemUJCUcyX0RFQ19SRUcoMTIsIDEzLCAweDcpCj4+ICAgI2RlZmlu ZSBnMl9tYXhfY2Jfc2l6ZQkJRzJfREVDX1JFRygxMiwgMTAsIDB4NykKPj4gQEAgLTE1NCw2ICsx NjUsNTAgQEAKPj4gICAjZGVmaW5lIGcyX3BhcnRpYWxfY3RiX3kJRzJfREVDX1JFRygyMCwgMzAs IDB4MSkKPj4gICAjZGVmaW5lIGcyX3BpY193aWR0aF80eDQJRzJfREVDX1JFRygyMCwgMTYsIDB4 ZmZmKQo+PiAgICNkZWZpbmUgZzJfcGljX2hlaWdodF80eDQJRzJfREVDX1JFRygyMCwgMCwgIDB4 ZmZmKQo+PiArCj4+ICsjZGVmaW5lIHZwOV9xcF9kZWx0YV95X2RjCUcyX0RFQ19SRUcoMTMsIDIz LCAweDNmKQo+PiArI2RlZmluZSB2cDlfcXBfZGVsdGFfY2hfZGMJRzJfREVDX1JFRygxMywgMTcs IDB4M2YpCj4+ICsjZGVmaW5lIHZwOV9xcF9kZWx0YV9jaF9hYwlHMl9ERUNfUkVHKDEzLCAxMSwg MHgzZikKPj4gKyNkZWZpbmUgdnA5X2xhc3Rfc2lnbl9iaWFzCUcyX0RFQ19SRUcoMTMsIDEwLCAw eDEpCj4+ICsjZGVmaW5lIHZwOV9sb3NzbGVzc19lCQlHMl9ERUNfUkVHKDEzLCAgOSwgMHgxKQo+ PiArI2RlZmluZSB2cDlfY29tcF9wcmVkX3Zhcl9yZWYxCUcyX0RFQ19SRUcoMTMsICA3LCAweDMp Cj4+ICsjZGVmaW5lIHZwOV9jb21wX3ByZWRfdmFyX3JlZjAJRzJfREVDX1JFRygxMywgIDUsIDB4 MykKPj4gKyNkZWZpbmUgdnA5X2NvbXBfcHJlZF9maXhlZF9yZWYJRzJfREVDX1JFRygxMywgIDMs IDB4MykKPj4gKyNkZWZpbmUgdnA5X3NlZ21lbnRfdGVtcF91cGRfZQlHMl9ERUNfUkVHKDEzLCAg MiwgMHgxKQo+PiArI2RlZmluZSB2cDlfc2VnbWVudF91cGRfZQlHMl9ERUNfUkVHKDEzLCAgMSwg MHgxKQo+PiArI2RlZmluZSB2cDlfc2VnbWVudF9lCQlHMl9ERUNfUkVHKDEzLCAgMCwgMHgxKQo+ PiArCj4+ICsjZGVmaW5lIHZwOV9maWx0X2xldmVsCQlHMl9ERUNfUkVHKDE0LCAxOCwgMHgzZikK Pj4gKyNkZWZpbmUgdnA5X3JlZnBpY19zZWcwCQlHMl9ERUNfUkVHKDE0LCAxNSwgMHg3KQo+PiAr I2RlZmluZSB2cDlfc2tpcF9zZWcwCQlHMl9ERUNfUkVHKDE0LCAxNCwgMHgxKQo+PiArI2RlZmlu ZSB2cDlfZmlsdF9sZXZlbF9zZWcwCUcyX0RFQ19SRUcoMTQsICA4LCAweDNmKQo+PiArI2RlZmlu ZSB2cDlfcXVhbnRfc2VnMAkJRzJfREVDX1JFRygxNCwgIDAsIDB4ZmYpCj4+ICsKPj4gKyNkZWZp bmUgdnA5X3JlZnBpY19zZWcxCQlHMl9ERUNfUkVHKDE1LCAxNSwgMHg3KQo+PiArI2RlZmluZSB2 cDlfc2tpcF9zZWcxCQlHMl9ERUNfUkVHKDE1LCAxNCwgMHgxKQo+PiArI2RlZmluZSB2cDlfZmls dF9sZXZlbF9zZWcxCUcyX0RFQ19SRUcoMTUsICA4LCAweDNmKQo+PiArI2RlZmluZSB2cDlfcXVh bnRfc2VnMQkJRzJfREVDX1JFRygxNSwgIDAsIDB4ZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X3Jl ZnBpY19zZWcyCQlHMl9ERUNfUkVHKDE2LCAxNSwgMHg3KQo+PiArI2RlZmluZSB2cDlfc2tpcF9z ZWcyCQlHMl9ERUNfUkVHKDE2LCAxNCwgMHgxKQo+PiArI2RlZmluZSB2cDlfZmlsdF9sZXZlbF9z ZWcyCUcyX0RFQ19SRUcoMTYsICA4LCAweDNmKQo+PiArI2RlZmluZSB2cDlfcXVhbnRfc2VnMgkJ RzJfREVDX1JFRygxNiwgIDAsIDB4ZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X3JlZnBpY19zZWcz CQlHMl9ERUNfUkVHKDE3LCAxNSwgMHg3KQo+PiArI2RlZmluZSB2cDlfc2tpcF9zZWczCQlHMl9E RUNfUkVHKDE3LCAxNCwgMHgxKQo+PiArI2RlZmluZSB2cDlfZmlsdF9sZXZlbF9zZWczCUcyX0RF Q19SRUcoMTcsICA4LCAweDNmKQo+PiArI2RlZmluZSB2cDlfcXVhbnRfc2VnMwkJRzJfREVDX1JF RygxNywgIDAsIDB4ZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X3JlZnBpY19zZWc0CQlHMl9ERUNf UkVHKDE4LCAxNSwgMHg3KQo+PiArI2RlZmluZSB2cDlfc2tpcF9zZWc0CQlHMl9ERUNfUkVHKDE4 LCAxNCwgMHgxKQo+PiArI2RlZmluZSB2cDlfZmlsdF9sZXZlbF9zZWc0CUcyX0RFQ19SRUcoMTgs ICA4LCAweDNmKQo+PiArI2RlZmluZSB2cDlfcXVhbnRfc2VnNAkJRzJfREVDX1JFRygxOCwgIDAs IDB4ZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X3JlZnBpY19zZWc1CQlHMl9ERUNfUkVHKDE5LCAx NSwgMHg3KQo+PiArI2RlZmluZSB2cDlfc2tpcF9zZWc1CQlHMl9ERUNfUkVHKDE5LCAxNCwgMHgx KQo+PiArI2RlZmluZSB2cDlfZmlsdF9sZXZlbF9zZWc1CUcyX0RFQ19SRUcoMTksICA4LCAweDNm KQo+PiArI2RlZmluZSB2cDlfcXVhbnRfc2VnNQkJRzJfREVDX1JFRygxOSwgIDAsIDB4ZmYpCj4+ ICsKPj4gICAjZGVmaW5lIGhldmNfY3VyX3BvY18wMAkJRzJfREVDX1JFRyg0NiwgMjQsIDB4ZmYp Cj4+ICAgI2RlZmluZSBoZXZjX2N1cl9wb2NfMDEJCUcyX0RFQ19SRUcoNDYsIDE2LCAweGZmKQo+ PiAgICNkZWZpbmUgaGV2Y19jdXJfcG9jXzAyCQlHMl9ERUNfUkVHKDQ2LCA4LCAgMHhmZikKPj4g QEAgLTE3NCw2ICsyMjksNDQgQEAKPj4gICAjZGVmaW5lIGhldmNfY3VyX3BvY18xNAkJRzJfREVD X1JFRyg0OSwgOCwgIDB4ZmYpCj4+ICAgI2RlZmluZSBoZXZjX2N1cl9wb2NfMTUJCUcyX0RFQ19S RUcoNDksIDAsICAweGZmKQo+PiAgIAo+PiArI2RlZmluZSB2cDlfcmVmcGljX3NlZzYJCUcyX0RF Q19SRUcoMzEsIDE1LCAweDcpCj4+ICsjZGVmaW5lIHZwOV9za2lwX3NlZzYJCUcyX0RFQ19SRUco MzEsIDE0LCAweDEpCj4+ICsjZGVmaW5lIHZwOV9maWx0X2xldmVsX3NlZzYJRzJfREVDX1JFRygz MSwgIDgsIDB4M2YpCj4+ICsjZGVmaW5lIHZwOV9xdWFudF9zZWc2CQlHMl9ERUNfUkVHKDMxLCAg MCwgMHhmZikKPj4gKwo+PiArI2RlZmluZSB2cDlfcmVmcGljX3NlZzcJCUcyX0RFQ19SRUcoMzIs IDE1LCAweDcpCj4+ICsjZGVmaW5lIHZwOV9za2lwX3NlZzcJCUcyX0RFQ19SRUcoMzIsIDE0LCAw eDEpCj4+ICsjZGVmaW5lIHZwOV9maWx0X2xldmVsX3NlZzcJRzJfREVDX1JFRygzMiwgIDgsIDB4 M2YpCj4+ICsjZGVmaW5lIHZwOV9xdWFudF9zZWc3CQlHMl9ERUNfUkVHKDMyLCAgMCwgMHhmZikK Pj4gKwo+PiArI2RlZmluZSB2cDlfbHJlZl93aWR0aAkJRzJfREVDX1JFRygzMywgMTYsIDB4ZmZm ZikKPj4gKyNkZWZpbmUgdnA5X2xyZWZfaGVpZ2h0CQlHMl9ERUNfUkVHKDMzLCAgMCwgMHhmZmZm KQo+PiArCj4+ICsjZGVmaW5lIHZwOV9ncmVmX3dpZHRoCQlHMl9ERUNfUkVHKDM0LCAxNiwgMHhm ZmZmKQo+PiArI2RlZmluZSB2cDlfZ3JlZl9oZWlnaHQJCUcyX0RFQ19SRUcoMzQsICAwLCAweGZm ZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X2FyZWZfd2lkdGgJCUcyX0RFQ19SRUcoMzUsIDE2LCAw eGZmZmYpCj4+ICsjZGVmaW5lIHZwOV9hcmVmX2hlaWdodAkJRzJfREVDX1JFRygzNSwgIDAsIDB4 ZmZmZikKPj4gKwo+PiArI2RlZmluZSB2cDlfbHJlZl9ob3Jfc2NhbGUJRzJfREVDX1JFRygzNiwg MTYsIDB4ZmZmZikKPj4gKyNkZWZpbmUgdnA5X2xyZWZfdmVyX3NjYWxlCUcyX0RFQ19SRUcoMzYs ICAwLCAweGZmZmYpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X2dyZWZfaG9yX3NjYWxlCUcyX0RFQ19S RUcoMzcsIDE2LCAweGZmZmYpCj4+ICsjZGVmaW5lIHZwOV9ncmVmX3Zlcl9zY2FsZQlHMl9ERUNf UkVHKDM3LCAgMCwgMHhmZmZmKQo+PiArCj4+ICsjZGVmaW5lIHZwOV9hcmVmX2hvcl9zY2FsZQlH Ml9ERUNfUkVHKDM4LCAxNiwgMHhmZmZmKQo+PiArI2RlZmluZSB2cDlfYXJlZl92ZXJfc2NhbGUJ RzJfREVDX1JFRygzOCwgIDAsIDB4ZmZmZikKPj4gKwo+PiArI2RlZmluZSB2cDlfZmlsdF9yZWZf YWRqXzAJRzJfREVDX1JFRyg0NiwgMjQsIDB4N2YpCj4+ICsjZGVmaW5lIHZwOV9maWx0X3JlZl9h ZGpfMQlHMl9ERUNfUkVHKDQ2LCAxNiwgMHg3ZikKPj4gKyNkZWZpbmUgdnA5X2ZpbHRfcmVmX2Fk al8yCUcyX0RFQ19SRUcoNDYsICA4LCAweDdmKQo+PiArI2RlZmluZSB2cDlfZmlsdF9yZWZfYWRq XzMJRzJfREVDX1JFRyg0NiwgIDAsIDB4N2YpCj4+ICsKPj4gKyNkZWZpbmUgdnA5X2ZpbHRfbWJf YWRqXzAJRzJfREVDX1JFRyg0NywgMjQsIDB4N2YpCj4+ICsjZGVmaW5lIHZwOV9maWx0X21iX2Fk al8xCUcyX0RFQ19SRUcoNDcsIDE2LCAweDdmKQo+PiArI2RlZmluZSB2cDlfZmlsdF9tYl9hZGpf MglHMl9ERUNfUkVHKDQ3LCAgOCwgMHg3ZikKPj4gKyNkZWZpbmUgdnA5X2ZpbHRfbWJfYWRqXzMJ RzJfREVDX1JFRyg0NywgIDAsIDB4N2YpCj4+ICsKPj4gICAjZGVmaW5lIGcyX2FwZl90aHJlc2hv bGQJRzJfREVDX1JFRyg1NSwgMCwgMHhmZmZmKQo+PiAgIAo+PiAgICNkZWZpbmUgZzJfY2xrX2dh dGVfZQkJRzJfREVDX1JFRyg1OCwgMTYsIDB4MSkKPj4gQEAgLTE4Niw2ICsyNzksOCBAQAo+PiAg IAo+PiAgICNkZWZpbmUgRzJfQUREUl9EU1QJCShHMl9TV1JFRyg2NSkpCj4+ICAgI2RlZmluZSBH Ml9SRUdfQUREUl9SRUYoaSkJKEcyX1NXUkVHKDY3KSAgKyAoKGkpICogMHg4KSkKPj4gKyNkZWZp bmUgVlA5X0FERFJfU0VHTUVOVF9XUklURQkoRzJfU1dSRUcoNzkpKQo+PiArI2RlZmluZSBWUDlf QUREUl9TRUdNRU5UX1JFQUQJKEcyX1NXUkVHKDgxKSkKPj4gICAjZGVmaW5lIEcyX0FERFJfRFNU X0NIUgkJKEcyX1NXUkVHKDk5KSkKPj4gICAjZGVmaW5lIEcyX1JFR19DSFJfUkVGKGkpCShHMl9T V1JFRygxMDEpICsgKChpKSAqIDB4OCkpCj4+ICAgI2RlZmluZSBHMl9BRERSX0RTVF9NVgkJKEcy X1NXUkVHKDEzMykpCj4+IEBAIC0xOTMsNiArMjg4LDggQEAKPj4gICAjZGVmaW5lIEcyX0FERFJf VElMRV9TSVpFCShHMl9TV1JFRygxNjcpKQo+PiAgICNkZWZpbmUgRzJfQUREUl9TVFIJCShHMl9T V1JFRygxNjkpKQo+PiAgICNkZWZpbmUgSEVWQ19TQ0FMSU5HX0xJU1QJKEcyX1NXUkVHKDE3MSkp Cj4+ICsjZGVmaW5lIFZQOV9BRERSX0NUUgkJKEcyX1NXUkVHKDE3MSkpCj4+ICsjZGVmaW5lIFZQ OV9BRERSX1BST0JTCQkoRzJfU1dSRUcoMTczKSkKPj4gICAjZGVmaW5lIEcyX1JBU1RFUl9TQ0FO CQkoRzJfU1dSRUcoMTc1KSkKPj4gICAjZGVmaW5lIEcyX1JBU1RFUl9TQ0FOX0NIUgkoRzJfU1dS RUcoMTc3KSkKPj4gICAjZGVmaW5lIEcyX1RJTEVfRklMVEVSCQkoRzJfU1dSRUcoMTc5KSkKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3ZwOV9k ZWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3ZwOV9kZWMuYwo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmYxYjIwNzY2NmZh Nwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8v aGFudHJvX2cyX3ZwOV9kZWMuYwo+PiBAQCAtMCwwICsxLDk3OCBAQAo+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiBIYW50cm8gVlA5IGNvZGVjIGRy aXZlcgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBDb2xsYWJvcmEgTHRkLgo+PiAr ICovCj4+ICsjaW5jbHVkZSAibWVkaWEvdmlkZW9idWYyLWNvcmUuaCIKPj4gKyNpbmNsdWRlICJt ZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oIgo+PiArI2luY2x1ZGUgIm1lZGlhL3ZpZGVvYnVm Mi12NGwyLmgiCj4+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvdm1hbGxvYy5oPgo+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5oPgo+PiArI2lu Y2x1ZGUgPG1lZGlhL3Y0bDItdnA5Lmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJoYW50cm8uaCIKPj4g KyNpbmNsdWRlICJoYW50cm9fdnA5LmgiCj4+ICsjaW5jbHVkZSAiaGFudHJvX2cyX3JlZ3MuaCIK Pj4gKwo+PiArI2RlZmluZSBHMl9BTElHTiAxNgo+PiArCj4+ICtlbnVtIGhhbnRyb19yZWZfZnJh bWVzIHsKPj4gKwlJTlRSQV9GUkFNRSA9IDAsCj4+ICsJTEFTVF9GUkFNRSA9IDEsCj4+ICsJR09M REVOX0ZSQU1FID0gMiwKPj4gKwlBTFRSRUZfRlJBTUUgPSAzLAo+PiArCU1BWF9SRUZfRlJBTUVT ID0gNAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludCBzdGFydF9wcmVwYXJlX3J1bihzdHJ1Y3Qg aGFudHJvX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9mcmFtZSAqKmRlY19w YXJhbXMpCj4+ICt7Cj4+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9o ZHIgKnByb2JfdXBkYXRlczsKPj4gKwlzdHJ1Y3QgaGFudHJvX3ZwOV9kZWNfaHdfY3R4ICp2cDlf Y3R4ID0gJmN0eC0+dnA5X2RlYzsKPj4gKwlzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsOwo+PiArCXVu c2lnbmVkIGludCBmY3R4X2lkeDsKPj4gKwo+PiArCS8qIHY0bDItc3BlY2lmaWMgc3R1ZmYgKi8K Pj4gKwloYW50cm9fc3RhcnRfcHJlcGFyZV9ydW4oY3R4KTsKPj4gKwo+PiArCWN0cmwgPSB2NGwy X2N0cmxfZmluZCgmY3R4LT5jdHJsX2hhbmRsZXIsIFY0TDJfQ0lEX1NUQVRFTEVTU19WUDlfRlJB TUUpOwo+PiArCWlmIChXQVJOX09OKCFjdHJsKSkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJ KmRlY19wYXJhbXMgPSBjdHJsLT5wX2N1ci5wOwo+PiArCj4+ICsJY3RybCA9IHY0bDJfY3RybF9m aW5kKCZjdHgtPmN0cmxfaGFuZGxlciwgVjRMMl9DSURfU1RBVEVMRVNTX1ZQOV9DT01QUkVTU0VE X0hEUik7Cj4+ICsJaWYgKFdBUk5fT04oIWN0cmwpKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4g Kwlwcm9iX3VwZGF0ZXMgPSBjdHJsLT5wX2N1ci5wOwo+PiArCXZwOV9jdHgtPmN1ci50eF9tb2Rl ID0gcHJvYl91cGRhdGVzLT50eF9tb2RlOwo+PiArCj4+ICsJLyoKPj4gKwkgKiB2cDkgc3R1ZmYK Pj4gKwkgKgo+PiArCSAqIGJ5IHRoaXMgcG9pbnQgdGhlIHVzZXJzcGFjZSBoYXMgZG9uZSBhbGwg cGFydHMgb2YgNi4yIHVuY29tcHJlc3NlZF9oZWFkZXIoKQo+PiArCSAqIGV4Y2VwdCB0aGlzIGZy YWdtZW50Ogo+PiArCSAqIGlmICggRnJhbWVJc0ludHJhIHx8IGVycm9yX3Jlc2lsaWVudF9tb2Rl ICkgewo+PiArCSAqCXNldHVwX3Bhc3RfaW5kZXBlbmRlbmNlICggKQo+PiArCSAqCWlmICggZnJh bWVfdHlwZSA9PSBLRVlfRlJBTUUgfHwgZXJyb3JfcmVzaWxpZW50X21vZGUgPT0gMSB8fAo+PiAr CSAqCSAgICAgcmVzZXRfZnJhbWVfY29udGV4dCA9PSAzICkgewo+PiArCSAqCQlmb3IgKCBpID0g MDsgaSA8IDQ7IGkgKysgKSB7Cj4+ICsJICoJCQlzYXZlX3Byb2JzKCBpICkKPj4gKwkgKgkJfQo+ PiArCSAqCX0gZWxzZSBpZiAoIHJlc2V0X2ZyYW1lX2NvbnRleHQgPT0gMiApIHsKPj4gKwkgKgkJ c2F2ZV9wcm9icyggZnJhbWVfY29udGV4dF9pZHggKQo+PiArCSAqCX0KPj4gKwkgKglmcmFtZV9j b250ZXh0X2lkeCA9IDAKPj4gKwkgKiB9Cj4+ICsJICovCj4+ICsJZmN0eF9pZHggPSB2NGwyX3Zw OV9yZXNldF9mcmFtZV9jdHgoKmRlY19wYXJhbXMsIHZwOV9jdHgtPmZyYW1lX2NvbnRleHQpOwo+ PiArCXZwOV9jdHgtPmN1ci5mcmFtZV9jb250ZXh0X2lkeCA9IGZjdHhfaWR4Owo+PiArCj4+ICsJ LyogNi4xIGZyYW1lKHN6KTogbG9hZF9wcm9icygpIGFuZCBsb2FkX3Byb2JzMigpICovCj4+ICsJ dnA5X2N0eC0+cHJvYmFiaWxpdHlfdGFibGVzID0gdnA5X2N0eC0+ZnJhbWVfY29udGV4dFtmY3R4 X2lkeF07Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFRoZSB1c2Vyc3BhY2UgaGFzIGFsc28gcGVyZm9y bWVkIDYuMyBjb21wcmVzc2VkX2hlYWRlcigpLCBidXQgaGFuZGxpbmcgdGhlCj4+ICsJICogcHJv YnMgaW4gYSBzcGVjaWFsIHdheS4gQWxsIHByb2JzIHdoaWNoIG5lZWQgdXBkYXRpbmcsIGV4Y2Vw dCBNVi1yZWxhdGVkLAo+PiArCSAqIGhhdmUgYmVlbiByZWFkIGZyb20gdGhlIGJpdHN0cmVhbSBh bmQgdHJhbnNsYXRlZCB0aHJvdWdoIGludl9tYXBfdGFibGVbXSwKPj4gKwkgKiBidXQgbm8gNi4z LjYgaW52X3JlY2VudGVyX25vbm5lZyh2LCBtKSBoYXMgYmVlbiBwZXJmb3JtZWQuIFRoZSB2YWx1 ZXMgcGFzc2VkCj4+ICsJICogYnkgdXNlcnNwYWNlIGFyZSBlaXRoZXIgdHJhbnNsYXRlZCB2YWx1 ZXMgKHRoZXJlIGFyZSBubyAwIHZhbHVlcyBpbgo+PiArCSAqIGludl9tYXBfdGFibGVbXSksIG9y IHplcm8gdG8gaW5kaWNhdGUgbm8gdXBkYXRlLiBBbGwgTVYtcmVsYXRlZCBwcm9icyB3aGljaCBu ZWVkCj4+ICsJICogdXBkYXRpbmcgaGF2ZSBiZWVuIHJlYWQgZnJvbSB0aGUgYml0c3RyZWFtIGFu ZCAobXZfcHJvYiA8PCAxKSB8IDEgaGFzIGJlZW4KPj4gKwkgKiBwZXJmb3JtZWQuIFRoZSB2YWx1 ZXMgcGFzc2VkIGJ5IHVzZXJzcGFjZSBhcmUgZWl0aGVyIG5ldyB2YWx1ZXMKPj4gKwkgKiB0byBy ZXBsYWNlIG9sZCBvbmVzICh0aGUgYWJvdmUgbWVudGlvbmVkIHNoaWZ0IGFuZCBiaXR3aXNlIG9y IG5ldmVyIHJlc3VsdCBpbgo+PiArCSAqIGEgemVybykgb3IgemVybyB0byBpbmRpY2F0ZSBubyB1 cGRhdGUuCj4+ICsJICogZndfdXBkYXRlX3Byb2JzKCkgcGVyZm9ybXMgYWN0dWFsIHByb2JzIHVw ZGF0ZXMgb3IgbGVhdmVzIHByb2JzIGFzLWlzCj4+ICsJICogZm9yIHZhbHVlcyBmb3Igd2hpY2gg YSB6ZXJvIHdhcyBwYXNzZWQgZnJvbSB1c2Vyc3BhY2UuCj4+ICsJICovCj4+ICsJdjRsMl92cDlf ZndfdXBkYXRlX3Byb2JzKCZ2cDlfY3R4LT5wcm9iYWJpbGl0eV90YWJsZXMsIHByb2JfdXBkYXRl cywgKmRlY19wYXJhbXMpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBzaXplX3QgY2hyb21hX29mZnNldChjb25zdCBzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LAo+PiAr CQkJICAgIGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lICpkZWNfcGFyYW1zKQo+PiAr ewo+PiArCWludCBieXRlc19wZXJfcGl4ZWwgPSBkZWNfcGFyYW1zLT5iaXRfZGVwdGggPT0gOCA/ IDEgOiAyOwo+PiArCj4+ICsJcmV0dXJuIGN0eC0+c3JjX2ZtdC53aWR0aCAqIGN0eC0+c3JjX2Zt dC5oZWlnaHQgKiBieXRlc19wZXJfcGl4ZWw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzaXplX3Qg bXZfb2Zmc2V0KGNvbnN0IHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+ICsJCQljb25zdCBzdHJ1 Y3QgdjRsMl9jdHJsX3ZwOV9mcmFtZSAqZGVjX3BhcmFtcykKPj4gK3sKPj4gKwlzaXplX3QgY3Jf b2Zmc2V0ID0gY2hyb21hX29mZnNldChjdHgsIGRlY19wYXJhbXMpOwo+PiArCj4+ICsJcmV0dXJu IEFMSUdOKChjcl9vZmZzZXQgKiAzKSAvIDIsIEcyX0FMSUdOKTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIHN0cnVjdCBoYW50cm9fZGVjb2RlZF9idWZmZXIgKgo+PiArZ2V0X3JlZl9idWYoc3RydWN0 IGhhbnRyb19jdHggKmN0eCwgc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqZHN0LCB1NjQgdGltZXN0 YW1wKQo+PiArewo+PiArCXN0cnVjdCB2NGwyX20ybV9jdHggKm0ybV9jdHggPSBjdHgtPmZoLm0y bV9jdHg7Cj4+ICsJc3RydWN0IHZiMl9xdWV1ZSAqY2FwX3EgPSAmbTJtX2N0eC0+Y2FwX3FfY3R4 LnE7Cj4+ICsJaW50IGJ1Zl9pZHg7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIElmIGEgcmVmIGlzIHVu dXNlZCBvciBpbnZhbGlkLCBhZGRyZXNzIG9mIGN1cnJlbnQgZGVzdGluYXRpb24KPj4gKwkgKiBi dWZmZXIgaXMgcmV0dXJuZWQuCj4+ICsJICovCj4+ICsJYnVmX2lkeCA9IHZiMl9maW5kX3RpbWVz dGFtcChjYXBfcSwgdGltZXN0YW1wLCAwKTsKPj4gKwlpZiAoYnVmX2lkeCA8IDApCj4+ICsJCXJl dHVybiB2YjJfdG9faGFudHJvX2RlY29kZWRfYnVmKCZkc3QtPnZiMl9idWYpOwo+PiArCj4+ICsJ cmV0dXJuIHZiMl90b19oYW50cm9fZGVjb2RlZF9idWYodmIyX2dldF9idWZmZXIoY2FwX3EsIGJ1 Zl9pZHgpKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdXBkYXRlX2RlY19idWZfaW5mbyhz dHJ1Y3QgaGFudHJvX2RlY29kZWRfYnVmZmVyICpidWYsCj4+ICsJCQkJY29uc3Qgc3RydWN0IHY0 bDJfY3RybF92cDlfZnJhbWUgKmRlY19wYXJhbXMpCj4+ICt7Cj4+ICsJYnVmLT52cDkud2lkdGgg PSBkZWNfcGFyYW1zLT5mcmFtZV93aWR0aF9taW51c18xICsgMTsKPj4gKwlidWYtPnZwOS5oZWln aHQgPSBkZWNfcGFyYW1zLT5mcmFtZV9oZWlnaHRfbWludXNfMSArIDE7Cj4+ICsJYnVmLT52cDku Yml0X2RlcHRoID0gZGVjX3BhcmFtcy0+Yml0X2RlcHRoOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg dm9pZCB1cGRhdGVfY3R4X2N1cl9pbmZvKHN0cnVjdCBoYW50cm9fdnA5X2RlY19od19jdHggKnZw OV9jdHgsCj4+ICsJCQkJc3RydWN0IGhhbnRyb19kZWNvZGVkX2J1ZmZlciAqYnVmLAo+PiArCQkJ CWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lICpkZWNfcGFyYW1zKQo+PiArewo+PiAr CXZwOV9jdHgtPmN1ci52YWxpZCA9IHRydWU7Cj4+ICsJdnA5X2N0eC0+Y3VyLnJlZmVyZW5jZV9t b2RlID0gZGVjX3BhcmFtcy0+cmVmZXJlbmNlX21vZGU7Cj4+ICsJdnA5X2N0eC0+Y3VyLmludGVy cG9sYXRpb25fZmlsdGVyID0gZGVjX3BhcmFtcy0+aW50ZXJwb2xhdGlvbl9maWx0ZXI7Cj4+ICsJ dnA5X2N0eC0+Y3VyLmZsYWdzID0gZGVjX3BhcmFtcy0+ZmxhZ3M7Cj4+ICsJdnA5X2N0eC0+Y3Vy LnRpbWVzdGFtcCA9IGJ1Zi0+YmFzZS52Yi52YjJfYnVmLnRpbWVzdGFtcDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIHZvaWQgY29uZmlnX291dHB1dChzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LAo+PiAr CQkJICBzdHJ1Y3QgaGFudHJvX2RlY29kZWRfYnVmZmVyICpkc3QsCj4+ICsJCQkgIGNvbnN0IHN0 cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lICpkZWNfcGFyYW1zKQo+PiArewo+PiArCWRtYV9hZGRy X3QgbHVtYV9hZGRyLCBjaHJvbWFfYWRkciwgbXZfYWRkcjsKPj4gKwo+PiArCWhhbnRyb19yZWdf d3JpdGUoY3R4LT5kZXYsICZnMl9vdXRfZGlzLCAwKTsKPj4gKwloYW50cm9fcmVnX3dyaXRlKGN0 eC0+ZGV2LCAmZzJfb3V0cHV0X2Zvcm1hdCwgMCk7Cj4+ICsKPj4gKwlsdW1hX2FkZHIgPSB2YjJf ZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmZHN0LT5iYXNlLnZiLnZiMl9idWYsIDApOwo+PiAr CWhhbnRyb193cml0ZV9hZGRyKGN0eC0+ZGV2LCBHMl9BRERSX0RTVCwgbHVtYV9hZGRyKTsKPj4g Kwo+PiArCWNocm9tYV9hZGRyID0gbHVtYV9hZGRyICsgY2hyb21hX29mZnNldChjdHgsIGRlY19w YXJhbXMpOwo+PiArCWhhbnRyb193cml0ZV9hZGRyKGN0eC0+ZGV2LCBHMl9BRERSX0RTVF9DSFIs IGNocm9tYV9hZGRyKTsKPj4gKwo+PiArCW12X2FkZHIgPSBsdW1hX2FkZHIgKyBtdl9vZmZzZXQo Y3R4LCBkZWNfcGFyYW1zKTsKPj4gKwloYW50cm9fd3JpdGVfYWRkcihjdHgtPmRldiwgRzJfQURE Ul9EU1RfTVYsIG12X2FkZHIpOwo+PiArfQo+PiArCj4+ICtzdHJ1Y3QgaGFudHJvX3ZwOV9yZWZf cmVnIHsKPj4gKwljb25zdCBzdHJ1Y3QgaGFudHJvX3JlZyB3aWR0aDsKPj4gKwljb25zdCBzdHJ1 Y3QgaGFudHJvX3JlZyBoZWlnaHQ7Cj4+ICsJY29uc3Qgc3RydWN0IGhhbnRyb19yZWcgaG9yX3Nj YWxlOwo+PiArCWNvbnN0IHN0cnVjdCBoYW50cm9fcmVnIHZlcl9zY2FsZTsKPj4gKwl1MzIgeV9i YXNlOwo+PiArCXUzMiBjX2Jhc2U7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgdm9pZCBjb25maWdf cmVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+ICsJCSAgICAgICBzdHJ1Y3QgaGFudHJvX2Rl Y29kZWRfYnVmZmVyICpkc3QsCj4+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaGFudHJvX3ZwOV9y ZWZfcmVnICpyZWZfcmVnLAo+PiArCQkgICAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF92cDlf ZnJhbWUgKmRlY19wYXJhbXMsCj4+ICsJCSAgICAgICB1NjQgcmVmX3RzKQo+PiArewo+PiArCXN0 cnVjdCBoYW50cm9fZGVjb2RlZF9idWZmZXIgKmJ1ZjsKPj4gKwlkbWFfYWRkcl90IGx1bWFfYWRk ciwgY2hyb21hX2FkZHI7Cj4+ICsJdTMyIHJlZncsIHJlZmg7Cj4+ICsKPj4gKwlidWYgPSBnZXRf cmVmX2J1ZihjdHgsICZkc3QtPmJhc2UudmIsIHJlZl90cyk7Cj4+ICsJcmVmdyA9IGJ1Zi0+dnA5 LndpZHRoOwo+PiArCXJlZmggPSBidWYtPnZwOS5oZWlnaHQ7Cj4+ICsKPj4gKwloYW50cm9fcmVn X3dyaXRlKGN0eC0+ZGV2LCAmcmVmX3JlZy0+d2lkdGgsIHJlZncpOwo+PiArCWhhbnRyb19yZWdf d3JpdGUoY3R4LT5kZXYsICZyZWZfcmVnLT5oZWlnaHQsIHJlZmgpOwo+PiArCj4+ICsJaGFudHJv X3JlZ193cml0ZShjdHgtPmRldiwgJnJlZl9yZWctPmhvcl9zY2FsZSwgKHJlZncgPDwgMTQpIC8g ZHN0LT52cDkud2lkdGgpOwo+PiArCWhhbnRyb19yZWdfd3JpdGUoY3R4LT5kZXYsICZyZWZfcmVn LT52ZXJfc2NhbGUsIChyZWZoIDw8IDE0KSAvIGRzdC0+dnA5LmhlaWdodCk7Cj4+ICsKPj4gKwls dW1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmYnVmLT5iYXNlLnZiLnZi Ml9idWYsIDApOwo+PiArCWhhbnRyb193cml0ZV9hZGRyKGN0eC0+ZGV2LCByZWZfcmVnLT55X2Jh c2UsIGx1bWFfYWRkcik7Cj4+ICsKPj4gKwljaHJvbWFfYWRkciA9IGx1bWFfYWRkciArIGNocm9t YV9vZmZzZXQoY3R4LCBkZWNfcGFyYW1zKTsKPj4gKwloYW50cm9fd3JpdGVfYWRkcihjdHgtPmRl diwgcmVmX3JlZy0+Y19iYXNlLCBjaHJvbWFfYWRkcik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIGNvbmZpZ19yZWZfcmVnaXN0ZXJzKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+ICsJCQkJ IGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lICpkZWNfcGFyYW1zLAo+PiArCQkJCSBz dHJ1Y3QgaGFudHJvX2RlY29kZWRfYnVmZmVyICpkc3QsCj4+ICsJCQkJIHN0cnVjdCBoYW50cm9f ZGVjb2RlZF9idWZmZXIgKm12X3JlZikKPj4gK3sKPj4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGhh bnRyb192cDlfcmVmX3JlZyByZWZfcmVnc1tdID0gewo+PiArCQl7Cj4+ICsJCQkvKiBMYXN0ICov Cj4+ICsJCQkud2lkdGggPSB2cDlfbHJlZl93aWR0aCwKPj4gKwkJCS5oZWlnaHQgPSB2cDlfbHJl Zl9oZWlnaHQsCj4+ICsJCQkuaG9yX3NjYWxlID0gdnA5X2xyZWZfaG9yX3NjYWxlLAo+PiArCQkJ LnZlcl9zY2FsZSA9IHZwOV9scmVmX3Zlcl9zY2FsZSwKPj4gKwkJCS55X2Jhc2UgPSBHMl9SRUdf QUREUl9SRUYoMCksCj4+ICsJCQkuY19iYXNlID0gRzJfUkVHX0NIUl9SRUYoMCksCj4+ICsJCX0s IHsKPj4gKwkJCS8qIEdvbGRlbiAqLwo+PiArCQkJLndpZHRoID0gdnA5X2dyZWZfd2lkdGgsCj4+ ICsJCQkuaGVpZ2h0ID0gdnA5X2dyZWZfaGVpZ2h0LAo+PiArCQkJLmhvcl9zY2FsZSA9IHZwOV9n cmVmX2hvcl9zY2FsZSwKPj4gKwkJCS52ZXJfc2NhbGUgPSB2cDlfZ3JlZl92ZXJfc2NhbGUsCj4+ ICsJCQkueV9iYXNlID0gRzJfUkVHX0FERFJfUkVGKDQpLAo+PiArCQkJLmNfYmFzZSA9IEcyX1JF R19DSFJfUkVGKDQpLAo+PiArCQl9LCB7Cj4+ICsJCQkvKiBBbHRyZWYgKi8KPj4gKwkJCS53aWR0 aCA9IHZwOV9hcmVmX3dpZHRoLAo+PiArCQkJLmhlaWdodCA9IHZwOV9hcmVmX2hlaWdodCwKPj4g KwkJCS5ob3Jfc2NhbGUgPSB2cDlfYXJlZl9ob3Jfc2NhbGUsCj4+ICsJCQkudmVyX3NjYWxlID0g dnA5X2FyZWZfdmVyX3NjYWxlLAo+PiArCQkJLnlfYmFzZSA9IEcyX1JFR19BRERSX1JFRig1KSwK Pj4gKwkJCS5jX2Jhc2UgPSBHMl9SRUdfQ0hSX1JFRig1KSwKPj4gKwkJfSwKPj4gKwl9Owo+PiAr CWRtYV9hZGRyX3QgbXZfYWRkcjsKPj4gKwo+PiArCWNvbmZpZ19yZWYoY3R4LCBkc3QsICZyZWZf cmVnc1swXSwgZGVjX3BhcmFtcywgZGVjX3BhcmFtcy0+bGFzdF9mcmFtZV90cyk7Cj4+ICsJY29u ZmlnX3JlZihjdHgsIGRzdCwgJnJlZl9yZWdzWzFdLCBkZWNfcGFyYW1zLCBkZWNfcGFyYW1zLT5n b2xkZW5fZnJhbWVfdHMpOwo+PiArCWNvbmZpZ19yZWYoY3R4LCBkc3QsICZyZWZfcmVnc1syXSwg ZGVjX3BhcmFtcywgZGVjX3BhcmFtcy0+YWx0X2ZyYW1lX3RzKTsKPj4gKwo+PiArCW12X2FkZHIg PSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmbXZfcmVmLT5iYXNlLnZiLnZiMl9idWYs IDApICsKPj4gKwkJICBtdl9vZmZzZXQoY3R4LCBkZWNfcGFyYW1zKTsKPj4gKwloYW50cm9fd3Jp dGVfYWRkcihjdHgtPmRldiwgRzJfUkVHX0RNVl9SRUYoMCksIG12X2FkZHIpOwo+PiArCj4+ICsJ aGFudHJvX3JlZ193cml0ZShjdHgtPmRldiwgJnZwOV9sYXN0X3NpZ25fYmlhcywKPj4gKwkJCSBk ZWNfcGFyYW1zLT5yZWZfZnJhbWVfc2lnbl9iaWFzICYgVjRMMl9WUDlfU0lHTl9CSUFTX0xBU1Qg PyAxIDogMCk7Cj4+ICsKPj4gKwloYW50cm9fcmVnX3dyaXRlKGN0eC0+ZGV2LCAmdnA5X2dyZWZf c2lnbl9iaWFzLAo+PiArCQkJIGRlY19wYXJhbXMtPnJlZl9mcmFtZV9zaWduX2JpYXMgJiBWNEwy X1ZQOV9TSUdOX0JJQVNfR09MREVOID8gMSA6IDApOwo+PiArCj4+ICsJaGFudHJvX3JlZ193cml0 ZShjdHgtPmRldiwgJnZwOV9hcmVmX3NpZ25fYmlhcywKPj4gKwkJCSBkZWNfcGFyYW1zLT5yZWZf ZnJhbWVfc2lnbl9iaWFzICYgVjRMMl9WUDlfU0lHTl9CSUFTX0FMVCA/IDEgOiAwKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgcmVjb21wdXRlX3RpbGVfaW5mbyh1bnNpZ25lZCBzaG9ydCAq dGlsZV9pbmZvLCB1bnNpZ25lZCBpbnQgdGlsZXMsIHVuc2lnbmVkIGludCBzYnMpCj4+ICt7Cj4+ ICsJaW50IGk7Cj4+ICsJdW5zaWduZWQgaW50IGFjY3VtdWxhdGVkID0gMDsKPj4gKwl1bnNpZ25l ZCBpbnQgbmV4dF9hY2N1bXVsYXRlZDsKPj4gKwo+PiArCWZvciAoaSA9IDE7IGkgPD0gdGlsZXM7 ICsraSkgewo+PiArCQluZXh0X2FjY3VtdWxhdGVkID0gaSAqIHNicyAvIHRpbGVzOwo+PiArCQkq dGlsZV9pbmZvKysgPSBuZXh0X2FjY3VtdWxhdGVkIC0gYWNjdW11bGF0ZWQ7Cj4+ICsJCWFjY3Vt dWxhdGVkID0gbmV4dF9hY2N1bXVsYXRlZDsKPj4gKwl9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkCj4+ICtyZWNvbXB1dGVfdGlsZV9yY19pbmZvKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+ ICsJCSAgICAgICB1bnNpZ25lZCBpbnQgdGlsZV9yLCB1bnNpZ25lZCBpbnQgdGlsZV9jLAo+PiAr CQkgICAgICAgdW5zaWduZWQgaW50IHNic19yLCB1bnNpZ25lZCBpbnQgc2JzX2MpCj4+ICt7Cj4+ ICsJc3RydWN0IGhhbnRyb192cDlfZGVjX2h3X2N0eCAqdnA5X2N0eCA9ICZjdHgtPnZwOV9kZWM7 Cj4+ICsKPj4gKwlyZWNvbXB1dGVfdGlsZV9pbmZvKHZwOV9jdHgtPnRpbGVfcl9pbmZvLCB0aWxl X3IsIHNic19yKTsKPj4gKwlyZWNvbXB1dGVfdGlsZV9pbmZvKHZwOV9jdHgtPnRpbGVfY19pbmZv LCB0aWxlX2MsIHNic19jKTsKPj4gKwo+PiArCXZwOV9jdHgtPmxhc3RfdGlsZV9yID0gdGlsZV9y Owo+PiArCXZwOV9jdHgtPmxhc3RfdGlsZV9jID0gdGlsZV9jOwo+PiArCXZwOV9jdHgtPmxhc3Rf c2JzX3IgPSBzYnNfcjsKPj4gKwl2cDlfY3R4LT5sYXN0X3Nic19jID0gc2JzX2M7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGZpcnN0X3RpbGVfcm93KHVuc2lnbmVk IGludCB0aWxlX3IsIHVuc2lnbmVkIGludCBzYnNfcikKPj4gK3sKPj4gKwlpZiAodGlsZV9yID09 IHNic19yICsgMSkKPj4gKwkJcmV0dXJuIDE7Cj4+ICsKPj4gKwlpZiAodGlsZV9yID09IHNic19y ICsgMikKPj4gKwkJcmV0dXJuIDI7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHZvaWQKPj4gK2ZpbGxfdGlsZV9pbmZvKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4+ ICsJICAgICAgIHVuc2lnbmVkIGludCB0aWxlX3IsIHVuc2lnbmVkIGludCB0aWxlX2MsCj4+ICsJ ICAgICAgIHVuc2lnbmVkIGludCBzYnNfciwgdW5zaWduZWQgaW50IHNic19jLAo+PiArCSAgICAg ICB1bnNpZ25lZCBzaG9ydCAqdGlsZV9tZW0pCj4+ICt7Cj4+ICsJc3RydWN0IGhhbnRyb192cDlf ZGVjX2h3X2N0eCAqdnA5X2N0eCA9ICZjdHgtPnZwOV9kZWM7Cj4+ICsJdW5zaWduZWQgaW50IGks IGo7Cj4+ICsJYm9vbCBmaXJzdCA9IHRydWU7Cj4+ICsKPj4gKwlmb3IgKGkgPSBmaXJzdF90aWxl X3Jvdyh0aWxlX3IsIHNic19yKTsgaSA8IHRpbGVfcjsgKytpKSB7Cj4+ICsJCXVuc2lnbmVkIHNo b3J0IHJfaW5mbyA9IHZwOV9jdHgtPnRpbGVfcl9pbmZvW2ldOwo+PiArCj4+ICsJCWlmIChmaXJz dCkgewo+PiArCQkJaWYgKGkgPiAwKQo+PiArCQkJCXJfaW5mbyArPSB2cDlfY3R4LT50aWxlX3Jf aW5mb1swXTsKPj4gKwkJCWlmIChpID09IDIpCj4+ICsJCQkJcl9pbmZvICs9IHZwOV9jdHgtPnRp bGVfcl9pbmZvWzFdOwo+PiArCQkJZmlyc3QgPSBmYWxzZTsKPj4gKwkJfQo+PiArCQlmb3IgKGog PSAwOyBqIDwgdGlsZV9jOyArK2opIHsKPj4gKwkJCSp0aWxlX21lbSsrID0gdnA5X2N0eC0+dGls ZV9jX2luZm9bal07Cj4+ICsJCQkqdGlsZV9tZW0rKyA9IHJfaW5mbzsKPj4gKwkJfQo+PiArCX0K Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK2NvbmZpZ190aWxlcyhzdHJ1Y3QgaGFudHJv X2N0eCAqY3R4LAo+PiArCSAgICAgY29uc3Qgc3RydWN0IHY0bDJfY3RybF92cDlfZnJhbWUgKmRl Y19wYXJhbXMsCj4+ICsJICAgICBzdHJ1Y3QgaGFudHJvX2RlY29kZWRfYnVmZmVyICpkc3QpCj4+ ICt7Cj4+ICsJc3RydWN0IGhhbnRyb192cDlfZGVjX2h3X2N0eCAqdnA5X2N0eCA9ICZjdHgtPnZw OV9kZWM7Cj4+ICsJc3RydWN0IGhhbnRyb19hdXhfYnVmICptaXNjID0gJnZwOV9jdHgtPm1pc2M7 Cj4+ICsJc3RydWN0IGhhbnRyb19hdXhfYnVmICp0aWxlX2VkZ2UgPSAmdnA5X2N0eC0+dGlsZV9l ZGdlOwo+PiArCWRtYV9hZGRyX3QgYWRkcjsKPj4gKwl1bnNpZ25lZCBzaG9ydCAqdGlsZV9tZW07 Cj4+ICsKPj4gKwlhZGRyID0gbWlzYy0+ZG1hICsgdnA5X2N0eC0+dGlsZV9pbmZvX29mZnNldDsK Pj4gKwloYW50cm9fd3JpdGVfYWRkcihjdHgtPmRldiwgRzJfQUREUl9USUxFX1NJWkUsIGFkZHIp Owo+PiArCj4+ICsJdGlsZV9tZW0gPSBtaXNjLT5jcHUgKyB2cDlfY3R4LT50aWxlX2luZm9fb2Zm c2V0Owo+PiArCWlmIChkZWNfcGFyYW1zLT50aWxlX2NvbHNfbG9nMiB8fCBkZWNfcGFyYW1zLT50 aWxlX3Jvd3NfbG9nMikgewo+PiArCQl1bnNpZ25lZCBpbnQgdGlsZV9yID0gKDEgPDwgZGVjX3Bh cmFtcy0+dGlsZV9yb3dzX2xvZzIpOwo+PiArCQl1bnNpZ25lZCBpbnQgdGlsZV9jID0gKDEgPDwg ZGVjX3BhcmFtcy0+dGlsZV9jb2xzX2xvZzIpOwo+PiArCQl1bnNpZ25lZCBpbnQgc2JzX3IgPSBo YW50cm9fdnA5X251bV9zYnMoZHN0LT52cDkuaGVpZ2h0KTsKPj4gKwkJdW5zaWduZWQgaW50IHNi c19jID0gaGFudHJvX3ZwOV9udW1fc2JzKGRzdC0+dnA5LndpZHRoKTsKPj4gKwo+PiArCQlpZiAo dGlsZV9yICE9IHZwOV9jdHgtPmxhc3RfdGlsZV9yIHx8IHRpbGVfYyAhPSB2cDlfY3R4LT5sYXN0 X3RpbGVfYyB8fAo+PiArCQkgICAgc2JzX3IgIT0gdnA5X2N0eC0+bGFzdF9zYnNfciB8fCBzYnNf YyAhPSB2cDlfY3R4LT5sYXN0X3Nic19jKQo+PiArCQkJcmVjb21wdXRlX3RpbGVfcmNfaW5mbyhj dHgsIHRpbGVfciwgdGlsZV9jLCBzYnNfciwgc2JzX2MpOwo+PiArCj4+ICsJCWZpbGxfdGlsZV9p bmZvKGN0eCwgdGlsZV9yLCB0aWxlX2MsIHNic19yLCBzYnNfYywgdGlsZV9tZW0pOwo+PiArCj4+ ICsJCWhhbnRyb19yZWdfd3JpdGUoY3R4LT5kZXYsICZnMl90aWxlX2UsIDEpOwo+PiArCQloYW50 cm9fcmVnX3dyaXRlKGN0eC0+ZGV2LCAmZzJfbnVtX3RpbGVfY29scywgdGlsZV9jKTsKPj4gKwkJ aGFudHJvX3JlZ193cml0ZShjdHgtPmRldiwgJmcyX251bV90aWxlX3Jvd3MsIHRpbGVfcik7Cj4+ ICsKPj4gKwkJYWRkciA9IHRpbGVfZWRnZS0+ZG1hOwo+PiArCQloYW50cm9fd3JpdGVfYWRkcihj dHgtPmRldiwgRzJfVElMRV9GSUxURVIsIGFkZHIpOwo+PiArCj4+ICsJCWFkZHIgPSB0aWxlX2Vk Z2UtPmRtYSArIHZwOV9jdHgtPmJzZF9jdHJsX29mZnNldDsKPj4gKwkJaGFudHJvX3dyaXRlX2Fk ZHIoY3R4LT5kZXYsIEcyX1RJTEVfQlNELCBhZGRyKTsKPiAKPiBUaGUgdHdvIGFib3ZlIGFkZHJl c3NlcyBhcmUgbGVmdCB3aXRoIGFuY2llbnQgZGF0YSB3aGVuIHRpbGUgaXMgZGlzYWJsZWQuIFRo ZQo+IHZlbmRvciBkcml2ZXIgYWx3YXlzIHNldCBhIHZhbGlkIHBvaW50ZXIgcmVnYXJkbGVzcyBp ZiB0aWxlIGlzIGVuYWJsZWQgb3IKPiBkaXNhYmxlZCwgcGVyaGFwcyB3ZSBjb3VsZCBkbyB0aGF0 IHNhbWUgPwo+IAo+IHAucy4gV2FzIHNwb3R0ZWQgYnkgSmVybmVqLgo+IAoKRldJVywgd2hlbiB0 ZXN0aW5nIHdpdGggZmx1c3RlciBJIG9ic2VydmUgbm8gc2NvcmUgY2hhbmdlcyBpZiBJIHNldCB0 aGVzZQpmb3IgdGhlIG5vLXRpbGVzIGNhc2UsIHRvby4gQWx3YXlzIHdyaXRpbmcgRzJfVElMRV9G SUxURVIgYW5kIEcyX1RJTEVfQlNEIHdvbid0Cmh1cnQsIHRob3VnaCwgc28gSSB3aWxsIGRvIHRo YXQgaW4gdjcuCgpSZWdhcmRzLAoKQW5kcnplagoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJv Y2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=