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 6524EC4332F for ; Mon, 19 Dec 2022 08:50:32 +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=sEfD8WQyEa+MIfRmTKey/vQ24meUHAAS5dOIKAaTj80=; b=ooL8y6RHvOYsgO zD78dS2ER34HETxc1tyHIIWtXZE3AF2pnDJque+NZf512h9+9j9qO6t6QfdjF+4uPtlOPvihHbYCX 51QOu4O7MSvnNZ4v7l/uEAqVF0TzcyZKoLqqP3Ay5pI20jMSe5USncY+Fy0WeCrjO/NbnvQTjuAwJ 1ELi3W5Yf3UqpdLoQ5CC3LY/YqSE1KuPfKZWaGT8PSErk33tCylJPs3JHOl+hzYxOiSK3MgI1KJpv cp+tvUOySVmEA5CcQmo8MzNufoZgH7MqAVBju8R+bHskl1wihmOHgxNzjsj92r+RZ5hZU4PAwr3Ji 2PVUdl29KwUmwkOBM15A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p7Bpj-00AnBF-MI; Mon, 19 Dec 2022 08:49:15 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p7Bpd-00An4h-83; Mon, 19 Dec 2022 08:49:12 +0000 Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 2502E6601615; Mon, 19 Dec 2022 08:49:04 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1671439744; bh=fHKd6BRq6uZcW6ywAPxNchjREe1bE9kQxwS8OOY5srY=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=QRNjaW33It3+GiXXqG0hTTcsLCCNLewpJwxPyxsh2qm19voa8A69EXcIhl6bLqSSq kJVyeL6KVN7sghfpKuEWKWqUkSsAEOcIcnWypQEyjE4gKTd1YWSi7t8cXBgscv8aSj WYnQgE5OcNKowNzAsuYl9tCDyPQYpwcRZrxTAkvDiE3TiwiRabjeQLinNkQp0EBSO4 7fjS31ffJp1FAfrGtzMnn/Fdty62LfOErsZ9rGbzk8T8zOdVnwWiNHsdthCROXbWbj ykxu+HPGiV7wGUMtBt3Y3g1YuWubLmzTeesg7H66pQFCf5HzaKn6cNcpF9vtyT+lIV ZmALD2wmY+CTw== Message-ID: <0d155803-0861-ee56-fea1-abcfa77acd0a@collabora.com> Date: Mon, 19 Dec 2022 09:49:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v3] soc: mediatek: Introduce mediatek-regulator-coupler driver To: Matthias Brugger Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, wenst@chromium.org, alyssa.rosenzweig@collabora.com, nfraprado@collabora.com, dmitry.osipenko@collabora.com References: <20221006115816.66853-1-angelogioacchino.delregno@collabora.com> <732e4a1d-8008-072d-cedb-c6859cbfdf98@collabora.com> <19d04ffd-a79d-06f6-cb0e-fe56bc18615f@gmail.com> Content-Language: en-US From: AngeloGioacchino Del Regno In-Reply-To: <19d04ffd-a79d-06f6-cb0e-fe56bc18615f@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221219_004909_676122_89D54BD8 X-CRM114-Status: GOOD ( 43.34 ) 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 SWwgMTYvMTIvMjIgMTY6MjYsIE1hdHRoaWFzIEJydWdnZXIgaGEgc2NyaXR0bzoKPiBIaSBBbmdl bG8sCj4gCj4gT24gMTYvMTIvMjAyMiAxNDoxNSwgQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8g d3JvdGU6Cj4+IElsIDIxLzExLzIyIDEzOjAxLCBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyBo YSBzY3JpdHRvOgo+Pj4gSWwgMjEvMTEvMjIgMTI6NDQsIE1hdHRoaWFzIEJydWdnZXIgaGEgc2Ny aXR0bzoKPj4+Pgo+Pj4+Cj4+Pj4gT24gMDYvMTAvMjAyMiAxMzo1OCwgQW5nZWxvR2lvYWNjaGlu byBEZWwgUmVnbm8gd3JvdGU6Cj4+Pj4+IFRoaXMgZHJpdmVyIGN1cnJlbnRseSBkZWFscyB3aXRo IEdQVS1TUkFNIHJlZ3VsYXRvciBjb3VwbGluZywgZW5zdXJpbmcKPj4+Pj4gdGhhdCB0aGUgU1JB TSB2b2x0YWdlIGlzIGFsd2F5cyBiZXR3ZWVuIGEgc3BlY2lmaWMgcmFuZ2Ugb2YgZGlzdGFuY2Ug dG8KPj4+Pj4gdGhlIEdQVSB2b2x0YWdlLCBkZXBlbmRpbmcgb24gdGhlIFNvQywgbmVjZXNzYXJ5 IGluIG9yZGVyIHRvIGFjaGlldmUKPj4+Pj4gc3lzdGVtIHN0YWJpbGl0eSBhY3Jvc3MgdGhlIGZ1 bGwgcmFuZ2Ugb2Ygc3VwcG9ydGVkIEdQVSBmcmVxdWVuY2llcy4KPj4+Pj4KPj4+Pj4gU2lnbmVk LW9mZi1ieTogQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8gCj4+Pj4+IDxhbmdlbG9naW9hY2No aW5vLmRlbHJlZ25vQGNvbGxhYm9yYS5jb20+Cj4+Pj4+IFJldmlld2VkLWJ5OiBEbWl0cnkgT3Np cGVua28gPGRtaXRyeS5vc2lwZW5rb0Bjb2xsYWJvcmEuY29tPgo+Pj4+PiAtLS0KPj4+Pj4KPj4+ Pj4gVGhpcyBkcml2ZXIgd2FzIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgZm9yIG1vcmUgdGhhbiAzIG1v bnRocy4KPj4+Pj4gR1BVIERWRlMgd29ya3MgY29ycmVjdGx5IHdpdGggbm8gc3RhYmlsaXR5IGlz c3Vlcy4KPj4+Pj4KPj4+Pj4gQ2hhbmdlcyBpbiBSRVNFTkQsdjM6Cj4+Pj4+IMKgIFJlYmFzZWQg b3ZlciBuZXh0LTIwMjIxMDA1Cj4+Pj4+Cj4+Pj4+IENoYW5nZXMgaW4gdjM6Cj4+Pj4+IMKgIC0g QWRkZWQgYnJhY2VzIHRvIGVsc2UtaWYgYnJhbmNoCj4+Pj4+Cj4+Pj4+IENoYW5nZXMgaW4gdjI6 Cj4+Pj4+IMKgIC0gQWRkZWQgY2hlY2sgZm9yIG5fY291cGxlZAo+Pj4+PiDCoCAtIEFkZGVkIGNo ZWNrIGZvciB2Z3B1IHRvIGVuZm9yY2UgYXR0YWNoaW5nIHRvIHZncHU8LT5zcmFtIGNvdXBsaW5n IG9ubHkKPj4+Pj4KPj4+Pj4gQ29udGV4dDoKPj4+Pj4gVGhpcyBkcml2ZXIgaXMgdGhlIGxhc3Qg b2YgdGhlIHBpZWNlcyBvZiBhIGJpZ2dlciBwdXp6bGUsIGFpbWluZyB0byBmaW5hbGx5Cj4+Pj4+ IGVuYWJsZSBEeW5hbWljIFZvbHRhZ2UvRnJlcXVlbmN5IFNjYWxpbmcgZm9yIE1hbGkgR1BVcyBm b3VuZCBvbiBNZWRpYVRlawo+Pj4+PiBTb0NzIG9uIHRoZSBmdWxseSBvcGVuIHNvdXJjZSBncmFw aGljcyBzdGFjayAoUGFuZnJvc3QgZHJpdmVyKS4KPj4+Pj4KPj4+Pj4gTm8gZGV2aWNldHJlZSBi aW5kaW5ncyBhcmUgcHJvdmlkZWQgYmVjYXVzZSB0aGlzIGRvZXMgbm90IHJlcXVpcmUgYW55Cj4+ Pj4+IGRyaXZlci1zcGVjaWZpYyBiaW5kaW5nIGF0IGFsbC4KPj4+Pj4KPj4+Pj4gTGFzdCBidXQg bm90IGxlYXN0OiBpdCB3YXMgY2hvc2VuIHRvIGhhdmUgdGhpcyBkcml2ZXIgZW5hYmxlZCBmb3IK Pj4+Pj4gKCBBUkNIX01FRElBVEVLICYmIFJFR1VMQVRPUiApIHdpdGhvdXQgcmVhbGx5IGdpdmlu ZyBhIGZyZWUgY29uZmlndXJhdGlvbgo+Pj4+PiBjaG9pY2UgYmVjYXVzZSwgb25jZSB0aGUgRFZG UyBtZWNoYW5pc20gd2lsbCBiZSBmdWxseSB3b3JraW5nLCB1c2luZyBvbmUKPj4+Pj4gb2YgdGhl IGxpc3RlZCBNZWRpYVRlayBTb0NzICp3aXRob3V0KiB0aGlzIGNvdXBsaW5nIG1lY2hhbmlzbSAq d2lsbCogbGVhZAo+Pj4+PiB0byB1bnN0YWJpbGl0aWVzIGFuZCBzeXN0ZW0gY3Jhc2hlcy4KPj4+ Pj4gRm9yIENPTVBJTEVfVEVTVCwgY2hvaWNlIGlzIGdpdmVuIGZvciBvYnZpb3VzIHJlYXNvbnMu Cj4+Pj4+Cj4+Pj4+IMKgIGRyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWfCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsKPj4+Pj4gwqAgZHJpdmVycy9zb2MvbWVkaWF0 ZWsvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+Pj4+ IMKgIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jIHwgMTU5ICsr KysrKysrKysrKysrKysrKysKPj4+Pj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9u cygrKQo+Pj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRr LXJlZ3VsYXRvci1jb3VwbGVyLmMKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29j L21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnCj4+Pj4+IGlu ZGV4IDQwZDBjYzYwMGNhZS4uMzBiNWFmYzBlNTFkIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJz L3NvYy9tZWRpYXRlay9LY29uZmlnCj4+Pj4+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL0tj b25maWcKPj4+Pj4gQEAgLTQ0LDYgKzQ0LDExIEBAIGNvbmZpZyBNVEtfUE1JQ19XUkFQCj4+Pj4+ IMKgwqDCoMKgwqDCoMKgIG9uIGRpZmZlcmVudCBNZWRpYVRlayBTb0NzLiBUaGUgUE1JQyB3cmFw cGVyIGlzIGEgcHJvcHJpZXRhcnkKPj4+Pj4gwqDCoMKgwqDCoMKgwqAgaGFyZHdhcmUgdG8gY29u bmVjdCB0aGUgUE1JQy4KPj4+Pj4gK2NvbmZpZyBNVEtfUkVHVUxBVE9SX0NPVVBMRVIKPj4+Pj4g K8KgwqDCoCBib29sICJNZWRpYVRlayBTb0MgUmVndWxhdG9yIENvdXBsZXIiIGlmIENPTVBJTEVf VEVTVAo+Pj4+PiArwqDCoMKgIGRlZmF1bHQgQVJDSF9NRURJQVRFSwo+Pj4+PiArwqDCoMKgIGRl cGVuZHMgb24gUkVHVUxBVE9SCj4+Pj4+ICsKPj4+Pj4gwqAgY29uZmlnIE1US19TQ1BTWVMKPj4+ Pj4gwqDCoMKgwqDCoCBib29sICJNZWRpYVRlayBTQ1BTWVMgU3VwcG9ydCIKPj4+Pj4gwqDCoMKg wqDCoCBkZWZhdWx0IEFSQ0hfTUVESUFURUsKPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29j L21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUKPj4+Pj4g aW5kZXggMGU5ZTcwM2M5MzFhLi44YzBkZGFjYmNkZTggMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZl cnMvc29jL21lZGlhdGVrL01ha2VmaWxlCj4+Pj4+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVr L01ha2VmaWxlCj4+Pj4+IEBAIC0zLDYgKzMsNyBAQCBvYmotJChDT05GSUdfTVRLX0NNRFEpICs9 IG10ay1jbWRxLWhlbHBlci5vCj4+Pj4+IMKgIG9iai0kKENPTkZJR19NVEtfREVWQVBDKSArPSBt dGstZGV2YXBjLm8KPj4+Pj4gwqAgb2JqLSQoQ09ORklHX01US19JTkZSQUNGRykgKz0gbXRrLWlu ZnJhY2ZnLm8KPj4+Pj4gwqAgb2JqLSQoQ09ORklHX01US19QTUlDX1dSQVApICs9IG10ay1wbWlj LXdyYXAubwo+Pj4+PiArb2JqLSQoQ09ORklHX01US19SRUdVTEFUT1JfQ09VUExFUikgKz0gbXRr LXJlZ3VsYXRvci1jb3VwbGVyLm8KPj4+Pj4gwqAgb2JqLSQoQ09ORklHX01US19TQ1BTWVMpICs9 IG10ay1zY3BzeXMubwo+Pj4+PiDCoCBvYmotJChDT05GSUdfTVRLX1NDUFNZU19QTV9ET01BSU5T KSArPSBtdGstcG0tZG9tYWlucy5vCj4+Pj4+IMKgIG9iai0kKENPTkZJR19NVEtfTU1TWVMpICs9 IG10ay1tbXN5cy5vCj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGst cmVndWxhdG9yLWNvdXBsZXIuYyAKPj4+Pj4gYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstcmVn dWxhdG9yLWNvdXBsZXIuYwo+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+PiBpbmRleCAw MDAwMDAwMDAwMDAuLmFkMmVkNDJhYTY5Nwo+Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4+ICsrKyBi L2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jCj4+Pj4+IEBAIC0w LDAgKzEsMTU5IEBACj4+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5Cj4+Pj4+ICsvKgo+Pj4+PiArICogVm9sdGFnZSByZWd1bGF0b3JzIGNvdXBsZXIgZm9yIE1l ZGlhVGVrIFNvQ3MKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQ29sbGFi b3JhLCBMdGQuCj4+Pj4+ICsgKiBBdXRob3I6IEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIDxh bmdlbG9naW9hY2NoaW5vLmRlbHJlZ25vQGNvbGxhYm9yYS5jb20+Cj4+Pj4+ICsgKi8KPj4+Pj4g Kwo+Pj4+PiArI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAiOiAiIGZtdAo+Pj4+ PiArCj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8 bGludXgvcmVndWxhdG9yL2NvdXBsZXIuaD4KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0 b3IvZHJpdmVyLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL21hY2hpbmUuaD4K Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9zdXNwZW5kLmg+Cj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUg dG9fbWVkaWF0ZWtfY291cGxlcih4KcKgwqDCoCBjb250YWluZXJfb2YoeCwgc3RydWN0IAo+Pj4+ PiBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciwgY291cGxlcikKPj4+Pj4gKwo+Pj4+PiArc3Ry dWN0IG1lZGlhdGVrX3JlZ3VsYXRvcl9jb3VwbGVyIHsKPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgcmVn dWxhdG9yX2NvdXBsZXIgY291cGxlcjsKPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgcmVndWxhdG9yX2Rl diAqdnNyYW1fcmRldjsKPj4+Pj4gK307Cj4+Pj4+ICsKPj4+Pj4gKy8qCj4+Pj4+ICsgKiBXZSBj dXJyZW50bHkgc3VwcG9ydCBvbmx5IGNvdXBsZXMgb2Ygbm90IG1vcmUgdGhhbiB0d28gdnJlZ3Mg YW5kCj4+Pj4+ICsgKiBtb2RpZnkgdGhlIHZzcmFtIHZvbHRhZ2Ugb25seSB3aGVuIGNoYW5naW5n IHZvbHRhZ2Ugb2YgdmdwdS4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGxp bWl0ZWQgdG8gdGhlIEdQVTwtPlNSQU0gdm9sdGFnZXMgcmVsYXRpb25zaGlwcy4KPj4+Pj4gKyAq Lwo+Pj4+PiArc3RhdGljIGludCBtZWRpYXRla19yZWd1bGF0b3JfYmFsYW5jZV92b2x0YWdlKHN0 cnVjdCByZWd1bGF0b3JfY291cGxlciAqY291cGxlciwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByZWd1bGF0b3JfZGV2ICpy ZGV2LAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3VzcGVuZF9zdGF0ZV90IHN0YXRlKQo+Pj4+PiArewo+Pj4+PiArwqDCoMKgIHN0cnVj dCBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciAqbXJjID0gdG9fbWVkaWF0ZWtfY291cGxlcihj b3VwbGVyKTsKPj4+Pj4gK8KgwqDCoCBpbnQgbWF4X3NwcmVhZCA9IHJkZXYtPmNvbnN0cmFpbnRz LT5tYXhfc3ByZWFkWzBdOwo+Pj4+PiArwqDCoMKgIGludCB2c3JhbV9taW5fdVYgPSBtcmMtPnZz cmFtX3JkZXYtPmNvbnN0cmFpbnRzLT5taW5fdVY7Cj4+Pj4+ICvCoMKgwqAgaW50IHZzcmFtX21h eF91ViA9IG1yYy0+dnNyYW1fcmRldi0+Y29uc3RyYWludHMtPm1heF91VjsKPj4+Pj4gK8KgwqDC oCBpbnQgdnNyYW1fdGFyZ2V0X21pbl91ViwgdnNyYW1fdGFyZ2V0X21heF91VjsKPj4+Pj4gK8Kg wqDCoCBpbnQgbWluX3VWID0gMDsKPj4+Pj4gK8KgwqDCoCBpbnQgbWF4X3VWID0gSU5UX01BWDsK Pj4+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgLyoKPj4+Pj4gK8Kg wqDCoMKgICogSWYgdGhlIHRhcmdldCBkZXZpY2UgaXMgb24sIHNldHRpbmcgdGhlIFNSQU0gdm9s dGFnZSBkaXJlY3RseQo+Pj4+PiArwqDCoMKgwqAgKiBpcyBub3Qgc3VwcG9ydGVkIGFzIGl0IHNj YWxlcyB0aHJvdWdoIGl0cyBjb3VwbGVkIHN1cHBseSB2b2x0YWdlLgo+Pj4+PiArwqDCoMKgwqAg Kgo+Pj4+PiArwqDCoMKgwqAgKiBBbiBleGNlcHRpb24gaXMgbWFkZSBpbiBjYXNlIHRoZSB1c2Vf Y291bnQgaXMgemVybzogdGhpcyBtZWFucwo+Pj4+PiArwqDCoMKgwqAgKiB0aGF0IHRoaXMgaXMg dGhlIGZpcnN0IHRpbWUgd2UgcG93ZXIgdXAgdGhlIFNSQU0gcmVndWxhdG9yLCB3aGljaAo+Pj4+ PiArwqDCoMKgwqAgKiBpbXBsaWVzIHRoYXQgdGhlIHRhcmdldCBkZXZpY2UgaGFzIHlldCB0byBw ZXJmb3JtIGluaXRpYWxpemF0aW9uCj4+Pj4+ICvCoMKgwqDCoCAqIGFuZCBzZXR0aW5nIGEgdm9s dGFnZSBhdCB0aGF0IHRpbWUgaXMgaGFybWxlc3MuCj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+PiAr wqDCoMKgIGlmIChyZGV2ID09IG1yYy0+dnNyYW1fcmRldikgewo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgaWYgKHJkZXYtPnVzZV9jb3VudCA9PSAwKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gcmVndWxhdG9yX2RvX2JhbGFuY2Vfdm9sdGFnZShyZGV2LCBzdGF0ZSwgdHJ1ZSk7 Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRVBFUk07Cj4+Pj4+ICvCoMKg wqAgfQo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgcmV0ID0gcmVndWxhdG9yX2NoZWNrX2NvbnN1bWVy cyhyZGV2LCAmbWluX3VWLCAmbWF4X3VWLCBzdGF0ZSk7Cj4+Pj4+ICvCoMKgwqAgaWYgKHJldCA8 IDApCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4+PiArCj4+Pj4+ICvCoMKg wqAgaWYgKG1pbl91ViA9PSAwKSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSByZWd1bGF0 b3JfZ2V0X3ZvbHRhZ2VfcmRldihyZGV2KTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQg PCAwKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgbWluX3VWID0gcmV0Owo+Pj4+PiArwqDCoMKgIH0KPj4+Pj4gKwo+Pj4+PiAr wqDCoMKgIHJldCA9IHJlZ3VsYXRvcl9jaGVja192b2x0YWdlKHJkZXYsICZtaW5fdVYsICZtYXhf dVYpOwo+Pj4+PiArwqDCoMKgIGlmIChyZXQgPCAwKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIC8qCj4+Pj4+ICvCoMKgwqDCoCAqIElmIHdl J3JlIGFza2VkIHRvIHNldCBhIHZvbHRhZ2UgbGVzcyB0aGFuIFZTUkFNIG1pbl91Viwgc2V0Cj4+ Pj4+ICvCoMKgwqDCoCAqIHRoZSBtaW5pbXVtIGFsbG93ZWQgdm9sdGFnZSBvbiBWU1JBTSwgYXMg aW4gdGhpcyBjYXNlIGl0IGlzCj4+Pj4+ICvCoMKgwqDCoCAqIHNhZmUgdG8gaWdub3JlIHRoZSBt YXhfc3ByZWFkIHBhcmFtZXRlci4KPj4+Pj4gK8KgwqDCoMKgICovCj4+Pj4+ICvCoMKgwqAgdnNy YW1fdGFyZ2V0X21pbl91ViA9IG1heCh2c3JhbV9taW5fdVYsIG1pbl91ViArIG1heF9zcHJlYWQp Owo+Pj4+PiArwqDCoMKgIHZzcmFtX3RhcmdldF9tYXhfdVYgPSBtaW4odnNyYW1fbWF4X3VWLCB2 c3JhbV90YXJnZXRfbWluX3VWICsgbWF4X3NwcmVhZCk7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCAv KiBNYWtlIHN1cmUgd2UncmUgbm90IG91dCBvZiByYW5nZSAqLwo+Pj4+PiArwqDCoMKgIHZzcmFt X3RhcmdldF9taW5fdVYgPSBtaW4odnNyYW1fdGFyZ2V0X21pbl91ViwgdnNyYW1fbWF4X3VWKTsK Pj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHByX2RlYnVnKCJTZXR0aW5nIHZvbHRhZ2UgJWQtJWR1ViBv biAlcyAobWludVYgJWQpXG4iLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCB2c3JhbV90YXJnZXRf bWluX3VWLCB2c3JhbV90YXJnZXRfbWF4X3VWLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCByZGV2 X2dldF9uYW1lKG1yYy0+dnNyYW1fcmRldiksIG1pbl91Vik7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDC oCByZXQgPSByZWd1bGF0b3Jfc2V0X3ZvbHRhZ2VfcmRldihtcmMtPnZzcmFtX3JkZXYsIHZzcmFt X3RhcmdldF9taW5fdVYsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHZzcmFtX3RhcmdldF9tYXhfdVYsIHN0YXRlKTsKPj4+Pj4gK8KgwqDCoCBpZiAocmV0 KQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKg IC8qIFRoZSBzcmFtIHZvbHRhZ2UgaXMgbm93IGJhbGFuY2VkOiB1cGRhdGUgdGhlIHRhcmdldCB2 cmVnIHZvbHRhZ2UgKi8KPj4+Pj4gK8KgwqDCoCByZXR1cm4gcmVndWxhdG9yX2RvX2JhbGFuY2Vf dm9sdGFnZShyZGV2LCBzdGF0ZSwgdHJ1ZSk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRp YyBpbnQgbWVkaWF0ZWtfcmVndWxhdG9yX2F0dGFjaChzdHJ1Y3QgcmVndWxhdG9yX2NvdXBsZXIg KmNvdXBsZXIsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KQo+Pj4+PiArewo+Pj4+PiArwqDCoMKgIHN0cnVj dCBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciAqbXJjID0gdG9fbWVkaWF0ZWtfY291cGxlcihj b3VwbGVyKTsKPj4+Pj4gK8KgwqDCoCBjb25zdCBjaGFyICpyZGV2X25hbWUgPSByZGV2X2dldF9u YW1lKHJkZXYpOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgLyoKPj4+Pj4gK8KgwqDCoMKgICogSWYg d2UncmUgZ2V0dGluZyBhIGNvdXBsaW5nIG9mIG1vcmUgdGhhbiB0d28gcmVndWxhdG9ycyBoZXJl IGFuZAo+Pj4+PiArwqDCoMKgwqAgKiB0aGlzIG1lYW5zIHRoYXQgdGhpcyBpcyBzdXJlbHkgbm90 IGEgR1BVPC0+U1JBTSBjb3VwbGU6IGluIHRoYXQKPj4+Pj4gK8KgwqDCoMKgICogY2FzZSwgd2Ug bWF5IHdhbnQgdG8gdXNlIGFub3RoZXIgY291cGxlciBpbXBsZW1lbnRhdGlvbiwgaWYgYW55LAo+ Pj4+PiArwqDCoMKgwqAgKiBvciB0aGUgZ2VuZXJpYyBvbmU6IHRoZSByZWd1bGF0b3IgY29yZSB3 aWxsIGtlZXAgd2Fsa2luZyB0aHJvdWdoCj4+Pj4+ICvCoMKgwqDCoCAqIHRoZSBsaXN0IG9mIGNv dXBsZXJzIHdoZW4gYW55IC5hdHRhY2hfcmVndWxhdG9yKCkgY2IgcmV0dXJucyAxLgo+Pj4+PiAr wqDCoMKgwqAgKi8KPj4+Pj4gK8KgwqDCoCBpZiAocmRldi0+Y291cGxpbmdfZGVzYy5uX2NvdXBs ZWQgPiAyKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDE7Cj4+Pj4+ICsKPj4+Pj4gK8Kg wqDCoCBpZiAoc3Ryc3RyKHJkZXZfbmFtZSwgInNyYW0iKSkgewo+Pj4+Cj4+Pj4gTXkgdW5kZXJz dGFuZGluZyBpcywgdGhhdCB3ZSBoYXZlIHRvIGhhdmUgZWl0aGVyIGEgRFQgbm9kZSB3aXRoIHJl Z3VsYXRvci1uYW1lIAo+Pj4+ID0gInNyYW0iIHByb3BlcnR5IHRvIHBvbGx1dGUgcmRldi0+Y29u c3RyYWludHMtPm5hbWUgb3Igc29tZSAKPj4+PiByZWd1bGF0b3JfZGVzYy0+bmFtZSBwb3B1bGF0 ZWQgaW4gdGhlIGRyaXZlcnMvcmVndWxhdG9yL210Ki5jCj4+Pj4KPj4+Cj4+PiBObywgaXQncyBu b3QgdHJ5aW5nIHRvIGZpbmQgYSByZWd1bGF0b3IgbmFtZWQgInNyYW0iLCBidXQgYW55IHJlZ3Vs YXRvciB0aGF0Cj4+PiAqY29udGFpbnMqIHRoZSAic3JhbSIgc3RyaW5nIGluIGl0cyBuYW1lLCBi dXQgY2hlY2tzIG9ubHkgcmVndWxhdG9ycyB0aGF0IGFyZQo+Pj4gY291cGxlZCB0byBvdGhlcnMu IFRoaXMgaXMgdGhlIHNhbWUgZm9yIHRoZSAiVmdwdSIgLyAidmdwdSIuCj4+Pgo+Pj4gRXhhbXBs ZToKPj4+Cj4+PiBSZWd1bGF0b3IgQSwgY291cGxlZCB0byBSZWd1bGF0b3IgQi4KPj4+Cj4+PiBS ZWd1bGF0b3IgQSBuYW1lID0gIlZncHUiIG9yICJ2Z3B1Iiwgb3IgKnZncHUqLCBvciAqVmdwdSoK Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChuYW1lIG11c3QgY29u dGFpbiBlaXRoZXIgVmdwdSBvciB2Z3B1KQo+Pj4KPj4+IFJlZ3VsYXRvciBCIG5hbWUgPSAidnNy YW0iIG9yICJzcmFtX2dwdSIgb3IgKnNyYW0qCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAobmFtZSBtdXN0IGNvbnRhaW4gInNyYW0iKS4KPj4+Cj4+PiBtcmMtPnZz cmFtX3JkZXYgPSByZGV2Cj4+Pgo+Pj4gcmRldiA9PSBvdXIgUmVndWxhdG9yIEIuCj4+Pgo+Pj4g V2UgaGVuY2UgcmV0dXJuIDAgdG8gdGhlIGNvdXBsaW5nIEFQSTogdGhpcyB3aWxsIHByb2R1Y2Ug dGhlIGVmZmVjdCBvZiBtYWtpbmcKPj4+IGl0IHVzZSB0aGlzIGRyaXZlcidzIC5iYWxhbmNlX3Zv bHRhZ2UoKSBjYWxsYmFjayBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZQo+Pj4gb24gdmdwdTwt PnZzcmFtLgo+Pj4KPj4+Cj4+Pj4gSSB3YXNuJ3QgYWJsZSB0byBmaW5kIGVpdGhlciBvZiB0aGlz LCBzbyBJIHdvbmRlciBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLiAKPj4+PiBQbGVhc2Ug cHJvdmlkZSBwb2ludGVycyB0byBhIHdvcmtpbmcgYW5kIGNvbXBsZXRlIGltcGxlbWVudGF0aW9u IG9mIHRoaXMsIHNvIAo+Pj4+IHRoYXQgSSdtIGFibGUgdG8ganVkZ2Ugd2hhdCBpcyBnb2luZyBv biBhbmQgaWYgdGhlIGFwcHJvYWNoIGlzIHRoZSBjb3JyZWN0IG9uZS4KPj4+Pgo+Pj4+IEkgdHJp ZWQgdG8gZmlndXJlIG91dCB1c2luZyBtdDgxOTUtdHJhY2tpbmctbWFzdGVyLXJvbGxpbmcKPj4+ Cj4+PiBUaGF0J3MgdGhlIHJpZ2h0IGJyYW5jaC4KPj4+Cj4+PiBMZXQncyB0YWtlIE1UODE5MiBB c3VyYWRhIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgd29ya3MuLi4uCj4+Pgo+Pj4gYG10NjM1 OV92c3JhbV9vdGhlcnNfbGRvX3JlZ8K0IGlzIHRoZSBTUkFNIHJlZ3VsYXRvciBmb3IgdGhlIEdQ VToKPj4+IGh0dHBzOi8vZ2l0bGFiLmNvbGxhYm9yYS5jb20vZ29vZ2xlL2Nocm9tZW9zLWtlcm5l bC8tL2Jsb2IvbXQ4MTk1LXRyYWNraW5nLW1hc3Rlci1yb2xsaW5nL2FyY2gvYXJtNjQvYm9vdC9k dHMvbWVkaWF0ZWsvbXQ4MTkyLWFzdXJhZGEuZHRzaSNMNTUxCj4+Pgo+Pj4gYG10NjM1OV92c3Jh bV9vdGhlcnNfbGRvX3JlZ2AgcmVndWxhdG9yLW5hbWUgPSAidnNyYW1fb3RoZXJzIjsKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5eXl4KPj4+IENvbnRhaW5z ICJzcmFtIiwgYW5kIHRoaXMgcmVndWxhdG9yIGlzIGFsc28KPj4+Cj4+PiDCoMKgwqDCoMKgcmVn dWxhdG9yLWNvdXBsZWQtd2l0aCA9IDwmbXQ2MzE1XzdfdmJ1Y2sxPjsKPj4+Cj4+PiBgbXQ2MzE1 XzdfdmJ1Y2sxYCByZWd1bGF0b3ItbmFtZSA9ICJWZ3B1IjsKPj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBe Xl5eCj4+PiBDb250YWlucyAiVmdwdSIsIGFuZCB0aGlzIHJlZ3VsYXRvciBpcyBhbHNvCj4+Pgo+ Pj4gwqDCoMKgwqDCoHJlZ3VsYXRvci1jb3VwbGVkLXdpdGggPSA8Jm10NjM1OV92c3JhbV9vdGhl cnNfbGRvX3JlZz47Cj4+Pgo+Pj4gVGhhdCdzIGhvdyB0aGUgY291cGxpbmcgd29ya3MgaW4gdGhp cyBjYXNlLgo+Pj4KPj4+Cj4+PiBOb3csIGxvb2tpbmcgYXQgY2FzZSBleGNsdXNpb25zOgo+Pj4g SW4gTVQ4MTkyIEFzdXJhZGEgKG9yLCBhY3R1YWxseSwgbXQ2MzU5LmR0c2kpIHdlIGhhdmUgb3Ro ZXIgcmVndWxhdG9ycyB0aGF0IGRvCj4+PiBhY3R1YWxseSBjb250YWluICJzcmFtIiBpbiB0aGVp ciBuYW1lLCBsaWtlICJ2c3JhbV9wcm9jMSIgYW5kICJ2c3JhbV9vdGhlcnNfc3NodWIiLgo+Pj4K Pj4+IFRoZXNlIHJlZ3VsYXRvcnMgd2lsbCBiZSBpZ25vcmVkLCBhcyB0aGV5IGFyZSAqbm90KiBj b3VwbGVkIHdpdGggVmdwdS4KPj4+Cj4+Pgo+Pj4gV2hhdCB0aGlzIGRyaXZlciBjdXJyZW50bHkg ZG9lcyBpbiB0aGlzIHJlZ2FyZCBpczoKPj4+IDEuIFJlZ3VsYXRvciBhdHRhY2ggaXMgY2FsbGVk IG9ubHkgb24gKmNvdXBsZWQqIHJlZ3VsYXRvcnMsIG5vdCBvbiB0aGUgb3RoZXJzCj4+PiAyLiBJ ZiB0aGUgcmVndWxhdG9yIGNvbnRhaW5zIG5hbWUgInZncHUiIG9yICJWZ3B1IiBvciAic3JhbSIg d2UncmUgZ29vZCwKPj4+IMKgwqDCoCBvdGhlcndpc2Ugd2UgZG9uJ3QgYXR0YWNoIHRoZSBiYWxh bmNlX3ZvbHRhZ2UgbG9naWMgb2YgdGhpcyBkcml2ZXIgdG8KPj4+IMKgwqDCoCB0aGUgdW5tYXRj aGVkIHJlZ3VsYXRvcnMuCj4+Pgo+Pj4KPj4+IERvZXMgdGhpcyBleHBsYW5hdGlvbiBjbGFyaWZ5 IHlvdXIgZG91YnRzPwo+Pj4KPj4+IFJlZ2FyZHMsCj4+PiBBbmdlbG8KPj4+Cj4+Cj4+IE1hdHRo aWFzLCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IGFib3V0IHRoaXMgb25lIDotKQo+Pgo+IAo+IFVuZm9y dHVuYXRlbHkgSSBoYXZlIHRvIGxlYXZlIG5vdyBhbmQgZGlkbid0IGhhZCB0aW1lIHRvIGxvb2sg bW9yZSBpbnRvIGl0LiBTbyBJJ2xsIAo+IHdyaXRlIGp1c3QgbXkgc3VzcGljaW9uLiBTbyBwbGVh c2UgZmVlbCBmcmVlIHRvIGNvcnJlY3QgbWUgaWYgSSdtIHRvdGFsbHkgd3JvbmcgKEkgCj4ga25v dyB5b3Ugd2lsbCBkbyBhbnl3YXkgOykKPiAKPiAxKSBXaGVuIHRoZSByZWd1bGF0b3ItY291cGxl ciBkcml2ZXIgd2FzIGludHJvZHVjZWQgdGhlIGRyaXZlciB3YXMgYm91bmQgYnkgYSAKPiBjb21w YXRpYmxlLCBidXQgd2UgdXNlIGFyY2hfaW5pdGNhbGwoLi4uKSBmb3IgaXQuCj4gMikgSSByZWFs bHkgZG9uJ3QgbGlrZSB0aGUgaGFyZGNvZGVkIHNlYXJjaCBmb3IgYSB0aGUgcmVndWxhdG9yIG5h bWUgaW4gdGhlIAo+IG1lZGlhdGVrX3JlZ3VsYXRvcl9hdHRhY2ggZnVuY3Rpb24uIEkgaGF2ZW4n dCBzZWVuIHRoYXQgaW4gdGhlIE52aWRpYSBkcml2ZXIsIGFsc28gCj4gSSBoYWQgbm8gdGltZSB0 byB1bmRlcnN0YW5kIGhvdyB0aGV5IGRlY2lkZSB3aGljaCByZWd1bGF0b3JzIG5lZWQgdG8gYmUg Y291cGxlZC4gTXkgCj4gaW5zdGluY3Qgd291bGQgdGVsbCBtZSB0aGF0IHRoaXMgc2hvdWxkIGJl IGRlc2NyaWJlZCBpbiBkZXZpY2UtdHJlZS4KPiAKCkkgZGlkbid0IHdhbnQgdG8gdXNlIGN1c3Rv bSBkZXZpY2V0cmVlIHByb3BlcnRpZXMgdG8gY291cGxlIG91ciByZWd1bGF0b3JzLi4uCgpUZWdy YSB3YW50cyB0byBjb3VwbGUgdGhyZWUgcmVndWxhdG9yczogQ09SRSwgUlRDIGFuZCBDUFUgYW5k IHRoZXkncmUgZ2V0dGluZyB0aGF0CndpdGggdGhyZWUgY3VzdG9tIHByb3BlcnRpZXM6CiogbnZp ZGlhLHRlZ3JhLWNvcmUtcmVndWxhdG9yCiogbnZpZGlhLHRlZ3JhLXJ0Yy1yZWd1bGF0b3IKKiBu dmlkaWEsdGVncmEtZ3B1LXJlZ3VsYXRvcgoKSGFyZGNvZGluZyB0aGUgcmVndWxhdG9yIG5hbWUg KnN1YipzdHJpbmcgaW4gdGhlIG1lZGlhdGVrLXJlZ3VsYXRvci1jb3VwbGVyIGFsbG93cwp1cyB0 byB1c2UgKm9ubHkqIGdlbmVyaWMgZGV2aWNldHJlZSBwcm9wZXJ0aWVzIGluc3RlYWQgb2YgaW52 ZW50aW5nIG91ciBvd246IGFmdGVyCmFsbCwgZXZlbiBpbiB0aGUgY2FzZSBpbiB3aGljaCBhIGJv YXJkIHVzZXMgYSByZWd1bGF0b3IgdGhhdCBkb2Vzbid0IGhhdmUgdGhlIFZHUFUKYW5kL29yIFZT UkFNX0dQVSAia2luZCBvZiBuYW1lIiBpbiBpdCwgaXQncyBzdGlsbCBwb3NzaWJsZSB0byBjaGFu Z2UgdGhlIG5hbWUgdmlhCmRldmljZXRyZWUgKHdoaWNoIHdvdWxkIGJlIGNvcnJlY3QsIGJlY2F1 c2UgdGhlIHJlZ3VsYXRvciBpcyB1c2VkIGZvciB0aGF0LCBhbmQKd291bGQgYmUgdGhlIHJpZ2h0 IG5hbWUpLgoKQXMgb2Ygbm93LCB0aGVyZSdzIG5vIGJvYXJkIHVzaW5nIGEgcmVndWxhdG9yIHRo YXQgaGFzIGEgbm90IG1hdGNoaW5nIG5hbWUsIGFuZAp0aGlzIGlzIGJlY2F1c2UgTWVkaWFUZWsg U29DcyBhcmUgYWx3YXlzIHVzaW5nIGEgTWVkaWFUZWsgUE1JQyBpbiBjb21iaW5hdGlvbiwKd2hp Y2ggYWx3YXlzIHNwZWNpZmllcyB0aGlzIGtpbmQgb2YgbmFtZS4KCkkgcmVtaW5kIHlvdSB0aGF0 IHRoaXMgZHJpdmVyIGRvZXMgKm5vdGhpbmcqIHVubGVzcyBjb3VwbGluZyBpcyBhY3RpdmF0ZWQg dGhyb3VnaApkZXZpY2V0cmVlIHByb3BlcnQqaWVzKiwgYXMgdGhpcyBkcml2ZXIgaGFzIHRvIGJl IHNlZW4gYXMgYSBob29rIHRvIHRoZSByZWd1bGF0b3IKY291cGxpbmcgQVBJLCBhbmQgbm90IHN0 YW5kYWxvbmUgY29kZSAtIGhlbmNlLCBpbiBteSBvcGluaW9uLCB0aGUgY2xlYW5lc3QKaW1wbGVt ZW50YXRpb24gb2YgdGhhdCBpcyB0byB1c2Ugb25seSBwcm9wZXJ0aWVzIHByb3ZpZGVkIGJ5IHRo ZSByZWd1bGF0b3IgY291cGxpbmcKQVBJLCB3aXRob3V0IGFueSBhc3Npc3RhbmNlIGZyb20gY3Vz dG9tIHByb3BlcnRpZXMsIHVubGVzcyAqcmVhbGx5KiBuZWVkZWQuCgpTdW1tYXJpemluZzoKKiBE ZWNpZGluZyB3aGljaCByZWd1bGF0b3JzIG5lZWQgdG8gYmUgY291cGxlZCAqYWxyZWFkeSBuZWVk cyB0byogYmUgZGVzY3JpYmVkCiAgIGluIGRldmljZXRyZWUsIG90aGVyd2lzZSB0aGlzIGRyaXZl ciB3aWxsIGRvIG5vdGhpbmc7CiogVGhlIGhhcmRjb2RlZCBzdHJpbmdzIGFyZSB0aGVyZSBvbmx5 IHRvIHJlc3RyaWN0IHRoaXMgZHJpdmVyIHRvIEdQVSByZWxhdGVkCiAgIHJlZ3VsYXRvcnMgKHZn cHUgYXMgZ3B1IGNvcmUgc3VwcGx5IC0gdnNyYW0tZ3B1IGFzIGdwdSBzcmFtIHN1cHBseSkKCkNo ZWVycyEKQW5nZWxvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=