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 63AB0C433EF for ; Fri, 7 Jan 2022 15:30:11 +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=kUSeq7vw4mvZ5MkfgAgYX+R5YUfD4amEt/0lil4iJUA=; b=HZLayaNB2DdrDA 8tn7jV5X7lyoBNWq/Y2teBrzhcczDqcSg5+wJdLh9uXQlOxaYe2LmTMJ3ytJFScP4O4ZQgDP+0L4v lZJFZMwJvf956E5HoIdDAVj27IQlkiU72UCIgo77vML1R4NO52SrjjZW3dVHuGqHq7hAKMwwyrnuV WXlptsU2hI71QAnNEufwcMZfKB6N7EAba/K2OmrKDaGYe+VkEpGDTzLlwtogHHP+wu05V1v3LJamt CqchsZtPYkE96j6D/U/D+vpFRNEyyj2OMAd3sYvWpSlUWnqgQ0o2PCDxU0TlsdtKTEYKK5/c915gm nEm6NLE1ZRtceMkUFNJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n5rAZ-004TlR-TY; Fri, 07 Jan 2022 15:28:44 +0000 Received: from alexa-out.qualcomm.com ([129.46.98.28]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n5rAV-004TkO-00 for linux-arm-kernel@lists.infradead.org; Fri, 07 Jan 2022 15:28:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1641569319; x=1673105319; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=K/W9bM8mu/UewUxq/fHQAub5kRkeehWEPYOgFcwO0ac=; b=ZAM6U2dliDNgE3RO715rrkoyWaiv+SyWKJi17o1O2MSqNOlc7DQsq8LH PRjZdjSSHY/V3JtULldogBknrFDb3HE8lXbq602uIdsl2HiEI1vVmL3fr 2Kx+uI3rBZ5qbYRc40YWgbL8cKWPfHAXukAfgT3zfHiDvdEgvCpsnOFhU Y=; Received: from ironmsg08-lv.qualcomm.com ([10.47.202.152]) by alexa-out.qualcomm.com with ESMTP; 07 Jan 2022 07:28:36 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg08-lv.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jan 2022 07:28:35 -0800 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.922.19; Fri, 7 Jan 2022 07:28:35 -0800 Received: from [10.50.27.236] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.922.19; Fri, 7 Jan 2022 07:28:30 -0800 Message-ID: <77a2ef02-384d-ce67-ae84-02c385eccd60@quicinc.com> Date: Fri, 7 Jan 2022 20:57:50 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH V6 2/7] soc: qcom: dcc:Add driver support for Data Capture and Compare unit(DCC) Content-Language: en-CA To: Bjorn Andersson CC: Souradeep Chowdhury , Andy Gross , Rob Herring , , , , , "Sai Prakash Ranjan" , Sibi Sankar , Rajendra Nayak , References: From: Souradeep Chowdhury In-Reply-To: X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220107_072839_155856_4A58DB4F X-CRM114-Status: GOOD ( 61.82 ) 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 Ck9uIDEvNy8yMDIyIDU6MzEgQU0sIEJqb3JuIEFuZGVyc3NvbiB3cm90ZToKPiBPbiBXZWQgMDUg SmFuIDIzOjU3IFBTVCAyMDIyLCBTb3VyYWRlZXAgQ2hvd2RodXJ5IHdyb3RlOgo+Cj4+IE9uIDEy LzE4LzIwMjEgMTo0MSBBTSwgQmpvcm4gQW5kZXJzc29uIHdyb3RlOgo+Pj4gT24gVHVlIDEwIEF1 ZyAxMjo1NCBDRFQgMjAyMSwgU291cmFkZWVwIENob3dkaHVyeSB3cm90ZToKPj4+Cj4+Pj4gVGhl IERDQyBpcyBhIERNQSBFbmdpbmUgZGVzaWduZWQgdG8gY2FwdHVyZSBhbmQgc3RvcmUgZGF0YQo+ Pj4+IGR1cmluZyBzeXN0ZW0gY3Jhc2ggb3Igc29mdHdhcmUgdHJpZ2dlcnMuVGhlIERDQyBvcGVy YXRlcwo+Pj4gUGxlYXNlIGluY2x1ZGUgYSBzcGFjZSBhZnRlciAnLicKPj4gQWNrCj4+Pj4gYmFz ZWQgb24gdXNlciBpbnB1dHMgdmlhIHRoZSBzeXNmcyBpbnRlcmZhY2UuVGhlIHVzZXIgZ2l2ZXMK Pj4+PiBhZGRyZXNzZXMgYXMgaW5wdXRzIGFuZCB0aGVzZSBhZGRyZXNzZXMgYXJlIHN0b3JlZCBp biB0aGUKPj4+PiBmb3JtIG9mIGxpbmtlZGxpc3RzLkluIGNhc2Ugb2YgYSBzeXN0ZW0gY3Jhc2gg b3IgYSBtYW51YWwKPj4+IEkgdGhpbmsgdGhlIHVzZXIgY29uZmlndXJlcyB0aGUgRENDIGhhcmR3 YXJlIHdpdGggImEgc2VxdWVuY2Ugb2YKPj4+IG9wZXJhdGlvbnMgdG8gYmUgcGVyZm9ybWVkIGFz IERDQyBpcyB0cmlnZ2VyZWQiLgo+Pj4KPj4+IEFmYWljdCB0aGUgc2VxdWVuY2UgaXMgc3RvcmVk IGp1c3QgYXMgYSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGluIFNSQU0sCj4+PiB0aGVyZSdzIG5v IGxpbmtlZCBsaXN0IGludm9sdmVkIC0gZXhjZXB0IGluIHlvdXIgaW50ZXJtZWRpYXRlCj4+PiBp bXBsZW1lbnRhdGlvbi4KPj4gVGhlIHVzZXIganVzdCBlbnRlcnMgdGhlIGFkZHJlc3NlcyBhcyBp bnB1dCB3aGVyZWFzIHRoZSBzZXF1ZW5jZSBvZgo+PiBvcGVyYXRpb25zIHRha2VzCj4+Cj4+IHBs YWNlIGFzIHBlciBjb25maWd1cmF0aW9uIGNvZGUgaW5zaWRlIHRoZSBkcml2ZXIuIFRoZSBlbmQg cmVzdWx0IGlzIHN0b3JhZ2UKPj4gb2YgdGhlc2UKPj4KPj4gYWRkcmVzc2VzIGluc2lkZSB0aGUg RENDIFNSQU0uIFRoZSBEQ0MgaGFyZHdhcmUgd2lsbCBjYXB0dXJlIHRoZSB2YWx1ZSBhdAo+PiB0 aGVzZQo+Pgo+PiBhZGRyZXNzZXMgb24gYSBjcmFzaCBvciBtYW51YWwgdHJpZ2dlciBieSB0aGUg dXNlci4KPj4KPj4+PiBzb2Z0d2FyZSB0cmlnZ2VyIGJ5IHRoZSB1c2VyIHRocm91Z2ggdGhlIHN5 c2ZzIGludGVyZmFjZSwKPj4+PiB0aGUgZGNjIGNhcHR1cmVzIGFuZCBzdG9yZXMgdGhlIHZhbHVl cyBhdCB0aGVzZSBhZGRyZXNzZXMuCj4+Pj4gVGhpcyBwYXRjaCBjb250YWlucyB0aGUgZHJpdmVy IHdoaWNoIGhhcyBhbGwgdGhlIG1ldGhvZHMKPj4+PiBwZXJ0YWluaW5nIHRvIHRoZSBzeXNmcyBp bnRlcmZhY2UsIGF1eGlsaWFyeSBmdW5jdGlvbnMgdG8KPj4+PiBzdXBwb3J0IGFsbCB0aGUgZm91 ciBmdW5kYW1lbnRhbCBvcGVyYXRpb25zIG9mIGRjYyBuYW1lbHkKPj4+PiByZWFkLCB3cml0ZSwg Zmlyc3QgcmVhZCB0aGVuIHdyaXRlIGFuZCBsb29wLlRoZSBwcm9iZSBtZXRob2QKPj4+ICJmaXJz dCByZWFkIHRoZW4gd3JpdGUiIGlzIGNhbGxlZCAicmVhZC9tb2RpZnkvd3JpdGUiCj4+IEFjawo+ Pj4+IGhlcmUgaW5zdGFudGlhdGVzIGFsbCB0aGUgcmVzb3VyY2VzIG5lY2Vzc2FyeSBmb3IgZGNj IHRvCj4+Pj4gb3BlcmF0ZSBtYWlubHkgdGhlIGRlZGljYXRlZCBkY2Mgc3JhbSB3aGVyZSBpdCBz dG9yZXMgdGhlCj4+Pj4gdmFsdWVzLlRoZSBEQ0MgZHJpdmVyIGNhbiBiZSB1c2VkIGZvciBkZWJ1 Z2dpbmcgcHVycG9zZXMKPj4+PiB3aXRob3V0IGdvaW5nIGZvciBhIHJlYm9vdCBzaW5jZSBpdCBj YW4gcGVyZm9ybSBtYW51YWwKPj4+PiB0cmlnZ2Vycy4KPj4+Pgo+Pj4+IEFsc28gYWRkZWQgdGhl IGRvY3VtZW50YXRpb24gZm9yIHN5c2ZzIGVudHJpZXMKPj4+PiBhbmQgZXhwbGFpbmVkIHRoZSBm dW5jdGlvbmFsaXRpZXMgb2YgZWFjaCBzeXNmcyBmaWxlIHRoYXQKPj4+PiBoYXMgYmVlbiBjcmVh dGVkIGZvciBkY2MuCj4+Pj4KPj4+PiBUaGUgZm9sbG93aW5nIGlzIHRoZSBqdXN0aWZpY2F0aW9u IG9mIHVzaW5nIHN5c2ZzIGludGVyZmFjZQo+Pj4+IG92ZXIgdGhlIG90aGVyIGFsdGVybmF0aXZl cyBsaWtlIGlvY3Rscwo+Pj4+Cj4+Pj4gaSkgQXMgY2FuIGJlIHNlZW4gZnJvbSB0aGUgc3lzZnMg YXR0cmlidXRlIGRlc2NyaXB0aW9ucywKPj4+PiBtb3N0IG9mIGl0IGRvZXMgYmFzaWMgaGFyZHdh cmUgbWFuaXB1bGF0aW9ucyBsaWtlIGRjY19lbmFibGUsCj4+Pj4gZGNjX2Rpc2FibGUsIGNvbmZp ZyByZXNldCBldGMuIEFzIGEgcmVzdWx0IHN5c2ZzIGlzIHByZWZlcnJlZAo+Pj4+IG92ZXIgaW9j dGwgYXMgd2UganVzdCBuZWVkIHRvIGVudGVyIGEgMCBvciAxLgo+Pj4+Cj4+PiBBcyBJIG1lbnRp b25lZCBpbiBvdXIgY2hhdCwgdXNpbmcgc3lzZnMgYWxsb3dzIHVzIHRvIG9wZXJhdGUgdGhlCj4+ PiBpbnRlcmZhY2UgdXNpbmcgdGhlIHNoZWxsIHdpdGhvdXQgYWRkaXRpb25hbCB0b29scy4KPj4+ Cj4+PiBCdXQgSSBkb24ndCB0aGluayB0aGF0IGl0J3MgZWFzeSB0byBpbXBsZW1lbnQgZW5hYmxl L2Rpc2FibGUvcmVzZXQgdXNpbmcKPj4+IHN5c2ZzIGlzIGEgc3Ryb25nIGFyZ3VtZW50LiBUaGUg ZGlmZmljdWx0IHBhcnQgb2YgdGhpcyBBQkkgaXMgdGhlCj4+PiBvcGVyYXRpb25zIHRvIG1hbmlw dWxhdGUgdGhlIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMsIHNvIHRoYXQncyB3aGF0IHlvdQo+Pj4g bmVlZCB0byBoYXZlIGEgc29saWQgcGxhbiBmb3IuCj4+IFRoZSBzeXNmcyBpbnRlcmZhY2UgaXMg YmVpbmcgdXNlZCB0byBnZXQgdGhlIGFkZHJlc3NlcyB2YWx1ZXMgZW50ZXJlZCBieSB0aGUKPj4g dXNlcgo+Pgo+PiBhbmQgdG8gYWxzbyBnbyBmb3IgbWFudWFsIHRyaWdnZXJzLiBUaGUgc2VxdWVu Y2Ugb2Ygb3BlcmF0aW9ucyBhcmUga2VwdCBhcyBhCj4+IHBhcnQgb2YKPj4KPj4gZml4ZWQgZHJp dmVyIGNvZGUgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZW50ZXJzIHRoZSBkYXRhLgo+ Pgo+IEJ1dCBkb2VzIHRoZSBoYXJkd2FyZSByZWFsbHkganVzdCBvcGVyYXRlIG9uICJhZGRyZXNz ZXMgdmFsdWVzIGVudGVyZWQKPiBieSB0aGUgdXNlciIuIEdpdmVuIHRoZSB2YXJpb3VzIHR5cGVz IG9mIG9wZXJhdGlvbnM6IHJlYWQsIHdyaXRlLAo+IHJlYWQtbW9kaWZ5LXdyaXRlIGFuZCBsb29w IEkgZ2V0IHRoZSBmZWVsaW5nIHRoYXQgdGhlIGhhcmR3YXJlCj4gImV4ZWN1dGVzIiBhIHNlcmll cyBvZiBhY3Rpb25zLgo+Cj4gSSdtIGRvbid0IHRoaW5rIHRoZSBwcm9wb3NlZCBzeXNmcyBpbnRl cmZhY2UgYmVzdCBleHBvc2VzIHRoaXMgdG8gdGhlCj4gdXNlciBhbmQgSSBkb24ndCB0aGluayB0 aGF0ICJpdCdzIGVhc3kgdG8gaW1wbGVtZW50IGVuYWJsZS9kaXNhYmxlCj4gYXR0cmlidXRlcyBp biBzeXNmcyIgaXMgcmVhc29uIGVub3VnaCB0byBnbyB3aXRoIHRoYXQgYXBwcm9hY2guCgpTbyB0 aGUgc3lzZnMgaW50ZXJmYWNlIGhlcmUgaGFzIGJlZW4gaW50cm9kdWNlZCBrZWVwaW5nIGluIG1p bmQgaG93IHRoZSAKRENDX1NSQU0gbmVlZHMgdG8gYmUKCnByb2dyYW1tZWQgZm9yIHRoZSBkY2Mg aGFyZHdhcmUgdG8gd29yay4gV2UgYXJlIG1haW50YWluaW5nIGEgbGlzdCBoZXJlIApiYXNlZCBv biB0aGUgYWRkcmVzcwoKZW50cnkuIFRoZSA0IGNhc2VzIGZvciB0aGUgdHlwZSBvZiBhZGRyZXNz ZXMgYXJlIGFzIGZvbGxvd3MtOgoKaSkgUkVBRCBBRERSRVNTRVMKCnVzZXIgZW50ZXJzIHNvbWV0 aGluZyBsaWtlICJlY2hvIDxhZGRyPiA8bGVuPiA+IGNvbmZpZyIKCkRDQyBkcml2ZXIgc3RvcmVz IHRoZSA8YWRkcj4gYWxvbmcgd2l0aCB0aGUgbGVuZ3RoIGluZm9ybWF0aW9uIGluIHRoZSAKREND X1NSQU0uCgppaSkgV1JJVEUgQUREUkVTU0VTCgpVc2VyIGVudGVycyBzb21ldGhpbmcgbGlrZSAi ZWNobyA8YWRkcj4gPHdyaXRlX3ZhbD4gMcKgID4gY29uZmlnX3dyaXRlIgoKRENDIHN0b3JlcyB0 aGUgPGFkZHI+IGZpcnN0IGluIHNyYW0gZm9sbG93ZWQgYnkgPHdyaXRlX3ZhbD4uCgpGb3IgdGhl IGFib3ZlIDIgdHlwZSBvZiBhZGRyZXNzZXMgdGhlcmUgd29uJ3QgYmUgbXVjaCBkaWZmZXJlbmNl IGlmIHdlIAp1c2UgSU9DVEwuCgpIb3dldmVyLCBmb3IgdGhlIG5leHQgMiB0eXBlIG9mIGFkZHJl c3NlcwoKaWlpKSBMT09QIEFERFJFU1NFUwoKdXNlciBoYXMgdG8gZW50ZXIgc29tZXRoaW5nIGxp a2UgYmVsb3cKCmVjaG8gOSA+IGxvb3AKZWNobyAweDAxNzQxMDEwIDEgPiBjb25maWcKZWNobyAw eDAxNzQxMDE0IDEgPiBjb25maWcKZWNobyAxID4gbG9vcAoKVGhlIERDQyBTUkFNIHdpbGwgYmUg cHJvZ3JhbW1lZCBwcmVjaXNlbHkgbGlrZSB0aGUgYWJvdmUgZW50cmllcyB3aGVyZSAKdGhlIGxv b3AgY291bnQgd2lsbCBiZSBzdG9yZWQgZmlyc3QKCmZvbGxvd2VkIGJ5IGxvb3AgYWRkcmVzc2Vz IGFuZCB0aGVuIGFnYWluIGEgImVjaG8gMSA+IGxvb3AgIiBtYXJrcyB0aGUgCmVuZCBvZiBsb29w IGFkZHJlc3Nlcy4KCmluIERDQ19TUkFNLgoKaXYpIFJFQURfV1JJVEUgQUREUkVTU0VTCgpVc2Vy IGhhcyB0byBlbnRlciBzb21ldGhpbmcgbGlrZSBiZWxvdwoKZWNobyA8YWRkcj4gPiAvc3lzL2J1 cy9wbGF0Zm9ybS9kZXZpY2VzLy4uL2NvbmZpZwoKZWNobyA8bWFzaz4gPHZhbD4gPiAvc3lzL2J1 cy9wbGF0Zm9ybS9kZXZpY2VzLy4uL3JkX21vZF93cgoKSGVyZSBmaXJzdCB0aGXCoCA8YWRkcj4g aXMgc3RvcmVkIGluIERDQ19TUkFNIGZvbGxvd2VkIGJ5IDxtYXNrPiBhbmQgdGhlbiAKdGhlIDx2 YWw+LgoKVGhlIGFib3ZlIHJlcHJlc2VudGF0aW9uIHRvIHRoZSB1c2VyIHNwYWNlIGlzIGNvbnNp c3RlbnQgd2l0aCB0aGUgZGNjIApoYXJkd2FyZSBpbiB0ZXJtcyBvZgoKdGhlIHdheSB0aGUgc2Vx dWVuY2Ugb2YgdmFsdWVzIGFyZSBwcm9ncmFtbWVkIGluIHRoZSBEQ0MgU1JBTSAuIE1vdmluZyAK dG8gSU9DVEwgd2lsbAoKb25seSBjaGFuZ2UgdGhlIHdheSB0aGUgUkVBRF9XUklURSBhZGRyZXNz IGlzIHJlcHJlc2VudGVkIGFsdGhvdWdoIHVzZXIgCndpbGwgaGF2ZSB0byBlbnRlcgoKbXVsdGlw bGUgcGFyYW1ldGVycyBhdCBvbmNlLCBsZXQgbWUga25vdyBpZiB3ZSBzdGlsbCBuZWVkIHRvIGdv IGZvciB0aGUgCnNhbWUuCgoKPj4+PiBpaSkgRXhpc3Rpbmcgc2ltaWxhciBkZWJ1ZyBoYXJkd2Fy ZXMgYXJlIHRoZXJlIGZvciB3aGljaCBkcml2ZXJzCj4+Pj4gaGF2ZSBiZWVuIHdyaXR0ZW4gdXNp bmcgc3lzZnMgaW50ZXJmYWNlLk9uZSBzdWNoIGV4YW1wbGUgaXMgdGhlCj4+Pj4gY29yZXNpZ2h0 LWV0bS10cmFjZSBkcml2ZXIuCj4+PiBBZmFpY3QgdGhlIGV0bSBpbnRlcmZhY2UgaGFzIG9wZXJh dGlvbnMgdG8gZW5hYmxlIGFuZCBkaXNhYmxlLCBJIGRvbid0Cj4+PiBzZWUgYW55dGhpbmcgdGhh dCdzIHNpbWlsYXIgdG8gdGhlIGludGVyZmFjZSBmb3IgZGVmaW5pbmcgdGhlIHNlcXVlbmNlCj4+ PiBvZiBvcGVyYXRpb25zLgo+PiBIZXJlIEkgaGF2ZSBqdXN0IGRyYXduIGFuYWxvZ3kgd2l0aCBh biBleGlzdGluZyBzeXNmcyBpbnRlcmZhY2UuIFRoZQo+PiBhcmd1bWVudCBmb3IKPj4KPj4gdXNp bmcgc3lzZnMgaW5zdGVhZCBvZiBvdGhlciBpbnRlcmZhY2VzIGNhbiBiZSBhcyBmb2xsbG93cwo+ Pgo+PiAxKQo+Pgo+PiBEZWJ1Z2ZzIGludGVyZmFjZSBpcyB1c2VkIGJ5IGRyaXZlcnMgdG8gZXhw b3NlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhZGRpdGlvbmFsIHRvCj4+IHRoZSBmdW5jdGlvbiB0 aGV5IGRvLiBCdXQgdGhlIHNvbGUgdXNhZ2Ugb2YgdGhpcyBkcml2ZXIgZGVwZW5kcyBvbiB0aGUg Y29uZmlndXJhdGlvbgo+PiBleHBvcnRlZCB0aHJvdWdoIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVy ZWZvcmUgaXQgaXMgYW4gQUJJIGFzIHN1Z2dlc3RlZCBieSBNYW5pLgo+Pgo+PiAyKQo+Pgo+PiBE ZWJ1Z2ZzIGlzIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gc28gdGhpcyB3aWxsIG5vdCBnaXZlIHRo ZSB1c2VyIGZhY2lsaXR5IHRvIHVzZSBEQ0MuCj4+Cj4+IDMpCj4+Cj4+IEFzIHlvdSBtZW50aW9u ZWQgc3lzZnMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgc2hlbGwgd2l0aG91dCBhbnkgYWRkaXRpb25h bCB0b29scy4KPj4KPj4gNCkKPj4KPj4gQWx0ZXJuYXRpdmVzIGxpa2UgTkVUTElOSyBoYXMgYWxz byBiZWVuIHN1Z2dlc3RlZCBhbHRob3VnaCBpbiB0aGlzIGNhc2UgYnkgdXNpbmcKPj4gTkVUTElO SyB3ZSB3b24ndCBiZSBhYmxlIHRvIGV4cGxvaXQgbW9zdCBpdCdzIGZlYXR1cmVzIGxpa2UgZHVw bGV4IGNvbm5lY3Rpb24sCj4+IGFzeWNocm9ueSBhbmQgYnVsayBkYXRhIHRyYW5zZmVycy4gV2Ug YXJlIG5vdCBzaG93aW5nIGFueSBzdGF0cyBoZXJlIHRvIHRoZSB1c2VyCj4+IGFzIHN1Y2ggYW5k IGFsc28gc3lzZnMgaXMgY29uc2lkZXJlZCB0byBiZSBhIGJpdCBtb3JlIHJlbGlhYmxlLgo+Pgo+ IEknbSBub3Qgc3VyZSB3aHkgbmV0bGluayB3b3VsZCBwcmVmZXJyZWQgZm9yIHRoaXM7IHRvIG1l IHN5c2ZzIGlzIG11Y2gKPiBwcmVmZXJyZWQgYXMgaXQgYWxsb3dzIHVzIHRvIHVzZSBEQ0MgZnJv bSBzY3JpcHRzIGV0YyB3aXRob3V0IGhhdmluZyB0bwo+IGJ1bmRsZSBhZGRpdGlvbmFsIGJpbmFy aWVzLiBJZiB3ZSBjYW4ndCBleHByZXNzIHRoZSBjb25maWd1cmF0aW9uCj4gYXBwcm9wcmlhdGVs eSBpbiBhIHN5c2ZzIChkZWJ1Z2ZzIHdvdWxkIGJlIHRoZSBzYW1lKSBpbnRlcmZhY2UsIEkgdGhp bmsKPiBhbiBpb2N0bCBpbnRlcmZhY2Ugb24gL2Rldi9kY2Mgd291bGQgYmUgYSByZWFzb25hYmxl IGFsdGVybmF0aXZlLgo+Cj4+IFBsZWFzZSBsZXQgbWUgeW91ciB0aG91Z2h0cyByZWdhcmRpbmcg dGhpcy4KPj4KPj4+PiBBIGNsb3NlciBhbmFsb2cgY2FuIGFsc28gYmUgdGhlIHdhdGNoZG9nCj4+ Pj4gc3Vic3lzdGVtcyB0aG91Z2ggaXQgaXMgaW9jdGxzIGJhc2VkLgo+Pj4+Cj4+PiBJIGRvbid0 IHRoaW5rIHRoaXMgYWRkcyB2YWx1ZSB0byB0aGUgYXJndW1lbnQgZm9yIHVzaW5nIGEgc3lzZnMg YmFzZWQKPj4+IGludGVyZmFjZS4KPj4gQWNrCj4+Pj4gU2lnbmVkLW9mZi1ieTogU291cmFkZWVw IENob3dkaHVyeTxzY2hvd2RodUBjb2RlYXVyb3JhLm9yZz4KPj4+PiAtLS0KPj4+PiAgICBEb2N1 bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1kY2MgfCAgMTE0ICsrCj4+Pj4gICAg ZHJpdmVycy9zb2MvcWNvbS9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgICAgOCArCj4+Pj4g ICAgZHJpdmVycy9zb2MvcWNvbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4+ Pj4gICAgZHJpdmVycy9zb2MvcWNvbS9kY2MuYyAgICAgICAgICAgICAgICAgICAgIHwgMTU0OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAxNjcy IGluc2VydGlvbnMoKykKPj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9B QkkvdGVzdGluZy9zeXNmcy1kcml2ZXItZGNjCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvc29jL3Fjb20vZGNjLmMKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1kY2MgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5n L3N5c2ZzLWRyaXZlci1kY2MKPiBbLi5dCj4+Pj4gK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy9w bGF0Zm9ybS9kZXZpY2VzLy4uLi9yZF9tb2Rfd3IKPj4+PiArRGF0ZTogICAgICAgICAgIE1hcmNo IDIwMjEKPj4+PiArQ29udGFjdDogICAgICAgIFNvdXJhZGVlcCBDaG93ZGh1cnk8c2Nob3dkaHVA Y29kZWF1cm9yYS5vcmc+Cj4+Pj4gK0Rlc2NyaXB0aW9uOgo+Pj4+ICsJCVRoaXMgZmlsZSBpcyB1 c2VkIHRvIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSByZWdpc3Rlcgo+Pj4+ICsJCWFuZCB0aGVuIHdy aXRlIHRoZSB2YWx1ZSBnaXZlbiBhcyBhbiBhcmd1bWVudCB0byB0aGUKPj4+PiArCQlyZWdpc3Rl ciBhZGRyZXNzIGluIGNvbmZpZy4KPj4+IEl0J3Mgbm90IGNsZWFyIGZyb20gdGhpcyBkZXNjcmlw dGlvbiBob3cgdG8gdXNlIHRoaXMgb3BlcmF0aW9uLiBFLmcuIGlzCj4+PiBpdCBhcHBlbmRlZCB0 byB0aGUgc2FtZSBsaXN0IG9mIG9wZXJhdGlvbnM/IFdoZW4gd2lsbCB0aGlzIG9wZXJhdGlvbgo+ Pj4gaGFwcGVuPwo+Pj4KPj4+IExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uIEkgYmVsaWV2 ZSB0aGF0ICJjb25maWciLCAiY29uZmlnX3dyaXRlIiwKPj4+ICJsb29wIiBhbmQgInJkX21vZF93 ciIgYWxsIGFwcGVuZHMgb3BlcmF0aW9ucyB0byB0aGUgc2FtZSBsaXN0Lgo+Pj4KPj4+IEkgdGhp bmsgaXQgd291bGQgYmUgbXVjaCBiZXR0ZXIgdG8gY29uZmlndXJlIHRoaXMgd2l0aCBhIHNpbmds ZSBmaWxlCj4+PiB0aGF0IGNhbiBlaXRoZXIgYmUgd3JpdHRlbiB0byAnPicgb3IgYXBwZW5kZWQg dG8gJz4+JyBhbmQgeW91IHdvdWxkIGZlZWQKPj4+IGl0IGEgc2VxdWVuY2Ugb2YgdGhlIG9wZXJh dGlvbnMgdG8gYmUgcGVyZm9ybWVkLgo+Pj4KPj4+IFRoYXQgc2FpZCwgSSdtIGFmcmFpZCB0aGF0 IG1pZ2h0IG5vIGxvbmdlciBiZSBhIHN5c2ZzIGF0dHJpYnV0ZS4KPj4+Cj4+PiBTb21ldGhpbmcg bGlrZToKPj4+ICAgICAjIGVjaG8gJ3IgMHg4MDAwMDAxMCAweDEwJyA+IGNvbmZpZwo+Pj4gICAg ICMgZWNobyAndyAweDgwMDAwMDAwIDB4ZmYnID4+IGNvbmZpZwo+Pj4gICAgICMgZWNobyAncm13 IDB4ODAwMDAwMDAgMHhmIDB4YScgPj4gY29uZmlnCj4+PiAgICAgIyBlY2hvICdsIDB4ODAwMDAw MTAgMTAnID4+IGNvbmZpZwo+Pj4KPj4+IGFuZDoKPj4+ICAgICAjIGNhdCBjb25maWcKPj4+ICAg ICByIDB4ODAwMDAwMTAgMHgxMAo+Pj4gICAgIHcgMHg4MDAwMDAwMCAweGZmCj4+PiAgICAgcm13 IDB4ODAwMDAwMDAgMHhmIDB4YQo+Pj4gICAgIGwgMHg4MDAwMDAxMCAxMAo+Pj4KPj4+IChPciBy ZWFkL3dyaXRlL21vZGlmeS9sb29wIGFzIGtleXdvcmRzLi4uKQo+Pj4KPj4+Cj4+PiByZXNldCBj b3VsZCBiZSBkb25lIGJ5IGp1c3Q6IGVjaG8gJycgPiBjb25maWcKPj4+Cj4+PiBUaGlzIHdvdWxk IG1ha2UgaXQgcXVpdGUgc2ltaWxhciB0byBzZXZlcmFsIG9mIHRoZSBmaWxlcyBpbiB0aGUgdHJh Y2luZwo+Pj4gZnJhbWV3b3JrLgo+PiBDdXJyZW50bHkgdGhpcyBpcyBiZWluZyBpbXBsZW1lbnRl ZCBhcyBmb2xsb3dzCj4+Cj4+IFN0ZXAgMQo+Pgo+PiBlY2hvIDB4ODAwMDAwMDAgPiAvc3lzL2J1 cy9wbGF0Zm9ybS9kZXZpY2VzLy4uL2NvbmZpZwo+Pgo+PiBTdGVwIDIKPj4KPj4gZWNobyAweEYg MHhBID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8uLi9yZF9tb2Rfd3IKPj4KPj4gU28gdGhl IHBhcnRpY3VsYXIgYWRkcmVzcyBpcyB0YWdnZWQgYXMgcmRfbW9kX3dyIHR5cGUgYW5kIHRoZXJl Zm9yZQo+Pgo+PiB3aGlsZSB0aGUgdmFsdWUgYXQgdGhlIGFkZHJlc3MgMHg4MDAwMDAwMCBpcyBj YXB0dXJlZCwgMHhBIGlzIGFsc28KPj4KPj4gd3JpdHRlbiB0byBpdCdzIGxhc3QgNCBiaXRzLiBX aWxsIGJlIHVwZGF0aW5nIHRoaXMgaW4gdGhlIGRvY3VtZW50YXRpb24KPj4KPj4gYWxvbmcgd2l0 aCBkZXRhaWxzIGZvciBsb29wIGFuZCBjb25maWdfd3JpdGUgYXMgd2VsbC4KPj4KPiBCdXQgY2Fu IHlvdSBoZWxwIG1lIGNvbmZpcm0gd2hhdCBpcyBhY3R1YWxseSB3cml0dGVuIGluIFNSQU0gd2hl biB5b3UKPiBydW4gdGhlc2UgdHdvIHN0ZXBzPwpFeHBsYWluZWQgYXMgYWJvdmUuCj4KPj4+PiAr CQlUaGUgYWRkcmVzcyBhcmd1bWVudCBzaG91bGQKPj4+PiArCQliZSBnaXZlbiBvZiB0aGUgZm9y bSA8bWFzaz4gPHZhbHVlPi5Gb3IgZGVidWdnaW5nCj4+Pj4gKwkJcHVycG9zZXMgc29tZXRpbWVz IHdlIG5lZWQgdG8gZmlyc3QgcmVhZCBmcm9tIGEgcmVnaXN0ZXIKPj4+PiArCQlhbmQgdGhlbiBz ZXQgc29tZSB2YWx1ZXMgdG8gdGhlIHJlZ2lzdGVyLgo+Pj4+ICsJCUV4YW1wbGU6Cj4+Pj4gKwkJ ZWNobyAweDgwMDAwMDAwID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8uLi4vY29uZmlnCj4+ Pj4gKwkJKFNldCB0aGUgYWRkcmVzcyBpbiBjb25maWcgZmlsZSkKPj4+PiArCQllY2hvIDB4RiAw eEEgPiAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzLy4uLi9yZF9tb2Rfd3IKPj4+PiArCQkoUHJv dmlkZSB0aGUgbWFzayBhbmQgdGhlIHZhbHVlIHRvIHdyaXRlKQo+Pj4+ICsKPj4+PiArV2hhdDog ICAgICAgICAgIC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvLi4uL3JlYWR5Cj4+Pj4gK0RhdGU6 ICAgICAgICAgICBNYXJjaCAyMDIxCj4+Pj4gK0NvbnRhY3Q6ICAgICAgICBTb3VyYWRlZXAgQ2hv d2RodXJ5PHNjaG93ZGh1QGNvZGVhdXJvcmEub3JnPgo+Pj4+ICtEZXNjcmlwdGlvbjoKPj4+PiAr CQlUaGlzIGZpbGUgaXMgdXNlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBkY2MKPj4+PiAr CQloYXJkd2FyZSBpZiBpdCdzIHJlYWR5IHRvIHRha2UgdGhlIGlucHV0cy4KPj4+IFdoZW4gd2ls bCB0aGlzIHJlYWQgImZhbHNlIj8KPj4gVGhpcyB3aWxsIGdpdmUgZmFsc2UgaWYgdGhlIERDQyBo YXJkd2FyZSBpcyBub3QgaW4gYW4gb3BlcmF0aW9uYWwgc3RhdGUuCj4+Cj4+IFdpbGwgdXBkYXRl IGFjY29yZGluZ2x5Lgo+Pgo+Pj4+ICsJCUV4YW1wbGU6Cj4+Pj4gKwkJY2F0IC9zeXMvYnVzL3Bs YXRmb3JtL2RldmljZXMvLi4uL3JlYWR5Cj4+Pj4gKwo+Pj4+ICtXaGF0OgkJL3N5cy9idXMvcGxh dGZvcm0vZGV2aWNlcy8uLi4vY3Vycl9saXN0Cj4+Pj4gK0RhdGU6CQlGZWJydWFyeSAyMDIxCj4+ Pj4gK0NvbnRhY3Q6CVNvdXJhZGVlcCBDaG93ZGh1cnk8c2Nob3dkaHVAY29kZWF1cm9yYS5vcmc+ Cj4+Pj4gK0Rlc2NyaXB0aW9uOgo+Pj4+ICsJCVRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gZW50 ZXIgdGhlIGxpbmtsaXN0IHRvIGJlCj4+PiBJIHRoaW5rIGl0IHdvdWxkIGJlIG1vcmUgYXBwcm9w cmlhdGUgdG8gdXNlIHRoZSB2ZXJiICJzZWxlY3QiIGhlcmUgYW5kCj4+PiBhZmFpY3QgaXQncyBh ICJsaXN0IiBhcyB0aGUgImxpbmtlZCIgcGFydCBvbmx5IHJlbGF0ZXMgdG8geW91cgo+Pj4gaW1w bGVtZW50YXRpb24pLgo+Pj4KPj4+IEJ1dCB0aGF0IHNhaWQsIEkgZG9uJ3QgbGlrZSB0aGlzIEFC SS4gSSB0aGluayBpdCB3b3VsZCBiZSBjbGVhbmVyIGlmIHlvdQo+Pj4gaGFkIHNwZWNpZmljIGF0 dHJpYnV0ZXMgZm9yIGVhY2ggb2YgdGhlIGxpc3RzLiBUaGF0IHdheSBpdCB3b3VsZCBiZQo+Pj4g Y2xlYXIgdGhhdCB5b3UgaGF2ZSBOIGxpc3RzIGFuZCB0aGV5IGNhbiBiZSBjb25maWd1cmVkIGFu ZCBlbmFibGVkCj4+PiBpbmRlcGVuZGVudGx5LCBhbmQgdGhlcmUncyBubyBwb3NzaWJsZSByYWNl IGNvbmRpdGlvbnMuCj4+IFNvIHdlIGRvIGhhdmUgYXR0cmlidXRlcyBmb3IgaW5kZXBlbmRlbnQg bGlzdHMgaW4gdGhpcyBjYXNlLiBUaGUgdXNlciBpcwo+PiBnaXZlbiB0aGUgb3B0aW9uCj4+Cj4+ IHRvIGNvbmZpZ3VyZSBtdWx0aXBsZSBsaXN0cyBhdCBvbmUgZ28uIEZvciBleGFtcGxlIEkgY2Fu IGRvCj4+Cj4+IGVjaG8gMSA+IGN1cnJfbGlzdAo+Pgo+PiBlY2hvIDB4MTgwMDAwMTAgMSA+IGNv bmZpZwo+PiBlY2hvIDB4MTgwMDAwMjQgMSA+IGNvbmZpZwo+Pgo+PiBUaGVuIGZvbGxvd2VkIGJ5 Cj4+Cj4+IGVjaG8gMiA+IGN1cnJfbGlzdAo+Pgo+PiBlY2hvIDB4MTgwMTAwMzggNiA+IGNvbmZp Zwo+PiBlY2hvIDB4MTgwMjAwMTAgMSA+IGNvbmZpZwo+Pgo+PiBXZSB3aWxsIGdldCB0aGUgb3V0 cHV0IGluIHRlcm1zIG9mIHR3byBzZXBhcmF0ZSBsaXN0IG9mIHJlZ2lzdGVycyB2YWx1ZXMuCj4+ Cj4gSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyB3aWxsIGRlZmluZSB0d28gbGlzdHMgb2Ygb3BlcmF0 aW9ucyBhbmQgdGhhdCB3ZQo+IHdpbGwgZ2V0IDIgYW5kIDcgcmVnaXN0ZXJzIGR1bXBlZCwgcmVz cGVjdGl2ZWx5LiBQZXJoYXBzIHVubGlrZWx5LCBidXQKPiB3aGF0IGhhcHBlbnMgaWYgeW91IHRy eSB0byBkbyB0aGVzZSB0d28gb3BlcmF0aW9ucyBjb25jdXJyZW50bHk/Cj4KPgo+IFdoYXQgSSdt IHN1Z2dlc3RpbmcgaGVyZSBpcyB0aGF0IGlmIHlvdSBoYXZlIE4gY29udGV4dHMsIHlvdSBzaG91 bGQgaGF2ZQo+IE4gaW50ZXJmYWNlcyB0byBtb2RpZnkgZWFjaCBvbmUgaW5kZXBlbmRlbnRseSAt IHNpbXBseSBiZWNhdXNlIHRoYXQncwo+IGdlbmVyYWxseSBhIHZlcnkgZ29vZCB0aGluZy4KCk5v dCBzdXJlIGlmIHRoZXJlIHdpbGwgZXZlciBiZSBhIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoaXMg Y2FzZS4gVGhpcyBpcyAKanVzdCBhYm91dCBwcm9ncmFtbWluZyB0aGUgRENDIFNSQU0KCmZyb20g dGhlIHVzZXIgZW50cmllcyBzZXF1ZW50aWFsbHkuIFRoZSBjdXJyX2xpc3QgbnVtYmVyIGlzIG5v dGhpbmcgYnV0IApzb21lIHJlZ2lzdGVyIHdyaXRlcyBkb25lIGluIHRoZSBkY2MKCnNvIHRoYXQg dGhlIGRjY19oYXJkd2FyZSBrbm93cyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBwYXJ0aWN1 bGFyIApsaXN0IGFuZCBjYW4gZHVtcCB0aGUgY2FwdHVyZWQgZGF0YQoKYWNjb3JkaW5nLiBFdmVu IGlmIGFuIHVzZXIgY2hvb3NlcyBtdWx0aXBsZSBjdXJyX2xpc3QgZW50cmllcywgaXQgd2lsbCAK YmUgcHJvZ3JhbW1lZCBzZXF1ZW50aWFsbHkgaW4gRENDX1NSQU0uCgo+Cj4+Pj4gKwkJdXNlZCB3 aGlsZSBhcHBlbmRpbmcgYWRkcmVzc2VzLlRoZSByYW5nZSBvZiB2YWx1ZXMKPj4+PiArCQlmb3Ig dGhpcyBjYW4gYmUgZnJvbSAwIHRvIDMuVGhpcyBmZWF0dXJlIGlzIGdpdmVuIGluCj4+Pj4gKwkJ b3JkZXIgdG8gdXNlIGNlcnRhaW4gbGlua2VkbGlzdCBmb3IgY2VydGFpbiBkZWJ1Z2dpbmcKPj4+ PiArCQlwdXJwb3Nlcy4KPj4+PiArCQlFeGFtcGxlOgo+Pj4+ICsJCWVjaG8gMCA+IC9zeXMvYnVz L3BsYXRmb3JtL2RldmljZXMvMTBhMjAwMC5kY2MvY3Vycl9saXN0Cj4+Pj4gKwo+IFsuLl0KPj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvcWNvbS9kY2MuYyBiL2RyaXZlcnMvc29jL3Fjb20v ZGNjLmMKPiBbLi5dCj4+Pj4gK3N0YXRpYyBpbnQgZGNjX3ZhbGlkX2xpc3Qoc3RydWN0IGRjY19k cnZkYXRhICpkcnZkYXRhLCBpbnQgY3Vycl9saXN0KQo+Pj4+ICt7Cj4+Pj4gKwl1MzIgbG9ja19y ZWc7Cj4+Pj4gKwo+Pj4+ICsJaWYgKGxpc3RfZW1wdHkoJmRydmRhdGEtPmNmZ19oZWFkW2N1cnJf bGlzdF0pKQo+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsKPj4+PiArCWlmIChkcnZkYXRh LT5lbmFibGVbY3Vycl9saXN0XSkgewo+Pj4+ICsJCWRldl9lcnIoZHJ2ZGF0YS0+ZGV2LCAiTGlz dCAlZCBpcyBhbHJlYWR5IGVuYWJsZWRcbiIsCj4+Pj4gKwkJCQljdXJyX2xpc3QpOwo+Pj4+ICsJ CXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWxvY2tfcmVnID0gZGNjX3Jl YWRsKGRydmRhdGEsIERDQ19MTF9MT0NLKGN1cnJfbGlzdCkpOwo+Pj4gVW5kZXIgd2hhdCBjaXJj dW1zdGFuY2VzIHdvdWxkIHRoaXMgZGlmZmVyIGZyb20KPj4+IGRydmRhdGEtPmVuYWJsZVtjdXJy X2xpc3R9Pwo+PiBTbyBsb2NraW5nIHRoZSBsaXN0IGlzIGRvbmUgb24gdGhlIHJlZ2lzdGVyIGFz IHNvb24gYXMgdGhlIHVzZXIgZW50ZXJzIHRoZQo+PiBjdXJyX2xpc3QgZW50cnkgd2hlcmVhcwo+ Pgo+PiB0aGUgbGlzdCBpcyBtYXJrZWQgYXMgZW5hYmxlZCBvbmx5IG9uIHN1Y2Nlc3NmdWxseSBw cm9ncmFtbWluZyB0aGUgU1JBTQo+PiBjb250ZW50cy4gU28gYSBsaXN0IGNhbgo+Pgo+PiBiZSBs b2NrZWQgYW5kIG5vdCBtYXJrZWQgZW5hYmxlZCBpbiBjZXJ0YWluIGNhc2VzLiBUaGUgZmlyc3Qg aXMgdXNlZCBzbyB0aGF0Cj4+IHRoZSB1c2VyIGRvZXNuJ3QKPj4KPj4gbWlzdGFrZW5seSBlbnRl ciB0aGUgc2FtZSBjdXJyX2xpc3QgdHdpY2Ugd2hlcmVhcyB0aGUgbGF0ZXIgaXMgdXNlZCB0byBt YXJrCj4+IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4KPj4KPj4gc3VjY2Vzc2Z1bGx5IGNvbmZpZ3Vy ZWQuCj4+Cj4gU28gdGhpcyB3aWxsIG1hcmsgdGhlIGxpc3QgYXMgImFjdGl2ZWx5IGluIHVzZSwg YnV0IGRpc2FibGVkIj8gV2h5IGlzCj4gdGhpcyBrZXB0IGluIHRoZSBoYXJkd2FyZT8gV2hlbiBp cyB0aGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGlzdCBvZgo+IG9wZXJhdGlvbnMgZm9yIHRoYXQg bGlzdCBiZWluZyBub24tZW1wdHk/CgpTbyB0aGlzIGlzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg ZGNjIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gCnJlcXVpcmVtZW50LiBXZSBoYXZlIHRvIGxvY2sg dGhlIGxpc3QgZmlyc3QgYW5kCgphZnRlciB0aGF0IHByb2NlZWQgd2l0aCB0aGUgc3Vic2VxdWVu dCB3cml0ZXMgLiBBcyBwZXIgdGhlIGRyaXZlciBjb2RlIGJlbG93CgogwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiAxLiBUYWtlIG93bmVyc2hpcCBvZiB0aGUgbGlzdCAqLwogwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgQklUKDApLCBEQ0Nf TExfTE9DSyhsaXN0KSk7CgogwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDIuIFBy b2dyYW0gbGlua2VkLWxpc3QgaW4gdGhlIFNSQU0gKi8KIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByYW1fY2ZnX2Jhc2UgPSBkcnZkYXRhLT5yYW1fY2ZnOwogwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldCA9IF9fZGNjX2xsX2NmZyhkcnZkYXRhLCBsaXN0KTsKIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7CiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgMCwgRENDX0xM X0xPQ0sobGlzdCkpOwogwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGVycjsKIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9CgogwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDMuIHByb2dyYW0gRENDX1JBTV9DRkcgcmVnICov CiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGNjX3dyaXRlbChkcnZkYXRhLCByYW1f Y2ZnX2Jhc2UgKwogwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkcnZkYXRhLT5yYW1fb2Zmc2V0LzQsIERDQ19MTF9CQVNFKGxpc3QpKTsKIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBkY2Nfd3JpdGVsKGRydmRhdGEsIGRydmRhdGEtPnJhbV9zdGFy dCArCiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRydmRh dGEtPnJhbV9vZmZzZXQvNCwgRENDX0ZEX0JBU0UobGlzdCkpOwogwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRjY193cml0ZWwoZHJ2ZGF0YSwgMHhGRkYsIERDQ19MTF9USU1FT1VUKGxp c3QpKTsKCiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogNC4gQ2xlYXJzIGludGVy cnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk Y2Nfd3JpdGVsKGRydmRhdGEsIDAsIERDQ19MTF9JTlRfRU5BQkxFKGxpc3QpKTsKIMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkY2Nfd3JpdGVsKGRydmRhdGEsIChCSVQoMCkgfCBCSVQo MSkgfCBCSVQoMikpLAogwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERDQ19MTF9JTlRfU1RBVFVTKGxp c3QpKTsKCkluIGNhc2Ugb2YgYW55IGVycm9ycyB3ZSBhZ2FpbiB1bmxvY2sgdGhlIGxpc3QgYmVm b3JlIGV4aXRpbmcuCgo+Cj4+Pj4gKwlpZiAobG9ja19yZWcgJiAweDEpIHsKPj4+PiArCQlkZXZf ZXJyKGRydmRhdGEtPmRldiwgIkxpc3QgJWQgaXMgYWxyZWFkeSBsb2NrZWRcbiIsCj4+Pj4gKwkJ CQljdXJyX2xpc3QpOwo+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+ PiArCWRldl9lcnIoZHJ2ZGF0YS0+ZGV2LCAiRENDIGxpc3QgcGFzc2VkICVkXG4iLCBjdXJyX2xp c3QpOwo+Pj4gVGhpcyBpcyBub2lzZSwgcGxlYXNlIGRyb3AgaXQuCj4+IEFjawo+Pj4+ICsJcmV0 dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBib29sIGlzX2RjY19lbmFibGVkKHN0 cnVjdCBkY2NfZHJ2ZGF0YSAqZHJ2ZGF0YSkKPj4+PiArewo+Pj4+ICsJYm9vbCBkY2NfZW5hYmxl ID0gZmFsc2U7Cj4+Pj4gKwlpbnQgbGlzdDsKPj4+PiArCj4+Pj4gKwlmb3IgKGxpc3QgPSAwOyBs aXN0IDwgRENDX01BWF9MSU5LX0xJU1Q7IGxpc3QrKykgewo+Pj4+ICsJCWlmIChkcnZkYXRhLT5l bmFibGVbbGlzdF0pIHsKPj4+IAkJCXJldHVybiB0cnVlOwo+Pj4KPj4+PiArCQkJZGNjX2VuYWJs ZSA9IHRydWU7Cj4+Pj4gKwkJCWJyZWFrOwo+Pj4+ICsJCX0KPj4+PiArCX0KPj4+PiArCj4+PiAJ cmV0dXJuIGZhbHNlOwo+Pj4KPj4+PiArCXJldHVybiBkY2NfZW5hYmxlOwo+Pj4+ICt9Cj4+Pj4g Kwo+Pj4+ICtzdGF0aWMgaW50IGRjY19lbmFibGUoc3RydWN0IGRjY19kcnZkYXRhICpkcnZkYXRh KQo+Pj4+ICt7Cj4+Pj4gKwlpbnQgcmV0ID0gMDsKPj4+PiArCWludCBsaXN0Owo+Pj4+ICsJdTMy IHJhbV9jZmdfYmFzZTsKPj4+PiArCj4+Pj4gKwltdXRleF9sb2NrKCZkcnZkYXRhLT5tdXRleCk7 Cj4+Pj4gKwo+Pj4+ICsJaWYgKCFpc19kY2NfZW5hYmxlZChkcnZkYXRhKSkgewo+Pj4+ICsJCW1l bXNldF9pbyhkcnZkYXRhLT5yYW1fYmFzZSwKPj4+PiArCQkJMHhERSwgZHJ2ZGF0YS0+cmFtX3Np emUpOwo+Pj4gTm8gbmVlZCB0byB3cmFwIHRoaXMgbGluZSwgYW5kIHBsZWFzZSB1c2UgbG93ZXJj YXNlIGhleCBkaWdpdHMuCj4+IEFjawo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWZvciAobGlzdCA9 IDA7IGxpc3QgPCBkcnZkYXRhLT5ucl9saW5rX2xpc3Q7IGxpc3QrKykgewo+Pj4+ICsKPj4+IFBs ZWFzZSBkcm9wIHRoZSBlbXB0eSBsaW5lLgo+PiBBY2sKPj4+PiArCQlpZiAoZGNjX3ZhbGlkX2xp c3QoZHJ2ZGF0YSwgbGlzdCkpCj4+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4+ICsKPj4+PiArCQkvKiAx LiBUYWtlIG93bmVyc2hpcCBvZiB0aGUgbGlzdCAqLwo+Pj4+ICsJCWRjY193cml0ZWwoZHJ2ZGF0 YSwgQklUKDApLCBEQ0NfTExfTE9DSyhsaXN0KSk7Cj4+PiBDYW4gd2UgaGF2ZSBhIGRlZmluZSBm b3IgQklUKDApPyBJcyBpdCByZWFsbHkgYWJvdXQgb3duZXJzaGlwIG9yIGp1c3QKPj4+IHRoYXQg d2UgImVuYWJsZSIgaXQ/Cj4+Pgo+Pj4gSWYgb3duZXJzaGlwLCB3aG8ncyB0aGUgb3RoZXIgY29u dGVuZGVycyBmb3IgdGhlIG93bmVyc2hpcD8KPj4gVGhpcyBpcyBkb25lIHRvIG1hcmsgdGhhdCB0 aGUgdXNlciBoYXMgYWxyZWFkeSBlbnRlcmVkIHRoZSBjdXJyX2xpc3QgYW5kCj4+IHRoZXJlZm9y ZQo+Pgo+PiBjYW5ub3QgZW50ZXIgaXQgYWdhaW4uCj4+Cj4gV2hhdCBkb2VzICJlbnRlcmVkIiBt ZWFuIGhlcmU/IERvIHlvdSBtZWFuIHRoYXQgdGhlIGxpc3Qgb2Ygb3BlcmF0aW9ucwo+IHRoYXQg dGhlIGRyaXZlciBrZXB0IHRyYWNrIG9mIGhhcyBiZWVuIGZsdXNoZWQgb3V0IHRvIFNSQU0gYW5k IHdlJ3JlIG5vdAo+IG5vdCBhbGxvd2VkIHRvIG1vZGlmeSBpdD8KPgo+IFdoYXQgZG9lcyB0aGlz IGFjdHVhbGx5IG1lYW4/IFdoeSBpcyB0aGlzIGRvbmUgaW4gdGhlIGhhcmR3YXJlIGFuZCBub3QK PiBzaW1wbHkgd2l0aCBhIGJvb2wgaW4gdGhlIGRyaXZlcj8KVGhhdCBpcyBjb3JyZWN0LiBBcyBl eHBsYWluZWQgYWJvdmUgdGhpcyBpcyBhcyBwZXIgZGNjIGhhcmR3YXJlIApjb25maWd1cmF0aW9u IHJlcXVpcmVtZW50Lgo+Cj4+Pj4gKwo+Pj4+ICsJCS8qIDIuIFByb2dyYW0gbGlua2VkLWxpc3Qg aW4gdGhlIFNSQU0gKi8KPj4+PiArCQlyYW1fY2ZnX2Jhc2UgPSBkcnZkYXRhLT5yYW1fY2ZnOwo+ Pj4+ICsJCXJldCA9IF9fZGNjX2xsX2NmZyhkcnZkYXRhLCBsaXN0KTsKPj4+PiArCQlpZiAocmV0 KSB7Cj4+Pj4gKwkJCWRjY193cml0ZWwoZHJ2ZGF0YSwgMCwgRENDX0xMX0xPQ0sobGlzdCkpOwo+ Pj4+ICsJCQlnb3RvIGVycjsKPj4+PiArCQl9Cj4+Pj4gKwo+Pj4+ICsJCS8qIDMuIHByb2dyYW0g RENDX1JBTV9DRkcgcmVnICovCj4+Pj4gKwkJZGNjX3dyaXRlbChkcnZkYXRhLCByYW1fY2ZnX2Jh c2UgKwo+Pj4+ICsJCQlkcnZkYXRhLT5yYW1fb2Zmc2V0LzQsIERDQ19MTF9CQVNFKGxpc3QpKTsK Pj4+PiArCQlkY2Nfd3JpdGVsKGRydmRhdGEsIGRydmRhdGEtPnJhbV9zdGFydCArCj4+Pj4gKwkJ CWRydmRhdGEtPnJhbV9vZmZzZXQvNCwgRENDX0ZEX0JBU0UobGlzdCkpOwo+Pj4+ICsJCWRjY193 cml0ZWwoZHJ2ZGF0YSwgMHhGRkYsIERDQ19MTF9USU1FT1VUKGxpc3QpKTsKPj4+PiArCj4+Pj4g KwkJLyogNC4gQ2xlYXJzIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8KPj4+PiArCQlkY2Nf d3JpdGVsKGRydmRhdGEsIDAsIERDQ19MTF9JTlRfRU5BQkxFKGxpc3QpKTsKPj4+PiArCQlkY2Nf d3JpdGVsKGRydmRhdGEsIChCSVQoMCkgfCBCSVQoMSkgfCBCSVQoMikpLAo+Pj4+ICsJCQkJCURD Q19MTF9JTlRfU1RBVFVTKGxpc3QpKTsKPj4+PiArCj4+Pj4gKwkJZHJ2ZGF0YS0+ZW5hYmxlW2xp c3RdID0gdHJ1ZTsKPj4+PiArCj4+Pj4gKwkJLyogNS4gQ29uZmlndXJlIHRyaWdnZXIgKi8KPj4+ PiArCQlkY2Nfd3JpdGVsKGRydmRhdGEsIEJJVCg5KSwgRENDX0xMX0NGRyhsaXN0KSk7Cj4+Pj4g Kwl9Cj4+Pj4gKwo+Pj4+ICtlcnI6Cj4+Pj4gKwltdXRleF91bmxvY2soJmRydmRhdGEtPm11dGV4 KTsKPj4+PiArCXJldHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkIGRj Y19kaXNhYmxlKHN0cnVjdCBkY2NfZHJ2ZGF0YSAqZHJ2ZGF0YSkKPj4+PiArewo+Pj4+ICsJaW50 IGN1cnJfbGlzdDsKPj4+PiArCj4+Pj4gKwltdXRleF9sb2NrKCZkcnZkYXRhLT5tdXRleCk7Cj4+ Pj4gKwo+Pj4+ICsJZm9yIChjdXJyX2xpc3QgPSAwOyBjdXJyX2xpc3QgPCBkcnZkYXRhLT5ucl9s aW5rX2xpc3Q7IGN1cnJfbGlzdCsrKSB7Cj4+Pj4gKwkJaWYgKCFkcnZkYXRhLT5lbmFibGVbY3Vy cl9saXN0XSkKPj4+PiArCQkJY29udGludWU7Cj4+Pj4gKwkJZGNjX3dyaXRlbChkcnZkYXRhLCAw LCBEQ0NfTExfQ0ZHKGN1cnJfbGlzdCkpOwo+Pj4+ICsJCWRjY193cml0ZWwoZHJ2ZGF0YSwgMCwg RENDX0xMX0JBU0UoY3Vycl9saXN0KSk7Cj4+Pj4gKwkJZGNjX3dyaXRlbChkcnZkYXRhLCAwLCBE Q0NfRkRfQkFTRShjdXJyX2xpc3QpKTsKPj4+PiArCQlkY2Nfd3JpdGVsKGRydmRhdGEsIDAsIERD Q19MTF9MT0NLKGN1cnJfbGlzdCkpOwo+Pj4+ICsJCWRydmRhdGEtPmVuYWJsZVtjdXJyX2xpc3Rd ID0gZmFsc2U7Cj4+Pj4gKwl9Cj4+Pj4gKwltZW1zZXRfaW8oZHJ2ZGF0YS0+cmFtX2Jhc2UsIDAs IGRydmRhdGEtPnJhbV9zaXplKTsKPj4+IElzIHRoZXJlIGFueSByZWFzb24gd2h5IERDQyBpcyBm aWxsZWQgd2l0aCAweGRlIGR1cmluZyBpbml0aWFsaXphdGlvbgo+Pj4gYnV0IDAgd2hlbiBkaXNh YmxlZD8KPj4gWWVzIHRoaXMgcG9pc29uIHZhbHVlIGlzIHJlcXVpcmVkIHRvIGRpc3Rpbmd1aXNo IGJldHdlZW4gYnVzIGhhbmcgb24KPj4gcmVnaXN0ZXIgYWNjZXNzZXMKPj4KPj4gYW5kIGEgemVy byB2YWx1ZSBmb3IgdGhlIHJlZ2lzdGVycy4gSW4gY2FzZSBvZiB0aGUgZm9ybWVyIGRjYyByZXR1 cm5zIHplcm8KPj4gdmFsdWUgb24gcmVnaXN0ZXJzCj4+Cj4+IHdoaWNoIGNhdXNlcyBhbWJpZ3Vp dHkuCj4+Cj4gVGhhdCBleHBsYWlucyB3aHkgeW91IHBvaXNvbiByYW1fYmFzZSB3aXRoIDB4ZGUg ZHVyaW5nIGRjY19lbmFibGUoKS4gQnV0Cj4gd2h5IGRvIHlvdSBvdmVyd3JpdGUgaXQgd2l0aCAw cyBpbiBkY2NfZGlzYWJsZSgpPwo+Cj4gWW91IHNob3VsZCBiZSBhYmxlIHRvIGVpdGhlciBqdXN0 IGxlYXZlIGl0IGFzIGl0IHdpbGwgYmUgcG9pc29uZWQgYWdhaW4KPiBuZXh0IHRpbWUgZGNjX2Vu YWJsZSgpIGlzIGNhbGxlZCwgb3IgaWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoaW5ncyBhcmUKPiBj bGVhcmVkIHlvdSBzaG91bGQgYmUgYWJsZSB0byBwb2lzb24gaXQgd2l0aCB0aGUgc2FtZSBwb2lz b24gLSB0bwo+IGRpc3Rpbmd1aXNoIGl0IGZyb20gYSBidW5jaCBvZiByZWFkIDBzPwpBY2sKPgo+ IFJlZ2FyZHMsCj4gQmpvcm4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK