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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 52994C0219B for ; Fri, 7 Feb 2025 10:00:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DixrIADTq9h4YaiXfTl9jRJmf8YLEtFqi1zJk/8oHk8=; b=3r01QgadK0vpoa kZg17VpZpI8BzQfzNPCOgSvUg+rtTMYrVXgm0bqSSxrqrVWYTWgOnalhMNVh0Ssxg5zpnTogE0rDc 4CCT76kQ9kkofvoTN8chwz+yH0Q7anYb/92jsMSKg9vJbzb/foGMjd5wIlLAtBxDYyYrXkhWrEG1+ ADNMRLBRWdurCfgDQIeLUQQSCLj/tDmXGCLr8bX6OB3BcuCIPdkK1crdK5GuARueVbmjehP697H4h CFo+gDxDBs1oBFWlupA+FOelBLkoAUv5HZP/BdgRVqGAMMHf+HB2ZZe3ruQNR4AeFHdYsK+q0G+3N 0B0BW92Jb1+Bqg1OZUFg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tgLAJ-000000098HP-1ew4; Fri, 07 Feb 2025 10:00:51 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tgL8u-0000000984g-1S1B for linux-riscv@lists.infradead.org; Fri, 07 Feb 2025 09:59:26 +0000 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-436249df846so12462725e9.3 for ; Fri, 07 Feb 2025 01:59:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1738922363; x=1739527163; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=y9gs5bngCboXGDiCZD5vD7m5L2iBYR9FMNiuDAmK5D8=; b=ltbBMyNolzcmt1a7kDfkhHr38Mk5qqG8S/vDyeIgdY8lQLVa/6CG0tDrjOpDAil5iR LfqZOHXLbvx+tAAE9qA+XsnCr8VrXBhtUiimAV4o6gCqx7n5VDlbVLlMHjUqCgC1VjPb /eYC0qVDqv4oxpM6TvHfj4G711G+Y0s5r/vi9VJWTKrAR9JEydhb8e7/AeY67M9PDVFA CzNHqj/hTXZr1GSaavu45oj5pvOuLYKIECmpNu5OTv0RGHk4tI36ISPD7Ycbgk5JM8id /+174uo51sCaep5ZsiuF5c0Vpn91hZqwOdbnFXVoAIZF9PA1iCyPNwYgsH2AGaVbfj+v 5Ivw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738922363; x=1739527163; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=y9gs5bngCboXGDiCZD5vD7m5L2iBYR9FMNiuDAmK5D8=; b=DvwaQNF7XgOiibvwGdv11ZDFE947jBv1FPco92UIZj3q4ZL2cFUXmotf4fq2h8n8oi hBUAjIWRBZf5E4oMrkcz4fVM/XT5PskmFs6hmzev3OjV59fAA1SulfKJ1PpA7YoP/p0h F996Oc3EMu9nQGGgcmlV8tP43J86s5jEhrAinL1CQiHUVcOmwN/q/Iwfxgrjm1eD+gPV XnPxiTDEBiNUI0xm76u8BpOZIlipd3/dOblbZLQoT5i2EQShWbkTmden7gyRYyZw2kh4 VOVCs0T0v5+M28FA10p/+2U66EGKyO9jO8+f61Ikv9ZpKbXUILRfVU3tFURq+wbF790s htuw== X-Gm-Message-State: AOJu0Yz4AbysK0EtCTFr6H266TavjiewULMwRmXph5krZx6LOEK206My xT5XBwL49ssWM7A6oMafmBj7ybKag+UEVfZYbS0X0L2X0HGAux6dUvV3ZmV8XEKVdr0NWlkh7kG Q2ZM= X-Gm-Gg: ASbGncsX6e87/nmbyyqMyfze/LosbaQ5dgXUSs3rabl6GbscCSUN44YVn/jPxZ+HQy/ mUQ5fuiMksxitq060WnBquRK9b7z8at/MNJaLELcoGapSqIsbIADNG+O6MIbgAMuu5YtZav6s/G NEgIM1d0q3EfRRgMwZ67nkwPh8khWXdm7FZ8ZQVe0UwpbGqs2PDgpMT27AdNtES6iaPwum+ydbZ VKGBhpAbJzKMWDLYlwzfn7TX0w1poZlpoay33KoHQrXmpV/6w7lPSnVVpVXJ8HcO14UzMZHVc3b +wD6Hk0TG6kNd7E8oVA0lTMWvjXbzgNLHrvsA1J0zhfRJ3bSYKfpo/fi7WUH X-Google-Smtp-Source: AGHT+IGdPNrbhxa9M4QvI1XIR1gN6Dr39k8lzokEo3iPhlhAGNvWILXnXeZoi6rhU6skzgmxctTpFw== X-Received: by 2002:a05:600c:a0a:b0:434:a525:7257 with SMTP id 5b1f17b1804b1-439249abea0mr17651435e9.21.1738922362275; Fri, 07 Feb 2025 01:59:22 -0800 (PST) Received: from ?IPV6:2a01:e0a:e17:9700:16d2:7456:6634:9626? ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4391da964e2sm49514945e9.4.2025.02.07.01.59.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 07 Feb 2025 01:59:21 -0800 (PST) Message-ID: <330c8c8f-4678-431b-95f6-9117817cf28d@rivosinc.com> Date: Fri, 7 Feb 2025 10:59:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 11/21] RISC-V: perf: Restructure the SBI PMU code To: Atish Patra , Paul Walmsley , Palmer Dabbelt , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Anup Patel , Atish Patra , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , weilin.wang@intel.com Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Conor Dooley , devicetree@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org References: <20250205-counter_delegation-v4-0-835cfa88e3b1@rivosinc.com> <20250205-counter_delegation-v4-11-835cfa88e3b1@rivosinc.com> Content-Language: en-US From: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= In-Reply-To: <20250205-counter_delegation-v4-11-835cfa88e3b1@rivosinc.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250207_015924_417094_041AD343 X-CRM114-Status: GOOD ( 29.18 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CgpPbiAwNi8wMi8yMDI1IDA4OjIzLCBBdGlzaCBQYXRyYSB3cm90ZToKPiBXaXRoIFNzY2NmZy9T bWNkZWxlZywgd2Ugbm8gbG9uZ2VyIG5lZWQgU0JJIFBNVSBleHRlbnNpb24gdG8gcHJvZ3JhbS8K PiBhY2Nlc3MgaHBtY291bnRlci9ldmVudHMuIEhvd2V2ZXIsIHdlIGRvIG5lZWQgaXQgZm9yIGZp cm13YXJlIGNvdW50ZXJzLgo+IFJlbmFtZSB0aGUgZHJpdmVyIGFuZCBpdHMgcmVsYXRlZCBjb2Rl IHRvIHJlcHJlc2VudCBnZW5lcmljIG5hbWUKPiB0aGF0IHdpbGwgaGFuZGxlIGJvdGggc2JpIGFu ZCBJU0EgbWVjaGFuaXNtIGZvciBocG1jb3VudGVyIHJlbGF0ZWQKPiBvcGVyYXRpb25zLiBUYWtl IHRoaXMgb3Bwb3J0dW5pdHkgdG8gdXBkYXRlIHRoZSBLY29uZmlnIG5hbWVzIHRvCj4gbWF0Y2gg dGhlIG5ldyBkcml2ZXIgbmFtZSBjbG9zZWx5Lgo+IAo+IE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlu dGVuZGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEF0aXNoIFBhdHJhIDxhdGlzaHBAcml2b3NpbmMu Y29tPgo+IC0tLQo+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA0ICstCj4gIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfcG11Lmgg ICAgICAgICAgICAgfCAgIDQgKy0KPiAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9z YmkuaCAgICAgICAgICAgICB8ICAgMiArLQo+ICBhcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCj4gIGFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2Jp LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9wZXJmL0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArLQo+ICBkcml2ZXJzL3BlcmYv TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMv cGVyZi97cmlzY3ZfcG11LmMgPT4gcmlzY3ZfcG11X2NvbW1vbi5jfSAgfCAgIDAKPiAgZHJpdmVy cy9wZXJmL3tyaXNjdl9wbXVfc2JpLmMgPT4gcmlzY3ZfcG11X2Rldi5jfSB8IDIxNCArKysrKysr KysrKysrLS0tLS0tLS0tCj4gIGluY2x1ZGUvbGludXgvcGVyZi9yaXNjdl9wbXUuaCAgICAgICAg ICAgICAgICAgICAgfCAgIDggKy0KPiAgMTAgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMo KyksIDEwNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlO VEFJTkVSUwo+IGluZGV4IDMwY2JjM2Q0NGNkNS4uMmVmN2ZmOTMzMjY2IDEwMDY0NAo+IC0tLSBh L01BSU5UQUlORVJTCj4gKysrIGIvTUFJTlRBSU5FUlMKPiBAQCAtMjAxNzcsOSArMjAxNzcsOSBA QCBNOglBdGlzaCBQYXRyYSA8YXRpc2hwQGF0aXNocGF0cmEub3JnPgo+ICBSOglBbnVwIFBhdGVs IDxhbnVwQGJyYWluZmF1bHQub3JnPgo+ICBMOglsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQu b3JnCj4gIFM6CVN1cHBvcnRlZAo+IC1GOglkcml2ZXJzL3BlcmYvcmlzY3ZfcG11LmMKPiArRjoJ ZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9jb21tb24uYwo+ICtGOglkcml2ZXJzL3BlcmYvcmlzY3Zf cG11X2Rldi5jCj4gIEY6CWRyaXZlcnMvcGVyZi9yaXNjdl9wbXVfbGVnYWN5LmMKPiAtRjoJZHJp dmVycy9wZXJmL3Jpc2N2X3BtdV9zYmkuYwo+ICAKPiAgUklTQy1WIFRIRUFEIFNvQyBTVVBQT1JU Cj4gIE06CURyZXcgRnVzdGluaSA8ZHJld0BwZHA3LmNvbT4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9wbXUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v a3ZtX3ZjcHVfcG11LmgKPiBpbmRleCAxZDg1YjY2MTc1MDguLmFhNzVmNTJlOTA5MiAxMDA2NDQK PiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3BtdS5oCj4gKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9wbXUuaAo+IEBAIC0xMyw3ICsxMyw3IEBACj4g ICNpbmNsdWRlIDxhc20va3ZtX3ZjcHVfaW5zbi5oPgo+ICAjaW5jbHVkZSA8YXNtL3NiaS5oPgo+ ICAKPiAtI2lmZGVmIENPTkZJR19SSVNDVl9QTVVfU0JJCj4gKyNpZmRlZiBDT05GSUdfUklTQ1Zf UE1VCj4gICNkZWZpbmUgUklTQ1ZfS1ZNX01BWF9GV19DVFJTCTMyCj4gICNkZWZpbmUgUklTQ1Zf S1ZNX01BWF9IV19DVFJTCTMyCj4gICNkZWZpbmUgUklTQ1ZfS1ZNX01BWF9DT1VOVEVSUwkoUklT Q1ZfS1ZNX01BWF9IV19DVFJTICsgUklTQ1ZfS1ZNX01BWF9GV19DVFJTKQo+IEBAIC0xMjgsNSAr MTI4LDUgQEAgc3RhdGljIGlubGluZSBpbnQga3ZtX3Jpc2N2X3ZjcHVfcG11X2luY3JfZncoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb24KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9p ZCBrdm1fcmlzY3ZfdmNwdV9wbXVfZGVpbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge30KPiAg c3RhdGljIGlubGluZSB2b2lkIGt2bV9yaXNjdl92Y3B1X3BtdV9yZXNldChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpIHt9Cj4gLSNlbmRpZiAvKiBDT05GSUdfUklTQ1ZfUE1VX1NCSSAqLwo+ICsjZW5k aWYgLyogQ09ORklHX1JJU0NWX1BNVSAqLwo+ICAjZW5kaWYgLyogIV9fS1ZNX1ZDUFVfUklTQ1Zf UE1VX0ggKi8KPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNwdV9z YmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgKPiBpbmRleCBiOTY3 MDUyNThjZjkuLjc2NGJiMTU4ZTc2MCAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2t2bV92Y3B1X3NiaS5oCj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNw dV9zYmkuaAo+IEBAIC04OSw3ICs4OSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVf c2JpX2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfc3RhOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0IGt2 bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X2V4cGVyaW1lbnRhbDsKPiAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF92ZW5kb3I7 Cj4gIAo+IC0jaWZkZWYgQ09ORklHX1JJU0NWX1BNVV9TQkkKPiArI2lmZGVmIENPTkZJR19SSVND Vl9QTVUKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVf c2JpX2V4dF9wbXU7Cj4gICNlbmRpZgo+ICAjZW5kaWYgLyogX19SSVNDVl9LVk1fVkNQVV9TQklf SF9fICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL01ha2VmaWxlIGIvYXJjaC9yaXNj di9rdm0vTWFrZWZpbGUKPiBpbmRleCAwZmIxODQwYzNlMGEuLmY0YWQ3YWYwYmRhYiAxMDA2NDQK PiAtLS0gYS9hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZQo+ICsrKyBiL2FyY2gvcmlzY3Yva3ZtL01h a2VmaWxlCj4gQEAgLTIzLDExICsyMywxMSBAQCBrdm0teSArPSB2Y3B1X2V4aXQubwo+ICBrdm0t eSArPSB2Y3B1X2ZwLm8KPiAga3ZtLXkgKz0gdmNwdV9pbnNuLm8KPiAga3ZtLXkgKz0gdmNwdV9v bmVyZWcubwo+IC1rdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gdmNwdV9wbXUubwo+ICtr dm0tJChDT05GSUdfUklTQ1ZfUE1VKSArPSB2Y3B1X3BtdS5vCj4gIGt2bS15ICs9IHZjcHVfc2Jp Lm8KPiAga3ZtLXkgKz0gdmNwdV9zYmlfYmFzZS5vCj4gIGt2bS15ICs9IHZjcHVfc2JpX2hzbS5v Cj4gLWt2bS0kKENPTkZJR19SSVNDVl9QTVVfU0JJKSArPSB2Y3B1X3NiaV9wbXUubwo+ICtrdm0t JChDT05GSUdfUklTQ1ZfUE1VKSArPSB2Y3B1X3NiaV9wbXUubwo+ICBrdm0teSArPSB2Y3B1X3Ni aV9yZXBsYWNlLm8KPiAga3ZtLXkgKz0gdmNwdV9zYmlfc3RhLm8KPiAga3ZtLSQoQ09ORklHX1JJ U0NWX1NCSV9WMDEpICs9IHZjcHVfc2JpX3YwMS5vCj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv a3ZtL3ZjcHVfc2JpLmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jCj4gaW5kZXggNmU3MDRl ZDg2YTgzLi40ZWFmOWIwZjczNmIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9z YmkuYwo+ICsrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMKPiBAQCAtMjAsNyArMjAsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0 X3YwMSA9IHsKPiAgfTsKPiAgI2VuZGlmCj4gIAo+IC0jaWZuZGVmIENPTkZJR19SSVNDVl9QTVVf U0JJCj4gKyNpZm5kZWYgQ09ORklHX1JJU0NWX1BNVQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGt2 bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X3BtdSA9IHsKPiAgCS5leHRpZF9zdGFy dCA9IC0xVUwsCj4gIAkuZXh0aWRfZW5kID0gLTFVTCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w ZXJmL0tjb25maWcgYi9kcml2ZXJzL3BlcmYvS2NvbmZpZwo+IGluZGV4IDRlMjY4ZGUzNTFjNC4u YjNiZGZmMmE5OWE0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGVyZi9LY29uZmlnCj4gKysrIGIv ZHJpdmVycy9wZXJmL0tjb25maWcKPiBAQCAtNzUsNyArNzUsNyBAQCBjb25maWcgQVJNX1hTQ0FM RV9QTVUKPiAgCWRlcGVuZHMgb24gQVJNX1BNVSAmJiBDUFVfWFNDQUxFCj4gIAlkZWZfYm9vbCB5 Cj4gIAo+IC1jb25maWcgUklTQ1ZfUE1VCj4gK2NvbmZpZyBSSVNDVl9QTVVfQ09NTU9OCj4gIAlk ZXBlbmRzIG9uIFJJU0NWCj4gIAlib29sICJSSVNDLVYgUE1VIGZyYW1ld29yayIKPiAgCWRlZmF1 bHQgeQo+IEBAIC04Niw3ICs4Niw3IEBAIGNvbmZpZyBSSVNDVl9QTVUKPiAgCSAgY2FuIHJldXNl IGl0Lgo+ICAKPiAgY29uZmlnIFJJU0NWX1BNVV9MRUdBQ1kKPiAtCWRlcGVuZHMgb24gUklTQ1Zf UE1VCj4gKwlkZXBlbmRzIG9uIFJJU0NWX1BNVV9DT01NT04KPiAgCWJvb2wgIlJJU0MtViBsZWdh Y3kgUE1VIGltcGxlbWVudGF0aW9uIgo+ICAJZGVmYXVsdCB5Cj4gIAloZWxwCj4gQEAgLTk1LDE1 ICs5NSwxNSBAQCBjb25maWcgUklTQ1ZfUE1VX0xFR0FDWQo+ICAJICBvZiBjeWNsZS9pbnN0cnVj dGlvbiBjb3VudGVyIGFuZCBkb2Vzbid0IHN1cHBvcnQgY291bnRlciBvdmVyZmxvdywKPiAgCSAg b3IgcHJvZ3JhbW1hYmxlIGNvdW50ZXJzLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlLgo+ ICAKPiAtY29uZmlnIFJJU0NWX1BNVV9TQkkKPiAtCWRlcGVuZHMgb24gUklTQ1ZfUE1VICYmIFJJ U0NWX1NCSQo+IC0JYm9vbCAiUklTQy1WIFBNVSBiYXNlZCBvbiBTQkkgUE1VIGV4dGVuc2lvbiIK PiArY29uZmlnIFJJU0NWX1BNVQo+ICsJZGVwZW5kcyBvbiBSSVNDVl9QTVVfQ09NTU9OICYmIFJJ U0NWX1NCSQo+ICsJYm9vbCAiUklTQy1WIFBNVSBiYXNlZCBvbiBTQkkgUE1VIGV4dGVuc2lvbiBh bmQvb3IgQ291bnRlciBkZWxlZ2F0aW9uIGV4dGVuc2lvbiIKPiAgCWRlZmF1bHQgeQo+ICAJaGVs cAo+ICAJICBTYXkgeSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIENQVSBwZXJmb3JtYW5jZSBtb25p dG9yCj4gLQkgIHVzaW5nIFNCSSBQTVUgZXh0ZW5zaW9uIG9uIFJJU0MtViBiYXNlZCBzeXN0ZW1z LiBUaGlzIG9wdGlvbiBwcm92aWRlcwo+IC0JICBmdWxsIHBlcmYgZmVhdHVyZSBzdXBwb3J0IGku ZS4gY291bnRlciBvdmVyZmxvdywgcHJpdmlsZWdlIG1vZGUKPiAtCSAgZmlsdGVyaW5nLCBjb3Vu dGVyIGNvbmZpZ3VyYXRpb24uCj4gKwkgIHVzaW5nIFNCSSBQTVUgZXh0ZW5zaW9uIG9yIGNvdW50 ZXIgZGVsZWdhdGlvbiBJU0EgZXh0ZW5zaW9uIG9uIFJJU0MtVgo+ICsJICBiYXNlZCBzeXN0ZW1z LiBUaGlzIG9wdGlvbiBwcm92aWRlcyBmdWxsIHBlcmYgZmVhdHVyZSBzdXBwb3J0IGkuZS4KPiAr CSAgY291bnRlciBvdmVyZmxvdywgcHJpdmlsZWdlIG1vZGUgZmlsdGVyaW5nLCBjb3VudGVyIGNv bmZpZ3VyYXRpb24uCj4gIAo+ICBjb25maWcgU1RBUkZJVkVfU1RBUkxJTktfUE1VCj4gIAlkZXBl bmRzIG9uIEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGVyZi9NYWtlZmlsZSBiL2RyaXZlcnMvcGVyZi9NYWtlZmlsZQo+IGluZGV4IGRlNzFkMjU3 NDg1Ny4uMDgwNWQ3NDBjNzczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGVyZi9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvcGVyZi9NYWtlZmlsZQo+IEBAIC0xNiw5ICsxNiw5IEBAIG9iai0kKENP TkZJR19GU0xfSU1YOV9ERFJfUE1VKSArPSBmc2xfaW14OV9kZHJfcGVyZi5vCj4gIG9iai0kKENP TkZJR19ISVNJX1BNVSkgKz0gaGlzaWxpY29uLwo+ICBvYmotJChDT05GSUdfUUNPTV9MMl9QTVUp CSs9IHFjb21fbDJfcG11Lm8KPiAgb2JqLSQoQ09ORklHX1FDT01fTDNfUE1VKSArPSBxY29tX2wz X3BtdS5vCj4gLW9iai0kKENPTkZJR19SSVNDVl9QTVUpICs9IHJpc2N2X3BtdS5vCj4gK29iai0k KENPTkZJR19SSVNDVl9QTVVfQ09NTU9OKSArPSByaXNjdl9wbXVfY29tbW9uLm8KPiAgb2JqLSQo Q09ORklHX1JJU0NWX1BNVV9MRUdBQ1kpICs9IHJpc2N2X3BtdV9sZWdhY3kubwo+IC1vYmotJChD T05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gcmlzY3ZfcG11X3NiaS5vCj4gK29iai0kKENPTkZJR19S SVNDVl9QTVUpICs9IHJpc2N2X3BtdV9kZXYubwo+ICBvYmotJChDT05GSUdfU1RBUkZJVkVfU1RB UkxJTktfUE1VKSArPSBzdGFyZml2ZV9zdGFybGlua19wbXUubwo+ICBvYmotJChDT05GSUdfVEhV TkRFUlgyX1BNVSkgKz0gdGh1bmRlcngyX3BtdS5vCj4gIG9iai0kKENPTkZJR19YR0VORV9QTVUp ICs9IHhnZW5lX3BtdS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGVyZi9yaXNjdl9wbXUuYyBi L2RyaXZlcnMvcGVyZi9yaXNjdl9wbXVfY29tbW9uLmMKPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUK PiByZW5hbWUgZnJvbSBkcml2ZXJzL3BlcmYvcmlzY3ZfcG11LmMKPiByZW5hbWUgdG8gZHJpdmVy cy9wZXJmL3Jpc2N2X3BtdV9jb21tb24uYwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BlcmYvcmlz Y3ZfcG11X3NiaS5jIGIvZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9kZXYuYwo+IHNpbWlsYXJpdHkg aW5kZXggODclCj4gcmVuYW1lIGZyb20gZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9zYmkuYwo+IHJl bmFtZSB0byBkcml2ZXJzL3BlcmYvcmlzY3ZfcG11X2Rldi5jCj4gaW5kZXggMWFhMzAzZjc2Y2M3 Li42YjQzZDg0NGVhZWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9zYmku Ywo+ICsrKyBiL2RyaXZlcnMvcGVyZi9yaXNjdl9wbXVfZGV2LmMKPiBAQCAtOCw3ICs4LDcgQEAK PiAgICogc3BhcmM2NCBhbmQgeDg2IGNvZGUuCj4gICAqLwo+ICAKPiAtI2RlZmluZSBwcl9mbXQo Zm10KSAicmlzY3YtcG11LXNiaTogIiBmbXQKPiArI2RlZmluZSBwcl9mbXQoZm10KSAicmlzY3Yt cG11LWRldjogIiBmbXQKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L3BlcmYvcmlzY3ZfcG11Lmg+Cj4gQEAgLTg3LDYgKzg3LDggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnJpc2N2X3BtdV9hdHRyX2dyb3Vw c1tdID0gewo+ICBzdGF0aWMgaW50IHN5c2N0bF9wZXJmX3VzZXJfYWNjZXNzIF9fcmVhZF9tb3N0 bHkgPSBTWVNDVExfVVNFUl9BQ0NFU1M7Cj4gIAo+ICAvKgo+ICsgKiBUaGlzIHN0cnVjdHVyZSBp cyBTQkkgc3BlY2lmaWMgYnV0IGNvdW50ZXIgZGVsZWdhdGlvbiBhbHNvIHJlcXVpcmUgY291bnRl cgo+ICsgKiB3aWR0aCwgY3NyIG1hcHBpbmcuIFJldXNlIGl0IGZvciBub3cuCj4gICAqIFJJU0Mt ViBkb2Vzbid0IGhhdmUgaGV0ZXJvZ2VuZW91cyBoYXJ0cyB5ZXQuIFRoaXMgbmVlZCB0byBiZSBw YXJ0IG9mCj4gICAqIHBlcl9jcHUgaW4gY2FzZSBvZiBoYXJ0cyB3aXRoIGRpZmZlcmVudCBwbXUg Y291bnRlcnMKPiAgICovCj4gQEAgLTExOSw3ICsxMjEsNyBAQCBzdHJ1Y3Qgc2JpX3BtdV9ldmVu dF9kYXRhIHsKPiAgCX07Cj4gIH07Cj4gIAo+IC1zdGF0aWMgc3RydWN0IHNiaV9wbXVfZXZlbnRf ZGF0YSBwbXVfaHdfZXZlbnRfbWFwW10gPSB7Cj4gK3N0YXRpYyBzdHJ1Y3Qgc2JpX3BtdV9ldmVu dF9kYXRhIHBtdV9od19ldmVudF9zYmlfbWFwW10gPSB7Cj4gIAlbUEVSRl9DT1VOVF9IV19DUFVf Q1lDTEVTXQkJPSB7Lmh3X2dlbl9ldmVudCA9IHsKPiAgCQkJCQkJCVNCSV9QTVVfSFdfQ1BVX0NZ Q0xFUywKPiAgCQkJCQkJCVNCSV9QTVVfRVZFTlRfVFlQRV9IVywgMH19LAo+IEBAIC0xNTMsNyAr MTU1LDcgQEAgc3RhdGljIHN0cnVjdCBzYmlfcG11X2V2ZW50X2RhdGEgcG11X2h3X2V2ZW50X21h cFtdID0gewo+ICB9Owo+ICAKPiAgI2RlZmluZSBDKHgpIFBFUkZfQ09VTlRfSFdfQ0FDSEVfIyN4 Cj4gLXN0YXRpYyBzdHJ1Y3Qgc2JpX3BtdV9ldmVudF9kYXRhIHBtdV9jYWNoZV9ldmVudF9tYXBb UEVSRl9DT1VOVF9IV19DQUNIRV9NQVhdCj4gK3N0YXRpYyBzdHJ1Y3Qgc2JpX3BtdV9ldmVudF9k YXRhIHBtdV9jYWNoZV9ldmVudF9zYmlfbWFwW1BFUkZfQ09VTlRfSFdfQ0FDSEVfTUFYXQo+ICBb UEVSRl9DT1VOVF9IV19DQUNIRV9PUF9NQVhdCj4gIFtQRVJGX0NPVU5UX0hXX0NBQ0hFX1JFU1VM VF9NQVhdID0gewo+ICAJW0MoTDFEKV0gPSB7Cj4gQEAgLTI5OCw3ICszMDAsNyBAQCBzdGF0aWMg c3RydWN0IHNiaV9wbXVfZXZlbnRfZGF0YSBwbXVfY2FjaGVfZXZlbnRfbWFwW1BFUkZfQ09VTlRf SFdfQ0FDSEVfTUFYXQo+ICAJfSwKPiAgfTsKPiAgCj4gLXN0YXRpYyB2b2lkIHBtdV9zYmlfY2hl Y2tfZXZlbnQoc3RydWN0IHNiaV9wbXVfZXZlbnRfZGF0YSAqZWRhdGEpCj4gK3N0YXRpYyB2b2lk IHJ2cG11X3NiaV9jaGVja19ldmVudChzdHJ1Y3Qgc2JpX3BtdV9ldmVudF9kYXRhICplZGF0YSkK PiAgewo+ICAJc3RydWN0IHNiaXJldCByZXQ7Cj4gIAo+IEBAIC0zMTMsMjUgKzMxNSwyNSBAQCBz dGF0aWMgdm9pZCBwbXVfc2JpX2NoZWNrX2V2ZW50KHN0cnVjdCBzYmlfcG11X2V2ZW50X2RhdGEg KmVkYXRhKQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBwbXVfc2JpX2NoZWNrX3N0ZF9l dmVudHMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICtzdGF0aWMgdm9pZCBydnBtdV9zYmlf Y2hlY2tfc3RkX2V2ZW50cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAtCWZvciAo aW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShwbXVfaHdfZXZlbnRfbWFwKTsgaSsrKQo+IC0JCXBt dV9zYmlfY2hlY2tfZXZlbnQoJnBtdV9od19ldmVudF9tYXBbaV0pOwo+ICsJZm9yIChpbnQgaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHBtdV9od19ldmVudF9zYmlfbWFwKTsgaSsrKQo+ICsJCXJ2cG11 X3NiaV9jaGVja19ldmVudCgmcG11X2h3X2V2ZW50X3NiaV9tYXBbaV0pOwo+ICAKPiAtCWZvciAo aW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShwbXVfY2FjaGVfZXZlbnRfbWFwKTsgaSsrKQo+IC0J CWZvciAoaW50IGogPSAwOyBqIDwgQVJSQVlfU0laRShwbXVfY2FjaGVfZXZlbnRfbWFwW2ldKTsg aisrKQo+IC0JCQlmb3IgKGludCBrID0gMDsgayA8IEFSUkFZX1NJWkUocG11X2NhY2hlX2V2ZW50 X21hcFtpXVtqXSk7IGsrKykKPiAtCQkJCXBtdV9zYmlfY2hlY2tfZXZlbnQoJnBtdV9jYWNoZV9l dmVudF9tYXBbaV1bal1ba10pOwo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBt dV9jYWNoZV9ldmVudF9zYmlfbWFwKTsgaSsrKQo+ICsJCWZvciAoaW50IGogPSAwOyBqIDwgQVJS QVlfU0laRShwbXVfY2FjaGVfZXZlbnRfc2JpX21hcFtpXSk7IGorKykKPiArCQkJZm9yIChpbnQg ayA9IDA7IGsgPCBBUlJBWV9TSVpFKHBtdV9jYWNoZV9ldmVudF9zYmlfbWFwW2ldW2pdKTsgaysr KQo+ICsJCQkJcnZwbXVfc2JpX2NoZWNrX2V2ZW50KCZwbXVfY2FjaGVfZXZlbnRfc2JpX21hcFtp XVtqXVtrXSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBERUNMQVJFX1dPUksoY2hlY2tfc3RkX2V2ZW50 c193b3JrLCBwbXVfc2JpX2NoZWNrX3N0ZF9ldmVudHMpOwo+ICtzdGF0aWMgREVDTEFSRV9XT1JL KGNoZWNrX3N0ZF9ldmVudHNfd29yaywgcnZwbXVfc2JpX2NoZWNrX3N0ZF9ldmVudHMpOwo+ICAK PiAtc3RhdGljIGludCBwbXVfc2JpX2N0cl9nZXRfd2lkdGgoaW50IGlkeCkKPiArc3RhdGljIGlu dCBydnBtdV9jdHJfZ2V0X3dpZHRoKGludCBpZHgpCj4gIHsKPiAgCXJldHVybiBwbXVfY3RyX2xp c3RbaWR4XS53aWR0aDsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wgcG11X3NiaV9jdHJfaXNfZnco aW50IGNpZHgpCj4gK3N0YXRpYyBib29sIHJ2cG11X2N0cl9pc19mdyhpbnQgY2lkeCkKPiAgewo+ ICAJdW5pb24gc2JpX3BtdV9jdHJfaW5mbyAqaW5mbzsKPiAgCj4gQEAgLTM3MywxMiArMzc1LDEy IEBAIGludCByaXNjdl9wbXVfZ2V0X2hwbV9pbmZvKHUzMiAqaHdfY3RyX3dpZHRoLCB1MzIgKm51 bV9od19jdHIpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwocmlzY3ZfcG11X2dldF9ocG1faW5m byk7Cj4gIAo+IC1zdGF0aWMgdWludDhfdCBwbXVfc2JpX2Nzcl9pbmRleChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCj4gK3N0YXRpYyB1aW50OF90IHJ2cG11X2Nzcl9pbmRleChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCj4gIHsKPiAgCXJldHVybiBwbXVfY3RyX2xpc3RbZXZlbnQtPmh3Lmlk eF0uY3NyIC0gQ1NSX0NZQ0xFOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBwbXVf c2JpX2dldF9maWx0ZXJfZmxhZ3Moc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+ICtzdGF0aWMg dW5zaWduZWQgbG9uZyBydnBtdV9zYmlfZ2V0X2ZpbHRlcl9mbGFncyhzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgY2ZsYWdzID0gMDsKPiAgCWJvb2wgZ3Vl c3RfZXZlbnRzID0gZmFsc2U7Cj4gQEAgLTM5OSw3ICs0MDEsNyBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBwbXVfc2JpX2dldF9maWx0ZXJfZmxhZ3Moc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+ ICAJcmV0dXJuIGNmbGFnczsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBwbXVfc2JpX2N0cl9nZXRf aWR4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPiArc3RhdGljIGludCBydnBtdV9zYmlfY3Ry X2dldF9pZHgoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+ICB7Cj4gIAlzdHJ1Y3QgaHdfcGVy Zl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsKPiAgCXN0cnVjdCByaXNjdl9wbXUgKnJ2cG11ID0g dG9fcmlzY3ZfcG11KGV2ZW50LT5wbXUpOwo+IEBAIC00MDksNyArNDExLDcgQEAgc3RhdGljIGlu dCBwbXVfc2JpX2N0cl9nZXRfaWR4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPiAgCXVpbnQ2 NF90IGNiYXNlID0gMCwgY21hc2sgPSBydnBtdS0+Y21hc2s7Cj4gIAl1bnNpZ25lZCBsb25nIGNm bGFncyA9IDA7Cj4gIAo+IC0JY2ZsYWdzID0gcG11X3NiaV9nZXRfZmlsdGVyX2ZsYWdzKGV2ZW50 KTsKPiArCWNmbGFncyA9IHJ2cG11X3NiaV9nZXRfZmlsdGVyX2ZsYWdzKGV2ZW50KTsKPiAgCj4g IAkvKgo+ICAJICogSW4gbGVnYWN5IG1vZGUsIHdlIGhhdmUgdG8gZm9yY2UgdGhlIGZpeGVkIGNv dW50ZXJzIGZvciB0aG9zZSBldmVudHMKPiBAQCAtNDQ2LDcgKzQ0OCw3IEBAIHN0YXRpYyBpbnQg cG11X3NiaV9jdHJfZ2V0X2lkeChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4gIAkJcmV0dXJu IC1FTk9FTlQ7Cj4gIAo+ICAJLyogQWRkaXRpb25hbCBzYW5pdHkgY2hlY2sgZm9yIHRoZSBjb3Vu dGVyIGlkICovCj4gLQlpZiAocG11X3NiaV9jdHJfaXNfZncoaWR4KSkgewo+ICsJaWYgKHJ2cG11 X2N0cl9pc19mdyhpZHgpKSB7Cj4gIAkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KGlkeCwgY3B1Yy0+ dXNlZF9md19jdHJzKSkKPiAgCQkJcmV0dXJuIGlkeDsKPiAgCX0gZWxzZSB7Cj4gQEAgLTQ1Nyw3 ICs0NTksNyBAQCBzdGF0aWMgaW50IHBtdV9zYmlfY3RyX2dldF9pZHgoc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50KQo+ICAJcmV0dXJuIC1FTk9FTlQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBt dV9zYmlfY3RyX2NsZWFyX2lkeChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4gK3N0YXRpYyB2 b2lkIHJ2cG11X2N0cl9jbGVhcl9pZHgoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQo+ICB7Cj4g IAo+ICAJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7Cj4gQEAgLTQ2NSwx MyArNDY3LDEzIEBAIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3RyX2NsZWFyX2lkeChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCj4gIAlzdHJ1Y3QgY3B1X2h3X2V2ZW50cyAqY3B1YyA9IHRoaXNfY3B1 X3B0cihydnBtdS0+aHdfZXZlbnRzKTsKPiAgCWludCBpZHggPSBod2MtPmlkeDsKPiAgCj4gLQlp ZiAocG11X3NiaV9jdHJfaXNfZncoaWR4KSkKPiArCWlmIChydnBtdV9jdHJfaXNfZncoaWR4KSkK PiAgCQljbGVhcl9iaXQoaWR4LCBjcHVjLT51c2VkX2Z3X2N0cnMpOwo+ICAJZWxzZQo+ICAJCWNs ZWFyX2JpdChpZHgsIGNwdWMtPnVzZWRfaHdfY3Rycyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQg cG11X2V2ZW50X2ZpbmRfY2FjaGUodTY0IGNvbmZpZykKPiArc3RhdGljIGludCBzYmlfcG11X2V2 ZW50X2ZpbmRfY2FjaGUodTY0IGNvbmZpZykKPiAgewo+ICAJdW5zaWduZWQgaW50IGNhY2hlX3R5 cGUsIGNhY2hlX29wLCBjYWNoZV9yZXN1bHQsIHJldDsKPiAgCj4gQEAgLTQ4Nyw3ICs0ODksNyBA QCBzdGF0aWMgaW50IHBtdV9ldmVudF9maW5kX2NhY2hlKHU2NCBjb25maWcpCj4gIAlpZiAoY2Fj aGVfcmVzdWx0ID49IFBFUkZfQ09VTlRfSFdfQ0FDSEVfUkVTVUxUX01BWCkKPiAgCQlyZXR1cm4g LUVJTlZBTDsKPiAgCj4gLQlyZXQgPSBwbXVfY2FjaGVfZXZlbnRfbWFwW2NhY2hlX3R5cGVdW2Nh Y2hlX29wXVtjYWNoZV9yZXN1bHRdLmV2ZW50X2lkeDsKPiArCXJldCA9IHBtdV9jYWNoZV9ldmVu dF9zYmlfbWFwW2NhY2hlX3R5cGVdW2NhY2hlX29wXVtjYWNoZV9yZXN1bHRdLmV2ZW50X2lkeDsK PiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTUwMyw3ICs1MDUsNyBAQCBzdGF0aWMgYm9v bCBwbXVfc2JpX2lzX2Z3X2V2ZW50KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgcG11X3NiaV9ldmVudF9tYXAoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50LCB1NjQgKmVjb25maWcpCj4gK3N0YXRpYyBpbnQgcnZwbXVfc2Jp X2V2ZW50X21hcChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHU2NCAqZWNvbmZpZykKPiAgewo+ ICAJdTMyIHR5cGUgPSBldmVudC0+YXR0ci50eXBlOwo+ICAJdTY0IGNvbmZpZyA9IGV2ZW50LT5h dHRyLmNvbmZpZzsKPiBAQCAtNTIwLDEwICs1MjIsMTAgQEAgc3RhdGljIGludCBwbXVfc2JpX2V2 ZW50X21hcChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHU2NCAqZWNvbmZpZykKPiAgCWNhc2Ug UEVSRl9UWVBFX0hBUkRXQVJFOgo+ICAJCWlmIChjb25maWcgPj0gUEVSRl9DT1VOVF9IV19NQVgp Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IC0JCXJldCA9IHBtdV9od19ldmVudF9tYXBbZXZlbnQt PmF0dHIuY29uZmlnXS5ldmVudF9pZHg7Cj4gKwkJcmV0ID0gcG11X2h3X2V2ZW50X3NiaV9tYXBb ZXZlbnQtPmF0dHIuY29uZmlnXS5ldmVudF9pZHg7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBFUkZf VFlQRV9IV19DQUNIRToKPiAtCQlyZXQgPSBwbXVfZXZlbnRfZmluZF9jYWNoZShjb25maWcpOwo+ ICsJCXJldCA9IHNiaV9wbXVfZXZlbnRfZmluZF9jYWNoZShjb25maWcpOwo+ICAJCWJyZWFrOwo+ ICAJY2FzZSBQRVJGX1RZUEVfUkFXOgo+ICAJCS8qCj4gQEAgLTY0Niw3ICs2NDgsNyBAQCBzdGF0 aWMgaW50IHBtdV9zYmlfc25hcHNob3Rfc2V0dXAoc3RydWN0IHJpc2N2X3BtdSAqcG11LCBpbnQg Y3B1KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1NjQgcG11X3NiaV9jdHJfcmVh ZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCj4gK3N0YXRpYyB1NjQgcnZwbXVfc2JpX2N0cl9y ZWFkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKPiAgewo+ICAJc3RydWN0IGh3X3BlcmZfZXZl bnQgKmh3YyA9ICZldmVudC0+aHc7Cj4gIAlpbnQgaWR4ID0gaHdjLT5pZHg7Cj4gQEAgLTY4OCwy NSArNjkwLDI1IEBAIHN0YXRpYyB1NjQgcG11X3NiaV9jdHJfcmVhZChzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCj4gIAlyZXR1cm4gdmFsOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBwbXVfc2Jp X3NldF9zY291bnRlcmVuKHZvaWQgKmFyZykKPiArc3RhdGljIHZvaWQgcnZwbXVfc2V0X3Njb3Vu dGVyZW4odm9pZCAqYXJnKQo+ICB7Cj4gIAlzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQgPSAoc3Ry dWN0IHBlcmZfZXZlbnQgKilhcmc7Cj4gIAo+ICAJaWYgKGV2ZW50LT5ody5pZHggIT0gLTEpCj4g IAkJY3NyX3dyaXRlKENTUl9TQ09VTlRFUkVOLAo+IC0JCQkgIGNzcl9yZWFkKENTUl9TQ09VTlRF UkVOKSB8IEJJVChwbXVfc2JpX2Nzcl9pbmRleChldmVudCkpKTsKPiArCQkJICBjc3JfcmVhZChD U1JfU0NPVU5URVJFTikgfCBCSVQocnZwbXVfY3NyX2luZGV4KGV2ZW50KSkpOwo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBwbXVfc2JpX3Jlc2V0X3Njb3VudGVyZW4odm9pZCAqYXJnKQo+ICtzdGF0 aWMgdm9pZCBydnBtdV9yZXNldF9zY291bnRlcmVuKHZvaWQgKmFyZykKPiAgewo+ICAJc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50ID0gKHN0cnVjdCBwZXJmX2V2ZW50ICopYXJnOwo+ICAKPiAgCWlm IChldmVudC0+aHcuaWR4ICE9IC0xKQo+ICAJCWNzcl93cml0ZShDU1JfU0NPVU5URVJFTiwKPiAt CQkJICBjc3JfcmVhZChDU1JfU0NPVU5URVJFTikgJiB+QklUKHBtdV9zYmlfY3NyX2luZGV4KGV2 ZW50KSkpOwo+ICsJCQkgIGNzcl9yZWFkKENTUl9TQ09VTlRFUkVOKSAmIH5CSVQocnZwbXVfY3Ny X2luZGV4KGV2ZW50KSkpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBwbXVfc2JpX2N0cl9zdGFy dChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHU2NCBpdmFsKQo+ICtzdGF0aWMgdm9pZCBydnBt dV9zYmlfY3RyX3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdTY0IGl2YWwpCj4gIHsK PiAgCXN0cnVjdCBzYmlyZXQgcmV0Owo+ICAJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZl dmVudC0+aHc7Cj4gQEAgLTcyNiwxMCArNzI4LDEwIEBAIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3Ry X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdTY0IGl2YWwpCj4gIAo+ICAJaWYgKCho d2MtPmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUNDRVNTKSAmJgo+ICAJICAgIChod2Mt PmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfUkVBRF9DTlQpKQo+IC0JCXBtdV9zYmlfc2V0 X3Njb3VudGVyZW4oKHZvaWQgKilldmVudCk7Cj4gKwkJcnZwbXVfc2V0X3Njb3VudGVyZW4oKHZv aWQgKilldmVudCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBtdV9zYmlfY3RyX3N0b3Aoc3Ry dWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBsb25nIGZsYWcpCj4gK3N0YXRpYyB2b2lk IHJ2cG11X3NiaV9jdHJfc3RvcChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHVuc2lnbmVkIGxv bmcgZmxhZykKPiAgewo+ICAJc3RydWN0IHNiaXJldCByZXQ7Cj4gIAlzdHJ1Y3QgaHdfcGVyZl9l dmVudCAqaHdjID0gJmV2ZW50LT5odzsKPiBAQCAtNzM5LDcgKzc0MSw3IEBAIHN0YXRpYyB2b2lk IHBtdV9zYmlfY3RyX3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBsb25n IGZsYWcpCj4gIAo+ICAJaWYgKChod2MtPmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfQUND RVNTKSAmJgo+ICAJICAgIChod2MtPmZsYWdzICYgUEVSRl9FVkVOVF9GTEFHX1VTRVJfUkVBRF9D TlQpKQo+IC0JCXBtdV9zYmlfcmVzZXRfc2NvdW50ZXJlbigodm9pZCAqKWV2ZW50KTsKPiArCQly dnBtdV9yZXNldF9zY291bnRlcmVuKCh2b2lkICopZXZlbnQpOwo+ICAKPiAgCWlmIChzYmlfcG11 X3NuYXBzaG90X2F2YWlsYWJsZSgpKQo+ICAJCWZsYWcgfD0gU0JJX1BNVV9TVE9QX0ZMQUdfVEFL RV9TTkFQU0hPVDsKPiBAQCAtNzY1LDcgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIHBtdV9zYmlfY3Ry X3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBsb25nIGZsYWcpCj4gIAl9 Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgcG11X3NiaV9maW5kX251bV9jdHJzKHZvaWQpCj4gK3N0 YXRpYyBpbnQgcnZwbXVfc2JpX2ZpbmRfbnVtX2N0cnModm9pZCkKPiAgewo+ICAJc3RydWN0IHNi aXJldCByZXQ7Cj4gIAo+IEBAIC03NzYsNyArNzc4LDcgQEAgc3RhdGljIGludCBwbXVfc2JpX2Zp bmRfbnVtX2N0cnModm9pZCkKPiAgCQlyZXR1cm4gc2JpX2Vycl9tYXBfbGludXhfZXJybm8ocmV0 LmVycm9yKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBwbXVfc2JpX2dldF9jdHJpbmZvKGludCBu Y3RyLCB1bnNpZ25lZCBsb25nICptYXNrKQo+ICtzdGF0aWMgaW50IHJ2cG11X3NiaV9nZXRfY3Ry aW5mbyhpbnQgbmN0ciwgdW5zaWduZWQgbG9uZyAqbWFzaykKPiAgewo+ICAJc3RydWN0IHNiaXJl dCByZXQ7Cj4gIAlpbnQgaSwgbnVtX2h3X2N0ciA9IDAsIG51bV9md19jdHIgPSAwOwo+IEBAIC04 MDcsNyArODA5LDcgQEAgc3RhdGljIGludCBwbXVfc2JpX2dldF9jdHJpbmZvKGludCBuY3RyLCB1 bnNpZ25lZCBsb25nICptYXNrKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxp bmUgdm9pZCBwbXVfc2JpX3N0b3BfYWxsKHN0cnVjdCByaXNjdl9wbXUgKnBtdSkKPiArc3RhdGlj IGlubGluZSB2b2lkIHJ2cG11X3NiaV9zdG9wX2FsbChzdHJ1Y3QgcmlzY3ZfcG11ICpwbXUpCj4g IHsKPiAgCS8qCj4gIAkgKiBObyBuZWVkIHRvIGNoZWNrIHRoZSBlcnJvciBiZWNhdXNlIHdlIGFy ZSBkaXNhYmxpbmcgYWxsIHRoZSBjb3VudGVycwo+IEBAIC04MTcsNyArODE5LDcgQEAgc3RhdGlj IGlubGluZSB2b2lkIHBtdV9zYmlfc3RvcF9hbGwoc3RydWN0IHJpc2N2X3BtdSAqcG11KQo+ICAJ CSAgMCwgcG11LT5jbWFzaywgU0JJX1BNVV9TVE9QX0ZMQUdfUkVTRVQsIDAsIDAsIDApOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHZvaWQgcG11X3NiaV9zdG9wX2h3X2N0cnMoc3RydWN0IHJp c2N2X3BtdSAqcG11KQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnZwbXVfc2JpX3N0b3BfaHdfY3Ry cyhzdHJ1Y3QgcmlzY3ZfcG11ICpwbXUpCj4gIHsKPiAgCXN0cnVjdCBjcHVfaHdfZXZlbnRzICpj cHVfaHdfZXZ0ID0gdGhpc19jcHVfcHRyKHBtdS0+aHdfZXZlbnRzKTsKPiAgCXN0cnVjdCByaXNj dl9wbXVfc25hcHNob3RfZGF0YSAqc2RhdGEgPSBjcHVfaHdfZXZ0LT5zbmFwc2hvdF9hZGRyOwo+ IEBAIC04NjEsOCArODYzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHBtdV9zYmlfc3RvcF9od19j dHJzKHN0cnVjdCByaXNjdl9wbXUgKnBtdSkKPiAgICogd2hpbGUgdGhlIG92ZXJmbG93ZWQgY291 bnRlcnMgbmVlZCB0byBiZSBzdGFydGVkIHdpdGggdXBkYXRlZCBpbml0aWFsaXphdGlvbgo+ICAg KiB2YWx1ZS4KPiAgICovCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBwbXVfc2JpX3N0YXJ0X292Zl9j dHJzX3NiaShzdHJ1Y3QgY3B1X2h3X2V2ZW50cyAqY3B1X2h3X2V2dCwKPiAtCQkJCQkgICAgICB1 NjQgY3RyX292Zl9tYXNrKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnZwbXVfc2JpX3N0YXJ0X292 Zl9jdHJzX3NiaShzdHJ1Y3QgY3B1X2h3X2V2ZW50cyAqY3B1X2h3X2V2dCwKPiArCQkJCQkJdTY0 IGN0cl9vdmZfbWFzaykKPiAgewo+ICAJaW50IGlkeCA9IDAsIGk7Cj4gIAlzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQ7Cj4gQEAgLTkwMCw4ICs5MDIsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG11 X3NiaV9zdGFydF9vdmZfY3Ryc19zYmkoc3RydWN0IGNwdV9od19ldmVudHMgKmNwdV9od19ldnQs Cj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBwbXVfc2JpX3N0YXJ0X292Zl9j dHJzX3NuYXBzaG90KHN0cnVjdCBjcHVfaHdfZXZlbnRzICpjcHVfaHdfZXZ0LAo+IC0JCQkJCQkg ICB1NjQgY3RyX292Zl9tYXNrKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnZwbXVfc2JpX3N0YXJ0 X292Zl9jdHJzX3NuYXBzaG90KHN0cnVjdCBjcHVfaHdfZXZlbnRzICpjcHVfaHdfZXZ0LAo+ICsJ CQkJCQkgICAgIHU2NCBjdHJfb3ZmX21hc2spCj4gIHsKPiAgCWludCBpLCBpZHggPSAwOwo+ICAJ c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50Owo+IEBAIC05MzUsMTggKzkzNywxOCBAQCBzdGF0aWMg aW5saW5lIHZvaWQgcG11X3NiaV9zdGFydF9vdmZfY3Ryc19zbmFwc2hvdChzdHJ1Y3QgY3B1X2h3 X2V2ZW50cyAqY3B1X2h3Xwo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBwbXVfc2JpX3N0 YXJ0X292ZXJmbG93X21hc2soc3RydWN0IHJpc2N2X3BtdSAqcG11LAo+IC0JCQkJCXU2NCBjdHJf b3ZmX21hc2spCj4gK3N0YXRpYyB2b2lkIHJ2cG11X3NiaV9zdGFydF9vdmVyZmxvd19tYXNrKHN0 cnVjdCByaXNjdl9wbXUgKnBtdSwKPiArCQkJCQkgIHU2NCBjdHJfb3ZmX21hc2spCj4gIHsKPiAg CXN0cnVjdCBjcHVfaHdfZXZlbnRzICpjcHVfaHdfZXZ0ID0gdGhpc19jcHVfcHRyKHBtdS0+aHdf ZXZlbnRzKTsKPiAgCj4gIAlpZiAoc2JpX3BtdV9zbmFwc2hvdF9hdmFpbGFibGUoKSkKPiAtCQlw bXVfc2JpX3N0YXJ0X292Zl9jdHJzX3NuYXBzaG90KGNwdV9od19ldnQsIGN0cl9vdmZfbWFzayk7 Cj4gKwkJcnZwbXVfc2JpX3N0YXJ0X292Zl9jdHJzX3NuYXBzaG90KGNwdV9od19ldnQsIGN0cl9v dmZfbWFzayk7Cj4gIAllbHNlCj4gLQkJcG11X3NiaV9zdGFydF9vdmZfY3Ryc19zYmkoY3B1X2h3 X2V2dCwgY3RyX292Zl9tYXNrKTsKPiArCQlydnBtdV9zYmlfc3RhcnRfb3ZmX2N0cnNfc2JpKGNw dV9od19ldnQsIGN0cl9vdmZfbWFzayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBw bXVfc2JpX292Zl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldikKPiArc3RhdGljIGlycXJldHVy bl90IHJ2cG11X292Zl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldikKPiAgewo+ICAJc3RydWN0 IHBlcmZfc2FtcGxlX2RhdGEgZGF0YTsKPiAgCXN0cnVjdCBwdF9yZWdzICpyZWdzOwo+IEBAIC05 NzgsNyArOTgwLDcgQEAgc3RhdGljIGlycXJldHVybl90IHBtdV9zYmlfb3ZmX2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqZGV2KQo+ICAJfQo+ICAKPiAgCXBtdSA9IHRvX3Jpc2N2X3BtdShldmVudC0+ cG11KTsKPiAtCXBtdV9zYmlfc3RvcF9od19jdHJzKHBtdSk7Cj4gKwlydnBtdV9zYmlfc3RvcF9o d19jdHJzKHBtdSk7Cj4gIAo+ICAJLyogT3ZlcmZsb3cgc3RhdHVzIHJlZ2lzdGVyIHNob3VsZCBv bmx5IGJlIHJlYWQgYWZ0ZXIgY291bnRlciBhcmUgc3RvcHBlZCAqLwo+ICAJaWYgKHNiaV9wbXVf c25hcHNob3RfYXZhaWxhYmxlKCkpCj4gQEAgLTEwNDcsMTMgKzEwNDksNTUgQEAgc3RhdGljIGly cXJldHVybl90IHBtdV9zYmlfb3ZmX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2KQo+ICAJCWh3 X2V2dC0+c3RhdGUgPSAwOwo+ICAJfQo+ICAKPiAtCXBtdV9zYmlfc3RhcnRfb3ZlcmZsb3dfbWFz ayhwbXUsIG92ZXJmbG93ZWRfY3Rycyk7Cj4gKwlydnBtdV9zYmlfc3RhcnRfb3ZlcmZsb3dfbWFz ayhwbXUsIG92ZXJmbG93ZWRfY3Rycyk7Cj4gIAlwZXJmX3NhbXBsZV9ldmVudF90b29rKHNjaGVk X2Nsb2NrKCkgLSBzdGFydF9jbG9jayk7Cj4gIAo+ICAJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW50IHBtdV9zYmlfc3RhcnRpbmdfY3B1KHVuc2lnbmVkIGludCBjcHUs IHN0cnVjdCBobGlzdF9ub2RlICpub2RlKQo+ICtzdGF0aWMgdm9pZCBydnBtdV9jdHJfc3RhcnQo c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1NjQgaXZhbCkKPiArewo+ICsJcnZwbXVfc2JpX2N0 cl9zdGFydChldmVudCwgaXZhbCk7Cj4gKwkvKiBUT0RPOiBDb3VudGVyIGRlbGVnYXRpb24gaW1w bGVtZW50YXRpb24gKi8KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcnZwbXVfY3RyX3N0b3Aoc3Ry dWN0IHBlcmZfZXZlbnQgKmV2ZW50LCB1bnNpZ25lZCBsb25nIGZsYWcpCj4gK3sKPiArCXJ2cG11 X3NiaV9jdHJfc3RvcChldmVudCwgZmxhZyk7Cj4gKwkvKiBUT0RPOiBDb3VudGVyIGRlbGVnYXRp b24gaW1wbGVtZW50YXRpb24gKi8KPiArfQo+ICsKPiArc3RhdGljIGludCBydnBtdV9maW5kX251 bV9jdHJzKHZvaWQpCj4gK3sKPiArCXJldHVybiBydnBtdV9zYmlfZmluZF9udW1fY3RycygpOwo+ ICsJLyogVE9ETzogQ291bnRlciBkZWxlZ2F0aW9uIGltcGxlbWVudGF0aW9uICovCj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgcnZwbXVfZ2V0X2N0cmluZm8oaW50IG5jdHIsIHVuc2lnbmVkIGxvbmcg Km1hc2spCj4gK3sKPiArCXJldHVybiBydnBtdV9zYmlfZ2V0X2N0cmluZm8obmN0ciwgbWFzayk7 Cj4gKwkvKiBUT0RPOiBDb3VudGVyIGRlbGVnYXRpb24gaW1wbGVtZW50YXRpb24gKi8KPiArfQo+ ICsKPiArc3RhdGljIGludCBydnBtdV9ldmVudF9tYXAoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50 LCB1NjQgKmVjb25maWcpCj4gK3sKPiArCXJldHVybiBydnBtdV9zYmlfZXZlbnRfbWFwKGV2ZW50 LCBlY29uZmlnKTsKPiArCS8qIFRPRE86IENvdW50ZXIgZGVsZWdhdGlvbiBpbXBsZW1lbnRhdGlv biAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJ2cG11X2N0cl9nZXRfaWR4KHN0cnVjdCBwZXJm X2V2ZW50ICpldmVudCkKPiArewo+ICsJcmV0dXJuIHJ2cG11X3NiaV9jdHJfZ2V0X2lkeChldmVu dCk7Cj4gKwkvKiBUT0RPOiBDb3VudGVyIGRlbGVnYXRpb24gaW1wbGVtZW50YXRpb24gKi8KPiAr fQo+ICsKPiArc3RhdGljIHU2NCBydnBtdV9jdHJfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZl bnQpCj4gK3sKPiArCXJldHVybiBydnBtdV9zYmlfY3RyX3JlYWQoZXZlbnQpOwo+ICsJLyogVE9E TzogQ291bnRlciBkZWxlZ2F0aW9uIGltcGxlbWVudGF0aW9uICovCj4gK30KPiArCj4gK3N0YXRp YyBpbnQgcnZwbXVfc3RhcnRpbmdfY3B1KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9u b2RlICpub2RlKQo+ICB7Cj4gIAlzdHJ1Y3QgcmlzY3ZfcG11ICpwbXUgPSBobGlzdF9lbnRyeV9z YWZlKG5vZGUsIHN0cnVjdCByaXNjdl9wbXUsIG5vZGUpOwo+ICAJc3RydWN0IGNwdV9od19ldmVu dHMgKmNwdV9od19ldnQgPSB0aGlzX2NwdV9wdHIocG11LT5od19ldmVudHMpOwo+IEBAIC0xMDY4 LDcgKzExMTIsNyBAQCBzdGF0aWMgaW50IHBtdV9zYmlfc3RhcnRpbmdfY3B1KHVuc2lnbmVkIGlu dCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKQo+ICAJCWNzcl93cml0ZShDU1JfU0NPVU5U RVJFTiwgMHgyKTsKPiAgCj4gIAkvKiBTdG9wIGFsbCB0aGUgY291bnRlcnMgc28gdGhhdCB0aGV5 IGNhbiBiZSBlbmFibGVkIGZyb20gcGVyZiAqLwo+IC0JcG11X3NiaV9zdG9wX2FsbChwbXUpOwo+ ICsJcnZwbXVfc2JpX3N0b3BfYWxsKHBtdSk7Cj4gIAo+ICAJaWYgKHJpc2N2X3BtdV91c2VfaXJx KSB7Cj4gIAkJY3B1X2h3X2V2dC0+aXJxID0gcmlzY3ZfcG11X2lycTsKPiBAQCAtMTA4Miw3ICsx MTI2LDcgQEAgc3RhdGljIGludCBwbXVfc2JpX3N0YXJ0aW5nX2NwdSh1bnNpZ25lZCBpbnQgY3B1 LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0 aWMgaW50IHBtdV9zYmlfZHlpbmdfY3B1KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9u b2RlICpub2RlKQo+ICtzdGF0aWMgaW50IHJ2cG11X2R5aW5nX2NwdSh1bnNpZ25lZCBpbnQgY3B1 LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKPiAgewo+ICAJaWYgKHJpc2N2X3BtdV91c2VfaXJx KSB7Cj4gIAkJZGlzYWJsZV9wZXJjcHVfaXJxKHJpc2N2X3BtdV9pcnEpOwo+IEBAIC0xMDk3LDcg KzExNDEsNyBAQCBzdGF0aWMgaW50IHBtdV9zYmlfZHlpbmdfY3B1KHVuc2lnbmVkIGludCBjcHUs IHN0cnVjdCBobGlzdF9ub2RlICpub2RlKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRp YyBpbnQgcG11X3NiaV9zZXR1cF9pcnFzKHN0cnVjdCByaXNjdl9wbXUgKnBtdSwgc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiArc3RhdGljIGludCBydnBtdV9zZXR1cF9pcnFzKHN0cnVj dCByaXNjdl9wbXUgKnBtdSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJ aW50IHJldDsKPiAgCXN0cnVjdCBjcHVfaHdfZXZlbnRzIF9fcGVyY3B1ICpod19ldmVudHMgPSBw bXUtPmh3X2V2ZW50czsKPiBAQCAtMTEzNyw3ICsxMTgxLDcgQEAgc3RhdGljIGludCBwbXVfc2Jp X3NldHVwX2lycXMoc3RydWN0IHJpc2N2X3BtdSAqcG11LCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGUKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCX0KPiAgCj4gLQlyZXQgPSByZXF1ZXN0X3Bl cmNwdV9pcnEocmlzY3ZfcG11X2lycSwgcG11X3NiaV9vdmZfaGFuZGxlciwgInJpc2N2LXBtdSIs IGh3X2V2ZW50cyk7Cj4gKwlyZXQgPSByZXF1ZXN0X3BlcmNwdV9pcnEocmlzY3ZfcG11X2lycSwg cnZwbXVfb3ZmX2hhbmRsZXIsICJyaXNjdi1wbXUiLCBod19ldmVudHMpOwo+ICAJaWYgKHJldCkg ewo+ICAJCXByX2VycigicmVnaXN0ZXJpbmcgcGVyY3B1IGlycSBmYWlsZWQgWyVkXVxuIiwgcmV0 KTsKPiAgCQlyZXR1cm4gcmV0Owo+IEBAIC0xMjEzLDcgKzEyNTcsNyBAQCBzdGF0aWMgdm9pZCBy aXNjdl9wbXVfZGVzdHJveShzdHJ1Y3QgcmlzY3ZfcG11ICpwbXUpCj4gIAljcHVocF9zdGF0ZV9y ZW1vdmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9SSVNDVl9TVEFSVElORywgJnBtdS0+bm9kZSk7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBtdV9zYmlfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCj4gK3N0YXRpYyB2b2lkIHJ2cG11X2V2ZW50X2luaXQoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50KQo+ICB7Cj4gIAkvKgo+ICAJICogVGhlIHBlcm1pc3Npb25zIGFyZSBzZXQg YXQgZXZlbnRfaW5pdCBzbyB0aGF0IHdlIGRvIG5vdCBkZXBlbmQKPiBAQCAtMTIyNyw3ICsxMjcx LDcgQEAgc3RhdGljIHZvaWQgcG11X3NiaV9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpl dmVudCkKPiAgCQlldmVudC0+aHcuZmxhZ3MgfD0gUEVSRl9FVkVOVF9GTEFHX0xFR0FDWTsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgcG11X3NiaV9ldmVudF9tYXBwZWQoc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiArc3RhdGljIHZvaWQgcnZwbXVfZXZl bnRfbWFwcGVkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IG1tX3N0cnVjdCAqbW0p Cj4gIHsKPiAgCWlmIChldmVudC0+aHcuZmxhZ3MgJiBQRVJGX0VWRU5UX0ZMQUdfTk9fVVNFUl9B Q0NFU1MpCj4gIAkJcmV0dXJuOwo+IEBAIC0xMjU1LDE0ICsxMjk5LDE0IEBAIHN0YXRpYyB2b2lk IHBtdV9zYmlfZXZlbnRfbWFwcGVkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgc3RydWN0IG1t X3N0cnVjdCAqbW0pCj4gIAkgKiB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGRvIHNvIHRvIGF2b2lk IGFueSByYWNlLgo+ICAJICogQW5kIHdlIG11c3Qgbm90aWZ5IGFsbCBjcHVzIGhlcmUgYmVjYXVz ZSB0aHJlYWRzIHRoYXQgY3VycmVudGx5IHJ1bgo+ICAJICogb24gb3RoZXIgY3B1cyB3aWxsIHRy eSB0byBkaXJlY3RseSBhY2Nlc3MgdGhlIGNvdW50ZXIgdG9vIHdpdGhvdXQKPiAtCSAqIGNhbGxp bmcgcG11X3NiaV9jdHJfc3RhcnQuCj4gKwkgKiBjYWxsaW5nIHJ2cG11X3NiaV9jdHJfc3RhcnQu Cj4gIAkgKi8KPiAgCWlmIChldmVudC0+aHcuZmxhZ3MgJiBQRVJGX0VWRU5UX0ZMQUdfVVNFUl9B Q0NFU1MpCj4gIAkJb25fZWFjaF9jcHVfbWFzayhtbV9jcHVtYXNrKG1tKSwKPiAtCQkJCSBwbXVf c2JpX3NldF9zY291bnRlcmVuLCAodm9pZCAqKWV2ZW50LCAxKTsKPiArCQkJCSBydnBtdV9zZXRf c2NvdW50ZXJlbiwgKHZvaWQgKilldmVudCwgMSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBt dV9zYmlfZXZlbnRfdW5tYXBwZWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgbW1f c3RydWN0ICptbSkKPiArc3RhdGljIHZvaWQgcnZwbXVfZXZlbnRfdW5tYXBwZWQoc3RydWN0IHBl cmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiAgewo+ICAJaWYgKGV2ZW50 LT5ody5mbGFncyAmIFBFUkZfRVZFTlRfRkxBR19OT19VU0VSX0FDQ0VTUykKPiAgCQlyZXR1cm47 Cj4gQEAgLTEyODQsNyArMTMyOCw3IEBAIHN0YXRpYyB2b2lkIHBtdV9zYmlfZXZlbnRfdW5tYXBw ZWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBzdHJ1Y3QgbW1fc3RydWN0ICptCj4gIAo+ICAJ aWYgKGV2ZW50LT5ody5mbGFncyAmIFBFUkZfRVZFTlRfRkxBR19VU0VSX0FDQ0VTUykKPiAgCQlv bl9lYWNoX2NwdV9tYXNrKG1tX2NwdW1hc2sobW0pLAo+IC0JCQkJIHBtdV9zYmlfcmVzZXRfc2Nv dW50ZXJlbiwgKHZvaWQgKilldmVudCwgMSk7Cj4gKwkJCQkgcnZwbXVfcmVzZXRfc2NvdW50ZXJl biwgKHZvaWQgKilldmVudCwgMSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHJpc2N2X3BtdV91 cGRhdGVfY291bnRlcl9hY2Nlc3Modm9pZCAqaW5mbykKPiBAQCAtMTMyNyw3ICsxMzcxLDcgQEAg c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgc2JpX3BtdV9zeXNjdGxfdGFibGVbXSA9IHsKPiAgCX0s Cj4gIH07Cj4gIAo+IC1zdGF0aWMgaW50IHBtdV9zYmlfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3N0YXRpYyBpbnQgcnZwbXVfZGV2aWNlX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIHsKPiAgCXN0cnVjdCByaXNjdl9wbXUgKnBtdSA9 IE5VTEw7Cj4gIAlpbnQgcmV0ID0gLUVOT0RFVjsKPiBAQCAtMTMzOCw3ICsxMzgyLDcgQEAgc3Rh dGljIGludCBwbXVfc2JpX2RldmljZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICAJaWYgKCFwbXUpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IC0JbnVtX2NvdW50ZXJz ID0gcG11X3NiaV9maW5kX251bV9jdHJzKCk7Cj4gKwludW1fY291bnRlcnMgPSBydnBtdV9maW5k X251bV9jdHJzKCk7Cj4gIAlpZiAobnVtX2NvdW50ZXJzIDwgMCkgewo+ICAJCXByX2VycigiU0JJ IFBNVSBleHRlbnNpb24gZG9lc24ndCBwcm92aWRlIGFueSBjb3VudGVyc1xuIik7Cj4gIAkJZ290 byBvdXRfZnJlZTsKPiBAQCAtMTM1MSwxMCArMTM5NSwxMCBAQCBzdGF0aWMgaW50IHBtdV9zYmlf ZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAl9Cj4gIAo+ICAJ LyogY2FjaGUgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBjb3VudGVycyBub3cgKi8KPiAtCWlm IChwbXVfc2JpX2dldF9jdHJpbmZvKG51bV9jb3VudGVycywgJmNtYXNrKSkKPiArCWlmIChydnBt dV9nZXRfY3RyaW5mbyhudW1fY291bnRlcnMsICZjbWFzaykpCj4gIAkJZ290byBvdXRfZnJlZTsK PiAgCj4gLQlyZXQgPSBwbXVfc2JpX3NldHVwX2lycXMocG11LCBwZGV2KTsKPiArCXJldCA9IHJ2 cG11X3NldHVwX2lycXMocG11LCBwZGV2KTsKPiAgCWlmIChyZXQgPCAwKSB7Cj4gIAkJcHJfaW5m bygiUGVyZiBzYW1wbGluZy9maWx0ZXJpbmcgaXMgbm90IHN1cHBvcnRlZCBhcyBzc2NvZiBleHRl bnNpb24gaXMgbm90IGF2YWlsYWJsZVxuIik7Cj4gIAkJcG11LT5wbXUuY2FwYWJpbGl0aWVzIHw9 IFBFUkZfUE1VX0NBUF9OT19JTlRFUlJVUFQ7Cj4gQEAgLTEzNjQsMTcgKzE0MDgsMTcgQEAgc3Rh dGljIGludCBwbXVfc2JpX2RldmljZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICAJcG11LT5wbXUuYXR0cl9ncm91cHMgPSByaXNjdl9wbXVfYXR0cl9ncm91cHM7Cj4gIAlw bXUtPnBtdS5wYXJlbnQgPSAmcGRldi0+ZGV2Owo+ICAJcG11LT5jbWFzayA9IGNtYXNrOwo+IC0J cG11LT5jdHJfc3RhcnQgPSBwbXVfc2JpX2N0cl9zdGFydDsKPiAtCXBtdS0+Y3RyX3N0b3AgPSBw bXVfc2JpX2N0cl9zdG9wOwo+IC0JcG11LT5ldmVudF9tYXAgPSBwbXVfc2JpX2V2ZW50X21hcDsK PiAtCXBtdS0+Y3RyX2dldF9pZHggPSBwbXVfc2JpX2N0cl9nZXRfaWR4Owo+IC0JcG11LT5jdHJf Z2V0X3dpZHRoID0gcG11X3NiaV9jdHJfZ2V0X3dpZHRoOwo+IC0JcG11LT5jdHJfY2xlYXJfaWR4 ID0gcG11X3NiaV9jdHJfY2xlYXJfaWR4Owo+IC0JcG11LT5jdHJfcmVhZCA9IHBtdV9zYmlfY3Ry X3JlYWQ7Cj4gLQlwbXUtPmV2ZW50X2luaXQgPSBwbXVfc2JpX2V2ZW50X2luaXQ7Cj4gLQlwbXUt PmV2ZW50X21hcHBlZCA9IHBtdV9zYmlfZXZlbnRfbWFwcGVkOwo+IC0JcG11LT5ldmVudF91bm1h cHBlZCA9IHBtdV9zYmlfZXZlbnRfdW5tYXBwZWQ7Cj4gLQlwbXUtPmNzcl9pbmRleCA9IHBtdV9z YmlfY3NyX2luZGV4Owo+ICsJcG11LT5jdHJfc3RhcnQgPSBydnBtdV9jdHJfc3RhcnQ7Cj4gKwlw bXUtPmN0cl9zdG9wID0gcnZwbXVfY3RyX3N0b3A7Cj4gKwlwbXUtPmV2ZW50X21hcCA9IHJ2cG11 X2V2ZW50X21hcDsKPiArCXBtdS0+Y3RyX2dldF9pZHggPSBydnBtdV9jdHJfZ2V0X2lkeDsKPiAr CXBtdS0+Y3RyX2dldF93aWR0aCA9IHJ2cG11X2N0cl9nZXRfd2lkdGg7Cj4gKwlwbXUtPmN0cl9j bGVhcl9pZHggPSBydnBtdV9jdHJfY2xlYXJfaWR4Owo+ICsJcG11LT5jdHJfcmVhZCA9IHJ2cG11 X2N0cl9yZWFkOwo+ICsJcG11LT5ldmVudF9pbml0ID0gcnZwbXVfZXZlbnRfaW5pdDsKPiArCXBt dS0+ZXZlbnRfbWFwcGVkID0gcnZwbXVfZXZlbnRfbWFwcGVkOwo+ICsJcG11LT5ldmVudF91bm1h cHBlZCA9IHJ2cG11X2V2ZW50X3VubWFwcGVkOwo+ICsJcG11LT5jc3JfaW5kZXggPSBydnBtdV9j c3JfaW5kZXg7Cj4gIAo+ICAJcmV0ID0gcmlzY3ZfcG1fcG11X3JlZ2lzdGVyKHBtdSk7Cj4gIAlp ZiAocmV0KQo+IEBAIC0xNDMwLDE0ICsxNDc0LDE0IEBAIHN0YXRpYyBpbnQgcG11X3NiaV9kZXZp Y2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXJldHVybiByZXQ7Cj4g IH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBtdV9zYmlfZHJpdmVyID0g ewo+IC0JLnByb2JlCQk9IHBtdV9zYmlfZGV2aWNlX3Byb2JlLAo+ICtzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RyaXZlciBydnBtdV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJCT0gcnZwbXVfZGV2aWNl X3Byb2JlLAo+ICAJLmRyaXZlcgkJPSB7Cj4gLQkJLm5hbWUJPSBSSVNDVl9QTVVfU0JJX1BERVZf TkFNRSwKPiArCQkubmFtZQk9IFJJU0NWX1BNVV9QREVWX05BTUUsCj4gIAl9LAo+ICB9Owo+ICAK PiAtc3RhdGljIGludCBfX2luaXQgcG11X3NiaV9kZXZpbml0KHZvaWQpCj4gK3N0YXRpYyBpbnQg X19pbml0IHJ2cG11X2RldmluaXQodm9pZCkKPiAgewo+ICAJaW50IHJldDsKPiAgCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gQEAgLTE0NTIsMjAgKzE0OTYsMjAgQEAgc3RhdGljIGlu dCBfX2luaXQgcG11X3NiaV9kZXZpbml0KHZvaWQpCj4gIAo+ICAJcmV0ID0gY3B1aHBfc2V0dXBf c3RhdGVfbXVsdGkoQ1BVSFBfQVBfUEVSRl9SSVNDVl9TVEFSVElORywKPiAgCQkJCSAgICAgICJw ZXJmL3Jpc2N2L3BtdTpzdGFydGluZyIsCj4gLQkJCQkgICAgICBwbXVfc2JpX3N0YXJ0aW5nX2Nw dSwgcG11X3NiaV9keWluZ19jcHUpOwo+ICsJCQkJICAgICAgcnZwbXVfc3RhcnRpbmdfY3B1LCBy dnBtdV9keWluZ19jcHUpOwo+ICAJaWYgKHJldCkgewo+ICAJCXByX2VycigiQ1BVIGhvdHBsdWcg bm90aWZpZXIgY291bGQgbm90IGJlIHJlZ2lzdGVyZWQ6ICVkXG4iLAo+ICAJCSAgICAgICByZXQp Owo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gcGxhdGZvcm1fZHJpdmVyX3Jl Z2lzdGVyKCZwbXVfc2JpX2RyaXZlcik7Cj4gKwlyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0 ZXIoJnJ2cG11X2RyaXZlcik7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0J cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoUklTQ1ZfUE1VX1NCSV9QREVW X05BTUUsIC0xLCBOVUxMLCAwKTsKPiArCXBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJf c2ltcGxlKFJJU0NWX1BNVV9QREVWX05BTUUsIC0xLCBOVUxMLCAwKTsKPiAgCWlmIChJU19FUlIo cGRldikpIHsKPiAtCQlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmcG11X3NiaV9kcml2ZXIp Owo+ICsJCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZydnBtdV9kcml2ZXIpOwo+ICAJCXJl dHVybiBQVFJfRVJSKHBkZXYpOwo+ICAJfQo+ICAKPiBAQCAtMTQ3NCw0ICsxNTE4LDQgQEAgc3Rh dGljIGludCBfX2luaXQgcG11X3NiaV9kZXZpbml0KHZvaWQpCj4gIAo+ICAJcmV0dXJuIHJldDsK PiAgfQo+IC1kZXZpY2VfaW5pdGNhbGwocG11X3NiaV9kZXZpbml0KQo+ICtkZXZpY2VfaW5pdGNh bGwocnZwbXVfZGV2aW5pdCkKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJmL3Jpc2N2 X3BtdS5oIGIvaW5jbHVkZS9saW51eC9wZXJmL3Jpc2N2X3BtdS5oCj4gaW5kZXggNzAxOTc0NjM5 ZmYyLi41MjVhY2Q2ZDk2ZDAgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9wZXJmL3Jpc2N2 X3BtdS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9wZXJmL3Jpc2N2X3BtdS5oCj4gQEAgLTEzLDcg KzEzLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3B0cmFjZS5oPgo+ICAjaW5jbHVkZSA8bGludXgv aW50ZXJydXB0Lmg+Cj4gIAo+IC0jaWZkZWYgQ09ORklHX1JJU0NWX1BNVQo+ICsjaWZkZWYgQ09O RklHX1JJU0NWX1BNVV9DT01NT04KPiAgCj4gIC8qCj4gICAqIFRoZSBSSVNDVl9NQVhfQ09VTlRF UlMgcGFyYW1ldGVyIHNob3VsZCBiZSBzcGVjaWZpZWQuCj4gQEAgLTIxLDcgKzIxLDcgQEAKPiAg Cj4gICNkZWZpbmUgUklTQ1ZfTUFYX0NPVU5URVJTCTY0Cj4gICNkZWZpbmUgUklTQ1ZfT1BfVU5T VVBQCQkoLUVPUE5PVFNVUFApCj4gLSNkZWZpbmUgUklTQ1ZfUE1VX1NCSV9QREVWX05BTUUJInJp c2N2LXBtdS1zYmkiCj4gKyNkZWZpbmUgUklTQ1ZfUE1VX1BERVZfTkFNRQkicmlzY3YtcG11Igo+ ICAjZGVmaW5lIFJJU0NWX1BNVV9MRUdBQ1lfUERFVl9OQU1FCSJyaXNjdi1wbXUtbGVnYWN5Igo+ ICAKPiAgI2RlZmluZSBSSVNDVl9QTVVfU1RPUF9GTEFHX1JFU0VUIDEKPiBAQCAtODcsMTAgKzg3 LDEwIEBAIHZvaWQgcmlzY3ZfcG11X2xlZ2FjeV9za2lwX2luaXQodm9pZCk7Cj4gIHN0YXRpYyBp bmxpbmUgdm9pZCByaXNjdl9wbXVfbGVnYWN5X3NraXBfaW5pdCh2b2lkKSB7fTsKPiAgI2VuZGlm Cj4gIHN0cnVjdCByaXNjdl9wbXUgKnJpc2N2X3BtdV9hbGxvYyh2b2lkKTsKPiAtI2lmZGVmIENP TkZJR19SSVNDVl9QTVVfU0JJCj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfUE1VCj4gIGludCByaXNj dl9wbXVfZ2V0X2hwbV9pbmZvKHUzMiAqaHdfY3RyX3dpZHRoLCB1MzIgKm51bV9od19jdHIpOwo+ ICAjZW5kaWYKPiAgCj4gLSNlbmRpZiAvKiBDT05GSUdfUklTQ1ZfUE1VICovCj4gKyNlbmRpZiAv KiBDT05GSUdfUklTQ1ZfUE1VX0NPTU1PTiAqLwo+ICAKPiAgI2VuZGlmIC8qIF9SSVNDVl9QTVVf SCAqLwo+IAoKUmV2aWV3ZWQtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNv bT4KClRoYW5rcywKCkNsw6ltZW50CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtcmlzY3YK