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 6480DC83F33 for ; Tue, 5 Sep 2023 14:38:36 +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=8Y5TG7M0kF1HUJgOA0x/1YvsbQckI33HuWOTvXtLyZc=; b=zP/6Cvg/1oXl8z 0ApY3uX2YRZNa9YdjkuSdm+422Ep5g1+q4Gb5pRzfiSziPwWp5IFUpzLTATso5sVTikRojpL95p78 n3I/y6GV1Qe7OWOUfi5D2E11hJViF9eBcnAVZq35OfnzjO8HFxRIrOxvA7NO6jsfWPNW4iU01jV67 vFPekJRCcfGCtDKRfgYIxlYM86+cJzdUMvvWeLpZWuGVc/S58ZfPKiCf3GWHFMLXDKXBwswFvid/2 su6gT1a98VhsdGggVuib5bY5JzRJ8tWj5dB1d/GOVyTlr8WMhq6vbzUzxXwvg2jDlkXw7pAulNMH1 +D4kmgIGhR8ajLONigvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qdXBx-006CGY-0Y; Tue, 05 Sep 2023 14:38:09 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qdXBs-006CF0-0U; Tue, 05 Sep 2023 14:38:08 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id A9EC0B811F5; Tue, 5 Sep 2023 14:38:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 44EF0C433C8; Tue, 5 Sep 2023 14:37:58 +0000 (UTC) Message-ID: Date: Tue, 5 Sep 2023 16:37:56 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v6 17/18] media: v4l2: Add DELETE_BUFS ioctl Content-Language: en-US, nl To: Benjamin Gaignard , mchehab@kernel.org, tfiga@chromium.org, m.szyprowski@samsung.com, ming.qian@nxp.com, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, nicolas.dufresne@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev, kernel@collabora.com References: <20230901124414.48497-1-benjamin.gaignard@collabora.com> <20230901124414.48497-18-benjamin.gaignard@collabora.com> <814130d1-8597-d567-ddea-cb82cadea00f@xs4all.nl> <294f4150-cbae-f71b-9804-f985d0b0492a@collabora.com> From: Hans Verkuil In-Reply-To: <294f4150-cbae-f71b-9804-f985d0b0492a@collabora.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230905_073804_468961_63D9108F X-CRM114-Status: GOOD ( 48.41 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQmVuamFtaW4sCgpPbiAwNS8wOS8yMDIzIDE2OjI4LCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90 ZToKPiAKPiBMZSAwNS8wOS8yMDIzIMOgIDEwOjE3LCBIYW5zIFZlcmt1aWwgYSDDqWNyaXTCoDoK Pj4gT24gMDEvMDkvMjAyMyAxNDo0NCwgQmVuamFtaW4gR2FpZ25hcmQgd3JvdGU6Cj4+PiBWSURJ T0NfREVMRVRFX0JVRlMgaW9jdGwgYWxsb3dzIHRvIGRlbGV0ZSBidWZmZXJzIGZyb20gYSBxdWV1 ZS4KPj4+IFRoZSBudW1iZXIgb2YgYnVmZmVycyB0byBkZWxldGUgaW4gZ2l2ZW4gYnkgY291bnQg ZmllbGQgb2YKPj4+IHN0cnVjdCB2NGwyX2RlbGV0ZV9idWZmZXJzIGFuZCB0aGUgcmFuZ2Ugc3Rh cnQgYXQgdGhlIGluZGV4Cj4+PiBzcGVjaWZpZWQgaW4gdGhlIHNhbWUgc3RydWN0dXJlLgo+Pj4K Pj4+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBj b2xsYWJvcmEuY29tPgo+Pj4gLS0tCj4+PiB2NjoKPj4+IC0gQWRkIGxvY2sgaW4gdmIyX2NvcmVf ZGVsZXRlX2J1ZigpCj4+PiAtIEZpeCB0eXBvIGFuZCBjb21tZW50cwo+Pj4gLSBBZGQgZmxhZ3Mg aW4gVklESU9DX0RFTEVURV9CVUZTIGRlY2FsYXJhdGlvbgo+Pj4KPj4+IMKgIC4uLi91c2Vyc3Bh Y2UtYXBpL21lZGlhL3Y0bC91c2VyLWZ1bmMucnN0wqDCoMKgwqAgfMKgIDEgKwo+Pj4gwqAgLi4u L21lZGlhL3Y0bC92aWRpb2MtZGVsZXRlLWJ1ZnMucnN0wqDCoMKgwqDCoMKgwqDCoMKgIHwgNzMg KysrKysrKysrKysrKysrKysrKwo+Pj4gwqAgLi4uL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlk ZW9idWYyLWNvcmUuY8KgwqAgfCAyNCArKysrKysKPj4+IMKgIC4uLi9tZWRpYS9jb21tb24vdmlk ZW9idWYyL3ZpZGVvYnVmMi12NGwyLmPCoMKgIHwgMzggKysrKysrKysrLQo+Pj4gwqAgZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdjRsMi1kZXYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEg Kwo+Pj4gwqAgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jwqDCoMKgwqDCoMKg wqDCoMKgIHwgMTcgKysrKysKPj4+IMKgIGluY2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5owqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKwo+Pj4gwqAgaW5jbHVkZS9t ZWRpYS92aWRlb2J1ZjItY29yZS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA5 ICsrKwo+Pj4gwqAgaW5jbHVkZS9tZWRpYS92aWRlb2J1ZjItdjRsMi5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgMTEgKysrCj4+PiDCoCBpbmNsdWRlL3VhcGkvbGludXgvdmlkZW9k ZXYyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNiArKysrCj4+PiDCoCAxMCBm aWxlcyBjaGFuZ2VkLCAxOTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4gwqAgY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlk aW9jLWRlbGV0ZS1idWZzLnJzdAo+Pj4KPj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Vz ZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3VzZXJz cGFjZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QKPj4+IGluZGV4IDE1ZmYwYmY3YmJlNi4u M2ZkNTY3Njk1NDc3IDEwMDY0NAo+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp L21lZGlhL3Y0bC91c2VyLWZ1bmMucnN0Cj4+PiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFj ZS1hcGkvbWVkaWEvdjRsL3VzZXItZnVuYy5yc3QKPj4+IEBAIC0xNyw2ICsxNyw3IEBAIEZ1bmN0 aW9uIFJlZmVyZW5jZQo+Pj4gwqDCoMKgwqDCoCB2aWRpb2MtZGJnLWctY2hpcC1pbmZvCj4+PiDC oMKgwqDCoMKgIHZpZGlvYy1kYmctZy1yZWdpc3Rlcgo+Pj4gwqDCoMKgwqDCoCB2aWRpb2MtZGVj b2Rlci1jbWQKPj4+ICvCoMKgwqAgdmlkaW9jLWRlbGV0ZS1idWZzCj4+PiDCoMKgwqDCoMKgIHZp ZGlvYy1kcWV2ZW50Cj4+PiDCoMKgwqDCoMKgIHZpZGlvYy1kdi10aW1pbmdzLWNhcAo+Pj4gwqDC oMKgwqDCoCB2aWRpb2MtZW5jb2Rlci1jbWQKPj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3ZpZGlvYy1kZWxldGUtYnVmcy5yc3QgYi9Eb2N1bWVu dGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3ZpZGlvYy1kZWxldGUtYnVmcy5yc3QKPj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmE1NWZlNjMzMWZj OAo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp L21lZGlhL3Y0bC92aWRpb2MtZGVsZXRlLWJ1ZnMucnN0Cj4+PiBAQCAtMCwwICsxLDczIEBACj4+ PiArLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdGREwtMS4xLW5vLWludmFyaWFudHMtb3It bGF0ZXIKPj4+ICsuLiBjOm5hbWVzcGFjZTo6IFY0TAo+Pj4gKwo+Pj4gKy4uIF9WSURJT0NfREVM RVRFX0JVRlM6Cj4+PiArCj4+PiArKioqKioqKioqKioqKioqKioqKioqKioqCj4+PiAraW9jdGwg VklESU9DX0RFTEVURV9CVUZTCj4+PiArKioqKioqKioqKioqKioqKioqKioqKioqCj4+PiArCj4+ PiArTmFtZQo+Pj4gKz09PT0KPj4+ICsKPj4+ICtWSURJT0NfREVMRVRFX0JVRlMgLSBEZWxldGVz IGJ1ZmZlcnMgZnJvbSBhIHF1ZXVlCj4+PiArCj4+PiArU3lub3BzaXMKPj4+ICs9PT09PT09PQo+ Pj4gKwo+Pj4gKy4uIGM6bWFjcm86OiBWSURJT0NfREVMRVRFX0JVRnMKPj4+ICsKPj4+ICtgYGlu dCBpb2N0bChpbnQgZmQsIFZJRElPQ19ERUxFVEVfQlVGcywgc3RydWN0IHY0bDJfZGVsZXRlX2J1 ZmZlcnMgKmFyZ3ApYGAKPj4+ICsKPj4+ICtBcmd1bWVudHMKPj4+ICs9PT09PT09PT0KPj4+ICsK Pj4+ICtgYGZkYGAKPj4+ICvCoMKgwqAgRmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IDpjOmZ1 bmM6YG9wZW4oKWAuCj4+PiArCj4+PiArYGBhcmdwYGAKPj4+ICvCoMKgwqAgUG9pbnRlciB0byBz dHJ1Y3QgOmM6dHlwZTpgdjRsMl9kZWxldGVfYnVmZmVyc2AuCj4+PiArCj4+PiArRGVzY3JpcHRp b24KPj4+ICs9PT09PT09PT09PQo+Pj4gKwo+Pj4gK0FwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxs eSBjYWxsIHRoZSA6cmVmOmBWSURJT0NfREVMRVRFX0JVRlNgIGlvY3RsIHRvCj4+PiArZGVsZXRl IGJ1ZmZlcnMgZnJvbSBhIHF1ZXVlLgo+Pj4gKwo+Pj4gKy4uIGM6dHlwZTo6IHY0bDJfZGVsZXRl X2J1ZmZlcnMKPj4+ICsKPj4+ICsuLiB0YWJ1bGFyY29sdW1uczo6IHxwezQuNGNtfXxwezQuNGNt fXxwezguNWNtfXwKPj4+ICsKPj4+ICsuLiBmbGF0LXRhYmxlOjogc3RydWN0IHY0bDJfZGVsZXRl X2J1ZmZlcnMKPj4+ICvCoMKgwqAgOmhlYWRlci1yb3dzOsKgIDAKPj4+ICvCoMKgwqAgOnN0dWIt Y29sdW1uczogMAo+Pj4gK8KgwqDCoCA6d2lkdGhzOsKgwqDCoMKgwqDCoCAxIDEgMgo+Pj4gKwo+ Pj4gK8KgwqDCoCAqIC0gX191MzIKPj4+ICvCoMKgwqDCoMKgIC0gYGBpbmRleGBgCj4+PiArwqDC oMKgwqDCoCAtIFRoZSBzdGFydGluZyBidWZmZXIgaW5kZXggdG8gZGVsZXRlLgo+Pj4gK8KgwqDC oCAqIC0gX191MzIKPj4+ICvCoMKgwqDCoMKgIC0gYGBjb3VudGBgCj4+PiArwqDCoMKgwqDCoCAt IFRoZSBudW1iZXIgb2YgYnVmZmVycyB0byBiZSBkZWxldGVkLgo+PiBUaGF0J3Mgbm90IHF1aXRl IGNvcnJlY3QuIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgdGhlIGJ1ZmZlcnMgd2l0aCBpbmRp Y2VzCj4+IGluZGV4IHVudGlsIGluZGV4K2NvdW50LTEuIEFuZCBpbmRpY2VzIGluIHRoYXQgcmFu Z2UgaGF2ZSB0byBiZSB2YWxpZCBidWZmZXJzLAo+PiBpLmUuIHlvdSBjYW4ndCBoYXZlIGFscmVh ZHkgZGVsZXRlZCBidWZmZXJzIGluIHRoYXQgcmFuZ2UuCj4+Cj4+IE9yIHNob3VsZCB3ZSBhbGxv dyB0aGF0PyBJdCBpcyBhIGZhaXIgcXVlc3Rpb24uCj4+Cj4+IEFsbCBidWZmZXJzIGFsc28gaGF2 ZSB0byBiZSBpbiB0aGUgREVRVUVVRUQgc3RhdGUuCj4+Cj4+IFRoZSB0ZXh0IGFib3ZlIHN1Z2dl c3RzIHRoYXQgZ2l2ZW4gdGhlIGZvbGxvd2luZyB2YWxpZCBpbmRpY2VzOgo+Pgo+PiAwLCAxLCAz LCA0IChzbyB0aGUgYnVmZmVyIHdpdGggaW5kZXggMiB3YXMgYWxyZWFkeSBkZWxldGVkKQo+Pgo+ PiBkZWxldGluZyAyIGJ1ZmZlcnMgZnJvbSBpbmRleCAxIHdvdWxkIGRlbGV0ZSBidWZmZXJzIDEs IDMuIFdoZW4gaW4KPj4gZmFjdCBpdCB3aWxsIGF0dGVtcHQgdG8gZGVsZXRlIGJ1ZmZlcnMgMSBh bmQgMi4KPj4KPj4gQWxzbyBkb2N1bWVudCBleHBsaWNpdGx5IHRoYXQgY2FsbGluZyB0aGlzIHdp dGggY291bnQ9MCAoYW5kIHBlcmhhcHMKPj4gaW5kZXg9MCBhcyB3ZWxsPykgY2FuIGJlIHVzZWQg dG8gY2hlY2sgaWYgdGhpcyBpb2N0bCBpcyBzdXBwb3J0ZWQuCj4gCj4gSSB3aWxsIGRvIHRoYXQu Cj4gCj4+Cj4+PiArwqDCoMKgICogLSBfX3UzMgo+Pj4gK8KgwqDCoMKgwqAgLSBgYHR5cGVgYAo+ Pj4gK8KgwqDCoMKgwqAgLSBUeXBlIG9mIHRoZSBzdHJlYW0gb3IgYnVmZmVycywgdGhpcyBpcyB0 aGUgc2FtZSBhcyB0aGUgc3RydWN0Cj4+PiArwqDCoMKgIDpjOnR5cGU6YHY0bDJfZm9ybWF0YCBg YHR5cGVgYCBmaWVsZC4gU2VlCj4+PiArwqDCoMKgIDpjOnR5cGU6YHY0bDJfYnVmX3R5cGVgIGZv ciB2YWxpZCB2YWx1ZXMuCj4+PiArwqDCoMKgICogLSBfX3UzMgo+Pj4gK8KgwqDCoMKgwqAgLSBg YHJlc2VydmVkYGBcIFsxM10KPj4+ICvCoMKgwqDCoMKgIC0gQSBwbGFjZSBob2xkZXIgZm9yIGZ1 dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMKPj4+ICvCoMKgwqAgbXVz dCBzZXQgdGhlIGFycmF5IHRvIHplcm8uCj4+IFdoYXQgc2hvdWxkIGhhcHBlbiBpZiB5b3UgZGVs ZXRlIEFMTCBidWZmZXJzIHdpdGggdGhpcyBjYWxsPyBJLmUuLCB0aGUKPj4gZXF1aXZhbGVudCB0 byBSRVFCVUZTIHdpdGggY291bnQ9MC4KPj4KPj4gVGhpbmtpbmcgYWJvdXQgdGhpcyB0aGUgbWFp biBkaWZmZXJlbmNlIGlzIHRoYXQgREVMRVRFX0JVRlMgY2FuIG9ubHkgZGVsZXRlCj4+IGRlcXVl dWVkIGJ1ZmZlcnMgYW5kIGl0IGRvZXMgbm90IHN0b3Agc3RyZWFtaW5nIGlmIGFsbCBidWZmZXJz IGFyZSBkZWxldGVkLgo+Pgo+PiBTbyBSRVFCVUZTIHdpdGggY291bnQ9MCAob3IgYSBTVFJFQU1P RkYpIGlzIHN0aWxsIG5lZWRlZCB0byBvZmZpY2lhbGx5IHN0b3AKPj4gc3RyZWFtaW5nIGFuZCBj YW5jZWwgdGhlIHF1ZXVlLgo+Pgo+PiBCYXNpY2FsbHkgUkVRQlVGUyB3aXRoIGNvdW50PTAgaXMg YWxtb3N0IHRoZSBlcXVpdmFsZW50IG9mIGNhbGxpbmcgU1RSRUFNT0ZGIGZvbGxvd2VkCj4+IGJ5 IERFTEVURV9CVUZTIGZvciBhbGwgYnVmZmVycy4gQWxtb3N0LCBidXQgbm90IHF1aXRlOiBSRVFC VUZTKDApIGFsc28gcmVwb3J0cwo+PiBpZiB0aGUgcXVldWUgaXMgdW5iYWxhbmNlZCwgYW5kIGl0 IHNldHMgcS0+bnVtX2J1ZmZlcnMgdG8gMC4gQW5kIGluIHZiMl9pb2N0bF9yZXFidWZzCj4+IGl0 IHdpbGwgc2V0IHZkZXYtPnF1ZXVlLT5vd25lciB0byBOVUxMLgo+Pgo+PiBJIGFtIGluY2xpbmVk IHRvIGRvIHRoZSBzYW1lIGlmIERFTEVURV9CVUZTIGRlbGV0ZXMgYWxsIGJ1ZmZlcnMuCj4gCj4g VW5saWtlIFJFUUJVRlMgREVMRVRFX0JVRlMgY2FuIGRlbGV0ZSBidWZmZXJzIHdoaWxlIHN0cmVh bWluZyBzbyBmb3IgbWUgdGhlIG93bmVyc2hpcAo+IHNob3VsZCBub3QgY2hhbmdlIGV2ZW4gaWYg dGhlcmUgaXMgbm8gbW9yZSBkZXF1ZXVlZCBidWZmZXJzLgo+IEZvciBSRVFCVUZTIHdpdGggY291 bnQ9MCBtZWFucyB0aGF0IHRoZSBnb2luZyBzdHJlYW0gaXMgc3RvcHBlZCBzbyB3ZSBjYW4gZGVs ZXRlIGFsbCB0aGUgYnVmZmVycwo+IHdoaWxlIERFTEVURV9CVUZTIHVzYWdlIGlzIHRvIGRlbGV0 ZSBidWZmZXJzIHdoaWxlIGtlZXBpbmcgdGhlIHN0cmVhbSBhbGl2ZS4KCkknbSB1bmRlY2lkZWQg b24gdGhpcy4gSXQncyBzb21ldGhpbmcgd2UgY2FuIGRlY2lkZSBsYXRlci4KCj4gCj4+Cj4+PiAr Cj4+PiArUmV0dXJuIFZhbHVlCj4+PiArPT09PT09PT09PT09Cj4+PiArCj4+PiArT24gc3VjY2Vz cyAwIGlzIHJldHVybmVkLCBvbiBlcnJvciAtMSBhbmQgdGhlIGBgZXJybm9gYCB2YXJpYWJsZSBp cyBzZXQKPj4+ICthcHByb3ByaWF0ZWx5LiBUaGUgZ2VuZXJpYyBlcnJvciBjb2RlcyBhcmUgZGVz Y3JpYmVkIGF0IHRoZQo+Pj4gKzpyZWY6YEdlbmVyaWMgRXJyb3IgQ29kZXMgPGdlbi1lcnJvcnM+ YCBjaGFwdGVyLgo+Pj4gKwo+Pj4gK0VCVVNZCj4+PiArwqDCoMKgIEZpbGUgSS9PIGlzIGluIHBy b2dyZXNzLgo+Pj4gKwo+Pj4gK0VJTlZBTAo+Pj4gK8KgwqDCoCBUaGUgYnVmZmVyIGBgaW5kZXhg YCBkb2Vzbid0IGV4aXN0IGluIHRoZSBxdWV1ZS4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvY29t bW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItY29yZS5jCj4+PiBpbmRleCBkYzdmNmI1OWQyMzcuLjll ZGIyYTFlOTVmYyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVm Mi92aWRlb2J1ZjItY29yZS5jCj4+PiArKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1 ZjIvdmlkZW9idWYyLWNvcmUuYwo+Pj4gQEAgLTE2MzMsNiArMTYzMywzMCBAQCBpbnQgdmIyX2Nv cmVfcHJlcGFyZV9idWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IHZiMl9idWZmZXIgKnZi LCB2b2lkICpwYikKPj4+IMKgIH0KPj4+IMKgIEVYUE9SVF9TWU1CT0xfR1BMKHZiMl9jb3JlX3By ZXBhcmVfYnVmKTsKPj4+IMKgICtpbnQgdmIyX2NvcmVfZGVsZXRlX2J1ZihzdHJ1Y3QgdmIyX3F1 ZXVlICpxLCBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCj4+PiArewo+Pj4gK8KgwqDCoCBtdXRleF9s b2NrKCZxLT5tbWFwX2xvY2spOwo+Pj4gK8KgwqDCoCBpZiAodmItPnBsYW5lc1swXS5tZW1fcHJp dikKPj4+ICvCoMKgwqDCoMKgwqDCoCBjYWxsX3ZvaWRfdmJfcW9wKHZiLCBidWZfY2xlYW51cCwg dmIpOwo+Pj4gKwo+Pj4gK8KgwqDCoCAvKiBGcmVlIE1NQVAgYnVmZmVycyBvciByZWxlYXNlIFVT RVJQVFIgYnVmZmVycyAqLwo+Pj4gK8KgwqDCoCBpZiAocS0+bWVtb3J5ID09IFZCMl9NRU1PUllf TU1BUCkKPj4+ICvCoMKgwqDCoMKgwqDCoCBfX3ZiMl9idWZfbWVtX2ZyZWUodmIpOwo+Pj4gK8Kg wqDCoCBlbHNlIGlmIChxLT5tZW1vcnkgPT0gVkIyX01FTU9SWV9ETUFCVUYpCj4+PiArwqDCoMKg wqDCoMKgwqAgX192YjJfYnVmX2RtYWJ1Zl9wdXQodmIpOwo+Pj4gK8KgwqDCoCBlbHNlCj4+PiAr wqDCoMKgwqDCoMKgwqAgX192YjJfYnVmX3VzZXJwdHJfcHV0KHZiKTsKPj4+ICsKPj4+ICvCoMKg wqAgdmIyX3F1ZXVlX3JlbW92ZV9idWZmZXIocSwgdmIpOwo+Pj4gK8KgwqDCoCBtdXRleF91bmxv Y2soJnEtPm1tYXBfbG9jayk7Cj4+PiArCj4+PiArwqDCoMKgIGRwcmludGsocSwgMiwgImJ1ZmZl ciAlZCBkZWxldGVkXG4iLCB2Yi0+aW5kZXgpOwo+Pj4gK8KgwqDCoCBrZnJlZSh2Yik7Cj4+PiAr Cj4+PiArwqDCoMKgIHJldHVybiAwOwo+Pj4gK30KPj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh2YjJf Y29yZV9kZWxldGVfYnVmKTsKPj4gVGhpcyBpcyBkdXBsaWNhdGluZyB3aGF0IGFscmVhZHkgaGFw cGVucyBpbiBfX3ZiMl9mcmVlX21lbSBhbmQgX192YjJfcXVldWVfZnJlZS4KPj4KPj4gVGhhdCBj b2RlIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQuCj4+Cj4+IFdoYXQgeW91IHdhbnQgaXMgYSBfX3Zi Ml9kZWxldGVfYnVmZmVycyhzdHJ1Y3QgdmIyX3F1ZXVlICpxLCB1bnNpZ25lZCBpbnQgaW5kZXgs IHVuc2lnbmVkIGludCBidWZmZXJzKQo+PiBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIG1t YXBfbG9jayBoZWxkIGFuZCB0aGF0IGRlbGV0ZXMgYnVmZmVycyBpbiB0aGUgcmFuZ2UgJ2luZGV4 Jwo+PiB0byAnaW5kZXggKyBjb3VudCAtIDEnLiBCdWZmZXJzIG1heSBhbHJlYWR5IGJlIGRlbGV0 ZWQuCj4+Cj4+IF9fdmIyX2ZyZWVfbWVtIGRvZXMgYWxtb3N0IGRvIGFsbCBvZiB0aGF0IGFscmVh ZHkuCj4+Cj4+IFRoZW4gdGhpcyBuZXcgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIF9fdmIy X3F1ZXVlX2ZyZWUoKSBhbmQgeW91IGNhbiBtYWtlCj4+IGEgdmIyX2NvcmVfZGVsZXRlX2J1ZnMo KSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBsb2NrIGFuZCBjYWxscyBfX3ZiMl9kZWxldGVfYnVm ZmVycy4KPj4KPj4gQW5vdGhlciBub3RlOiBjdXJyZW50bHkgX192YjJfcXVldWVfZnJlZSBjaGVj a3MgaWYgYW55IG9mIHRoZSBidWZmZXJzIGhhZCB1bmJhbGFuY2VkCj4+IG9wZXJhdGlvbnMuIFRo YXQgY2hlY2sgbmVlZHMgdG8gYmUgbW92ZWQgdG8gX192YjJfZGVsZXRlX2J1ZmZlcnMgYXMgd2Vs bCBvdGhlcndpc2UKPj4gdGhhdCB3b3VsZCBuZXZlciBiZSByZXBvcnRlZCB3aGVuIHVzaW5nIERF TEVURV9CVUZTLgo+IAo+IExvb3BzIGluIF9fdmIyX3F1ZXVlX2ZyZWUoKSBhbmQgX192YjJfZnJl ZV9tZW0oKSB0cnkgdG8gZGVsZXRlIGJ1ZmZlcnMgYXQgdGhlIGVuZCBvZiB0aGUKPiBxdWV1ZSwg SSBjb3VsZCBqdXN0IG1vZGlmeSB0aGVzZSBmdW5jdGlvbnMgcHJvdG90eXBlIGFuZCBsb29wcyB0 byBzdGFydCBmcm9tIGEgZ2l2ZW4gaW5kZXguCj4gVGhhdCBzaG91bGQgZG8gdGhlIGpvYiBidXQg aGF2ZSBpbXBhY3Qgb24gY3JlYXRlX2J1ZnMgKHNlZSBiZWxvdykKPiAKPj4KPj4+ICsKPj4+IMKg IC8qCj4+PiDCoMKgICogdmIyX3N0YXJ0X3N0cmVhbWluZygpIC0gQXR0ZW1wdCB0byBzdGFydCBz dHJlYW1pbmcuCj4+PiDCoMKgICogQHE6wqDCoMKgwqDCoMKgwqAgdmlkZW9idWYyIHF1ZXVlCj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi12 NGwyLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuYwo+ Pj4gaW5kZXggOGJhNjU4YWQ5ODkxLi5kMDA5OGY1OGE2NWMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLXY0bDIuYwo+Pj4gKysrIGIvZHJp dmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi12NGwyLmMKPj4+IEBAIC0zODUs NyArMzg1LDcgQEAgc3RhdGljIGludCB2YjJfcXVldWVfb3JfcHJlcGFyZV9idWYoc3RydWN0IHZi Ml9xdWV1ZSAqcSwgc3RydWN0IG1lZGlhX2RldmljZSAqbWQKPj4+IMKgIMKgwqDCoMKgwqAgdmIg PSB2YjJfZ2V0X2J1ZmZlcihxLCBiLT5pbmRleCk7Cj4+PiDCoMKgwqDCoMKgIGlmICghdmIpIHsK Pj4+IC3CoMKgwqDCoMKgwqDCoCBkcHJpbnRrKHEsIDEsICIlczogYnVmZmVyIGlzIE5VTExcbiIs IG9wbmFtZSk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgZHByaW50ayhxLCAxLCAiJXM6IGJ1ZmZlciAl dSB3YXMgZGVsZXRlZFxuIiwgb3BuYW1lLCBiLT5pbmRleCk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIEBAIC03NTcsNiArNzU3 LDQyIEBAIGludCB2YjJfcHJlcGFyZV9idWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IG1l ZGlhX2RldmljZSAqbWRldiwKPj4+IMKgIH0KPj4+IMKgIEVYUE9SVF9TWU1CT0xfR1BMKHZiMl9w cmVwYXJlX2J1Zik7Cj4+PiDCoCAraW50IHZiMl9kZWxldGVfYnVmcyhzdHJ1Y3QgdmIyX3F1ZXVl ICpxLCBzdHJ1Y3QgdjRsMl9kZWxldGVfYnVmZmVycyAqZCkKPj4+ICt7Cj4+PiArwqDCoMKgIHN0 cnVjdCB2YjJfYnVmZmVyICp2YjsKPj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4Owo+Pj4g K8KgwqDCoCBpbnQgcmV0ID0gMDsKPj4+ICsKPj4gQWRkOgo+Pgo+PiDCoMKgwqDCoGlmICghZC0+ Y291bnQpCj4+IMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pgo+PiAocG9zc2libHkgYWxzbyBj aGVjayBpZiAhZC0+aW5kZXgpCj4+Cj4+PiArwqDCoMKgIGlmIChkLT5pbmRleCA+IHEtPm51bV9i dWZmZXJzIHx8Cj4+PiBzaG91bGQgYmUgPj0gaGVyZS4KPj4+ICvCoMKgwqDCoMKgwqDCoCBkLT5j b3VudCA+IHEtPm51bV9idWZmZXJzIHx8Cj4+PiArwqDCoMKgwqDCoMKgwqAgKGQtPmluZGV4ICsg ZC0+Y291bnQpID4gcS0+bnVtX2J1ZmZlcnMpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVJTlZBTDsKPj4+ICvCoMKgwqAgfQo+PiBPbmNlIHdlIGNhbiBkZWxldGUgYnVmZmVycywgaG93 IGRvZXMgdGhhdCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgbnVtX2J1ZmZlcnM/Cj4+IElzbid0IHRo aXMgcmVhbGx5IG1heF9idWZmZXJfaW5kZXggb3Igc29tZXRoaW5nIHNpbWlsYXI/IEJ1dCB3ZSBw cm9iYWJseSBhbHNvCj4+IHN0aWxsIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgYWN0dWFsIG51 bWJlciBvZiBidWZmZXJzLgo+Pgo+PiBBbmQgY3JlYXRlX2J1ZnMgc3RpbGwgYWxsb2NhdGVkIGJ1 ZmZlcnMgZnJvbSB0aGUgbGFzdCBpbmRleCBvbndhcmRzLCBpdCBkb2VzCj4+IG5vdCBhdHRlbXB0 IHRvIHJldXNlIGluZGljZXMgb2YgcHJldmlvdXNseSBkZWxldGVkIGJ1ZmZlcnMuCj4gCj4gUmV1 c2UgcHJldmlvdXMgaW5kaWNlcyByZXF1aXJlIHRvIGJlIHN1cmUgdGhhdCBhIHJhbmdlIG9mIGlu ZGV4IGlzIGZyZWUgYmVjYXVzZQo+IGNyZWF0ZV9idWZzIHJldHVybnMsIGluIGluZGV4IHBhcmFt ZXRlciwgdGhlIHN0YXJ0aW5nIGJ1ZmZlciBpbmRleC4KPiBJIHdpbGwgYWRkIGEgZnVuY3Rpb24g dG8gZmluZCB0aGUgZmlyc3QgYXZhaWxhYmxlIHJhbmdlIGFuZCB1c2UgaXQgaW4gdmIyX2NyZWF0 ZV9idWZzKCkKPiB0byBjaGFuZ2UgaG93IGNyZWF0ZS0+aW5kZXggaXMgc2V0Lgo+IEhhbnMsIHNv dW5kIGdvb2QgZm9yIHlvdSA/CgpUaGF0J3Mgd2hhdCBJIGhhZCBpbiBtaW5kLiBJdCBpcyBhbiBv cHRpb24gdG8ga2VlcCBhIGJpdG1hcCB0byBrZWVwIHRyYWNrCm9mIHdoaWNoIGJ1ZmZlciBpbmRp Y2VzIGFyZSBpbiB1c2UuIFlvdSBjb3VsZCB1c2UgYml0bWFwX2ZpbmRfbmV4dF96ZXJvX2FyZWEK dG8gZmluZCB0aGUgZnJlZSByYW5nZS4KCkp1c3QgYW4gb3B0aW9uLgoKPiAKPj4KPj4gVGhlcmUg YXJlIGEgbG90IG9mIGRyaXZlcnMgdGhhdCB1c2UgbnVtX2J1ZmZlcnMsIHRoZXkgd2lsbCBoYXZl IHRvIGJlIGF1ZGl0ZWQuCj4+Cj4+IFRoaXMgbmVlZHMgYSBsb3QgbW9yZSB0aG91Z2h0Lgo+Pgo+ Pj4gKwo+Pj4gK8KgwqDCoCBmb3IgKGluZGV4ID0gZC0+aW5kZXg7IGluZGV4IDwgZC0+aW5kZXgg KyBkLT5jb3VudDsgaW5kZXgrKykgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZiID0gdmIyX2dldF9i dWZmZXIocSwgaW5kZXgpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghdmIpIHsKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRwcmludGsocSwgMSwgImNhbid0IGZpbmQgdGhlIHJlcXVlc3Rl ZCBidWZmZXJcbiIpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3I7Cj4+PiArwqDCoMKgwqDCoMKg wqAgfQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2Yi0+c3RhdGUgIT0gVkIyX0JVRl9TVEFURV9E RVFVRVVFRCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHByaW50ayhxLCAxLCAiY2Fu J3QgZGVsZXRlIG5vbiBkZXF1ZXVlZCBidWZmZXIgaW5kZXggJWRcbiIsIHZiLT5pbmRleCk7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ290byBlcnJvcjsKPj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+IFRoZXNlIGNo ZWNrcyBoYXZlIHRvIHRha2UgcGxhY2UgZmlyc3QsIHRoZW4sIGlmIGFsbCBpcyBPSywgeW91IGNh bGwgdmIyX2NvcmVfZGVsZXRlX2J1ZnMuCj4+Cj4+IEFjdHVhbGx5LCB0aGlua2luZyB0aGlzIG92 ZXIsIEkgd291bGQgbW92ZSBhbGwgdGhlc2UgY2hlY2tzIHRvIHZiMl9jb3JlX2RlbGV0ZV9idWZz Lgo+Pgo+PiBJdCBjYW4gYWxsIGJlIHB1dCB1bmRlciB0aGUgbW1hcF9sb2NrIG11dGV4IHRvIGVu c3VyZSBub2JvZHkgaXMgbWVzc2luZyBhcm91bmQKPj4gd2l0aCB0aGUgcXVldWUgd2hpbGUgdGhp cyB0YWtlcyBwbGFjZS4KPj4KPj4gTm90ZSB0aGF0IHdoZW4gdmIyX2NvcmVfcmVxYnVmcygpIGlz IGNhbGxlZCB3aXRoIGNvdW50PTAsIHRoZW4gaWYgaXQgc2VlcyB0aGF0Cj4+IGEgYnVmZmVyIGlz IHN0aWxsIGluIHVzZSAobW1hcGVkKSwgaXQgd2lsbCBsb2cgYSBkZWJ1ZyBtZXNzYWdlIHRoYXQg dGhlIGJ1ZmZlcnMKPj4gYXJlIG9ycGhhbmVkLiBXZSBzaG91bGQga2VlcCB0aGF0LCBJIGJlbGll dmUuCj4+Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gdmIyX2NvcmVfZGVsZXRlX2J1 ZihxLCB2Yik7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArZXJyb3I6Cj4+PiArwqDC oMKgIGQtPmluZGV4ID0gaW5kZXg7Cj4+IEkgd291bGRuJ3QgZG8gdGhpcy4gSSBkb24ndCB0aGlu ayB0aGlzIGlzIHVzZWZ1bC4KPj4KPj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiAr RVhQT1JUX1NZTUJPTF9HUEwodmIyX2RlbGV0ZV9idWZzKTsKPj4+ICsKPj4+IMKgIGludCB2YjJf Y3JlYXRlX2J1ZnMoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IHY0bDJfY3JlYXRlX2J1ZmZl cnMgKmNyZWF0ZSkKPj4+IMKgIHsKPj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgcmVxdWVzdGVkX3Bs YW5lcyA9IDE7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1k ZXYuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItZGV2LmMKPj4+IGluZGV4IGY4MTI3 OTQ5MjY4Mi4uMjE1NjU0ZmQ2NTgxIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1kZXYuYwo+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1k ZXYuYwo+Pj4gQEAgLTcyMCw2ICs3MjAsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVfdmFsaWRf aW9jdGxzKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg U0VUX1ZBTElEX0lPQ1RMKG9wcywgVklESU9DX1BSRVBBUkVfQlVGLCB2aWRpb2NfcHJlcGFyZV9i dWYpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIFNFVF9WQUxJRF9JT0NUTChvcHMsIFZJRElPQ19T VFJFQU1PTiwgdmlkaW9jX3N0cmVhbW9uKTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBTRVRfVkFM SURfSU9DVEwob3BzLCBWSURJT0NfU1RSRUFNT0ZGLCB2aWRpb2Nfc3RyZWFtb2ZmKTsKPj4+ICvC oMKgwqDCoMKgwqDCoCBTRVRfVkFMSURfSU9DVEwob3BzLCBWSURJT0NfREVMRVRFX0JVRlMsIHZp ZGlvY19kZWxldGVfYnVmcyk7Cj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIMKgwqDCoMKgwqAgaWYg KGlzX3ZpZCB8fCBpc192YmkgfHwgaXNfbWV0YSkgewo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvdjRsMi1jb3JlL3Y0bDItaW9jdGwuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0 bDItaW9jdGwuYwo+Pj4gaW5kZXggZjRkOWQ2Mjc5MDk0Li5hYWMzYTBlYTAxMjYgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMKPj4+ICsrKyBiL2Ry aXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItaW9jdGwuYwo+Pj4gQEAgLTQ4OSw2ICs0ODksMTMg QEAgc3RhdGljIHZvaWQgdjRsX3ByaW50X2NyZWF0ZV9idWZmZXJzKGNvbnN0IHZvaWQgKmFyZywg Ym9vbCB3cml0ZV9vbmx5KQo+Pj4gwqDCoMKgwqDCoCB2NGxfcHJpbnRfZm9ybWF0KCZwLT5mb3Jt YXQsIHdyaXRlX29ubHkpOwo+Pj4gwqAgfQo+Pj4gwqAgK3N0YXRpYyB2b2lkIHY0bF9wcmludF9k ZWxldGVfYnVmZmVycyhjb25zdCB2b2lkICphcmcsIGJvb2wgd3JpdGVfb25seSkKPj4+ICt7Cj4+ PiArwqDCoMKgIGNvbnN0IHN0cnVjdCB2NGwyX2RlbGV0ZV9idWZmZXJzICpwID0gYXJnOwo+Pj4g Kwo+Pj4gK8KgwqDCoCBwcl9jb250KCJpbmRleD0lZCwgY291bnQ9JWRcbiIsIHAtPmluZGV4LCBw LT5jb3VudCk7Cj4+IFVzZSAldSBzaW5jZSBib3RoIGFyZ3MgYXJlIHVuc2lnbmVkLgo+Pgo+Pj4g K30KPj4+ICsKPj4+IMKgIHN0YXRpYyB2b2lkIHY0bF9wcmludF9zdHJlYW1wYXJtKGNvbnN0IHZv aWQgKmFyZywgYm9vbCB3cml0ZV9vbmx5KQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwID0gYXJnOwo+Pj4gQEAgLTIxNjAsNiArMjE2NywxNSBA QCBzdGF0aWMgaW50IHY0bF9wcmVwYXJlX2J1Zihjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMg Km9wcywKPj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldCA/IHJldCA6IG9wcy0+dmlkaW9jX3ByZXBh cmVfYnVmKGZpbGUsIGZoLCBiKTsKPj4+IMKgIH0KPj4+IMKgICtzdGF0aWMgaW50IHY0bF9kZWxl dGVfYnVmcyhjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgKm9wcywKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgdm9pZCAqYXJn KQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3RydWN0IHY0bDJfZGVsZXRlX2J1ZmZlcnMgKmRlbGV0ZSA9 IGFyZzsKPj4+ICvCoMKgwqAgaW50IHJldCA9IGNoZWNrX2ZtdChmaWxlLCBkZWxldGUtPnR5cGUp Owo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gcmV0ID8gcmV0IDogb3BzLT52aWRpb2NfZGVsZXRl X2J1ZnMoZmlsZSwgZmgsIGRlbGV0ZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gwqAgc3RhdGljIGludCB2 NGxfZ19wYXJtKGNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcyAqb3BzLAo+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHZv aWQgKmFyZykKPj4+IMKgIHsKPj4+IEBAIC0yOTA5LDYgKzI5MjUsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHY0bDJfaW9jdGxfaW5mbyB2NGwyX2lvY3Rsc1tdID0gewo+Pj4gwqDCoMKgwqDCoCBJ T0NUTF9JTkZPKFZJRElPQ19FTlVNX0ZSRVFfQkFORFMsIHY0bF9lbnVtX2ZyZXFfYmFuZHMsIHY0 bF9wcmludF9mcmVxX2JhbmQsIDApLAo+Pj4gwqDCoMKgwqDCoCBJT0NUTF9JTkZPKFZJRElPQ19E QkdfR19DSElQX0lORk8sIHY0bF9kYmdfZ19jaGlwX2luZm8sIHY0bF9wcmludF9kYmdfY2hpcF9p bmZvLCBJTkZPX0ZMX0NMRUFSKHY0bDJfZGJnX2NoaXBfaW5mbywgbWF0Y2gpKSwKPj4+IMKgwqDC oMKgwqAgSU9DVExfSU5GTyhWSURJT0NfUVVFUllfRVhUX0NUUkwsIHY0bF9xdWVyeV9leHRfY3Ry bCwgdjRsX3ByaW50X3F1ZXJ5X2V4dF9jdHJsLCBJTkZPX0ZMX0NUUkwgfCBJTkZPX0ZMX0NMRUFS KHY0bDJfcXVlcnlfZXh0X2N0cmwsIGlkKSksCj4+PiArwqDCoMKgIElPQ1RMX0lORk8oVklESU9D X0RFTEVURV9CVUZTLCB2NGxfZGVsZXRlX2J1ZnMsIHY0bF9wcmludF9kZWxldGVfYnVmZmVycywg SU5GT19GTF9QUklPIHwgSU5GT19GTF9RVUVVRSB8IElORk9fRkxfQ0xFQVIodjRsMl9kZWxldGVf YnVmZmVycywgdHlwZSkpLAo+Pj4gwqAgfTsKPj4+IMKgICNkZWZpbmUgVjRMMl9JT0NUTFMgQVJS QVlfU0laRSh2NGwyX2lvY3RscykKPj4+IMKgIGRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3Y0 bDItaW9jdGwuaCBiL2luY2x1ZGUvbWVkaWEvdjRsMi1pb2N0bC5oCj4+PiBpbmRleCBlZGI3MzNm MjE2MDQuLjU1YWZiZGU1NDIxMSAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1p b2N0bC5oCj4+PiArKysgYi9pbmNsdWRlL21lZGlhL3Y0bDItaW9jdGwuaAo+Pj4gQEAgLTE2Myw2 ICsxNjMsOCBAQCBzdHJ1Y3QgdjRsMl9maDsKPj4+IMKgwqAgKsKgwqDCoCA6cmVmOmBWSURJT0Nf Q1JFQVRFX0JVRlMgPHZpZGlvY19jcmVhdGVfYnVmcz5gIGlvY3RsCj4+PiDCoMKgICogQHZpZGlv Y19wcmVwYXJlX2J1ZjogcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzCj4+ PiDCoMKgICrCoMKgwqAgOnJlZjpgVklESU9DX1BSRVBBUkVfQlVGIDx2aWRpb2NfcHJlcGFyZV9i dWY+YCBpb2N0bAo+Pj4gKyAqIEB2aWRpb2NfZGVsZXRlX2J1ZnM6IHBvaW50ZXIgdG8gdGhlIGZ1 bmN0aW9uIHRoYXQgaW1wbGVtZW50cwo+Pj4gKyAqwqDCoMKgIDpyZWY6YFZJRElPQ19ERUxFVEVf QlVGUyA8dmlkaW9jX2RlbGV0ZV9idWZzPmAgaW9jdGwKPj4+IMKgwqAgKiBAdmlkaW9jX292ZXJs YXk6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cwo+Pj4gwqDCoCAqwqDC oMKgIDpyZWY6YFZJRElPQ19PVkVSTEFZIDx2aWRpb2Nfb3ZlcmxheT5gIGlvY3RsCj4+PiDCoMKg ICogQHZpZGlvY19nX2ZidWY6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50 cwo+Pj4gQEAgLTQyMiw2ICs0MjQsOCBAQCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgewo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfY3JlYXRlX2J1 ZmZlcnMgKmIpOwo+Pj4gwqDCoMKgwqDCoCBpbnQgKCp2aWRpb2NfcHJlcGFyZV9idWYpKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCB2NGwyX2J1ZmZlciAqYik7Cj4+PiArwqDCoMKgIGludCAoKnZpZGlv Y19kZWxldGVfYnVmcykoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfZGVsZXRlX2J1ZmZlcnMgKmQp Owo+Pj4gwqAgwqDCoMKgwqDCoCBpbnQgKCp2aWRpb2Nfb3ZlcmxheSkoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLCB1bnNpZ25lZCBpbnQgaSk7Cj4+PiDCoMKgwqDCoMKgIGludCAoKnZpZGlv Y19nX2ZidWYpKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKPj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL21lZGlhL3ZpZGVvYnVmMi1jb3JlLmggYi9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi1j b3JlLmgKPj4+IGluZGV4IDk3MTUzYzY5NTgzZi4uZTJjNWZmMzFlZmQwIDEwMDY0NAo+Pj4gLS0t IGEvaW5jbHVkZS9tZWRpYS92aWRlb2J1ZjItY29yZS5oCj4+PiArKysgYi9pbmNsdWRlL21lZGlh L3ZpZGVvYnVmMi1jb3JlLmgKPj4+IEBAIC04NDMsNiArODQzLDE1IEBAIGludCB2YjJfY29yZV9j cmVhdGVfYnVmcyhzdHJ1Y3QgdmIyX3F1ZXVlICpxLCBlbnVtIHZiMl9tZW1vcnkgbWVtb3J5LAo+ Pj4gwqDCoCAqLwo+Pj4gwqAgaW50IHZiMl9jb3JlX3ByZXBhcmVfYnVmKHN0cnVjdCB2YjJfcXVl dWUgKnEsIHN0cnVjdCB2YjJfYnVmZmVyICp2Yiwgdm9pZCAqcGIpOwo+Pj4gwqAgKy8qKgo+Pj4g KyAqIHZiMl9jb3JlX2RlbGV0ZV9idWYoKSAtCj4+PiArICogQHE6IHBvaW50ZXIgdG8gJnN0cnVj dCB2YjJfcXVldWUgd2l0aCB2aWRlb2J1ZjIgcXVldWUuCj4+PiArICogQHZiOsKgwqDCoMKgwqDC oMKgIHBvaW50ZXIgdG8gc3RydWN0ICZ2YjJfYnVmZmVyLgo+Pj4gKyAqCj4+PiArICrCoCBSZXR1 cm46IHJldHVybnMgemVybyBvbiBzdWNjZXNzOyBhbiBlcnJvciBjb2RlIG90aGVyd2lzZS4KPj4+ ICsgKi8KPj4+ICtpbnQgdmIyX2NvcmVfZGVsZXRlX2J1ZihzdHJ1Y3QgdmIyX3F1ZXVlICpxLCBz dHJ1Y3QgdmIyX2J1ZmZlciAqdmIpOwo+Pj4gKwo+Pj4gwqAgLyoqCj4+PiDCoMKgICogdmIyX2Nv cmVfcWJ1ZigpIC0gUXVldWUgYSBidWZmZXIgZnJvbSB1c2Vyc3BhY2UKPj4+IMKgwqAgKgo+Pj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIuaCBiL2luY2x1ZGUvbWVk aWEvdmlkZW9idWYyLXY0bDIuaAo+Pj4gaW5kZXggNWE4NDU4ODc4NTBiLi4yZWY2OGZkZjM4OGYg MTAwNjQ0Cj4+PiAtLS0gYS9pbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi12NGwyLmgKPj4+ICsrKyBi L2luY2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIuaAo+Pj4gQEAgLTExOCw2ICsxMTgsMTcgQEAg aW50IHZiMl9jcmVhdGVfYnVmcyhzdHJ1Y3QgdmIyX3F1ZXVlICpxLCBzdHJ1Y3QgdjRsMl9jcmVh dGVfYnVmZmVycyAqY3JlYXRlKTsKPj4+IMKgwqAgKi8KPj4+IMKgIGludCB2YjJfcHJlcGFyZV9i dWYoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2NGwyX2J1ZmZlciAqYik7Cj4+PiArLyoq Cj4+PiArICogdmIyX2RlbGV0ZV9idWZzKCkgLSBEZWxldGUgYnVmZmVycyBmcm9tIHRoZSBxdWV1 ZQo+Pj4gKyAqCj4+PiArICogQHE6wqDCoMKgwqDCoMKgwqAgcG9pbnRlciB0byAmc3RydWN0IHZi Ml9xdWV1ZSB3aXRoIHZpZGVvYnVmMiBxdWV1ZS4KPj4+ICsgKiBAZDrCoMKgwqDCoMKgwqDCoCBk ZWxldGUgcGFyYW1ldGVyLCBwYXNzZWQgZnJvbSB1c2Vyc3BhY2UgdG8KPj4+ICsgKsKgwqDCoMKg wqDCoMKgICZ2NGwyX2lvY3RsX29wcy0+dmlkaW9jX2RlbGV0ZV9idWZzIGhhbmRsZXIgaW4gZHJp dmVyCj4+PiArICoKPj4+ICsgKiBUaGUgcmV0dXJuIHZhbHVlcyBmcm9tIHRoaXMgZnVuY3Rpb24g YXJlIGludGVuZGVkIHRvIGJlIGRpcmVjdGx5IHJldHVybmVkCj4+PiArICogZnJvbSAmdjRsMl9p b2N0bF9vcHMtPnZpZGlvY19kZWxldGVfYnVmcyBoYW5kbGVyIGluIGRyaXZlci4KPj4+ICsgKi8K Pj4+ICtpbnQgdmIyX2RlbGV0ZV9idWZzKHN0cnVjdCB2YjJfcXVldWUgKnEsIHN0cnVjdCB2NGwy X2RlbGV0ZV9idWZmZXJzICpkKTsKPj4gSSdtIG1pc3NpbmcgdGhlIHZiMl9pb2N0bF9kZWxldGVf YnVmcyBmdW5jdGlvbiB3aXRoIGEgY2FsbCB0byB2YjJfcXVldWVfaXNfYnVzeSgpLgo+Pgo+Pj4g wqAgwqAgLyoqCj4+PiDCoMKgICogdmIyX3FidWYoKSAtIFF1ZXVlIGEgYnVmZmVyIGZyb20gdXNl cnNwYWNlCj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oIGIv aW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oCj4+PiBpbmRleCA3ODI2MGU1ZDk5ODUuLjlj YzdmNTcwZDk5NSAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIu aAo+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oCj4+PiBAQCAtMjYxNiw2 ICsyNjE2LDIwIEBAIHN0cnVjdCB2NGwyX2NyZWF0ZV9idWZmZXJzIHsKPj4+IMKgwqDCoMKgwqAg X191MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2VydmVkWzZdOwo+Pj4gwqAgfTsKPj4+IMKg ICsvKioKPj4+ICsgKiBzdHJ1Y3QgdjRsMl9kZWxldGVfYnVmZmVycyAtIFZJRElPQ19ERUxFVEVf QlVGUyBhcmd1bWVudAo+Pj4gKyAqIEBpbmRleDrCoMKgwqAgdGhlIGZpcnN0IGJ1ZmZlciB0byBi ZSBkZWxldGVkCj4+PiArICogQGNvdW50OsKgwqDCoCBudW1iZXIgb2YgYnVmZmVycyB0byBkZWxl dGUKPj4+ICsgKiBAdHlwZTrCoMKgwqAgZW51bSB2NGwyX2J1Zl90eXBlCj4+PiArICogQHJlc2Vy dmVkOsKgwqDCoCBmdXR1cmUgZXh0ZW5zaW9ucwo+Pj4gKyAqLwo+Pj4gK3N0cnVjdCB2NGwyX2Rl bGV0ZV9idWZmZXJzIHsKPj4+ICvCoMKgwqAgX191MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlu ZGV4Owo+Pj4gK8KgwqDCoCBfX3UzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY291bnQ7Cj4+PiAr wqDCoMKgIF9fdTMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0eXBlOwo+Pj4gK8KgwqDCoCBfX3Uz MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzZXJ2ZWRbMTNdOwo+Pj4gK307Cj4+PiArCj4+PiDC oCAvKgo+Pj4gwqDCoCAqwqDCoMKgIEkgTyBDIFQgTMKgwqAgQyBPIEQgRSBTwqDCoCBGIE8gUsKg wqAgViBJIEQgRSBPwqDCoCBEIEUgViBJIEMgRSBTCj4+PiDCoMKgICoKPj4+IEBAIC0yNzE1LDYg KzI3MjksOCBAQCBzdHJ1Y3QgdjRsMl9jcmVhdGVfYnVmZmVycyB7Cj4+PiDCoCAjZGVmaW5lIFZJ RElPQ19EQkdfR19DSElQX0lORk/CoCBfSU9XUignVicsIDEwMiwgc3RydWN0IHY0bDJfZGJnX2No aXBfaW5mbykKPj4+IMKgIMKgICNkZWZpbmUgVklESU9DX1FVRVJZX0VYVF9DVFJMwqDCoMKgIF9J T1dSKCdWJywgMTAzLCBzdHJ1Y3QgdjRsMl9xdWVyeV9leHRfY3RybCkKPj4+ICsjZGVmaW5lIFZJ RElPQ19ERUxFVEVfQlVGU8KgwqDCoCBfSU9XUignVicsIDEwNCwgc3RydWN0IHY0bDJfZGVsZXRl X2J1ZmZlcnMpCj4+PiArCj4+PiDCoCDCoCAvKiBSZW1pbmRlcjogd2hlbiBhZGRpbmcgbmV3IGlv Y3RscyBwbGVhc2UgYWRkIHN1cHBvcnQgZm9yIHRoZW0gdG8KPj4+IMKgwqDCoMKgIGRyaXZlcnMv bWVkaWEvdjRsMi1jb3JlL3Y0bDItY29tcGF0LWlvY3RsMzIuYyBhcyB3ZWxsISAqLwo+PiBZb3Ug bmVlZCBtdWNoIG1vcmUgZXh0ZW5zaXZlIGNvbXBsaWFuY2UgY2hlY2tzIGZvciB0aGlzLCBlc3Au IG1peGluZwo+PiBjcmVhdGVfYnVmcyBhbmQgZGVsZXRlX2J1ZnMuIEFuZCB0ZXN0IGl0IHdpdGgg dGhlIHRlc3QtbWVkaWEgdGVzdCBzY3JpcHQuCj4+Cj4+IFJlZ2FyZHMsCj4+Cj4+IMKgwqDCoMKg SGFucwo+PgoKUmVnYXJkcywKCglIYW5zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==