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 smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 BF2A4C6FA83 for ; Fri, 2 Sep 2022 06:15:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 288DB41678; Fri, 2 Sep 2022 06:15:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 288DB41678 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=C7i7POPU X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l6DQeyZOzYbF; Fri, 2 Sep 2022 06:15:01 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 50008410B8; Fri, 2 Sep 2022 06:15:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 50008410B8 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 2F9E5C0033; Fri, 2 Sep 2022 06:15:00 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id C4AF7C002D for ; Fri, 2 Sep 2022 06:14:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 89FEA41635 for ; Fri, 2 Sep 2022 06:14:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 89FEA41635 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zxD1MUjn_53g for ; Fri, 2 Sep 2022 06:14:56 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 30D0A410B8 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id 30D0A410B8 for ; Fri, 2 Sep 2022 06:14:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1662099294; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=C7i7POPUol/pCFm04xYQnqIxZG7BPiOG+qhkItgm6SBM98hyEOJMkwldlfMJuP2DHP1dLy 6UA4OvNJ/pY6mkukJq7gADcx75ZZf+NZKyajhrRogYf/pVHMA5j47HF8ohyZNzLpd+nrw8 bgww/c90vkJXvM0UKOrnSksZgNxtxzk= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-569-YNqTh1W5MaKrAl38f092pg-1; Fri, 02 Sep 2022 02:14:53 -0400 X-MC-Unique: YNqTh1W5MaKrAl38f092pg-1 Received: by mail-wr1-f72.google.com with SMTP id j9-20020a5d4649000000b00226d830857cso89023wrs.12 for ; Thu, 01 Sep 2022 23:14:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date; bh=BoKo8aceFb/Ymkvu8qEILExvargbfX9Gqhuc1uOjtxU=; b=mE8XzYgfgPqirSh2CJ7DB08RnFjMfbbLpasZPdbsxxqW6dBB8N0PbIkiGP2kDMygSq EP8r7LXqO8FuPglYiFO0bPe7+p4lR4MKU3deX8GVEMPivKWNjvPMFDqtaMrqGQCksr9h ffPRyzO31y5xcmIhQw5rEbiuT4H9GE5asI6uRBSNCN1UQOmnzAuA3d/ajBEXSOmP13/y zjqqf3BvmjJwftUW0RxBIsTh+dN/Qtwws3NBYwJe6gANrGsChlAS5RH0iqnahigsRPQD 1ypeGwrj1DNcldUkiNYdkjEagRP7D4wZAHuE07vSyYC9xvQqtC51vD7Poya9QJLEAYH/ ZPIQ== X-Gm-Message-State: ACgBeo3X5PsuqkBJHfEYClqhAnjbdjlKQGBMf9oRMTuU1PUH4SXaCP9e quH+lLIwWnRlbNLKvTjszDk621U3MMfwnqcblgUAAUOl1P+dBD86jcm78sgJomckZduFp2OyDYL h2bvp94MyYsjVB7jYh5qhWuVstoWY6xt8rWNl2PL9NA== X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615154wmr.134.1662099292485; Thu, 01 Sep 2022 23:14:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR6Nfp0wHyi9mamhrHVfLubQB5FaDeqf9Tua4EtW8jhS9xn8WmYHzCrJIKHOIyTaoIHD7GoJSw== X-Received: by 2002:a05:600c:3790:b0:3a5:435d:b2d3 with SMTP id o16-20020a05600c379000b003a5435db2d3mr1615128wmr.134.1662099291990; Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Received: from redhat.com ([2.55.191.225]) by smtp.gmail.com with ESMTPSA id d14-20020a05600c34ce00b003a5f54e3bbbsm7586210wmq.38.2022.09.01.23.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Sep 2022 23:14:51 -0700 (PDT) Date: Fri, 2 Sep 2022 02:14:47 -0400 From: "Michael S. Tsirkin" To: Jason Wang Subject: Re: [PATCH 2/2] vDPA: conditionally read fields in virtio-net dev Message-ID: <20220902021054-mutt-send-email-mst@kernel.org> References: <449c2fb2-3920-7bf9-8c5c-a68456dfea76@intel.com> <20220817063450-mutt-send-email-mst@kernel.org> <54aa5a5c-69e2-d372-3e0c-b87f595d213c@redhat.com> <4678fc51-a402-d3ea-e875-6eba175933ba@oracle.com> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: kvm , netdev , virtualization , Yongji Xie , Wu Zongyong , "Dawar, Gautam" , "Zhu, Lingshan" X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gRnJpLCBTZXAgMDIsIDIwMjIgYXQgMDI6MDM6MjJQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiBPbiBGcmksIEF1ZyAyNiwgMjAyMiBhdCAyOjI0IFBNIFNpLVdlaSBMaXUgPHNpLXdlaS5s aXVAb3JhY2xlLmNvbT4gd3JvdGU6Cj4gPgo+ID4KPiA+Cj4gPiBPbiA4LzIyLzIwMjIgODoyNiBQ TSwgSmFzb24gV2FuZyB3cm90ZToKPiA+ID4gT24gTW9uLCBBdWcgMjIsIDIwMjIgYXQgMTowOCBQ TSBaaHUsIExpbmdzaGFuIDxsaW5nc2hhbi56aHVAaW50ZWwuY29tPiB3cm90ZToKPiA+ID4+Cj4g PiA+Pgo+ID4gPj4gT24gOC8yMC8yMDIyIDQ6NTUgUE0sIFNpLVdlaSBMaXUgd3JvdGU6Cj4gPiA+ Pj4KPiA+ID4+PiBPbiA4LzE4LzIwMjIgNTo0MiBQTSwgSmFzb24gV2FuZyB3cm90ZToKPiA+ID4+ Pj4gT24gRnJpLCBBdWcgMTksIDIwMjIgYXQgNzoyMCBBTSBTaS1XZWkgTGl1IDxzaS13ZWkubGl1 QG9yYWNsZS5jb20+Cj4gPiA+Pj4+IHdyb3RlOgo+ID4gPj4+Pj4KPiA+ID4+Pj4+IE9uIDgvMTcv MjAyMiA5OjE1IFBNLCBKYXNvbiBXYW5nIHdyb3RlOgo+ID4gPj4+Pj4+IOWcqCAyMDIyLzgvMTcg MTg6MzcsIE1pY2hhZWwgUy4gVHNpcmtpbiDlhpnpgZM6Cj4gPiA+Pj4+Pj4+IE9uIFdlZCwgQXVn IDE3LCAyMDIyIGF0IDA1OjQzOjIyUE0gKzA4MDAsIFpodSwgTGluZ3NoYW4gd3JvdGU6Cj4gPiA+ Pj4+Pj4+PiBPbiA4LzE3LzIwMjIgNTozOSBQTSwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ ID4gPj4+Pj4+Pj4+IE9uIFdlZCwgQXVnIDE3LCAyMDIyIGF0IDA1OjEzOjU5UE0gKzA4MDAsIFpo dSwgTGluZ3NoYW4gd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+IE9uIDgvMTcvMjAyMiA0OjU1IFBNLCBN aWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+PiBPbiBXZWQsIEF1ZyAxNywg MjAyMiBhdCAxMDoxNDoyNkFNICswODAwLCBaaHUsIExpbmdzaGFuIHdyb3RlOgo+ID4gPj4+Pj4+ Pj4+Pj4+IFllcyBpdCBpcyBhIGxpdHRsZSBtZXNzeSwgYW5kIHdlIGNhbiBub3QgY2hlY2sgX0Zf VkVSU0lPTl8xCj4gPiA+Pj4+Pj4+Pj4+Pj4gYmVjYXVzZSBvZgo+ID4gPj4+Pj4+Pj4+Pj4+IHRy YW5zaXRpb25hbCBkZXZpY2VzLCBzbyBtYXliZSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkbyBm b3IKPiA+ID4+Pj4+Pj4+Pj4+PiBub3cKPiA+ID4+Pj4+Pj4+Pj4+IEkgdGhpbmsgdmhvc3QgZ2Vu ZXJhbGx5IG5lZWRzIGFuIEFQSSB0byBkZWNsYXJlIGNvbmZpZyBzcGFjZQo+ID4gPj4+Pj4+Pj4+ Pj4gZW5kaWFuLW5lc3MKPiA+ID4+Pj4+Pj4+Pj4+IHRvIGtlcm5lbC4gdmRwYSBjYW4gcmV1c2Ug dGhhdCB0b28gdGhlbi4KPiA+ID4+Pj4+Pj4+Pj4gWWVzLCBJIHJlbWVtYmVyIHlvdSBoYXZlIG1l bnRpb25lZCBzb21lIElPQ1RMIHRvIHNldCB0aGUKPiA+ID4+Pj4+Pj4+Pj4gZW5kaWFuLW5lc3Ms Cj4gPiA+Pj4+Pj4+Pj4+IGZvciB2RFBBLCBJIHRoaW5rIG9ubHkgdGhlIHZlbmRvciBkcml2ZXIg a25vd3MgdGhlIGVuZGlhbiwKPiA+ID4+Pj4+Pj4+Pj4gc28gd2UgbWF5IG5lZWQgYSBuZXcgZnVu Y3Rpb24gdmRwYV9vcHMtPmdldF9lbmRpYW4oKS4KPiA+ID4+Pj4+Pj4+Pj4gSW4gdGhlIGxhc3Qg dGhyZWFkLCB3ZSBzYXkgbWF5YmUgaXQncyBiZXR0ZXIgdG8gYWRkIGEgY29tbWVudCBmb3IKPiA+ ID4+Pj4+Pj4+Pj4gbm93Lgo+ID4gPj4+Pj4+Pj4+PiBCdXQgaWYgeW91IHRoaW5rIHdlIHNob3Vs ZCBhZGQgYSB2ZHBhX29wcy0+Z2V0X2VuZGlhbigpLCBJIGNhbgo+ID4gPj4+Pj4+Pj4+PiB3b3Jr Cj4gPiA+Pj4+Pj4+Pj4+IG9uIGl0IGZvciBzdXJlIQo+ID4gPj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+ Pj4+PiBUaGFua3MKPiA+ID4+Pj4+Pj4+Pj4gWmh1IExpbmdzaGFuCj4gPiA+Pj4+Pj4+Pj4gSSB0 aGluayBRRU1VIGhhcyB0byBzZXQgZW5kaWFuLW5lc3MuIE5vIG9uZSBlbHNlIGtub3dzLgo+ID4g Pj4+Pj4+Pj4gWWVzLCBmb3IgU1cgYmFzZWQgdmhvc3QgaXQgaXMgdHJ1ZS4gQnV0IGZvciBIVyB2 RFBBLCBvbmx5Cj4gPiA+Pj4+Pj4+PiB0aGUgZGV2aWNlICYgZHJpdmVyIGtub3dzIHRoZSBlbmRp YW4sIEkgdGhpbmsgd2UgY2FuIG5vdAo+ID4gPj4+Pj4+Pj4gInNldCIgYSBoYXJkd2FyZSdzIGVu ZGlhbi4KPiA+ID4+Pj4+Pj4gUUVNVSBrbm93cyB0aGUgZ3Vlc3QgZW5kaWFuLW5lc3MgYW5kIGl0 IGtub3dzIHRoYXQKPiA+ID4+Pj4+Pj4gZGV2aWNlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxl Z2FjeSBpbnRlcmZhY2UuCj4gPiA+Pj4+Pj4+IEl0IGNhbiBhY2NvcmRpbmdseSBzZW5kIGVuZGlh bi1uZXNzIHRvIHRoZSBrZXJuZWwgYW5kCj4gPiA+Pj4+Pj4+IGtlcm5lbCBjYW4gcHJvcGFnYXRl IGl0IHRvIHRoZSBkcml2ZXIuCj4gPiA+Pj4+Pj4gSSB3b25kZXIgaWYgd2UgY2FuIHNpbXBseSBm b3JjZSBMRSBhbmQgdGhlbiBRZW11IGNhbiBkbyB0aGUgZW5kaWFuCj4gPiA+Pj4+Pj4gY29udmVy c2lvbj8KPiA+ID4+Pj4+IGNvbnZlcnQgZnJvbSBMRSBmb3IgY29uZmlnIHNwYWNlIGZpZWxkcyBv bmx5LCBvciBRRU1VIGhhcyB0byBmb3JjZWZ1bGx5Cj4gPiA+Pj4+PiBtZWRpYXRlIGFuZCBjb3Zl cnQgZW5kaWFubmVzcyBmb3IgYWxsIGRldmljZSBtZW1vcnkgYWNjZXNzIGluY2x1ZGluZwo+ID4g Pj4+Pj4gZXZlbiB0aGUgZGF0YXBhdGggKGZpZWxkcyBpbiBkZXNjcmlwdG9yIGFuZCBhdmFpbC91 c2VkIHJpbmdzKT8KPiA+ID4+Pj4gRm9ybWVyLiBBY3R1YWxseSwgSSB3YW50IHRvIGZvcmNlIG1v ZGVybiBkZXZpY2VzIGZvciB2RFBBIHdoZW4KPiA+ID4+Pj4gZGV2ZWxvcGluZyB0aGUgdkRQQSBm cmFtZXdvcmsuIEJ1dCB0aGVuIHdlIHNlZSByZXF1aXJlbWVudHMgZm9yCj4gPiA+Pj4+IHRyYW5z aXRpb25hbCBvciBldmVuIGxlZ2FjeSAoZS5nIHRoZSBBbGkgRU5JIHBhcmVudCkuIFNvIGl0Cj4g PiA+Pj4+IGNvbXBsaWNhdGVzIHRoaW5ncyBhIGxvdC4KPiA+ID4+Pj4KPiA+ID4+Pj4gSSB0aGlu ayBzZXZlcmFsIGlkZWFzIGhhcyBiZWVuIHByb3Bvc2VkOgo+ID4gPj4+Pgo+ID4gPj4+PiAxKSBZ b3VyIHByb3Bvc2FsIG9mIGhhdmluZyBhIHZEUEEgc3BlY2lmaWMgd2F5IGZvcgo+ID4gPj4+PiBt b2Rlcm4vdHJhbnNpdGlvbmFsL2xlZ2FjeSBhd2FyZW5lc3MuIFRoaXMgc2VlbXMgdmVyeSBjbGVh biBzaW5jZSBlYWNoCj4gPiA+Pj4+IHRyYW5zcG9ydCBzaG91bGQgaGF2ZSB0aGUgYWJpbGl0eSB0 byBkbyB0aGF0IGJ1dCBpdCBzdGlsbCByZXF1aXJlcwo+ID4gPj4+PiBzb21lIGtpbmQgb2YgbWVk aWF0aW9uIGZvciB0aGUgY2FzZSBlLmcgcnVubmluZyBCRSBsZWdhY3kgZ3Vlc3Qgb24gTEUKPiA+ ID4+Pj4gaG9zdC4KPiA+ID4+PiBJbiB0aGVvcnkgaXQgc2VlbXMgbGlrZSBzbywgdGhvdWdoIHBy YWN0aWNhbGx5IEkgd29uZGVyIGlmIHdlIGNhbiBqdXN0Cj4gPiA+Pj4gZm9yYmlkIEJFIGxlZ2Fj eSBkcml2ZXIgZnJvbSBydW5uaW5nIG9uIG1vZGVybiBMRSBob3N0LiBGb3IgdGhvc2Ugd2hvCj4g PiA+Pj4gY2FyZSBhYm91dCBsZWdhY3kgQkUgZ3Vlc3QsIHRoZXkgbW9zdGx5IGxpa2UgY291bGQg YW5kIHNob3VsZCB0YWxrIHRvCj4gPiA+Pj4gdmVuZG9yIHRvIGdldCBuYXRpdmUgQkUgc3VwcG9y dCB0byBhY2hpZXZlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiwKPiA+ID4gVGhlIHByb2JsZW0gaXMg dGhlIGhhcmR3YXJlIHN0aWxsIG5lZWRzIGEgd2F5IHRvIGtub3cgdGhlIGVuZGlhbiBvZiB0aGUg Z3Vlc3Q/Cj4gPiBIYXJkd2FyZSBkb2Vzbid0IG5lZWQgdG8ga25vdy4gVk1NIHNob3VsZCBrbm93 IGJ5IGp1ZGdpbmcgZnJvbSBWRVJTSU9OXzEKPiA+IGZlYXR1cmUgYml0IG5lZ290aWF0aW9uIGFu ZCBsZWdhY3kgaW50ZXJmYWNlIGFjY2VzcyAod2l0aCBuZXcgY29kZSksIGFuZAo+ID4gdGhlIHRh cmdldCBhcmNoaXRlY3R1cmUgZW5kaWFubmVzcyAodGhlIGxhdHRlciBpcyBleGlzdGluZyBRRU1V IGNvZGUpLgo+ID4gPgo+ID4gPj4+IGZldwo+ID4gPj4+IG9mIHRoZW0gd291bGQgY291bnQgb24g UUVNVSBpbiBtZWRpYXRpbmcgb3IgZW11bGF0aW5nIHRoZSBkYXRhcGF0aAo+ID4gPj4+IChvdGhl cndpc2UgSSBkb24ndCBzZWUgdGhlIGJlbmVmaXQgb2YgYWRvcHRpbmcgdkRQQT8pLiBJIHN0aWxs IGZlZWwKPiA+ID4+PiB0aGF0IG5vdCBldmVyeSBoYXJkd2FyZSB2ZW5kb3IgaGFzIHRvIG9mZmVy IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKPiA+ID4+PiAodHJhbnNpdGlvbmFsIGRldmljZSkgd2l0 aCBsZWdhY3kgaW50ZXJmYWNlL2JlaGF2aW9yIChCRSBiZWluZyBqdXN0Cj4gPiA+Pj4gb25lKSwK PiA+ID4gUHJvYmFibHksIEkgYWdyZWUgaXQgaXMgYSBjb3JuZXIgY2FzZSwgYW5kIGRlYWxpbmcg d2l0aCB0cmFuc2l0aW9uYWwKPiA+ID4gZGV2aWNlIGZvciB0aGUgZm9sbG93aW5nIHNldHVwcyBp cyB2ZXJ5IGNoYWxsZW5nZSBmb3IgaGFyZHdhcmU6Cj4gPiA+Cj4gPiA+IC0gZHJpdmVyIHdpdGhv dXQgSU9NTVVfUExBVEZPUk0gc3VwcG9ydCwgKHJlcXVpcmluZyBkZXZpY2UgdG8gc2VuZAo+ID4g PiB0cmFuc2xhdGVkIHJlcXVlc3Qgd2hpY2ggaGF2ZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMpCj4g PiBEb24ndCBnZXQgYmV0dGVyIHN1Z2dlc3Rpb24gZm9yIHRoaXMgb25lLCBidXQgSSBwcmVzdW1l IHRoaXMgaXMKPiA+IHNvbWV0aGluZyBsZWdhY3kgZ3Vlc3QgdXNlcnMgc2hvdWxkIGJlIGF3YXJl IG9mIGFoZWFkIGluIHRlcm0gb2YKPiA+IHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KPiAKPiBQcm9i YWJseSBidXQgSSB0aGluayB0aGlzIGFzc3VtcHRpb24gd2lsbCBwcmV2ZW50IHRoZSBkZXZpY2Ug ZnJvbQo+IGJlaW5nIHVzZWQgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50Lgo+IAo+ID4KPiA+ ID4gLSBCRSBsZWdhY3kgZ3Vlc3Qgb24gTEUgaG9zdCwgKHJlcXVpcmluZyBkZXZpY2UgdG8gaGF2 ZSBhIHdheSB0byBrbm93Cj4gPiA+IHRoZSBlbmRpYW4pCj4gPiBZZXMuIGRldmljZSBjYW4gdGVs bCBhcGFydCB3aXRoIHRoZSBoZWxwIGZyb20gVk1NIChqdWRnaW5nIGJ5IFZFUlNJT05fMQo+ID4g YWNrbm93bGVkZ2VtZW50IGFuZCBpZiBsZWdhY3kgaW50ZXJmYWNlIGlzIHVzZWQgZHVyaW5nIG5l Z290aWF0aW9uKS4KPiA+Cj4gPiA+IC0gZGV2aWNlIHNwZWNpZmljIHJlcXVpcmVtZW50IChlLmcg bW9kZXJuIHZpcnRpby1uZXQgbWFuZGF0ZSBtaW5pbWFsCj4gPiA+IGhlYWRlciBsZW5ndGggdG8g Y29udGFpbiBtcmdfcnhidWYgZXZlbiBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgb2ZmZXIKPiA+ID4g aXQpCj4gPiBUaGlzIG9uZSBzZWVtcyB0byBiZSBzcGVjIG1hbmRhdGVkIHRyYW5zaXRpb25hbCBp bnRlcmZhY2UgcmVxdWlyZW1lbnQ/Cj4gCj4gWWVzLgo+IAo+ID4gV2hpY2ggdkRQQSBoYXJkd2Fy ZSB2ZW5kb3Igc2hvdWxkIHRha2UgY2FyZSBvZiByYXRoZXIgKGlmIHRoZXkgZG8gb2ZmZXIKPiA+ IGEgdHJhbnNpdGlvbmFsIGRldmljZSk/Cj4gCj4gUmlnaHQgYnV0IHRoaXMgaXMgbm90IHRoZSBv bmx5IG9uZS4gU2VjdGlvbiA3LjQgc3VtbWFyaWVzIHRoZQo+IHRyYW5zaXRpb25hbCBkZXZpY2Ug Y29uZm9ybWFuY2Ugd2hpY2ggaXMgYSB2ZXJ5IGxvbmcgbGlzdCBmb3IgdmVuZG9yCj4gdG8gZm9s bG93Lgo+IAo+ID4gPgo+ID4gPiBJdCBpcyBub3Qgb2J2aW91cyBmb3IgdGhlIGhhcmR3YXJlIHZl bmRvciwgc28gd2UgbWF5IGVuZCB1cCBkZWZlY3RpbmcKPiA+ID4gaW4gdGhlIGltcGxlbWVudGF0 aW9uLiBEZWFsaW5nIHdpdGggY29tcGF0aWJpbGl0eSBmb3IgdGhlIHRyYW5zaXRpb25hbAo+ID4g PiBkZXZpY2VzIGlzIGtpbmQgb2YgYSBuaWdodG1hcmUgd2hpY2ggdGhlcmUncyBubyB3YXkgZm9y IHRoZSBzcGVjIHRvCj4gPiA+IHJ1bGUgdGhlIGJlaGF2aW9yIG9mIGxlZ2FjeSBkZXZpY2VzLgo+ ID4gVGhlIGNvbXBhdGliaWxpdHkgZGV0ZWN0aW9uIHBhcnQgaXMgdGVkaW91cyBJIGFncmVlLiBU aGF0J3Mgd2h5IEkKPiA+IHN1Z2dlc3RlZCBzdGFydGluZyBmcm9tIHRoZSB2ZXJ5IG1pbmltYWwg YW5kIHByYWN0aWNhbGx5IGZlYXNpYmxlIChmb3IKPiA+IGUuZy4gb24geDg2KSwgYnV0IGp1c3Qg ZG9uJ3QgcHJvaGliaXQgdGhlIHBvc3NpYmlsaXR5IHRvIGV4dGVuZCB0byBiaWcKPiA+IGVuZGlh biBvciBjb21lIHVwIHdpdGggcXVpcmsgZml4ZXMgZm9yIHZhcmlvdXMgY2FzZXMgaW4gUUVNVS4K PiAKPiBUaGlzIGlzIHNvbWVob3cgd2UndmUgYWxyZWFkeSBiZWVuIGRvbmUsIGUuZyBhbGkgRU5J IGlzIGxpbWl0ZWQgdG8geDg2Lgo+IAo+ID4KPiA+ID4KPiA+ID4+PiAgIHRoaXMgaXMgdW5saWtl IHRoZSBzaXR1YXRpb24gb24gc29mdHdhcmUgdmlydGlvIGRldmljZSwgd2hpY2gKPiA+ID4+PiBo YXMgbGVnYWN5IHN1cHBvcnQgc2luY2UgZGF5IG9uZS4gSSB0aGluayB3ZSBldmVyIGRpc2N1c3Nl ZCBpdCBiZWZvcmU6Cj4gPiA+Pj4gZm9yIHRob3NlIHZEUEEgdmVuZG9ycyB3aG8gZG9uJ3Qgb2Zm ZXIgbGVnYWN5IGd1ZXN0IHN1cHBvcnQsIG1heWJlIHdlCj4gPiA+Pj4gc2hvdWxkIG1hbmRhdGUg c29tZSBmZWF0dXJlIGZvciBlLmcuIFZFUlNJT05fMSwgYXMgdGhlc2UgZGV2aWNlcwo+ID4gPj4+ IHJlYWxseSBkb24ndCBvZmZlciBmdW5jdGlvbmFsaXR5IG9mIHRoZSBvcHBvc2l0ZSBzaWRlICgh VkVSU0lPTl8xKQo+ID4gPj4+IGR1cmluZyBuZWdvdGlhdGlvbi4KPiA+ID4gSSd2ZSB0cmllZCBz b21ldGhpbmcgc2ltaWxhciBoZXJlIChhIGdsb2JhbCBtYW5kYXRvcnkgaW5zdGVhZCBvZiBwZXIg ZGV2aWNlKS4KPiA+ID4KPiA+ID4gaHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8v bGttbC5vcmcvbGttbC8yMDIxLzYvNC8yNl9fOyEhQUNXVjVOOU0yUlY5OWhRIU5SUVBmajVvOW8z TUtFMTJ6ZTF6ZlhNQy05U3F3T1dxRjI2ZzhSckl5VURiVW13REl3bDVXUUNhTmlEZTZhWjJ5Ujgz ai1ORXFSWFFOWGNOeU9vJAo+ID4gPgo+ID4gPiBCdXQgZm9yIHNvbWUgcmVhc29uLCBpdCBpcyBu b3QgYXBwbGllZCBieSBNaWNoYWVsLiBJdCB3b3VsZCBiZSBhIGdyZWF0Cj4gPiA+IHJlbGllZiBp ZiB3ZSBzdXBwb3J0IG1vZGVybiBkZXZpY2VzIG9ubHkuIE1heWJlIGl0J3MgdGltZSB0byByZXZp c2l0Cj4gPiA+IHRoaXMgaWRlYSB0aGVuIHdlIGNhbiBpbnRyb2R1Y2UgbmV3IGJhY2tlbmQgZmVh dHVyZXMgYW5kIHRoZW4gd2UgY2FuCj4gPiA+IG1hbmRhdGUgVkVSU0lPTl8xCj4gPiBQcm9iYWJs eSwgbWFuZGF0aW5nIHBlci1kZXZpY2Ugc2hvdWxkIGJlIGZpbmUgSSBndWVzcy4KPiA+Cj4gPiA+ Cj4gPiA+Pj4gSGF2aW5nIGl0IHNhaWQsIHBlcmhhcHMgd2Ugc2hvdWxkIGFsc28gYWxsb3cgdmVu ZG9yIGRldmljZSB0bwo+ID4gPj4+IGltcGxlbWVudCBvbmx5IHBhcnRpYWwgc3VwcG9ydCBmb3Ig bGVnYWN5LiBXZSBjYW4gZGVmaW5lICJyZXZlcnNlZCIKPiA+ID4+PiBiYWNrZW5kIGZlYXR1cmUg dG8gZGVub3RlIHNvbWUgcGFydCBvZiB0aGUgbGVnYWN5Cj4gPiA+Pj4gaW50ZXJmYWNlL2Z1bmN0 aW9uYWxpdHkgbm90IGdldHRpbmcgaW1wbGVtZW50ZWQgYnkgZGV2aWNlLiBGb3IKPiA+ID4+PiBp bnN0YW5jZSwgVkhPU1RfQkFDS0VORF9GX05PX0JFX1ZSSU5HLCBWSE9TVF9CQUNLRU5EX0ZfTk9f QkVfQ09ORklHLAo+ID4gPj4+IFZIT1NUX0JBQ0tFTkRfRl9OT19BTElHTkVEX1ZSSU5HLAo+ID4g Pj4+IFZIT1NUX0JBQ0tFTkRfTkVUX0ZfTk9fV1JJVEVBQkxFX01BQywgYW5kIGV0IGFsLiBOb3Qg YWxsIG9mIHRoZXNlCj4gPiA+Pj4gbWlzc2luZyBmZWF0dXJlcyBmb3IgbGVnYWN5IHdvdWxkIGJl IGVhc3kgZm9yIFFFTVUgdG8gbWFrZSB1cCBmb3IsIHNvCj4gPiA+Pj4gUUVNVSBjYW4gc2VsZWN0 aXZlbHkgZW11bGF0ZSB0aG9zZSBhdCBpdHMgYmVzdCB3aGVuIG5lY2Vzc2FyeSBhbmQKPiA+ID4+ PiBhcHBsaWNhYmxlLiBJbiBvdGhlciB3b3JkLCB0aGlzIGRlc2lnbiBzaG91bGRuJ3QgcHJldmVu dCBRRU1VIGZyb20KPiA+ID4+PiBtYWtpbmcgdXAgZm9yIHZlbmRvciBkZXZpY2UncyBwYXJ0aWFs IGxlZ2FjeSBzdXBwb3J0Lgo+ID4gPiBUaGlzIGxvb2tzIHRvbyBoZWF2eXdlaWdodCBzaW5jZSBp dCB0cmllcyB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgZm9yCj4gPiA+IGxlZ2FjeSBkcml2ZXJz Lgo+ID4gVGhhdCdzIGp1c3QgZm9yIHRoZSBzYWtlIG9mIGV4dHJlbWUgYmFja3dhcmQgY29tcGF0 aWJpbGl0eSwgYnV0IHlvdSBjYW4KPiA+IHNheSB0aGF0J3Mgbm90IGV2ZW4gbmVlZGVkIGlmIHdl IG1hbmRhdGUgdHJhbnNpdGlvbmFsIGRldmljZSB0byBvZmZlcgo+ID4gYWxsIHJlcXVpcmVkIGlu dGVyZmFjZXMgZm9yIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gZ3Vlc3QuCj4gPgo+ID4gPiAgIENv bnNpZGVyaW5nIHdlJ3ZlIGludHJvZHVjZWQgbW9kZXJuIGRldmljZXMgZm9yIDUrCj4gPiA+IHll YXJzLCBJJ2QgcmF0aGVyOgo+ID4gPgo+ID4gPiAtIFFlbXUgdG8gbWVkaWF0ZSB0aGUgY29uZmln IHNwYWNlIHN0dWZmcwo+ID4gPiAtIFNoYWRvdyB2aXJ0cXVldWUgdG8gbWVkaWF0ZSB0aGUgZGF0 YXBhdGggKEFGX1hEUCB0b2xkIHVzIHNoYWRvdyByaW5nCj4gPiA+IGNhbiBwZXJmb3JtIHZlcnkg d2VsbCBpZiB3ZSBkbyB6ZXJvLWNvcHkpLgo+ID4gVGhpcyBpcyBvbmUgd2F5IHRvIGFjaGlldmUs IHRob3VnaCBub3Qgc3VyZSB3ZSBzaG91bGQgc3RpY2sgdGhlIG9ubHkKPiA+IGhvcGUgdG8gemVy by1jb3B5LCB3aGljaCBJTUhPIG1heSB0YWtlIGEgbG9uZyB3YXkgdG8gcmVhbGl6ZSBhbmQKPiA+ IG9wdGltaXplIHRvIHdoZXJlIGEgc2ltcGxlIGRhdGFwYXRoIHBhc3N0aHJvdWdoIGNhbiBlYXNp bHkgZ2V0IHRvICh3aXRoCj4gPiBoYXJkd2FyZSBhY2NlbGVyYXRpb24gb2YgY296KS4KPiAKPiBO b3RlIHRoYXQsIGN1cnJlbnQgc2hhZG93IHZpcnRxdWV1ZSBpcyB6ZXJvY29weSwgUWVtdSBqdXN0 IG5lZWQgdG8KPiBmb3J3YXJkIHRoZSBkZXNjcmlwdG9ycy4KPiAKPiA+Cj4gPiA+Cj4gPiA+Pj4+ IDIpIE1pY2hhZWwgc3VnZ2VzdHMgdXNpbmcgVkhPU1RfU0VUX1ZSSU5HX0VORElBTiB3aGVyZSBp dCBtZWFucyB3ZQo+ID4gPj4+PiBuZWVkIGEgbmV3IGNvbmZpZyBvcHMgZm9yIHZEUEEgYnVzLCBi dXQgaXQgZG9lc24ndCBzb2x2ZSB0aGUgaXNzdWUgZm9yCj4gPiA+Pj4+IGNvbmZpZyBzcGFjZSAo YXQgbGVhc3QgZnJvbSBpdHMgbmFtZSkuIFdlIHByb2JhYmx5IG5lZWQgYSBuZXcgaW9jdGwKPiA+ ID4+Pj4gZm9yIGJvdGggdnJpbmcgYW5kIGNvbmZpZyBzcGFjZS4KPiA+ID4+PiBZZXAgYWRkaW5n IGEgbmV3IGlvY3RsIG1ha2VzIHRoaW5ncyBiZXR0ZXIsIGJ1dCBJIHRoaW5rIHRoZSBrZXkgaXMg bm90Cj4gPiA+Pj4gdGhlIG5ldyBpb2N0bC4gSXQncyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQg ZW5mb3JjZSBldmVyeSB2RFBBIHZlbmRvcgo+ID4gPj4+IGRyaXZlciB0byBpbXBsZW1lbnQgYWxs IHRyYW5zaXRpb25hbCBpbnRlcmZhY2VzIHRvIGJlIHNwZWMgY29tcGxpYW50Lgo+ID4gPiBJIHRo aW5rIHRoZSBhbnN3ZXIgaXMgbm8gc2luY2UgdGhlIHNwZWMgYWxsb3dzIHRyYW5zaXRpb25hbCBk ZXZpY2UuCj4gPiA+IEFuZCB3ZSBrbm93IHRoaW5ncyB3aWxsIGJlIGdyZWF0bHkgc2ltcGxpZmll ZCBpZiB2RFBBIHN1cHBvcnQgbm9uCj4gPiA+IHRyYW5zaXRpb25hbCBkZXZpY2Ugb25seS4KPiA+ ID4KPiA+ID4gU28gd2UgY2FuIGNoYW5nZSB0aGUgcXVlc3Rpb24gdG86Cj4gPiA+Cj4gPiA+IDEp IGRvIHdlIG5lZWQgKG9yIGlzIGl0IHRvbyBsYXRlKSB0byBlbmZvcmNlIG5vbiB0cmFuc2l0aW9u YWwgZGV2aWNlPwo+ID4gV2UgYWxyZWFkeSBoYXZlIEFsaWJhYmEgRU5JIHdoaWNoIGlzIHNvcnQg b2YgYSBxdWFzaS10cmFuc2l0aW9uYWwKPiA+IGRldmljZSwgcmlnaHQ/IEluIHRoZSBzZW5zZSBp dCBkb2Vzbid0IGFkdmVydGlzZSBWRVJTSU9OXzEuIEkga25vdyB0aGUKPiA+IG90aGVyIHBhcnRz IG1pZ2h0IG5vdCBxdWFsaWZ5IGl0IHRvIGJlIGZ1bGx5IHRyYW5zaXRpb25hbCwgYnV0IGNvZGUg bm93Cj4gPiBkb2Vzbid0IHByb2hpYml0IGl0IGZyb20gc3VwcG9ydGluZyBWRVJTSU9OXzEgbW9k ZXJuIGludGVyZmFjZSBkZXBlbmRpbmcKPiA+IG9uIHdoYXRldmVyIGZ1dHVyZSBuZWVkLgo+IAo+ IFdlIGNhbiBhc2sgRU5JIGRldmVsb3BlciBmb3IgdGhlaXIgZnV0dXJlIHBsYW4sIGl0IGxvb2tz IHRvIG1lIGEKPiBsZWdhY3kgb25seSBkZXZpY2Ugd291bGRuJ3QgYmUgaW50ZXJlc3RlZCBpbiB0 aGUgZnV0dXJlLgo+IAo+IFpvbmd5b25nLCBkbyB5b3UgaGF2ZSB0aGUgcGxhbiB0byBpbXBsZW1l bnQgZGV2aWNlIHdpdGggVkVSU0lPTl8xIHN1cHBvcnQ/Cj4gCj4gPiA+IDIpIGlmIHllcywgY2Fu IHRyYW5zaXRpb25hbCBkZXZpY2UgYmUgbWVkaWF0ZSBpbiBhbiBlZmZpY2llbnQgd2F5Pwo+ID4g Pgo+ID4gPiBGb3IgMSksIGl0J3MgcHJvYmFibHkgdG9vIGxhdGUgYnV0IHdlIGNhbiBpbnZlbnQg bmV3IHZEUEEgZmVhdHVyZXMgYXMKPiA+ID4geW91IHN1Z2dlc3QgdG8gYmUgbm9uIHRyYW5zaXRp b25hbC4gVGhlbiB3ZSBjYW46Cj4gPiA+Cj4gPiA+IDEuMSkgZXh0ZW5kIHRoZSBuZXRsaW5rIEFQ SSB0byBwcm92aXNpb24gbm9uLXRyYW5zaXRvbmFsIGRldmljZQo+ID4gRGVmaW5lIG5vbi10cmFu c2l0aW9uYWw6IGRldmljZSBjb3VsZCBiZSBlaXRoZXIgbW9kZXJuLW9ubHkgb3IgbGVnYWN5LW9u bHk/Cj4gCj4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBub24tdHJhbnNpdGlvbmFsIHNob3VsZCBi ZSBtb2Rlcm4gb25seS4KPiAKPiA+ID4gMS4yKSB3b3JrIG9uIHRoZSBub24tdHJhbnN0aW9uYWwg ZGV2aWNlIGluIHRoZSBmdXR1cmUKPiA+ID4gMS4zKSBwcmVzZW50aW5nIHRyYW5zaXRpb25hbCBk ZXZpY2UgdmlhIG1lZGlhdGlvbgo+ID4gcHJlc2VudGluZyB0cmFuc2l0aW9uYWwgb24gdG9wIG9m IGEgbW9kZXJuIGRldmljZSB3aXRoIFZFUlNJT05fMSwgcmlnaHQ/Cj4gCj4gWWVzLCBJIG1lYW4g cHJlc2VudGluZy9tZWRpYXRpbmcgYSB0cmFuc2l0aW9uYWwgZGV2aWNlIG9uIHRvcCBvZiBhCj4g bm9uLXRyYW5zaXRpb25hbCBkZXZpY2UuCj4gCj4gPiBXaGF0IGlmIHRoZSBoYXJkd2FyZSBkZXZp Y2UgY2FuIHN1cHBvcnQgbGVnYWN5LWNvbXBhdGlibGUgZGF0YXBhdGgKPiA+IG5hdGl2ZWx5IHRo YXQgZG9lc24ndCBuZWVkIG1lZGlhdGlvbj8gQ2FuIGl0IGJlIGRvbmUgd2l0aCBkaXJlY3QKPiA+ IGRhdGFwYXRoIHBhc3N0aHJvdWdoIHdpdGhvdXQgc3ZxIGludm9sdmVtZW50Pwo+IAo+IEknZCBs aWtlIHRvIGF2b2lkIHN1cHBvcnRpbmcgbGVnYWN5LW9ubHkgZGV2aWNlIGxpa2UgRU5JIGluIHRo ZQo+IGZ1dHVyZS4gVGhlIG1ham9yIHByb2JsZW0gaXMgdGhhdCBpdCdzIG91dCBvZiB0aGUgc3Bl YyB0aHVzIHRoZQo+IGJlaGF2aW91ciBpcyBkZWZpbmVkIGJ5IHRoZSBjb2RlIG5vdCB0aGUgc3Bl Yy4KPiAKPiA+Cj4gPiA+Cj4gPiA+IFRoZSBwcmV2aW91cyB0cmFuc2l0aW9uYWwgdkRQQSB3b3Jr IGFzIGlzLCBpdCdzIHByb2JhYmx5IHRvbyBsYXRlIHRvCj4gPiA+IGZpeCBhbGwgdGhlIGlzc3Vl IHdlIHN1ZmZlci4KPiA+IFdoYXQgZG8geW91IG1lYW4gd29yayBhcy1pcywKPiAKPiBTZWUgYWJv dmUsIGJhc2ljYWxseSBJIG1lYW4gdGhlIGJlaGF2aW91ciBpcyBkZWZpbmVkIGJ5IHRoZSB2RFBB IGNvZGUKPiBub3QgKG9yIGNhbid0KSBieSB0aGUgc3BlYy4KPiAKPiBGb3IgZXhhbXBsZSwgZm9y IHZpcnRpby1wY2ksIHdlIGhhdmU6Cj4gCj4gbGVnYWN5IGludGVyZmFjZTogQkFSCj4gbW9kZXJu IGludGVyZmFjZTogY2FwYWJpbGl0eQo+IAo+IFNvIGEgdHJhbnNpdGlvbmFsIGRldmljZSBjYW4g c2ltcGxlIHByb3ZpZGUgYm90aCBvZiB0aG9zZSBpbnRlcmZhY2VzOgo+IEUuZyBmb3IgZGV2aWNl IGNvbmZpZ3VyYXRpb24gc3BhY2UsIGlmIGl0IGlzIGFjY2Vzc2VkIHZpYSBsZWdhY3kKPiBpbnRl cmZhY2UgZGV2aWNlIGtub3cgaXQgbmVlZHMgdG8gcHJvdmlkZSB0aGUgY29uZmlnIHdpdGggbmF0 aXZlCj4gZW5kaWFuIG90aGVyd2lzZSBsaXR0bGUgZW5kaWFuIHdoZW4gYWNjZXNzaW5nIHZpYSBt b2Rlcm4gaW50ZXJmYWNlLgo+IAo+IEZvciB2aXJ0aW8tbW1pbywgaXQgbG9va3MgdG8gbWUgaXQg ZG9lc24ndCBwcm92aWRlIGEgd2F5IGZvcgo+IHRyYW5zaXRpb25hbCBkZXZpY2UuCj4gCj4gRm9y IHZEUEEsIHdlIGFjdHVhbGx5IGRvbid0IGRlZmluZSB3aGV0aGVyIGNvbmZpZ19vcHMgaXMgYSBt b2Rlcm4gb3IKPiBsZWdhY3kgaW50ZXJmYWNlLiBUaGlzIGlzIHZlcnkgdHJpY2t5IGZvciB0aGUg dHJhbnNpdGlvbmFsIGRldmljZQo+IHNpbmNlIGl0IHRyaWVzIHRvIHJldXNlIHRoZSBzYW1lIGlu dGVyZmFjZSBmb3IgYm90aCBsZWdhY3kgYW5kIG1vZGVybgo+IHdoaWNoIG1ha2UgaXQgdmVyeSBo YXJkIHRvIGJlIGNvcnJlY3QuIEUuZzoKPiAKPiAxKSBWRVJTSU9OXzEgdHJpY2sgd29uJ3Qgd29y aywgZS5nIHRoZSBzcGVjIGFsbG93cyB0byByZWFkIGRldmljZQo+IGNvbmZpZ3VyYXRpb24gc3Bh Y2UgYmVmb3JlIEZFQVRVUkVfT0suIFNvIGxlZ2FjeSBkcml2ZXIgbWF5IGFzc3VtZSBhCj4gbmF0 aXZlIGVuZGlhbi4KCkkgYW0gdHJ5aW5nIHRvIGFkZHJlc3MgdGhpcyBpbiB0aGUgc3BlYy4gVGhl cmUgd2FzIGEgZmFpcmx5IG5hcnJvdwp3aW5kb3cgZHVyaW5nIHdoaWNoIGd1ZXN0cyBhY2Nlc3Nl ZCBjb25maWcgc3BhY2UgYmVmb3JlCndyaXRpbmcgb3V0IGZlYXR1cmVzLiBZZXMgYmVmb3JlIEZF QVRVUkVTX09LIGJ1dCBJIHRoaW5rCmFza2luZyB0aGF0IGd1ZXN0cyBzZW5kIHRoZSBmZWF0dXJl cyB0byBkZXZpY2UKYmVmb3JlIHBva2luZyBhdCBjb25maWcgc3BhY2UgdGhhdCBkZXBlbmRzIG9u IHRob3NlCmZlYXR1cmVzIGlzIHJlYXNvbmFibGUuCgpTaW1pbGFybHksIHdlIGNhbiBhbHNvIGNo YW5nZSBRRU1VIHRvIHNlbmQKZmVhdHVyZXMgdG8gdmRwYSBvbiBjb25maWcgYWNjZXNzIHRoYXQg aGFwcGVucyBiZWZvcmUKRkVBVFVSRVNfT0suCgoKCj4gMikgU0VUX1ZSSU5HX0VORElBTiBkb2Vz bid0IGZpeCBhbGwgdGhlIGlzc3VlLCB0aGVyZSdzIHN0aWxsIGEKPiBxdWVzdGlvbiB3aGF0IGVu ZGlhbiBpdCBpcyBiZWZvcmUgU0VUX1ZSSU5HX0VORElBTiAob3Igd2UgbmVlZCB0bwo+IHN1cHBv cnQgdXNlcnNwYWNlIHdpdGhvdXQgU0VUX1ZSSU5HX0VORElBTikKPiAuLi4KPiAKPiBUaGluZ3Mg d2lsbCBiZSBzaW1wbGlmaWVkIGlmIHdlIG1hbmRhdGUgdGhlIGNvbmZpZ19vcHMgYXMgdGhlIG1v ZGVybgo+IGludGVyZmFjZSBhbmQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IG1lZGlhdGlvbiBpbiB0 aGUgaHlwZXJ2aXNvci4KPiAKPiA+IHdoYXQncyB0aGUgbm9tZW5jbGF0dXJlIGZvciB0aGF0LAo+ ID4gcXVhc2ktdHJhbnNpdGlvbmFsIG9yIGJyb2tlbi10cmFuc2l0aW9uYWw/Cj4gCj4gSWYgd2Ug aW52ZW50IG5ldyBBUEkgdG8gY2xhcmlmeSB0aGUgbW9kZXJuL2xlZ2FjeSBhbmQgZm9jdXMgb24g dGhlCj4gbW9kZXJuIGluIHRoZSBmdXR1cmUsIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgYSBuYW1l PwoKT0suIFdoYXQgd2lsbCB0aGF0IEFQSSBiZSBsaWtlPyBNYXliZSBhIGJpdCBpbiBQUk9UT0NP TF9GRUFUVVJFUz8KCj4gPiBhbmQgd2hhdCBhcmUgdGhlIG91dHN0YW5kaW5nCj4gPiBpc3N1ZXMg eW91IGFudGljaXBhdGUgcmVtYWluaW5nPwo+IAo+IEJhc2ljYWxseSB3ZSBuZWVkIHRvIGNoZWNr IHRoZSBjb25mb3JtYW5jZSBsaXN0ZWQgaW4gc2VjdGlvbiA3LjQgb2YgdGhlIHNwZWMuCj4gCj4g PiBJZiBpdCBpcyBkZXZpY2Ugc3BlY2lmaWMgb3IgdmVuZG9yCj4gPiBkcml2ZXIgc3BlY2lmaWMs IGxldCBpdCBiZS4gQnV0IEkgd29uZGVyIGlmIHRoZXJlJ3MgYW55IGdlbmVyaWMgb25lIHRoYXQK PiA+IGhhcyB0byBiZSBmaXhlZCBpbiB2ZHBhIGNvcmUgdG8gc3VwcG9ydCBhIHRydWx5IHRyYW5z aXRpb25hbCBtb2RlbC4KPiAKPiBUd28gc2V0IG9mIGNvbmZpZ19vcHM/IEUuZwo+IAo+IGxlZ2Fj eV9jb25maWdfb3BzCj4gbW9kZXJuX2NvbmZpZ19vcHMKPiAKPiBCdXQgSSdtIG5vdCBzdXJlIHdo ZXRoZXIgb3Igbm90IGl0J3Mgd29ydGh3aGlsZS4KPiAKPiA+ID4KPiA+ID4gRm9yIDIpLCB0aGUg a2V5IHBhcnQgaXMgdGhlIGRhdGFwYXRoIG1lZGlhdGlvbiwgd2UgY2FuIHVzZSBzaGFkb3cgdmly dHF1ZXVlLgo+ID4gU3VyZS4gRm9yIG91ciB1c2UgY2FzZSwgd2UnZCBjYXJlIG1vcmUgaW4gcHJv dmlkaW5nIHRyYW5zaXRpb25hbCByYXRoZXIKPiA+IHRoYW4gYmVpbmcgbm9uLXRyYW5zaXRpb25h bC4gU28sIG9uZSBkZXZpY2UgZml0cyBhbGwuCj4gPgo+ID4gVGhhbmtzIGZvciBhbGwgdGhlIGlk ZWFzLiBUaGlzIGRpc2N1c3Npb24gaXMgcmVhbGx5IHVzZWZ1bC4KPiAKPiBBcHByZWNpYXRlIGZv ciB0aGUgZGlzY3Vzc2lvbi4KPiAKPiBUaGFua3MKPiAKPiA+Cj4gPiBCZXN0LAo+ID4gLVNpd2Vp Cj4gPiA+Cj4gPiA+Pj4gSWYgd2UgYWxsb3cgdGhlbSB0byByZWplY3QgdGhlIFZIT1NUX1NFVF9W UklOR19FTkRJQU4gIG9yCj4gPiA+Pj4gVkhPU1RfU0VUX0NPTkZJR19FTkRJQU4gY2FsbCwgd2hh dCBjb3VsZCB3ZSBkbz8gV2Ugd291bGQgc3RpbGwgZW5kIHVwCj4gPiA+Pj4gd2l0aCBzYW1lIHNp dHVhdGlvbiBvZiBlaXRoZXIgZmFpbCB0aGUgZ3Vlc3QsIG9yIHRyeWluZyB0bwo+ID4gPj4+IG1l ZGlhdGUvZW11bGF0ZSwgcmlnaHQ/Cj4gPiA+Pj4KPiA+ID4+PiBOb3QgdG8gbWVudGlvbiBWSE9T VF9TRVRfVlJJTkdfRU5ESUFOIGlzIHJhcmVseSBzdXBwb3J0ZWQgYnkgdmhvc3QKPiA+ID4+PiB0 b2RheSAtIGZldyBkaXN0cm8ga2VybmVsIGhhcyBDT05GSUdfVkhPU1RfQ1JPU1NfRU5ESUFOX0xF R0FDWSBlbmFibGVkCj4gPiA+Pj4gYW5kIFFFTVUganVzdCBpZ25vcmVzIHRoZSByZXN1bHQuIHZo b3N0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZGVwZW5kIG9uCj4gPiA+Pj4gaXQgdG8gZGV0ZXJtaW5l IGVuZGlhbm5lc3MgaXQgbG9va3MuCj4gPiA+PiBJIHdvdWxkIGxpa2UgdG8gc3VnZ2VzdCB0byBh ZGQgdHdvIG5ldyBjb25maWcgb3BzIGdldC9zZXRfdnFfZW5kaWFuKCkKPiA+ID4+IGFuZCBnZXQv c2V0X2NvbmZpZ19lbmRpYW4oKSBmb3IgdkRQQS4gVGhpcyBpcyB1c2VkIHRvOgo+ID4gPj4gYSkg c3VwcG9ydCBWSE9TVF9HRVQvU0VUX1ZSSU5HX0VORElBTiBhcyBNU1Qgc3VnZ2VzdGVkLCBhbmQg YWRkCj4gPiA+PiBWSE9TVF9TRVQvR0VUX0NPTkZJR19FTkRJQU4gZm9yIHZob3N0X3ZkcGEuCj4g PiA+PiBJZiB0aGUgZGV2aWNlIGhhcyBub3QgaW1wbGVtZW50ZWQgaW50ZXJmYWNlIHRvIHNldCBp dHMgZW5kaWFuZXNzLCB0aGVuCj4gPiA+PiBubyBtYXR0ZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9m IFNFVF9FTkRJQU4sIFFFTVUga25vd3MgdGhlIGVuZGlhbi1uZXNzCj4gPiA+PiBhbnl3YXkuCj4g PiA+IEhvdyBjYW4gUWVtdSBrbm93IHRoZSBlbmRpYW4gaW4gdGhpcyB3YXk/IEFuZCBpZiBpdCBj YW4sIHRoZXJlJ3Mgbm8KPiA+ID4gbmVlZCBmb3IgdGhlIG5ldyBBUEk/Cj4gPiA+Cj4gPiA+PiBJ biB0aGlzIGNhc2UsIGlmIHRoZSBkZXZpY2UgZW5kaWFuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBn dWVzdCwKPiA+ID4+IHRoZXJlIG5lZWRzIGEgbWVkaWF0aW9uIGxheWVyIG9yIGZhaWwuCj4gPiA+ PiBiKSBvcHMtPmdldF9jb25maWdfZW5kaWFuKCkgY2FuIGFsd2F5cyB0ZWxsIHRoZSBlbmRpYW4t bmVzcyBvZiB0aGUKPiA+ID4+IGRldmljZSBjb25maWcgc3BhY2UgYWZ0ZXIgdGhlIHZlbmRvciBk cml2ZXIgcHJvYmluZyB0aGUgZGV2aWNlLiBTbyB3ZQo+ID4gPj4gY2FuIHVzZSB0aGlzIG9wcy0+ Z2V0X2NvbmZpZ19lbmRpYW4oKSBmb3IKPiA+ID4+IE1UVSwgTUFDIGFuZCBvdGhlciBmaWVsZHMg aGFuZGxpbmcgaW4gdmRwYV9kZXZfbmV0X2NvbmZpZ19maWxsKCkgYW5kIHdlCj4gPiA+PiBkb24n dCBuZWVkIHRvIHNldF9mZWF0dXJlcyBpbiB2ZHBhX2dldF9jb25maWdfdW5sb2NrZWQoKSwgc28g bm8gcmFjZQo+ID4gPj4gY29uZGl0aW9ucy4KPiA+ID4+IEV2ZXJ5IHRpbWUgb3BzLT5nZXRfY29u ZmlnKCkgcmV0dXJuZWQsIHdlIGNhbiB0ZWxsIHRoZSBlbmRpYW4gYnkKPiA+ID4+IG9wcy1jb25m aWdfPmdldF9lbmRpYW4oKSwgd2UgZG9uJ3QgbmVlZCBzZXRfZmVhdHVyZXMoeHh4LCAwKSBpZiBm ZWF0dXJlcwo+ID4gPj4gbmVnb3RpYXRpb24gbm90IGRvbmUuCj4gPiA+Pgo+ID4gPj4gVGhlIHF1 ZXN0aW9uIGlzOiBEbyB3ZSBuZWVkIHR3byBwYWlycyBvZiBpb2N0bHMgZm9yIGJvdGggdnEgYW5k IGNvbmZpZwo+ID4gPj4gc3BhY2U/IENhbiBjb25maWcgc3BhY2UgZW5kaWFuLW5lc3MgZGlmZmVy IGZyb20gdGhlIHZxcz8KPiA+ID4+IGMpIGRvIHdlIG5lZWQgYSBuZXcgbmV0bGluayBhdHRyIHRl bGxpbmcgdGhlIGVuZGlhbi1uZXNzIHRvIHVzZXIgc3BhY2U/Cj4gPiA+IEdlbmVyYWxseSwgSSdt IG5vdCBzdXJlIHRoaXMgaXMgYSBnb29kIGRlc2lnbiBjb25zaWRlciBpdCBwcm92aWRlcyBuZWl0 aGVyOgo+ID4gPgo+ID4gPiBDb21wYXRpYmlsaXR5IHdpdGggdGhlIHZpcnRpbyBzcGVjCj4gPiA+ Cj4gPiA+IG5vcgo+ID4gPgo+ID4gPiBDb21wYXRpYmlsaXR5IHdpdGggdGhlIGV4aXN0aW5nIHZo b3N0IEFQSSAoVkhPU1RfU0VUX1ZSSU5HX0VORElBTikKPiA+ID4KPiA+ID4gVGhhbmtzCj4gPiA+ Cj4gPiA+PiBUaGFua3MsCj4gPiA+PiBaaHUgTGluZ3NoYW4KPiA+ID4+Pj4gb3IKPiA+ID4+Pj4K PiA+ID4+Pj4gMykgcmV2aXNpdCB0aGUgaWRlYSBvZiBmb3JjaW5nIG1vZGVybiBvbmx5IGRldmlj ZSB3aGljaCBtYXkgc2ltcGxpZnkKPiA+ID4+Pj4gdGhpbmdzIGEgbG90Cj4gPiA+Pj4gSSBhbSBu b3QgYWN0dWFsbHkgYWdhaW5zdCBmb3JjaW5nIG1vZGVybiBvbmx5IGNvbmZpZyBzcGFjZSwgZ2l2 ZW4gdGhhdAo+ID4gPj4+IGl0J3Mgbm90IGhhcmQgZm9yIGVpdGhlciBRRU1VIG9yIGluZGl2aWR1 YWwgZHJpdmVyIHRvIG1lZGlhdGUgb3IKPiA+ID4+PiBlbXVsYXRlLCBhbmQgZm9yIHRoZSBtb3N0 IHBhcnQgaXQncyBub3QgY29uZmxpY3Qgd2l0aCB0aGUgZ29hbCBvZgo+ID4gPj4+IG9mZmxvYWQg b3IgYWNjZWxlcmF0aW9uIHdpdGggdkRQQS4gQnV0IGZvcmNpbmcgTEUgcmluZyBsYXlvdXQgSU1P Cj4gPiA+Pj4gd291bGQganVzdCBraWxsIG9mZiB0aGUgcG90ZW50aWFsIG9mIGEgdmVyeSBnb29k IHVzZSBjYXNlLiBDdXJyZW50bHkKPiA+ID4+PiBmb3Igb3VyIHVzZSBjYXNlIHRoZSBwcmlvcml0 eSBmb3Igc3VwcG9ydGluZyAwLjkuNSBndWVzdCB3aXRoIHZEUEEgaXMKPiA+ID4+PiBzbGlnaHRs eSBsb3dlciBjb21wYXJlZCB0byBsaXZlIG1pZ3JhdGlvbiwgYnV0IGl0IGlzIHN0aWxsIGluIG91 ciBUT0RPCj4gPiA+Pj4gbGlzdC4KPiA+ID4+Pgo+ID4gPj4+IFRoYW5rcywKPiA+ID4+PiAtU2l3 ZWkKPiA+ID4+Pgo+ID4gPj4+PiB3aGljaCB3YXkgc2hvdWxkIHdlIGdvPwo+ID4gPj4+Pgo+ID4g Pj4+Pj4gSSBob3BlCj4gPiA+Pj4+PiBpdCdzIG5vdCB0aGUgbGF0dGVyLCBvdGhlcndpc2UgaXQg bG9zZXMgdGhlIHBvaW50IHRvIHVzZSB2RFBBIGZvcgo+ID4gPj4+Pj4gZGF0YXBhdGggYWNjZWxl cmF0aW9uLgo+ID4gPj4+Pj4KPiA+ID4+Pj4+IEV2ZW4gaWYgaXRzIHRoZSBmb3JtZXIsIGl0J3Mg YSBsaXR0bGUgd2VpcmQgZm9yIHZlbmRvciBkZXZpY2UgdG8KPiA+ID4+Pj4+IGltcGxlbWVudCBh IExFIGNvbmZpZyBzcGFjZSB3aXRoIEJFIHJpbmcgbGF5b3V0LCBhbHRob3VnaCBzdGlsbAo+ID4g Pj4+Pj4gcG9zc2libGUuLi4KPiA+ID4+Pj4gUmlnaHQuCj4gPiA+Pj4+Cj4gPiA+Pj4+IFRoYW5r cwo+ID4gPj4+Pgo+ID4gPj4+Pj4gLVNpd2VpCj4gPiA+Pj4+Pj4gVGhhbmtzCj4gPiA+Pj4+Pj4K PiA+ID4+Pj4+Pgo+ID4gPj4+Pj4+Pj4gU28gaWYgeW91IHRoaW5rIHdlIHNob3VsZCBhZGQgYSB2 ZHBhX29wcy0+Z2V0X2VuZGlhbigpLAo+ID4gPj4+Pj4+Pj4gSSB3aWxsIGRyb3AgdGhlc2UgY29t bWVudHMgaW4gdGhlIG5leHQgdmVyc2lvbiBvZgo+ID4gPj4+Pj4+Pj4gc2VyaWVzLCBhbmQgd29y ayBvbiBhIG5ldyBwYXRjaCBmb3IgZ2V0X2VuZGlhbigpLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+ Pj4+IFRoYW5rcywKPiA+ID4+Pj4+Pj4+IFpodSBMaW5nc2hhbgo+ID4gPj4+Pj4+PiBHdWVzdHMg ZG9uJ3QgZ2V0IGVuZGlhbi1uZXNzIGZyb20gZGV2aWNlcyBzbyB0aGlzIHNlZW1zIHBvaW50bGVz cy4KPiA+ID4+Pj4+Pj4KPiA+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlz dHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3Jn L21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=