From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC Design Doc v2] Add vNVDIMM support for Xen Date: Mon, 18 Jul 2016 08:29:12 +0800 Message-ID: <20160718002912.rva5n5jbrezdchwx@hz-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" Cc: Juergen Gross , "Zhang, Haozhong" , "Tian, Kevin" , Stefano Stabellini , Wei Liu , "Nakajima, Jun" , George Dunlap , Andrew Cooper , Ian Jackson , Jan Beulich , Xiao Guangrong List-Id: xen-devel@lists.xenproject.org SGksCgpGb2xsb3dpbmcgaXMgdmVyc2lvbiAyIG9mIHRoZSBkZXNpZ24gZG9jIGZvciBzdXBwb3J0 aW5nIHZOVkRJTU0gaW4KWGVuLiBJdCdzIGJhc2ljYWxseSB0aGUgc3VtbWFyeSBvZiBkaXNjdXNz aW9uIG9uIHByZXZpb3VzIHYxIGRlc2lnbgooaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9h cmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDE2LTAyL21zZzAwMDA2Lmh0bWwpLgpBbnkgY29tbWVu dHMgYXJlIHdlbGNvbWUuIFRoZSBjb3JyZXNwb25kaW5nIHBhdGNoZXMgYXJlIFdJUC4KClRoYW5r cywKSGFvemhvbmcKCgoKdk5WRElNTSBEZXNpZ24gdjIKCkNoYW5nZXMgaW4gdjI6CiAtIFJld3Jp dGUgdGhlIHRoZSBkZXNpZ24gZGV0YWlscyBiYXNlZCBvbiBwcmV2aW91cyBkaXNjdXNzaW9uIFs3 XS4KIC0gQWRkIFNlY3Rpb24gMyBVc2FnZSBFeGFtcGxlIG9mIHZOVkRJTU0gaW4gWGVuLgogLSBS ZW1vdmUgY29udGVudCBhYm91dCBwY29tbWl0IGluc3RydWN0aW9uIHdoaWNoIGhhcyBiZWVuIGRl cHJlY2F0ZWQgWzhdLgoKQ29udGVudAo9PT09PT09CjEuIEJhY2tncm91bmQKIDEuMSBBY2Nlc3Mg TWVjaGFuaXNtczogUGVyc2lzdGVudCBNZW1vcnkgYW5kIEJsb2NrIFdpbmRvdwogMS4yIEFDUEkg U3VwcG9ydAogIDEuMi4xIE5GSVQKICAxLjIuMiBfRFNNIGFuZCBfRklUCiAxLjMgTmFtZXNwYWNl CiAxLjQgY2x3Yi9jbGZsdXNob3B0CjIuIE5WRElNTS92TlZESU1NIFN1cHBvcnQgaW4gTGludXgg S2VybmVsL0tWTS9RRU1VCiAyLjEgTlZESU1NIERyaXZlciBpbiBMaW51eCBLZXJuZWwKIDIuMiB2 TlZESU1NIEltcGxlbWVudGF0aW9uIGluIEtWTS9RRU1VCjMuIFVzYWdlIEV4YW1wbGUgb2Ygdk5W RElNTSBpbiBYZW4KNC4gRGVzaWduIG9mIHZOVkRJTU0gaW4gWGVuCiA0LjEgR3Vlc3QgY2x3Yi9j bGZsdXNob3B0IEVuYWJsaW5nCiA0LjIgcG1lbSBBZGRyZXNzIE1hbmFnZW1lbnQKICA0LjIuMSBS ZXNlcnZlIFN0b3JhZ2UgZm9yIE1hbmFnZW1lbnQgU3RydWN0dXJlcwogIDQuMi4yIERldGVjdGlv biBvZiBIb3N0IHBtZW0gRGV2aWNlcwogIDQuMi4zIEdldCBIb3N0IE1hY2hpbmUgQWRkcmVzcyAo U1BBKSBvZiBIb3N0IHBtZW0gRmlsZXMKICA0LjIuNCBNYXAgSG9zdCBwbWVtIHRvIEd1ZXN0cwog IDQuMi41IE1pc2MgMTogUkFTCiAgNC4yLjYgTWlzYyAyOiBob3RwbHVnCiA0LjMgR3Vlc3QgQUNQ SSBFbXVsYXRpb24KICA0LjMuMSBCdWlsZGluZyBHdWVzdCBBQ1BJIFRhYmxlcwogIDQuMy4yIEVt dWxhdGluZyBHdWVzdCBfRFNNClJlZmVyZW5jZXMKCgpOb24tVm9sYXRpbGUgRElNTSBvciBOVkRJ TU0gaXMgYSB0eXBlIG9mIFJBTSBkZXZpY2UgdGhhdCBwcm92aWRlcwpwZXJzaXN0ZW50IHN0b3Jh Z2UgYW5kIHJldGFpbnMgZGF0YSBhY3Jvc3MgcmVib290IGFuZCBldmVuIHBvd2VyCmZhaWx1cmVz LiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGVzaWduIHRvIHByb3ZpZGUgdmlydHVhbCBO VkRJTU0KZGV2aWNlcyBvciB2TlZESU1NIGluIFhlbi4KClRoZSByZXN0IG9mIHRoaXMgZG9jdW1l bnQgaXMgb3JnYW5pemVkIGFzIGJlbG93LgogLSBTZWN0aW9uIDEgaW50cm9kdWNlcyB0aGUgYmFj a2dyb3VuZCBrbm93bGVkZ2Ugb2YgTlZESU1NIGhhcmR3YXJlLAogICB3aGljaCBpcyB1c2VkIGJ5 IG90aGVyIHBhcnRzIG9mIHRoaXMgZG9jdW1lbnQuCgogLSBTZWN0aW9uIDIgYnJpZWZseSBpbnRy b2R1Y2VzIHRoZSBjdXJyZW50L2Z1dHVyZSBOVkRJTU0vdk5WRElNTQogICBzdXBwb3J0IGluIExp bnV4IGtlcm5lbC9LVk0vUUVNVS4gVGhleSB3aWxsIGFmZmVjdCB0aGUgdk5WRElNTQogICBkZXNp Z24gaW4gWGVuLgoKIC0gU2VjdGlvbiAzIHNob3dzIHRoZSBiYXNpYyB1c2FnZSBleGFtcGxlIG9m IHZOVkRJTU0gaW4gWGVuLgoKIC0gU2VjdGlvbiA0IHByb3Bvc2VzIGRlc2lnbiBkZXRhaWxzIG9m IHZOVkRJTU0gaW4gWGVuLgoKCgoxLiBCYWNrZ3JvdW5kCgoxLjEgQWNjZXNzIE1lY2hhbmlzbXM6 IFBlcnNpc3RlbnQgTWVtb3J5IGFuZCBCbG9jayBXaW5kb3cKCiBOVkRJTU0gcHJvdmlkZXMgdHdv IGFjY2VzcyBtZWNoYW5pc21zOiBieXRlLWFkZHJlc3NhYmxlIHBlcnNpc3RlbnQKIG1lbW9yeSAo cG1lbSkgYW5kIGJsb2NrIHdpbmRvdyAocGJsaykuIEFuIE5WRElNTSBjYW4gY29udGFpbiBtdWx0 aXBsZQogcmFuZ2VzIGFuZCBlYWNoIHJhbmdlIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVpdGhl ciBwbWVtIG9yIHBibGsKIChidXQgbm90IGJvdGgpLgoKIEJ5dGUtYWRkcmVzc2FibGUgcGVyc2lz dGVudCBtZW1vcnkgbWVjaGFuaXNtIChwbWVtKSBtYXBzIE5WRElNTSBvcgogcmFuZ2VzIG9mIE5W RElNTSBpbnRvIHRoZSBzeXN0ZW0gcGh5c2ljYWwgYWRkcmVzcyAoU1BBKSBzcGFjZSwgc28KIHRo YXQgc29mdHdhcmUgY2FuIGFjY2VzcyBOVkRJTU0gdmlhIG5vcm1hbCBtZW1vcnkgbG9hZHMgYW5k CiBzdG9yZXMuIElmIHRoZSB2aXJ0dWFsIGFkZHJlc3MgaXMgdXNlZCwgdGhlbiBNTVUgd2lsbCB0 cmFuc2xhdGUgaXQgdG8KIHRoZSBwaHlzaWNhbCBhZGRyZXNzLgoKIEluIHRoZSB2aXJ0dWFsaXph dGlvbiBjaXJjdW1zdGFuY2UsIHdlIGNhbiBwYXNzIHRocm91Z2ggYSBwbWVtIHJhbmdlCiBvciBw YXJ0aWFsIG9mIGl0IHRvIGEgZ3Vlc3QgYnkgbWFwcGluZyBpdCBpbiBFUFQgKGkuZS4gbWFwcGlu ZyBndWVzdAogdk5WRElNTSBwaHlzaWNhbCBhZGRyZXNzIHRvIGhvc3QgTlZESU1NIHBoeXNpY2Fs IGFkZHJlc3MpLCBzbyB0aGF0CiBndWVzdCBhY2Nlc3NlcyBhcmUgYXBwbGllZCBkaXJlY3RseSB0 byB0aGUgaG9zdCBOVkRJTU0gZGV2aWNlIHdpdGhvdXQKIGh5cGVydmlzb3IncyBpbnRlcmNlcHRp b25zLgoKIEJsb2NrIHdpbmRvdyBtZWNoYW5pc20gKHBibGspIHByb3ZpZGVzIG9uZSBvciBtdWx0 aXBsZSBibG9jayB3aW5kb3dzCiAoQlcpLiAgRWFjaCBCVyBpcyBjb21wb3NlZCBvZiBhIGNvbW1h bmQgcmVnaXN0ZXIsIGEgc3RhdHVzIHJlZ2lzdGVyCiBhbmQgYSA4IEtieXRlcyBhcGVydHVyZSBy ZWdpc3Rlci4gU29mdHdhcmUgZmlsbHMgdGhlIGRpcmVjdGlvbiBvZiB0aGUKIHRyYW5zZmVyIChy ZWFkL3dyaXRlKSwgdGhlIHN0YXJ0IGFkZHJlc3MgKExCQSkgYW5kIHNpemUgb24gTlZESU1NIGl0 CiBpcyBnb2luZyB0byB0cmFuc2Zlci4gSWYgbm90aGluZyBnb2VzIHdyb25nLCB0aGUgdHJhbnNm ZXJyZWQgZGF0YSBjYW4KIGJlIHJlYWQvd3JpdGUgdmlhIHRoZSBhcGVydHVyZSByZWdpc3Rlci4g VGhlIHN0YXR1cyBhbmQgZXJyb3JzIG9mIHRoZQogdHJhbnNmZXIgY2FuIGJlIGdvdCBmcm9tIHRo ZSBzdGF0dXMgcmVnaXN0ZXIuIE90aGVyIHZlbmRvci1zcGVjaWZpYwogY29tbWFuZHMgYW5kIHN0 YXR1cyBjYW4gYmUgaW1wbGVtZW50ZWQgZm9yIEJXIGFzIHdlbGwuIERldGFpbHMgb2YgdGhlCiBi bG9jayB3aW5kb3cgYWNjZXNzIG1lY2hhbmlzbSBjYW4gYmUgZm91bmQgaW4gWzNdLgoKIEluIHRo ZSB2aXJ0dWFsaXphdGlvbiBjaXJjdW1zdGFuY2UsIGRpZmZlcmVudCBwYmxrIHJlZ2lvbnMgb24g YQogc2luZ2xlIE5WRElNTSBkZXZpY2UgbWF5IGJlIGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBndWVz dHMsIHNvIHRoZQogaHlwZXJ2aXNvciBuZWVkcyB0byBlbXVsYXRlIEJXLCB3aGljaCB3b3VsZCBp bnRyb2R1Y2UgYSBoaWdoIG92ZXJoZWFkCiBmb3IgSS9PIGludGVuc2l2ZSB3b3JrbG9hZC4KCiBU aGVyZWZvcmUsIHdlIGFyZSBnb2luZyB0byBvbmx5IGltcGxlbWVudCBwbWVtIGZvciB2TlZESU1N LiBUaGUgcmVzdAogb2YgdGhpcyBkb2N1bWVudCB3aWxsIG1vc3RseSBjb25jZW50cmF0ZSBvbiBw bWVtLgoKCjEuMiBBQ1BJIFN1cHBvcnQKCiBBQ1BJIHByb3ZpZGVzIHR3byBmYWN0b3JzIG9mIHN1 cHBvcnQgZm9yIE5WRElNTS4gRmlyc3QsIE5WRElNTQogZGV2aWNlcyBhcmUgZGVzY3JpYmVkIGJ5 IGZpcm13YXJlIChCSU9TL0VGSSkgdG8gT1MgdmlhIEFDUEktZGVmaW5lZAogTlZESU1NIEZpcm13 YXJlIEludGVyZmFjZSBUYWJsZSAoTkZJVCkuIFNlY29uZCwgc2V2ZXJhbCBmdW5jdGlvbnMgb2YK IE5WRElNTSwgaW5jbHVkaW5nIG9wZXJhdGlvbnMgb24gbmFtZXNwYWNlIGxhYmVscywgUy5NLkEu Ui5UIGFuZAogaG90cGx1ZywgYXJlIHByb3ZpZGVkIGJ5IEFDUEkgbWV0aG9kcyAoX0RTTSBhbmQg X0ZJVCkuCgoxLjIuMSBORklUCgogTkZJVCBpcyBhIG5ldyBzeXN0ZW0gZGVzY3JpcHRpb24gdGFi bGUgYWRkZWQgaW4gQUNQSSB2NiB3aXRoCiBzaWduYXR1cmUgIk5GSVQiLiBJdCBjb250YWlucyBh IHNldCBvZiBzdHJ1Y3R1cmVzLgoKIC0gU3lzdGVtIFBoeXNpY2FsIEFkZHJlc3MgUmFuZ2UgU3Ry dWN0dXJlCiAgIChTUEEgUmFuZ2UgU3RydWN0dXJlKQoKICAgU1BBIHJhbmdlIHN0cnVjdHVyZSBk ZXNjcmliZXMgc3lzdGVtIHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2VzCiAgIG9jY3VwaWVkIGJ5IE5W RElNTXMgYW5kIHR5cGVzIG9mIHJlZ2lvbnMuCgogICBJZiBBZGRyZXNzIFJhbmdlIFR5cGUgR1VJ RCBmaWVsZCBvZiBhIFNQQSByYW5nZSBzdHJ1Y3R1cmUgaXMgIkJ5dGUKICAgQWRkcmVzc2FibGUg UGVyc2lzdGVudCBNZW1vcnkgKFBNKSBSZWdpb24iLCB0aGVuIHRoZSBzdHJ1Y3R1cmUKICAgZGVz Y3JpYmVzIGEgTlZESU1NIHJlZ2lvbiB0aGF0IGlzIGFjY2Vzc2VkIHZpYSBwbWVtLiBUaGUgU3lz dGVtCiAgIFBoeXNpY2FsIEFkZHJlc3MgUmFuZ2UgQmFzZSBhbmQgTGVuZ3RoIGZpZWxkcyBkZXNj cmliZSB0aGUgc3RhcnQKICAgc3lzdGVtIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBsZW5ndGgg dGhhdCBpcyBvY2N1cGllZCBieSB0aGF0CiAgIE5WRElNTSByZWdpb24uCgogICBBIFNQQSByYW5n ZSBzdHJ1Y3R1cmUgaXMgaWRlbnRpZmllZCBieSBhIG5vbi16ZXJvIFNQQSByYW5nZQogICBzdHJ1 Y3R1cmUgaW5kZXguCgogICBOb3RlOiBbMV0gcmVzZXJ2ZXMgRTgyMCB0eXBlIDc6IE9TUE0gbXVz dCBjb21wcmVoZW5kIHRoaXMgbWVtb3J5IGFzCiAgICAgICAgIGhhdmluZyBub24tdm9sYXRpbGUg YXR0cmlidXRlcyBhbmQgaGFuZGxlIGRpc3RpbmN0IGZyb20KICAgICAgICAgY29udmVudGlvbmFs IHZvbGF0aWxlIG1lbW9yeSAoaW4gVGFibGUgMTUtMzEyIG9mIFsxXSkuIFRoZQogICAgICAgICBt ZW1vcnkgcmVnaW9uIHN1cHBvcnRzIGJ5dGUtYWRkcmVzc2FibGUgbm9uLXZvbGF0aWxpdHkuIEU4 MjAKICAgICAgICAgdHlwZSAxMiAoT0VNIGRlZmluZWQpIG1heSBiZSBhbHNvIHVzZWQgZm9yIGxl Z2FjeSBOVkRJTU0KICAgICAgICAgcHJpb3IgdG8gQUNQSSB2Ni4KCiAgIE5vdGU6IEJlc2lkZXMg T1MsIEVGSSBmaXJtd2FyZSBtYXkgYWxzbyBwYXJzZSBORklUIGZvciBib290aW5nCiAgICAgICAg IGRyaXZlcyAoU2VjdGlvbiA5LjMuNi45IG9mIFs1XSkuCgogLSBNZW1vcnkgRGV2aWNlIHRvIFN5 c3RlbSBQaHlzaWNhbCBBZGRyZXNzIFJhbmdlIE1hcHBpbmcgU3RydWN0dXJlCiAgIChSYW5nZSBN YXBwaW5nIFN0cnVjdHVyZSkKCiAgIEFuIE5WRElNTSByZWdpb24gZGVzY3JpYmVkIGJ5IGEgU1BB IHJhbmdlIHN0cnVjdHVyZSBjYW4gYmUKICAgaW50ZXJsZWF2ZWQgYWNyb3NzIG11bHRpcGxlIE5W RElNTSBkZXZpY2VzLiBBIHJhbmdlIG1hcHBpbmcKICAgc3RydWN0dXJlIGlzIHVzZWQgdG8gZGVz Y3JpYmUgdGhlIHNpbmdsZSBtYXBwaW5nIG9uIGVhY2ggTlZESU1NCiAgIGRldmljZS4gSXQgZGVz Y3JpYmVzIHRoZSBzaXplIGFuZCB0aGUgb2Zmc2V0IGluIGEgU1BBIHJhbmdlIHRoYXQgYW4KICAg TlZESU1NIGRldmljZSBvY2N1cGllcy4gSXQgbWF5IHJlZmVyIHRvIGFuIEludGVybGVhdmUgU3Ry dWN0dXJlCiAgIHRoYXQgY29udGFpbnMgZGV0YWlscyBvZiB0aGUgZW50aXJlIGludGVybGVhdmUg c2V0LiBUaG9zZQogICBpbmZvcm1hdGlvbiBpcyB1c2VkIGluIHBibGsgYnkgdGhlIE5WRElNTSBk cml2ZXIgZm9yIGFkZHJlc3MKICAgdHJhbnNsYXRpb24uCgogICBUaGUgTlZESU1NIGRldmljZSBk ZXNjcmliZWQgYnkgdGhlIHJhbmdlIG1hcHBpbmcgc3RydWN0dXJlIGlzCiAgIGlkZW50aWZpZWQg YnkgYW4gdW5pcXVlIE5GSVQgRGV2aWNlIEhhbmRsZS4KCiBEZXRhaWxzIG9mIE5GSVQgYW5kIG90 aGVyIHN0cnVjdHVyZXMgY2FuIGJlIGZvdW5kIGluIFNlY3Rpb24gNS4yNSBpbiBbMV0uCgoxLjIu MiBfRFNNIGFuZCBfRklUCgogVGhlIEFDUEkgbmFtZXNwYWNlIGRldmljZSB1c2VzIF9ISUQgb2Yg QUNQSTAwMTIgdG8gaWRlbnRpZnkgdGhlIHJvb3QKIE5WRElNTSBpbnRlcmZhY2UgZGV2aWNlLiBB biBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UgaXMgYWxzbyBwcmVzZW50CiB1bmRlciB0aGUgcm9vdCBk ZXZpY2UgRm9yIGVhY2ggTlZESU1NIGRldmljZS4gQWJvdmUgQUNQSSBuYW1lc3BhY2UKIGRldmlj ZXMgYXJlIGRlZmluZWQgaW4gU1NEVC4KCiBfRFNNIG1ldGhvZHMgYXJlIHByZXNlbnQgdW5kZXIg dGhlIHJvb3QgZGV2aWNlIGFuZCBlYWNoIE5WRElNTQogZGV2aWNlLiBfRFNNIG1ldGhvZHMgYXJl IHVzZWQgYnkgZHJpdmVycyB0byBhY2Nlc3MgdGhlIGxhYmVsIHN0b3JhZ2UKIGFyZWEsIGdldCBo ZWFsdGggaW5mb3JtYXRpb24sIHBlcmZvcm0gdmVuZG9yLXNwZWNpZmljIGNvbW1hbmRzLAogZXRj LiBEZXRhaWxzIG9mIGFsbCBfRFNNIG1ldGhvZHMgY2FuIGJlIGZvdW5kIGluIFs0XS4KCiBfRklU IG1ldGhvZCBpcyB1bmRlciB0aGUgcm9vdCBkZXZpY2UgYW5kIGV2YWx1YXRlZCBieSBPU1BNIHRv IGdldAogTkZJVCBvZiBob3RwbHVnZ2VkIE5WRElNTS4gVGhlIGhvdHBsdWdnZWQgTlZESU1NIGlz IGluZGljYXRlZCB0byBPUwogdXNpbmcgQUNQSSBOYW1lc3BhY2UgZGV2aWNlIHdpdGggUE5QSUQg b2YgUE5QMEM4MCBhbmQgdGhlIGRldmljZQogb2JqZWN0IG5vdGlmaWNhdGlvbiB2YWx1ZSBpcyAw eDgwLiBEZXRhaWxzIG9mIE5WRElNTSBob3RwbHVnIGNhbiBiZQogZm91bmQgaW4gU2VjdGlvbiA5 LjIwIG9mIFsxXS4KCgoxLjMgTmFtZXNwYWNlCgogWzJdIGRlc2NyaWJlcyBhIG1lY2hhbmlzbSB0 byBzdWItZGl2aWRlIE5WRElNTXMgaW50byBuYW1lc3BhY2VzLAogd2hpY2ggYXJlIGxvZ2ljIHVu aXRzIG9mIHN0b3JhZ2Ugc2ltaWxhciB0byBTQ1NJIExVTnMgYW5kIE5WTSBFeHByZXNzCiBuYW1l c3BhY2VzLgoKIFRoZSBuYW1lc3BhY2UgaW5mb3JtYXRpb24gaXMgZGVzY3JpYmVzIGJ5IG5hbWVz cGFjZSBsYWJlbHMgc3RvcmVkIGluCiB0aGUgcGVyc2lzdGVudCBsYWJlbCBzdG9yYWdlIGFyZWEg b24gZWFjaCBOVkRJTU0gZGV2aWNlLiBUaGUgbGFiZWwKIHN0b3JhZ2UgYXJlYSBpcyBleGNsdWRl ZCBmcm9tIHRoZSB0aGUgcmFuZ2UgbWFwcGVkIGJ5IHRoZSBTUEEgcmFuZ2UKIHN0cnVjdHVyZSBh bmQgY2FuIG9ubHkgYmUgYWNjZXNzZWQgdmlhIF9EU00gbWV0aG9kcy4KCiBUaGVyZSBhcmUgdHdv IHR5cGVzIG9mIG5hbWVzcGFjZXMgZGVmaW5lZCBpbiBbMl06IHRoZSBwZXJzaXN0ZW50CiBtZW1v cnkgbmFtZXNwYWNlIGFuZCB0aGUgYmxvY2sgbmFtZXNwYWNlcy4gUGVyc2lzdGVudCBtZW1vcnkK IG5hbWVzcGFjZXMgaXMgYnVpbHQgZm9yIG9ubHkgcG1lbSBOVkRJTU0gcmVnaW9ucywgd2hpbGUg YmxvY2sKIG5hbWVzcGFjZXMgb25seSBmb3IgcGJsay4gT25seSBvbmUgcGVyc2lzdGVudCBtZW1v cnkgbmFtZXNwYWNlIGlzCiBhbGxvd2VkIGZvciBhIHBtZW0gTlZESU1NIHJlZ2lvbi4KCiBCZXNp ZGVzIGJlaW5nIGFjY2Vzc2VkIHZpYSBfRFNNLCBuYW1lc3BhY2VzIGFyZSBtYW5hZ2VkIGFuZAog aW50ZXJwcmV0ZWQgYnkgc29mdHdhcmUuIE9TIHZlbmRvcnMgbWF5IGRlY2lkZSB0byBub3QgZm9s bG93IFsyXSBhbmQKIHN0b3JlIG90aGVyIHR5cGVzIG9mIGluZm9ybWF0aW9uIGluIHRoZSBsYWJl bCBzdG9yYWdlIGFyZWEuCgoKMS40IGNsd2IvY2xmbHVzaG9wdAoKIFdyaXRlcyB0byBOVkRJTU0g bWF5IGJlIGNhY2hlZCBieSBjYWNoZXMsIHNvIGNlcnRhaW4gZmx1c2hpbmcKIG9wZXJhdGlvbnMg c2hvdWxkIGJlIHBlcmZvcm1lZCB0byBtYWtlIHRoZW0gcGVyc2lzdGVudCBvbgogTlZESU1NLiBj bHdiIGlzIHVzZWQgaW4gZmF2b3Igb2YgY2xmbHVzaG9wdCBhbmQgY2xmbHVzaCB0byBmbHVzaAog d3JpdGVzIGZyb20gY2FjaGVzIHRvIG1lbW9yeS4KCiBEZXRhaWxzIG9mIGNsd2IvY2xmbHVzaG9w dCBjYW4gYmUgZm91bmQgaW4gQ2hhcHRlciAxMCBvZiBbNl0uCgoKCjIuIE5WRElNTS92TlZESU1N IFN1cHBvcnQgaW4gTGludXggS2VybmVsL0tWTS9RRU1VCgoyLjEgTlZESU1NIERyaXZlciBpbiBM aW51eCBLZXJuZWwKCiBMaW51eCBrZXJuZWwgc2luY2UgNC4yIGhhcyBhZGRlZCBzdXBwb3J0IGZv ciBBQ1BJLWRlZmluZWQgTlZESU1NCiBkZXZpY2VzLgoKIE5WRElNTSBkcml2ZXIgaW4gTGludXgg cHJvYmVzIE5WRElNTSBkZXZpY2VzIHRocm91Z2ggQUNQSSAoaS5lLiBORklUCiBhbmQgX0ZJVCku IEl0IGlzIGFsc28gcmVzcG9uc2libGUgdG8gcGFyc2UgdGhlIG5hbXNlcGFjZSBsYWJlbHMgb24K IGVhY2ggTlZESU1NIGRldmljZXMsIHJlY292ZXIgbmFtZXNwYWNlIGFmdGVyIHBvd2VyIGZhaWx1 cmUgKGFzCiBkZXNjcmliZWQgaW4gWzJdKSBhbmQgaGFuZGxlIE5WRElNTSBob3RwbHVnLiBUaGVy ZSBhcmUgYWxzbyBzb21lCiB2ZW5kb3IgZHJpdmVycyB0byBwZXJmb3JtIHZlbmRvci1zcGVjaWZp YyBvcGVyYXRpb25zIG9uIE5WRElNTXMKIChlLmcuIHZpYSBfRFNNKS4KCiBDb21wYXJlZCB0byB0 aGUgb3JkaW5hcnkgcmFtLCBOVkRJTU0gaXMgdXNlZCBtb3JlIGxpa2UgYSBwZXJzaXN0ZW50CiBz dG9yYWdlIGRyaXZlIGZvciBpdHMgcGVyc2lzdGVudCBhc3BlY3QuIEZvciBlYWNoIHBlcnNpc3Rl bnQgbWVtb3J5CiBuYW1lc3BhY2UsIG9yIGEgbGFiZWwtbGVzcyBwbWVtIE5WRElNTSByYW5nZSwg TlZESU1NIGRyaXZlcgogaW1wbGVtZW50cyBhIGJsb2NrIGRldmljZSBpbnRlcmZhY2UgKC9kZXYv cG1lbVgpIGZvciBpdC4KCiBVc2Vyc3BhY2UgYXBwbGljYXRpb25zIGNhbiBtbWFwKDIpIHRoZSB3 aG9sZSBwbWVtIGludG8gaXRzIG93bgogdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBMaW51eCBrZXJu ZWwgbWFwcyB0aGUgc3lzdGVtIHBoeXNpY2FsIGFkZHJlc3MKIHNwYWNlIHJhbmdlIG9jY3VwaWVk IGJ5IHBtZW0gaW50byB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLCBzbyB0aGF0IGV2ZXJ5CiBu b3JtYWwgbWVtb3J5IGxvYWRzL3dyaXRlcyB3aXRoIHByb3BlciBmbHVzaGluZyBpbnN0cnVjdGlv bnMgYXJlCiBhcHBsaWVkIHRvIHRoZSB1bmRlcmx5aW5nIHBtZW0gTlZESU1NIHJlZ2lvbnMuCgog QWx0ZXJuYXRpdmVseSwgYSBEQVggZmlsZSBzeXN0ZW0gY2FuIGJlIG1hZGUgb24gL2Rldi9wbWVt WC4gRmlsZXMgb24KIHRoYXQgZmlsZSBzeXN0ZW0gY2FuIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5 IGFzIGFib3ZlLiBBcyBMaW51eAoga2VybmVsIG1hcHMgdGhlIHN5c3RlbSBhZGRyZXNzIHNwYWNl IHJhbmdlIG9jY3VwaWVkIGJ5IHRob3NlIGZpbGVzIG9uCiBOVkRJTU0gdG8gdGhlIHZpcnR1YWwg YWRkcmVzcyBzcGFjZSwgcmVhZHMvd3JpdGVzIG9uIHRob3NlIGZpbGVzIGFyZQogYXBwbGllZCB0 byB0aGUgdW5kZXJseWluZyBOVkRJTU0gcmVnaW9ucyBhcyB3ZWxsLgoKMi4yIHZOVkRJTU0gSW1w bGVtZW50YXRpb24gaW4gS1ZNL1FFTVUKCiBBbiBvdmVydmlldyBvZiB2TlZESU1NIGltcGxlbWVu dGF0aW9uIGluIEtWTSAoTGludXgga2VybmVsIHY0LjIpIC8gUUVNVSAoY29tbWl0CiA3MGQxZmI5 IGFuZCBwYXRjaGVzIGluLXJldmlldy9mdXR1cmUpIGlzIHNob3dlZCBieSB0aGUgZm9sbG93aW5n IGZpZ3VyZS4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogR3Vlc3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdQQSB8ICAgICAgICAgICAgICAgICAgICB8IC9kZXYvcG1lbTAgfAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKwogICAgICAgICAgIHBhcnNlICAgICAgICBldmFsdWF0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeICAgICAgICAgICAgXgogICAgICAgICAgICBBQ1BJICAgICAgICAgIF9EU00g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgfAogLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0KICAgICAgICAgICAgICBWICAgICAgICAgICAgViAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICst LS0tLS0tKyAgICArLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwKIFFFTVUgICAgIHwgdkFDUEkgfCAgICB8IHZfRFNNIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICstLS0tLS0tKyAgICArLS0tLS0tLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZWFkL1dyaXRlICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgViAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICsuLi4rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLi4uKy0tLS0tLS0tLS0tKyAgICAgICAgfCAgICAgICAgICAgIHwK ICAgIFZBICAgIHwgICB8IExhYmVsIFN0b3JhZ2UgQXJlYSB8ICAgfCAgICBidWYgICAgfCAgS1ZN X1NFVF9VU0VSX01FTU9SWV9SRUdJT04oYnVmKQogICAgICAgICAgKy4uListLS0tLS0tLS0tLS0t LS0tLS0tLSsuLi4rLS0tLS0tLS0tLS0rICAgICAgICB8ICAgICAgICAgICAgfAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICBtbWFwKDIpICBeICAgICAgICB8ICAgICAg ICAgICAgfAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t LS18LS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgKy0tLS0tLS0tfi0tLS0tLS0tLS0tLSsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwKIExpbnV4L0tWTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tKyAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsuLi4uKy0tLS0tLS0t LS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BB ICAgIHwgICAgfCAvZGV2L3BtZW0wIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsuLi4uKy0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSG9zdCBOVkRJTU0gRHJpdmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8CiBIVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIE5WRElNTSAgIHwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t LS0tLS0rCgoKIEEgcGFydCBub3QgcHV0IGluIGFib3ZlIGZpZ3VyZSBpcyBlbmFibGluZyBndWVz dCBjbHdiL2NsZmx1c2hvcHQKIHdoaWNoIGV4cG9zZXMgdGhvc2UgaW5zdHJ1Y3Rpb25zIHRvIGd1 ZXN0IHZpYSBndWVzdCBjcHVpZC4KCiBCZXNpZGVzIGluc3RydWN0aW9uIGVuYWJsaW5nLCB0aGVy ZSBhcmUgdHdvIHByaW1hcnkgcGFydHMgb2Ygdk5WRElNTQogaW1wbGVtZW50YXRpb24gaW4gS1ZN L1FFTVUuCgogKDEpIEFkZHJlc3MgTWFwcGluZwoKICBBcyBkZXNjcmliZWQgYmVmb3JlLCB0aGUg aG9zdCBMaW51eCBOVkRJTU0gZHJpdmVyIHByb3ZpZGVzIGEgYmxvY2sKICBkZXZpY2UgaW50ZXJm YWNlICgvZGV2L3BtZW0wIGF0IHRoZSBib3R0b20pIGZvciBhIHBtZW0gTlZESU1NCiAgcmVnaW9u LiBRRU1VIGNhbiB0aGFuIG1tYXAoMikgdGhhdCBkZXZpY2UgaW50byBpdHMgdmlydHVhbCBhZGRy ZXNzCiAgc3BhY2UgKGJ1ZikuIFFFTVUgaXMgcmVzcG9uc2libGUgdG8gZmluZCBhIHByb3BlciBn dWVzdCBwaHlzaWNhbAogIGFkZHJlc3Mgc3BhY2UgcmFuZ2UgdGhhdCBpcyBsYXJnZSBlbm91Z2gg dG8gaG9sZCAvZGV2L3BtZW0wLiBUaGVuCiAgUUVNVSBwYXNzZXMgdGhlIHZpcnR1YWwgYWRkcmVz cyBvZiBtbWFwcGVkIGJ1ZiB0byBhIEtWTSBBUEkKICBLVk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lP TiB0aGF0IG1hcHMgaW4gRVBUIHRoZSBob3N0IHBoeXNpY2FsCiAgYWRkcmVzcyByYW5nZSBvZiBi dWYgdG8gdGhlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2UgcmFuZ2Ugd2hlcmUKICB0aGUg dmlydHVhbCBwbWVtIGRldmljZSB3aWxsIGJlLgoKICBJbiB0aGlzIHdheSwgYWxsIGd1ZXN0IHdy aXRlcy9yZWFkcyBvbiB0aGUgdmlydHVhbCBwbWVtIGRldmljZSBpcwogIGFwcGxpZWQgZGlyZWN0 bHkgdG8gdGhlIGhvc3Qgb25lLgoKICBCZXNpZGVzLCBhYm92ZSBpbXBsZW1lbnRhdGlvbiBhbHNv IGFsbG93cyB0byBiYWNrIGEgdmlydHVhbCBwbWVtCiAgZGV2aWNlIGJ5IGEgbW1hcHBlZCByZWd1 bGFyIGZpbGUgb3IgYSBwaWVjZSBvZiBvcmRpbmFyeSByYW0uCgogKDIpIEd1ZXN0IEFDUEkgRW11 bGF0aW9uCgogIEFzIGd1ZXN0IHN5c3RlbSBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBv ZiB0aGUgdmlydHVhbCBwbWVtCiAgZGV2aWNlIGFyZSBkZXRlcm1pbmVkIGJ5IFFFTVUsIFFFTVUg aXMgcmVzcG9uc2libGUgdG8gZW11bGF0ZSB0aGUKICBndWVzdCBORklUIGFuZCBTU0RULiBCYXNp Y2FsbHksIGl0IGJ1aWxkcyB0aGUgZ3Vlc3QgTkZJVCBhbmQgaXRzCiAgc3ViLXN0cnVjdHVyZXMg dGhhdCBkZXNjcmliZXMgdGhlIHZpcnR1YWwgTlZESU1NIHRvcG9sb2d5LCBhbmQgYQogIGd1ZXN0 IFNTRFQgdGhhdCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgb2YgdmlydHVhbCBOVkRJ TU0gaW4KICBndWVzdCBTU0RULgoKICBBcyBhIHBvcnRpb24gb2YgaG9zdCBwbWVtIGRldmljZSBv ciBhIHJlZ3VsYXIgZmlsZS9vcmRpbmFyeSBmaWxlIGNhbgogIGJlIHVzZWQgdG8gYmFjayB0aGUg Z3Vlc3QgcG1lbSBkZXZpY2UsIHRoZSBsYWJlbCBzdG9yYWdlIGFyZWEgb24KICBob3N0IHBtZW0g Y2Fubm90IGFsd2F5cyBiZSBwYXNzZWQgdGhyb3VnaCB0byBndWVzdC4gVGhlcmVmb3JlLCB0aGUK ICBndWVzdCByZWFkcy93cml0ZXMgb24gdGhlIGxhYmVsIHN0b3JhZ2UgYXJlYSBpcyBlbXVsYXRl ZCBieSBRRU1VLiBBcwogIGRlc2NyaWJlZCBiZWZvcmUsIF9EU00gbWV0aG9kIGlzIHV0aWxpemVk IGJ5IE9TUE0gdG8gYWNjZXNzIHRoZQogIGxhYmVsIHN0b3JhZ2UgYXJlYSwgYW5kIHRoZXJlZm9y ZSBpdCBpcyBlbXVsYXRlZCBieSBRRU1VLiBUaGUgX0RTTQogIGJ1ZmZlciBpcyByZWdpc3RlcmVk IGFzIE1NSU8sIGFuZCBpdHMgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQKICBzaXplIGFyZSBk ZXNjcmliZWQgaW4gdGhlIGd1ZXN0IEFDUEkuIEV2ZXJ5IGNvbW1hbmQvc3RhdHVzCiAgcmVhZC93 cml0ZSBmcm9tIGd1ZXN0IGlzIHRyYXBwZWQgYW5kIGVtdWxhdGVkIGJ5IFFFTVUuCgogIEd1ZXN0 IF9GSVQgbWV0aG9kIHdpbGwgYmUgaW1wbGVtZW50ZWQgc2ltaWxhcmx5IGluIHRoZSBmdXR1cmUu CgoKCjMuIFVzYWdlIEV4YW1wbGUgb2Ygdk5WRElNTSBpbiBYZW4KCiBPdXIgZGVzaWduIGlzIHRv IHByb3ZpZGUgdmlydHVhbCBwbWVtIGRldmljZXMgdG8gSFZNIGRvbWFpbnMuIFRoZQogdmlydHVh bCBwbWVtIGRldmljZXMgYXJlIGJhY2tlZCBieSBob3N0IHBtZW0gZGV2aWNlcy4KCiBEb20wIExp bnV4IGtlcm5lbCBjYW4gZGV0ZWN0IHRoZSBob3N0IHBtZW0gZGV2aWNlcyBhbmQgY3JlYXRlCiAv ZGV2L3BtZW1YWCBmb3IgZWFjaCBkZXRlY3RlZCBkZXZpY2VzLiBVc2VycyBpbiBEb20wIGNhbiB0 aGVuIGNyZWF0ZQogREFYIGZpbGUgc3lzdGVtIG9uIC9kZXYvcG1lbVhYIGFuZCBjcmVhdGUgc2V2 ZXJhbCBwcmUtYWxsb2NhdGUgZmlsZXMKIGluIHRoZSBEQVggZmlsZSBzeXN0ZW0uCgogQWZ0ZXIg c2V0dXAgdGhlIGZpbGUgc3lzdGVtIG9uIHRoZSBob3N0IHBtZW0sIHVzZXJzIGNhbiBhZGQgdGhl CiBmb2xsb3dpbmcgbGluZXMgaW4gdGhlIHhsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gYXNzaWdu IHRoZSBob3N0IHBtZW0KIHJlZ2lvbnMgdG8gZG9tYWluczoKICAgICB2bnZkaW1tID0gWyAnZmls ZT0vZGV2L3BtZW0wJyBdCiBvcgogICAgIHZudmRpbW0gPSBbICdmaWxlPS9tbnQvZGF4L3ByZV9h bGxvY2F0ZWRfZmlsZScgXQoKICBUaGUgZmlyc3QgdHlwZSBvZiBjb25maWd1cmF0aW9uIGFzc2ln bnMgdGhlIGVudGlyZSBwbWVtIGRldmljZQogICgvZGV2L3BtZW0wKSB0byB0aGUgZG9tYWluLCB3 aGlsZSB0aGUgc2Vjb25kIGFzc2lnbnMgdGhlIHNwYWNlCiAgYWxsb2NhdGVkIHRvIC9tbnQvZGF4 L3ByZV9hbGxvY2F0ZWRfZmlsZSBvbiB0aGUgaG9zdCBwbWVtIGRldmljZSB0bwogIHRoZSBkb21h aW4uCgogIFdoZW4gdGhlIGRvbWFpbiBzdGFydHMsIGd1ZXN0IGNhbiBkZXRlY3QgdGhlICh2aXJ0 dWFsKSBwbWVtIGRldmljZXMKICB2aWEgQUNQSSBhbmQgZ3Vlc3QgcmVhZC93cml0ZSBvbiB0aGUg dmlydHVhbCBwbWVtIGRldmljZXMgYXJlCiAgZGlyZWN0bHkgYXBwbGllZCBvbiB0aGVpciBob3N0 IGJhY2tlbmRzLgoKCgo0LiBEZXNpZ24gb2Ygdk5WRElNTSBpbiBYZW4KCiBBcyBLVk0vUUVNVSwg b3VyIGRlc2lnbiBjdXJyZW50bHkgb25seSBwcm92aWRlcyBwbWVtIHZOVkRJTU0uCgogU2ltaWxh cmx5IHRvIHRoYXQgaW4gS1ZNL1FFTVUsIGVuYWJsaW5nIHZOVkRJTU0gaW4gWGVuIGlzIGNvbXBv c2VkIG9mCiB0aHJlZSBwYXJ0czoKICgxKSBHdWVzdCBjbHdiL2NsZmx1c2hvcHQgZW5hYmxpbmcs CiAoMikgcG1lbSBhZGRyZXNzIG1hbmFnZW1lbnQsIGFuZAogKDMpIEd1ZXN0IEFDUEkgZW11bGF0 aW9uLgoKIFRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50IHRoZSBkZXNpZ24gb2YgZWFj aCBwYXJ0CiByZXNwZWN0aXZlbHkuIFRoZSBiYXNpYyBkZXNpZ24gcHJpbmNpcGxlIHRvIHJldXNl IGV4aXN0aW5nIGNvZGUgaW4KIExpbnV4IE5WRElNTSBkcml2ZXIsIFFFTVUgYW5kIFhlbiBhcyBt dWNoIGFzIHBvc3NpYmxlLgoKCjQuMSBHdWVzdCBjbHdiL2NsZmx1c2hvcHQgRW5hYmxpbmcKCiBU aGUgaW5zdHJ1Y3Rpb24gZW5hYmxpbmcgaXMgc2ltcGxlIGFuZCB3ZSBkbyB0aGUgc2FtZSB3b3Jr IGFzIGluIEtWTS9RRU1VOgogLSBjbHdiL2NsZmx1c2hvcHQgYXJlIGV4cG9zZWQgdG8gZ3Vlc3Qg dmlhIGd1ZXN0IGNwdWlkLgoKCjQuMiBwbWVtIEFkZHJlc3MgTWFuYWdlbWVudAoKIHBtZW0gYWRk cmVzcyBtYW5hZ2VtZW50IGlzIHByaW1hcmlseSBjb21wb3NlZCBvZiB0aHJlZSBwYXJ0czoKICgx KSBkZXRlY3Rpb24gb2YgcG1lbSBkZXZpY2VzIGFuZCB0aGVpciBhZGRyZXNzIHJhbmdlcywgd2hp Y2ggaXMKICAgICBhY2NvbXBsaXNoZWQgYnkgRG9tMCBMaW51eCBwbWVtIGRyaXZlciBhbmQgWGVu IGh5cGVydmlzb3I7CiAoMikgZ2V0IFNQQSByYW5nZXMgb2YgYW4gcG1lbSBhcmVhIHRoYXQgd2ls bCBiZSBtYXBwZWQgdG8gZG9tYWluLAogICAgIHdoaWNoIGlzIGFjY29tcGxpc2hlZCBieSB4bDsK ICgzKSBtYXAgdGhlIHBtZW0gYXJlYSB0byBhIGRvbWFpbiwgd2hpY2ggaXMgYWNjb21wbGlzaGVk IGJ5IHFlbXUgYW5kCiAgICAgWGVuIGh5cGVydmlzb3IuCgogT3VyIGRlc2lnbiBpbnRlbmRzIHRv IHJldXNlIHRoZSBjdXJyZW50IG1lbW9yeSBtYW5hZ2VtZW50IGZvciBub3JtYWwKIFJBTSBpbiBY ZW4gdG8gbWFuYWdlIHRoZSBtYXBwaW5nIG9mIHBtZW0uIFRoZW4gd2Ugd2lsbCBjb21lIGFjcm9z cyBhCiBwcm9ibGVtOiB3aGVyZSB3ZSBzdG9yZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgZGF0YSBz dHJ1Y3RzIGZvciBwbWVtLgoKIFRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBhZGRyZXNzZXMgYWJv dmUgYXNwZWN0cyByZXNwZWN0aXZlbHkuCgo0LjIuMSBSZXNlcnZlIFN0b3JhZ2UgZm9yIE1hbmFn ZW1lbnQgU3RydWN0dXJlcwoKIEEgY29yZSBkYXRhIHN0cnVjdCBpbiBYZW4gbWVtb3J5IG1hbmFn ZW1lbnQgaXMgJ3N0cnVjdCBwYWdlX2luZm8nLgogRm9yIG5vcm1hbCByYW0sIFhlbiBjcmVhdGVz IGEgcGFnZV9pbmZvIHN0cnVjdCBmb3IgZWFjaCBwYWdlLiBGb3IKIHBtZW0sIHdlIGFyZSBnb2lu ZyB0byBkbyB0aGUgc2FtZS4gSG93ZXZlciwgZm9yIGxhcmdlIGNhcGFjaXR5IHBtZW0KIGRldmlj ZXMgKGUuZy4gc2V2ZXJhbCB0ZXJhYnl0ZXMgb3IgZXZlbiBsYXJnZXIpLCBhIGxhcmdlIGFtb3Vu dCBvZgogcGFnZV9pbmZvIHN0cnVjdHMgd2lsbCBvY2N1cHkgdG9vIG11Y2ggc3RvcmFnZSBzcGFj ZSB0aGF0IGNhbm5vdAogZml0IGluIHRoZSBub3JtYWwgcmFtLgoKIE91ciBzb2x1dGlvbiwgYXMg dXNlZCBieSBMaW51eCBrZXJuZWwsIGlzIHRvIHJlc2VydmUgYW4gYXJlYSBvbiBwbWVtCiBhbmQg cGxhY2UgcG1lbSdzIHBhZ2VfaW5mbyBzdHJ1Y3RzIGluIHRoYXQgcmVzZXJ2ZWQgYXJlYS4gVGhl cmVmb3JlLAogd2UgY2FuIGFsd2F5cyBlbnN1cmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciBw bWVtIHBhZ2VfaW5mbwogc3RydWN0cywgdGhvdWdoIHRoZSBhY2Nlc3MgdG8gdGhlbSBpcyBzbG93 ZXIgdGhhbiBkaXJlY3RseSBmcm9tIHRoZQogbm9ybWFsIHJhbS4KCiBTdWNoIGEgcG1lbSBuYW1l c3BhY2UgY2FuIGJlIGNyZWF0ZWQgdmlhIGEgdXNlcnNwYWNlIHRvb2wgbmRjdGwgYW5kCiB0aGVu IHJlY29nbml6ZWQgYnkgTGludXggTlZESU1NIGRyaXZlci4gSG93ZXZlciwgdGhleSBjdXJyZW50 bHkgb25seQogcmVzZXJ2ZSBzcGFjZSBmb3IgTGludXgga2VybmVsJ3MgcGFnZSBzdHJ1Y3RzLiBU aGVyZWZvcmUsIG91ciBkZXNpZ24KIG5lZWQgdG8gZXh0ZW5kIGJvdGggTGludXggTlZESU1NIGRy aXZlciBhbmQgbmRjdGwgdG8gcmVzZXJ2ZQogYXJiaXRyYXJ5IHNpemUuCgo0LjIuMiBEZXRlY3Rp b24gb2YgSG9zdCBwbWVtIERldmljZXMKCiBUaGUgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXplIGhv c3QgcG1lbSBkZXZpY2VzIHJlcXVpcmUgYSBub24tdHJpdmlhbAogZHJpdmVyIHRvIGludGVyYWN0 IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcywKIHBhcnNlIG5h bWVzcGFjZSBsYWJlbHMgYW5kIG1ha2UgbmVjZXNzYXJ5IHJlY292ZXJ5IGFjdGlvbnMuIEluc3Rl YWQKIG9mIGR1cGxpY2F0aW5nIHRoZSBjb21wcmVoZW5zaXZlIExpbnV4IHBtZW0gZHJpdmVyIGlu IFhlbiBoeXBlcnZpc29yLAogb3VyIGRlc2lnbnMgbGVhdmVzIGl0IHRvIERvbTAgTGludXggYW5k IGxldCBEb20wIExpbnV4IHJlcG9ydAogZGV0ZWN0ZWQgaG9zdCBwbWVtIGRldmljZXMgdG8gWGVu IGh5cGVydmlzb3IuCgogT3VyIGRlc2lnbiB0YWtlcyBmb2xsb3dpbmcgc3RlcHMgdG8gZGV0ZWN0 IGhvc3QgcG1lbSBkZXZpY2VzIHdoZW4gWGVuCiBib290cy4KICgxKSBBcyBib290aW5nIG9uIGJh cmUgbWV0YWwsIGhvc3QgcG1lbSBkZXZpY2VzIGFyZSBkZXRlY3RlZCBieSBEb20wCiAgICAgTGlu dXggTlZESU1NIGRyaXZlci4KCiAoMikgT3VyIGRlc2lnbiBleHRlbmRzIExpbnV4IE5WRElNTSBk cml2ZXIgdG8gcmVwb3J0cyBTUEEncyBhbmQgc2l6ZXMKICAgICBvZiB0aGUgcG1lbSBkZXZpY2Vz IGFuZCByZXNlcnZlZCBhcmVhcyB0byBYZW4gaHlwZXJ2aXNvciB2aWEgYQogICAgIG5ldyBoeXBl cmNhbGwuCgogKDMpIFhlbiBoeXBlcnZpc29yIHRoZW4gY2hlY2tzCiAgICAgLSB3aGV0aGVyIFNQ QSBhbmQgc2l6ZSBvZiB0aGUgbmV3bHkgcmVwb3J0ZWQgcG1lbSBkZXZpY2UgaXMgb3ZlcmxhcAog ICAgICAgd2l0aCBhbnkgcHJldmlvdXNseSByZXBvcnRlZCBwbWVtIGRldmljZXM7CiAgICAgLSB3 aGV0aGVyIHRoZSByZXNlcnZlZCBhcmVhIGNhbiBmaXQgaW4gdGhlIHBtZW0gZGV2aWNlIGFuZCBp cwogICAgICAgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgcGFnZV9pbmZvIHN0cnVjdHMgZm9yIGl0c2Vs Zi4KCiAgICAgSWYgYW55IGNoZWNrcyBmYWlsLCB0aGUgcmVwb3J0ZWQgcG1lbSBkZXZpY2Ugd2ls bCBiZSBpZ25vcmVkIGJ5CiAgICAgWGVuIGh5cGVydmlzb3IgYW5kIGhlbmNlIHdpbGwgbm90IGJl IHVzZWQgYnkgYW55CiAgICAgZ3Vlc3RzLiBPdGhlcndpc2UsIFhlbiBoeXBlcnZpc29yIHdpbGwg cmVjb3JkZWQgdGhlIHJlcG9ydGVkCiAgICAgcGFyYW1ldGVycyBhbmQgY3JlYXRlIHBhZ2VfaW5m byBzdHJ1Y3RzIGluIHRoZSByZXNlcnZlZCBhcmVhLgoKICg0KSBCZWNhdXNlIHRoZSByZXNlcnZl ZCBhcmVhIGlzIG5vdyB1c2VkIGJ5IFhlbiBoeXBlcnZpc29yLCBpdAogICAgIHNob3VsZCBub3Qg YmUgYWNjZXNzaWJsZSBieSBEb20wIGFueSBtb3JlLiBUaGVyZWZvcmUsIGlmIGEgaG9zdAogICAg IHBtZW0gZGV2aWNlIGlzIHJlY29yZGVkIGJ5IFhlbiBoeXBlcnZpc29yLCBYZW4gd2lsbCB1bm1h cCBpdHMKICAgICByZXNlcnZlZCBhcmVhIGZyb20gRG9tMC4gT3VyIGRlc2lnbiBhbHNvIG5lZWRz IHRvIGV4dGVuZCBMaW51eAogICAgIE5WRElNTSBkcml2ZXIgdG8gImJhbGxvb24gb3V0IiB0aGUg cmVzZXJ2ZWQgYXJlYSBhZnRlciBpdAogICAgIHN1Y2Nlc3NmdWxseSByZXBvcnRzIGEgcG1lbSBk ZXZpY2UgdG8gWGVuIGh5cGVydmlzb3IuCgo0LjIuMyBHZXQgSG9zdCBNYWNoaW5lIEFkZHJlc3Mg KFNQQSkgb2YgSG9zdCBwbWVtIEZpbGVzCgogQmVmb3JlIGEgcG1lbSBmaWxlIGlzIGFzc2lnbmVk IHRvIGEgZG9tYWluLCB3ZSBuZWVkIHRvIGtub3cgdGhlIGhvc3QKIFNQQSByYW5nZXMgdGhhdCBh cmUgYWxsb2NhdGVkIHRvIHRoaXMgZmlsZS4gV2UgZG8gdGhpcyB3b3JrIGluIHhsLgoKIElmIGEg cG1lbSBkZXZpY2UgL2Rldi9wbWVtMCBpcyBnaXZlbiwgeGwgd2lsbCByZWFkCiAvc3lzL2Jsb2Nr L3BtZW0wL2RldmljZS97cmVzb3VyY2Usc2l6ZX0gcmVzcGVjdGl2ZWx5IGZvciB0aGUgc3RhcnQK IFNQQSBhbmQgc2l6ZSBvZiB0aGUgcG1lbSBkZXZpY2UuCgogSWYgYSBwcmUtYWxsb2NhdGVkIGZp bGUgL21udC9kYXgvZmlsZSBpcyBnaXZlbiwKICgxKSB4bCBmaXJzdCBmaW5kcyB0aGUgaG9zdCBw bWVtIGRldmljZSB3aGVyZSAvbW50L2RheC9maWxlIGlzLiBUaGVuCiAgICAgaXQgdXNlcyB0aGUg bWV0aG9kIGFib3ZlIHRvIGdldCB0aGUgc3RhcnQgU1BBIG9mIHRoZSBob3N0IHBtZW0KICAgICBk ZXZpY2UuCiAoMikgeGwgdGhlbiB1c2VzIGZpZW1hcCBpb2N0bCB0byBnZXQgdGhlIGV4dGVuZCBt YXBwaW5ncyBvZgogICAgIC9tbnQvZGF4L2ZpbGUsIGFuZCBhZGRzIHRoZSBjb3JyZXNwb25kaW5n IHBoeXNpY2FsIG9mZnNldHMgYW5kCiAgICAgbGVuZ3RocyBpbiBlYWNoIG1hcHBpbmcgZW50cmll cyB0byBhYm92ZSBzdGFydCBTUEEgdG8gZ2V0IHRoZSBTUEEKICAgICByYW5nZXMgcHJlLWFsbG9j YXRlZCBmb3IgdGhpcyBmaWxlLgoKIFRoZSByZXN1bHRpbmcgaG9zdCBTUEEgcmFuZ2VzIHdpbGwg YmUgcGFzc2VkIHRvIFFFTVUgd2hpY2ggYWxsb2NhdGVzCiBndWVzdCBhZGRyZXNzIHNwYWNlIGZv ciB2TlZESU1NIGRldmljZXMgYW5kIGNhbGxzIFhlbiBoeXBlcnZpc29yIHRvCiBtYXAgdGhlIGd1 ZXN0IGFkZHJlc3MgdG8gdGhlIGhvc3QgU1BBIHJhbmdlcy4KCjQuMi40IE1hcCBIb3N0IHBtZW0g dG8gR3Vlc3RzCgogT3VyIGRlc2lnbiByZXVzZXMgdGhlIGV4aXN0aW5nIGFkZHJlc3MgbWFwcGlu ZyBpbiBYZW4gZm9yIHRoZSBub3JtYWwKIHJhbSB0byBtYXAgcG1lbS4gV2Ugd2lsbCBzdGlsbCBp bml0aWF0ZSB0aGUgbWFwcGluZyBmb3IgcG1lbSBmcm9tCiBRRU1VLCBhbmQgdGhlcmUgaXMgb25l IGRpZmZlcmVuY2UgZnJvbSB0aGUgbWFwcGluZyBvZiBub3JtYWwgcmFtOgogLSBGb3IgdGhlIG5v cm1hbCByYW0sIFFFTVUgb25seSBuZWVkcyB0byBwcm92aWRlIGdwZm4sIGFuZCB0aGUgYWN0dWFs CiAgIGhvc3QgbWVtb3J5IHdoZXJlIGdwZm4gaXMgbWFwcGVkIGlzIGFsbG9jYXRlZCBieSBYZW4g aHlwZXJ2aXNvci4KIC0gRm9yIHBtZW0sIFFFTVUgcHJvdmlkZXMgYm90aCBncGZuIGFuZCBtZm4g d2hlcmUgZ3BmbiBpcyBleHBlY3RlZCB0bwogICBiZSBtYXBwZWQgdG8uIG1mbiBpcyBwcm92aWRl ZCBieSB4bCBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiA0LjIuMy4KCiBPdXIgZGVzaWduIGludHJv ZHVjZSBhIG5ldyBYRU5NRU0gb3AgZm9yIHRoZSBwbWVtIG1hcHBpbmcsIHdoaWNoCiBmaW5hbGx5 IGNhbGxzIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoKSB0byBhZGQgdGhlIGhvc3QgcG1lbSBwYWdl IHRvIGEKIGRvbWFpbidzIGFkZHJlc3Mgc3BhY2UuCgo0LjIuNSBNaXNjIDE6IFJBUwoKIE1hY2hp bmUgY2hlY2sgY2FuIG9jY3VyIGZyb20gTlZESU1NIGFzIG5vcm1hbCByYW0sIHNvIHRoYXQgd2Ug Zm9sbG93CiB0aGUgY3VycmVudCBtYWNoaW5lIGNoZWNrIGhhbmRsaW5nIGluIFhlbiBmb3IgTUMj IGZyb20gTlZESU1NLgoKNC4yLjYgTWlzYyAyOiBob3RwbHVnCgogVGhlIGhvdHBsdWdnZWQgaG9z dCBOVkRJTU0gZGV2aWNlcyBpcyBkZXRlY3RlZCB2aWEgX0ZJVCBtZXRob2QgdW5kZXIKIHRoZSBy b290IEFDUEkgbmFtZXNwYWNlIGRldmljZSBmb3IgTlZESU1NLiBXZSByZWx5IG9uIERvbTAgTGlu dXgKIGtlcm5lbCB0byBkaXNjb3ZlciB0aGUgaG90cGx1Z2dlZCBOVkRJTU0gZGV2aWNlcyBhbmQg Zm9sbG93IHN0ZXBzIGluCiBTZWN0aW9uIDQuMi4yIHRvIHJlcG9ydCB0aGUgaG90cGx1Z2dlZCBk ZXZpY2VzIHRvIFhlbiBoeXBlcnZpc29yLgoKCjQuMyBHdWVzdCBBQ1BJIEVtdWxhdGlvbgoKIEd1 ZXN0IEFDUEkgZW11bGF0aW9uIGlzIGNvbXBvc2VkIG9mIHR3byBwYXJ0czogYnVpbGRpbmcgZ3Vl c3QgTkZJVAogYW5kIFNTRFQgdGhhdCBkZWZpbmVzIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgZm9y IE5WRElNTSwgYW5kCiBlbXVsYXRpbmcgZ3Vlc3QgX0RTTS4gQXMgUUVNVSBoYXMgYWxyZWFkeSBp bXBsZW1lbnRlZCBBQ1BJIHN1cHBvcnQKIGZvciB2TlZESU1NIG9uIEtWTSwgb3VyIGRlc2lnbiBp bnRlbmRzIHRvIHJldXNlIGl0cyBpbXBsZW1lbnRhdGlvbi4KCjQuMy4xIEJ1aWxkaW5nIEd1ZXN0 IEFDUEkgVGFibGVzCgogVHdvIHRhYmxlcyBmb3Igdk5WRElNTSBuZWVkIHRvIGJlIGJ1aWx0Ogog LSBORklULCB3aGljaCBkZWZpbmVzIHRoZSBiYXNpYyBwYXJhbWV0ZXJzIG9mIHZOVkRJTU0gZGV2 aWNlcyBhbmQKICAgZG9lcyBub3QgY29udGFpbiBhbnkgQU1MIGNvZGUuCiAtIFNTRFQsIHdoaWNo IGRlZmluZXMgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBmb3Igdk5WRElNTSBpbiBBTUwgY29kZS4K CiBUaGUgY29udGVudHMgb2YgYm90aCB0YWJsZXMgYXJlIGFmZmVjdGVkIGJ5IHNvbWUgcGFyYW1l dGVycwogKGUuZy4gYWRkcmVzcyBhbmQgc2l6ZSBvZiB2TlZESU1NIGRldmljZXMpIHRoYXQgY2Fu bm90IGJlIGRldGVybWluZWQKIHVudGlsIGEgZ3Vlc3QgY29uZmlndXJhdGlvbiBpcyBnaXZlbi4g SG93ZXZlciwgYWxsIEFNTCBjb2RlIGluIGd1ZXN0CiBBQ1BJIGFyZSBjdXJyZW50bHkgZ2VuZXJh dGVkIGF0IGNvbXBpbGUgdGltZSBmcm8gcHJlLWNyYWZ0ZWQgLmFzbAogZmlsZXMsIHdoaWNoIGlz IG5vdCBmZWFzaWJsZSBmb3IgQUNQSSBuYW1lc3BhY2UgZGV2aWNlcyBmb3Igdk5WRElNTS4KCiBX ZSBjb3VsZCBlaXRoZXIgaW50cm9kdWNlIGFuIEFNTCBidWlsZGVyIHRvIGdlbmVyYXRlIEFNTCBj b2RlIGF0CiBydW50aW1lIGxpa2Ugd2hhdCBRRU1VIGlzIGN1cnJlbnRseSBkb2luZywgb3IgcGFz cyB2TlZESU1NIEFDUEkKIHRhYmxlcyBmcm9tIFFFTVUgdG8gWGVuLiBJbiBvcmRlciB0byByZWR1 Y2UgdGhlIGR1cGxpY2F0ZWQgY29kZSAodG8KIEFNTCBidWlsZGVyIGluIFFFTVUpLCBvdXIgZGVz aWduIHRha2VzIHRoZSBsYXR0ZXIgYXBwcm9hY2guIEJhc2ljYWxseSwKIG91ciBkZXNpZ24gdGFr ZXMgdGhlIGZvbGxvd2luZyBzdGVwczoKIDEpIFRoZSBjdXJyZW50IFFFTVUgZG9lcyBub3QgYnVp bGQgYW55IEFDUEkgc3R1ZmZzIHdoZW4gaXQgcnVucyBhcwogICAgdGhlIFhlbiBkZXZpY2UgbW9k ZWwsIHNvIHdlIG5lZWQgdG8gcGF0Y2ggaXQgdG8gZ2VuZXJhdGUgTkZJVCBhbmQKICAgIEFNTCBj b2RlIG9mIEFDUEkgbmFtZXNwYWNlIGRldmljZXMgZm9yIHZOVkRJTU0uCgogMikgUUVNVSB0aGVu IGNvcGllcyBhYm92ZSBORklUIGFuZCBBQ1BJIG5hbWVzcGFjZSBkZXZpY2VzIHRvIGFuIGFyZWEK ICAgIGF0IHRoZSBlbmQgb2YgZ3Vlc3QgbWVtb3J5IGJlbG93IDRHLiBUaGUgZ3Vlc3QgcGh5c2lj YWwgYWRkcmVzcwogICAgYW5kIHNpemUgb2YgdGhpcyBhcmVhIGFyZSB3cml0dGVuIHRvIHhlbnN0 b3JlIGtleXMKICAgICgvbG9jYWwvZG9tYWluL2RvbWlkL2h2bWxvYWRlci9kbS1hY3BpL3thZGRy ZXNzLGxlbmd0aH0pIFRoZQogICAgZGV0YWlsZWQgZm9ybWF0IG9mIGRhdGEgaW4gdGhpcyBhcmVh IGlzIGV4cGxhaW5lZCBsYXRlci4KCiAzKSBodm1sb2FkZXIgcmVhZHMgYWJvdmUgeGVuc3RvcmUg a2V5cyB0byBwcm9iZSB0aGUgcGFzc2VkLWluIEFDUEkKICAgIHRhYmxlcyBhbmQgQUNQSSBuYW1l c3BhY2UgZGV2aWNlcywgYW5kIGRldGVjdHMgdGhlIHBvdGVudGlhbAogICAgY29sbGlzaW9ucyBh cyBleHBsYWluZWQgbGF0ZXIuCgogNCkgSWYgbm8gY29sbGlzaW9ucyBhcmUgZm91bmQsIGh2bWxv YWRlciB3aWxsCiAgICAoMSkgYXBwZW5kIHRoZSBwYXNzZWQtaW4gQUNQSSB0YWJsZXMgdG8gdGhl IGVuZCBvZiBleGlzdGluZyBndWVzdAogICAgICAgIEFDUEkgdGFibGVzLCBsaWtlIHdoYXQgY3Vy cmVudCBjb25zdHJ1Y3RfcGFzc3Rocm91Z2hfdGFibGVzKCkKICAgICAgICBkb2VzLgogICAgKDIp IGNvbnN0cnVjdCBhIFNTRFQgZm9yIGVhY2ggcGFzc2VkLWluIEFDUEkgbmFtZXNwYWNlIGRldmlj ZXMgYW5kCiAgICAgICAgYXBwZW5kIHRvIHRoZSBlbmQgb2YgZXhpc3RpbmcgZ3Vlc3QgQUNQSSB0 YWJsZXMuCgogUGFzc2luZyBhcmJpdHJhcnkgQUNQSSB0YWJsZXMgYW5kIEFNTCBjb2RlIGZyb20g UUVNVSBjb3VsZAogaW50cm9kdWNlIGF0IGxlYXN0IHR3byB0eXBlcyBvZiBjb2xsaXNpb25zOgog MSkgYSBwYXNzZWQtaW4gdGFibGUgYW5kIGEgWGVuLWJ1aWx0IHRhYmxlIGhhdmUgdGhlIHNhbWUg c2lnbmF0dXJlCiAyKSBhIHBhc3NlZC1pbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UgYW5kIGEgWGVu LWJ1aWx0IEFDUEkgbmFtZXNwYWNlCiAgICBkZXZpY2UgaGF2ZSB0aGUgc2FtZSBkZXZpY2UgbmFt ZS4KCiBPdXIgZGVzaWduIHRha2VzIHRoZSBmb2xsb3dpbmcgbWV0aG9kIHRvIGF2b2lkIGFuZCBk ZXRlY3QgY29sbGlzaW9ucy4KIDEpIFRoZSBkYXRhIGxheW91dCBvZiBhcmVhIHdoZXJlIFFFTVUg Y29waWVzIGl0cyBORklUIGFuZCBBQ1BJCiAgICBuYW1lc3BhY2UgZGV2aWNlcyBpcyBvcmdhbml6 ZWQgYXMgYmVsb3c6CgogICAgIDEgYnl0ZSA0IGJ5dGVzICBsZW5ndGggYnl0ZXMKICAgICstLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t CiAgICB8IHR5cGUgfCBsZW5ndGggfCBkYXRhIGJsb2IgfCB0eXBlIHwgbGVuZ3RoIHwgZGF0YSBi bG9iIHwgLi4uCiAgICArLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLQoKICAgIHR5cGU6IDAgLSBkYXRhIGJsb2IgY29udGFpbnMgYSBj b21wbGV0ZSBBQ1BJIHRhYmxlCiAgICAgICAgICAxIC0gZGF0YSBibG9iIGNvbnRhaW5zIEFNTCBj b2RlIGZvciBhbiBBQ1BJIG5hbWVzcGFjZSBkZXZpY2UKCiAgICBsZW5ndGg6IHRoZSBudW1iZXIg b2YgYnl0ZXMgb2YgZGF0YSBibG9iCgogICAgZGF0YSBibG9iOiB0eXBlIDAgLSBhIGNvbXBsZXRl IEFDUEkgdGFibGUKICAgICAgICAgICAgICAgdHlwZSAxIC0gY29tcG9zZWQgYXMgYmVsb3c6Cgog ICAgICAgICAgICAgICAgICAgICAgICAgNCBieXRlcyAgIChsZW5ndGggLSA0KSBieXRlcwoJICAg ICAgICAgICAgICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKwoJCQl8IG5hbWVbNF0g fCBBTUwgY29kZSBzbmlwcGV0IHwKCQkJKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rCgog ICAgICAgICAgICAgICAgICAgICAgICBuYW1lWzRdICAgICAgICAgOiBuYW1lIG9mIEFDUEkgbmFt ZXNwYWNlIGRldmljZQoJCQlBTUwgY29kZSBzbmlwcGV0OiBBTUwgY29kZSBpbnNpZGUgIkRldmlj ZShuYW1lWzRdKSIKCiAgICAgICAgICAgICAgIGUuZy4gZm9yIGFuIEFDUEkgbmFtZXNwYWNlIGRl dmljZSBkZWZpbmVkIGJ5CgkgICAgICAgICAgICAgRGV2aWNlKE5WRFIpCgkJICAgICB7CgkJICAg ICAgIE5hbWUgKF9ISUQsICJBQ1BJMDAxMiIpCgkJICAgICAgIC4uLgoJCSAgICAgfQoJCSAgICBR RU1VIGJ1aWxkcyBhIGRhdGEgYmxvYiBsaWtlCgkJICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgkJCXwgJ04nLCAnVicsICdEJywgJ1In IHwgTmFtZSAoX0hJRCwgIkFDUEkwMDEyIikgLi4uIHwKCQkJKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKIDIpIGh2bWxvYWRlciBzdG9yZXMgc2ln bmF0dXJlcyBvZiBpdHMgb3duIGd1ZXN0IEFDUEkgdGFibGVzIGluIGFuCiAgICBhcnJheSBidWls dGluX3RhYmxlX3NpZ3NbXSwgYW5kIG5hbWVzIG9mIGl0cyBvd24gZ3Vlc3QgQUNQSQogICAgbmFt ZXNwYWNlIGRldmljZXMgaW4gYW4gYXJyYXkgYnVpbHRpbl9uZF9uYW1lc1tdLiBCZWNhdXNlIHRo ZXJlCiAgICBhcmUgb25seSBhIGZldyBndWVzdCBBQ1BJIHRhYmxlcyBhbmQgbmFtZXNwYWNlIGRl dmljZXMgYnVpbHQgYnkKICAgIFhlbiwgd2UgY2FuIGhhcmRjb2RlIHRoZWlyIHNpZ25hdHVyZXMg b3IgbmFtZXMgaW4gaHZtbG9hZGVyLgoKIDMpIFdoZW4gaHZtbG9hZGVyIGxvYWRzIGEgdHlwZSAw IGVudHJ5LCBpdCBleHRyYWN0cyB0aGUgc2lnbmF0dXJlCiAgICBmcm9tIHRoZSBkYXRhIGJsb2Ig YW5kIHNlYXJjaCBmb3IgaXQgaW4gYnVpbHRpbl90YWJsZV9zaWdzW10uICBJZgogICAgZm91bmQg YW55b25lLCBodm1sb2FkZXIgd2lsbCByZXBvcnQgYW4gZXJyb3IgYW5kIHN0b3AuIE90aGVyd2lz ZSwKICAgIGl0IHdpbGwgYXBwZW5kIGl0IHRvIHRoZSBlbmQgb2YgbG9hZGVkIGd1ZXN0IEFDUEku CgogNCkgV2hlbiBodm1sb2FkZXIgbG9hZHMgYSB0eXBlIDEgZW50cnksIGl0IGV4dHJhY3RzIHRo ZSBkZXZpY2UgbmFtZQogICAgZnJvbSB0aGUgZGF0YSBibG9iIGFuZCBzZWFyY2ggZm9yIGl0IGlu IGJ1aWx0aW5fbmRfbmFtZXNbXS4gSWYKICAgIGZvdW5kIGFueW9uZSwgaHZtbG9hZGVyIHdpbGwg cmVwb3J0IGFuZCBlcnJvciBhbmQgc3RvcC4gT3RoZXJ3aXNlLAogICAgaXQgd2lsbCB3cmFwIHRo ZSBBTUwgY29kZSBzbmlwcGV0IGJ5ICJEZXZpY2UgKG5hbWVbNF0pIHsuLi59IiBhbmQKICAgIGlu Y2x1ZGUgaXQgaW4gYSBuZXcgU1NEVCB3aGljaCBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBlbmQg b2YKICAgIGxvYWRlZCBndWVzdCBBQ1BJLgoKNC4zLjIgRW11bGF0aW5nIEd1ZXN0IF9EU00KCiBP dXIgZGVzaWduIGxlYXZlcyB0aGUgZW11bGF0aW9uIG9mIGd1ZXN0IF9EU00gdG8gUUVNVS4gSnVz dCBhcyB3aGF0CiBpdCBkb2VzIHdpdGggS1ZNLCBRRU1VIHJlZ2lzdGVycyB0aGUgX0RTTSBidWZm ZXIgYXMgTU1JTyByZWdpb24gd2l0aAogWGVuIGFuZCB0aGVuIGFsbCBndWVzdCBldmFsdWF0aW9u cyBvZiBfRFNNIGFyZSB0cmFwcGVkIGFuZCBlbXVsYXRlZAogYnkgUUVNVS4KCgpSZWZlcmVuY2Vz OgpbMV0gQUNQSSBTcGVjaWZpY2F0aW9uIHY2LAogICAgaHR0cDovL3d3dy51ZWZpLm9yZy9zaXRl cy9kZWZhdWx0L2ZpbGVzL3Jlc291cmNlcy9BQ1BJXzYuMC5wZGYKWzJdIE5WRElNTSBOYW1lc3Bh Y2UgU3BlY2lmaWNhdGlvbiwKICAgIGh0dHA6Ly9wbWVtLmlvL2RvY3VtZW50cy9OVkRJTU1fTmFt ZXNwYWNlX1NwZWMucGRmClszXSBOVkRJTU0gQmxvY2sgV2luZG93IERyaXZlciBXcml0ZXIncyBH dWlkZSwKICAgIGh0dHA6Ly9wbWVtLmlvL2RvY3VtZW50cy9OVkRJTU1fRHJpdmVyX1dyaXRlcnNf R3VpZGUucGRmCls0XSBOVkRJTU0gRFNNIEludGVyZmFjZSBFeGFtcGxlLAogICAgaHR0cDovL3Bt ZW0uaW8vZG9jdW1lbnRzL05WRElNTV9EU01fSW50ZXJmYWNlX0V4YW1wbGUucGRmCls1XSBVRUZJ IFNwZWNpZmljYXRpb24gdjIuNiwKICAgIGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVs dC9maWxlcy9yZXNvdXJjZXMvVUVGSSUyMFNwZWMlMjAyXzYucGRmCls2XSBJbnRlbCBBcmNoaXRl Y3R1cmUgSW5zdHJ1Y3Rpb24gU2V0IEV4dGVuc2lvbnMgUHJvZ3JhbW1pbmcgUmVmZXJlbmNlLAog ICAgaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvZGVmYXVsdC9maWxlcy9tYW5hZ2Vk LzA3L2I3LzMxOTQzMy0wMjMucGRmCls3XSBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2Fy Y2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTYtMDIvbXNnMDAwMDYuaHRtbApbOF0gaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTYtMDYvbXNnMDA2MDYuaHRt bAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==