MESSAGE
DATE | 2014-11-22 |
FROM | Ruben Safir
|
SUBJECT | Subject: [LIU Comp Sci] UEFI and Secure Boot
|
From owner-learn-outgoing-at-mrbrklyn.com Sat Nov 22 18:48:59 2014 Return-Path: X-Original-To: archive-at-mrbrklyn.com Delivered-To: archive-at-mrbrklyn.com Received: by mrbrklyn.com (Postfix) id 40722161158; Sat, 22 Nov 2014 18:48:59 -0500 (EST) Delivered-To: learn-outgoing-at-mrbrklyn.com Received: by mrbrklyn.com (Postfix, from userid 28) id 19976161163; Sat, 22 Nov 2014 18:48:58 -0500 (EST) Delivered-To: learn-at-nylxs.com Received: from mailbackend.panix.com (mailbackend.panix.com [166.84.1.89]) by mrbrklyn.com (Postfix) with ESMTP id 11944161158 for ; Sat, 22 Nov 2014 18:48:58 -0500 (EST) Received: from [10.0.0.42] (unknown [96.57.23.82]) by mailbackend.panix.com (Postfix) with ESMTP id 3B60D15FB4 for ; Sat, 22 Nov 2014 18:48:56 -0500 (EST) Message-ID: <54712127.5010109-at-panix.com> Date: Sat, 22 Nov 2014 18:49:59 -0500 From: Ruben Safir User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 MIME-Version: 1.0 To: learn-at-nylxs.com Subject: [LIU Comp Sci] UEFI and Secure Boot References: <20141118202334.GA15311-at-panix.com> In-Reply-To: <20141118202334.GA15311-at-panix.com> Content-Type: multipart/mixed; boundary="------------090202030606030608070801" Sender: owner-learn-at-mrbrklyn.com Precedence: bulk Reply-To: learn-at-mrbrklyn.com
This is a multi-part message in MIME format. --------------090202030606030608070801 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit
This is the finished report, version 1.0, although I expect to improve on the paper in the future. Included is also the presentation slides. I will be presenting this at LIU/Brooklyn tonight, but I will give another off campus presentation in the immediate future, and hopefully extend it to more than 10 minutes, which is my current time limit.
http://www.nylxs.com/docs/grad_school/uefi/page1.html slides
http://www.nylxs.com/docs/grad_school/arch/uefi_pages.txt paper
--------------090202030606030608070801 Content-Type: text/plain; charset=UTF-8; name="uefi.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="uefi.txt"
SUJNL1BDL0ludGVsIEJhc2VkIGNvbXB1dGVycywgbGlrZSBhbGwgb3RoZXIgY29tcHV0aW5n IHN5c3RlbXMsIG5lZWQgdG8KYm9vdCB3aGVuIHRoZXkgYXJlIHBvd2VyZWQgb24uICBUaGUg Y29tcHV0ZXIncyB2YXJpb3VzIHBhcnRzIGFuZCBpbiBhbmQKb3V0IGRldmljZXMgbmVlZCB0 byBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGFsbG93IGFjY2VzcyB0byByZXNvdXJjZXMuCklu IG9yZGVyIHRvIGZhY2lsaXRhdGUgYm9vdGluZywgUEMgYmFzZWQgc3lzdGVtcyBoYXZlIGEg dmFyaWV0eSBvZiBST00KbGlrZSBzdG9yYWdlIHN5c3RlbXMgdG8gcmVhZCB0aGUgcHJvZ3Jh bSB0aGF0IGJlZ2lucyB0aGUgYm9vdGluZyBwcm9jZXNzLgoKV2hlbiBhIGNvbXB1dGVyIHN0 YXJ0cywgaXQgaGFzIG5vIGtub3dsZWRnZSBvZiBpdHNlbGYuICBJdCBpcyBhIGJsYW5rCnNs YXRlLiAgQWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBzeXN0ZW0gbmVlZHMgdG8ga25v dyBhYm91dCBpdHNlbGYsCmluIG9yZGVyIHRvIHByb2Nlc3MgdXNlciBwcm9ncmFtcyBhbmQg dG8gZG8gdXNlZnVsIHRhc2tzLCByZXF1aXJlcwphbiBpbmNyZWFzaW5nbHkgY29tcGxleCB0 YXNrIG9mIG1ha2luZyByZXNvdXJjZXMgYXZhaWxhYmxlIGFuZCBrbm93bi4KSW4gb3JkZXIg dG8gZG8gdGhpcywgc3lzdGVtcyBhcmUgaGFyZCB3aXJlZCB0byBsb29rIGZvciB0aGUgc3Rh cnRpbmcKaW5zdHJ1Y3Rpb25zIGF0IGZpeGVkIGxvY2F0aW9ucyBvbiB0aGUgc3lzdGVtLiAg VGhlc2UgbG9jYXRpb25zCmFyZSBzcGVjaWZpYyBmb3IgZGlmZmVyZW50IGhhcmR3YXJlIHR5 cGVzLiAgRm9yIGV4YW1wbGUgb24gSW50ZWwgeDg2CnByb2Nlc3NvcnMsIG1lbW9yeSBsb2Nh dGlvbiBGRkZGOjAwMDAgaXMgYWx3YXlzIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiB0aGF0CnRo ZSBDUFUgaXMgYmVnaW4gZXhlY3V0aW5nIHdpdGguICBPdGhlciBzeXN0ZW1zIGhhdmUgZGlm ZmVyZW50IGxvY2F0aW9ucywKYW5kIGV2ZW4gZGlmZmVyZW50IGFkZHJlc3Npbmcgc2NoZW1l cy4KCkludGVsIHg4NiBiYXNlZCBzeXN0ZW0gaW5jbHVkZSBST00gYmFzZWQgZmlybXdhcmUg Y2FsbGVkIGEgQklPUy4KVGhlIEJJT1MgKEJhc2ljIElucHV0L091cHRwdXQgU3lzdGVtKSwg aGFzIGV4YWN0aW5nIHNwZWNpZmljYXRpb25zLgpBbHRob3VnaCB0aGV5IGNhbiB2YXJ5LCBm b3IgYSBzcGVjaWZpYyB4ODYgdHlwZSBvZiBhcmNoaXRlY3R1cmUsIHRoZXkgY2FuCm9ubHkg dmFyeSB3aXRoaW4gdGhlIGNvbmZpbmVzIG9mIHRoZSBzcGVjaWZpY2F0aW9uLiAgQSBCSU9T IHJlbGllcyBvbiB0aGUKeDg2IGFyY2hpdGVjdHVyZeKAmXMgMTYtYml0IHJlYWwgbW9kZSB3 aGljaCBpcyBhIGxvbmcgd2FzIG9mIHNheWluZyB0aGF0Cml0IHdvcmtzIGluIHRoZSBlbnZp cm9ubWVudCBvZiBhIDE2IGJpdCBDUFUgb2YgdGhlIHg4NiB0eXBlLiAgU2luY2UgYWxsCnRo ZSBpbnRlbCBjaGlwcyBoYXZlIGJlZW4gYmFja3dhcmRseSBjb21wYXRpYmxlIHRvIHRoaXMg c3RhbmRhcmQsIHVwCnVudGlsIG5vdywgQklPUywgYW5kIENNT1Mgc29mdHdhcmUgdGhhdCBh Y2Nlc3NlcyB0aGUgQklPUyBoYXMgYmVlbiBhdAp0aGUgY29yZSBvZiBzeXN0ZW0gc3RhcnQg dXBzIGZvciBpbnRlbCBiYXNlZCBoYXJkd2FyZSBmb3IgYSBnZW5lcmF0aW9uLgoKT3ZlciB0 aW1lLCB0aGVyZSBoYXMgYmVlbiBpbmNyZWFzaW5nIGRlbWFuZHMgb24gaGFyZHdhcmUgYm9v dGluZy4KRXZlbiBlYXJseSBpbiB0aGUgaGlzdG9yeSBvZiB0aGUgUEMsIHRoZXJlIHdhcyBh IG5lZWQgdG8gdXNlIFBDcyBhcyB0aGluCmNsaWVudHMgYW5kIGZvciBuZXR3b3JrIGJvb3Rp bmcuICBUaGlzIHJlcXVpcmVkIHRoYXQgbmV0d29yayBjYXJkcywgYW5kCm5ldHdvcmtpbmcg cHJvdG9jb2xzIHRvIGJlIGFjdGl2ZSBwcmlvciB0byB0aGUgYm9vdGluZyBhbmQKaW1wbGVt ZW50YXRpb24gb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGVyZSB3YXMgdGhlIGNyZWF0 aW9uIG9mIHRoZQpCT09UUCBhbmQgVEZUUCAodHJpdmlhbCBGVFApIGFuZCBhIHNsb3dseSBh IHdob2xlIGFscGhhYmV0IHNvdXAgb2YKYWNyb255bXMgaGF2ZSBiZWVuIGludHJvZHVjZWQg aW50byB0aGUgbGluZ28gb2YgYm9vdGluZyBzeXN0ZW0uICAKCkluIGFkZGl0aW9uIHRvIHRo aXMsIG1vcmUgdGhhbiBvbmUgb3BlcmF0aW5nIHN5c3RlbSBhcmUgbm93IGluc3RhbGxlZCBv bgpzeXN0ZW0sIGFuZCBoYXJkIGRyaXZlIGNhcGFjaXRpZXMgaGF2ZSBncm93biBmdXJ0aGVy IHRoYXQgdGhlIDE2IEJJT1MKYWRkcmVzc2luZyBzY2hlbWUgY2FuIHJlYWQuICBIYXJkIERy aXZlcyBoYXZlIGhhZCBtYXN0ZXIgYm9vdCByZWNvcmRzLApidXQgb3ZlciB0aW1lLCBib290 aW5nIGluZm9ybWF0aW9uIGhhcyBtb3ZlZCBvZmYgdGhlIG1hc3RlciBib290IHJlY29yZAph bmQgb250byB2YXJpb3VzIHBhcnRpdGlvbnMuICBBZGRpdGlvbmFsbHksIG1vZGVybiBGcmVl IFNvZnR3YXJlIGFuZApwcm9wcmlldGFyeSAgc3lzdGVtcyBjYW4gcnVuIG9uIGEgdmFyaWV0 eSBvZiBoYXJkd2FyZSBvdXRzaWRlIG9mIHRoZQp3b3JsZCBvZiB0aGUgeDg2IGFyY2hpdGVj dHVyZS4gIAoKQmlvcyBhbmQgQ01PUyBjYW4gbm93IGFsc28gYmUgZmxhc2hlZCwgdG8gYmUg dXBkYXRlZCBhbmQgYWxsb3cgZm9yIG1vcmUKZmxleGlibGUgY29uZmlndXJhdGlvbnMuICBU YWJsZXRzLCBtaWNyby10YWJsZXMocGhvbmVzKSwgYW5kIG5ldyBsYXB0b3AKZGVzaWducyB3 aXRoIHRvdWNoIHNjcmVlbiBhcmUgc3RhbmRhcmQgaW5wdXQgZGV2aWNlcyBoYXZlIGJlY29t ZQpwb3B1bGF0aW9uLiAgQWxsIHRoaXMgaGFzIHB1dCBwcmVzc3VyZSB0byByZWRlc2lnbiB0 aGUgYm9vdGluZyBzeXN0ZW0KZm9yIGNvbW1vZGl0eSBoYXJkd2FyZS4KCiJJbiB0aGUgZW5k LCB0aGUgQklPUyBpcyBzdGlsbCBoZXJlIGFuZCBzdGlsbCBkb2VzIHdoYXQgaXQgaGFzIGJl ZW4gZG9pbmcKZm9yIHRoZSBsYXN0IDI1IHllYXJzOiBtYWtpbmcgc3VyZSB5b3VyIG9wZXJh dGluZyBzeXN0ZW0gY2FuIGJvb3QuIEl0CndhcyBuZXZlciBkZXNpZ25lZCBmb3IgdG9kYXni gJlzIG1hc3NpdmUgZGl2ZXJzaXR5IG9mIGhhcmR3YXJlLiBJdOKAmXMKc3RpbGwgc3R1Y2sg d2l0aCAxNi1iaXQgaW50ZXJmYWNlcyBhbmQgc29mdHdhcmUgaW50ZXJydXB0cywgaW50ZXJy dXB0CnJvdXRpbmcgYW5kIG1heGltdW0gcHJlY2lzaW9uIHRpbWVycywgbGltaXRlZCBST00g ZXhlY3V0aW9uIHNwYWNlICgxCk1CKSBhbmQgaW1hZ2Ugc2l6ZSwgYSBsaW1pdGVkIG51bWJl ciBvZiBpbml0aWFsaXplYWJsZSBkZXZpY2VzICh3aGljaAppcyBjcml0aWNhbCBpbiB0aGUg c2VydmVyIHNwYWNlKSwgcHJvcHJpZXRhcnkgZXh0ZW5zaW9ucywgYW5kIG1pc3NpbmcKbW9k dWxhcml0eeKAlGp1c3QgdG8gbmFtZSBhIGZldyBpc3N1ZXMuIiBbMV0KClRoaXMgaGFzIGJl ZW4gYSBibGVzc2luZyBhbmQgYSBjdXJzZS4gIEVmZm9ydHMgdG8gcmVtb3ZlIHRoZSBCSU9T CmZ1bmN0aW9uYWxpdHkgaGF2ZSBhbHdheXMgYmVlbiB0YXJnZXRlZCB0byB0YWtlIGF3YXkg dGhlIGZsZXhpYmlsaXR5IG9mCnJ1biBhbnl0aGluZywgY2xlYW4gYW5kIHNpbXBsZSBpbnRl cmZhY2UuICBJQk0ncyBNaWNyb0NoYW5uZWwKYXJjaGl0ZWN0dXJlIGlzIGJ1dCBvbmUgYW4g ZXhhbXBsZS4gIEludGVsIGZpbmFsbHkgdG9vayB0aGUgYnVsbCBieSB0aGUKaG9ybnMgd2l0 aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBJdGFuaXVt4oCZcyBJQTY0IGFyY2hpdGVjdHVy ZSAoYWxvbmcKd2l0aCBIUCkgaW4gMjAwMy4gIFRoaXMgd2FzIGEgUEMgbGlrZSBzZXJ2ZXIg YXJjaGl0ZWN0dXJlIHRoYXQgbmVlZGVkCmFyb3VuZCBzb21lIG9mIHRoZSBCSU9TIGxpbWl0 YXRpb25zLiBUaGUgY3JlYXRlZCB0aGUgRUZJIHN0YW5kYXJkcwooYWRkaW5nIG1vcmUgYWNy b255bXMgdG8gdGhlIHNvdXApLCBhbmQgaGFuZGVkIG9mZiBpdHMgZnV0dXJlIHRvIHRoZQpp bmR1c3RyaWFsIGNvbnNvcnRpdW0gY2FsbGVkIFVuaWZpZWQgRXh0ZW5zaWJsZSBGaXJtd2Fy ZSBJbnRlcmZhY2UgRm9ydW0Kd2hpY2ggaXMgYW4gYWNyb255bSBmb3IgQU1ELCBJbnN5ZGUg U29mdHdhcmUsIEFtZXJpY2FuIE1lZ2F0cmVuZHMsIEluYy4uCkludGVsLCBBcHBsZSBJbmMs ICBMZW5vdm8sIERlbGwsIE1pY3Jvc29mdCwgSGV3bGV0dCBQYWNrYXJkLCAKUGhvZW5peCBU ZWNobm9sb2dpZXMgYW5kICBJQk0uICBUaGVyZSBpcyBhIFNJTkdMRSBub24tcHJvZml0IGVu Z2luZWVyaW5nIApvciBzdGFuZGFyZHMgZ3JvdXAgcmVwcmVzZW50ZWQgb24gVUVGSSBmb3J1 bS4gIFRoZSByZXN1bHQgaXMgc29tZSB2ZXJ5CnVzZWZ1bCBzcGVjaWZpY2F0aW9ucyBhIHdh c2hlZCBpbiBzb21lIGdhbWUgY2hhbmdpbmcgbG9jayBkb3duIG1lY2hhbmlzbQpkZXNpZ25l ZCB0byBkbyB3aGF0IElCTSBjb3VsZCBuZXZlciBhY2NvbXBsaXNoIHdpdGggbWljcm9jaGFu bmVsLgoKVUVGSSwgaW4gZmFjdCwgaXMgbmVhcmx5IGFuIG9wZXJhdGluZyBzeXN0ZW0gc2l0 dGluZyBiZXR3ZWVuIHlvdXIKZmlybXdhcmUgYW5kIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4g ICJJdCBub3Qgb25seSBvZmZlcnMgZHJpdmVyIHN1cHBvcnQsIAppbnRlcmZhY2VzLCBhbmQg c2VydmljZXMsIGJ1dCBpdCBhbHNvIGhhcyBhIHNoZWxsIHRoYXQgYWxsb3dzIHVzZXJzIHRv IApleGVjdXRlIGFwcGxpY2F0aW9ucyBvbiBhIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuIiBb MV0gIAoKVGhlIGdlbmVyYWxpemVkIHByb2Nlc3Mgb2YgVUVGSSBib290aW5nIGlzIGFzIGZv bGxvd3M6CgoxLSBVRUZJIEZpcm13YXJlOiAgUGVyZm9ybXMgQ1BVIGFuZCBDaGlwc2V0IGlu aXRpYWxpemF0aW9uIGFuZCBsb2Fkcwpkcml2ZXJzCgoyLSBVRUZJIEJvb3QgTWFuYWdlciAt IExvYWRzIGRldmljZSBkcml2ZXJzIGFuZCB0aGUgYm9vdCBhcHBsaWNhdGlvbgoKMy0gTG9h ZHMgdGhlIE9TIGJvb3QgbWFuYWdlciBzZWxlY3RlZCBieSB0aGUgdXNlcgoKNC0gTG9hZHMg dGhlIE9TCgo1LSBSdW5zIHRoZSBPUyBLZXJuZWwKCkVGSSAodGhlIEludGVsIENoaWxkIG9m IFVFRkkpIGhhcyB0YWJsZXMgYW5kIG9mZmVycyBydW4gbGV2ZWwgc2VydmljZXMKdG8gdGhl IG9wZXJhdGluZ3MuICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHJ1bnRpbWUgc2VydmljZXMg dGhhdAp1bml4LWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMgaGF2ZSBoYWQgZm9yIGRlY2FkZXMu ICBCb290IFNlcnZpY2VzIGluY2x1ZGUKZmlsZSBzZXJ2aWNlcywgdGV4dCBhbmQgZ3JhcGhp YyB1c2VyIGNvbnNvbGVzLCBhbmQgdGhlIHJ1biBzZXJ2aWNlcyBjYW4Kb2ZmZXIgYWNjZXNz IHRvIE5vbi12b2xhdGlsZSByYW5kb20tYWNjZXNzIG1lbW9yeSAoTlZSQU0pLCBkYXRlIGFu ZAp0aW1lLCBldGMuICBFRkkgZHJpdmVycyBoYXZlIHNwZWNpZmljIGNvbW11bmljYXRpb24g cHJvdG9jb2xzIHRoYXQgYWxsCmNvbXBvbmVudHMgY2FuIHVzZS4gIFRoZSBFRkkgZGV2aWNl IGRyaXZlciBlbnZpcm9ubWVudCBzIGEgdmlydHVhbApkcml2ZSwgbGlrZSB3aGF0IEphdmEg dXNlcywgY2FsbGVkIHRoZSBFQkMsIHdoaWNoIHByb3ZpZGVzIGEgQ1BVCmluZGVwZW5kZW50 IGRldmVsb3BtZW50IHRhcmdldCBmb3IgVUVGSSBtb2R1bGUgZGV2ZWxvcG1lbnQuICAKCk92 ZXJhbGwgQm9vdCBUaW1lIGxpbmUKClBhcnQgMToKUG93ZXIgT24KU2VjdXJlIEJvb3QKUHJl IEVGSSBJbml0aWFsaXphdGlvbiAoUEVJKQoJUElFIENvcmUKCUNQVSBJbml0CglDaGlwc2V0 IEluaXQKCUJvYXJkIEluaWl0CglFRkkgRHJpdmVyIERpc3BhdGNoZXIKCUFyY2hpdGVjdHVy ZSBQcm90b2NvbHMKRHJpdmVyIEV4ZWN1dGlvbiBFbnZpcm9ubWVudCAKIAlEZXZpY2UsIEJ1 cyBhbmQgU2VydmljZSBEcml2ZXIKCVV0aWxpemF0aW9uIG9mIHRoZSBFRkkgRHJpdmVyIERp c3BhdGNoZXIKCQpCb290IERldmljZSBTZWxlY3Rpb24KCUJvb3QgTWFuYWdlcgoKVHJhbnNp dGlvbiBTeXN0ZW0gTG9hZAoJT1MgQWJzZW50IEFwcGxpY2F0aW9uCglVRUZJIFNoZWxsCglU cmFuc2llbnQgT1MgQm9vdCBMb2FkZXIKCUZpbmFsIE9TIEJvb3QgTG9hZGVyCgpSdW4gVGlt ZQoJT1MgZW52aXJvbm1lbnQgCglhcHBsaWNhdGlvbnMKClRoZSBjb21wbGV0ZSBzcGVjaWZp Y2F0aW9uIGZvciBVRUZJIGlzIG5vdyAyMDk4IHBhZ2VzIG9mIHRleHQgYXZhaWxhYmxlIGZy b20gCnRoZSBVRUZJIGZvcnVtLCBhbmQgYXMgc3VjaCwgaXMgZmFyIG1vcmUgZGV0YWlsZWQg dGhhbiB0aGUgbGltaXRzIG9mCnRoaXMgcGFwZXIuICBJdCdzIGNvbXBsZXRlIGN1cnJlbnQg c291cmNlIGlzIGF0Cmh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9y ZXNvdXJjZXMvMl80X0VycmF0YV9CLnBkZiAuClRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIENN T1MvQklPUyBpcyBzaWduaWZpY2FudCBhbmQgZGVzZXJ2ZXMgc29tZQp1bmRlcnN0YW5kaW5n IGFuZCBhdHRlbnRpb24uIAoKVUVGSSBpcyBhbiBlbWJyYWNlIGFuZCBleHRlbmQgdGVjaG5v bG9neSBmb3IgdGhlIHN5c3RlbSBiaW9zLiAgSXQgZG9lcwpub3QgZWxpbWluYXRlIGZ1bmRh bWVudGFsIGZpcm13YXJlLCBidXQgbWFza3Mgc29tZSBvZiB0aGUgY29tcGxleGl0eQpmb3Ig ZGV2ZWxvcGVycyBhbmQgY29tcHV0ZXIgdXNlcnMuICBJdCBhbHNvIHByb3ZpZGVzIGZvciBh IGxvY2tlZCBkb3duCm1lY2hhbmlzbSBmb3IgcHVyY2hhc2VkIHN5c3RlbXMgc3VjaCB0aGF0 IHRoZWlyIG9wZXJhdGluZyBzeXN0ZW1zIGNhbiBub3QKYmUgcmVtb3ZlZCBvciBhbHRlcmVk LiAgSXQgdGhlcmVmb3IgcHJvdmlkZXMgYSBrZXkgb2JqZWN0aXZlIG9mCm9wZXJhdGluZyBz eXN0ZW0gdmVuZG9ycyBhbmQgY29tcHV0ZXIgc3lzdGVtIG1hbnVmYWN0dXJlcyBzdWNoIHRo YXQKcHJldmlvdXNseSBoYXMgYmVlbiBkZW5pZWQgdGhlbSBieSB0aGUgb3BlbiBzdGFuZGFy ZHMgb2YgQklPUyBhbmQgQ01PUy4gCgpVcG9uIHBvd2VyaW5nIHVwIHRoZSBzeXN0ZW0sIEJJ T1MgYmFzZXMgc3lzdGVtcyBoYXZlIGEgdmVyeSBzcGVjaWZpYwphZ2VuZGEgb2YgaXRlbXMg dGhhdCB0aGV5IG11c3QgcGVyZm9ybSBpbiBvcmRlciB0byBiZSBjb21wbGlhbnQgd2l0aCB0 aGUKc3BlY2lmaWNhdGlvbnMuICAgV2l0aCBhIEJJT1MgdGhlIHg4NiBDUFUgcmVzZXRzIGFu ZCBsb2FkcyBhIFBDIGF0IHRoZSB0b3AgCm9mIHRoZSBvbmUgbWVnYWJ5dGUgcmVhbCBtb2Rl IGFkZHJlc3Mgc3BhY2Ugd2hpY2ggaXMgd2hlcmUgdGhlIEJJT1MKcHJvZ3JhbSBpcyByZXNp ZGVudC4gIFRoZW4gYSBqdW1wIGluc3RydWN0aW9uIGlzIHNldCB0byBtb3ZlIHRoZSBQQyB0 bwphbiBlYXJsaWVyIGxvY2F0aW9uIHdoZXJlIHRoZSBCSU9TIGlzIHJ1bi4gIFRoZSBzeXN0 ZW0gY2FuIGJlIHJlc2V0IGZyb20KYSBjb2xkIGJvb3Qgb3IgYSB3YXJtIGJvb3QuICBGbGFn cyBkZXRlcm1pbmUgd2hpY2ggcHJvY2VzcyB0byBmb2xsb3cuCk9uIGEgY29sZCBib290LCB0 aGUgYmlvcyBydW5zIGEgInBvc3QiLiAgT24gYSB3YXJtIGJvb3QgaXQgZG9lcyBub3QuCgpQ b3N0IGlkZW50aWZpZXMgdGhlIHN5c3RlbXMgcGFydHMgYW5kIHRoZSBDUFUsIFJBTSwgaW50 ZXJydXB0IGFuZCBETUEgCmNvbnRyb2xsZXJzIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgY2hp cHNldCwgdmlkZW8gZGlzcGxheSBjYXJkLCBrZXlib2FyZCwgCmhhcmQgZGlzayBkcml2ZSwg b3B0aWNhbCBkaXNjIGRyaXZlIGFuZCBvdGhlciBiYXNpYyBoYXJkd2FyZS4gQWZ0ZXIKcG9z dGluZywgb3B0aW9uYWwgUk9NcyBhcmUgc2VhcmNoZWQgZm9yIHdoaWNoIGV4dGVuZCBmdW5j dGlvbmFsaXR5LgpUaGVzZSBST01zIGV4aXN0IGluIHVwcGVyIG1lbW9yeSwgYW5kIHRoZSBC SU9TIHNjYW5zIG1lbW9yeSBmcm9tCjB4MEMwMDAwIHRvICAweDBGMDAwMCBvbiB0aGUgMiBL aUIgYm91bmRhcnkuICBST01zIGhhdmUgYSBtZW1vcnkgYm91bmRhcnkKb2YgMHg1NSAweEFB IGZvbGxvd2VkIGJ5IGEgYnl0ZSB0aGF0IGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIDUxMiBi eXRlCmJsb2NrcyB0aGF0IHRoZSBleHBhbnNpb24gUk9NIHNpdHMgYXQgaW4gcmVhbCBtZW1v cnkuIEEgY2hlY2tzdW0gaXMgb2YKdGhlIDUxMiBieXRlIGJsb2NrIHRoYXQgaXMgY2FsY3Vs YXRlZCBhbmQgaWYgdmFsaWQsIHRoZSBleGVjdXRlIGp1bXBzIHRvCnRoZSBvcHRpb25hbCBS T00gd2hpY2ggbm93IGNvbnRyb2xzIHRoZSBzeXN0ZW0uICBST01TIG5vcm1hbGx5IHJldHVy bgpiYWNrIHRvIHRoZSBCSU9TIHdoaWNoIHNjYW5zIGZvciB0aGUgbmV4dCBST00gdW50aWwg dGhlIGVudGlyZSBzZWN0b3Igb2YKbWVtb3J5IGlzIHNjYW5uZWQuCgpGaW5pc2hlZCB3aXRo IGFsbCB0aGlzLCB0aGUgQklPUyBub3cgY2FsbHMgSU5UIDE5aC4gIElOVCAxOUggaXMgYSBz b2Z0d2FyZSAKaW50ZXJydXB0IHRoYXQgcHV0cyBhZGRyZXNzIDAwMTlIIG9udG8gdGhlIGFk ZHJlc3MgYnVzIGFuZCBzdGFydHMgZXhlY3V0aW5nIApjb2RlIGZvdW5kIHRoZXJlLiAgMDAx OUggaXMgbm9ybWFsbHkgYSBqdW1wIGluc3RydWN0aW9uLiAgVXN1YWxseSB0aGlzIGxvYWRz IApkYXRhIGZyb20gSGVhZCAwLCBUcmFjayAwIG9mIFNlY3RvciAxIG9mIGEgZGlzay4gIFRo aXMgd291bGQgYmUgdGhlIE1hc3RlciAKQm9vdCBSZWNvcmQgKE1CUikuIEluZm9ybWF0aW9u IHJlY2VpdmVkIGJ5IHRoZSBQb3N0IGRldGVybWluZXMgd2hpY2ggZGlza3MgCmFyZSBhdHRl bXB0ZWQgdG8gbG9jYXRlIGEgYm9vdHN0cmFwIGxvYWRlciwgaW5zdGFsbGluZyBpdCBpbnRv IG1lbW9yeQpsb2NhdGlvbiAweDAwMDA6MHg3QzAwLiAgVGhlIGJsb2F0c3RyYXAgbG9hZGVy IHJlYWRzIGluIHRoZSBwYXJ0aXRpb24KdGFibGUgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVt LiBbMl0KClRoZSBiaW9zIGlzIGEgZHVtYiBkZXZpY2UgdGhhdCBkb2VzIG5vdCBwcm9jZXNz IGluc3RydWN0aW9ucyBmcm9tIHRoZQpib290IHNlY3Rvci4gIFRoaXMgaXMgbGVmdCB0byB0 aGUgYm9vdHN0cmFwIHByb2dyYW0uICBXaGF0IGlzIG1vc3QKaW1wb3J0YW50IHRvIHVuZGVy c3RhbmQgaXMgdGhhdCB0aGUgZW50aXJlIEJJT1Mgc3BlY2lmaWNhdGlvbiBpcyB2ZXJ5CnNw ZWNpZmljIHdpdGggZXhhY3QgZGVmaW5pdGlvbnMgb2YgIGludGVycnVwdHMsIG1lbW9yeSBt YXBwaW5ncywgZnJvbSAKaW50ZXJydXB0IGRlZmluaXRpb25zLCBoYXJkIGRyaXZlIHNwZWNp ZmljYXRpb24gYW5kIGEgcGxldGhvcmEgb2YgZXhhY3QKbG9jYXRpb25zIGFuZCBsaW1pdGF0 aW9ucyBpbiBvcmRlciB0byBnZXQgZnJvbSBwb3dlciBvZiB0byBPUyBydW5uaW5nLgpNdWNo IG9mIHRoaXMgZGV0YWlsIHdhcyBjcmVhdGVkIGJlY2F1c2UgdGhlIHg4NiBzcGVjaWZpY2F0 aW9uIHdhcwpkZXNpZ25lZCBmb3IgdGhlIHB1cnBvc2Ugb2YgZW11bGF0aW5nIHRoZSBzcGVj aWZpYyBJTUIvUEMgWFQgcHJvZHVjdCBhbmQKYXJjaGl0ZWN0dXJlLiAgVGhlIG5ldyBVRUZJ IHNwZWNpZmljYXRpb24gYnVyaWVzIG11Y2ggb2YgdGhpcwpzcGVjaWZpY2F0aW9uIGFuZCBs ZWF2ZXMgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljcyB0byBpbmRpdmlkdWFsCmZpcm13 YXJlIGNvbXBhbmllcy4gIFVuZGVyIHRoZSBob29kLCBvbmUgbW90aGVyYm9hcmQgdW5kZXIg VUVGSSBtaWdodAp1c2UgYW4gZW50aXJlbHkgdW5pcXVlIHNldCBvZiBhZGRyZXNzaW5nIHNj aGVtZXMgYW5kIGludGVycnVwdHMgdGhlbgphbm90aGVyLCBhcyBsb25nIGFzIEJPVEggZW5k IHVwIHNob3dpbmcgYW4gaW50ZXJmYWNlIHRoYXQgY29tcGxpZXMgd2l0aAp0aGUgVUVGSSBz cGVjaWZpY2F0aW9uLiAgCgoiV2hpbGUgQklPUyBpcyBmdW5kYW1lbnRhbGx5IGEgc29saWQg cGllY2Ugb2YgZmlybXdhcmUsIFVFRkkgaXMgYQpwcm9ncmFtbWFibGUgc29mdHdhcmUgaW50 ZXJmYWNlIHRoYXQgc2l0cyBvbiB0b3AgYSBjb21wdXRlcuKAmXMgaGFyZHdhcmUKYW5kIGZp cm13YXJlIChhbmQgaW5kZWVkIFVFRkkgY2FuIGFuZCBkb2VzIHNpdCBvbiB0b3Agb2YgQklP UykuIFJhdGhlcgp0aGFuIGFsbCBvZiB0aGUgYm9vdCBjb2RlIGJlaW5nIHN0b3JlZCBpbiB0 aGUgbW90aGVyYm9hcmTigJlzIEJJT1MsIFVFRkkKc2l0cyBpbiB0aGUvRUZJLyBkaXJlY3Rv cnkgaW4gc29tZSBub24tdm9sYXRpbGUgbWVtb3J5OyBlaXRoZXIgaW4gTkFORApvbiB0aGUg bW90aGVyYm9hcmQsIG9uIHlvdXIgaGFyZCBkcml2ZSwgb3Igb24gYSBuZXR3b3JrIHNoYXJl IChtb3JlIG9uCnRoYXQgbGF0ZXIpLiIgWzNdCgpCb290bG9hZGVycyBoYXZlIGJlZW4gY29u c3RyYWluZWQgdG8gZml0IGluIDQ0NiBiaXRzIG9mIHRoZSBtYXN0ZXIgYm9vdApyZWNvcmQg YW5kIHJ1biBpbiAzMmsgb2Ygc3lzdGVtIG1lbW9yeS4gIFRoZXNlIGFyZSBjYWxsZWQgZmly c3Qgc3RhZ2UKYm9vdCBsb2FkZXJzIGFuZCB0aGUgcGFydGl0aW9uIHRhYmxlcyBhcmUgaW4g YSBkZWZhdWx0IDY0IGJ5dGUgcGFydGl0aW9uCnRhYmxlIHdpdGggZm91ciBwcmltYXJ5IHBh cnRpdGlvbnMsIGluIGl0cyBtb3N0IGdlbmVyaWMgZm9ybS4KQm9hdGxvYWRlcnMgbW9zdCBv ZnRlbiBsb2FkIHNlY29uZGFyeSBib290IGxvYWRlcnMgdGhhdCBhcmUgbW9yZQpmbGV4aWJs ZSwgc3VjaCBhbmQgR1JVQi4gIFRoZXNlIGxvYWRlcnMgYWxsb3cgZm9yIG11bHRpcGxlIG9w ZXJhdGluZwpzeXN0ZW0gaW5zdGFsbGF0aW9uIG9yIHRvIGxvYWQgb3BlcmF0aW5nIHN5c3Rl bXMgaW4gZGlmZmVyZW50IHN0YXRlcy4KVGhleSByZWFkIHBhcnRpdGlvbiB0YWJsZXMgYW5k IGxvYWQgc3lzdGVtcyBhY2NvcmRpbmdseS4KClVFRkkgdGFrZXMgYSBkaWZmZXJlbnQgYXBw cm9hY2guICBBcyBvbmUgdGVjaCBibG9nZ2VyIHdyb3RlLCAiTm93IGxldOKAmXMKbG9vayBh dCBob3cgYm9vdGluZyB3b3JrcyBvbiBhIFVFRkkgc3lzdGVtLiBFdmVuIGlmIHlvdSBkb27i gJl0IGdyYXNwIHRoZQpkZXRhaWxzIG9mIHRoaXMgcG9zdCwgZ3Jhc3AgdGhpczogaXQgaXMg Y29tcGxldGVseSBkaWZmZXJlbnQuIENvbXBsZXRlbHkKYW5kIHV0dGVybHkgZGlmZmVyZW50 IGZyb20gaG93IEJJT1MgYm9vdGluZyB3b3Jrcy4gWW91IGNhbm5vdCBhcHBseSBhbnkKb2Yg eW91ciB1bmRlcnN0YW5kaW5nIG9mIEJJT1MgYm9vdGluZyB0byBuYXRpdmUgVUVGSSBib290 aW5nLiBZb3UgY2Fubm90Cm1ha2UgYSBsaXR0bGUgdHdlYWsgdG8gYSBzeXN0ZW0gZGVzaWdu ZWQgZm9yIHRoZSB3b3JsZCBvZiBCSU9TIGJvb3RpbmcKYW5kIGFwcGx5IGl0IHRvIG5hdGl2 ZSBVRUZJIGJvb3RpbmcuIFlvdSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBhCmNv bXBsZXRlbHkgZGlmZmVyZW50IHdvcmxkLiIgWzRdICBJIHRoaW5rIHRoaXMgaXMgb3ZlcnN0 YXRlZC4gIEV2ZW50dWFsbHkKZXZlcnkgY29tcHV0ZXIgc3lzdGVtIGhhcyB0byBkbyBleGFj dGx5IHdoYXQgYSBCSU9TIGJhc2VkIHN5c3RlbSBkb2VzLgpJdCBoYXMgdG8gcmVhY2ggaW50 byB0aGUgYXJjaGl0ZWN0dXJlIG9mIGEgY29tcHV0ZXIsIGlkZW50aWZ5IHNvbWUKc3Vic2V0 IG9mIGl0cyB3b3JraW5nIHBhcnRzLCBhbmQgYm9vdHN0cmFwIGEgZnVsbHkgZnVuY3Rpb25h bCBvcGVyYXRpbmcKc3lzdGVtIGludG8gaXRzIG1lbW9yeSB3aGlsZSBydW5uaW5nIHRoZSBv cGVyYXRpbmcgc3lzdGVtcyB2aWFibGUKaW5zdHJ1Y3Rpb24gc2V0LiAgVUVGSSBpcyBhbiBh dHRlbXB0IHRvIGhpZGUgbXVjaCBvZiB0aGlzIGhhcmR3YXJlCmNvbXBsZXhpdHkgYW5kIHN1 YnN0aXR1dGUgaXQgd2l0aCBzb2Z0d2FyZSBjb21wbGV4aXR5IHRoYXQgbG9va3MKc2ltcGxl ci4gIFRoZXJlIGFyZSBpbmhlcmVudCBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2gsIHRo ZSBmaXJzdApiZWluZyBpcyB0aGUgc2NhbGUgb2YgdGhlIGludHJvZHVjZWQgY29tcGxleGl0 eS4gIExldCdzIHJldmlldyBzb21lIG9mCnRoaXMgaW50cm9kdWNlZCBjb21wbGV4aXR5LgoK T25lIG9mIHRoZSBmaXJzdCBjaGFuZ2VzIHRvIHRoZSBib290aW5nIHByb2Nlc3MgaW52b2x2 ZWQgdGhlIGNoYW5nZSBmcm9tCnRoZSBNQlIgc3RhbmRhcmQgdG8gd2hhdCBpcyBubyBrbm93 biBhcyBHUEFSVCBvciBHUFQgc3RhbmRhcmQuICBUaGVyZQp3YXMgYW4gZXNzZW50aWFsIHBy b2JsZW0gdG8gdGhlIG9yaWdpbmFsIEJJT1Mgc3BlY2lmaWNhdGlvbiB0aGF0IHdhcwpzaW1w bHkgb3V0Z3Jvd24gb3ZlciB0aW1lLCBuYW1lbHkgdGhlIGxpbWl0YXRpb24gb2YgdGhlIHNp emUgb2YKcGFydGl0aW9ucyB0aGF0IGNvdWxkIGJlIHJlYWQgZnJvbSBoYXJkIGRyaXZlcy4g IFRoZSBNYXN0ZXIgQm9vdCBSZWNvcmQsCmlzIHRoYXQgc3BlY2lhbCBzZWN0b3IgYXQgdGhl IHZlcnkgYmVnaW5uaW5nIG9mIGEgZml4ZWQgZGlzayB0aGF0CmRlc2NyaWJlcyB0aGUgcGFy dGl0aW9uIHRhYmxlIG9mIHRoZSBkaXNrIGFuZCBjb250YWlucyB0aGUgcHJpbWFyeSBib290 CmxvYWRlci4gIFRoZSBNQlIgaXMgbGltaXRlZCB0byAzMiBiaXRzIGZvciBhZGRyZXNzaW5n IHBhcnRpdGlvbnMgYW5kIHdpdGggCmEgc2VjdG9yIHNpemUgc2V0IGF0IDUxMiBieXRlcywg aGFyZCBkcml2ZSBhZGRyZXNzaW5nIGlzIGxpbWl0ZWQgdG8gYSBzaGFkZSAKb3ZlciAyIHRl cmFieXRlcyBpbiBzaXplLiAgSW4gb3JkZXIgYWRkcmVzcyBwYXJ0aXRpb25zIGdyZWF0ZXIg dGhhbiAyIAp0ZXJhYnl0ZXMsIGFub3RoZXIgc2NoZW1lIHdhcyBuZWVkZWQuICBUaGF0IHNj aGVtZSBjYW1lIHRoZSB3YXkgb2YgdGhlIApHVUlEIFBhdGl0aW9uIFRhYmxlLAooR1BUKS4K ClRoaXMgaXMgdGhlIGxheW91dCBmb3IgYSBtb2Rlcm4gTWFzdGVyIEJvb3QgUmVjb3JkOgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KQUREUkVTUyAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAg ICAgICAgICAgICAgU2l6ZSBpbiBCeXRlcwpIZXggCURlYwpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K KzAwMGggCSswIAlCb290c3RyYXAgY29kZSBhcmVhIChwYXJ0IDEpIAkJMjE4CiswREFoIAkr MjE4IAkwMDAwaCAJRGlzayB0aW1lc3RhbXBbNF1bYl0gCgkJKG9wdGlvbmFsLCBNUy1ET1Mg Ny4xLTguMCAKCQkoV2luZG93cyA5NUIvOTgvOThTRS9NRSksIAoJCWFsdGVybmF0aXZlbHkg Y2FuIHNlcnZlIGFzIE9FTSAKCQlsb2FkZXIgc2lnbmF0dXJlIHdpdGggTkVXTERSKSAJCTIK KzBEQ2ggCSsyMjAgCW9yaWdpbmFsIHBoeXNpY2FsIGRyaXZlICg4MGgtRkZoKSAJMQorMERE aCAJKzIyMSAJc2Vjb25kcyAoMC01OSkgCQkJCTEKKzBERWggCSsyMjIgCW1pbnV0ZXMgKDAt NTkpIAkJCQkxCiswREZoIAkrMjIzIAlob3VycyAoMC0yMykgCQkJCTEKKzBFMGggCSsyMjQg CUJvb3RzdHJhcCBjb2RlIGFyZWEgKHBhcnQgMiwgY29kZQoJCWVudHJ5IGF0ICswMDBoKSAJ CQkyMTYgKG9yIDIyMikKKzFCOGggCSs0NDAgCTMyLWJpdCBkaXNrIHNpZ25hdHVyZSAJCgkJ RGlzayBzaWduYXR1cmUgKG9wdGlvbmFsLCBVRUZJLCAKCQlXaW5kb3dzIE5ULzIwMDAvVmlz dGEvNyBhbmQgb3RoZXIgCgkJT1NlcykgCQkJCQk0CisxQkNoIAkrNDQ0IAkwMDAwaAoJCSg1 QTVBaCBpZiBjb3B5LXByb3RlY3RlZCkgCSAgICAgICAgMgorMUJFaCAJKzQ0NiAJUGFydGl0 aW9uIGVudHJ5ICMxIAkKCQlQYXJ0aXRpb24gdGFibGUKCQkoZm9yIHByaW1hcnkgcGFydGl0 aW9ucykgCQkxNgorMUNFaCAJKzQ2MiAJUGFydGl0aW9uIGVudHJ5ICMyIAkJCTE2CisxREVo IAkrNDc4IAlQYXJ0aXRpb24gZW50cnkgIzMgCQkJMTYKKzFFRWggCSs0OTQgCVBhcnRpdGlv biBlbnRyeSAjNCAJCQkxNgorMUZFaCAJKzUxMCAJNTVoIAlCb290IHNpZ25hdHVyZVthXSAJ CTIKKzFGRmggCSs1MTEgCUFBaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVG90YWwgc2l6ZTogMjE4 ICsgNiArIDIxNiArIDYgKyA0w5cxNiArIDIgCTUxMiAoZnJvbSBXSUtJUEVESUEpCgpHVUlE IFBhcnRpdGlvbiBUYWJsZXMsIHdoaWNoIGFyZSBub3cgYSBrZXkgY29tcG9uZW50IG9mIHRo ZSBVRUZJCnNwZWNpZmljYXRpb24sIGZlYXR1cmUgZGl2aXNpb25zIG9mIG1lbW9yeSB0aHJv dWdoIHRoZSBtb2Rlcm4gTEJBCnBsYWNlbWVudCBhbmQgbWVtb3J5IHNjaGVtZS4gIFByZXZp b3VzbHksIGhhcmQgZHJpdmUgbG9jYXRpb25zIHdlcmUKaWRlbnRpZmllZCBieSB0aGUgKEN5 bGluZGVyLCBIZWFkLCBTZWN0b3IpIHR1cGxlcywgd2hpY2ggaWRlbnRpZmllZCBhCmxvY2F0 aW9uIHRocm91Z2ggdGhlIHJhdyBsb2NhdGlvbiBvZiB0aGUgaGFyZCBkcml2ZS4gIEFzIGRy aXZlcyBjaGFuZ2VzCmFuZCBuZXcgbWVkaWEgZW1lcmdlZCwgQ0hTIHdhcyByZXBsYWNlZCBi eSBMQkEgKExvZ2ljYWwgQmxvY2sKQWRkcmVzc2luZykuWzVdICBUaGUgcHJvdGVjdGl2ZSBN QlIgd291bGQgYmUgaW4gTEJBMC4gIFRoZSBHUFQgaGVhZGVyIGlzCmluIExCQTEgd2hpY2gg aGFzIGEgcG9pbnRlciB0byB0aGUgUGFydGl0aW9uIFRhYmxlIG9yIGEgUGFydGl0aW9uIEVu dHJ5CkFycmF5LiBbNl0gIFRoZSBQYXJ0aXRpb24gQXJyYXksIGJ5IFVFRkkgc3RhbmRhcmRz IG11c3QgaGF2ZSBhIG1pbmltdW0KMTYsMzg0IGJ5dGVzIHdoaWNoIGFsbG93cyBmb3IgYWRk cmVzc2luZyBzcGFjZSB0byAxOCBFeGFieXRlIHdpdGggdXAgdG8KMTI4IHBhcnRpdGlvbnMu ICBUaGUgR1BUIGhhcyBhIHBhcnRpdGlvbiBoZWFkZXIgdGhhdCBkZWZpbmVzIHRoZSB0YWJs ZXMgCmNoYXJhY3RlcmlzdGljcy4gIEl0IGxpdmVzIGFsd2F5cyBpbiBMQkExLiAgR1VJRCBp cyBhIHN5c3RlbSBmb3IgdW5pcXVlbHkgCmlkZW50aWZ5aW5nIGNvbXB1dGluZyBjb21wb25l bnRzIGFzIGRlZmluZWQgaW4gdGhlIFVVSUQgU3RhbmRhcmQuICBJdCBpcyAKMzIgSGV4IGNv dXBsZXMsIDEyOCBiaXQgdmFsdWVzLgoKClRoZSBVRUZJIHN0YW5kYXJkIGluY2x1ZGVzIGEg bmF0aXZlIGV4ZWN1dGFibGUgdG9uZ3VlIGNhbGxlZCB0aGUgRUZJIEJ5dGUKQ29kZSAoRUJD IGlmIHlvdSBhcmUga2VlcGluZyB0cmFjaykuICBUaGlzIGlzIGEgJ3ZpcnR1YWwnIG1hY2hp bmUgaW4gd2hpY2gKdGhlIGZpcm13YXJlIGNhbiBiZSB3cml0dGVuIHRvIGFuZCBmb3Igd2hp Y2ggaW1wbGVtZW50YXRpb24gd2lsbCBoYXBwZW4Kb24gYW55IGhhcmR3YXJlIGFyY2hpdGVj dHVyZSwgcmVnYXJkbGVzcyBvZiB0aGUgQ1BVLiAgSW4gQyBwcm9ncmFtbWluZywKaXQgcmVx dWlyZXMgdGhlIHVzZSBvZiBlZmkgYW5kIGVmaWxpYiBoZWFkZXJzIGFuZCBhIGNvbXBsZXgg bGlua2FnZSB0bwpjcm9zcyBjb21waWxlIHRvIHRoZSBlZmkgYmluYXJ5IGNvZGUuICBBIEdO VS1FRkkgcGFja2FnZSBleGlzdHMgYW5kCmEgc2FtcGxlIHByb2dyYW0gZm9yIGEgbmF0aXZl IEVGSSBmaXJtd2FyZSBiaW5hcnkgaXMgZGVtb25zdHJhdGVkIGJ5ClJvZGVyaWNrIFcuIFNt aXRoIGF0IGh0dHA6Ly93d3cucm9kc2Jvb2tzLmNvbS9lZmktcHJvZ3JhbW1pbmcvaGVsbG8u aHRtbC4KSGlzIHNhbXBsZSBwcm9ncmFtIGluY2x1ZGVzIGFzIGZvbGxvd3M6CgojaW5jbHVk ZSA8ZWZpLmg+CiNpbmNsdWRlIDxlZmlsaWIuaD4KCkVGSV9TVEFUVVMKRUZJQVBJCmVmaV9t YWluIChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1U YWJsZSkgewogICBJbml0aWFsaXplTGliKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7CiAg IFByaW50KEwiSGVsbG8sIHdvcmxkIVxuIik7CgogICByZXR1cm4gRUZJX1NVQ0NFU1M7Cn0K Ck5vdGljZSBob3cgbWFpbiBpcyByZXBsYWNlcyB3aXRoIGVmaV9tYWluCgpUaGUgY29tcGls YXRpb24gd291bGQgcmVxdWlyZSBhIGNyb3NzIHBsYXRmb3JtIGNvbXBpbGUgdG8gRUZJIG5h dGl2ZQpiaW5hcnkgYW5kIGEgY29tcGxleCBtYWtlZmlsZSBpcyBwcm92aWRlZCBieSBNciBT bWl0aCBhcyBmb2xsb3c6IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQVJDSCAgICAgICAgICAgID0g JChzaGVsbCB1bmFtZSAtbSB8IHNlZCBzLGlbMzQ1Njc4OV04NixpYTMyLCkKCk9CSlMgICAg ICAgICAgICA9IG1haW4ubwpUQVJHRVQgICAgICAgICAgPSBoZWxsby5lZmkKCkVGSUlOQyAg ICAgICAgICA9IC91c3IvaW5jbHVkZS9lZmkKRUZJSU5DUyAgICAgICAgID0gLUkkKEVGSUlO QykgLUkkKEVGSUlOQykvJChBUkNIKSAtSSQoRUZJSU5DKS9wcm90b2NvbApMSUIgICAgICAg ICAgICAgPSAvdXNyL2xpYjY0CkVGSUxJQiAgICAgICAgICA9IC91c3IvbGliNjQvZ251ZWZp CkVGSV9DUlRfT0JKUyAgICA9ICQoRUZJTElCKS9jcnQwLWVmaS0kKEFSQ0gpLm8KRUZJX0xE UyAgICAgICAgID0gJChFRklMSUIpL2VsZl8kKEFSQ0gpX2VmaS5sZHMKCkNGTEFHUyAgICAg ICAgICA9ICQoRUZJSU5DUykgLWZuby1zdGFjay1wcm90ZWN0b3IgLWZwaWMgXAoJCSAgLWZz aG9ydC13Y2hhciAtbW5vLXJlZC16b25lIC1XYWxsIAppZmVxICgkKEFSQ0gpLHg4Nl82NCkK ICBDRkxBR1MgKz0gLURFRklfRlVOQ1RJT05fV1JBUFBFUgplbmRpZgoKTERGTEFHUyAgICAg ICAgID0gLW5vc3RkbGliIC16bm9jb21icmVsb2MgLVQgJChFRklfTERTKSAtc2hhcmVkIFwK CQkgIC1Cc3ltYm9saWMgLUwgJChFRklMSUIpIC1MICQoTElCKSAkKEVGSV9DUlRfT0JKUykg CgphbGw6ICQoVEFSR0VUKQoKaGVsbG8uc286ICQoT0JKUykKCWxkICQoTERGTEFHUykgJChP QkpTKSAtbyAkQCAtbGVmaSAtbGdudWVmaQoKJS5lZmk6ICUuc28KCW9iamNvcHkgLWogLnRl eHQgLWogLnNkYXRhIC1qIC5kYXRhIC1qIC5keW5hbWljIFwKCQktaiAuZHluc3ltICAtaiAu cmVsIC1qIC5yZWxhIC1qIC5yZWxvYyBcCgkJLS10YXJnZXQ9ZWZpLWFwcC0kKEFSQ0gpICRe ICRACgoKCk5vdGUgdGhhdCBNYWtlZmlsZXMgYXJlIHRhYiBzZW5zaXRpdmUgc28geW91IHdp bGwgbmVlZCB0byBhc3N1cmUgdGhlCmZvcm1hdCBvZiB0aGlzIGZpbGUgYWNjb3JkaW5nbHku WzddCgpUaGUgVUVGSSBzdGFuZGFyZCBpbmNsdWRlcyB0aGUgcG9zc2libGUgdXNlIG9mIGEg c2hlbGwuICBXaXRoIHRoZSB1c2Ugb2YgCnRoaXMgc2hlbGwsIHlvdSBjYW4gcnVuIGFyYml0 cmFyeSBjb2RlLiAgVGhpcyBpcyB0aGUgUHJlYm9vdCBlbnZpcm9ubWVudApvZiBVRUZJLiAg SW4gZmFjdCwgU21pdGggbWFrZXMgY2xlYXIgdGhhdCB0aGlzIHByZWJvb3QgZW52aXJvbm1l bnQgY2FuCmJlIHVzZWZ1bCBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgaW4gc2V2ZXJh bCBhcmVhcywgcmVpbmZvcmNpbmcgdGhlCmlkZWEgdGhhdCBVRUZJIGlzIHZlcnkgbXVjaCBv cGVyYXRpbmcgc3lzdGVtIGxpa2UgaW4gaXQncyBzcGVjaWZpY2F0aW9uLgoKV29sZmdhbmct Um9zZW5iZXJnc3IsIGZyb20gSW50ZWwsIGhhcyBleHRlbnNpdmVseSBkb2N1bWVudGVkIGEg VUVGSQpTaGVsbCBhbmQgdGhlIEVGSSBPcGVuU2hlbGwgYXZhaWxhYmxlIGZyb20gaHR0cDp3 d3cudGlhbm9jb3JlLm9yZy4KQW1vbmcgdGhlIGl0ZW1zIHRoYXQgdGhlIFVFRkkgc2hlbGwg YWxsb3dzIGZvciBpcyB0aGUgZXhlY3V0aW9uIG9mIHByZWJvb3QgCnByb2dyYW1zLCBzZXR1 cCwgb3BlcmF0aW5nIHN5c3RlbSBpbnN0YWxsYXRpb24sIHRlc3Rpbmcgb2YgaGFyZHdhcmUg YW5kCnNvZnR3YXJlLCBkaXNrIHV0aWxpdGllcywgZHJpdmVyIGRpYWdub3N0aWNzLCBjb25m aWd1cmF0aW9uCm1vZGlmaWNhdGlvbnMsIG1vdmluZyBmaWxlcyBhcm91bmQgYW5kIGJldHdl ZW4gdGhlIGhhcmQgZGlzaywgZmxvcHB5IGRpc2ssIApDRC1ST00sIFVTQiBmbGFzaCBkZXZp Y2VzLCBhbmQgc28gb24sIHRvICBsb2FkIGEgcHJlYm9vdCBFRkkgZHJpdmVyIGluIHRoZSAK c3lzdGVtIChoYXMgYW4gLmVmaSBzdWZmaXgpIHN1Y2ggYXMgbmV0d29yayBzdGFja3MsIHRj cGlwIGRyaXZlcnMsICAKdG8sIHVwZGF0ZSBvbGQgZHJpdmVycyBpbiBmbGFzaCBtZW1vcnks ICBsb2FkIG5ldyBkcml2ZXJzIGZvciBwbHVnaW4KY2FyZHMsIGFuZCBtb3JlLls4XSAgVGhp cyBzaGVsbCBoYXMgdHdvIHZlcnNpb25zLCAgU2hlbGwuZWZpIGFuZApTaGVsbF9mdWxsLmVm aS4gIFNoZWxsLmVmaSBmaXRzIG9uIG1vc3QgY3VycmVudCBmbGFzaCBtZW1vcmllcy4KCmVm aSBiaW5hcnkgZmlsZXMgc3RhcnQgd2l0aCB0aGUgc3ltYm9sIGVmaV9tYWluIHRoYXQgaGFz IHR3byBwYXJhbWV0ZXJzLApFRklfSEFORExFIEltYWdlSGFuZGxlIGFuZCAgRUZJX1NZU1RF TV9UQUJMRSAqU3lzdGVtVGFibGUuICBUaGUKc3lzdGVtIHRhYmxlIGlzIGEgQy1zdHlsZSBz dHJ1Y3R1cmUgd2l0aCB0aGUgZm9sbG93aW5nIGVudHJpZXM6Cgp0eXBlZGVmIHN0cnVjdCBf RUZJX1NZU1RFTV9UQUJMRSB7CiAgICBFRklfVEFCTEVfSEVBREVSICAgICAgICAgICAgICAg IEhkcjsKCiAgICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICpGaXJtd2FyZVZl bmRvcjsKICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgRmlybXdhcmVSZXZp c2lvbjsKCiAgICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGVJbkhh bmRsZTsKICAgIFNJTVBMRV9JTlBVVF9JTlRFUkZBQ0UgICAgICAgICAgKkNvbkluOwoKICAg IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgQ29uc29sZU91dEhhbmRsZTsKICAg IFNJTVBMRV9URVhUX09VVFBVVF9JTlRFUkZBQ0UgICAgKkNvbk91dDsKCiAgICBFRklfSEFO RExFICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkRXJyb3JIYW5kbGU7CiAgICBTSU1Q TEVfVEVYVF9PVVRQVVRfSU5URVJGQUNFICAgICpTdGRFcnI7CgogICAgRUZJX1JVTlRJTUVf U0VSVklDRVMgICAgICAgICAgICAqUnVudGltZVNlcnZpY2VzOwogICAgRUZJX0JPT1RfU0VS VklDRVMgICAgICAgICAgICAgICAqQm9vdFNlcnZpY2VzOwoKICAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZUYWJsZUVudHJpZXM7CiAgICBFRklfQ09ORklH VVJBVElPTl9UQUJMRSAgICAgICAgICpDb25maWd1cmF0aW9uVGFibGU7Cgp9IEVGSV9TWVNU RU1fVEFCTEU7CgpUaGVzZSBsaXN0ZWQgaGFuZGxlcywgbGlrZXdpc2UgaGF2ZSBhcHBsaWNh dGlvbiBpbnRlcmZhY2VzIHRoYXQgZGlyZWN0bHkKdGllIHRvIGZpcm13YXJlIGRlZmluZWQg bW9kdWxlcy4gIEZvciBleGFtcGxlLCBvbmUgY2FuIGNhbGwKQ29uT3V0LT5PdXRwdXRTdHJp bmcoKSB0byBwcmludCB0byB0aGUgY29uc29sZS4gRmlybXdhcmUgaXMgcmVxdWlyZWQgdG8K bWFrZSBhdmFpbGFibGUgYSBzZXQgb2YgYmluYXJ5IGNvbXBhdGlibGUgbGlicmFyaWVzIGZv ciBleHRlbnNpdmUKcHJvZ3JhbSBidWlsZGluZy4gRUZJX1JVTlRJTUVfU0VSVklDRVMgYWNj ZXNzZXMgYSBmaXJtd2FyZSBzZXJ2aWNlcwp3aGljaCBhcmUgYXZhaWxhYmxlIGluIHRoZSBw cmVib290IGVudmlyb25tZW50IGFuZCB3aGVuIHRoZSBPcGVyYXRpbmcKU3lzdGVtIHRha2Vz IGNvbnRyb2wgb2YgdGhlIHN5c3RlbS4gIFRoZXNlIHNlcnZpY2VzIGluY2x1ZGUgc3lzdGVt IGNsb2NrCmZ1bmN0aW9ucywgTlZSQU0gdmFyaWFibGVzLCBhbmQgc3lzdGVtIHJlc2V0IG9w ZXJhdGlvbnMuICBUaGlzIGlzIHVubGlrZQpFRklfQk9PVF9TRVJWSUVTIHdoaWNoIGFyZSBv bmx5IGF2YWlsYWJsZSBkdXJpbmcgdGhlIHByZWJvb3QgcGhhc2UuIDcgCgpJbiBvcmRlciB0 byBhY2NvbW1vZGF0ZSBhbGwgdGhpcyBjb21wbGV4IHByZWJvb3Qgb3BlcmF0aW5nIHN5c3Rl bSwgVUVGSQpzcGVjaWZpZXMgdGhhdCBib290IG1lZGl1bSBtdXN0IGhhdmUgYW4gRUZJIHBh cnRpdGlvbiB3aGljaCBjb250YWlucwpiaW5hcmllcywgYW5kIGJvb3Rsb2FkZXIuICBUaGlz IGlzIHNvbWV0aGluZyB0aGF0IG11c3QgYXN0dXRlCm9ic2VydmVycyBoYXZlIHNlZW4gb24g Zmxhc2ggZHJpdmVzIGZvciBhIG51bWJlciBvZiB5ZWFycy4gIEluIG9yZGVyIHRvCmFsbG93 IHRoZW0gdG8gZnVuY3Rpb24gYXMgYm9vdGFibGUgZGV2aWNlcywgdGhleSBoYXZlIEVGSSBw YXJ0aXRpb25zIG9uCnRoZWlyIGZyb250LiAgIFRoZXNlIHNtYWxsIHBhcnRpdGlvbnMgbXVz dCBiZSBlaXRoZXIgRkFUMTIsIEZBVDE2IG9yCkZBVDMyLiAgQWxsIFVFRkkgY29tcGxpYW50 IHN5c3RlbXMgbXVzdCBiZSBhYmxlIHRvIHJlYWQgYWxsIG9mIHRoZXNlIEZBVAp2YXJpYXRp b25zLiAgCgoiVGhlIGZpbGUgc3lzdGVtIHN1cHBvcnRlZCBieSB0aGUgRXh0ZW5zaWJsZSBG aXJtd2FyZSBJbnRlcmZhY2UgaXMgYmFzZWQKb24gdGhlIEZBVCBmaWxlIHN5c3RlbS4gRUZJ IGRlZmluZXMgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIEZBVCB0aGF0IGlzCmV4cGxpY2l0bHkg ZG9jdW1lbnRlZCBhbmQgdGVzdGFibGUuIENvbmZvcm1hbmNlIHRvIHRoZSBFRkkgc3BlY2lm aWNhdGlvbgphbmQgaXRzIGFzc29jaWF0ZSByZWZlcmVuY2UgZG9jdW1lbnRzIGlzIHRoZSBv bmx5IGRlZmluaXRpb24gb2YgRkFUIHRoYXQKbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgdG8g c3VwcG9ydCBFRkkuIFRvIGRpZmZlcmVudGlhdGUgdGhlIEVGSSBmaWxlCnN5c3RlbSBmcm9t IHB1cmUgRkFULCBhIG5ldyBwYXJ0aXRpb24gZmlsZSBzeXN0ZW0gdHlwZSBoYXMgYmVlbgpk ZWZpbmVkLiIgNAoKQXMgc3VjaCBhIEVGSSBwYXJ0aXRpb24gaXMgYSBwYXJ0aXRpb24gZGVm aW5lZCBhcyBzdWNoIHR5cGUgaW4gYSBncGFydApyZWNvcmQgYW5kIHdoaWNoIGhhcyBhIHZh bGlkIEVGSSBhcHByb3ZlZCB2ZXJzaW9uIG9mIHRoZSBGQVQgZmlsZSBzeXN0ZW0KaW5zdGFs bGVkIHdpdGhpbiBpdC4KClVFRkkgc3BlY2lmaWVzIGEgVUVGSSBCb290IE1hbmFnZXIuICBT aW5jZSB0aGUgcHVycG9zZSBvZiBhbGwgdGhpcyBpcwp0byBib290IGFuIG9wZXJhdGluZyBz eXN0ZW0sIHNvbWV0aGluZyB0aGUgQklPUyBTcGVjaWZpY2F0aW9uIHNlZW1zIHRvCmRvIHNv IG1hdHRlciBvZiBmYWN0bHksIFVFRkkgaW5jbHVkZXMgYSBib290IG1hbmFnZXIgd2l0aCBz cGVjaWZpY2F0aW9ucwpXSVRISU4gaXRzIGVudmlyb25tZW50LCByYXRoZXIgdGhhbiBsZWF2 aW5nIGl0IHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgpKdXN0IGFzIEJJT1MgcmVhZHMgZXh0 ZW5zaW9ucyB0aGF0IGl0IGV4cGVjdHMgdG8gZmluZCBhdCBwcmVkZWZpbmVkCmxvY2F0aW9u cywgdGhlIFVFRkkgQm9vdCBNYW5hZ2VyIGlzIGRlZmluZWQgYXMgZm9sbG93czoKCiAgIOKA nFRoZSBVRUZJIGJvb3QgbWFuYWdlciBpcyBhIGZpcm13YXJlCiAgIHBvbGljeSBlbmdpbmUg dGhhdCBjYW4gYmUgY29uZmlndXJlZCBieQogICBtb2RpZnlpbmcgYXJjaGl0ZWN0dXJhbGx5 IGRlZmluZWQgZ2xvYmFsIE5WUkFNCiAgIHZhcmlhYmxlcy4gVGhlIGJvb3QgbWFuYWdlciB3 aWxsIGF0dGVtcHQgdG8gbG9hZAogICBVRUZJIGRyaXZlcnMgYW5kIFVFRkkgYXBwbGljYXRp b25zIChpbmNsdWRpbmcKICAgVUVGSSBPUyBib290IGxvYWRlcnMpIGluIGFuIG9yZGVyIGRl ZmluZWQgYnkKICAgdGhlIGdsb2JhbCBOVlJBTSB2YXJpYWJsZXMu4oCdIDQKCkZvciB0aG9z ZSB1c2VkIHRvIGxvb2tpbmcgYXQgdGhlIENNT1Mgb3ZlciB0aGUgeWVhcnMsIHRoaXMgaXMg bGFyZ2VseQp0aGUgInJ1YmJlciBoaXRzIHRoZSByb2FkIiBjaGFuZ2UgdG8gdGhlIGJvb3Rp bmcgcHJvY2VzcyB3aXRoIFVFRkkuICBUaGUKY29uZmlndXJhdGlvbiBzeXN0ZW0gaXMgZW50 aXJlbHkgZGlmZmVyZW50IGFuZCBpdCBpcyBub3QgYWx3YXkgY2xlYXIKd2hhdCB5b3UgYXJl IGxvb2tpbmcgYXQgd2hlbiB5b3VyIG5vdCBleHBlcmllbmNlZCB3aXRoIFVFRkkgd2hlbiB0 cnlpbmcKdG8gaW5zdGFsbCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgVUVGSSBjYW4gYmUgY29u ZmlndXJlZC4gIFlvdSBjYW4gYWx0ZXIKeW91ciBib290IG1lbnUgd2hlbiB5b3Ugc3RhcnQg eW91ciBzeXN0ZW0gYW5kIGFjdGl2YXRlIHRoZSBib290IG1hbmFnZXIuCllvdSBjYW4gYWRk IGRyaXZlcywgYW5kIHR3aXN0IHVwIGZpcm13YXJlIGNvbmZpZ3VyYXRpb25zLCBldmVuIG92 ZXIKY2xvY2sgdGhlIENQVS4gIEJlY2F1c2Ugb2YgdGhlIHNpemUgb2YgdGhlIEVGSSBQYXJ0 aXRpb24sIHRoaXMKYXBwbGljYXRpb24gY2FuIGJlIGEgZ3JhcGhpYyB1c2VyIGludGVyZmFj ZSwgb3IgYSBjdXJzb3JzIGxpa2UKY29uZmlndXJhdGlvbiBtZW51LiAgTGludXggY29tZXMg d2l0aCBhIHRvb2wgdG8gaGVscCB3b3JrIHdpdGggeW91ciBib290Cm1hbmFnZXIgY2FsbGVk IGVmaWJvb3RtZ3IuWzldICBJdCBwcm9kdWNlcyBvdXRwdXQgc3VjaCBhcyB0aGlzLCB3aGVu IHJ1bgpmcm9tIHVzZXIgc3BhY2U6Cgpbcm9vdEBzeXN0ZW0gZGlyZWN0b3J5XSMgZWZpYm9v dG1nciAtdgpCb290Q3VycmVudDogMDAwMgpUaW1lb3V0OiAzIHNlY29uZHMKQm9vdE9yZGVy OiAwMDAzLDAwMDIsMDAwMCwwMDA0CkJvb3QwMDAwKiBDRC9EVkQgRHJpdmUgIEJJT1MoMyww LDAwKQpCb290MDAwMSogSGFyZCBEcml2ZSAgICBIRCgyLDAsMDApCkJvb3QwMDAyKiBGZWRv cmEgICAgICAgIEhEKDEsODAwLDYxODAwLDZkOThmMzYwLWNiM2UtNDcyNy04ZmVkLTVjZTBj MDQwMzY1ZClGaWxlKFxFRklcZmVkb3JhXGdydWJ4NjQuZWZpKQpCb290MDAwMyogb3BlbnN1 c2UgICAgICBIRCgxLDgwMCw2MTgwMCw2ZDk4ZjM2MC1jYjNlLTQ3MjctOGZlZC01Y2UwYzA0 MDM2NWQpRmlsZShcRUZJXG9wZW5zdXNlXGdydWJ4NjQuZWZpKQpCb290MDAwNCogSGFyZCBE cml2ZSAgICBCSU9TKDIsMCwwMClQMDogU1QxNTAwRE0wMDMtOVlOMTZHICAgICAgICAuClty b290QHN5c3RlbSBkaXJlY3RvcnldIwoKSGVyZSB5b3UgY2FuIHNlZSB0aGUgb3B0aW9uOiAg Qm9vdE9yZGVyIHdoaWNoIGlzIHRvIGxvYWQgZmlyc3Qgb3BlbnN1c2UKKHdpdGggaXRzIGxv YWQgcGF0aCB3aXRoaW4gdGhlIEVGSSBwYXJ0aXRpb24gc3BlY2lmaWVkKSwgYW5kIHRoZW4g RmVkb3JhCmFuZCB0aGVuIHRoZSBDRC9EVkQsIGFuZCBmaW5hbGx5IEhhcmQgRHJpdmUgdW5k ZXIgQklPUygyLDAsMDApCgpOb3RpY2UgdGhlIEVGSSBQYXRocyBkZXNjcmliZWQgaW4gdGhl IG91dHB1dCBvZiBlZmlib290bWFuYWdlci4gIFRoZXkKY2FuIHBvaW50IGF0IGFueSBkZXZp Y2Ugb2JqZWN0IHRoYXQgdGhlIGZpcm13YXJlIHByZXNlbnRzLiAgVGhpcyBpcyBub3QKanVz dCBIYXJkIERyaXZlcywgYnV0IG5ldHdvcmsgZGV2aWNlcywgVVNCIHBvcnRzIG9yIGRldmlj ZXMgbm90IHlldAppbnZlbnRlZC4gIFRoZXNlIHBhdGhzIGFyZSBkZWZpbmVkIGluIHRoZSBz cGVjaWZpY2F0aW9uIHVuZGVyCkVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTC4gIFRoZXNlIHBy b3RvY29scyBhcmUgdmVyeSBkaWZmaWN1bHQgdG8gbGVhcm4KYW5kIHVuZGVyc3RhbmQuICBU aGV5IGFyZSBkZWZpbmVkIGluIGxhbmd1YWdlIHByb2dyYW1pbmcsIGluaXRpYWxseSBieQpJ bnRlbCBhbmQgbGF0ZXIgYnkgb3RoZXIgdmVuZG9ycy4gIEFuIGV4YW1wbGUgaXMgZ2l2ZW4g YnkgSW50ZWwgaW4gc2xpZGUKMTMgYW5kIDE0IGluIHRoZWlyIHByZXNlbnRhdGlvbiBvbiBV RUZJIGxvY2F0ZWQgYXQKaHR0cDovL3d3dy5mZWlzaGFyZS5jb20vYXR0YWNobWVudHMvMTA1 XzIwMiUyMFVFRkktRHJpdmVycy5wZGYgYW5kIHdoZXJlCml0IHN0YXRlczoKCkRldmljZSBQ YXRoIFByb3RvY29sIC0gRXhhbXBsZQpHVUlECgojZGVmaW5lIEVGSV9ERVZJQ0VfCgpQQVRI X1BST1RPQ09MX0dVSUQgXAp7MHgwOTU3NmU5MSwweDZkM2YsMHgxMWQyLDB4OGUsMHgzOSww eDAwLDB4YTAsMHhjOSwweDY5LDB4NzIsIDB4M2J9CgpQcm90b2NvbCBJbnRlcmZhY2UgU3Ry dWN0dXJlCgp0eXBlZGVmIHN0cnVjdCBfRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MIHsKICAg VUlOVDggVHlwZTsKICAgVUlOVDggU3ViVHlwZTsKICAgVUlOVDggTGVuZ3RoWzJdOwp9IEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTDsKCuKAoiBUaGUgZGV2aWNlIHBhdGggZGVzY3JpYmVz IHRoZSBsb2NhdGlvbiBvZiB0aGUgZGV2aWNlCnRoZSBoYW5kbGUgaXMgZm9yCuKAoiBBIFVF RkkgZHJpdmVyIG1heSBhY2Nlc3Mgb25seSBhIHBoeXNpY2FsIGRldmljZSBmb3IKd2hpY2gg aXQgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eS4KClRoZSBzbGlkZXMgZ28gb24gdG8gZ2l2ZSBh biBleGFtcGxlIG9mIGEgU0NTSSBCdXMgaW50ZXJmYWNlIGFuZCBhCmRpc2N1c3Npb24gb2Yg dGhlIGxhbmd1YWdlIGltcGxlbWVudGF0aW9uLiAgCgoKUGhvZW5peCBjb21wYW55IGRlZmlu ZXMgdGhlIGZ1bGx5IHBhdGhzIGZvciBkZXZpY2VzIGFzIGZvbGxvd3MuICBJbiB0aGlzCmV4 YW1wZSB0aGUgcGF0aCBuYW1lcyBhcmUgc3BlbGxlZCBvdXQgZm9yIHRoZSBzdWJzZXQgb2Yg ZGV2aWNlcyB0aGF0ClBob25laXggYXQgbGVhc3QgaXMgc3VwcG9ydGluZyB3aXRoIHRoaXMg bG9uZyBhbmQgdmVyYm9zZSBzcGVjaWZpY2F0aW9uIGZvciAKZGV2aWNlIHBhdGhzIGFuZCBz dHJ1Y3R1cmUgd2l0aGluIHRoZWlyIGZpcm13YXJlLlsxMF0gIEkgcXVvdGUgdGhlIGV4YWN0 IApzcGVjaWZpY2F0aW9uIGluIG9yZGVyIHRvIHVuZGVyc2NvcmUgaG93IGNvbXBsZXggcGF0 aCBuYW1pbmcgaXMgd2hpY2gKdW5kZXJsaW5lcyB0aGF0IFVFRkkgZG9lcyBub3QsIGFzIGl0 IGNsYWltcywgcmVtb3ZlIGNvbXBsZXhpdHkgZnJvbSB0aGUKYm9vdGluZyBwcm9jZXNzLiAg SXQgZG9lcyBvcmdhbml6ZSB0aGUgY29tcGxleGl0eSB0byBtYWtlIGl0IG1vcmUKbWFuYWdh YmxlIGluIHNvbWUgaW5zdGFuY2VzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKkdVSUQK CiNkZWZpbmUgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MX0dVSUQgXAogIHsweDA5NTc2ZTkx LDB4NmQzZiwweDExZDIsMHg4ZSwweDM5LDB4MDAsMHhhMCwweGM5LDB4NjksMHg3MiwweDNi fQoKKlByb3RvY29sIEludGVyZmFjZSBTdHJ1Y3R1cmUKCiNpbmNsdWRlIEVGSV9QUk9UT0NP TF9DT05TVU1FUihEZXZpY2VQYXRoKSAvLyBmb3IgcHJvdG9jb2wKI2luY2x1ZGUgIkVmaVxF ZmlEZXZpY2VQYXRoLmgiICAgICAgICAgICAgIC8vIGZvciAjZGVmaW5lICYgc3RydWN0dXJl cwoKZXh0ZXJuIEVGSV9HVUlEIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkOwoKdHlwZWRl ZiBzdHJ1Y3QgX0VGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCB7CiAgVUlOVDggVHlwZTsKICBV SU5UOCBTdWJUeXBlOwogIFVJTlQ4IExlbmd0aFsyXTsKfSBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0w7CgpNZW1iZXJzCk1lbWJlciAJRGVzY3JpcHRpb24KVHlwZSAJVGhlIHR5cGUgb2Yg ZGV2aWNlIHBhdGggbm9kZS4KCiNkZWZpbmUgSEFSRFdBUkVfREVWSUNFX1BBVEggICAgICAg IDB4MDEgIAojZGVmaW5lIEFDUElfREVWSUNFX1BBVEggICAgICAgICAgICAweDAyICAKI2Rl ZmluZSBNRVNTQUdJTkdfREVWSUNFX1BBVEggICAgICAgMHgwMwojZGVmaW5lIE1FRElBX0RF VklDRV9QQVRIICAgICAgICAgICAweDA0CiNkZWZpbmUgQkJTX0RFVklDRV9QQVRIICAgICAg ICAgICAgIDB4MDUKI2RlZmluZSBFTkRfREVWSUNFX1BBVEhfVFlQRSAgICAgICAgMHg3ZgoK U3ViVHlwZSAJVGhlIHN1Yi10eXBlIG9mIHRoZSBkZXZpY2UgcGF0aCBub3cuIFRoZSBtZWFu aW5nIGRlcGVuZHMgb24gVHlwZS4gRm9yIEhBUkRXQVJFX0RFVklDRV9QQVRIOgoKI2RlZmlu ZSAgSFdfUENJX0RQICAgICAgICAgICAgICAgICAgMHgwMSAgCiNkZWZpbmUgIEhXX1BDQ0FS RF9EUCAgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSAgSFdfTUVNTUFQX0RQICAgICAgICAg ICAgICAgMHgwMwojZGVmaW5lICBIV19WRU5ET1JfRFAgICAgICAgICAgICAgICAweDA0CiNk ZWZpbmUgIEhXX0NPTlRST0xMRVJfRFAgICAgICAgICAgIDB4MDUKCkZvciBBQ1BJX0RFVklD RV9QQVRIOgoKI2RlZmluZSAgQUNQSV9EUCAgICAgICAgICAgICAgICAgICAgMHgwMSAgCiNk ZWZpbmUgIEFDUElfRVhURU5ERURfRFAgICAgICAgICAgIDB4MDIKI2RlZmluZSAgQUNQSV9B RFJfRFAgICAgICAgICAgICAgICAgMHgwMwoKRm9yIE1FU1NBR0lOR19ERVZJQ0VfUEFUSDoK CiNkZWZpbmUgIE1TR19BVEFQSV9EUCAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSAgTVNH X1NDU0lfRFAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lICBNU0dfRklCUkVDSEFOTkVM X0RQICAgICAgICAweDAzCiNkZWZpbmUgIE1TR18xMzk0X0RQICAgICAgICAgICAgICAgIDB4 MDQKI2RlZmluZSAgTVNHX1VTQl9EUCAgICAgICAgICAgICAgICAgMHgwNQojZGVmaW5lICBN U0dfSTJPX0RQICAgICAgICAgICAgICAgICAweDA2CiNkZWZpbmUgIE1TR19JTkZJTklCQU5E X0RQICAgICAgICAgIDB4MDkKI2RlZmluZSAgTVNHX1ZFTkRPUl9EUCAgICAgICAgICAgICAg MHgwYQojZGVmaW5lICBNU0dfTUFDX0FERFJfRFAgICAgICAgICAgICAweDBiCiNkZWZpbmUg IE1TR19JUHY0X0RQICAgICAgICAgICAgICAgIDB4MGMKI2RlZmluZSAgTVNHX0lQdjZfRFAg ICAgICAgICAgICAgICAgMHgwZAojZGVmaW5lICBNU0dfVUFSVF9EUCAgICAgICAgICAgICAg ICAweDBlCiNkZWZpbmUgIE1TR19VU0JfQ0xBU1NfRFAgICAgICAgICAgIDB4MGYKI2RlZmlu ZSAgTVNHX1VTQl9XV0lEX0RQICAgICAgICAgICAgMHgxMAojZGVmaW5lICBNU0dfREVWSUNF X0xPR0lDQUxfVU5JVF9EUCAweDExCiNkZWZpbmUgIE1TR19TQVRBX0RQICAgICAgICAgICAg ICAgIDB4MTIKI2RlZmluZSAgTVNHX0lTQ1NJX0RQICAgICAgICAgICAgICAgMHgxMwoKRm9y IE1FRElBX0RFVklDRV9QQVRIOgoKI2RlZmluZSAgTUVESUFfSEFSRERSSVZFX0RQICAgICAg ICAgMHgwMQojZGVmaW5lICBNRURJQV9DRFJPTV9EUCAgICAgICAgICAgICAweDAyCiNkZWZp bmUgIE1FRElBX1ZFTkRPUl9EUCAgICAgICAgICAgIDB4MDMKI2RlZmluZSAgTUVESUFfRklM RVBBVEhfRFAgICAgICAgICAgMHgwNAojZGVmaW5lICBNRURJQV9QUk9UT0NPTF9EUCAgICAg ICAgICAweDA1CgpGb3IgQkJTX0RFVklDRV9QQVRIOgoKI2RlZmluZSAgQkJTX0JCU19EUCAg ICAgICAgICAgICAgICAgMHgwMQoKRm9yIEVORF9ERVZJQ0VfUEFUSF9UWVBFOgoKI2RlZmlu ZSBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUgICAweEZGCiNkZWZpbmUgRU5EX0lO U1RBTkNFX0RFVklDRV9QQVRIX1NVQlRZUEUgMHgwMQoKTGVuZ3RoIAlUaGUgZW50aXJlIGxl bmd0aCBvZiB0aGlzIGRldmljZSBwYXRoIG5vZGUsIGluY2x1ZGluZyB0aGlzIGhlYWRlciwg aW4gYnl0ZXMuCkRlc2NyaXB0aW9uCgpUaGUgZXhlY3V0aW5nIElFRkkgSW1hZ2UgbWF5IHVz ZSB0aGUgZGV2aWNlIHBhdGggdG8gbWF0Y2ggaXRzIG93biBkZXZpY2UKZHJpdmVycyB0byB0 aGUgcGFydGljdWxhciBkZXZpY2UuIE5vdGUgdGhhdCB0aGUgZXhlY3V0aW5nIFVFRkkgT1Mg bG9hZGVyCmFuZCBVRUZJIGFwcGxpY2F0aW9uIGltYWdlcyBtdXN0IGFjY2VzcyBhbGwgcGh5 c2ljYWwgZGV2aWNlcyB2aWEgQm9vdApTZXJ2aWNlcyBkZXZpY2UgaGFuZGxlcyB1bnRpbCBF eGl0Qm9vdFNlcnZpY2VzKCkgaXMgc3VjY2Vzc2Z1bGx5IGNhbGxlZC4KCkEgVUVGSSBkcml2 ZXIgbWF5IGFjY2VzcyBvbmx5IGEgcGh5c2ljYWwgZGV2aWNlIGZvciB3aGljaCBpdCBwcm92 aWRlcyBmdW5jdGlvbmFsaXR5LgoKClR5cGUJCQkJU3ViVHlwZQkJU3RydWN0dXJlCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkhBUkRXQVJFX0RFVklDRV9QQVRICUhXX1BDSV9EUAlQQ0lfREVWSUNF X1BBVEgKCQkJSFdfUENDQVJEX0RQCVBDQ0FSRF9ERVZJQ0VfUEFUSAoJCQlIV19NRU1NQVBf RFAJTUVNTUFQX0RFVklDRV9QQVRICgkJCUhXX1ZFTkRPUl9EUAlWRU5ET1JfREVWSUNFX1BB VEgKCQkJSFdfQ09OVFJPTExFUl9EUCBDT05UUk9MTEVSX0RFVklDRV9QQVRICkFDUElfREVW SUNFX1BBVEgJQUNQSV9EUAkJQUNQSV9ISURfREVWSUNFX1BBVEgKCQkJQUNQSV9FWFRFTkRF RF9EUAoJCQlBQ1BJX0VYVEVOREVEX0hJRF9ERVZJQ0VfUEFUSCBBQ1BJX0FEUl9EUAoJCQlB Q1BJX0FEUl9ERVZJQ0VfUEFUSApNRVNTQUdJTkdfREVWSUNFX1BBVEgJTVNHX0FUQVBJX0RQ CUFUQVBJX0RFVklDRV9QQVRICgkJCU1TR19TQ1NJX0RQCVNDU0lfREVWSUNFX1BBVEgKCQkJ TVNHX0ZJQlJFQ0hBTk5FTF9EUAoJCQlGSUJSRUNIQU5ORUxfREVWSUNFX1BBVEgKCQkJTVNH XzEzOTRfRFAJRjEzOTNfREVWSUNFX1BBVEgKCQkJTVNHX1VTQl9EUAlVU0JfREVWSUNFX1BB VEgKCQkJTVNHX1VTQl9DTEFTU19EUCBVU0JfQ0xBU1NfREVWSUNFX1BBVEgKCQkJTVNHX1VT Ql9XV0lEX0RQIFVTQl9XV0lEX0RFVklDRV9QQVRICgkJCU1TR19ERVZJQ0VfTE9HSUNBTF9V TklUX0RQCgkJCURFVklDRV9MT0dJQ0FMX1VOSVRfREVWSUNFX1BBVEgKCQkJTVNHX0kyT19E RVAJSTJPX0RFVklDRV9QQVRICgkJCU1TR19NQUNfQUREUl9EUCBNQUNfQUREUl9ERVZJQ0Vf UEFUSAoJCQlNU0dfSVB2NF9EUAlJUHY0X0RFVklDRV9QQVRICgkJCU1TR19JUHY2X0RQCUlQ djZfREVWSUNFX1BBVEgKCQkJTVNHX0lORklOSUJBTkRfRFAgSU5GSU5JQkFORF9ERVZJQ0Vf UEFUSAoJCQlNU0dfVUFSVF9EUAlVQVJUX0RFVklDRV9QQVRICgkJCU1TR19WRU5ET1JfRFAJ VkVORE9SX0RFVklDRV9QQVRICgkJCQoJCQlNU0dfVkVORE9SX0RQLAlHVUlEID0KCQkJREVW SUNFX1BBVEhfTUVTU0FHSU5HX1BDX0FOU0kgLS0tIAoJCQkKCQkJTVNHX1ZFTkRPUl9EUCwK CQkJR1VJRCA9IERFVklDRV9QQVRIX01FU1NBR0lOR19QQ19WVF8xMDAKCQkJCQkJCS0tLSAK CQkJTVNHX1ZFTkRPUl9EUCwgIEdVSUQgPQoJCQkJREVWSUNFX1BBVEhfTUVTU0FHSU5HX1BD X1ZUXzEwMF9QTFVTCgkJCQkJCQktLS0gCgkJCU1TR19WRU5ET1JfRFAsICBHVUlEID0KCQkJ CURFVklDRV9QQVRIX01FU1NBR0lOR19QQ19VVEY4CgkJCQkJCQktLS0gCgkJCU1TR19WRU5E T1JfRFAsICBHVUlEID0KCQkJCURFVklDRV9QQVRIX01FU1NBR0lOR19GTE9XX0NPTlRST0wK CQkJCQlVQVJUX0ZMT1dfQ09OVFJPTF9ERVZJQ0VfUEFUSAoJCQkJCgkJCU1TR19WRU5ET1Jf RFAsIEdVSUQgPQoJCQkJREVWSUNFX1BBVEhfTUVTU0FHSU5HX1NBUwoJCQkJU0FTX0RFVklD RV9QQVRIIE1TR19JU0NTSV9EUAoJCQkJSVNDU0lfREVWSUNFX1BBVEggTVNHX1NBVEFfRFAK CQkJCQkJU0FUQV9ERVZJQ0VfUEFUSAoKTUVESUFfREVWSUNFX1BBVEgJCU1FRElBX0hBUkRE UklWRV9EUApIQVJERFJJVkVfREVWSUNFX1BBVEgJCU1FRElBX0NEUk9NX0RQCQlDRFJPTV9E RVZJQ0VfUEFUSAoJCQkJTUVESUFfVkVORE9SX0RQCQlWRU5ET1JfREVWSUNFX1BBVEgKCQkJ CU1FRElBX1ZFTkRPUl9EUCwgR1VJRD0gVU5LTk9XTl9ERVZJQ0VfR1VJRAoJCQkJVU5LTk9X Tl9ERVZJQ0VfVkVORE9SX0RFVklDRV9QQVRICgkJCQlNRURJQV9GSUxFUEFUSF9EUAoJCQkJ RklMRVBBVEhfREVWSUNFX1BBVEggTUVESUFfUFJPVE9DT0xfRFAKCQkJCU1FRElBX1BST1RP Q09MX0RFVklDRV9QQVRICkJCU19ERVZJQ0VfUEFUSAkJCUJCU19CQlNfRFAJQkJTX0JCU19E RVZJQ0VfUEFUSApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKSW4gc2VjdGlvbiA4LjMgb2Yg dGhlIG9yaWdpbmFsIEludGVsIFNwZWNpZmljYXRpb24sIEVGSSBTcGVjaWZpY2F0aW9uCnZl cnNpb24gMS4xMCwgZGF0ZWQgRGVjZW1iZXIgMSwgMjAwMiwgc2l4IHBhdGhzIGFyZSBkZWZp bmVkIGFzIGZvbGxvd3M6CgpEZXZpY2UgUGF0aCBOb2RlcwpUaGVyZSBhcmUgc2l4IG1ham9y IHR5cGVzIG9mIERldmljZSBQYXRoIG5vZGVzOgoKMSkgSGFyZHdhcmUgRGV2aWNlIFBhdGgu IFRoaXMgRGV2aWNlIFBhdGggZGVmaW5lcyBob3cgYSBkZXZpY2UgaXMgYXR0YWNoZWQKdG8g dGhlIHJlc291cmNlIGRvbWFpbiBvZiBhIHN5c3RlbSwgd2hlcmUgcmVzb3VyY2UgZG9tYWlu IGlzIHNpbXBseSB0aGUKc2hhcmVkIG1lbW9yeSwgbWVtb3J5IG1hcHBlZCBJL08sIGFuZCBJ L08gc3BhY2Ugb2YgdGhlIHN5c3RlbS4KCjIpIEFDUEkgRGV2aWNlIFBhdGguIFRoaXMgRGV2 aWNlIFBhdGggaXMgdXNlZCB0byBkZXNjcmliZSBkZXZpY2VzIHdob3NlCmVudW1lcmF0aW9u IGlzIG5vdCBkZXNjcmliZWQgaW4gYW4gaW5kdXN0cnktc3RhbmRhcmQgZmFzaGlvbi4gVGhl c2UKZGV2aWNlcyBtdXN0IGJlIGRlc2NyaWJlZCB1c2luZyBBQ1BJIEFNTCBpbiB0aGUgQUNQ SSBuYW1lIHNwYWNlOyB0aGlzCkRldmljZSBQYXRoIGlzIGEgbGlua2FnZSB0byB0aGUgQUNQ SSBuYW1lIHNwYWNlLgoKMykgTWVzc2FnaW5nIERldmljZSBQYXRoLiBUaGlzIERldmljZSBQ YXRoIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlCmNvbm5lY3Rpb24gb2YgZGV2aWNlcyBvdXRz aWRlIHRoZSByZXNvdXJjZSBkb21haW4gb2YgdGhlIHN5c3RlbS4gVGhpcwpEZXZpY2UgUGF0 aCBjYW4gZGVzY3JpYmUgcGh5c2ljYWwgbWVzc2FnaW5nIGluZm9ybWF0aW9uIChlLmcuLCBh IFNDU0kgSUQpCm9yIGFic3RyYWN0IGluZm9ybWF0aW9uIChlLmcuLCBuZXR3b3JraW5nIHBy b3RvY29sIElQIGFkZHJlc3NlcykuCgo0KSBNZWRpYSBEZXZpY2UgUGF0aC4gVGhpcyBEZXZp Y2UgUGF0aCBpcyB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwb3J0aW9uIG9mCmEgbWVkaXVtIHRo YXQgaXMgYmVpbmcgYWJzdHJhY3RlZCBieSBhIGJvb3Qgc2VydmljZS4gRm9yIGV4YW1wbGUs IGEgTWVkaWEKRGV2aWNlIFBhdGggY291bGQgZGVmaW5lIHdoaWNoIHBhcnRpdGlvbiBvbiBh IGhhcmQgZHJpdmUgd2FzIGJlaW5nIHVzZWQuCgo1KSBCSU9TIEJvb3QgU3BlY2lmaWNhdGlv biBEZXZpY2UgUGF0aC4gVGhpcyBEZXZpY2UgUGF0aCBpcyB1c2VkIHRvCnBvaW50IHRvIGJv b3QgbGVnYWN5IG9wZXJhdGluZyBzeXN0ZW1zOyBpdCBpcyBiYXNlZCBvbiB0aGUgQklPUyBC b290ClNwZWNpZmljYXRpb24gVmVyc2lvbiAxLjAxLiBSZWZlciB0byB0aGUgUmVmZXJlbmNl cyBhcHBlbmRpeCBmb3IgZGV0YWlscwpvbiBvYnRhaW5pbmcgdGhpcyBzcGVjaWZpY2F0aW9u LgoKNikgRW5kIG9mIEhhcmR3YXJlIERldmljZSBQYXRoLiBEZXBlbmRpbmcgb24gdGhlIFN1 Yi1UeXBlLCB0aGlzIERldmljZQpQYXRoIG5vZGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUg ZW5kIG9mIHRoZSBEZXZpY2UgUGF0aCBpbnN0YW5jZSBvcgpEZXZpY2UgUGF0aCBzdHJ1Y3R1 cmUuWzExXQoKWW91IGNhbiBzZWUgdGhpcyBzcGVjaWZpY2F0aW9uIHJlZmxlY3RlZCBpbiB0 aGUgUGhvZW5peCBkZXZlbG9wbWVudApwcm90b2NvbHMuICBPdmVyYWxsLCB0aGVyZSBpcyBh IHZlcnkgdmVyYm9zZSBhbmQgdXNlciB1bmZyZWluZGx5IG5hbWluZwpjb252ZW50aW9uIGZv ciBpZGVudGlmeWluZyBib290YWJsZSBvYmplY3RzIHdpdGhpbiB0aGUgVUVGSSBib290bG9h ZGVyLAphbGwgb2Ygd2hpY2ggY2FuIGJlIHF1aXRlIGZyaWdodGZ1bCB3aGVuIGEgdXNlciBp cyBjb25mcm9udGVkIHdpdGgKZGVsZXRpbmcgYSBkcml2ZXIgdGhhdCB0aGUgZmlybXdhcmUg aW5pdGlhbGx5IHBsYWNlcyBvbiB0aGUgYm9vdCBtZW51LgpGaXJtd2FyZSB3cml0ZXJzIG5l ZWQgdG8gYmUgY2FyZWZ1bCB0byBpbmNsdWRlIGEgcmV0dXJuIHRvIGRlZmF1bHQKY29uZmln dXJhdGlvbiBpbiBvcmRlciB0byBzYXZlIHRoZSBlbmQgdXNlciBmcm9tIHRoZW1zZWx2ZXMu CgpSZXR1cm5pbmcgYmFjayB0byB0aGUgb3V0cHV0IG9mIG91ciBzYW1wbGUgZWZpYm9vdG1n ciBvdXRwdXQsIGFuZCBhZnRlcgpyZXZpZXdpbmcgc29tZSBvZiB0aGUgc3BlY2lmaWNhdGlv bnMgb2YgRUZJX0RFVklERV9QQVRIX1BST1RPQ09MLCB3ZSBjYW4Kbm93IGRpc2VjdCBzb21l IG9mIHRoaXMgb3V0cHV0IHdpdGggYmV0dGVyIGVkaWZpY2F0aW9uOgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCgpbcm9vdEBzeXN0ZW0gZGlyZWN0b3J5XSMgZWZpYm9vdG1nciAtdgpCb290Q3Vy cmVudDogMDAwMgpUaW1lb3V0OiAzIHNlY29uZHMKQm9vdE9yZGVyOiAwMDAzLDAwMDIsMDAw MCwwMDA0CkJvb3QwMDAwKiBDRC9EVkQgRHJpdmUgIEJJT1MoMywwLDAwKQpCb290MDAwMSog SGFyZCBEcml2ZSAgICBIRCgyLDAsMDApCkJvb3QwMDAyKiBGZWRvcmEKSEQoMSw4MDAsNjE4 MDAsNmQ5OGYzNjAtY2IzZS00NzI3LThmZWQtNWNlMGMwNDAzNjVkKUZpbGUoXEVGSVxmZWRv cmFcZ3J1Yng2NC5lZmkpCkJvb3QwMDAzKiBvcGVuc3VzZQpIRCgxLDgwMCw2MTgwMCw2ZDk4 ZjM2MC1jYjNlLTQ3MjctOGZlZC01Y2UwYzA0MDM2NWQpRmlsZShcRUZJXG9wZW5zdXNlXGdy dWJ4NjQuZWZpKQpCb290MDAwNCogSGFyZCBEcml2ZSAgICBCSU9TKDIsMCwwMClQMDogU1Qx NTAwRE0wMDMtOVlOMTZHICAgICAgICAuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKQm9vdDAwMDAs IGFuZCBCb290MDAwNCBhcmUgZXZpZGVudGx5IGxlZ2FjeSBiaW9zIGJvb3QgZW50cmllcy4g IEJvb3QwMDAyCmFuZCBCb290MDAwMyBhcmUgbmF0aXZlIFVFRkkgZW50cmllcyB3aGljaCBw b2ludCB0byBkaWZmZXJlbnQgc2Vjb25kYXJ5IGJvb3QKbG9hZGVycywgYm90aCBiZWluZyBv biB0aGUgc2FtZSBoYXJkIGRyaXZlIGRldmljZSBhbmQgYm90aCBleGVjdXRhYmxlcwpyZXNp ZGluZyBpbiB0aGUgRUZJIGFjdGl2ZSBwYXJ0aXRpb24sIG9uZSBmb3IgZmVkb3JhIGFuZCBv bmUgZm9yCm9wZW5zdXNlLiAgQm9vdDAwMDEgaXMgYSBVRUZJIGRlZmF1bHQgYm9vdCBpZiBh bGwgZWxzZSBmYWlscy4gIFRoaXMgaXMKc2ltaWxhciB0byBhIGJpb3MgYm9vdCBidXQgdGhl IFVFRkkgYm9vdCBsb2FkZXIgbG9va3Mgb24gdGhlIHNwZWNpZmllZApoYXJkIGRyaXZlIGZv ciBhIGVmaSBiaW5hcnkgYmFzZWQgb24gdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUsIHN1Y2gg YXMKXEVGSVxCT09UXEJPT1R4NjQuRUZJIChmb3IgYSB4ODYgNjQgYml0IGFyY2gpLiAgCgpB biBpbXBvcnRhbnQgYW5kIGNvbnRyb3ZlcnNpYWwgY29tcG9uZW50IG9mIHRoZSBVRUZJIHNw ZWNpZmljYXRpb24gaXMKdGhlIHNlY3VyZSBib290IGNvbmZpZ3VyYXRpb24uICBUaGVvcmV0 aWNhbGx5IHRoZSBzZWN1cmUgYm9vdCBpcyBkZXNpZ25lZAp0byBhZGRyZXNzIGEgc2VjdXJp dHkgaXNzdWUsIHdoaWNoIGlzIGEgcm9vdCBraXQgYXR0YWNrLiAgSW4gcmVhbCBsaWZlLAp0 aGlzIGlzIGEgbm9uLWlzc3VlIGFuZCBvZiBubyBjb25jZXJuIHdoYXRzb2V2ZXIuICBXaGF0 IHRoZSBzZWN1cmUKYm9vdCBtZWNoYW5pc20gaXMgYWN0dWFsbHkgZm9yIGlzIHRvIHByb3Rl Y3QgdGhlIHZlbmRvcnMgd2hvIHdyb3RlIHRoaXMKc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBp bnN0YWxsYXRpb24gb2YgY29tcGV0aXRpdmUgcHJvZHVjdHMgb24gaGFyZHdhcmUKd2hpY2gg dGhleSBoYXZlIE9FTSBjb250cmFjdHMgd2l0aC4gIFJvb3Qga2l0cyByZXF1aXJlIHBoeXNp Y2FsIGFjY2Vzcwp0byBzZW5zaXRpdmUgcGFydHMgb2YgYSBjb21wdXRlciBzeXN0ZW0uICBX aXRob3V0IHBoeXNpY2FsIHNlY3VyaXR5LCBvbmUKY2FuIG5ldmVyIGhhdmUgc2VjdXJpdHkg b2YgYW55IGtpbmQuICBBcyBhIHZlY3RvciwgZmlybXdhcmUgcm9vdCBraXRzCmFyZSBvbmUg b2YgdGhlIGhhcmRlc3QgYXR0YWNrcyBvbiBhIGRpZ2l0YWwgc3lzdGVtLiAgR2FydG5lciBy ZXBvcnRzCnRoYXQgaW4gMjAxMyBvdmVyIDE5IEJJTExJT04gZG9sbGFycyB3YXMgc3BlbnQg b24gc2VjdXJpdHkgc29mdHdhcmUsCm5lYXJseSBhbGwgb2YgaXQgdGFyZ2V0ZWQgZm9yIE1p Y3Jvc29mdCBXaW5kb3dzIHZpcnVzZXMgYW5kIHdvcm1zLlsxMl0gVGhlCjIwMTMgc2VjdXJp dHkgcmVwb3J0IGZyb20gU29ocG9zIG91dGxpbmVzIG5lYXJseSBldmVyIHBvc3NpYmxlIHZl Y3Rvcgpmb3IgbWFsd2FyZSBvbiBhbGwgcGxhdGZvcm1zLCB3aXRoIHNwZWNpYWwgZW1waGFz aXMgb24gZW1lcmdpbmcgZGV2aWNlcy4KSW4gdGhlaXIgY29tcHJlaGVuc2l2ZSByZXBvcnQg ZmlybXdhcmUgYXR0YWNrcyBhcmUgbm90IGNvbnNpZGVyZWQgZXZlbiBhCnZpYWJsZSB2ZWN0 b3IuWzEzXSBUaGUgc3RhbmRpbmcgdGhyZWF0IGlzIHN0aWxsIHN0YW5kYXJkIE1pY3Jvc29m dCBXaW5kb3dzLgpGb3IgZXhhbXBsZSwgTWljcm9zb2Z0IHNoaXBwZWQgaXRzIGxhdGVzdCBv cGVyYXRpbmcgc3lzdGVtIHdpdGggYSBzbGlkaW5nCmdhZGdldCB0aGF0IGltbWVkaWF0ZWx5 IGhhZCB0byBiZSB3aXRoZHJhd24gYmVjYXVzZSBpdCBzZXJ2ZWQgYXMgYSB2ZWN0b3IKZm9y IG11bHRpcGxlIG1hbHdhcmUgYXR0YWNrcy4gWzE0XQoKICAgICJBcHBseWluZyB0aGUgYXV0 b21hdGVkIE1pY3Jvc29mdCBGaXggaXQgc29sdXRpb24gZGVzY3JpYmVkCiAgICBpbiBNaWNy b3NvZnQgS25vd2xlZGdlIEJhc2UgQXJ0aWNsZSAyNzE5NjYyIGRpc2FibGVzIHRoZQogICAg V2luZG93cyBTaWRlYmFyIGV4cGVyaWVuY2UgYW5kIGFsbCBHYWRnZXQgZnVuY3Rpb25hbGl0 eS4KCiAgICBSZWNvbW1lbmRhdGlvbi4gQ3VzdG9tZXJzIHdobyBhcmUgY29uY2VybmVkIGFi b3V0CiAgICB2dWxuZXJhYmxlIG9yIG1hbGljaW91cyBHYWRnZXRzIHNob3VsZCBhcHBseSB0 aGUgYXV0b21hdGVkCiAgICBNaWNyb3NvZnQgRml4IGl0IHNvbHV0aW9uIGFzIHNvb24gYXMg cG9zc2libGUuIEZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiwgc2VlIHRoZSBTdWdnZXN0ZWQg QWN0aW9ucyBzZWN0aW9uIG9mIHRoaXMKICAgIGFkdmlzb3J5LiIgWzE1XQoKU28gd2hhdCBp cyB0aGUgcHJvYmxlbSBiZWluZyBhZGRyZXNzZWQ/ICBGaXJzdCBhbmQgZm9yZW1vc3QsIFNl Y3VyZSBCb290CmlzIGFib3V0IHZlbmRvciBjb250cm9sIGFuZCBub3Qgc2VjdXJpdHkuIFRo aXMgaXMgb2J2aW91cy4gIE5vIHRydWUKZXhwZXJ0IG9uIGNyeXB0b2dyYXBoeSBvciBzZWN1 cml0eSBoYXMgYmVlbiBhYmxlIHRvIGRlbW9uc3RyYXRlIHRoYXQKcmVtb3ZhbCBvZiBzZWN1 cml0eSBhbmQga2V5cyBmcm9tIHRoZSB1c2VycyBpbXByb3ZlcyBzZWN1cml0eSBvZiBhCnN5 c3RlbS4gIEFuZCBmdXJ0aGVybW9yZSB0aGVyZSBpcyBzY2FudCBldmlkZW5jZSBvZiBhIHNl Y3VyaXR5IGlzc3VlCndpdGhpbiB0aGUgcHJlYm9vdGluZyBlbnZpcm9ubWVudCwgdGhhdCBp cyB1cCB1bnRpbCBub3cuICBJbiBmYWN0LCBSaWNoYXJkCldpbGtpbnMsIG9mIFBob2VuaXgg VGVjaG5vbG9naWVzLCBhbmQgQnJpYW4gUmljaGFyZHNvbiBJbnRlbApDb3Jwb3JhdGlvbiwg d3JpdGUgaW4gdGhlaXIgU2VwdGVtYmVyIDIwMTMgcGFwZXIgb24gVUVGSSBhbmQgY29tcHV0 ZXIKc2VjdXJpdHkgMyBwYWdlcyBvZiBvdXRsaW5lZCBwb3NzaWJsZSBzZWN1cml0eSBpc3N1 ZXMgYW5kIG1hbGV3YXJlCmVmZm9ydHMsIGluY2x1ZGluZyBkb2N1bWVudGVkIGluIHRoZSB3 aWxkIHByb2dyYW1zIGFuZCByZXNlYXJjaCB0ZXN0CnByb2dyYW1zIGFuZCBzaG93IGN1cnJl bnQgdGhyZWF0cyBvdXRzaWRlIG9mIHRoZSAgdGhlb3JldGljYWwuICAKClRvIHF1b3RlIG9u ZSBibG9nZ2VyIGF0IHpkbmV0OgoKICAgICJZb3Ugc2hvdWxkIGRvIHlvdXIgcmVhZGVyc2hp cCBhIGh1Z2UgZmF2b3IuIEludGVydmlldyBhCiAgICB3b3JsZC1jbGFzcyBjcnlwdG9ncmFw aHkgZXhwZXJ0IFtJIHN1Z2dlc3QgUm9uIFJpdmVzdCBvdmVyCiAgICBhdCBNLkkuVC4sIHRo ZSAiUiIgaW4gUlNBIGFzIHlvdSBrbm93XSwgYW5kIGFzayBoaW0vaGVyCiAgICB0aGUgZm9s bG93aW5nIHF1ZXN0aW9uOgoKICAgIDEuICJJcyB0aGVyZSBhbnkgdGVjaG5pY2FsIHJlYXNv biB3aGF0c29ldmVyIHRoYXQKICAgIFVFRkktU2VjdXJlIEJvb3Qgc2hvdWxkIGJlIHRpZWQg dG8gYW55IHBhcnRpY3VsYXIgT1MKICAgIHZlbmRvciBpbiBvcmRlciBmb3IgdGhlIGVuZC11 c2VyIHRvIHJlYWxpemUgdGhlIGJlbmVmaXQKICAgIG9mIHNlY3VyZS1ib290PyIKCiAgICAy LiAiSG93IHdvdWxkIHlvdSBoYXZlIGltcGxlbWVudGVkIHNlY3VyZS1ib290PyIKCiAgICBB c2sgaGltL2hlciB0byBnbyBpbnRvIGFzIG11Y2ggZGV0YWlsIGFzIHJlYXNvbmFibGUsIHNv CiAgICB0aGF0IGFsbCB0aGUgdGVjaC1oZWFkcyB3aG8gcmVhZCB5b3VyIGpvdXJuYWwgYXJl IGFibGUKICAgIHRvIGZvbGxvdyBhbG9uZyBhbmQgY29uY2x1ZGUgZm9yIHRoZW1zZWx2ZXMg dGhhdCB0aGUKICAgIGJpbmRpbmcgdG8gV2luZG93cyBpcyBlbnRpcmVseSBhcnRpZmljaWFs IGFuZCBjb25jb2N0ZWQKICAgIGJ5IE1pY3Jvc29mdC4KCiAgICBUaGUgcmVhc29uIGZvciBk b2luZyBzdWNoIGFuIGludGVydmlldyBpcyB2ZXJ5IGltcG9ydGFudDoKICAgIFRoZXJlIGFy ZSBhIGxvdCBvZiBwZW9wbGUsIGluY2x1ZGluZyB0aGUgVS5TLiBEZXBhcnRtZW50CiAgICBv ZiBKdXN0aWNlLCBmb3Igd2hvbSBjcnlwdG9ncmFwaHkgaXMgYSBraW5kIG9mIGJsYWNrCiAg ICBtYWdpYy4gVGhleSBkbyBub3Qga25vdyB3aGF0IGlzIGZhY3QgYW5kIHdoYXQgaXMgZmlj dGlvbiwKICAgIGV2ZW4gYWZ0ZXIgcmVhZGluZyB0aGUgc3BlY2lmaWNhdGlvbnMgZm9yIGFz eW1tZXRyaWMKICAgIGNyeXB0bywgYmVjYXVzZSBpdCB0YWtlcyBhIHdoaWxlIHRvIGJlIGFi bGUgdG8gdW5kZXJzdGFuZAogICAgY3J5cHRvIHByaW1pdGl2ZXMgd2VsbC1lbm91Z2ggdG8g a25vdyB0aGF0IG5vYm9keSBpcwogICAgcHVsbGluZyB0aGUgd29vbCBvdmVyIHlvdXIgZXll cy4gIgoKSW4gZmFjdCwgaXQgc2VlbXMgdmVyeSBhcHBhcmVudCB0aGF0IHRoZSBwZXJjZWl2 ZWQgdGhyZWF0IHRvIHN5c3RlbQpzZWN1cml0eSwgc3VjaCBhcyBhbnkgZXhpc3QgYXQgdGhl IHByZWJvb3QgbGV2ZWwsIGlzIGxhcmdlbHkgZnJvbSB0aGUKVUVGSSBlbnZpcm9ubWVudCBp dHNlbGYuICBJdCBhY3R1YWxseSBib290cyBhbiBtaW5pLW9wZXJhdGluZyBzeXN0ZW0gYW5k CnRoZSBFRkkgUGFydGl0aW9uIGNhbiByZXByZXNlbnQgYSB3aG9sZSBuZXcgc2VjdXJpdHkg aG9sZSwgZXNwZWNpYWxseQp3aGVuIGxpbmtlZCB0byBhIG5vbi1zZWN1cmUgb3BlcmF0aW5n IHN5c3RlbSBzdWNoIGFzIE1pY3Jvc29mdCBXaW5kb3dzLiAgIAoKCSJUaGUgZXhhbXBsZXMg b3V0bGluZWQgYWJvdmUgZGVzY3JpYmUgc2ltaWxhciBhdHRhY2sKCW1ldGhvZHMgLiBUaGUg Ym9vdGtpdCBpcyBkZXBsb3llZCBpbiB0aGUgZm9ybSBvZgoJYSBVRUZJIGV4ZWN1dGFibGUg LCB0byBtYXNxdWVyYWRlIGFzIHRoZSBkZWZhdWx0CglvcGVyYXRpbmcgc3lzdGVtIGJvb3Qg bG9hZGVyLiBUaGUgYm9vdGtpdCB0aGVuCglsYXVuY2hlcyBhIHBhdGNoZWQgdmVyc2lvbiBv ZiB0aGUgb3BlcmF0aW5nIHN5c3RlbQoJbG9hZGVyLCBhZGRpbmcgZXhwbG9pdCBjb2RlIGJl Zm9yZSB0aGUgb3BlcmF0aW5nCglzeXN0ZW0gbG9hZHMgbWFsd2FyZSBwcm90ZWN0aW9uLi4u V2hpbGUgcm9vdGtpdHMgYW5kCglib290a2l0cyBhcmUgYW4gaXNzdWUgZm9yIGFueSBzeXN0 ZW0sIGluY2x1ZGluZyBsZWdhY3kKCUJJT1MgZW52aXJvbm1lbnRzLCB0aGV5IHByZXNlbnQg YSB1bmlxdWUgY2hhbGxlbmdlCgl0byB0aGUgVUVGSSBlY29zeXN0ZW0uIFRoZSBlbnRpcmUg cGhpbG9zb3BoeSBiZWhpbmQKCVVFRkkgaXMgdG8gc3RhbmRhcmRpemUgYW5kIGFsbG93IGZv ciBleHRlbnNpYmlsaXR5CglvZiB0aGUgcHJlIC0gYm9vdCBpbnRlcmZhY2UuICBXaGlsZSB0 aGlzIG9wZW5uZXNzCglhbmQgc3RhbmRhcmRpemF0aW9uIGNhbiBtYWtlIHRoZSBzeXN0ZW0g dnVsbmVyYWJsZQoJdG8gYXR0YWNrcyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBtb3JlIGRpZmZp Y3VsdCBpbgoJbGVnYWN5IEJJT1MgLCBpdCBpcyBpbXBvcnRhbnQgdG8gYWNrbm93bGVkZ2Ug dGhhdAoJbGVnYWN5IEJJT1MgaGFkIHZlcnkgbGltaXRlZCBwcm92aXNpb25zIGZvciBkZXRl Y3Rpb24KCW9yIGRlZmVuc2UuICBBbnkgb3B0aW1hbCBzb2x1dGlvbiBmb3IgVUVGSSBuZWVk cyB0bwoJZW1icmFjZSBmbGV4aWJpbGl0eSAsIHdoaWxlIGxpbWl0aW5nIGF0dGFjayB2ZWN0 b3JzICwKCW1pdGlnYXRpbmcgcmlzaywgcHJvbW90aW5nIHBvc3NpYmlsaXRpZXMgYW5kIHBy b3ZpZGluZwoJbWV0aG9kcyBmb3IgbWFudWZhY3R1cmVycyBhbmQgdXNlcnMgdG8gY29udHJv bCB0aGVpcgoJc2VjdXJpdHkgcG9saWN5LiJbMTddCgpUaGlzIGhlYWR5IGNvbWJpbmF0aW9u IG9mIGRlc2lyZSBmb3IgdmVuZG9yIGNvbnRyb2wsIGFuIGluaGVyZW50bHkKaW5zZWN1cmUg cHJlYm9vdCBlbnZpcm9ubWVudCwgYW5kIGNvbnNpZGVyYXRpb24gb2YgdGhlIHNpZ25pZmlj YW50IGxlZ2FsCnJhbWlmaWNhdGlvbnMsIHRoZXJlIGhhcyBiZWVuIGdvb2QgcmVhc29uIGZv ciB0aGUgU2VjdXJlIEJvb3QgcHJvdG9jb2xzCmFuZCB0aGVpciBhYnVzZSBieSBNaWNyb3Nv ZnQgQ29ycG9yYXRpb24sIHdobyBpbiBhZGRpdGlvbiB0byB3YW50aW5nCnN5c3RlbSBjb250 cm9sIGFzIGEgbWVhbnMgb2YgbWFya2V0IGRvbWluYW5jZSwgYWxzbyB1bmRlcnN0YW5kcyB0 aGF0CnRoZXkgaGF2ZSBhbiBpbnNlY3VyZSBvcGVyYXRpbmcgc3lzdGVtIGp1c3QgcmlwZSBm b3IgYmVpbmcgdGFrZW4KYWR2YW50YWdlIG9mIHRocm91Z2ggdGhlIFVFRkkgc2VjdXJpdHkg aG9sZSB3aGljaCB0aGV5IHdpbGwgYWxsb3cgYWNjZXNzCnRvLiAKClNlY3VyZSBCb290IGlz IGEgc3lzdGVtIHdpdGhpbiBFRkkgd2hlcmUgdGhlIGJpbmFyaWVzIGZvciB0aGUgb3BlcmF0 aW5nCnN5c3RlbSBhbmQgb3RoZXIgYmluYXJpZXMgYXJlIGNyeXB0b2dyYXBoaWNhbGx5IHNp Z25lZC4gIFRoaXMgcHJldmVudHMKdGFtcGVyaW5nIGFzIHRoZSBzeXN0ZW0gd2lsbCBub3Qg Ym9vdCBhIGJpbmFyeSB3aGljaCBpcyBub3Qgc2lnbmVkIHdoZW4Kc2VjdXJlIGJvb3QgaXMg dHVybmVkIG9uIHdpdGhpbiB0aGUgVUVGSSBmaXJtd2FyZS4gIAoKV2hhdCBpcyBhIGNyeXB0 b2dyYXBoaWNhbGx5IHNpZ25lZCBiaW5hcnk/ICBNb3N0IGNyeXB0b2dyYXBoeSB0b2RheSB1 c2VzCmFzeW1tZXRyaWNhbCAoa25vd24gYWxzbyBhcyBwdWJsaWMga2V5KSBlbmNyeXB0aW9u LiAgSW4gaXRzIHNpbXBsZXN0CmZvcm0sIHNvbWVvbmUgY3JlYXRlcyBhIHByaXZhdGUga2V5 IGFuZCBzYWZlbHkgc3RvcmVzIGl0LiAgQW4gYWxnb3JpdGhtCmFsbG93cyBmb3IgdGhlIGNy ZWF0aW9uIG9mIGEgbWFueSBwdWJsaWMga2V5cy4gIEEgcGxhaW4gbWVzc2FnZSBjYW4gdGhl bgp1c2UgYW4gYWxnb3JpdGhtIHRvIGVuY3J5cHQgdGhlIHBsYWluIG1lc3NhZ2UuICBUaGUg YWxnb3JpdGhtIGlzIHN1Y2gsCmhvd2V2ZXIsIHdoZXJlIE9OTFkgVEhFIFBSSVZBVEUgS0VZ IGNhbiBkZWNyeXB0IHRoZSBlbmNyeXB0ZWQgbWVzc2FnZS4KVGhlcmUgYXJlIG1hbnkgdmVy c2lvbnMgb2YgYXN5bW1ldHJpYyBlbmNyeXB0aW9uIHN0YW5kYXJkcyBpbmNsdWRpbmcKRGlm Zmll4oCTSGVsbG1hbiBrZXkgZXhjaGFuZ2UgcHJvdG9jb2wsIERTUyAoRGlnaXRhbCBTaWdu YXR1cmUgU3RhbmRhcmQpLAp3aGljaCBpbmNvcnBvcmF0ZXMgdGhlIERpZ2l0YWwgU2lnbmF0 dXJlIEFsZ29yaXRobSwgRWxHYW1hbCwgVmFyaW91cwplbGxpcHRpYyBjdXJ2ZSB0ZWNobmlx dWVzLCBWYXJpb3VzIHBhc3N3b3JkLWF1dGhlbnRpY2F0ZWQga2V5IGFncmVlbWVudAp0ZWNo bmlxdWVzLCAgUGFpbGxpZXIgY3J5cHRvc3lzdGVtLCBSU0EgZW5jcnlwdGlvbiBhbGdvcml0 aG0gKFBLQ1MjMSksCkNyYW1lcuKAk1Nob3VwIGNyeXB0b3N5c3RlbSwgIFlBSyBhdXRoZW50 aWNhdGVkIGtleSBhZ3JlZW1lbnQgcHJvdG9jb2wKYW5kIG90aGVycy5bMThdIAoKICAgICAg IFN0ZXBzIGZvciBTdGFuZGFyZCBFbmNyeXB0aW9uIG9mIGEgbWVzc2FnZSB1c2luZyBQdWJs aWMgS2V5czoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClN0ZXAgMTogTE9OR19EQVRBX1NU UkVBTSA9PT4gRW5jcnlwdGlvbiA9PT4gUHJpdmF0ZSBLZXkKU3RlcCAyOiBQcml2YXRlIEtl eSA9PT4gQXN5bW1ldHJpYyBBbGdvcml0aG0gPT0+IFB1YmxpYyBLZXkgKG1ha2UgYXMgbWFu eSBhcyB5b3UKd2FudCkKU3RlcCAzOiBEaXN0cmlidXRlIFB1YmxpYyBLZXkKU3RlcCA0OiBQ bGFpbiBNZXNzYWdlID09PiBFbmNyeXB0IHdpdGggUHVibGljIEtleSA9PT4gVW5yZWFkYWJs ZSBNZXNzYWdlClN0ZXAgNTogVW5yZWFkYWJsZSBNZXNzYWdlIGNhbiBvbmx5IGJlIGRlY3J5 cHRlZCB3aXRoIHRoZSBQUklWQVRFIGtleSAqKiAKU3RlcCA2OiBVbnJlYWRhYmxlIE1lc3Nh Z2UgPT0+IERFQ1JZUFQgd2l0aCBQcml2YXRlIEtleSA9PT4gUGxhaW4gTWVzc2FnZQoKU2ln bmluZyBzb21lIGRhdGEgd2l0aCBhIGJpbmFyeSBzaWduYXR1cmUgaXMgYSBiaXQgbW9yZSBj b21wbGV4LiAgaXQKcmVxdWlyZXMgdGhhdCB3aXRoIGEgcHVibGljIGtleSwgb25lIGNhbiBk ZXRlcm1pbmUgdGhhdCBhIG1lc3NhZ2Ugd2FzCnNpZ25lZCB3aXRoIHRoZSBwdWJsaWMga2V5 cyBwcml2YXRlIGtleSwgYWx0aG91Z2ggaXQgY2FuIG5vdCBkZWNyeXB0IHRoZQptZXNzYWdl LiAgSW4gdGhlIGNhc2Ugb2Ygc2lnbmF0dXJlcywgaXQgaXMgbm90IG5lY2Vzc2FyeSB0byBk ZWNyeXB0IHRoZQpzaWduYXR1cmUsIGluIGZhY3QgdGhlIG1lc3NhZ2UgaXMgZ2liYmVyaXNo IGluIGNvbnRlbnQsIGJ1dCBvbmx5IHRoYXQgaXQKd2FzIGdlbmVyYXRlZCBmcm9tIGEgc3Bl Y2lmaWMgcHJpdmF0ZSBrZXkuICBSU0EgaXMgYW4gYWxnb3JpdGhtIHRoYXQgY2FuCnBlcmZv cm0gdGhpcyB0YXNrIGFuZCB0aGUgZW50cnkgaW4gV2lraXBlZGlhIGV4cGxhaW5zIGJpbmFy eSBzaWduYXR1cmVzCmJldHRlciB0aGFuIEkgY291bGQgcmVmb3JtdWxhdGUgdGhlIHByb2Nl c3MuICAKCglTdXBwb3NlIEFsaWNlIHVzZXMgQm9iJ3MgcHVibGljIGtleSB0byBzZW5kCglo aW0gYW4gZW5jcnlwdGVkIG1lc3NhZ2UuIEluIHRoZSBtZXNzYWdlLCBzaGUKCWNhbiBjbGFp bSB0byBiZSBBbGljZSBidXQgQm9iIGhhcyBubyB3YXkgb2YKCXZlcmlmeWluZyB0aGF0IHRo ZSBtZXNzYWdlIHdhcyBhY3R1YWxseSBmcm9tCglBbGljZSBzaW5jZSBhbnlvbmUgY2FuIHVz ZSBCb2IncyBwdWJsaWMga2V5IHRvCglzZW5kIGhpbSBlbmNyeXB0ZWQgbWVzc2FnZXMuIElu IG9yZGVyIHRvIHZlcmlmeQoJdGhlIG9yaWdpbiBvZiBhIG1lc3NhZ2UsIFJTQSBjYW4gYWxz byBiZSB1c2VkCgl0byBzaWduIGEgbWVzc2FnZS4KCglTdXBwb3NlIEFsaWNlIHdpc2hlcyB0 byBzZW5kIGEgc2lnbmVkIG1lc3NhZ2UKCXRvIEJvYi4gU2hlIGNhbiB1c2UgaGVyIG93biBw cml2YXRlIGtleSB0byBkbwoJc28uIFNoZSBwcm9kdWNlcyBhIGhhc2ggdmFsdWUgb2YgdGhl IG1lc3NhZ2UsCglyYWlzZXMgaXQgdG8gdGhlIHBvd2VyIG9mIGQgKG1vZHVsbyBuKSAoYXMg c2hlCglkb2VzIHdoZW4gZGVjcnlwdGluZyBhIG1lc3NhZ2UpLCBhbmQgYXR0YWNoZXMKCWl0 IGFzIGEgInNpZ25hdHVyZSIgdG8gdGhlIG1lc3NhZ2UuIFdoZW4gQm9iCglyZWNlaXZlcyB0 aGUgc2lnbmVkIG1lc3NhZ2UsIGhlIHVzZXMgdGhlIHNhbWUKCWhhc2ggYWxnb3JpdGhtIGlu IGNvbmp1bmN0aW9uIHdpdGggQWxpY2UncwoJcHVibGljIGtleS4gSGUgcmFpc2VzIHRoZSBz aWduYXR1cmUgdG8gdGhlIHBvd2VyCglvZiBlIChtb2R1bG8gbikgKGFzIGhlIGRvZXMgd2hl biBlbmNyeXB0aW5nCglhIG1lc3NhZ2UpLCBhbmQgY29tcGFyZXMgdGhlIHJlc3VsdGluZyBo YXNoCgl2YWx1ZSB3aXRoIHRoZSBtZXNzYWdlJ3MgYWN0dWFsIGhhc2ggdmFsdWUuIElmCgl0 aGUgdHdvIGFncmVlLCBoZSBrbm93cyB0aGF0IHRoZSBhdXRob3Igb2YgdGhlCgltZXNzYWdl IHdhcyBpbiBwb3NzZXNzaW9uIG9mIEFsaWNlJ3MgcHJpdmF0ZQoJa2V5LCBhbmQgdGhhdCB0 aGUgbWVzc2FnZSBoYXMgbm90IGJlZW4gdGFtcGVyZWQKCXdpdGggc2luY2UuCgpTaW5jZSB0 aGUgaGFzaCB2YWx1ZSBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBtZXNzYWdlIGl0c2VsZiwg bm90IG9ubHkKYXJlIHdlIGNlcnRhaW4gb2YgdGhlIG9yaWdpbnMgb2YgdGhlIG1lc3NhZ2Ug KEFsaWNlKSwgYnV0IGFsc28gdGhhdCB0aGUKY29udGVudCBoYXMgbm90IGJlZW4gYWx0ZXJl ZC5bMTldIFsyMF0KClNlY3VyZSBCb290IHVzZXMgdGhpcyB0ZWNobmlxdWUgdG8gZXZhbHVh dGUgYmluYXJpZXMgdGhhdCBpdCBib290cy4KVGhlcmUgYXJlIHNldmVyYWwgbGV2ZWxzIG9m IGtleXMgdGhhdCB0aGUgc2VjdXJlIGJvb3Qgc3lzdGVtIHVzZXMsIHdoaWNoCmNyZWF0ZXMg YSBoaWVyYXJjaGljYWwgc3lzdGVtIG9mIHRydXN0LiAgVGhlIDQgdHlwZXMgb2Yga2V5cyBh cmUgYXMKZm9sbG93cywgZnJvbSB0b3AgdG8gYm90dG9tOgoKUEsgLSBQbGF0Zm9ybSBLZXks IHRoaXMgaXMgdGhlIHRvcCBsZXZlbCBwdWJsaWMga2V5IG9uIHRoZSBzeXN0ZW0gd2hvc2Ug cHJpdmF0ZSBrZXkgaXMKb3duZWQgYnkgdGhlIE9FTSBvZiB0aGUgaGFyZHdhcmUuICBJdCBp cyB1c2VkIHRvIHNpZ24gYWxsIG90aGVyIGtleXMgb24gCnRoZSBzeXN0ZW0uCgpLRUsgLSBL ZXkgRXhjaGFuZ2UgS2V5cywgaXMgbW9yZSBwcm9wZXJseSBkZXNjcmliZWQgYXMgYSBkYXRh YmFzZSBvZgprZXlzLiAgVGhlc2Uga2V5cyBjYW4gb25seSBiZSBlbnRlcmVkIGludG8gdGhl IGZpcm13YXJlIHdpdGggUEsga2V5CmF1dGhvcml0eS4gVGhlIEtFSyBoYXMga2V5cyBmcm9t IHRoZSB2ZW5kb3IsIE9FTSwgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbSAKdmVuZG9ycywgYW5k IHRoZSBLRUsgZW50cmllcyBhdXRob3JpemUgdXBkYXRlcyB0byB0aGUgREIvREJYLgoKREIg aXMgdGhlIOKAmGFsbG93ZWTigJkgbGlzdCBvZiBjb2RlIHRoYXQgY2FuIGV4ZWN1dGUsIGFu ZCBmb3IgYSBNaWNyb3NvZnQgKFIpIApXaW5kb3dzOCBtYWNoaW5lIGNvbnRhaW5zIGEgTWlj cm9zb2Z0IE9TIGNlcnRpZmljYXRlLCB0aGUgTWljcm9zb2Z0IFVFRkkgQ0EgCmNlcnQsIGFu ZCBwb3NzaWJseSBvdGhlciBPU1YvSVNWIGVudHJpZXMKCkRCWCBpcyB0aGUgJ2Rpc2FsbG93 ZWQgYW5kIEJsb2NrZWQnIGxpc3Qgb2YgY29kZS4gMjEsMjIKCldpdGggYSBzZWN1cmUgYm9v dCwgdGhlIHNlcXVlbmNlIG9mIGV2ZW50cyBmb3IgYXV0aG9yaXphdGlvbiB0byBydW4KYmlu YXJpZXMgb24gdGhlIGZpcm13YXJlIGlzIGFzIGZvbGxvd3M6CgpUaGUgZmlyZXdhcmUgbG9h ZHMgYmluYXJ5IG9iamVjdHMgYW5kIGNoZWNrcyB0aGVtIGFnYWluc3QgdGhlIERCIGFuZCB0 aGUKREJYIGxpc3QuICBJZiB0aGUgYmluYXJ5J3Mgc2lnbmF0dXJlIGlzIG5vdCB3aXRoaW4g dGhlIERCIGxpc3QsIG9yIGlmIGl0CmlzIGluIHRoZSBEQlggbGlzdCwgdGhlbiBpdCB3aWxs IG5vdCBiZSBydW4gYW5kIHRoZSBib290aW5nIHByb2Nlc3Mgd2lsbAp1c3VhbGx5IGhhbHQu CgoJIkFzIHRoZSBib290IHByb2Nlc3MgcHJvY2VlZHMgZnJvbSBhbiBpbml0aWFsCglwcm90 ZWN0ZWQgZmlybXdhcmUgY29yZSwgaXQgd2lsbCBsb2FkIGFuZCBleGVjdXRlCglhZGRpdGlv bmFsIHNlY3Rpb25zIG9mIGNvZGUsIGRyaXZlcnMgYW5kIE9wdGlvbgoJUk9NcyAoY29kZSBw cm92aWRlZCBieSBwZXJpcGhlcmFsIG1hbnVmYWN0dXJlcnMKCXRvIGVuYWJsZSB0aGVpciBk ZXZpY2VzKS4gRXZlbnR1YWxseSB0aGlzCglwcm9jZXNzIGN1bG1pbmF0ZXMgaW4gdGhlIGxv YWRpbmcgYW5kIGV4ZWN1dGlvbgoJb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gYm9vdCBsb2Fk ZXIgdGhhdCBzdGFydHMKCXRoZSBvcGVyYXRpbmcgc3lzdGVtIGV4ZWN1dGlvbi4gQXMgZWFj aCBjb2RlCglzZWN0aW9uIGlzIGxvYWRlZCwgYW5kIGJlZm9yZSBpdCBpcyBleGVjdXRlZCwK CXRoZSBmaXJtd2FyZSBjb25maXJtcyB0aGF0IGl0cyBzaWduYXR1cmUgbWF0Y2hlcwoJb25l IGluIGl0cyBkYXRhYmFzZSBvZiBhdXRob3JpemVkIHNpZ25hdHVyZXMsCglhbmQgYWxzbyB0 aGF0IHRoZSBzaWduYXR1cmUgaXMgbm90IGluIHRoZQoJZm9yYmlkZGVuIGRhdGFiYXNlLiBU aGlzIGluY2x1ZGVzIHRoZSBvcGVyYXRpbmcKCXN5c3RlbSBib290IGxvYWRlciBpdHNlbGYu IFdoYXQgdGhlIGZpcm13YXJlCglkb2VzIHdpdGggdGhlIHNpZ25hdHVyZSBtYXRjaGluZyBp bmZvcm1hdGlvbgoJaXMgYSBwb2xpY3kgZGVjaXNpb24sIGFuZCBpcyBub3QgZGVmaW5lZCBi eSB0aGUKCXNwZWNpZmljYXRpb24uIFR5cGljYWxseSwgdW5hdXRob3JpemVkIGNvZGUgd2ls bAoJbm90IGJlIGV4ZWN1dGVkLCBhbmQgdGhlcmVmb3JlLCB0aGUgc3lzdGVtIG1heQoJbm90 IGJlIGFibGUgdG8gY29tcGxldGUgdGhlIG9wZXJhdGluZyBzeXN0ZW0KCWJvb3RzdHJhcCBw cm9jZXNzLiIgMjIKClRoZSBwcm9ibGVtIGhhcyBiZWVuIHRoYXQgTWljcm9zb2Z0IGNvbnRy b2xzIHRoZSBzaWduaW5nIGFnZW5jeSBmb3IgdGhlCktFSyBrZXlzIHdpdGhpbiB0aGUgZmly bXdhcmUuICBXaGlsZSB0aGUgVUVGSSBydWxlcyBmb3IgYSBzZWN1cmUgYm9vdApzaG91bGQg YWxsb3cgZm9yIG93bmVyc2hpcCBjb250cm9sIGFuZCB0aGUgc2VjdXJlIGJvb3QgcHJvY2Vz cywKTWljcm9zb2Z0IGhhcyBlZmZlY3RpdmVseSBibG9ja2VkIG90aGVyIHNpZ25pbmcgYWdl bnRzIGZyb20gYmVpbmcKYnJvdWdodCBvbiBib2FyZCBieSBoYXJkd2FyZSBtYW51ZmFjdHVy ZXJzIGJlY2F1c2Ugb2YgTWljcm9zb2Z0J3MKbmVhciBtb25vcG9seSBhbmQgT0VNIHNvbGQg eDg2IGhhcmR3YXJlLiAgSW5pdGlhbGx5IGl0IHdhcyBhIGNvbmNlcm4KdGhhdCB4ODYgaGFy ZHdhcmUgd291bGQgYmUgYmxvY2tlZCBmcm9tIGluc3RhbGxhdGlvbiBvZiBhbnkKbm9uLU1p Y3Jvc29mdCBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgYmluYXJpZXMuICBTb21lIG9mIHRoaXMg Y29uY2VybiBoYXMKYmVlbiBhbGxldmlhdGVkIGJ5IGFjdGlvbnMgb2YgTWljcm9zb2Z0IHdo aWNoIGFzc3VyZSB0aGF0IG9uIHg4NgpwbGF0Zm9ybXMgdGhhdCB0aGUgdGVybXMgb2YgdGhl IE1pY3Jvc29mdCBPRU0gd2lsbCByZXF1aXJlIHRoYXQKZmlybXdhcmVzIGFsbG93IGZvciB0 aGUgc2VjdXJlIGJvb3QgdG8gYmUgdHVybmVkIG9mZi4gIFRoaXMgaXMgbm90IHRydWUsCmhv d2V2ZXIsZm9yIEFSTSBwcm9jZXNzb3JzLCBhbmQgTWljcm9zb2Z0IGlzIG5vdCBhbG9uZSBp biBsb2NraW5nIGRvd24Kc3VjaCBkZXZpY2VzLgoKVGhlcmUgaXMgYSBnbGl0Y2ggaW4gdGhp cyBzb2x1dGlvbiwgaG93ZXZlci4gIEdvaW5nIGZvcndhcmQsIGl0IGlzIGEKaHVnZSBxdWVz dGlvbiBhcyB0byBpZiBpdCBpcyBzYWZlIHRvIHJ1biBhIFVFRkkgYm9vdGVkIHN5c3RlbSB3 aXRob3V0IGEKc2VjdXJlIGJvb3QuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGV4YWN0bHkg d2hhdCB3YXMgcG9pbnRlZCBvdXQKV2lsa2lucyBhbmQgUmljaGFyZHNvbiwgd2hpY2ggaXMg dGhhdCBVRUZJLCB3aXRoIGl0cyB2aXJ0dWFsIG1hY2hpbmUsCnJlYWRhYmxlIHBhcnRpdGlv bnMgYW5kIHVzZXJzcGFjZSB0b29sa2l0cywgbWFrZXMgYSB2ZXJ5IHRhcmdldCByaWNoCnZl Y3RvciBmb3IgbWFsd2FyZSBpbiB0aGUgZnV0dXJlLiAxNyAgSnVzdCB0dXJuaW5nIG9mZiBz ZWN1cmUgYm9vdCBvbiBhbgppbmR1c3RyaWFsIHNlcnZlciBjb21lcyB3aXRoIHNvbWUgc2Vy aW91cyByaXNrcyB0aGF0IG5lZWQgdG8gYmUKYWNjZXNzZWQuCiAKCgoKCgpSZWZlcmVuY2Vz OgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClsxXSAgaHR0cDovL3d3dy50b21zaGFyZHdh cmUuY29tL3Jldmlld3MvaW50ZWwtdWVmaS1maXJtd2FyZSwyNDg2Lmh0bWwKWzJdICBodHRw czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CSU9TIApbM10gIFNlYmFzdGlhbiBBbnRob255 IG9uIFNlcHRlbWJlciAyMiwgMjAxMSAKICAJaHR0cDovL3d3d2V4dHJlbWV0ZWNoLmNvbS9j b21wdXRpbmcvWzk2OTg1XS1kZW15c3RpZnlpbmctdWVmaS10aGUtbG9uZy1vdmVyZHVlLWJp b3MtcmVwbGFjZW1lbnQKCls0XSAgaHR0cHM6Ly93d3cuaGFwcHlhc3Nhc3Npbi5uZXQvMjAx NC8wMS8yNS91ZWZpLWJvb3QtaG93LWRvZXMtdGhhdC1hY3R1YWxseS13b3JrLXRoZW4vCgpb NV0gIExvZ2ljYWwgYmxvY2sgYWRkcmVzc2luZyAoTEJBKSBpcyBhIGNvbW1vbiBzY2hlbWUg dXNlZCBmb3Igc3BlY2lmeWluZwp0aGUgbG9jYXRpb24gb2YgYmxvY2tzIG9mIGRhdGEgc3Rv cmVkIG9uIGNvbXB1dGVyIHN0b3JhZ2UgZGV2aWNlcywKZ2VuZXJhbGx5IHNlY29uZGFyeSBz dG9yYWdlIHN5c3RlbXMgc3VjaCBhcyBoYXJkIGRpc2tzCgpMQkEgaXMgYSBwYXJ0aWN1bGFy bHkgc2ltcGxlIGxpbmVhciBhZGRyZXNzaW5nIHNjaGVtZTsgYmxvY2tzIGFyZSBsb2NhdGVk CmJ5IGFuIGludGVnZXIgaW5kZXgsIHdpdGggdGhlIGZpcnN0IGJsb2NrIGJlaW5nIExCQSBb MF0sIHRoZSBzZWNvbmQgTEJBIDEsCmFuZCBzbyBvbgoKWzZdICBodHRwczovL2VuLndpa2lw ZWRpYS5vcmcvd2lraS9HVUlEX1BhcnRpdGlvbl9UYWJsZQpbN10gIGh0dHA6Ly93d3cucm9k c2Jvb2tzLmNvbS9lZmktcHJvZ3JhbW1pbmcvaGVsbG8uaHRtbApbOF0gIGh0dHBzOi8vc29m dHdhcmUuaW50ZWwuY29tL2VuLXVzL2FydGljbGVzL3VlZmktc2hlbGw |
|