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 37857C6FD1D for ; Tue, 21 Mar 2023 18:42:57 +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-Type: Content-Transfer-Encoding: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=CPKo0/4iGZ1LLa2vuQpDOekQVfYxrURPxs+vlQthVdk=; b=fl1Ef+ticom8aj r083yu3K3yTkZEA85EWUZZO50HMaQdDc26lyVn5M7difVVGe5P1kM6hKi/SnbmnKWLSLUTA3bWq6w FPvSZkmRkH7Ft+QyO9hh7A17GLx+yl9IRUMJuma0I/v+IULbAKMpPK8IrI63Yja5MDROyseOmr8Kq nEV0CFk7kjK3qWEpjdMVqee/7X+JQ1p238c9RW6Vg075OFI1lJUOXnSbk0NmXuJHMuWmzBYFav2Jf aVjFDpGX0oGc7Wmly/92UU77hqn/IE6g0z179Bl2V1BS/lz3CP3Pj6KB+ZGIzvDmJ4ePTOs9xe7bd 4NqCi7ttmagsDSMBt6Lg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pegur-00DN6Q-0D; Tue, 21 Mar 2023 18:41:01 +0000 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pegum-00DN5X-2e for linux-arm-kernel@lists.infradead.org; Tue, 21 Mar 2023 18:40:59 +0000 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32LIap1p020941; Tue, 21 Mar 2023 18:40:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=L2AvPuVSi6wuvj6AAUFqI69gloHvDgwojcI8TR1lUBc=; b=BflUqde7EOWnOHhsPllqX1dRbbInC/E6AUHRi0OMBwh8W6g5sC/97D1eg2uT8k0j1a/u 1Hvdlqeykiw3sC028HrkXPZTDiwNNOUVIKXoJewAyXQ3Om141v3viAAOaWwOy8/Q7Zto O3ho2DB+kAbMd0wwvcZIWS90PiKbOPnCd+0dCnOpFGBalhofFtDKO+EANb4f29sTnK6N yz392Oytf/cNRhpa/ELRQgFAhPUhMAiUL4UuuhpLJPOFyf1CwKekbYcjQYQcZV8IO5Av rQeBpAnjrM9QEuMmnVlysLtCpqCj/EkMS3N4iGEg2AS4HZlihVk2kEK+E4TgIi/yMKyv xQ== Received: from nasanppmta01.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3pfc2ps7v9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Mar 2023 18:40:41 +0000 Received: from nasanex01b.na.qualcomm.com (nasanex01b.na.qualcomm.com [10.46.141.250]) by NASANPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 32LIeesg007433 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Mar 2023 18:40:40 GMT Received: from [10.134.65.165] (10.80.80.8) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 21 Mar 2023 11:40:39 -0700 Message-ID: Date: Tue, 21 Mar 2023 11:40:39 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v11 16/26] firmware: qcom_scm: Register Gunyah platform ops Content-Language: en-US To: Srinivas Kandagatla , Alex Elder , Andy Gross , Bjorn Andersson , Konrad Dybcio , "Prakruthi Deepak Heragu" CC: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Arnd Bergmann , "Greg Kroah-Hartman" , Rob Herring , Krzysztof Kozlowski , Jonathan Corbet , Bagas Sanjaya , Will Deacon , Catalin Marinas , Jassi Brar , , , , , References: <20230304010632.2127470-1-quic_eberman@quicinc.com> <20230304010632.2127470-17-quic_eberman@quicinc.com> <6c2e3fac-1bd8-be10-6e10-e200ee9b55f2@linaro.org> From: Elliot Berman In-Reply-To: <6c2e3fac-1bd8-be10-6e10-e200ee9b55f2@linaro.org> X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01b.na.qualcomm.com (10.46.141.250) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: x1nn_l0acy1QnZG2zC3wJtcU9aDXbEoe X-Proofpoint-GUID: x1nn_l0acy1QnZG2zC3wJtcU9aDXbEoe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-21_11,2023-03-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 impostorscore=0 malwarescore=0 suspectscore=0 clxscore=1011 mlxlogscore=999 adultscore=0 lowpriorityscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303150002 definitions=main-2303210148 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230321_114056_876865_ABE44A14 X-CRM114-Status: GOOD ( 43.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAzLzIxLzIwMjMgNzoyNCBBTSwgU3Jpbml2YXMgS2FuZGFnYXRsYSB3cm90ZToKPiBIaSBF bGxpb3QsCj4gCj4gT24gMDQvMDMvMjAyMyAwMTowNiwgRWxsaW90IEJlcm1hbiB3cm90ZToKPj4g UXVhbGNvbW0gcGxhdGZvcm1zIGhhdmUgYSBmaXJtd2FyZSBlbnRpdHkgd2hpY2ggcGVyZm9ybXMg YWNjZXNzIGNvbnRyb2wKPj4gdG8gcGh5c2ljYWwgcGFnZXMuIER5bmFtaWNhbGx5IHN0YXJ0ZWQg R3VueWFoIHZpcnR1YWwgbWFjaGluZXMgdXNlIHRoZQo+PiBRQ09NX1NDTV9STV9NQU5BR0VEX1ZN SUQgZm9yIGFjY2Vzcy4gTGludXggdGh1cyBuZWVkcyB0byBhc3NpZ24gYWNjZXNzCj4+IHRvIHRo ZSBtZW1vcnkgdXNlZCBieSBndWVzdCBWTXMuIEd1bnlhaCBkb2Vzbid0IGRvIHRoaXMgb3BlcmF0 aW9uIGZvciB1cwo+PiBzaW5jZSBpdCBpcyB0aGUgY3VycmVudCBWTSAodHlwaWNhbGx5IFZNSURf SExPUykgZGVsZWdhdGluZyB0aGUgYWNjZXNzCj4+IGFuZCBub3QgR3VueWFoIGl0c2VsZi4gVXNl IHRoZSBHdW55YWggcGxhdGZvcm0gb3BzIHRvIGFjaGlldmUgdGhpcyBzbwo+PiB0aGF0IG9ubHkg UXVhbGNvbW0gcGxhdGZvcm1zIGF0dGVtcHQgdG8gbWFrZSB0aGUgbmVlZGVkIFNDTSBjYWxscy4K Pj4KPj4gQ28tZGV2ZWxvcGVkLWJ5OiBQcmFrcnV0aGkgRGVlcGFrIEhlcmFndSA8cXVpY19waGVy YWd1QHF1aWNpbmMuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBQcmFrcnV0aGkgRGVlcGFrIEhlcmFn dSA8cXVpY19waGVyYWd1QHF1aWNpbmMuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBFbGxpb3QgQmVy bWFuIDxxdWljX2ViZXJtYW5AcXVpY2luYy5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2Zpcm13 YXJlL0tjb25maWfCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGRyaXZlcnMvZmlybXdhcmUv cWNvbV9zY20uY8KgwqDCoCB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK Pj4gwqAgaW5jbHVkZS9saW51eC9ndW55YWhfcnNjX21nci5oIHzCoMKgIDIgKy0KPj4gwqAgMyBm aWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9maXJtd2FyZS9LY29uZmlnIGIvZHJpdmVycy9maXJtd2FyZS9LY29u ZmlnCj4+IGluZGV4IGI1OWUzMDQxZmQ2Mi4uYjg4ODA2OGZmNmYyIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2Zpcm13YXJlL0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9maXJtd2FyZS9LY29uZmln Cj4+IEBAIC0yMTQsNiArMjE0LDggQEAgY29uZmlnIE1US19BRFNQX0lQQwo+PiDCoCBjb25maWcg UUNPTV9TQ00KPj4gwqDCoMKgwqDCoCB0cmlzdGF0ZQo+PiArwqDCoMKgIHNlbGVjdCBWSVJUX0RS SVZFUlMKPj4gK8KgwqDCoCBzZWxlY3QgR1VOWUFIX1BMQVRGT1JNX0hPT0tTCj4+Cj4gCj4gSSBz dGlsbCBoYXZlIGNvbmNlcm5zIHdpdGggdGhpcyBzZWxlY3RzIGluIEtjb25maWcgb24gb2xkZXIg UXVhbGNvbW0gCj4gcGxhdGZvcm1zIHRoYXQgdXNlIFNDTSBhbmQgZG8gbm90IGhhdmUgR1VOWUFI Lgo+IAo+IEluIG91ciBsYXN0IGRpc2N1c3NpbmcgeW91IG1lbnRpb25lZCB0aGUgcmVxdWlyZW1l bnQgZm9yCj4gIkNPTkZJR19HVU5ZQUg9eSBhbmQgQ09ORklHX1FDT01fU0NNPW0iCj4gCj4gSSB0 aGluayB0aGF0IHNob3VsZCBiZSBkb2FibGUgYW5kIHJlbW92ZSBzZWxlY3RpbmcgaWYgeW91IGNh biBtYWtlIGEgCj4gc2VwYXJhdGUgR1VOWUFIX1FDT01fUExBVEZPUk1fSE9PS1MgZHJpdmVyCj4g Cj4gRG9lcyB0aGlzIHdvcms/CgpUaGlzIHdvcmtzIGZvciBBbmRyb2lkIGFuZCBhbGwgdGhlIFF1 YWxjb21tIHZlbmRvciAoZG93bnN0cmVhbSkgCnBsYXRmb3JtcyB3aGVyZSB3ZSBjYW4gZXhwbGlj aXRseSBsb2FkIG1vZHVsZXMuIEkgZG9uJ3QgdGhpbmsgdGhpcyAKbW9kdWxlIHdvdWxkIGJlIGlt cGxpY2l0bHkgbG9hZGVkIGJ5IGFueSBrZXJuZWwgbWVjaGFuaXNtLgoKPiAgPi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPmN1dDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIEZyb20g MWZiNzk5NWFlY2YxN2NhZWZkMDlmZmI1MTY1NzliYzRhYzlhYzMwMSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKPiBGcm9tOiBTcmluaXZhcyBLYW5kYWdhdGxhIDxzcmluaXZhcy5rYW5kYWdhdGxh QGxpbmFyby5vcmc+Cj4gRGF0ZTogVHVlLCAyMSBNYXIgMjAyMyAxMzozNDowMiArMDAwMAo+IFN1 YmplY3Q6IFtQQVRDSF0gdmlydDogZ3VueWFoOiBhZGQgcWNvbSBwbGF0Zm9ybSBob29rcwo+IAo+ IFNpZ25lZC1vZmYtYnk6IFNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5pdmFzLmthbmRhZ2F0bGFA bGluYXJvLm9yZz4KPiAtLS0KPiAgwqBkcml2ZXJzL2Zpcm13YXJlL0tjb25maWfCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIgLS0KPiAgwqBkcml2ZXJzL2Zp cm13YXJlL3Fjb21fc2NtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAx NCArKystLS0tLQo+ICDCoGRyaXZlcnMvdmlydC9ndW55YWgvS2NvbmZpZ8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNSArKysKPiAgwqBkcml2ZXJzL3ZpcnQvZ3VueWFo L01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMSArCj4gIMKg Li4uL3ZpcnQvZ3VueWFoL2d1bnlhaF9xY29tX3BsYXRmb3JtX2hvb2tzLmPCoCB8IDM1ICsrKysr KysrKysrKysrKysrKysKPiAgwqBpbmNsdWRlL2xpbnV4L2Zpcm13YXJlL3Fjb20vcWNvbV9zY20u aMKgwqDCoMKgwqDCoMKgIHzCoCAzICsrCj4gIMKgNiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRp b25zKCspLCAxMiBkZWxldGlvbnMoLSkKPiAgwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92 aXJ0L2d1bnlhaC9ndW55YWhfcWNvbV9wbGF0Zm9ybV9ob29rcy5jCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZyBiL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZwo+IGlu ZGV4IGI4ODgwNjhmZjZmMi4uYjU5ZTMwNDFmZDYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZmly bXdhcmUvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZwo+IEBAIC0yMTQs OCArMjE0LDYgQEAgY29uZmlnIE1US19BRFNQX0lQQwo+IAo+ICDCoGNvbmZpZyBRQ09NX1NDTQo+ ICDCoMKgwqDCoCB0cmlzdGF0ZQo+IC3CoMKgwqAgc2VsZWN0IFZJUlRfRFJJVkVSUwo+IC3CoMKg wqAgc2VsZWN0IEdVTllBSF9QTEFURk9STV9IT09LUwo+IAo+ICDCoGNvbmZpZyBRQ09NX1NDTV9E T1dOTE9BRF9NT0RFX0RFRkFVTFQKPiAgwqDCoMKgwqAgYm9vbCAiUXVhbGNvbW0gZG93bmxvYWQg bW9kZSBlbmFibGVkIGJ5IGRlZmF1bHQiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUv cWNvbV9zY20uYyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20uYwo+IGluZGV4IDUyNzNjZjY0 ZWUyYS4uMTk0ZWEyYmM5YTFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9z Y20uYwo+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20uYwo+IEBAIC0xMzAxLDcgKzEz MDEsNyBAQCBpbnQgcWNvbV9zY21fbG1oX2RjdnNoKHUzMiBwYXlsb2FkX2ZuLCB1MzIgCj4gcGF5 bG9hZF9yZWcsIHUzMiBwYXlsb2FkX3ZhbCwKPiAgwqB9Cj4gIMKgRVhQT1JUX1NZTUJPTChxY29t X3NjbV9sbWhfZGN2c2gpOwo+IAo+IC1zdGF0aWMgaW50IHFjb21fc2NtX2doX3JtX3ByZV9tZW1f c2hhcmUoc3RydWN0IGdoX3JtICpybSwgc3RydWN0IAo+IGdoX3JtX21lbV9wYXJjZWwgKm1lbV9w YXJjZWwpCj4gK2ludCBxY29tX3NjbV9naF9ybV9wcmVfbWVtX3NoYXJlKHN0cnVjdCBnaF9ybV9t ZW1fcGFyY2VsICptZW1fcGFyY2VsKQo+ICDCoHsKPiAgwqDCoMKgwqAgc3RydWN0IHFjb21fc2Nt X3ZtcGVybSAqbmV3X3Blcm1zOwo+ICDCoMKgwqDCoCB1NjQgc3JjLCBzcmNfY3B5Owo+IEBAIC0x MzU5LDggKzEzNTksOSBAQCBzdGF0aWMgaW50IHFjb21fc2NtX2doX3JtX3ByZV9tZW1fc2hhcmUo c3RydWN0IAo+IGdoX3JtICpybSwgc3RydWN0IGdoX3JtX21lbV9wYXJjZQo+ICDCoMKgwqDCoCBr ZnJlZShuZXdfcGVybXMpOwo+ICDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ICDCoH0KPiArRVhQT1JU X1NZTUJPTF9HUEwocWNvbV9zY21fZ2hfcm1fcHJlX21lbV9zaGFyZSk7Cj4gCj4gLXN0YXRpYyBp bnQgcWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbShzdHJ1Y3QgZ2hfcm0gKnJtLCBzdHJ1 Y3QgCj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkKPiAraW50IHFjb21fc2NtX2doX3Jt X3Bvc3RfbWVtX3JlY2xhaW0oc3RydWN0IGdoX3JtX21lbV9wYXJjZWwgKm1lbV9wYXJjZWwpCj4g IMKgewo+ICDCoMKgwqDCoCBzdHJ1Y3QgcWNvbV9zY21fdm1wZXJtIG5ld19wZXJtczsKPiAgwqDC oMKgwqAgdTY0IHNyYyA9IDAsIHNyY19jcHk7Cj4gQEAgLTEzODgsMTEgKzEzODksNyBAQCBzdGF0 aWMgaW50IHFjb21fc2NtX2doX3JtX3Bvc3RfbWVtX3JlY2xhaW0oc3RydWN0IAo+IGdoX3JtICpy bSwgc3RydWN0IGdoX3JtX21lbV9wYQo+IAo+ICDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ICDCoH0K PiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZ2hfcm1fcGxhdGZvcm1fb3BzIHFjb21fc2NtX2doX3JtX3Bs YXRmb3JtX29wcyA9IHsKPiAtwqDCoMKgIC5wcmVfbWVtX3NoYXJlID0gcWNvbV9zY21fZ2hfcm1f cHJlX21lbV9zaGFyZSwKPiAtwqDCoMKgIC5wb3N0X21lbV9yZWNsYWltID0gcWNvbV9zY21fZ2hf cm1fcG9zdF9tZW1fcmVjbGFpbSwKPiAtfTsKPiArRVhQT1JUX1NZTUJPTF9HUEwocWNvbV9zY21f Z2hfcm1fcG9zdF9tZW1fcmVjbGFpbSk7Cj4gCj4gIMKgc3RhdGljIGludCBxY29tX3NjbV9maW5k X2Rsb2FkX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCB1NjQgKmFkZHIpCj4gIMKgewo+IEBA IC0xNTk3LDkgKzE1OTQsNiBAQCBzdGF0aWMgaW50IHFjb21fc2NtX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgCj4gKnBkZXYpCj4gIMKgwqDCoMKgIGlmIChkb3dubG9hZF9tb2RlKQo+ICDC oMKgwqDCoMKgwqDCoMKgIHFjb21fc2NtX3NldF9kb3dubG9hZF9tb2RlKHRydWUpOwo+IAo+IC3C oMKgwqAgaWYgKGRldm1fZ2hfcm1fcmVnaXN0ZXJfcGxhdGZvcm1fb3BzKCZwZGV2LT5kZXYsIAo+ ICZxY29tX3NjbV9naF9ybV9wbGF0Zm9ybV9vcHMpKQo+IC3CoMKgwqDCoMKgwqDCoCBkZXZfd2Fy bihfX3NjbS0+ZGV2LCAiR3VueWFoIFJNIHBsYXRmb3JtIG9wcyB3ZXJlIGFscmVhZHkgCj4gcmVn aXN0ZXJlZFxuIik7Cj4gLQo+ICDCoMKgwqDCoCByZXR1cm4gMDsKPiAgwqB9Cj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlydC9ndW55YWgvS2NvbmZpZyBiL2RyaXZlcnMvdmlydC9ndW55YWgv S2NvbmZpZwo+IGluZGV4IGJkOGUzMTE4NDk2Mi4uYTljNDhkNjUxOGY3IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlydC9ndW55YWgvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvdmlydC9ndW55YWgv S2NvbmZpZwo+IEBAIC0xNiw2ICsxNiwxMSBAQCBjb25maWcgR1VOWUFICj4gIMKgY29uZmlnIEdV TllBSF9QTEFURk9STV9IT09LUwo+ICDCoMKgwqDCoCB0cmlzdGF0ZQo+IAo+ICtjb25maWcgR1VO WUFIX1FDT01fUExBVEZPUk1fSE9PS1MKPiArwqDCoMKgIHRyaXN0YXRlICJHdW55YWggUGxhdGZv cm0gaG9va3MgZm9yIFF1YWxjb21tIgo+ICvCoMKgwqDCoMKgwqDCoCBkZXBlbmRzIG9uIEFSQ0hf UUNPTSAmJiBRQ09NX1NDTQo+ICvCoMKgwqAgZGVwZW5kcyBvbiBHVU5ZQUgKPiArCj4gIMKgY29u ZmlnIEdVTllBSF9WQ1BVCj4gIMKgwqDCoMKgIHRyaXN0YXRlICJSdW5uYWJsZSBHdW55YWggdkNQ VXMiCj4gIMKgwqDCoMKgIGRlcGVuZHMgb24gR1VOWUFICj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlydC9ndW55YWgvTWFrZWZpbGUgYi9kcml2ZXJzL3ZpcnQvZ3VueWFoL01ha2VmaWxlCj4gaW5k ZXggNzM0N2IxNDcwNDkxLi5jMzNmNzAxYmI1YzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aXJ0 L2d1bnlhaC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvdmlydC9ndW55YWgvTWFrZWZpbGUKPiBA QCAtMiw2ICsyLDcgQEAKPiAKPiAgwqBvYmotJChDT05GSUdfR1VOWUFIKSArPSBndW55YWgubwo+ ICDCoG9iai0kKENPTkZJR19HVU5ZQUhfUExBVEZPUk1fSE9PS1MpICs9IGd1bnlhaF9wbGF0Zm9y bV9ob29rcy5vCj4gK29iai0kKENPTkZJR19HVU5ZQUhfUUNPTV9QTEFURk9STV9IT09LUykgKz0g Z3VueWFoX3Fjb21fcGxhdGZvcm1faG9va3Mubwo+IAo+ICDCoGd1bnlhaF9yc2NfbWdyLXkgKz0g cnNjX21nci5vIHJzY19tZ3JfcnBjLm8gdm1fbWdyLm8gdm1fbWdyX21tLm8KPiAgwqBvYmotJChD T05GSUdfR1VOWUFIKSArPSBndW55YWhfcnNjX21nci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlydC9ndW55YWgvZ3VueWFoX3Fjb21fcGxhdGZvcm1faG9va3MuYyAKPiBiL2RyaXZlcnMvdmly dC9ndW55YWgvZ3VueWFoX3Fjb21fcGxhdGZvcm1faG9va3MuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zMzMyZjg0MTM0ZDMKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9ndW55YWhfcWNvbV9wbGF0Zm9ybV9ob29rcy5jCj4g QEAgLTAsMCArMSwzNSBAQAo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlL3Fjb20vcWNvbV9z Y20uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2d1bnlhaF9yc2NfbWdyLmg+Cj4gKwo+ICtzdGF0aWMg aW50IHFjb21fZ2hfcm1fcHJlX21lbV9zaGFyZShzdHJ1Y3QgZ2hfcm0gKnJtLCBzdHJ1Y3QgCj4g Z2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkKPiArewo+ICvCoMKgwqAgcmV0dXJuIHFjb21f c2NtX2doX3JtX3ByZV9tZW1fc2hhcmUobWVtX3BhcmNlbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgcWNvbV9naF9ybV9wb3N0X21lbV9yZWNsYWltKHN0cnVjdCBnaF9ybSAqcm0sIHN0cnVjdCAK PiBnaF9ybV9tZW1fcGFyY2VsICptZW1fcGFyY2VsKQo+ICt7Cj4gK8KgwqDCoCByZXR1cm4gcWNv bV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbShtZW1fcGFyY2VsKTsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBnaF9ybV9wbGF0Zm9ybV9vcHMgcWNvbV9naF9wbGF0Zm9ybV9ob29rc19vcHMg PSB7Cj4gK8KgwqDCoCAucHJlX21lbV9zaGFyZSA9IHFjb21fZ2hfcm1fcHJlX21lbV9zaGFyZSwK PiArwqDCoMKgIC5wb3N0X21lbV9yZWNsYWltID0gcWNvbV9naF9ybV9wb3N0X21lbV9yZWNsYWlt LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBfX2luaXQgcWNvbV9naF9wbGF0Zm9ybV9ob29rc19y ZWdpc3Rlcih2b2lkKQo+ICt7Cj4gK8KgwqDCoCByZXR1cm4gZ2hfcm1fcmVnaXN0ZXJfcGxhdGZv cm1fb3BzKCZxY29tX2doX3BsYXRmb3JtX2hvb2tzX29wcyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIF9fZXhpdCBxY29tX2doX3BsYXRmb3JtX2hvb2tzX3VucmVnaXN0ZXIodm9pZCkKPiArewo+ ICvCoMKgwqAgZ2hfcm1fdW5yZWdpc3Rlcl9wbGF0Zm9ybV9vcHMoJnFjb21fZ2hfcGxhdGZvcm1f aG9va3Nfb3BzKTsKPiArfQo+ICsKPiArbW9kdWxlX2luaXQocWNvbV9naF9wbGF0Zm9ybV9ob29r c19yZWdpc3Rlcik7Cj4gK21vZHVsZV9leGl0KHFjb21fZ2hfcGxhdGZvcm1faG9va3NfdW5yZWdp c3Rlcik7Cj4gKwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlF1YWxjb21tIFRlY2hub2xvZ2llcywg SW5jLiBHdW55YWggUGxhdGZvcm0gSG9va3MgCj4gZHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNF KCJHUEwgdjIiKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maXJtd2FyZS9xY29tL3Fj b21fc2NtLmggCj4gYi9pbmNsdWRlL2xpbnV4L2Zpcm13YXJlL3Fjb20vcWNvbV9zY20uaAo+IGlu ZGV4IDFlNDQ5YTVkN2Y1Yy4uOWIwZDMzZGI4MDNkIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGlu dXgvZmlybXdhcmUvcWNvbS9xY29tX3NjbS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9maXJtd2Fy ZS9xY29tL3Fjb21fc2NtLmgKPiBAQCAtMTIxLDUgKzEyMSw4IEBAIGV4dGVybiBpbnQgcWNvbV9z Y21fbG1oX2RjdnNoKHUzMiBwYXlsb2FkX2ZuLCB1MzIgCj4gcGF5bG9hZF9yZWcsIHUzMiBwYXls b2FkX3ZhbCwKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU2NCBsaW1p dF9ub2RlLCB1MzIgbm9kZV9pZCwgdTY0IHZlcnNpb24pOwo+ICDCoGV4dGVybiBpbnQgcWNvbV9z Y21fbG1oX3Byb2ZpbGVfY2hhbmdlKHUzMiBwcm9maWxlX2lkKTsKPiAgwqBleHRlcm4gYm9vbCBx Y29tX3NjbV9sbWhfZGN2c2hfYXZhaWxhYmxlKHZvaWQpOwo+ICtzdHJ1Y3QgZ2hfcm1fbWVtX3Bh cmNlbDsKPiArZXh0ZXJuIGludCBxY29tX3NjbV9naF9ybV9wb3N0X21lbV9yZWNsYWltKHN0cnVj dCBnaF9ybV9tZW1fcGFyY2VsIAo+ICptZW1fcGFyY2VsKTsKPiArZXh0ZXJuIGludCBxY29tX3Nj bV9naF9ybV9wcmVfbWVtX3NoYXJlKHN0cnVjdCBnaF9ybV9tZW1fcGFyY2VsIAo+ICptZW1fcGFy Y2VsKTsKPiAKPiAgwqAjZW5kaWYKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Y3V0PC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gCj4+IMKgIGNvbmZpZyBRQ09NX1NDTV9ET1dOTE9BRF9N T0RFX0RFRkFVTFQKPj4gwqDCoMKgwqDCoCBib29sICJRdWFsY29tbSBkb3dubG9hZCBtb2RlIGVu YWJsZWQgYnkgZGVmYXVsdCIKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9z Y20uYyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20uYwo+PiBpbmRleCBiOTU2MTZiMzViZmYu Ljg5YTI2MWE5ZTAyMSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9maXJtd2FyZS9xY29tX3NjbS5j Cj4+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20uYwo+PiBAQCAtMjAsNiArMjAsNyBA QAo+PiDCoCAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9yZXNl dC1jb250cm9sbGVyLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9hcm0tc21jY2MuaD4KPj4gKyNp bmNsdWRlIDxsaW51eC9ndW55YWhfcnNjX21nci5oPgo+PiDCoCAjaW5jbHVkZSAicWNvbV9zY20u aCIKPj4gQEAgLTMwLDYgKzMxLDkgQEAgbW9kdWxlX3BhcmFtKGRvd25sb2FkX21vZGUsIGJvb2ws IDApOwo+PiDCoCAjZGVmaW5lIFNDTV9IQVNfSUZBQ0VfQ0xLwqDCoMKgIEJJVCgxKQo+PiDCoCAj ZGVmaW5lIFNDTV9IQVNfQlVTX0NMS8KgwqDCoMKgwqDCoMKgIEJJVCgyKQo+PiArI2RlZmluZSBR Q09NX1NDTV9STV9NQU5BR0VEX1ZNSUTCoMKgwqAgMHgzQQo+PiArI2RlZmluZSBRQ09NX1NDTV9N QVhfTUFOQUdFRF9WTUlEwqDCoMKgIDB4M0YKPj4gKwo+PiDCoCBzdHJ1Y3QgcWNvbV9zY20gewo+ PiDCoMKgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgY2xr ICpjb3JlX2NsazsKPj4gQEAgLTEyOTksNiArMTMwMyw5OSBAQCBpbnQgcWNvbV9zY21fbG1oX2Rj dnNoKHUzMiBwYXlsb2FkX2ZuLCB1MzIgCj4+IHBheWxvYWRfcmVnLCB1MzIgcGF5bG9hZF92YWws Cj4+IMKgIH0KPj4gwqAgRVhQT1JUX1NZTUJPTChxY29tX3NjbV9sbWhfZGN2c2gpOwo+PiArc3Rh dGljIGludCBxY29tX3NjbV9naF9ybV9wcmVfbWVtX3NoYXJlKHN0cnVjdCBnaF9ybSAqcm0sIHN0 cnVjdCAKPj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkKPj4gK3sKPj4gK8KgwqDCoCBz dHJ1Y3QgcWNvbV9zY21fdm1wZXJtICpuZXdfcGVybXM7Cj4+ICvCoMKgwqAgdTY0IHNyYywgc3Jj X2NweTsKPj4gK8KgwqDCoCBpbnQgcmV0ID0gMCwgaSwgbjsKPj4gK8KgwqDCoCB1MTYgdm1pZDsK Pj4gKwo+PiArwqDCoMKgIG5ld19wZXJtcyA9IGtjYWxsb2MobWVtX3BhcmNlbC0+bl9hY2xfZW50 cmllcywgCj4+IHNpemVvZigqbmV3X3Blcm1zKSwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqAgaWYg KCFuZXdfcGVybXMpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiAr wqDCoMKgIGZvciAobiA9IDA7IG4gPCBtZW1fcGFyY2VsLT5uX2FjbF9lbnRyaWVzOyBuKyspIHsK Pj4gK8KgwqDCoMKgwqDCoMKgIHZtaWQgPSBsZTE2X3RvX2NwdShtZW1fcGFyY2VsLT5hY2xfZW50 cmllc1tuXS52bWlkKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2bWlkIDw9IFFDT01fU0NNX01B WF9NQU5BR0VEX1ZNSUQpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld19wZXJtc1tuXS52 bWlkID0gdm1pZDsKPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbmV3X3Blcm1zW25dLnZtaWQgPSBRQ09NX1NDTV9STV9NQU5BR0VEX1ZNSUQ7Cj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAobWVtX3BhcmNlbC0+YWNsX2VudHJpZXNbbl0ucGVybXMgJiBHSF9S TV9BQ0xfWCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3X3Blcm1zW25dLnBlcm0gfD0g UUNPTV9TQ01fUEVSTV9FWEVDOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKG1lbV9wYXJjZWwtPmFj bF9lbnRyaWVzW25dLnBlcm1zICYgR0hfUk1fQUNMX1cpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG5ld19wZXJtc1tuXS5wZXJtIHw9IFFDT01fU0NNX1BFUk1fV1JJVEU7Cj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAobWVtX3BhcmNlbC0+YWNsX2VudHJpZXNbbl0ucGVybXMgJiBHSF9STV9BQ0xf UikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3X3Blcm1zW25dLnBlcm0gfD0gUUNPTV9T Q01fUEVSTV9SRUFEOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHNyYyA9ICgxdWxsIDw8 IFFDT01fU0NNX1ZNSURfSExPUyk7Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbWVt X3BhcmNlbC0+bl9tZW1fZW50cmllczsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzcmNfY3B5 ID0gc3JjOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gCj4+IHFjb21fc2NtX2Fzc2lnbl9tZW0o bGU2NF90b19jcHUobWVtX3BhcmNlbC0+bWVtX2VudHJpZXNbaV0uaXBhX2Jhc2UpLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZTY0X3RvX2NwdSht ZW1fcGFyY2VsLT5tZW1fZW50cmllc1tpXS5zaXplKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnNyY19jcHksIG5ld19wZXJtcywgbWVtX3BhcmNl bC0+bl9hY2xfZW50cmllcyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNyYyA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZv ciAobiA9IDA7IG4gPCBtZW1fcGFyY2VsLT5uX2FjbF9lbnRyaWVzOyBuKyspIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2bWlkID0gbGUxNl90b19jcHUobWVtX3BhcmNlbC0+ YWNsX2VudHJpZXNbbl0udm1pZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKHZtaWQgPD0gUUNPTV9TQ01fTUFYX01BTkFHRURfVk1JRCkKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyYyB8PSAoMXVsbCA8PCB2bWlkKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzcmMgfD0gKDF1bGwgPDwgUUNPTV9TQ01fUk1fTUFOQUdFRF9WTUlE KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG5ld19wZXJtc1swXS52bWlkID0gUUNPTV9TQ01fVk1JRF9ITE9TOwo+PiArCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAoaS0tOyBpID49IDA7IGktLSkgewo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyY19jcHkgPSBzcmM7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgV0FSTl9PTl9PTkNFKHFjb21fc2NtX2Fzc2lnbl9tZW0oCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAKPj4gbGU2NF90b19jcHUobWVtX3BhcmNlbC0+bWVtX2Vu dHJpZXNbaV0uaXBhX2Jhc2UpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsZTY0X3RvX2NwdShtZW1fcGFyY2VsLT5tZW1fZW50cmllc1tpXS5zaXpl KSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnNy Y19jcHksIG5ld19wZXJtcywgMSkpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDC oMKgIH0KPj4gKwo+PiArwqDCoMKgIGtmcmVlKG5ld19wZXJtcyk7Cj4+ICvCoMKgwqAgcmV0dXJu IHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBxY29tX3NjbV9naF9ybV9wb3N0X21lbV9y ZWNsYWltKHN0cnVjdCBnaF9ybSAqcm0sIHN0cnVjdCAKPj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVt X3BhcmNlbCkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgcWNvbV9zY21fdm1wZXJtIG5ld19wZXJt czsKPj4gK8KgwqDCoCB1NjQgc3JjID0gMCwgc3JjX2NweTsKPj4gK8KgwqDCoCBpbnQgcmV0ID0g MCwgaSwgbjsKPj4gK8KgwqDCoCB1MTYgdm1pZDsKPj4gKwo+PiArwqDCoMKgIG5ld19wZXJtcy52 bWlkID0gUUNPTV9TQ01fVk1JRF9ITE9TOwo+PiArwqDCoMKgIG5ld19wZXJtcy5wZXJtID0gUUNP TV9TQ01fUEVSTV9FWEVDIHwgUUNPTV9TQ01fUEVSTV9XUklURSB8IAo+PiBRQ09NX1NDTV9QRVJN X1JFQUQ7Cj4+ICsKPj4gK8KgwqDCoCBmb3IgKG4gPSAwOyBuIDwgbWVtX3BhcmNlbC0+bl9hY2xf ZW50cmllczsgbisrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB2bWlkID0gbGUxNl90b19jcHUobWVt X3BhcmNlbC0+YWNsX2VudHJpZXNbbl0udm1pZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodm1p ZCA8PSBRQ09NX1NDTV9NQVhfTUFOQUdFRF9WTUlEKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzcmMgfD0gKDF1bGwgPDwgdm1pZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNyYyB8PSAoMXVsbCA8PCBRQ09NX1NDTV9STV9NQU5BR0VEX1ZN SUQpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBtZW1fcGFy Y2VsLT5uX21lbV9lbnRyaWVzOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHNyY19jcHkgPSBz cmM7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAKPj4gcWNvbV9zY21fYXNzaWduX21lbShsZTY0 X3RvX2NwdShtZW1fcGFyY2VsLT5tZW1fZW50cmllc1tpXS5pcGFfYmFzZSksCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxlNjRfdG9fY3B1KG1lbV9w YXJjZWwtPm1lbV9lbnRyaWVzW2ldLnNpemUpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3JjX2NweSwgJm5ld19wZXJtcywgMSk7Cj4+ICvCoMKg wqDCoMKgwqDCoCBXQVJOX09OX09OQ0UocmV0KTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oCByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGdoX3JtX3BsYXRmb3Jt X29wcyBxY29tX3NjbV9naF9ybV9wbGF0Zm9ybV9vcHMgPSB7Cj4+ICvCoMKgwqAgLnByZV9tZW1f c2hhcmUgPSBxY29tX3NjbV9naF9ybV9wcmVfbWVtX3NoYXJlLAo+PiArwqDCoMKgIC5wb3N0X21l bV9yZWNsYWltID0gcWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbSwKPj4gK307Cj4+ICsK Pj4gwqAgc3RhdGljIGludCBxY29tX3NjbV9maW5kX2Rsb2FkX2FkZHJlc3Moc3RydWN0IGRldmlj ZSAqZGV2LCB1NjQgKmFkZHIpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlX25v ZGUgKnRjc3I7Cj4+IEBAIC0xNTAyLDYgKzE1OTksOSBAQCBzdGF0aWMgaW50IHFjb21fc2NtX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgCj4+ICpwZGV2KQo+PiDCoMKgwqDCoMKgIGlmIChk b3dubG9hZF9tb2RlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcWNvbV9zY21fc2V0X2Rvd25sb2Fk X21vZGUodHJ1ZSk7Cj4+ICvCoMKgwqAgaWYgKGRldm1fZ2hfcm1fcmVnaXN0ZXJfcGxhdGZvcm1f b3BzKCZwZGV2LT5kZXYsIAo+PiAmcWNvbV9zY21fZ2hfcm1fcGxhdGZvcm1fb3BzKSkKPj4gK8Kg wqDCoMKgwqDCoMKgIGRldl93YXJuKF9fc2NtLT5kZXYsICJHdW55YWggUk0gcGxhdGZvcm0gb3Bz IHdlcmUgYWxyZWFkeSAKPj4gcmVnaXN0ZXJlZFxuIik7Cj4+ICsKPj4gwqDCoMKgwqDCoCByZXR1 cm4gMDsKPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ndW55YWhfcnNjX21n ci5oIAo+PiBiL2luY2x1ZGUvbGludXgvZ3VueWFoX3JzY19tZ3IuaAo+PiBpbmRleCA1MTUwODc5 MzFhMmIuLmFjZjhjMTU0NWE2YyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51eC9ndW55YWhf cnNjX21nci5oCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvZ3VueWFoX3JzY19tZ3IuaAo+PiBAQCAt MTQ1LDcgKzE0NSw3IEBAIGludCBnaF9ybV9nZXRfaHlwX3Jlc291cmNlcyhzdHJ1Y3QgZ2hfcm0g KnJtLCB1MTYgCj4+IHZtaWQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGdoX3JtX2h5cF9yZXNvdXJjZXMgKipyZXNvdXJjZXMpOwo+PiDCoCBpbnQgZ2hfcm1f Z2V0X3ZtaWQoc3RydWN0IGdoX3JtICpybSwgdTE2ICp2bWlkKTsKPj4gLXN0cnVjdCBndW55YWhf cm1fcGxhdGZvcm1fb3BzIHsKPj4gK3N0cnVjdCBnaF9ybV9wbGF0Zm9ybV9vcHMgewo+PiDCoMKg wqDCoMKgIGludCAoKnByZV9tZW1fc2hhcmUpKHN0cnVjdCBnaF9ybSAqcm0sIHN0cnVjdCBnaF9y bV9tZW1fcGFyY2VsIAo+PiAqbWVtX3BhcmNlbCk7Cj4+IMKgwqDCoMKgwqAgaW50ICgqcG9zdF9t ZW1fcmVjbGFpbSkoc3RydWN0IGdoX3JtICpybSwgc3RydWN0IAo+PiBnaF9ybV9tZW1fcGFyY2Vs ICptZW1fcGFyY2VsKTsKPj4gwqAgfTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK