From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from toccata.grg.afb.net(w088.z208036108.was-dc.dsl.cnc.net[208.36.108.88]) (185818 bytes) by braille.uwo.ca via smail with P:esmtp/D:aliases/T:pipe (sender: ) id for ; Thu, 1 Mar 2001 11:15:04 -0500 (EST) (Smail-3.2.0.102 1998-Aug-2 #2 built 1999-Sep-5) Received: from localhost (janina@localhost) by toccata.grg.afb.net (8.11.2/8.11.2) with ESMTP id f21G4X201664 for ; Thu, 1 Mar 2001 11:04:33 -0500 Date: Thu, 1 Mar 2001 11:04:33 -0500 (EST) From: Janina Sajka X-X-Sender: To: Subject: Re: using lynx. In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463781110-1143260255-983462673=:1603" List-Id: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1463781110-1143260255-983462673=:1603 Content-Type: TEXT/PLAIN; charset=US-ASCII One more blink-friendly tip that I particularly love in Lynx: I like to turn on "links are numbered" in the configuration screen. This does two things for me: 1.) Let's me know right away what text I'm hearing is a hyper link as I listen to a page being read out. It doesn't take much brain power to let the numbers just stream in, because they'll always come in order -- 1 2 3 4 5 etc., etc. So, for this reason, I do not find this disruptive; 2.) With "links are numbered" active, you can then access any hyperlink by just typing its number and pressing enter. No need to TAB or arrow. I find I do this a lot--far more often than I arrow to a link. In fact, I find I really only arrow to links when I want to examine a series of them. In that case I arrow to the first one and do a right arrow. Then I come back with left arrow, down arrow once, and right arrow into the next one in the series. Etc. etc. On Wed, 28 Feb 2001, Charles Hallenbeck wrote: One more thing ... For your convenience, edification, etc., I've attached my lynx.cfg file to this message. Feel free to use this as you might like. Read it to learn about the things you can do with Lynx. Also, you should know that you can try out different lynx configuration files from the command line simply by specifying an alternate configuration file for lynx to use like this: lynx -cfg=[filename] Enjoy! > Hi Shawn - > Yes, pretty much like that. You tab or use 'down arrow' to go to the next > link, 'up arrow' to go back, enter or 'right arrow' to activate the link, > 'left arrow' to return to your previously displayed page from a history > list, and various single letter commands to do things like deal with a > bookmark file, change c configuration, download instead of display a link, > etcetera etcetera. It does not download graphics but shows you where they > would appear, and lets you download them if you want to. For that reason > it is lightning fast and many sighted researchers and techies use it for > that reason alone. It has two drawbacks for a blind user - it does not > support java, and it does not deal well with embedded audio 'background' > or 'autostart' messages. > > Try it - you will love it. > > Out of the box it is a little challenging to use, but with a couple of > swift changes to the configuration you can make the cursor follow the > highlights, and cause clickable links to be identified with bracketed > numbers ([1], [2], [3], etcetera) so instead of cursoring to the one you > want and pressing enter, you can just enter the number and activate the > link that way. It has a 'search' feature that lets you hunt for a word or > phrase (case insenstive) on the current page. > > It can also be modified to support secure connections. > > I am sure I have forgotten a few things, but you get the picture. It is a > serious browser. > > HTH - Chuck > > > On Wed, 28 Feb 2001, Shaun Oliver wrote: > > > Hi all > > just wanna know how to use lynx is it similar to dare I say macroslop internet exploder? hahaha > > I mean can u use tha tab key to sellect links and stuff like that or is it a little more complicated than that? > > I'd appreciate any insite or tips and tricks before jumping iin at the deepend. > > Shaun > > > > My web site is http://www.mhonline.net/~chuckh > The Moon is Waxing Crescent (24% of Full) > > > _______________________________________________ > Speakup mailing list > Speakup@braille.uwo.ca > http://speech.braille.uwo.ca/mailman/listinfo/speakup > -- Janina Sajka, Director Technology Research and Development Governmental Relations Group American Foundation for the Blind (AFB) janina@afb.net (202) 408-8175 http://www.afb.org/gov.html The invention of the printing press has been named the crowning achievment of the past millenium. Yet, electronic publishing will soon eclipse it. Read our White Paper: "Surpassing Gutenberg" available at: http://www.afb.org/ebook.html Are you developing software? Make it accessible to blind computer users. Read http://www.afb.org/technology/accessapp.html to learn how. ---1463781110-1143260255-983462673=:1603 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lynx.cfg" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="lynx.cfg" IyBseW54LmNmZyBmaWxlLg0KIyBUaGUgZGVmYXVsdCBwbGFjZW1lbnQgZm9y IHRoaXMgZmlsZSBpcyAvdXNyL2xvY2FsL2xpYi9seW54LmNmZyAoVW5peCkN CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgTHlu eF9EaXI6bHlueC5jZmcgKFZNUykNCiMNCiMNCiMgRGVmaW5pdGlvbiBwYWly cyBhcmUgb2YgdGhlIGZvcm0gIFZBUklBQkxFOkRFRklOSVRJT04NCiMgTk8g c3BhY2VzIGFyZSBhbGxvd2VkIGJldHdlZW4gdGhlIHBhaXIgaXRlbXMuDQoj DQojICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvIC91c3Iv bG9jYWwvbGliIHlvdSBtYXkgY2hhbmdlDQojICB0aGUgZGVmYXVsdCBsb2Nh dGlvbiBvZiB0aGlzIGZpbGUgaW4gdGhlIHVzZXJkZWZzLmggZmlsZSBhbmQg cmVjb21waWxlLA0KIyAgb3Igc3BlY2lmeSBpdHMgbG9jYXRpb24gb24gdGhl IGNvbW1hbmQgbGluZSB3aXRoIHRoZSAiLWNmZyINCiMgIGNvbW1hbmQgbGlu ZSBvcHRpb24uDQojDQojIEl0ZW1zIG1heSBiZSBjb21tZW50ZWQgb3V0IGJ5 IHB1dHRpbmcgYSAnIycgYXMgdGhlIEZJUlNUIGNoYXIgb2YgdGhlIGxpbmUN CiMgKEFueSBsaW5lIGJlZ2lubmluZyB3aXRoIHB1bmN0dWF0aW9uIGlzIGln bm9yZWQpLiAgTGVhZGluZyBibGFua3Mgb24gZWFjaA0KIyBsaW5lIGFyZSBp Z25vcmVkOyB0cmFpbGluZyBibGFua3MgbWF5IGJlIHNpZ25pZmljYW50IGRl cGVuZGluZyBvbiB0aGUgb3B0aW9uLg0KDQojIEFuIEhUTUwnaXplZCBkZXNj cmlwdGlvbiBvZiBhbGwgc2V0dGluZ3MgKGJhc2VkIG9uIGNvbW1lbnRzIGlu IHRoaXMgZmlsZSwNCiMgd2l0aCBhbHBoYWJldGljYWwgdGFibGUgb2Ygc2V0 dGluZ3MgYW5kIHdpdGggdGFibGUgb2Ygc2V0dGluZ3MgYnkgY2F0ZWdvcnkp DQojIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmhpcHBvLnJ1L35odnYv bHlueGNmZ190b2MuaHRtbA0KIw0KIyMjIFRoZSBjb252ZXJzaW9uIGlzIGRv bmUgdmlhIHRoZSBzY3JpcHRzL2NmZzJodG1sLnBsIHNjcmlwdC4NCiMjIyBT ZXZlcmFsIGRpcmVjdGl2ZXMgYmVnaW5uaW5nIHdpdGggJy4nIGFyZSB1c2Vk IGZvciB0aGlzIHB1cnBvc2UuDQoNCg0KLmgxIEF1eGlsaWFyeSBGYWNpbGl0 aWVzDQojIFRoZXNlIHNldHRpbmdzIGNvbnRyb2wgdGhlIGF1eGlsaWFyeSBu YXZpZ2F0aW5nIGZhY2lsaXRpZXMgb2YgbHlueCwgZS5nLiwNCiMganVtcGZp bGVzLCBib29rbWFya3MsIGRlZmF1bHQgVVJMcy4NCg0KDQouaDIgSU5DTFVE RQ0KIyBTdGFydGluZyB3aXRoIEx5bnggMi44LjEsIHRoZSBseW54LmNmZyBm aWxlIGhhcyBhIGNydWRlICJpbmNsdWRlIg0KIyBmYWNpbGl0eS4gIFRoaXMg bWVhbnMgdGhhdCB5b3UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHRoZSBnbG9i YWwgbHlueC5jZmcNCiMgd2hpbGUgYWxzbyBzdXBwbHlpbmcgeW91ciBvd24g dHdlYWtzLg0KIw0KIyBZb3UgY2FuIHVzZSBhIGNvbW1hbmQtbGluZSBhcmd1 bWVudCAoLWNmZyAvd2hlcmUvaXMvbHlueC5jZmcpIG9yIGFuDQojIGVudmly b25tZW50IHZhcmlhYmxlIChMWU5YX0NGRz0vd2hlcmUvaXMvbHlueC5jZmcp Lg0KIyBGb3IgaW5zdGFuY2UsIHB1dCBpbiB5b3VyIC5wcm9maWxlIG9yIC5s b2dpbjoNCiMNCiMgICBMWU5YX0NGRz1+L2x5bnguY2ZnOyBleHBvcnQgTFlO WF9DRkcgICAjIGluIC5wcm9maWxlIGZvciBzaC9rc2gvYmFzaC9ldGMuDQoj ICAgc2V0ZW52IExZTlhfQ0ZHIH4vbHlueC5jZmcgICAgICAgICAgICAgIyBp biAubG9naW4gZm9yIFt0XWNzaA0KIw0KIyBUaGVuIGluIH4vbHlueC5jZmc6 DQojDQojICAgSU5DTFVERTovdXNyL2xvY2FsL2xpYi9seW54LmNmZw0KIyAg ICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4gb3Igd2hhdGV2ZXIg aXMgYXBwcm9wcmlhdGUgb24geW91ciBzeXN0ZW0NCiMgYW5kIG5vdyB5b3Vy IG93biB0d2Vha3MuDQojDQojIFN0YXJ0aW5nIHdpdGggTHlueCAyLjguMiwg dGhlIElOQ0xVREUgZmFjaWxpdHkgaXMgeWV0IG1vcmUgcG93ZXJmdWwuICBZ b3UgY2FuDQojIHN1cHByZXNzIGFsbCBidXQgc3BlY2lmaWMgc2V0dGluZ3Mg dGhhdCB3aWxsIGJlIHJlYWQgZnJvbSBpbmNsdWRlZCBmaWxlcy4NCiMgVGhp cyBhbGxvd3Mgc3lzYWRtaW5zIHRvIHByb3ZpZGUgdXNlcnMgdGhlIGFiaWxp dHkgdG8gY3VzdG9taXplIGx5bnggd2l0aA0KIyBvcHRpb25zIHRoYXQgbm9y bWFsbHkgZG8gbm90IGFmZmVjdCBzZWN1cml0eSwgc3VjaCBhcyBDT0xPUiwg VklFV0VSLCBLRVlNQVAuDQojDQojIFRoZSBzeW50YXggaXMNCiMNCiMgICBJ TkNMVURFOmZpbGVuYW1lIGZvciA8c3BhY2Utc2VwYXJhdGVkLWxpc3Qtb2Yt YWxsb3dlZC1zZXR0aW5ncz4NCiMNCiMgc2FtcGxlOg0KLmV4DQojSU5DTFVE RTp+L2x5bnguY2ZnIGZvciBDT0xPUiBWSUVXRVIgS0VZTUFQDQojIG9ubHkg b25lIHNwYWNlIGNoYXJhY3RlciBzaG91bGQgc3Vycm91bmQgdGhlIHdvcmQg J2ZvcicuICBPbiBVbml4IHN5c3RlbXMgJzonDQojIGlzIGFsc28gYWNjZXB0 ZWQgYXMgc2VwYXJhdG9yLiAgSW4gdGhhdCBjYXNlLCB0aGUgZXhhbXBsZSBj YW4gYmUgd3JpdHRlbiBhcw0KLmV4DQojSU5DTFVERTp+L2x5bnguY2ZnOkNP TE9SIFZJRVdFUiBLRVlNQVANCiMgSW4gdGhlIGV4YW1wbGUsIG9ubHkgdGhl IHNldHRpbmdzIENPTE9SLCBWSUVXRVIgYW5kIEtFWU1BUCBhcmUgYWNjZXB0 ZWQgYnkNCiMgbHlueC4gIE90aGVyIHNldHRpbmdzIGFyZSBpZ25vcmVkLiAg Tm90ZTogIElOQ0xVREUgaXMgYWxzbyB0cmVhdGVkIGFzIGENCiMgc2V0dGlu Zywgc28gdG8gYWxsb3cgYW4gaW5jbHVkZWQgZmlsZSB0byBpbmNsdWRlIG90 aGVyIGZpbGVzLCBwdXQgSU5DTFVERSBpbg0KIyB0aGUgbGlzdCBvZiBhbGxv d2VkIHNldHRpbmdzLg0KIw0KIyBJZiB5b3UgYWxsb3cgYW4gaW5jbHVkZWQg ZmlsZSB0byBpbmNsdWRlIG90aGVyIGZpbGVzLCBhbmQgaWYgYSBsaXN0IG9m DQojIGFsbG93ZWQgc2V0dGluZ3MgaXMgc3BlY2lmaWVkIGZvciB0aGF0IGZp bGUgd2l0aCB0aGUgSU5DTFVERSBjb21tYW5kLCBuZXN0ZWQNCiMgZmlsZXMg YXJlIG9ubHkgYWxsb3dlZCB0byBpbmNsdWRlIHRoZSBsaXN0IG9mIHNldHRp bmdzIHRoYXQgaXMgdGhlIHNldCBBTkQgb2YNCiMgc2V0dGluZ3MgYWxsb3dl ZCBmb3IgdGhlIGluY2x1ZGVkIGZpbGUgYW5kIHNldHRpbmdzIGFsbG93ZWQg YnkgbmVzdGVkIElOQ0xVREUNCiMgY29tbWFuZHMuICBJbiBzaG9ydCwgdGhl cmUgaXMgbm8gc2VjdXJpdHkgaG9sZSBpbnRyb2R1Y2VkIGJ5IGluY2x1ZGlu ZyBhDQojIHVzZXItZGVmaW5lZCBjb25maWd1cmF0aW9uIGZpbGUgaWYgdGhl IG9yaWdpbmFsIGxpc3Qgb2YgYWxsb3dlZCBzZXR0aW5ncyBpcw0KIyBzZWN1 cmUuDQoNCg0KLmgyIFNUQVJURklMRQ0KIyBTVEFSVEZJTEUgaXMgdGhlIGRl ZmF1bHQgc3RhcnRpbmcgVVJMIGlmIG5vbmUgaXMgc3BlY2lmaWVkDQojICAg b24gdGhlIGNvbW1hbmQgbGluZSBvciB2aWEgYSBXV1dfSE9NRSBlbnZpcm9u bWVudCB2YXJpYWJsZTsNCiMgICBMeW54IHdpbGwgcmVmdXNlIHRvIHN0YXJ0 IHdpdGhvdXQgYSBzdGFydGluZyBVUkwgb2Ygc29tZSBraW5kLg0KIyBTVEFS VEZJTEUgY2FuIGJlIHJlbW90ZSwgZS5nLiBodHRwOi8vd3d3LnczLm9yZy9k ZWZhdWx0Lmh0bWwgLA0KIyAgICAgICAgICAgICAgICBvciBsb2NhbCwgZS5n LiBmaWxlOi8vbG9jYWxob3N0L1BBVEhfVE8vRklMRU5BTUUgLA0KIyAgICAg ICAgICAgd2hlcmUgUEFUSF9UTyBpcyByZXBsYWNlZCB3aXRoIHRoZSBjb21w bGV0ZSBwYXRoIHRvIEZJTEVOQU1FDQojICAgICAgICAgICB1c2luZyBVbml4 IHNoZWxsIHN5bnRheCBhbmQgaW5jbHVkaW5nIHRoZSBkZXZpY2Ugb24gVk1T Lg0KIw0KIyBOb3JtYWxseSB3ZSBleHBlY3QgeW91IHdpbGwgY29ubmVjdCB0 byBhIHJlbW90ZSBzaXRlLCBlLmcuLCB0aGUgTHlueCBzdGFydGluZw0KIyBz aXRlOg0KU1RBUlRGSUxFOmZpbGU6L3Vzci9zaGFyZS9kb2MvSFRNTC9pbmRl eC5odG1sDQojDQojIEFzIGFuIGFsdGVybmF0aXZlLCB5b3UgbWF5IHdhbnQg dG8gdXNlIGEgbG9jYWwgVVJMLiAgQSBnb29kIGNob2ljZSBmb3IgdGhpcyBp cw0KIyB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5Og0KLmV4DQojU1RBUlRG SUxFOmZpbGU6Ly9sb2NhbGhvc3Qvfi8NCiMNCiMgWW91ciBjaG9pY2Ugb2Yg U1RBUlRGSUxFIHNob3VsZCByZWZsZWN0IHlvdXIgc2l0ZSdzIG5lZWRzLCBh bmQgYmUgYSBVUkwgdGhhdA0KIyB5b3UgY2FuIGNvbm5lY3QgdG8gcmVsaWFi bHkuICBPdGhlcndpc2UgdXNlcnMgd2lsbCBiZWNvbWUgY29uZnVzZWQgYW5k IHRoaW5rDQojIHRoYXQgdGhleSBjYW5ub3QgcnVuIEx5bnguDQoNCg0KLmgy IEhFTFBGSUxFDQojIEhFTFBGSUxFIG11c3QgYmUgZGVmaW5lZCBhcyBhIFVS TCBhbmQgbXVzdCBoYXZlIGENCiMgY29tcGxldGUgcGF0aCBpZiBsb2NhbDoN CiMgZmlsZTovL2xvY2FsaG9zdC9QQVRIX1RPL2x5bnhfaGVscC9seW54X2hl bHBfbWFpbi5odG1sDQojICAgUmVwbGFjZSBQQVRIX1RPIHdpdGggdGhlIHBh dGggdG8gdGhlIGx5bnhfaGVscCBzdWJkaXJlY3RvcnkNCiMgICBmb3IgdGhp cyBkaXN0cmlidXRpb24gKHVzZSBTSEVMTCBzeW50YXggaW5jbHVkaW5nIHRo ZSBkZXZpY2UNCiMgICBvbiBWTVMgc3lzdGVtcykuDQojIFRoZSBkZWZhdWx0 IEhFTFBGSUxFIGlzOg0KIyBodHRwOi8vd3d3LnRyaWxsLWhvbWUuY29tL2x5 bngvbHlueF9oZWxwL2x5bnhfaGVscF9tYWluLmh0bWwNCiMgICBUaGlzIHNo b3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBsb2NhbCBwYXRoLg0KIw0KI0hFTFBG SUxFOmh0dHA6Ly93d3cudHJpbGwtaG9tZS5jb20vbHlueC9seW54X2hlbHAv bHlueF9oZWxwX21haW4uaHRtbA0KLmV4DQpIRUxQRklMRTpmaWxlOi8vbG9j YWxob3N0L3Vzci9zaGFyZS9kb2MvbHlueC0yLjguNC9seW54X2hlbHAvbHlu eF9oZWxwX21haW4uaHRtbA0KDQoNCg0KLmgyIERFRkFVTFRfSU5ERVhfRklM RQ0KIyBERUZBVUxUX0lOREVYX0ZJTEUgaXMgdGhlIGRlZmF1bHQgZmlsZSBy ZXRyaWV2ZWQgd2hlbiB0aGUNCiMgdXNlciBwcmVzc2VzIHRoZSAnSScga2V5 IHdoZW4gdmlld2luZyBhbnkgZG9jdW1lbnQuDQojIEFuIGluZGV4IHRvIHlv dXIgQ1dJUyBjYW4gYmUgcGxhY2VkIGhlcmUgb3IgYSBkb2N1bWVudCBjb250 YWluaW5nDQojIHBvaW50ZXJzIHRvIGxvdHMgb2YgaW50ZXJlc3RpbmcgcGxh Y2VzIG9uIHRoZSB3ZWIuDQojDQpERUZBVUxUX0lOREVYX0ZJTEU6aHR0cDov L3d3dy5nb29nbGUuY29tLw0KDQoNCi5oMSBJbnRlcmFjdGlvbg0KDQouaDIg R09UT0JVRkZFUg0KIyBTZXQgR09UT0JVRkZFUiB0byBUUlVFIGlmIHlvdSB3 YW50IHRvIGhhdmUgdGhlIHByZXZpb3VzIGdvdG8gVVJMLA0KIyBpZiBhbnks IG9mZmVyZWQgZm9yIHJldXNlIG9yIGVkaXRpbmcgd2hlbiB1c2luZyB0aGUg J2cnb3RvIGNvbW1hbmQuDQojIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQgaW4g dXNlcmRlZnMuaC4gIElmIGxlZnQgRkFMU0UsIHRoZSBjaXJjdWxhcg0KIyBi dWZmZXIgb2YgcHJldmlvdXNseSBlbnRlcmVkIGdvdG8gVVJMcyBjYW4gc3Rp bGwgYmUgaW52b2tlZCB2aWEgdGhlDQojIFVwLUFycm93IG9yIERvd24tQXJy b3cga2V5cyBhZnRlciBlbnRlcmluZyB0aGUgJ2cnb3RvIGNvbW1hbmQuDQoj DQojR09UT0JVRkZFUjpGQUxTRQ0KDQoNCi5oMiBKVU1QX1BST01QVA0KIyBK VU1QX1BST01QVCBpcyB0aGUgZGVmYXVsdCBzdGF0dXNsaW5lIHByb21wdCBm b3Igc2VsZWN0aW5nIGEganVtcHMgZmlsZQ0KIyBzaG9ydGN1dC4gIChzZWUg YmVsb3cpLg0KIyBZb3UgY2FuIGNoYW5nZSB0aGUgcHJvbXB0IGhlcmUgZnJv bSB0aGF0IGRlZmluZWQgaW4gdXNlcmRlZnMuaC4gIEFueQ0KIyB0cmFpbGlu ZyB3aGl0ZSBzcGFjZSB3aWxsIGJlIHRyaW1tZWQsIGFuZCBhIHNpbmdsZSBz cGFjZSBpcyBhZGRlZCBieSBMeW54DQojIGZvbGxvd2luZyB0aGUgbGFzdCBu b24td2hpdGUgY2hhcmFjdGVyLiAgWW91IG11c3Qgc2V0IHRoZSBkZWZhdWx0 IHByb21wdA0KIyBiZWZvcmUgc2V0dGluZyB0aGUgZGVmYXVsdCBqdW1wcyBm aWxlIChiZWxvdykuICBJZiBhIGRlZmF1bHQganVtcHMgZmlsZQ0KIyB3YXMg c2V0IHZpYSB1c2VyZGVmcy5oLCBhbmQgeW91IGNoYW5nZSB0aGUgcHJvbXB0 IGhlcmUsIHlvdSBtdXN0IHNldCB0aGUNCiMgZGVmYXVsdCBqdW1wcyBmaWxl IGFnYWluIChiZWxvdykgZm9yIHRoZSBjaGFuZ2UgdG8gYmUgaW1wbGVtZW50 ZWQuDQojDQojSlVNUF9QUk9NUFQ6SnVtcCB0byAodXNlICc/JyBmb3IgbGlz dCk6DQoNCg0KLmgxIEF1eGlsaWFyeSBGYWNpbGl0aWVzDQoNCi5oMiBKVU1Q RklMRQ0KIyBKVU1QRklMRSBpcyB0aGUgbG9jYWwgZmlsZSBjaGVja2VkIGZv ciBzaG9ydC1jdXQgbmFtZXMgZm9yIFVSTHMNCiMgd2hlbiB0aGUgdXNlciBw cmVzc2VzIHRoZSAnaicgKEpVTVApIGtleS4gIFRoZSB1c2VyIHdpbGwgYmUg cHJvbXB0ZWQNCiMgdG8gZW50ZXIgYSBzaG9ydC1jdXQgbmFtZSBmb3IgYW4g VVJMLCB3aGljaCBMeW54IHdpbGwgdGhlbiBmb2xsb3cNCiMgaW4gYSBzaW1p bGFyIG1hbm5lciB0byAnZydvdG87IGFsdGVybmF0aXZlbHksIHMvaGUgY2Fu IGVudGVyICc/Jw0KIyB0byB2aWV3IHRoZSBmdWxsIEpVTVBGSUxFIGxpc3Qg b2Ygc2hvcnQtY3V0cyB3aXRoIGFzc29jaWF0ZWQgVVJMcy4NCiMgVGhlcmUg aXMgYW4gZXhhbXBsZSBqdW1wcyBmaWxlIGluIHRoZSBzYW1wbGVzIHN1YmRp cmVjdG9yeS4NCiMgSWYgbm90IGRlZmluZWQgaGVyZSBvciBpbiB1c2VyZGVm cy5oLCB0aGUgSlVNUCBjb21tYW5kIHdpbGwgaW52b2tlDQojIHRoZSBOT19K VU1QRklMRSBzdGF0dXNsaW5lIG1lc3NhZ2UgKHNlZSAgTFlNZXNzYWdlc19l bi5oICkuDQojDQojIFRvIGFsbG93ICc/JyB0byB3b3JrLCBpbmNsdWRlIGlu IHRoZSBKVU1QRklMRQ0KIyBhIHNob3J0LWN1dCB0byB0aGUgSlVNUEZJTEUg aXRzZWxmLCBlLmcuDQojIDxkdD4/PGRkPjxhIGhyZWY9ImZpbGU6Ly9sb2Nh bGhvc3QvcGF0aC9qdW1wcy5odG1sIj5UaGlzIFNob3J0Y3V0IExpc3Q8L2E+ DQojDQojIE9uIFZNUywgdXNlIFVuaXggU0hFTEwgc3ludGF4IChpbmNsdWRp bmcgYSBsZWFkIHNsYXNoKSB0byBkZWZpbmUgaXQuDQojDQojIEFsdGVybmF0 ZSBqdW1wcyBmaWxlcyBjYW4gYmUgZGVmaW5lZCBhbmQgbWFwcGVkIHRvIGtl eXMgaGVyZS4gIElmIHRoZQ0KIyBrZXlzIGhhdmUgYWxyZWFkeSBiZWVuIG1h cHBlZCwgdGhlbiB0aG9zZSBtYXBwaW5ncyB3aWxsIGJlIHJlcGxhY2VkLA0K IyBidXQgeW91IHNob3VsZCBsZWF2ZSBhdCBsZWFzdCBvbmUga2V5IG1hcHBl ZCB0byB0aGUgZGVmYXVsdCBqdW1wcw0KIyBmaWxlLiAgWW91IG9wdGlvbmFs bHkgbWF5IGluY2x1ZGUgYSBzdGF0dXNsaW5lIHByb21wdCBzdHJpbmcgZm9y IHRoZQ0KIyBtYXBwaW5nLiAgWW91IG11c3QgbWFwIHVwcGVyIGFuZCBsb3dl cmNhc2Uga2V5cyBzZXBhcmF0ZWx5IChiZXdhcmUgb2YNCiMgbWFwcGluZ3Mg dG8ga2V5cyB3aGljaCB0aGUgdXNlciBjYW4gZnVydGhlciByZW1hcCB2aWEg dGhlICdvJ3B0aW9ucw0KIyBtZW51KS4gIFRoZSBmb3JtYXQgaXM6DQojDQoj CUpVTVBGSUxFOnBhdGg6a2V5Wzpwcm9tcHRdDQojDQojIHdoZXJlIHBhdGgg c2hvdWxkIGJlZ2luIHdpdGggYSAnLycgKGkuZS4sIG5vdCBpbmNsdWRlIGZp bGU6Ly9sb2NhbGhvc3QpLg0KIyBBbnkgd2hpdGUgc3BhY2UgZm9sbG93aW5n IGEgcHJvbXB0IHN0cmluZyB3aWxsIGJlIHRyaW1tZWQsIGFuZCBhIHNpbmds ZQ0KIyBzcGFjZSB3aWxsIGJlIGFkZGVkIGJ5IEx5bnguDQojDQojIEluIHRo ZSBmb2xsb3dpbmcgbGluZSwgaW5jbHVkZSB0aGUgYWN0dWFsIGZ1bGwgbG9j YWwgcGF0aCB0byBKVU1QRklMRSwNCiMgYnV0IGRvIG5vdCBpbmNsdWRlICdm aWxlOi8vbG9jYWxob3N0JyBpbiB0aGUgbGluZS4NCiNKVU1QRklMRTovRlVM TF9MT0NBTF9QQVRIL2p1bXBzLmh0bWwNCi5leA0KI0pVTVBGSUxFOi9MeW54 X0Rpci9pcHMuaHRtbDppOklQIG9yIEludGVyZXN0IGdyb3VwICg/IGZvciBs aXN0KToNCg0KDQouaDIgSlVNUEJVRkZFUg0KIyBTZXQgSlVNUEJVRkZFUiB0 byBUUlVFIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhlIHByZXZpb3VzIGp1bXAg dGFyZ2V0LA0KIyBpZiBhbnksIG9mZmVyZWQgZm9yIHJldXNlIG9yIGVkaXRp bmcgd2hlbiB1c2luZyB0aGUgJ0ondW1wIGNvbW1hbmQuDQojIFRoZSBkZWZh dWx0IGlzIGRlZmluZWQgaW4gdXNlcmRlZnMuaC4gIElmIGxlZnQgRkFMU0Us IHRoZSBjaXJjdWxhcg0KIyBidWZmZXIgb2YgcHJldmlvdXNseSBlbnRlcmVk IHRhcmdldHMgKHNob3J0Y3V0cykgY2FuIHN0aWxsIGJlIGludm9rZWQNCiMg dmlhIHRoZSBVcC1BcnJvdyBvciBEb3duLUFycm93IGtleXMgYWZ0ZXIgZW50 ZXJpbmcgdGhlICdKJ3VtcCBjb21tYW5kLg0KIyBJZiBtdWx0aXBsZSBqdW1w cyBmaWxlcyBhcmUgaW5zdGFsbGVkLCB0aGUgcmVjYWxscyBvZiBzaG9ydGN1 dHMgd2lsbA0KIyBiZSBzcGVjaWZpYyB0byBlYWNoIGZpbGUuICBJZiBMeW54 IHdhcyBidWlsdCB3aXRoIFBFUk1JVF9HT1RPX0ZST01fSlVNUA0KIyBkZWZp bmVkLCBhbnkgcmFuZG9tIFVSTHMgdXNlZCBpbnN0ZWFkIG9mIHNob3J0Y3V0 cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUNCiMgZ290byBVUkwgYnVmZmVyLCBu b3QgaW4gdGhlIHNob3J0Y3V0cyBidWZmZXIocyksIGFuZCB0aGUgc2luZ2xl IGNoYXJhY3Rlcg0KIyAnOicgY2FuIGJlIHVzZWQgYXMgYSB0YXJnZXQgdG8g aW52b2tlIHRoZSBnb3RvIFVSTCBidWZmZXIgKGFzIGlmICdnJ290bw0KIyBm b2xsb3dlZCBieSBVcC1BcnJvdyBoYWQgYmVlbiBlbnRlcmVkKS4NCiMNCiNK VU1QQlVGRkVSOkZBTFNFDQoNCg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQoN Ci5oMiBTQVZFX1NQQUNFDQojIElmIFNBVkVfU1BBQ0UgaXMgZGVmaW5lZCwg aXQgd2lsbCBiZSB1c2VkIGFzIGEgcGF0aCBwcmVmaXggZm9yIHRoZQ0KIyBz dWdnZXN0ZWQgZmlsZW5hbWUgaW4gIlNhdmUgdG8gRGlzayIgb3BlcmF0aW9u cyBmcm9tIHRoZSAncCdyaW50IG9yDQojICdkJ293bmxvYWQgbWVudXMuICBP biBWTVMsIHlvdSBjYW4gdXNlIGVpdGhlciBWTVMgKGUuZy4sICJTWVMkTE9H SU46IikNCiMgb3IgVW5peCBzeW50YXggKGluY2x1ZGluZyAnficgZm9yIHRo ZSBIT01FIGRpcmVjdG9yeSkuICBPbiBVbml4LCB5b3UNCiMgbXVzdCB1c2Ug VW5peCBzeW50YXguICBJZiB0aGUgc3ltYm9sIGlzIG5vdCBkZWZpbmVkLCBv ciBpcyB6ZXJvLWxlbmd0aA0KIyAoIiIpLCBubyBwcmVmaXggd2lsbCBiZSB1 c2VkLCBhbmQgb25seSBhIGZpbGVuYW1lIGZvciBzYXZpbmcgaW4gdGhlDQoj IGN1cnJlbnQgZGVmYXVsdCBkaXJlY3Rvcnkgd2lsbCBiZSBzdWdnZXN0ZWQu DQojIFRoaXMgZGVmaW5pdGlvbiB3aWxsIGJlIG92ZXJyaWRkZW4gaWYgYSAi TFlOWF9TQVZFX1NQQUNFIiBlbnZpcm9ubWVudA0KIyB2YXJpYWJsZSBoYXMg YmVlbiBzZXQgb24gVW5peCwgb3IgbG9naWNhbCBoYXMgYmVlbiBkZWZpbmVk IG9uIFZNUy4NCiMNCiNTQVZFX1NQQUNFOn4vZm9vLw0KDQoNCi5oMiBSRVVT RV9URU1QRklMRVMNCiMgTHlueCB1c2VzIHRlbXBvcmFyeSBmaWxlcyBmb3Ig KGFtb25nIG90aGVyIHB1cnBvc2VzKSB0aGUgY29udGVudCBvZg0KIyB2YXJp b3VzIHVzZXIgaW50ZXJmYWNlIHBhZ2VzLiAgUkVVU0VfVEVNUEZJTEVTIGNo YW5nZXMgdGhlIGJlaGF2aW9yDQojIGZvciBzb21lIG9mIHRoZXNlIHRlbXAg ZmlsZXMsIGFtb25nIHRoZW0gcGFnZXMgc2hvd24gZm9yIEhJU1RPUlksDQoj IFZMSU5LUywgT1BUSU9OUywgSU5GTywgUFJJTlQsIERPV05MT0FEIGNvbW1h bmRzLg0KIyBJZiBzZXQgdG8gVFJVRSwgdGhlIHNhbWUgZmlsZSBjYW4gYmUg dXNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUNCiMgcHVycG9zZS4g IElmIHNldCB0byBGQUxTRSwgYSBuZXcgZmlsZW5hbWUgaXMgZ2VuZXJhdGVk IGVhY2ggdGltZSBiZWZvcmUNCiMgcmV3cml0aW5nIHN1Y2ggYSBwYWdlLiAg V2l0aCBUUlVFLCByZXBlYXRlZCBpbnZvY2F0aW9uIG9mIHRoZXNlIGNvbW1h bmRzDQojIGlzIGxlc3MgbGlrZWx5IHRvIHB1c2ggcHJldmlvdXMgZG9jdW1l bnRzIG91dCBvZiB0aGUgY2FjaGUgb2YgcmVuZGVyZWQNCiMgdGV4dHMgKHNl ZSBhbHNvIERFRkFVTFRfQ0FDSEVfU0laRSkuICBUaGlzIGlzIGVzcGVjaWFs bHkgdXNlZnVsIHdpdGgNCiMgaW50ZXJtaXR0ZW50IChkaWFsdXApIG5ldHdv cmsgY29ubmVjdGlvbnMsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvDQojIGNv bnRpbnVlIGJyb3dzaW5nIHRocm91Z2ggdGhlIGNhY2hlZCBkb2N1bWVudHMg YWZ0ZXIgZGlzY29ubmVjdGluZy4NCiMgV2l0aCB0aGUgZGVmYXVsdCBzZXR0 aW5nIG9mIEZBTFNFLCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSBpbmNh cm5hdGlvbg0KIyBvZiBlLmcuIHRoZSBWTElOS1MgcGFnZSBjYWNoZWQgaW4g bWVtb3J5IChidXQgc3RpbGwgb25seSB0aGUgbW9zdCByZWNlbnRseQ0KIyBn ZW5lcmF0ZWQgb25lIGlzIGtlcHQgYXMgYSBmaWxlKSwgcmVzdWx0aW5nIGlu IHNvbWV0aW1lcyBsZXNzIHN1cnByaXNpbmcNCiMgYmVoYXZpb3VyIHdoZW4g cmV0dXJuaW5nIHRvIHN1Y2ggYSBwYWdlIHZpYSBISVNUT1JZIG9yIFBSRVZf RE9DIGZ1bmN0aW9ucw0KIyAobW9zdCB1c2VycyB3aWxsIG5vdCBlbmNvdW50 ZXIgYW5kIG5vdGljZSB0aGlzIGRpZmZlcmVuY2UpLg0KIw0KI1JFVVNFX1RF TVBGSUxFUzpGQUxTRQ0KDQoNCi5oMiBMWU5YX0hPU1RfTkFNRQ0KIyBJZiBM WU5YX0hPU1RfTkFNRSBpcyBkZWZpbmVkIGhlcmUgb3IgaW4gdXNlcmRlZnMu aCwgaXQgd2lsbCBiZQ0KIyB0cmVhdGVkIGFzIGFuIGFsaWFzIGZvciB0aGUg bG9jYWwgaG9zdCBuYW1lIGluIGNoZWNrcyBmb3IgVVJMcyBvbg0KIyB0aGUg bG9jYWwgaG9zdCAoZS5nLiwgd2hlbiB0aGUgLWxvY2FsaG9zdCBzd2l0Y2gg aXMgc2V0KSwgYW5kIHRoaXMNCiMgaG9zdCBuYW1lLCAibG9jYWxob3N0Iiwg YW5kIEhUSG9zdE5hbWUgKHRoZSBmdWxseSBxdWFsaWZpZWQgZG9tYWluDQoj IG5hbWUgb2YgdGhlIHN5c3RlbSBvbiB3aGljaCBMeW54IGlzIHJ1bm5pbmcp IHdpbGwgYWxsIGJlIHBhc3NlZCBhcw0KIyBsb2NhbC4gIEEgZGlmZmVyZW50 IGRlZmluaXRpb24gaGVyZSB3aWxsIG92ZXJyaWRlIHRoYXQgaW4gdXNlcmRl ZnMuaC4NCiMNCiNMWU5YX0hPU1RfTkFNRTp3d3cuY2MudWthbnMuZWR1DQoN Cg0KLmgyIExPQ0FMSE9TVF9BTElBUw0KIyBsb2NhbGhvc3QgYWxpYXNlcw0K IyBBbnkgTE9DQUxIT1NUX0FMSUFTIGRlZmluaXRpb25zIGFsc28gd2lsbCBi ZSBhY2NlcHRlZCBhcyBsb2NhbCB3aGVuDQojIHRoZSAtbG9jYWxob3N0IHN3 aXRjaCBpcyBzZXQuICBUaGVzZSBuZWVkIG5vdCBhY3R1YWxseSBiZSBsb2Nh bCwgaS5lLiwNCiMgaW4gY29udHJhc3QgdG8gTFlOWF9IT1NUX05BTUUsIHlv dSBjYW4gZGVmaW5lIHRoZW0gdG8gdHJ1c3RlZCBob3N0cyBhdA0KIyBvdGhl ciBJbnRlcm5ldCBzaXRlcy4NCiMNCi5leCAyDQojTE9DQUxIT1NUX0FMSUFT OmdvcGhlci5zZXJ2ZXIuZG9tYWluDQojTE9DQUxIT1NUX0FMSUFTOm5ld3Mu c2VydmVyLmRvbWFpbg0KDQoNCi5oMiBMT0NBTF9ET01BSU4NCiMgTE9DQUxf RE9NQUlOIGlzIHVzZWQgZm9yIGEgdGFpbCBtYXRjaCB3aXRoIHRoZSB1dF9o b3N0IGVsZW1lbnQgb2YNCiMgdGhlIHV0bXAgb3IgdXRtcHggc3RydWN0dXJl IG9uIHN5c3RlbXMgd2l0aCB1dG1wIGNhcGFiaWxpdGllcywgdG8NCiMgZGV0 ZXJtaW5lIGlmIGEgdXNlciBpcyBsb2NhbCB0byB5b3VyIGNhbXB1cyBvciBv cmdhbml6YXRpb24gd2hlbg0KIyBoYW5kbGluZyAtcmVzdHJpY3Rpb25zPWlu c2lkZV9mb28gb3Igb3V0c2lkZV9mb28gc2V0dGluZ3MgZm9yIGZ0cCwNCiMg bmV3cywgdGVsbmV0L3RuMzI3MCBhbmQgcmxvZ2luIFVSTHMuICBBbiAiaW5z aWRlIiB1c2VyIGlzIGFzc3VtZWQNCiMgaWYgeW91ciBzeXN0ZW0gZG9lcyBu b3QgaGF2ZSB1dG1wIGNhcGFiaWxpdGllcy4gIENIQU5HRSBUSElTIGhlcmUN CiMgaWYgaXQgd2FzIG5vdCBjaGFuZ2VkIGluIHVzZXJkZWZzLmggYXQgY29t cGlsYXRpb24gdGltZS4NCiMNCiNMT0NBTF9ET01BSU46dWthbnMuZWR1DQoN Cg0KLmgxIENoYXJhY3RlciBzZXRzDQoNCi5oMiBDSEFSQUNURVJfU0VUDQoj IENIQVJBQ1RFUl9TRVQgZGVmaW5lcyB0aGUgZGlzcGxheSBjaGFyYWN0ZXIg c2V0LCBpLmUuLCBhc3N1bWVkIHRvIGJlDQojIGluc3RhbGxlZCBvbiB0aGUg dXNlcidzIHRlcm1pbmFsLiAgSXQgZGV0ZXJtaW5lcyB3aGljaCBjaGFyYWN0 ZXJzIG9yIHN0cmluZ3MNCiMgd2lsbCBiZSB1c2VkIHRvIHJlcHJlc2VudCA4 LWJpdCBjaGFyYWN0ZXIgZW50aXRpZXMgd2l0aGluIEhUTUwuICBOZXcNCiMg Y2hhcmFjdGVyIHNldHMgbWF5IGJlIGRlZmluZWQgYXMgZXhwbGFpbmVkIGlu IHRoZSBSRUFETUUgZmlsZXMgb2YgdGhlDQojIHNyYy9jaHJ0cmFucyBkaXJl Y3RvcnkgaW4gdGhlIEx5bnggc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uLiAg Rm9yIEFzaWFuIChDSkspDQojIGNoYXJhY3RlciBzZXRzLCBpdCBhbHNvIGRl dGVybWluZXMgaG93IEthbmppIGNvZGUgd2lsbCBiZSBoYW5kbGVkLiAgVGhl DQojIGRlZmF1bHQgaXMgZGVmaW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBjYW4g YmUgY2hhbmdlZCBoZXJlIG9yIHZpYSB0aGUNCiMgJ28ncHRpb25zIG1lbnUu ICBUaGUgJ28ncHRpb25zIG1lbnUgc2V0dGluZyB3aWxsIGJlIHN0b3JlZCBp biB0aGUgdXNlcidzIFJDDQojIGZpbGUgd2hlbmV2ZXIgdGhvc2Ugc2V0dGlu Z3MgYXJlIHNhdmVkLCBhbmQgdGhlcmVhZnRlciB3aWxsIGJlIHVzZWQgYXMg dGhlDQojIGRlZmF1bHQuICBGb3IgTHlueCBhICJjaGFyYWN0ZXIgc2V0IiBo YXMgdHdvIG5hbWVzOiAgYSBNSU1FIG5hbWUgKGZvcg0KIyByZWNvZ25pemlu ZyBwcm9wZXJseSBsYWJlbGVkIGNoYXJzZXQgcGFyYW1ldGVycyBpbiBIVFRQ IGhlYWRlcnMgZXRjLiksIGFuZCBhDQojIGh1bWFuLXJlYWRhYmxlIHN0cmlu ZyBmb3IgdGhlICdPJ3B0aW9ucyBNZW51IChzbyB5b3UgbWF5IGZpbmQgaW5m byBhYm91dA0KIyBsYW5ndWFnZSBvciBncm91cCBvZiBsYW5ndWFnZXMgYmVz aWRlcyBNSU1FIG5hbWUpLiAgTm90IGFsbCAnaHVtYW4tcmVhZGFibGUnDQoj IG5hbWVzIGNvcnJlc3BvbmQgdG8gZXhhY3RseSBvbmUgdmFsaWQgTUlNRSBj aGFyc2V0IChleGFtcGxlIGlzICJDaGluZXNlIik7DQojIGluIHRoYXQgY2Fz ZSBhbiBhcHByb3ByaWF0ZSB2YWxpZCAoYW5kIG1vcmUgc3BlY2lmaWMpIE1J TUUgbmFtZSBzaG91bGQgYmUNCiMgdXNlZCB3aGVyZSByZXF1aXJlZC4gIFdl bGwta25vd24gc3lub255bXMgYXJlIGFsc28gcHJvY2Vzc2VkIGluIHRoZSBj b2RlLg0KIw0KIyBSYXcgKENKSykgbW9kZQ0KIw0KIyBMeW54IG5vcm1hbGx5 IHRyYW5zbGF0ZXMgY2hhcmFjdGVycyBmcm9tIGEgZG9jdW1lbnQncyBjaGFy c2V0IHRvIGRpc3BsYXkNCiMgY2hhcnNldCwgdXNpbmcgQVNTVU1FX0NIQVJT RVQgdmFsdWUgKHNlZSBiZWxvdykgaWYgdGhlIGRvY3VtZW50J3MgY2hhcnNl dA0KIyBpcyBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkuICBSYXcgKENKSykg bW9kZSBpcyBPRkYgZm9yIHRoaXMgY2FzZS4NCiMgV2hlbiB0aGUgZG9jdW1l bnQgY2hhcnNldCBpcyBzcGVjaWZpZWQgZXhwbGljaXRseSwgdGhhdCBjaGFy c2V0DQojIG92ZXJyaWRlcyBhbnkgYXNzdW1wdGlvbiBsaWtlIEFTU1VNRV9D SEFSU0VUIG9yIHJhdyAoQ0pLKSBtb2RlLg0KIw0KIyBGb3IgdGhlIEFzaWFu IChDSkspIGRpc3BsYXkgY2hhcmFjdGVyIHNldHMsIHRoZSBjb3JyZXNwb25k aW5nIGNoYXJzZXQgaXMNCiMgYXNzdW1lZCBpbiBkb2N1bWVudHMsIGkuZS4s IHJhdyAoQ0pLKSBtb2RlIGlzIE9OIGJ5IGRlZmF1bHQuICBJbiByYXcgQ0pL DQojIG1vZGUsIDgtYml0IGNoYXJhY3RlcnMgYXJlIG5vdCByZXZlcnNlIHRy YW5zbGF0ZWQgaW4gcmVsYXRpb24gdG8gdGhlIGVudGl0eQ0KIyBjb252ZXJz aW9uIGFycmF5cywgaS5lLiwgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBhcHBy b3ByaWF0ZSBmb3IgdGhlIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldC4gIFRo ZSBtb2RlIHNob3VsZCBiZSB0b2dnbGVkIE9GRiB3aGVuIGFuIEFzaWFuIChD SkspIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldCBpcyBzZWxlY3RlZCBidXQg dGhlIGRvY3VtZW50IGlzIG5vdCBDSksgYW5kIGl0cyBjaGFyc2V0IG5vdA0K IyBzcGVjaWZpZWQgZXhwbGljaXRseS4NCiMNCiMgUmF3IChDSkspIG1vZGUg bWF5IGJlIHRvZ2dsZWQgYnkgdXNlciB2aWEgJ0AnIChMWUtfUkFXX1RPR0dM RSkga2V5LA0KIyB0aGUgLXJhdyBjb21tYW5kIGxpbmUgc3dpdGNoIG9yIGZy b20gdGhlICdvJ3B0aW9ucyBtZW51Lg0KIw0KIyBSYXcgKENKSykgbW9kZSBl ZmZlY3RpdmVseSBjaGFuZ2VzIHRoZSBjaGFyc2V0IGFzc3VtcHRpb24gYWJv dXQgdW5sYWJlbGVkDQojIGRvY3VtZW50cy4gIFlvdSBjYW4gdG9nZ2xlIHJh dyBtb2RlIE9OIGlmIHlvdSBiZWxpZXZlIHRoZSBkb2N1bWVudCBoYXMgYQ0K IyBjaGFyc2V0IHdoaWNoIGRvZXMgY29ycmVzcG9uZCB0byB5b3VyIERpc3Bs YXkgQ2hhcmFjdGVyIFNldC4gIE9uIHRoZSBvdGhlcg0KIyBoYW5kLCBpZiB5 b3Ugc2V0IEFTU1VNRV9DSEFSU0VUIHRoZSBzYW1lIGFzIERpc3BsYXkgQ2hh cmFjdGVyIFNldCB5b3UgZ2V0IHJhdw0KIyBtb2RlIE9OIGJ5IGRlZmF1bHQg KGJ1dCB5b3UgZ2V0IGFzc3VtZV9jaGFyc2V0PWlzby04ODU5LTEgaWYgeW91 IHRyeSByYXcgbW9kZQ0KIyBPRkYgYWZ0ZXIgaXQpLg0KIw0KIyBOb3RlIHRo YXQgInJhdyIgZG9lcyBub3QgbWVhbiB0aGF0IGV2ZXJ5IGJ5dGUgd2lsbCBi ZSBwYXNzZWQgdG8gdGhlIHNjcmVlbi4NCiMgSFRNTCBjaGFyYWN0ZXIgZW50 aXRpZXMgbWF5IGdldCBleHBhbmRlZCBhbmQgdHJhbnNsYXRlZCwgaW5hcHBy b3ByaWF0ZQ0KIyBjb250cm9sIGNoYXJhY3RlcnMgZmlsdGVyZWQgb3V0LCBl dGMuICBUaGVyZSBpcyBhICJUcmFuc3BhcmVudCIgcHNldWRvDQojIGNoYXJh Y3RlciBzZXQgZm9yIG1vcmUgInJhd25lc3MiLg0KIw0KIyBTaW5jZSBMeW54 IG5vdyBzdXBwb3J0cyBhIHdpZGUgcmFuZ2Ugb2YgcGxhdGZvcm1zIGl0IG1h eSBiZSB1c2VmdWwgdG8gbm90ZQ0KIyB0aGUgY3BYWFggY29kZXBhZ2VzIHVz ZWQgYnkgSUJNIFBDIGNvbXBhdGlibGUgY29tcHV0ZXJzLCBhbmQgd2luZG93 cy14eHh4DQojIHVzZWQgYnkgbmF0aXZlIE1TLVdpbmRvd3MgYXBwcy4gIFdl IGFsc28gbm90ZSB0aGF0IGNwWFhYIHBhZ2VzIHJhcmVseSBhcmUNCiMgZm91 bmQgb24gSW50ZXJuZXQsIGJ1dCBhcmUgbW9zdGx5IGZvciBsb2NhbCBuZWVk cyBvbiBET1MuDQojDQojIFJlY29nbml6ZWQgY2hhcmFjdGVyIHNldHMgaW5j bHVkZToNCiMNCi5uZg0KIyAgICBzdHJpbmcgZm9yICdPJ3B0aW9ucyBNZW51 ICAgICAgICAgIE1JTUUgbmFtZQ0KIyAgICA9PT09PT09PT09PT09PT09PT09 PT09PT09PT0gICAgICAgID09PT09PT09PQ0KIyAgICA3IGJpdCBhcHByb3hp bWF0aW9ucyAoVVMtQVNDSUkpICAgIHVzLWFzY2lpDQojICAgIFdlc3Rlcm4g KElTTy04ODU5LTEpICAgICAgICAgICAgICAgaXNvLTg4NTktMQ0KIyAgICBX ZXN0ZXJuIChJU08tODg1OS0xNSkgICAgICAgICAgICAgIGlzby04ODU5LTE1 DQojICAgIFdlc3Rlcm4gKGNwODUwKSAgICAgICAgICAgICAgICAgICAgY3A4 NTANCiMgICAgV2VzdGVybiAod2luZG93cy0xMjUyKSAgICAgICAgICAgICB3 aW5kb3dzLTEyNTINCiMgICAgSUJNIFBDIFVTIGNvZGVwYWdlIChjcDQzNykg ICAgICAgICBjcDQzNw0KIyAgICBERUMgTXVsdGluYXRpb25hbCAgICAgICAg ICAgICAgICAgIGRlYy1tY3MNCiMgICAgTWFjaW50b3NoICg4IGJpdCkgICAg ICAgICAgICAgICAgICBtYWNpbnRvc2gNCiMgICAgTmVYVCBjaGFyYWN0ZXIg c2V0ICAgICAgICAgICAgICAgICBuZXh0DQojICAgIEhQIFJvbWFuOCAgICAg ICAgICAgICAgICAgICAgICAgICAgaHAtcm9tYW44DQojICAgIENoaW5lc2Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVjLWNuDQojICAgIEphcGFu ZXNlIChFVUMtSlApICAgICAgICAgICAgICAgICAgZXVjLWpwDQojICAgIEph cGFuZXNlIChTaGlmdF9KSVMpICAgICAgICAgICAgICAgc2hpZnRfamlzDQoj ICAgIEtvcmVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVjLWty DQojICAgIFRhaXBlaSAoQmlnNSkgICAgICAgICAgICAgICAgICAgICAgYmln NQ0KIyAgICBWaWV0bmFtZXNlIChWSVNDSUkpICAgICAgICAgICAgICAgIHZp c2NpaQ0KIyAgICBFYXN0ZXJuIEV1cm9wZWFuIChJU08tODg1OS0yKSAgICAg IGlzby04ODU5LTINCiMgICAgRWFzdGVybiBFdXJvcGVhbiAoY3A4NTIpICAg ICAgICAgICBjcDg1Mg0KIyAgICBFYXN0ZXJuIEV1cm9wZWFuICh3aW5kb3dz LTEyNTApICAgIHdpbmRvd3MtMTI1MA0KIyAgICBMYXRpbiAzIChJU08tODg1 OS0zKSAgICAgICAgICAgICAgIGlzby04ODU5LTMNCiMgICAgTGF0aW4gNCAo SVNPLTg4NTktNCkgICAgICAgICAgICAgICBpc28tODg1OS00DQojICAgIEJh bHRpYyBSaW0gKGNwNzc1KSAgICAgICAgICAgICAgICAgY3A3NzUNCiMgICAg QmFsdGljIFJpbSAod2luZG93cy0xMjU3KSAgICAgICAgICB3aW5kb3dzLTEy NTcNCiMgICAgQ3lyaWxsaWMgKElTTy04ODU5LTUpICAgICAgICAgICAgICBp c28tODg1OS01DQojICAgIEN5cmlsbGljIChjcDg2NikgICAgICAgICAgICAg ICAgICAgY3A4NjYNCiMgICAgQ3lyaWxsaWMgKHdpbmRvd3MtMTI1MSkgICAg ICAgICAgICB3aW5kb3dzLTEyNTENCiMgICAgQ3lyaWxsaWMgKEtPSTgtUikg ICAgICAgICAgICAgICAgICBrb2k4LXINCiMgICAgQXJhYmljIChJU08tODg1 OS02KSAgICAgICAgICAgICAgICBpc28tODg1OS02DQojICAgIEFyYWJpYyAo Y3A4NjQpICAgICAgICAgICAgICAgICAgICAgY3A4NjQNCiMgICAgQXJhYmlj ICh3aW5kb3dzLTEyNTYpICAgICAgICAgICAgICB3aW5kb3dzLTEyNTYNCiMg ICAgR3JlZWsgKElTTy04ODU5LTcpICAgICAgICAgICAgICAgICBpc28tODg1 OS03DQojICAgIEdyZWVrIChjcDczNykgICAgICAgICAgICAgICAgICAgICAg Y3A3MzcNCiMgICAgR3JlZWsyIChjcDg2OSkgICAgICAgICAgICAgICAgICAg ICBjcDg2OQ0KIyAgICBHcmVlayAod2luZG93cy0xMjUzKSAgICAgICAgICAg ICAgIHdpbmRvd3MtMTI1Mw0KIyAgICBIZWJyZXcgKElTTy04ODU5LTgpICAg ICAgICAgICAgICAgIGlzby04ODU5LTgNCiMgICAgSGVicmV3IChjcDg2Mikg ICAgICAgICAgICAgICAgICAgICBjcDg2Mg0KIyAgICBIZWJyZXcgKHdpbmRv d3MtMTI1NSkgICAgICAgICAgICAgIHdpbmRvd3MtMTI1NQ0KIyAgICBUdXJr aXNoIChJU08tODg1OS05KSAgICAgICAgICAgICAgIGlzby04ODU5LTkNCiMg ICAgSVNPLTg4NTktMTAgICAgICAgICAgICAgICAgICAgICAgICBpc28tODg1 OS0xMA0KIyAgICBVa3JhaW5pYW4gQ3lyaWxsaWMgKGNwODY2dSkgICAgICAg IGNwODY2dQ0KIyAgICBVa3JhaW5pYW4gQ3lyaWxsaWMgKEtPSTgtVSkgICAg ICAgIGtvaTgtdQ0KIyAgICBVTklDT0RFIChVVEYtOCkgICAgICAgICAgICAg ICAgICAgIHV0Zi04DQojICAgIFJGQyAxMzQ1IHcvbyBJbnRybyAgICAgICAg ICAgICAgICAgbW5lbW9uaWMrYXNjaWkrMA0KIyAgICBSRkMgMTM0NSBNbmVt b25pYyAgICAgICAgICAgICAgICAgIG1uZW1vbmljDQojICAgIFRyYW5zcGFy ZW50ICAgICAgICAgICAgICAgICAgICAgICAgeC10cmFuc3BhcmVudA0KLmZp DQojDQojIFRoZSB2YWx1ZSBzaG91bGQgYmUgdGhlIE1JTUUgbmFtZSBvZiBh IGNoYXJhY3RlciBzZXQgcmVjb2duaXplZCBieQ0KIyBMeW54IChjYXNlIGlu c2Vuc2l0aXZlKS4NCiMgRmluZCBSRkMgMTM0NSBhdCBodHRwOi8vd3d3Lmlj cy51Y2kuZWR1L3B1Yi9pZXRmL3VyaS9yZmMxMzQ1LnR4dCAuDQojDQojQ0hB UkFDVEVSX1NFVDppc28tODg1OS0xDQoNCg0KLmgyIEFTU1VNRV9DSEFSU0VU DQojIEFTU1VNRV9DSEFSU0VUIGNoYW5nZXMgdGhlIGhhbmRsaW5nIG9mIGRv Y3VtZW50cyB3aGljaCBkbyBub3QNCiMgZXhwbGljaXRseSBzcGVjaWZ5IGEg Y2hhcnNldC4gIE5vcm1hbGx5IEx5bnggYXNzdW1lcyB0aGF0IDgtYml0DQoj IGNoYXJhY3RlcnMgaW4gdGhvc2UgZG9jdW1lbnRzIGFyZSBlbmNvZGVkIGFj Y29yZGluZyB0byBpc28tODg1OS0xDQojICh0aGUgb2ZmaWNpYWwgZGVmYXVs dCBmb3IgdGhlIEhUVFAgcHJvdG9jb2wpLiAgV2hlbiBBU1NVTUVfQ0hBUlNF VA0KIyBpcyBkZWZpbmVkIGhlcmUgb3IgYnkgYW4gLWFzc3VtZV9jaGFyc2V0 IGNvbW1hbmQgbGluZSBmbGFnIGlzIGluIGVmZmVjdCwNCiMgTHlueCB3aWxs IHRyZWF0IGRvY3VtZW50cyBhcyBpZiB0aGV5IHdlcmUgZW5jb2RlZCBhY2Nv cmRpbmdseS4NCiMgU2VlIGFib3ZlIG9uIGhvdyB0aGlzIGludGVyYWN0cyB3 aXRoICJyYXcgbW9kZSIgYW5kIHRoZSBEaXNwbGF5DQojIENoYXJhY3RlciBT ZXQuDQojIEFTU1VNRV9DSEFSU0VUIGNhbiBhbHNvIGJlIGNoYW5nZWQgdmlh IHRoZSAnbydwdGlvbnMgbWVudSBidXQgd2lsbA0KIyBub3QgYmUgc2F2ZWQg YXMgcGVybWFuZW50IHZhbHVlIGluIHVzZXIncyAubHlueHJjIGZpbGUgdG8g YXZvaWQgbW9yZSBjaGFvcy4NCiMNCiNBU1NVTUVfQ0hBUlNFVDppc28tODg1 OS0xDQoNCg0KLmgyIEFTU1VNRURfRE9DX0NIQVJTRVRfQ0hPSUNFDQouaDIg RElTUExBWV9DSEFSU0VUX0NIT0lDRQ0KIyBJdCBpcyBwb3NzaWJsZSB0byBy ZWR1Y2UgdGhlIG51bWJlciBvZiBjaGFyc2V0IGNob2ljZXMgaW4gdGhlICdP J3B0aW9ucyBtZW51DQojIGZvciAiZGlzcGxheSBjaGFyc2V0IiBhbmQgImFz c3VtZWQgZG9jdW1lbnQgY2hhcnNldCIgZmllbGRzIHZpYQ0KIyBESVNQTEFZ X0NIQVJTRVRfQ0hPSUNFIGFuZCBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lD RSBzZXR0aW5ncyBjb3JyZXNwb25kaW5nbHkuDQojIEVhY2ggb2YgdGhlc2Ug c2V0dGluZ3MgY2FuIGJlIHVzZWQgc2V2ZXJhbCB0aW1lcyB0byBkZWZpbmUg dGhlIHNldCBvZiBwb3NzaWJsZQ0KIyBjaG9pY2VzIGZvciBjb3JyZXNwb25k aW5nIGZpZWxkLiBUaGUgc3ludGF4IGZvciB0aGUgdmFsdWVzIGlzDQojDQoj CXN0cmluZyB8IHByZWZpeCogfCAqDQojDQojIHdoZXJlDQojDQojCSdzdHJp bmcnIGlzIGVpdGhlciB0aGUgTUlNRSBuYW1lIG9mIGNoYXJzZXQgb3IgaXQn cyBmdWxsIG5hbWUgKGxpc3RlZA0KIwkJZWl0aGVyIGluIHRoZSBsZWZ0IG9y IGluIHRoZSByaWdodCBjb2x1bW4gb2YgdGFibGUgb2YNCiMJCXJlY29nbml6 ZWQgY2hhcnNldHMpLCBjYXNlLWluc2Vuc2l0aXZlIC0gZS5nLiAgJ0tvaTgt Uicgb3INCiMJCSdDeXJpbGxpYyAoS09JOC1SKScgKGJvdGggd2l0aG91dCBx dW90ZXMpLA0KIw0KIwkncHJlZml4JyBpcyBhbnkgc3RyaW5nLCBhbmQgc3Vj aCB2YWx1ZSB3aWxsIHNlbGVjdCBhbGwgY2hhcnNldHMgaGF2aW5nDQojCQl0 aGUgbmFtZSB3aXRoIHByZWZpeCBtYXRjaGluZyBnaXZlbiAoY2FzZSBpbnNl bnNpdGl2ZSksIGkuZS4sDQojCQlmb3IgdGhlIGNoYXJzZXRzIGxpc3RlZCBp biB0aGUgdGFibGUgb2YgcmVjb2duaXplZCBjaGFyc2V0cywNCiMNCi5leA0K IyBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRTpjeXJpbGxpYyoNCiMJCXdp bGwgYmUgZXF1YWwgdG8gc3BlY2lmeWluZw0KLmV4IDQNCiMgQVNTVU1FRF9E T0NfQ0hBUlNFVF9DSE9JQ0U6Y3A4NjYNCiMgQVNTVU1FRF9ET0NfQ0hBUlNF VF9DSE9JQ0U6d2luZG93cy0xMjUxDQojIEFTU1VNRURfRE9DX0NIQVJTRVRf Q0hPSUNFOmtvaTgtcg0KIyBBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRTpp c28tODg1OS01DQojCQlvciBsaW5lcyB3aXRoIGZ1bGwgbmFtZXMgb2YgY2hh cnNldHMuDQojDQojCWxpdGVyYWwgc3RyaW5nICcqJyAod2l0aG91dCBxdW90 ZXMpIHdpbGwgZW5hYmxlIGFsbCBjaGFyc2V0IGNob2ljZXMNCiMJCWluIGNv cnJlc3BvbmRpbmcgZmllbGQuICBUaGlzIGlzIHVzZWZ1bCBmb3Igb3ZlcnJp ZGluZyBzaXRlDQojCQlkZWZhdWx0cyBpbiBwcml2YXRlIHBpZWNlcyBvZiBs eW54LmNmZyBpbmNsdWRlZCB2aWEgSU5DTFVERQ0KIwkJZGlyZWN0aXZlLg0K Iw0KIyBEZWZhdWx0IHZhbHVlcyBmb3IgYm90aCBzZXR0aW5ncyBhcmUgJyon LCBidXQgYW55IG9jY3VycmVuY2Ugb2Ygc2V0dGluZ3MNCiMgd2l0aCB2YWx1 ZXMgdGhhdCBkZW5vdGUgYW55IGNoYXJzZXRzIHdpbGwgbWFrZSBvbmx5IGxp c3RlZCBjaG9pY2VzIGF2YWlsYWJsZQ0KIyBmb3IgY29ycmVzcG9uZGluZyBm aWVsZC4NCiNBU1NVTUVEX0RPQ19DSEFSU0VUX0NIT0lDRToqDQojRElTUExB WV9DSEFSU0VUX0NIT0lDRToqDQoNCg0KLmgyIEFTU1VNRV9MT0NBTF9DSEFS U0VUDQojIEFTU1VNRV9MT0NBTF9DSEFSU0VUIGlzIGxpa2UgQVNTVU1FX0NI QVJTRVQgYnV0IG9ubHkgYXBwbGllcyB0byBsb2NhbA0KIyBmaWxlcy4gIElm IG5vIHNldHRpbmcgaXMgZ2l2ZW4gaGVyZSBvciBieSBhbiAtYXNzdW1lX2xv Y2FsX2NoYXJzZXQNCiMgY29tbWFuZCBsaW5lIG9wdGlvbiwgdGhlIHZhbHVl IGZvciBBU1NVTUVfQ0hBUlNFVCBvciAtYXNzdW1lX2NoYXJzZXQNCiMgaXMg dXNlZC4gIEl0IHdvcmtzIGZvciBib3RoIHRleHQvcGxhaW4gYW5kIHRleHQv aHRtbCBmaWxlcy4NCiMgVGhpcyBvcHRpb24gd2lsbCBpZ25vcmUgInJhdyBt b2RlIiB0b2dnbGluZyB3aGVuIGxvY2FsIGZpbGVzIGFyZSB2aWV3ZWQNCiMg KGl0IGlzICJzdHJvbmdlciIgdGhhbiAiYXNzdW1lX2NoYXJzZXQiIG9yIHRo ZSBlZmZlY3RpdmUgY2hhbmdlDQojIG9mIHRoZSBjaGFyc2V0IGFzc3VtcHRp b24gY2F1c2VkIGJ5IGNoYW5naW5nICJyYXcgbW9kZSIpLA0KIyBzbyBvbmx5 IHVzZSB3aGVuIG5lY2Vzc2FyeS4NCiMNCiNBU1NVTUVfTE9DQUxfQ0hBUlNF VDppc28tODg1OS0xDQoNCg0KLmgyIFBSRVBFTkRfQ0hBUlNFVF9UT19TT1VS Q0UNCiMgUFJFUEVORF9DSEFSU0VUX1RPX1NPVVJDRTpUUlVFIHRlbGxzIEx5 bnggdG8gcHJlcGVuZCBhIE1FVEEgQ0hBUlNFVCBsaW5lDQojIHRvIHRleHQv aHRtbCBzb3VyY2UgZmlsZXMgd2hlbiB0aGV5IGFyZSByZXRyaWV2ZWQgZm9y ICdkJ293bmxvYWRpbmcNCiMgb3IgcGFzc2VkIHRvICdwJ3JpbnQgZnVuY3Rp b25zLCBzbyBIVFRQIGhlYWRlcnMgd2lsbCBub3QgYmUgbG9zdC4NCiMgVGhp cyBpcyBuZWNlc3NhcnkgZm9yIHJlc29sdmluZyBjaGFyc2V0IGZvciBsb2Nh bCBodG1sIGZpbGVzLA0KIyB3aGlsZSB0aGUgYXNzdW1lX2xvY2FsX2NoYXJz ZXQgaXMganVzdCBhbiBhc3N1bXB0aW9uLg0KIyBGb3IgdGhlICdkJ293bmxv YWQgb3B0aW9uLCBhIE1FVEEgQ0hBUlNFVCB3aWxsIGJlIGFkZGVkIG9ubHkg aWYgdGhlIEhUVFANCiMgY2hhcnNldCBpcyBwcmVzZW50LiAgVGhlIGNvbXBp bGF0aW9uIGRlZmF1bHQgaXMgVFJVRS4NCiMgSXQgaXMgZ2VuZXJhbGx5IGRl c2lyYWJsZSB0byBoYXZlIGNoYXJzZXQgaW5mb3JtYXRpb24gZm9yIGV2ZXJ5 IGxvY2FsDQojIGh0bWwgZmlsZSwgYnV0IE1FVEEgQ0hBUlNFVCBzdHJpbmcg cG90ZW50aWFsbHkgY291bGQgY2F1c2UNCiMgY29tcGF0aWJpbGl0eSBwcm9i bGVtcyB3aXRoIG90aGVyIGJyb3dzZXJzLCBzZWUgYWxzbyBQUkVQRU5EX0JB U0VfVE9fU09VUkNFLg0KIyBOb3RlIHRoYXQgdGhlIHByZXBlbmRpbmcgaXMg bm90IGRvbmUgZm9yIC1zb3VyY2UgZHVtcHMuDQojDQojUFJFUEVORF9DSEFS U0VUX1RPX1NPVVJDRTpUUlVFDQoNCg0KLmgyIE5DUl9JTl9CT09LTUFSS1MN CiMgTkNSX0lOX0JPT0tNQVJLUzpUUlVFIGFsbG93cyB5b3UgdG8gc2F2ZSA4 LWJpdCBjaGFyYWN0ZXJzIGluIGJvb2ttYXJrIHRpdGxlcw0KIyBpbiB0aGUg dW5pY29kZSBmb3JtYXQgKE5DUikuICBUaGlzIG1heSBiZSB1c2VmdWwgaWYg eW91IG5lZWQgdG8gc3dpdGNoDQojIGRpc3BsYXkgY2hhcnNldHMgZnJlcXVl bnRseS4gIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB5b3UgdXNlIEx5bnggb24g ZGlmZmVyZW50DQojIHBsYXRmb3JtcywgZS5nLiwgb24gVU5JWCBhbmQgZnJv bSBhIHJlbW90ZSBQQywgYW5kIHdhbnQgdG8ga2VlcCB0aGUgYm9va21hcmtz DQojIGZpbGUgcGVyc2lzdGVudC4NCiMgQW5vdGhlciBhc3BlY3QgaXMgY29t cGF0aWJpbGl0eTogIE5DUiBpcyBwYXJ0IG9mIEkxOE4gYW5kIEhUTUw0LjAN CiMgc3BlY2lmaWNhdGlvbnMgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggTHlu eCAyLjcuMiwgTmV0c2NhcGUgNC4wIGFuZCBNU0lFIDQuMC4NCiMgT2xkZXIg YnJvd3NlciB2ZXJzaW9ucyB3aWxsIGZhaWwgc28ga2VlcCBOQ1JfSU5fQk9P S01BUktTOkZBTFNFIGlmIHlvdQ0KIyBwbGFuIHRvIHVzZSB0aGVtLg0KIw0K I05DUl9JTl9CT09LTUFSS1M6RkFMU0UNCg0KDQouaDIgRk9SQ0VfOEJJVF9U T1VQUEVSDQojIEZPUkNFXzhCSVRfVE9VUFBFUiBvdmVycmlkZXMgbG9jYWxl IHNldHRpbmdzIGFuZCB1c2VzIGludGVybmFsIDgtYml0DQojIGNhc2UtY29u dmVyc2lvbiBtZWNoYW5pc20gZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNo ZXMgaW4gbm9uLUFTQ0lJIGRpc3BsYXkNCiMgY2hhcmFjdGVyIHNldHMuICBJ dCBpcyBGQUxTRSBieSBkZWZhdWx0IGFuZCBzaG91bGQgbm90IGJlIGNoYW5n ZWQgdW5sZXNzDQojIHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMgd2l0aCBjYXNl LWluc2Vuc2l0aXZlIHNlYXJjaGVzLg0KIw0KI0ZPUkNFXzhCSVRfVE9VUFBF UjpGQUxTRQ0KDQoNCi5oMiBPVVRHT0lOR19NQUlMX0NIQVJTRVQNCiMgV2hp bGUgTHlueCBzdXBwb3J0cyBkaWZmZXJlbnQgcGxhdGZvcm1zIGFuZCBkaXNw bGF5IGNoYXJhY3RlciBzZXRzDQojIHdlIG5lZWQgdG8gbGltaXQgdGhlIGNo YXJzZXQgaW4gb3V0Z29pbmcgbWFpbCB0byByZWR1Y2UNCiMgdHJvdWJsZSBm b3IgcmVtb3RlIHJlY2lwaWVudHMgd2hvIG1heSBub3QgcmVjb2duaXplIG91 ciBjaGFyc2V0Lg0KIyBZb3UgbWF5IHRyeSBVUy1BU0NJSSBhcyB0aGUgc2Fm ZXN0IHZhbHVlICg3IGJpdCksIGFueSBvdGhlciBNSU1FIG5hbWUsDQojIG9y IGxlYXZlIHRoaXMgZmllbGQgYmxhbmsgKGRlZmF1bHQpIHRvIHVzZSB0aGUg ZGlzcGxheSBjaGFyYWN0ZXIgc2V0Lg0KIyBDaGFyc2V0IHRyYW5zbGF0aW9u cyBjdXJyZW50bHkgYXJlIGltcGxlbWVudGVkIGZvciBtYWlsICJzdWJqZWN0 cz0gIiBvbmx5Lg0KIw0KI09VVEdPSU5HX01BSUxfQ0hBUlNFVDoNCg0KDQou aDIgQVNTVU1FX1VOUkVDX0NIQVJTRVQNCiMgSWYgTHlueCBlbmNvdW50ZXJz IGEgY2hhcnNldCBwYXJhbWV0ZXIgaXQgZG9lc24ndCByZWNvZ25pemUsIGl0 IHdpbGwNCiMgcmVwbGFjZSB0aGUgdmFsdWUgZ2l2ZW4gYnkgQVNTVU1FX1VO UkVDX0NIQVJTRVQgKG9yIGEgY29ycmVzcG9uZGluZw0KIyAtYXNzdW1lX3Vu cmVjX2NoYXJzZXQgY29tbWFuZCBsaW5lIG9wdGlvbikgZm9yIGl0LiAgVGhp cyBjYW4gYmUgdXNlZA0KIyB0byBkZWFsIHdpdGggY2hhcnNldHMgdW5rbm93 biB0byBMeW54LCBpZiB0aGV5IGFyZSAic3VmZmljaWVudGx5DQojIHNpbWls YXIiIHRvIG9uZSB0aGF0IEx5bnggZG9lcyBrbm93IGFib3V0LCBieSBmb3Jj aW5nIHRoZSBzYW1lDQojIHRyZWF0bWVudC4gIFRoZXJlIGlzIG5vIGRlZmF1 bHQsIGFuZCB5b3UgcHJvYmFibHkgc2hvdWxkIGxlYXZlIHRoaXMNCiMgdW5k ZWZpbmVkIHVubGVzcyBuZWNlc3NhcnkuDQojDQojQVNTVU1FX1VOUkVDX0NI QVJTRVQ6aXNvLTg4NTktMQ0KDQouaDIgUFJFRkVSUkVEX0xBTkdVQUdFDQoj IFBSRUZFUlJFRF9MQU5HVUFHRSBpcyB0aGUgbGFuZ3VhZ2UgaW4gTUlNRSBu b3RhdGlvbiAoZS5nLiwgImVuIiwNCiMgImZyIikgd2hpY2ggd2lsbCBiZSBp bmRpY2F0ZWQgYnkgTHlueCBpbiBpdHMgQWNjZXB0LUxhbmd1YWdlIGhlYWRl cnMNCiMgYXMgdGhlIHByZWZlcnJlZCBsYW5ndWFnZS4gIElmIGF2YWlsYWJs ZSwgdGhlIGRvY3VtZW50IHdpbGwgYmUNCiMgdHJhbnNtaXR0ZWQgaW4gdGhh dCBsYW5ndWFnZS4gIFVzZXJzIGNhbiBvdmVycmlkZSB0aGlzIHNldHRpbmcg dmlhDQojIHRoZSAnbydwdGlvbnMgbWVudSBhbmQgc2F2ZSB0aGF0IHByZWZl cmVuY2UgaW4gdGhlaXIgUkMgZmlsZS4NCiMgVGhpcyBtYXkgYmUgYSBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgaW4gZGVjcmVhc2luZyBw cmVmZXJlbmNlLg0KIw0KI1BSRUZFUlJFRF9MQU5HVUFHRTplbg0KDQoNCi5o MiBQUkVGRVJSRURfQ0hBUlNFVA0KIyBQUkVGRVJSRURfQ0hBUlNFVCBzcGVj aWZpZXMgdGhlIGNoYXJhY3RlciBzZXQgaW4gTUlNRSBub3RhdGlvbiAoZS5n LiwNCiMgIklTTy04ODU5LTIiLCAiSVNPLTg4NTktNSIpIHdoaWNoIEx5bngg d2lsbCBpbmRpY2F0ZSB5b3UgcHJlZmVyIGluDQojIHJlcXVlc3RzIHRvIGh0 dHAgc2VydmVycyB1c2luZyBhbiBBY2NlcHQtQ2hhcnNldHMgaGVhZGVyLiAg VXNlcnMgY2FuDQojIGNoYW5nZSBpdCB2aWEgdGhlICdvJ3B0aW9ucyBtZW51 IGFuZCBzYXZlIHRoYXQgcHJlZmVyZW5jZSBpbiB0aGVpciBSQyBmaWxlLg0K IyBUaGUgdmFsdWUgc2hvdWxkIE5PVCBpbmNsdWRlICJJU08tODg1OS0xIiBv ciAiVVMtQVNDSUkiLA0KIyBzaW5jZSB0aG9zZSB2YWx1ZXMgYXJlIGFsd2F5 cyBhc3N1bWVkIGJ5IGRlZmF1bHQuDQojIElmIGEgZmlsZSBpbiB0aGF0IGNo YXJhY3RlciBzZXQgaXMgYXZhaWxhYmxlLCB0aGUgc2VydmVyIHdpbGwgc2Vu ZCBpdC4NCiMgSWYgbm8gQWNjZXB0LUNoYXJzZXQgaGVhZGVyIGlzIHByZXNl bnQsIHRoZSBkZWZhdWx0IGlzIHRoYXQgYW55DQojIGNoYXJhY3RlciBzZXQg aXMgYWNjZXB0YWJsZS4gIElmIGFuIEFjY2VwdC1DaGFyc2V0IGhlYWRlciBp cyBwcmVzZW50LA0KIyBhbmQgaWYgdGhlIHNlcnZlciBjYW5ub3Qgc2VuZCBh IHJlc3BvbnNlIHdoaWNoIGlzIGFjY2VwdGFibGUNCiMgYWNjb3JkaW5nIHRv IHRoZSBBY2NlcHQtQ2hhcnNldCBoZWFkZXIsIHRoZW4gdGhlIHNlcnZlciBT SE9VTEQgc2VuZA0KIyBhbiBlcnJvciByZXNwb25zZSB3aXRoIHRoZSA0MDYg KG5vdCBhY2NlcHRhYmxlKSBzdGF0dXMgY29kZSwgdGhvdWdoDQojIHRoZSBz ZW5kaW5nIG9mIGFuIHVuYWNjZXB0YWJsZSByZXNwb25zZSBpcyBhbHNvIGFs bG93ZWQuICBTZWUgUkZDIDIwNjgNCiMgKGh0dHA6Ly93d3cuaWNzLnVjaS5l ZHUvcHViL2lldGYvdXJpL3JmYzIwNjgudHh0KS4NCiMNCiNQUkVGRVJSRURf Q0hBUlNFVDoNCg0KDQouaDEgSW50ZXJhY3Rpb24NCg0KLmgyIFVSTF9ET01B SU5fUFJFRklYRVMNCi5oMiBVUkxfRE9NQUlOX1NVRkZJWEVTDQojIFVSTF9E T01BSU5fUFJFRklYRVMgYW5kIFVSTF9ET01BSU5fU1VGRklYRVMgYXJlIHN0 cmluZ3Mgd2hpY2ggd2lsbCBiZQ0KIyBwcmVwZW5kZWQgKHRvZ2V0aGVyIHdp dGggYSBzY2hlbWU6Ly8pIGFuZCBhcHBlbmRlZCB0byB0aGUgZmlyc3QgZWxl bWVudA0KIyBvZiBjb21tYW5kIGxpbmUgb3IgJ2cnb3RvIGFyZ3VtZW50cyB3 aGljaCBhcmUgbm90IGNvbXBsZXRlIFVSTHMgYW5kDQojIGNhbm5vdCBiZSBv cGVuZWQgYXMgYSBsb2NhbCBmaWxlIChmaWxlOi8vbG9jYWxob3N0L3N0cmlu ZykuICBCb3RoDQojIGNhbiBiZSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMuICBF YWNoIHByZWZpeCBtdXN0IGVuZCB3aXRoIGEgZG90LCBlYWNoDQojIHN1ZmZp eCBtdXN0IGJlZ2luIHdpdGggYSBkb3QsIGFuZCBlaXRoZXIgbWF5IGNvbnRh aW4gb3RoZXIgZG90cyAoZS5nLiwNCiMgLmNvbS5qcCkuICBUaGUgZGVmYXVs dCBsaXN0cyBhcmUgZGVmaW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBjYW4gYmUN CiMgcmVwbGFjZWQgaGVyZS4gIEVhY2ggcHJlZml4IHdpbGwgYmUgdXNlZCB3 aXRoIGVhY2ggc3VmZml4LCBpbiBvcmRlciwNCiMgdW50aWwgYSB2YWxpZCBJ bnRlcm5ldCBob3N0IGlzIGNyZWF0ZWQsIGJhc2VkIG9uIGEgc3VjY2Vzc2Z1 bCBETlMNCiMgbG9va3VwIChlLmcuLCBmb28gd2lsbCBiZSB0ZXN0ZWQgYXMg d3d3LmZvby5jb20gYW5kIHRoZW4gd3d3LmZvby5lZHUNCiMgZXRjLikuICBU aGUgZmlyc3QgZWxlbWVudCBjYW4gaW5jbHVkZSBhIDpwb3J0IGFuZC9vciAv cGF0aCB3aGljaCB3aWxsDQojIGJlIHJlc3RvcmVkIHdpdGggdGhlIGV4cGFu ZGVkIGhvc3QgKGUuZy4sIHdmYnI6ODAwMi9kaXIvbHlueCB3aWxsDQojIGJl Y29tZSBodHRwOi8vd3d3LndmYnIuZWR1OjgwMDIvZGlyL2x5bngpLiAgVGhl IHByZWZpeGVzIHdpbGwgbm90IGJlDQojIHVzZWQgaWYgdGhlIGZpcnN0IGVs ZW1lbnQgZW5kcyBpbiBhIGRvdCAob3IgaGFzIGEgZG90IGJlZm9yZSB0aGUN CiMgOnBvcnQgb3IgL3BhdGgpLCBhbmQgc2ltaWxhcmx5IHRoZSBzdWZmaXhl cyB3aWxsIG5vdCBiZSB1c2VkIGlmIHRoZQ0KIyB0aGUgZmlyc3QgZWxlbWVu dCBiZWdpbnMgd2l0aCBhIGRvdCAoZS5nLiwgLm55dS5lZHUgd2lsbCBiZWNv bWUNCiMgaHR0cDovL3d3dy5ueXUuZWR1IHdpdGhvdXQgdGVzdGluZyB3d3cu bnl1LmNvbSkuICBMeW54IHdpbGwgdHJ5IHRvDQojIGd1ZXNzIHRoZSBzY2hl bWUgYmFzZWQgb24gdGhlIGZpcnN0IGZpZWxkIG9mIHRoZSBleHBhbmRlZCBo b3N0IG5hbWUsDQojIGFuZCB1c2UgImh0dHA6Ly8iIGFzIHRoZSBkZWZhdWx0 IChlLmcuLCBnb3BoZXIud2Zici5lZHUgb3IgZ29waGVyLndmYnIuDQojIHdp bGwgYmUgbWFkZSBnb3BoZXI6Ly9nb3BoZXIud2Zici5lZHUpLg0KIw0KI1VS TF9ET01BSU5fUFJFRklYRVM6d3d3Lg0KI1VSTF9ET01BSU5fU1VGRklYRVM6 LmNvbSwuZWR1LC5uZXQsLm9yZw0KDQoNCi5oMiBGT1JNU19PUFRJT05TDQoj IFRvZ2dsZSB3aGV0aGVyIHRoZSBPcHRpb25zIE1lbnUgaXMga2V5LWJhc2Vk IG9yIGZvcm0tYmFzZWQ7DQojIHRoZSBrZXktYmFzZWQgdmVyc2lvbiBpcyBh dmFpbGFibGUgb25seSBpZiBzcGVjaWZpZWQgYXQgY29tcGlsZSB0aW1lLg0K I0ZPUk1TX09QVElPTlM6VFJVRQ0KDQoNCi5oMiBQQVJUSUFMDQojIERpc3Bs YXkgcGFydGlhbCBwYWdlcyB3aGlsZSBkb3dubG9hZGluZw0KI1BBUlRJQUw6 VFJVRQ0KDQoNCi5oMiBQQVJUSUFMX1RIUkVTDQojIFNldCB0aGUgdGhyZXNo b2xkICMgb2YgbGluZXMgTHlueCBtdXN0IHJlbmRlciBiZWZvcmUgaXQNCiMg cmVkcmF3cyB0aGUgc2NyZWVuIGluIFBBUlRJQUwgbW9kZS4gIEFueXRoaW5n IDwgMCBpbXBsaWVzDQojIHVzZSBvZiB0aGUgc2NyZWVuIHNpemUuDQojUEFS VElBTF9USFJFUzotMQ0KDQoNCi5oMiBTSE9XX0tCX1JBVEUNCiMgV2hpbGUg Z2V0dGluZyBsYXJnZSBmaWxlcywgTHlueCBzaG93cyB0aGUgYXBwcm94aW1h dGUgcmF0ZSBvZiB0cmFuc2Zlci4NCiMgU2V0IHRoaXMgdG8gY2hhbmdlIHRo ZSB1bml0cyBzaG93bjoNCiMgVFJVRSBvciBLQiBmb3IgS0Ivc2VjLg0KIyBG QUxTRSBvciBCWVRFUyBmb3IgYnl0ZXMvc2VjLg0KIyBLQixFVEEgdG8gc2hv dyBLQi9zZWMgd2l0aCBlc3RpbWF0ZWQgY29tcGxldGlvbiB0aW1lLg0KIyBC WVRFUyxFVEEgdG8gc2hvdyBCWVRFUy9zZWMgd2l0aCBlc3RpbWF0ZWQgY29t cGxldGlvbiB0aW1lLg0KIyBOT05FIHRvIGRpc2FibGUgdGhlIGRpc3BsYXkg b2YgdHJhbnNmZXIgcmF0ZSBhbHRvZ2V0aGVyLg0KI1NIT1dfS0JfUkFURTpU UlVFDQoNCg0KLmgxIFRpbWVvdXRzDQoNCi5oMiBJTkZPU0VDUw0KLmgyIE1F U1NBR0VTRUNTDQouaDIgQUxFUlRTRUNTDQojIFRoZSBmb2xsb3dpbmcgdGhy ZWUgZGVmaW5pdGlvbnMgc2V0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmb3IN CiMgcGF1c2VzIGZvbGxvd2luZyBzdGF0dXNsaW5lIG1lc3NhZ2VzIHRoYXQg d291bGQgb3RoZXJ3aXNlIGJlDQojIHJlcGxhY2VkIGltbWVkaWF0ZWx5LCBh bmQgYXJlIG1vcmUgaW1wb3J0YW50IHRoYW4gdGhlIHVucGF1c2VkDQojIHBy b2dyZXNzIG1lc3NhZ2VzLiAgVGhvc2Ugc2V0IGJ5IElORk9TRUNTIGFyZSBh bHNvIGJhc2ljYWxseQ0KIyBwcm9ncmVzcyBtZXNzYWdlcyAoZS5nLiwgdGhh dCBhIHByb21wdGVkIGlucHV0IGhhcyBiZWVuIGNhbmNlbGVkKQ0KIyBhbmQg c2hvdWxkIGhhdmUgdGhlIHNob3J0ZXN0IHBhdXNlLiAgVGhvc2Ugc2V0IGJ5 IE1FU1NBR0VTRUNTIGFyZQ0KIyBpbmZvcm1hdGlvbmFsIChlLmcuLCB0aGF0 IGEgZnVuY3Rpb24gaXMgZGlzYWJsZWQpIGFuZCBzaG91bGQgaGF2ZQ0KIyBh IHBhdXNlIG9mIGludGVybWVkaWF0ZSBkdXJhdGlvbi4gIFRob3NlIHNldCBi eSBBTEVSVFNFQ1MgdHlwaWNhbGx5DQojIHJlcG9ydCBhIHNlcmlvdXMgcHJv YmxlbSBhbmQgc2hvdWxkIGJlIHBhdXNlZCBsb25nIGVub3VnaCB0byByZWFk DQojIHdoZW5ldmVyIHRoZXkgYXBwZWFyICh0eXBpY2FsbHkgdW5leHBlY3Rl ZGx5KS4gIFRoZSBkZWZhdWx0IHZhbHVlcw0KIyBhcmUgZGVmaW5lZCBpbiB1 c2VyZGVmcy5oLCBhbmQgY2FuIGJlIG1vZGlmaWVkIGhlcmUgc2hvdWxkIGxv bmdlcg0KIyBwYXVzZXMgYmUgZGVzaXJlZCBmb3IgYnJhaWxsZS1iYXNlZCBh Y2Nlc3MgdG8gTHlueC4NCiMNCiNJTkZPU0VDUzoxDQojTUVTU0FHRVNFQ1M6 Mg0KI0FMRVJUU0VDUzozDQoNCg0KLmgxIEFwcGVhcmFuY2UNCiMgVGhlc2Ug c2V0dGluZ3MgY2F0ZWdvcnkgY29udHJvbCB0aGUgYXBwZWFyYW5jZSBvZiBM eW54J3Mgc2NyZWVuIGFuZCB0aGUgd2F5DQojIEx5bnggcmVuZGVycyBzb21l IHRhZ3MuDQoNCi5oMiBVU0VfU0VMRUNUX1BPUFVQUw0KIyBJZiBVU0VfU0VM RUNUX1BPUFVQUyBpcyBzZXQgRkFMU0UsIEx5bnggd2lsbCBwcmVzZW50IGEg dmVydGljYWwgbGlzdCBvZg0KIyByYWRpbyBidXR0b25zIGZvciB0aGUgT1BU SU9OcyBpbiBTRUxFQ1QgYmxvY2tzIHdoaWNoIGxhY2sgdGhlIE1VTFRJUExF DQojIGF0dHJpYnV0ZSwgaW5zdGVhZCBvZiB1c2luZyBhIHBvcHVwIG1lbnUu ICBOb3RlIHRoYXQgaWYgdGhlIE1VTFRJUExFDQojIGF0dHJpYnV0ZSBpcyBw cmVzZW50IGluIHRoZSBTRUxFQ1Qgc3RhcnQgdGFnLCBMeW54IGFsd2F5cyB3 aWxsIGNyZWF0ZSBhDQojIHZlcnRpY2FsIGxpc3Qgb2YgY2hlY2tib3hlcyBm b3IgdGhlIE9QVElPTnMuDQojIFRoZSBkZWZhdWx0IGRlZmluZWQgaGVyZSBv ciBpbiB1c2VyZGVmcy5oIGNhbiBiZSBjaGFuZ2VkIHZpYSB0aGUgJ28ncHRp b25zDQojIG1lbnUgYW5kIHNhdmVkIGluIHRoZSBSQyBmaWxlLCBhbmQgYWx3 YXlzIGNhbiBiZSB0b2dnbGVkIHZpYSB0aGUgLXBvcHVwDQojIGNvbW1hbmQg bGluZSBzd2l0Y2guDQojDQojVVNFX1NFTEVDVF9QT1BVUFM6VFJVRQ0KDQoN Ci5oMiBTSE9XX0NVUlNPUg0KIyBTSE9XX0NVUlNPUiBjb250cm9scyB3aGV0 aGVyIG9yIG5vdCB0aGUgY3Vyc29yIGlzIGhpZGRlbiBvciBhcHBlYXJzDQoj IG92ZXIgdGhlIGN1cnJlbnQgbGluayBpbiBkb2N1bWVudHMgb3IgdGhlIGN1 cnJlbnQgb3B0aW9uIGluIHBvcHVwcy4NCiMgU2hvd2luZyB0aGUgY3Vyc29y IGlzIGhhbmR5IGlmIHlvdSBhcmUgYSBzaWdodGVkIHVzZXIgd2l0aCBhIHBv b3INCiMgdGVybWluYWwgdGhhdCBjYW4ndCBkbyBib2xkIGFuZCByZXZlcnNl IHZpZGVvIGF0IHRoZSBzYW1lIHRpbWUgb3INCiMgYXQgYWxsLiAgSXQgYWxz byBjYW4gYmUgdXNlZnVsIHRvIGJsaW5kIHVzZXJzLCBhcyBhbiBhbHRlcm5h dGl2ZQ0KIyBvciBzdXBwbGVtZW50IHRvIHNldHRpbmcgTElOS1NfQU5EX0ZJ RUxEU19BUkVfTlVNQkVSRUQgb3INCiMgTElOS1NfQVJFX05VTUJFUkVELg0K IyBUaGUgZGVmYXVsdCBkZWZpbmVkIGhlcmUgb3IgaW4gdXNlcmRlZnMuaCBj YW4gYmUgY2hhbmdlZCB2aWEgdGhlDQojICdvJ3B0aW9ucyBtZW51IGFuZCBz YXZlZCBpbiB0aGUgUkMgZmlsZSwgYW5kIGFsd2F5cyBjYW4gYmUgdG9nZ2xl ZA0KIyB2aWEgdGhlIC1zaG93X2N1cnNvciBjb21tYW5kIGxpbmUgc3dpdGNo Lg0KIw0KI1NIT1dfQ1VSU09SOkZBTFNFDQoNCg0KLmgyIEJPTERfSEVBREVS Uw0KIyBJZiBCT0xEX0hFQURFUlMgaXMgc2V0IHRvIFRSVUUgdGhlIEhUX0JP TEQgZGVmYXVsdCBzdHlsZSB3aWxsIGJlIGFjdGVkDQojIHVwb24gZm9yIDxI MT4gdGhyb3VnaCA8SDY+IGhlYWRlcnMuICBUaGUgY29tcGlsYXRpb24gZGVm YXVsdCBpcyBGQUxTRQ0KIyAob25seSB0aGUgaW5kZW50YXRpb24gc3R5bGVz IGFyZSBhY3RlZCB1cG9uLCBidXQgc2VlIEJPTERfSDEsIGJlbG93KS4NCiMg T24gVW5peCwgY29tcGlsYXRpb24gd2l0aCAtRFVOREVSTElORV9MSU5LUyBh bHNvIHdpbGwgYXBwbHkgdG8gdGhlDQojIEhUX0JPTEQgc3R5bGUgZm9yIGhl YWRlcnMgd2hlbiBCT0xEX0hFQURFUlMgaXMgVFJVRS4NCiMNCiNCT0xEX0hF QURFUlM6RkFMU0UNCg0KDQouaDIgQk9MRF9IMQ0KIyBJZiBCT0xEX0gxIGlz IHNldCB0byBUUlVFIHRoZSBIVF9CT0xEIGRlZmF1bHQgc3R5bGUgd2lsbCBi ZSBhY3RlZA0KIyB1cG9uIGZvciA8SDE+IGhlYWRlcnMgZXZlbiBpZiBCT0xE X0hFQURFUlMgaXMgRkFMU0UuICBUaGUgY29tcGlsYXRpb24NCiMgZGVmYXVs dCBpcyBGQUxTRS4gIE9uIFVuaXgsIGNvbXBpbGF0aW9uIHdpdGggLURVTkRF UkxJTkVfTElOS1MgYWxzbw0KIyB3aWxsIGFwcGx5IHRvIHRoZSBIVF9CT0xE IHN0eWxlIGZvciBoZWFkZXJzIHdoZW4gQk9MRF9IMSBpcyBUUlVFLg0KIw0K I0JPTERfSDE6RkFMU0UNCg0KDQouaDIgQk9MRF9OQU1FX0FOQ0hPUlMNCiMg SWYgQk9MRF9OQU1FX0FOQ0hPUlMgaXMgc2V0IHRvIFRSVUUgdGhlIGNvbnRl bnQgb2YgYW5jaG9ycyB3aXRob3V0DQojIGFuIEhSRUYgYXR0cmlidXRlLCAo aS5lLiwgYW5jaG9ycyB3aXRoIGEgTkFNRSBvciBJRCBhdHRyaWJ1dGUpIHdp bGwNCiMgaGF2ZSB0aGUgSFRfQk9MRCBkZWZhdWx0IHN0eWxlLiAgVGhlIGNv bXBpbGF0aW9uIGRlZmF1bHQgaXMgRkFMU0UuDQojIE9uIFVuaXgsIGNvbXBp bGF0aW9uIHdpdGggLURVTkRFUkxJTkVfTElOS1MgYWxzbyB3aWxsIGFwcGx5 IHRvIHRoZQ0KIyBIVF9CT0xEIHN0eWxlIGZvciBOQU1FIChJRCkgYW5jaG9y cyB3aGVuIEJPTERfTkFNRV9BTkNIT1JTIGlzIFRSVUUuDQojDQojQk9MRF9O QU1FX0FOQ0hPUlM6RkFMU0UNCg0KDQouaDEgSW50ZXJuYWwgQmVoYXZpb3IN Cg0KLmgyIERFRkFVTFRfQ0FDSEVfU0laRQ0KLmgyIERFRkFVTFRfVklSVFVB TF9NRU1PUllfU0laRQ0KIyBUaGUgREVGQVVMVF9DQUNIRV9TSVpFIHNwZWNp ZmllcyB0aGUgbnVtYmVyIG9mIFdXVyBkb2N1bWVudHMgdG8gYmUNCiMgY2Fj aGVkIGluIG1lbW9yeSBhdCBvbmUgdGltZS4NCiMNCiMgVGhpcyBzby1jYWxs ZWQgY2FjaGUgc2l6ZSAoYWN0dWFsbHksIG51bWJlcikgaXMgZGVmaW5lZCBp biB1c2VyZGVmcy5oIGFuZA0KIyBtYXkgYmUgbW9kaWZpZWQgaGVyZSBhbmQv b3Igd2l0aCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IC1jYWNoZT1OVU1C RVINCiMgVGhlIG1pbmltdW0gYWxsb3dlZCB2YWx1ZSBpcyAyLCBmb3IgdGhl IGN1cnJlbnQgZG9jdW1lbnQgYW5kIGF0IGxlYXN0IG9uZQ0KIyB0byBmZXRj aCwgYW5kIHRoZXJlIGlzIG5vIGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9m IGNhY2hlZCBkb2N1bWVudHMuDQojIE9uIFVuaXgsIGFuZCBWTVMgbm90IGNv bXBpbGVkIHdpdGggVkFYQywgd2hlbmV2ZXIgdGhlIG51bWJlciBpcyBleGNl ZWRlZA0KIyB0aGUgbGVhc3QgcmVjZW50bHkgZGlzcGxheWVkIGRvY3VtZW50 IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIG1lbW9yeS4NCiMNCiMgT24gVk1TIGNv bXBpbGVkIHdpdGggVkFYQywgdGhlIERFRkFVTFRfVklSVFVBTF9NRU1PUllf U0laRSBzcGVjaWZpZXMgdGhlDQojIGFtb3VudCAoYnl0ZXMpIG9mIHZpcnR1 YWwgbWVtb3J5IHRoYXQgY2FuIGJlIGFsbG9jYXRlZCBhbmQgbm90IHlldCBi ZSBmcmVlZA0KIyBiZWZvcmUgcHJldmlvdXMgZG9jdW1lbnRzIGFyZSByZW1v dmVkIGZyb20gbWVtb3J5LiAgSWYgdGhlIHZhbHVlcyBmb3IgYm90aA0KIyB0 aGUgREVGQVVMVF9DQUNIRV9TSVpFIGFuZCBERUZBVUxUX1ZJUlRVQUxfTUVN T1JZX1NJWkUgYXJlIGV4Y2VlZGVkLCB0aGVuDQojIHRoZSBsZWFzdCByZWNl bnRseSBkaXNwbGF5ZWQgZG9jdW1lbnRzIHdpbGwgYmUgZnJlZWQgdW50aWwg b25lIG9yIHRoZSBvdGhlcg0KIyB2YWx1ZSBpcyBubyBsb25nZXIgZXhjZWVk ZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkIGluIHVzZXJkZWZz LmguDQojDQojIFRoZSBVbml4IGFuZCBWTVMgKGJ1dCBub3QgVkFYQykgaW1w bGVtZW50YXRpb25zIHVzZSB0aGUgQyBsaWJyYXJ5IG1hbGxvYydzDQojIGFu ZCBjYWxsb2MncyBmb3IgbWVtb3J5IGFsbG9jYXRpb24sIGJ1dCBwcm9jZWR1 cmVzIGZvciB0YWtpbmcgdGhlIGFjdHVhbA0KIyBhbW91bnQgb2YgY2FjaGUg aW50byBhY2NvdW50IHN0aWxsIG5lZWQgdG8gYmUgZGV2ZWxvcGVkLiAgVGhl eSB1c2Ugb25seQ0KIyB0aGUgREVGQVVMVF9DQUNIRV9TSVpFIHZhbHVlLCBh bmQgdGhhdCBzcGVjaWZpZXMgdGhlIGFic29sdXRlIG1heGltdW0NCiMgbnVt YmVyIG9mIGRvY3VtZW50cyB0byBjYWNoZSAocmF0aGVyIHRoYW4gdGhlIG1h eGltdW0gbnVtYmVyIG9ubHkgaWYNCiMgREVGQVVMVF9WSVJUVUFMX01FTU9S WV9TSVpFIGhhcyBiZWVuIGV4Y2VlZGVkLCBhcyB3aXRoIFZBWEMvVkFYKS4N CiMNCiNERUZBVUxUX0NBQ0hFX1NJWkU6MTANCiNERUZBVUxUX1ZJUlRVQUxf TUVNT1JZX1NJWkU6NTEyMDAwDQoNCg0KLmgyIFNPVVJDRV9DQUNIRQ0KIyBT T1VSQ0VfQ0FDSEUgc2V0cyB0aGUgc291cmNlIGNhY2hpbmcgYmVoYXZpb3Ig Zm9yIEx5bng6DQojIEZJTEUgY2F1c2VzIEx5bnggdG8ga2VlcCBhIHRlbXBv cmFyeSBmaWxlIGZvciBlYWNoIGNhY2hlZCBkb2N1bWVudA0KIyAgIGNvbnRh aW5pbmcgdGhlIEhUTUwgc291cmNlIG9mIHRoZSBkb2N1bWVudCwgd2hpY2gg aXQgdXNlcyB0byByZWdlbmVyYXRlDQojICAgdGhlIGRvY3VtZW50IHdoZW4g Y2VydGFpbiBzZXR0aW5ncyBhcmUgY2hhbmdlZCAoZm9yIGluc3RhbmNlLA0K IyAgIGhpc3RvcmljYWwgdnMuIG1pbmltYWwgdnMuIHZhbGlkIGNvbW1lbnQg cGFyc2luZykgaW5zdGVhZCBvZiByZWxvYWRpbmcNCiMgICB0aGUgc291cmNl IGZyb20gdGhlIG5ldHdvcmsuDQojIE1FTU9SWSBpcyBsaWtlIEZJTEUsIGV4 Y2VwdCB0aGUgZG9jdW1lbnQgc291cmNlIGlzIGtlcHQgaW4gbWVtb3J5LiAg WW91DQojICAgbWF5IHdpc2ggdG8gYWRqdXN0IERFRkFVTFRfQ0FDSEVfU0la RSBhbmQgREVGQVVMVF9WSVJUVUFMX01FTU9SWV9TSVpFDQojICAgYWNjb3Jk aW5nbHkuDQojIE5PTkUgaXMgdGhlIGRlZmF1bHQ7IHRoZSBkb2N1bWVudCBz b3VyY2UgaXMgbm90IGNhY2hlZCwgYW5kIGlzIHJlbG9hZGVkDQojICAgZnJv bSB0aGUgbmV0d29yayB3aGVuIG5lZWRlZC4NCiMNCiNTT1VSQ0VfQ0FDSEU6 Tk9ORQ0KDQoNCi5oMiBTT1VSQ0VfQ0FDSEVfRk9SX0FCT1JURUQNCiMgVGhp cyBzZXR0aW5nIGNvbnRyb2xzIHdoYXQgd2lsbCBoYXBwZW4gd2l0aCBjYWNo ZWQgc291cmNlIGZvciB0aGUgZG9jdW1lbnQNCiMgYmVpbmcgZmV0Y2hlZCBm cm9tIHRoZSBuZXQgaWYgZmV0Y2hpbmcgd2FzIGFib3J0ZWQgKGVpdGhlciB1 c2VyIHByZXNzZWQNCiMgJ3onIG9yIG5ldHdvcmsgd2VudCBkb3duKS4gSWYg c2V0IHRvIEtFRVAsIHRoZSBzb3VyY2UgZmV0Y2hlZCBzbyBmYXIgd2lsbA0K IyBiZSBwcmVzZXJ2ZWQgKGFuZCB1c2VkIGFzIGNhY2hlKSwgaWYgc2V0IHRv IERST1AgbHlueCB3aWxsIGRyb3AgdGhlDQojIHNvdXJjZSBjYWNoZSBmb3Ig dGhhdCBkb2N1bWVudCAoaS5lLiBvbmx5IGNvbXBsZXRlbHkgZG93bmxvYWRl ZCBkb2N1bWVudHMNCiMgd2lsbCBiZSBjYWNoZWQgaW4gdGhhdCBjYXNlKS4N CiNTT1VSQ0VfQ0FDSEVfRk9SX0FCT1JURUQ6RFJPUA0KDQouaDIgQUxXQVlT X1JFU1VCTUlUX1BPU1RTDQojIElmIEFMV0FZU19SRVNVQk1JVF9QT1NUUyBp cyBzZXQgVFJVRSwgTHlueCBhbHdheXMgd2lsbCByZXN1Ym1pdCBmb3Jtcw0K IyB3aXRoIG1ldGhvZCBQT1NULCBkdW1waW5nIGFueSBjYWNoZSBmcm9tIGEg cHJldmlvdXMgc3VibWlzc2lvbiBvZiB0aGUNCiMgZm9ybSwgaW5jbHVkaW5n IHdoZW4gdGhlIGRvY3VtZW50IHJldHVybmVkIGJ5IHRoYXQgZm9ybSBpcyBz b3VnaHQgd2l0aA0KIyB0aGUgUFJFVl9ET0MgY29tbWFuZCBvciB2aWEgdGhl IGhpc3RvcnkgbGlzdC4gIEx5bnggYWx3YXlzIHJlc3VibWl0cw0KIyBmb3Jt cyB3aXRoIG1ldGhvZCBQT1NUIHdoZW4gYSBzdWJtaXQgYnV0dG9uIG9yIGEg c3VibWl0dGluZyB0ZXh0IGlucHV0DQojIGlzIGFjdGl2YXRlZCwgYnV0IG5v cm1hbGx5IHJldHJpZXZlcyB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBkb2N1 bWVudA0KIyBpZiBpdCBoYWQgbGlua3Mgd2hpY2ggeW91IGFjdGl2YXRlZCwg YW5kIHRoZW4gZ28gYmFjayB3aXRoIHRoZSBQUkVWX0RPQw0KIyBjb21tYW5k IG9yIHZpYSB0aGUgaGlzdG9yeSBsaXN0Lg0KIw0KIyBUaGUgZGVmYXVsdCBk ZWZpbmVkIGhlcmUgb3IgaW4gdXNlcmRlZnMuaCBjYW4gYmUgdG9nZ2xlZCB2 aWENCiMgdGhlIC1yZXN1Ym1pdF9mb3JtcyBjb21tYW5kIGxpbmUgc3dpdGNo Lg0KIw0KI0FMV0FZU19SRVNVQk1JVF9QT1NUUzpGQUxTRQ0KDQoNCi5oMSBI VE1MIFBhcnNpbmcNCg0KLmgyIE5PX0lTTUFQX0lGX1VTRU1BUA0KIyBJZiBO T19JU01BUF9JRl9VU0VNQVAgaXMgc2V0IFRSVUUsIEx5bnggd2lsbCBub3Qg aW5jbHVkZSBhIGxpbmsgdG8gdGhlDQojIHNlcnZlci1zaWRlIGltYWdlIG1h cCBpZiBib3RoIGEgc2VydmVyLXNpZGUgYW5kIGNsaWVudC1zaWRlIG1hcCBm b3IgdGhlDQojIHNhbWUgaW1hZ2UgaXMgaW5kaWNhdGVkIGluIHRoZSBIVE1M IG1hcmt1cC4gIFRoZSBjb21waWxhdGlvbiBkZWZhdWx0IGlzDQojIEZBTFNF LCBzdWNoIHRoYXQgYSBsaW5rIHdpdGggIltJU01BUF0iIGFzIHRoZSBsaW5r IG5hbWUsIGZvbGxvd2VkIGJ5IGENCiMgaHlwaGVuLCB3aWxsIGJlIHByZXBl bmRlZCB0byB0aGUgQUxUIHN0cmluZyBvciAiW1VTRU1BUF0iIHBzZXVkby1B TFQgZm9yDQojIGFjY2Vzc2luZyBMeW54J3MgdGV4dC1iYXNlZCByZW5kaXRp b24gb2YgdGhlIGNsaWVudC1zaWRlIG1hcCAoYmFzZWQgb24NCiMgdGhlIGNv bnRlbnQgb2YgdGhlIGFzc29jaWF0ZWQgTUFQIGVsZW1lbnQpLiAgSWYgdGhl ICJbSVNNQVBdIiBsaW5rIGlzDQojIGFjdGl2YXRlZCwgTHlueCB3aWxsIHNl bmQgYSAwLDAgY29vcmRpbmF0ZSBwYWlyIHRvIHRoZSBzZXJ2ZXIsIHdoaWNo DQojIEx5bngtZnJpZW5kbHkgc2l0ZXMgY2FuIG1hcCB0byBhIGZvci10ZXh0 LWNsaWVudCBkb2N1bWVudCwgaG9tb2xvZ291cw0KIyB0byB3aGF0IGlzIGlu dGVuZGVkIGZvciB0aGUgY29udGVudCBvZiBhIEZJRyBlbGVtZW50Lg0KIw0K IyBUaGUgY29tcGlsYXRpb24gZGVmYXVsdCwgb3IgZGVmYXVsdCBkZWZpbmVk IGhlcmUsIGNhbiBiZSB0b2dnbGVkIHZpYQ0KIyB0aGUgIi1pc21hcCIgY29t bWFuZCBsaW5lIHN3aXRjaC4NCiMNCiNOT19JU01BUF9JRl9VU0VNQVA6RkFM U0UNCg0KDQouaDIgU0VFS19GUkFHX01BUF9JTl9DVVINCiMgSWYgU0VFS19G UkFHX01BUF9JTl9DVVIgaXMgc2V0IEZBTFNFLCB0aGVuIFVTRU1BUCBhdHRy aWJ1dGUgdmFsdWVzDQojIChpbiBJTUcgb3IgT0JKRUNUIHRhZ3MpIGNvbnNp c3Rpbmcgb2Ygb25seSBhIGZyYWdtZW50IChVU0VNQVA9IiNmb28iKQ0KIyB3 aWxsIGJlIHJlc29sdmVkIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBk b2N1bWVudCdzIGJhc2UsIHdoaWNoDQojIG1pZ2h0IG5vdCBiZSB0aGUgc2Ft ZSBhcyB0aGUgY3VycmVudCBkb2N1bWVudCdzIFVSTC4NCiMgVGhlIGNvbXBp bGF0aW9uIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBjdXJyZW50IGRvY3VtZW50 J3MgVVJMIGluIGFsbA0KIyBjYXNlcyAoaS5lLiwgYXNzdW1lIHRoZSBNQVAg aXMgcHJlc2VudCBiZWxvdywgaWYgaXQgd2Fzbid0IHByZXNlbnQNCiMgYWJv dmUgdGhlIHBvaW50IGluIHRoZSBIVE1MIHN0cmVhbSB3aGVyZSB0aGUgVVNF TUFQIGF0dHJpYnV0ZSB3YXMNCiMgZGV0ZWN0ZWQpLiAgTHlueCdzIHByZXNl bnQgInNpbmdsZSBwYXNzIiByZW5kZXJpbmcgZW5naW5lIHByZWNsdWRlcw0K IyBjaGVja2luZyBiZWxvdyBiZWZvcmUgbWFraW5nIHRoZSBkZWNpc2lvbiBv biBob3cgdG8gcmVzb2x2ZSBhIFVTRU1BUA0KIyByZWZlcmVuY2UgY29uc2lz dGluZyBzb2xlbHkgb2YgYSBmcmFnbWVudC4NCiMNCiNTRUVLX0ZSQUdfTUFQ X0lOX0NVUjpUUlVFDQoNCg0KLmgyIFNFRUtfRlJBR19BUkVBX0lOX0NVUg0K IyBJZiBTRUVLX0ZSQUdfQVJFQV9JTl9DVVIgaXMgc2V0IEZBTFNFLCB0aGVu IEhSRUYgYXR0cmlidXRlIHZhbHVlcw0KIyBpbiBBUkVBIHRhZ3MgY29uc2lz dGluZyBvZiBvbmx5IGEgZnJhZ21lbnQgKEhSRUY9IiNmb28iKSB3aWxsIGJl DQojIHJlc29sdmVkIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBkb2N1 bWVudCdzIGJhc2UsIHdoaWNoIG1pZ2h0DQojIG5vdCBiZSB0aGUgc2FtZSBh cyB0aGUgY3VycmVudCBkb2N1bWVudCdzIFVSTC4gIFRoZSBjb21waWxhdGlv bg0KIyBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgY3VycmVudCBkb2N1bWVudCdz IFVSTCwgYXMgaXMgZG9uZSBmb3IgdGhlDQojIEhSRUYgYXR0cmlidXRlIHZh bHVlcyBvZiBBbmNob3JzIGFuZCBMSU5LcyB0aGF0IGNvbnNpc3Qgc29sZWx5 IG9mDQojIGEgZnJhZ21lbnQuDQojDQojU0VFS19GUkFHX0FSRUFfSU5fQ1VS OlRSVUUNCg0KDQouaDEgQ0dJIHNjcmlwdHMNCiMgVGhlc2Ugc2V0dGluZ3Mg Y29udHJvbCBMeW54J3MgYWJpbGl0eSB0byBleGVjdXRlIHZhcmlvdXMgdHlw ZXMgb2Ygc2NyaXB0cy4NCg0KLmgyIExPQ0FMX0VYRUNVVElPTl9MSU5LU19B TFdBWVNfT04NCi5oMiBMT0NBTF9FWEVDVVRJT05fTElOS1NfT05fQlVUX05P VF9SRU1PVEUNCiMgTG9jYWwgZXhlY3V0aW9uIGxpbmtzIGFuZCBzY3JpcHRz IGFyZSBieSBkZWZhdWx0IGNvbXBsZXRlbHkgZGlzYWJsZWQsDQojIHVubGVz cyBhIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSB1c2VyZGVmcy5oIGZpbGUgdG8g ZW5hYmxlIHRoZW0gb3INCiMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgdXNl ZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbnMNCiMgKC0tZW5hYmxl LWV4ZWMtbGlua3MgYW5kIC0tZW5hYmxlLWV4ZWMtc2NyaXB0cykuDQojIFNl ZSB0aGUgTHlueCBzb3VyY2UgY29kZSBkaXN0cmlidXRpb24gYW5kIHRoZSB1 c2VyZGVmcy5oDQojIGZpbGUgZm9yIG1vcmUgZGV0YWlsIG9uIGVuYWJsaW5n IGV4ZWN1dGlvbiBsaW5rcyBhbmQgc2NyaXB0cy4NCiMNCiMgSWYgeW91IGhh dmUgZW5hYmxlZCBleGVjdXRpb24gbGlua3Mgb3Igc2NyaXB0cyB0aGUgZm9s bG93aW5nDQojIHR3byB2YXJpYWJsZXMgY29udHJvbCBMeW54J3MgYWN0aW9u IHdoZW4gYW4gZXhlY3V0aW9uIGxpbmsNCiMgb3Igc2NyaXB0IGlzIGVuY291 bnRlcmVkLg0KIw0KIyBJZiBMT0NBTF9FWEVDVVRJT05fTElOS1NfQUxXQVlT X09OIGlzIHNldCB0byBUUlVFIGFueSBleGVjdXRpb24NCiMgbGluayBvciBz Y3JpcHQgd2lsbCBiZSBleGVjdXRlZCBubyBtYXR0ZXIgd2hlcmUgaXQgY2Ft ZSBmcm9tLg0KIyBUaGlzIGlzIEVYVFJFTUVMWSBkYW5nZXJvdXMuICBTaW5j ZSBMeW54IGNhbiBhY2Nlc3MgZmlsZXMgZnJvbQ0KIyBhbnl3aGVyZSBpbiB0 aGUgd29ybGQsIHlvdSBtYXkgZW5jb3VudGVyIGxpbmtzIG9yIHNjcmlwdHMg dGhhdA0KIyB3aWxsIGNhdXNlIGRhbWFnZSBvciBjb21wcm9taXNlIHRoZSBz ZWN1cml0eSBvZiB5b3VyIHN5c3RlbS4NCiMNCiMgSWYgTE9DQUxfRVhFQ1VU SU9OX0xJTktTX09OX0JVVF9OT1RfUkVNT1RFIGlzIHNldCB0byBUUlVFIG9u bHkNCiMgbGlua3Mgb3Igc2NyaXB0cyB0aGF0IHJlc2lkZSBvbiB0aGUgbG9j YWwgbWFjaGluZSBhbmQgYXJlDQojIHJlZmVyZW5jZWQgd2l0aCBhIFVSTCBi ZWdpbm5pbmcgd2l0aCAiZmlsZTovL2xvY2FsaG9zdC8iIG9yIG1lZXQNCiMg VFJVU1RFRF9FWEVDIG9yIEFMV0FZU19UUlVTVEVEX0VYRUMgcnVsZXMgKHNl ZSBiZWxvdykgd2lsbCBiZQ0KIyBleGVjdXRlZC4gIFRoaXMgaXMgbXVjaCBs ZXNzIGRhbmdlcm91cyB0aGFuIGVuYWJsaW5nIGFsbCBleGVjdXRpb24NCiMg bGlua3MsIGJ1dCBjYW4gc3RpbGwgYmUgZGFuZ2Vyb3VzLg0KIw0KI0xPQ0FM X0VYRUNVVElPTl9MSU5LU19BTFdBWVNfT046RkFMU0UNCiNMT0NBTF9FWEVD VVRJT05fTElOS1NfT05fQlVUX05PVF9SRU1PVEU6RkFMU0UNCg0KDQouaDIg VFJVU1RFRF9FWEVDDQojIElmIExPQ0FMX0VYRUNVVElPTl9MSU5LX09OX0JV VF9OT1RfUkVNT1RFIGlzIFRSVUUsIGFuZCBubyBUUlVTVEVEX0VYRUMNCiMg cnVsZSBpcyBkZWZpbmVkLCBpdCBkZWZhdWx0cyB0byAiZmlsZTovL2xvY2Fs aG9zdC8iIGFuZCBhbnkgbHlueGV4ZWMNCiMgb3IgbHlueHByb2cgY29tbWFu ZCB3aWxsIGJlIHBlcm1pdHRlZCBpZiBpdCB3YXMgcmVmZXJlbmNlZCBmcm9t IHdpdGhpbg0KIyBhIGRvY3VtZW50IHdob3NlIFVSTCBiZWdpbnMgd2l0aCB0 aGF0IHN0cmluZy4gIElmIHlvdSB3aXNoIHRvIHJlc3RyaWN0IHRoZQ0KIyBy ZWZlcmVuY2luZyBVUkxzIGZ1cnRoZXIsIHlvdSBjYW4gZXh0ZW5kIHRoZSBz dHJpbmcgdG8gaW5jbHVkZSBhIHRydXN0ZWQNCiMgcGF0aC4gIFlvdSBhbHNv IGNhbiBzcGVjaWZ5IGEgdHJ1c3RlZCBkaXJlY3RvcnkgZm9yIGh0dHAgVVJM cywgd2hpY2ggd2lsbA0KIyB0aGVuIGJlIHRyZWF0ZWQgYXMgaWYgdGhleSB3 ZXJlIGxvY2FsIHJhdGhlciB0aGFuIHJlbW90ZS4gIEZvciBleGFtcGxlOg0K Iw0KIwlUUlVTVEVEX0VYRUM6ZmlsZTovL2xvY2FsaG9zdC90cnVzdGVkLw0K IwlUUlVTVEVEX0VYRUM6aHR0cDovL3d3dy53ZmJyLmVkdS90cnVzdGVkLw0K Iw0KIyBJZiB5b3UgYWxzbyB3aXNoIHRvIHJlc3RyaWN0IHRoZSBjb21tYW5k cyB3aGljaCBjYW4gYmUgZXhlY3V0ZWQsIGNyZWF0ZQ0KIyBhIHNlcmllcyBv ZiBydWxlcyB3aXRoIHRoZSBwYXRoIChVbml4KSBvciBjb21tYW5kIG5hbWUg KFZNUykgZm9sbG93aW5nDQojIHRoZSBzdHJpbmcsIHNlcGFyYXRlZCBieSBh IHRhYi4gIEZvciBleGFtcGxlOg0KIw0KIyBVbml4Og0KIyA9PT09DQojCVRS VVNURURfRVhFQzpmaWxlOi8vbG9jYWxob3N0Lzx0YWI+L2Jpbi9jcA0KIwlU UlVTVEVEX0VYRUM6ZmlsZTovL2xvY2FsaG9zdC88dGFiPi9iaW4vcm0NCiMg Vk1TOg0KIyA9PT0NCiMJVFJVU1RFRF9FWEVDOmZpbGU6Ly9sb2NhbGhvc3Qv PHRhYj5jb3B5DQojCVRSVVNURURfRVhFQzpmaWxlOi8vbG9jYWxob3N0Lzx0 YWI+ZGVsZXRlDQojDQojIE9uY2UgeW91IHNwZWNpZnkgYSBUUlVTVEVEX0VY RUMgcmVmZXJlbmNpbmcgc3RyaW5nLCB0aGUgZGVmYXVsdCBpcw0KIyByZXBs YWNlZCwgYW5kIGFsbCB0aGUgcmVmZXJlbmNpbmcgc3RyaW5ncyB5b3UgZGVz aXJlIG11c3QgYmUgc3BlY2lmaWVkDQojIGFzIGEgc2VyaWVzLiAgU2ltaWxh cmx5LCBpZiB5b3UgYXNzb2NpYXRlIGEgY29tbWFuZCB3aXRoIHRoZSByZWZl cmVuY2luZw0KIyBzdHJpbmcsIHlvdSBtdXN0IHNwZWNpZnkgYWxsIG9mIHRo ZSBhbGxvd2FibGUgY29tbWFuZHMgYXMgYSBzZXJpZXMgb2YNCiMgVFJVU1RF RF9FWEVDIHJ1bGVzIGZvciB0aGF0IHN0cmluZy4gIElmIHlvdSBzcGVjaWZ5 IEFMV0FZU19UUlVTVEVEX0VYRUMNCiMgcnVsZXMgYmVsb3csIHlvdSBuZWVk IG5vdCByZXBlYXQgdGhlbSBhcyBUUlVTVEVEX0VYRUMgcnVsZXMuDQojDQoj IElmIEVYRUNfTElOS1MgYW5kIEpVTVBGSUxFIGhhdmUgYmVlbiBkZWZpbmVk LCBhbnkgbHlueGV4ZWMgb3IgbHlueHByb2cNCiMgVVJMcyBpbiB0aGF0IGZp bGUgd2lsbCBiZSBwZXJtaXR0ZWQsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgc2V0 dGluZ3MuICBJZg0KIyB5b3UgYWxzbyBzZXQgTE9DQUxfRVhFQ1VUSU9OX0xJ TktTX09OX0JVVF9OT1RfUkVNT1RFOlRSVUUgYW5kIGEgc2luZ2xlDQojIFRS VVNURURfRVhFQyBydWxlIHRoYXQgd2lsbCBhbHdheXMgZmFpbCAoZS5nLiwg Im5vbmUiKSwgdGhlbiAqT05MWSogdGhlDQojIGx5bnhleGVjIG9yIGx5bnhw cm9nIFVSTHMgaW4gSlVNUEZJTEUgKGFuZCBhbnkgQUxXQVlTX1RSVVNURURf RVhFQyBydWxlcywNCiMgc2VlIGJlbG93KSB3aWxsIGJlIGFsbG93ZWQuICBO b3RlLCBob3dldmVyLCB0aGF0IGlmIEx5bnggd2FzIGNvbXBpbGVkIHdpdGgN CiMgQ0FOX0FOT05ZTU9VU19KVU1QIHNldCB0byBGQUxTRSAoZGVmYXVsdCBp cyBUUlVFKSwgb3IgLXJlc3RyaWN0aW9ucz1qdW1wDQojIGlzIGluY2x1ZGVk IHdpdGggdGhlIC1hbm9ueW1vdXMgc3dpdGNoIGF0IHJ1biB0aW1lLCB0aGVu IHVzZXJzIG9mIGFuDQojIGFub255bW91cyBhY2NvdW50IHdpbGwgbm90IGJl IGFibGUgdG8gYWNjZXNzIHRoZSBqdW1wcyBmaWxlIG9yIGVudGVyDQojICdq J3VtcCBzaG9ydGN1dHMsIGFuZCB0aGlzIHNlbGVjdGl2ZSBleGVjdXRpb24g ZmVhdHVyZSB3aWxsIGJlIG92ZXJyaWRkZW4NCiMgYXMgd2VsbCAoaS5lLiwg dGhleSB3aWxsIG9ubHkgYmUgYWJsZSB0byBhY2Nlc3MgbHlueGV4ZWMgb3Ig bHlueHByb2cNCiMgVVJMcyB3aGljaCBtZWV0IGFueSBBTFdBWVNfVFJVU1RF RF9FWEVDIHJ1bGVzKS4NCiMNCiNUUlVTVEVEX0VYRUM6bm9uZQ0KDQoNCi5o MiBBTFdBWVNfVFJVU1RFRF9FWEVDDQojIElmIEVYRUNfTElOS1Mgd2FzIGRl ZmluZWQsIGFueSBseW54ZXhlYyBvciBseW54cHJvZyBVUkwgY2FuIGJlIG1h ZGUNCiMgYWx3YXlzIGVuYWJsZWQgYnkgYW4gQUxXQVlTX1RSVVNURURfRVhF QyBydWxlIGZvciBpdC4gIFRoaXMgaXMgdXNlZnVsIGZvcg0KIyBhbm9ueW1v dXMgYWNjb3VudHMgaW4gd2hpY2ggeW91IGhhdmUgZGlzYWJsZWQgZXhlY3V0 aW9uIGxpbmtzIGdlbmVyYWxseSwNCiMgYW5kIG1heSBhbHNvIGhhdmUgZGlz YWJsZWQganVtcHMgZmlsZSBsaW5rcywgYnV0IHN0aWxsIHdhbnQgdG8gYWxs b3cNCiMgZXhlY3V0aW9uIG9mIHBhcnRpY3VsYXIgdXRpbGl0eSBzY3JpcHRz IG9yIHByb2dyYW1zLiAgVGhlIGZvcm1hdCBpcw0KIyBsaWtlIHRoYXQgZm9y IFRSVVNURURfRVhFQy4gIEZvciBleGFtcGxlOg0KIw0KIyBVbml4Og0KIyA9 PT09DQojICAgQUxXQVlTX1RSVVNURURfRVhFQzpmaWxlOi8vbG9jYWxob3N0 Lzx0YWI+L3Vzci9sb2NhbC9raW5ldGljL2Jpbi91c2VydGltZQ0KIyAgIEFM V0FZU19UUlVTVEVEX0VYRUM6aHR0cDovL3d3dy5tb3JlLm5ldC88dGFiPi91 c3IvbG9jYWwva2luZXRpYy9iaW4vd2hvLnNoDQojIFZNUzoNCiMgPT09DQoj ICAgQUxXQVlTX1RSVVNURURfRVhFQzpmaWxlOi8vbG9jYWxob3N0Lzx0YWI+ dXNlcnRpbWUNCiMgICBBTFdBWVNfVFJVU1RFRF9FWEVDOmh0dHA6Ly93d3cu bW9yZS5uZXQvPHRhYj5zaG93IHVzZXJzDQojDQojIFRoZSBkZWZhdWx0IEFM V0FZU19UUlVTVEVEX0VYRUMgcnVsZSBpcyAibm9uZSIuDQojDQojQUxXQVlT X1RSVVNURURfRVhFQzpub25lDQoNCg0KLmgyIFRSVVNURURfTFlOWENHSQ0K IyBVbml4Og0KIyA9PT09PQ0KIyBUUlVTVEVEX0xZTlhDR0kgcnVsZXMgZGVm aW5lIHRoZSBwZXJtaXR0ZWQgc291cmNlcyBhbmQvb3IgcGF0aHMgZm9yDQoj IGx5bnhjZ2kgbGlua3MgKGlmIExZTlhDR0lfTElOS1MgaXMgZGVmaW5lZCBp biB1c2VyZGVmcy5oKS4gIFRoZSBmb3JtYXQNCiMgaXMgdGhlIHNhbWUgYXMg Zm9yIFRSVVNURURfRVhFQyBydWxlcyAoc2VlIGFib3ZlKSwgYnV0IG5vIGRl ZmF1bHRzIGFyZQ0KIyBkZWZpbmVkLCBpLmUuLCBpZiBubyBUUlVTVEVEX0xZ TlhDR0kgcnVsZXMgYXJlIGRlZmluZWQgaGVyZSwgYW55IHNvdXJjZQ0KIyBh bmQgcGF0aCBmb3IgbHlueGNnaSBsaW5rcyB3aWxsIGJlIHBlcm1pdHRlZC4g IEV4YW1wbGUgcnVsZXM6DQojDQojCVRSVVNURURfTFlOWENHSTpmaWxlOi8v bG9jYWxob3N0Lw0KIyAJVFJVU1RFRF9MWU5YQ0dJOjx0YWI+L3Vzci9sb2Nh bC9ldGMvaHR0cGQvY2dpLWJpbi8NCiMgCVRSVVNURURfTFlOWENHSTpmaWxl Oi8vbG9jYWxob3N0Lzx0YWI+L3Vzci9sb2NhbC93d3cvY2dpLWJpbi8NCiMN CiMgVk1TOg0KIyA9PT09DQojIERvIG5vdCBkZWZpbmUgdGhpcy4NCiMNCiNU UlVTVEVEX0xZTlhDR0k6bm9uZQ0KDQoNCi5oMiBMWU5YQ0dJX0VOVklST05N RU5UDQojIFVuaXg6DQojID09PT09DQojIExZTlhDR0lfRU5WSVJPTk1FTlQg YWRkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkDQojIGVu dmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBsaXN0IG9mIGVudmlyb25tZW50 IHZhcmlhYmxlcyBwYXNzZWQgb24gdG8gdGhlDQojIGx5bnhjZ2kgc2NyaXB0 LiAgVXNlZnVsIHZhcmlhYmxlcyBhcmUgSE9NRSwgVVNFUiwgZXRjLi4uICBJ ZiBwcm94aWVzDQojIGFyZSBpbiB1c2UsIGFuZCB0aGUgc2NyaXB0IGludm9r ZXMgYW5vdGhlciBjb3B5IG9mIGx5bnggKG9yIGEgcHJvZ3JhbSBsaWtlDQoj IHdnZXQpIGluIGEgc3Vic2lkaWFyeSByb2xlLCBpdCBjYW4gYmUgdXNlZnVs IHRvIGFkZCBodHRwX3Byb3h5IGFuZCBvdGhlcg0KIyAqX3Byb3h5IHZhcmlh Ymxlcy4NCiMNCiMgVk1TOg0KIyA9PT09DQojIERvIG5vdCBkZWZpbmUgdGhp cy4NCiMNCiNMWU5YQ0dJX0VOVklST05NRU5UOg0KDQoNCi5oMiBMWU5YQ0dJ X0RPQ1VNRU5UX1JPT1QNCiMgVW5peDoNCiMgPT09PT0NCiMgTFlOWENHSV9E T0NVTUVOVF9ST09UIGlzIHRoZSB2YWx1ZSBvZiBET0NVTUVOVF9ST09UIHRo YXQgd2lsbCBiZSBwYXNzZWQNCiMgdG8gbHlueGNnaSBzY3JpcHRzLiAgSWYg c2V0IGFuZCB0aGUgVVJMIGhhcyBQQVRIX0lORk8gZGF0YSwgdGhlbg0KIyBQ QVRIX1RSQU5TTEFURUQgd2lsbCBhbHNvIGJlIGdlbmVyYXRlZC4gIEV4YW1w bGVzOg0KIwlMWU5YQ0dJX0RPQ1VNRU5UX1JPT1Q6L3Vzci9sb2NhbC9ldGMv aHR0cGQvaHRkb2NzDQojCUxZTlhDR0lfRE9DVU1FTlRfUk9PVDovZGF0YS9o dGRvY3MvDQojDQojIFZNUzoNCiMgPT09PQ0KIyBEbyBub3QgZGVmaW5lIHRo aXMuDQojDQojTFlOWENHSV9ET0NVTUVOVF9ST09UOg0KDQoNCi5oMSBDb29r aWVzDQoNCi5oMiBGT1JDRV9TU0xfQ09PS0lFU19TRUNVUkUNCiMgSWYgRk9S Q0VfU1NMX0NPT0tJRVNfU0VDVVJFIGlzIHNldCB0byBUUlVFLCB0aGVuIFNT TCBlbmNyeXB0ZWQgY29va2llcw0KIyByZWNlaXZlZCBmcm9tIGh0dHBzIHNl cnZlcnMgbmV2ZXIgd2lsbCBiZSBzZW50IHVuZW5jcnlwdGVkIHRvIGh0dHAN CiMgc2VydmVycy4gIFRoZSBjb21waWxhdGlvbiBkZWZhdWx0IGlzIHRvIGlt cG9zZSB0aGlzIGJsb2NrIG9ubHkgaWYgdGhlDQojIGh0dHBzIHNlcnZlciBp bmNsdWRlZCBhIHNlY3VyZSBhdHRyaWJ1dGUgZm9yIHRoZSBjb29raWUuICBU aGUgbm9ybWFsDQojIGRlZmF1bHQgb3IgdGhhdCBkZWZpbmVkIGhlcmUgY2Fu IGJlIHRvZ2dsZWQgdmlhIHRoZSAtZm9yY2Vfc2VjdXJlDQojIGNvbW1hbmQg bGluZSBzd2l0Y2guDQojDQojRk9SQ0VfU1NMX0NPT0tJRVNfU0VDVVJFOkZB TFNFDQoNCg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQoNCi5oMiBNQUlMX1NZ U1RFTV9FUlJPUl9MT0dHSU5HDQojICBNQUlMX1NZU1RFTV9FUlJPUl9MT0dH SU5HIHdpbGwgc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIG93bmVyIG9mDQojICB0 aGUgaW5mb3JtYXRpb24sIG9yIEFMRVJUTUFJTCBpZiB0aGVyZSBpcyBubyBv d25lciwgZXZlcnkgdGltZQ0KIyAgdGhhdCBhIGRvY3VtZW50IGNhbm5vdCBi ZSBhY2Nlc3NlZCENCiMNCiMgIE5PVEU6ICBUaGlzIGNhbiBnZW5lcmF0ZSBB IExPVCBvZiBtYWlsLCBiZSB3YXJuZWQuDQojDQojTUFJTF9TWVNURU1fRVJS T1JfTE9HR0lORzpGQUxTRQ0KDQoNCi5oMiBDSEVDS01BSUwNCiMgSWYgQ0hF Q0tNQUlMIGlzIHNldCB0byBUUlVFLCB0aGUgdXNlciB3aWxsIGJlIGluZm9y bWVkICh2aWEgYSBzdGF0dXNsaW5lDQojIG1lc3NhZ2UpIGFib3V0IHRoZSBl eGlzdGVuY2Ugb2YgYW55IHVucmVhZCBtYWlsIGF0IHN0YXJ0dXAgb2YgTHlu eCwgYW5kDQojIHdpbGwgZ2V0IHN0YXR1c2xpbmUgbWVzc2FnZXMgaWYgc3Vi c2VxdWVudCBuZXcgbWFpbCBhcnJpdmVzLiAgSWYgYSBqdW1wcw0KIyBmaWxl IHdpdGggYSBseW54cHJvZyBVUkwgZm9yIGludm9raW5nIG1haWwgaXMgYXZh aWxhYmxlLCBvciB5b3VyIGh0bWwNCiMgcGFnZXMgaW5jbHVkZSBhbiBtYWls IGxhdW5jaCBmaWxlIFVSTCwgdGhlIHVzZXIgdGhlcmVieSBjYW4gYWNjZXNz IG1haWwNCiMgYW5kIHJlYWQgdGhlIG1lc3NhZ2VzLiAgVGhlIGNoZWNrcyBh bmQgc3RhdHVzbGluZSByZXBvcnRzIHdpbGwgbm90IGJlDQojIHBlcmZvcm1l ZCBpZiBMeW54IGhhcyBiZWVuIGludm9rZWQgd2l0aCB0aGUgLXJlc3RyaWN0 aW9ucz1tYWlsIHN3aXRjaC4NCiMNCiMgVk1TIFVTRVJTICEhIQ0KIyA9PT09 PT09PT09PT09DQojIE5ldyBtYWlsIGlzIG5vcm1hbGx5IGJyb2FkY2FzdCBh cyBpdCBhcnJpdmVzLCB2aWEgInVuc29saWNpdGVkIHNjcmVlbg0KIyBicm9h ZGNhc3RzIiwgd2hpY2ggY2FuIGJlICJ3aXBlZCIgZnJvbSB0aGUgTHlueCBk aXNwbGF5IHZpYSB0aGUgQ3RybC1XDQojIGNvbW1hbmQuICBZb3UgbWF5IHBy ZWZlciB0byBkaXNhYmxlIHRoZSBicm9hZGNhc3RzIGFuZCB1c2UgQ0hFQ0tN QUlMDQojIGluc3RlYWQgKGUuZy4sIGluIGEgcHVibGljIGFjY291bnQgd2hp Y2ggd2lsbCBiZSB1c2VkIGJ5IHBlb3BsZSB3aG8NCiMgYXJlIGlnbm9yYW50 IGFib3V0IFZNUykuDQojDQojQ0hFQ0tNQUlMOkZBTFNFDQoNCg0KLmgxIE5l d3MtZ3JvdXBzDQoNCi5oMiBOTlRQU0VSVkVSDQojIFRvIGVuYWJsZSBuZXdz IHJlYWRpbmcgYWJpbGl0eSB2aWEgTHlueCwgdGhlIGVudmlyb25tZW50IHZh cmlhYmxlIE5OVFBTRVJWRVINCiMgbXVzdCBiZSBzZXQgc28gdGhhdCBpdCBw b2ludHMgdG8geW91ciBzaXRlJ3MgTk5UUCBzZXJ2ZXINCiMgKHNlZSBMeW54 IFVzZXJzIEd1aWRlIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcykuDQojIEx5 bnggcmVzcGVjdHMgUkZDIDE3MzggKGh0dHA6Ly93d3cuaWNzLnVjaS5lZHUv cHViL2lldGYvdXJpL3JmYzE3MzgudHh0KQ0KIyBhbmQgZG9lcyBub3QgYWNj ZXB0IGEgaG9zdCBmaWVsZCBpbiBuZXdzIFVSTHMgKHVzZSBubnRwOiBpbnN0 ZWFkIG9mIG5ld3M6IGZvcg0KIyB0aGUgc2NoZW1lIGlmIHlvdSB3aXNoIHRv IHNwZWNpZnkgYW4gTk5UUCBob3N0IGluIGEgVVJMLCBhcyBleHBsYWluZWQg aW4gdGhlDQojIFJGQykuICBJZiB5b3UgaGF2ZSBub3Qgc2V0IHRoZSB2YXJp YWJsZSBleHRlcm5hbGx5LCB5b3UgY2FuIHNldCBpdCBhdCBydW4NCiMgdGlt ZSB2aWEgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuICBJdCB3aWxsIG5vdCBv dmVycmlkZSBhbiBleHRlcm5hbCBzZXR0aW5nLg0KIyBOb3RlIHRoYXQgb24g Vk1TIGl0IGlzIHNldCBhcyBhIHByb2Nlc3MgbG9naWNhbCByYXRoZXIgdGhh biBzeW1ib2wsIGFuZCB3aWxsDQojIG91dGxpdmUgdGhlIEx5bnggaW1hZ2Uu DQojIFRoZSBuZXdzIHJlYWRpbmcgZmFjaWxpdHkgaW4gTHlueCBpcyBxdWl0 ZSBsaW1pdGVkLiAgTHlueCBkb2VzIG5vdCBwcm92aWRlIGENCiMgZnVsbCBm ZWF0dXJlZCBuZXdzIHJlYWRlciB3aXRoIGVsYWJvcmF0ZSBlcnJvciBjaGVj a2luZyBhbmQgc2FmZXR5IGZlYXR1cmVzLg0KIw0KI05OVFBTRVJWRVI6bmV3 cy5zZXJ2ZXIuZG9tDQoNCg0KLmgyIExJU1RfTkVXU19OVU1CRVJTDQojIElm IExJU1RfTkVXU19OVU1CRVJTIGlzIHNldCBUUlVFLCBMeW54IHdpbGwgdXNl IGFuIG9yZGVyZWQgbGlzdCBhbmQgaW5jbHVkZQ0KIyB0aGUgbnVtYmVycyBv ZiBhcnRpY2xlcyBpbiBuZXdzIGxpc3RpbmdzLCBpbnN0ZWFkIG9mIHVzaW5n IGFuIHVub3JkZXJlZA0KIyBsaXN0LiAgVGhlIGRlZmF1bHQgaXMgZGVmaW5l ZCBpbiB1c2VyZGVmcy5oLCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gaGVyZS4N CiMNCiNMSVNUX05FV1NfTlVNQkVSUzpGQUxTRQ0KDQoNCi5oMiBMSVNUX05F V1NfREFURVMNCiMgSWYgTElTVF9ORVdTX0RBVEVTIGlzIHNldCBUUlVFLCBM eW54IHdpbGwgaW5jbHVkZSB0aGUgZGF0ZXMgb2YgYXJ0aWNsZXMgaW4NCiMg bmV3cyBsaXN0aW5ncy4gIFRoZSBkYXRlcyBhbHdheXMgYXJlIGluY2x1ZGVk IGluIHRoZSBhcnRpY2xlcywgdGhlbXNlbHZlcy4NCiMgVGhlIGRlZmF1bHQg aXMgZGVmaW5lZCBpbiB1c2VyZGVmcy5oLCBhbmQgY2FuIGJlIG92ZXJyaWRk ZW4gaGVyZS4NCiMNCiNMSVNUX05FV1NfREFURVM6RkFMU0UNCg0KDQouaDIg TkVXU19DSFVOS19TSVpFDQouaDIgTkVXU19NQVhfQ0hVTksNCiMgTkVXU19D SFVOS19TSVpFIGFuZCBORVdTX01BWF9DSFVOSyByZWd1bGF0ZSB0aGUgY2h1 bmtpbmcgb2YgbmV3cyBhcnRpY2xlDQojIGxpc3RpbmdzIHdpdGggaW5jbHVz aW9uIG9mIGxpbmtzIGZvciBsaXN0aW5nIGVhcmxpZXIgYW5kL29yIGxhdGVy IGFydGljbGVzLg0KIyBUaGUgZGVmYXVsdHMgYXJlIGRlZmluZWQgaW4gSFRO ZXdzLmMgYXMgMzAgYW5kIDQwLCByZXNwZWN0aXZlbHkuICBJZiB0aGUNCiMg bmV3cyBncm91cCBjb250YWlucyBtb3JlIHRoYW4gTkVXU19NQVhfQ0hVTksg YXJ0aWNsZXMsIHRoZXkgd2lsbCBiZSBsaXN0ZWQNCiMgaW4gTkVXU19DSFVO S19TSVpFIGNodW5rcy4gIFlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0cyBo ZXJlLCBhbmQvb3Igb24NCiMgdGhlIGNvbW1hbmQgbGluZSB2aWEgLW5ld3Nj aHVua3NpemU9TlVNQkVSIGFuZC9vciAtbmV3c21heGNodW5rPU5VTUJFUg0K IyBzd2l0Y2hlcy4gIE5vdGUgdGhhdCBpZiB0aGUgY2h1bmsgc2l6ZSBpcyBp bmNyZWFzZWQsIGhlcmUgb3Igb24gdGhlIGNvbW1hbmQNCiMgbGluZSwgdG8g YSB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgbWF4aW11bSwgdGhl IG1heGltdW0gd2lsbCBiZQ0KIyBpbmNyZWFzZWQgdG8gdGhhdCBudW1iZXIu ICBDb252ZXJzZWx5LCBpZiB0aGUgbWF4aW11bSBpcyBzZXQgdG8gYSBudW1i ZXINCiMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IGNodW5rIHNpemUsIHRoZSBj aHVuayBzaXplIHdpbGwgYmUgcmVkdWNlZCB0byB0aGF0DQojIG51bWJlci4g IFRodXMsIHlvdSBuZWVkIHVzZSBvbmx5IG9uZSBvZiB0aGUgdHdvIHN3aXRj aGVzIG9uIHRoZSBjb21tYW5kDQojIGxpbmUsIGJhc2VkIG9uIHRoZSBkaXJl Y3Rpb24gb2YgaW50ZW5kZWQgY2hhbmdlIHJlbGF0aXZlIHRvIHRoZSBjb21w aWxhdGlvbg0KIyBvciBjb25maWd1cmF0aW9uIGRlZmF1bHRzLiAgVGhlIGNv bXBpbGF0aW9uIGRlZmF1bHRzIGVuc3VyZSB0aGF0IHRoZXJlIHdpbGwNCiMg YmUgYXQgbGVhc3QgMTAgZWFybGllciBhcnRpY2xlcyBiZWZvcmUgYm90aGVy aW5nIHRvIGNodW5rIGFuZCBjcmVhdGUgYSBsaW5rDQojIGZvciBlYXJsaWVy IGFydGljbGVzLg0KIw0KI05FV1NfQ0hVTktfU0laRTozMA0KI05FV1NfTUFY X0NIVU5LOjQwDQoNCg0KLmgyIE5FV1NfUE9TVElORw0KIyBTZXQgTkVXU19Q T1NUSU5HIHRvIEZBTFNFIGlmIHlvdSBkbyBub3Qgd2FudCB0byBzdXBwb3J0 IHBvc3RpbmcgdG8NCiMgbmV3cyBncm91cHMgdmlhIEx5bnguICBJZiBsZWZ0 IFRSVUUsIEx5bnggd2lsbCB1c2UgaXRzIG5ld3MgZ2F0ZXdheSB0bw0KIyBw b3N0IG5ldyBtZXNzYWdlcyBvciBmb2xsb3d1cHMgdG8gbmV3cyBncm91cHMs IHVzaW5nIHRoZSBVUkwgc2NoZW1lcw0KIyBkZXNjcmliZWQgaW4gdGhlICJT dXBwb3J0ZWQgVVJMcyIgc2VjdGlvbiBvZiB0aGUgb25saW5lICdoJ2VscC4g IFRoZQ0KIyBwb3N0cyB3aWxsIGJlIGF0dGVtcHRlZCB2aWEgdGhlIG5udHAg c2VydmVyIHNwZWNpZmllZCBpbiB0aGUgVVJMLCBvcg0KIyBpZiBub25lIHdh cyBzcGVjaWZpZWQsIHZpYSB0aGUgTk5UUFNFUlZFUiBjb25maWd1cmF0aW9u IG9yIGVudmlyb25tZW50DQojIHZhcmlhYmxlLiAgTGlua3Mgd2l0aCB0aGVz ZSBVUkxzIGZvciBwb3N0aW5nIG9yIHNlbmRpbmcgZm9sbG93dXBzIGFyZQ0K IyBjcmVhdGVkIGJ5IHRoZSBuZXdzIGdhdGV3YXkgd2hlbiByZWFkaW5nIGdy b3VwIGxpc3RpbmdzIG9yIGFydGljbGVzDQojIGZyb20gbm50cCBzZXJ2ZXJz IGlmIHRoZSBzZXJ2ZXIgaW5kaWNhdGVzIHRoYXQgaXQgcGVybWl0cyBwb3N0 aW5nLg0KIyBUaGUgY29tcGlsYXRpb24gZGVmYXVsdCBzZXQgaW4gdXNlcmRl ZnMuaCBjYW4gYmUgY2hhbmdlZCBoZXJlLiAgSWYNCiMgdGhlIGRlZmF1bHQg aXMgVFJVRSwgcG9zdGluZyBjYW4gc3RpbGwgYmUgZGlzYWxsb3dlZCB2aWEg dGhlDQojIC1yZXN0cmljdGlvbnMgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMg VGhlIHBvc3RpbmcgZmFjaWxpdHkgaW4gTHlueCBpcyBxdWl0ZSBsaW1pdGVk LiAgTHlueCBkb2VzIG5vdCBwcm92aWRlIGENCiMgZnVsbCBmZWF0dXJlZCBu ZXdzIHBvc3RlciB3aXRoIGVsYWJvcmF0ZSBlcnJvciBjaGVja2luZyBhbmQg c2FmZXR5IGZlYXR1cmVzLg0KIw0KI05FV1NfUE9TVElORzpUUlVFDQoNCg0K LmgyIExZTlhfU0lHX0ZJTEUNCiMgTFlOWF9TSUdfRklMRSBkZWZpbmVzIHRo ZSBuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIGEgc2lnbmF0dXJlIHdoaWNo DQojIGNhbiBiZSBhcHBlbmRlZCB0byBlbWFpbCBtZXNzYWdlcyBhbmQgbmV3 cyBwb3N0aW5ncyBvciBmb2xsb3d1cHMuICBUaGUNCiMgdXNlciB3aWxsIGJl IHByb21wdGVkIHdoZXRoZXIgdG8gYXBwZW5kIGl0LiAgSXQgaXMgc291Z2h0 IGluIHRoZSBob21lDQojIGRpcmVjdG9yeS4gIElmIGl0IGlzIGluIGEgc3Vi ZGlyZWN0b3J5LCBiZWdpbiBpdCB3aXRoIGEgZG90LXNsYXNoDQojIChlLmcu LCAuL2x5bngvLmx5bnhzaWcpLiAgVGhlIGRlZmluaXRpb24gaXMgc2V0IGlu IHVzZXJkZWZzLmggYW5kIGNhbg0KIyBiZSBjaGFuZ2VkIGhlcmUuDQojDQoj TFlOWF9TSUdfRklMRToubHlueHNpZw0KDQoNCi5oMSBJbnRlcmFjdGlvbg0K IyBUaGVzZSBzZXR0aW5ncyBjb250cm9sIGludGVyYWN0aW9uIG9mIHRoZSB1 c2VyIHdpdGggbHlueC4NCg0KLmgyIFNDUk9MTEJBUg0KIyBJZiBTQ1JPTExC QVIgaXMgc2V0IFRSVUUsIEx5bnggd2lsbCBzaG93IHNjcm9sbGJhciBvbiB3 aW5kb3dzLiAgV2l0aCBtb3VzZQ0KIyBlbmFibGVkLCB0aGUgc2Nyb2xsYmFy IHN0cmlwIG91dHNpZGUgdGhlIGJhciBpcyBjbGlja2FibGUsIGFuZCBzY3Jv bGxzIHRoZQ0KIyB3aW5kb3cgYnkgcGFnZXMuICBUaGUgYXBwZWFyYW5jZSBv ZiB0aGUgc2Nyb2xsYmFyIGNhbiBiZSBjaGFuZ2VkIGZyb20NCiMgTFlOWF9M U1MgZmlsZTogIGRlZmluZSBhdHRyaWJ1dGVzIHNjcm9sbC5iYXIsIHNjcm9s bC5iYWNrIChmb3IgdGhlIGJhciwgYW5kDQojIGZvciB0aGUgc3RyaXAgYWxv bmcgd2hpY2ggdGhlIHNjcm9sbGJhciBtb3ZlcykuDQojU0NST0xMQkFSOkZB TFNFDQoNCg0KLmgyIFNDUk9MTEJBUl9BUlJPVw0KIyBJZiBTQ1JPTExCQVJf QVJST1cgaXMgc2V0IFRSVUUsIEx5bngncyBzY3JvbGxiYXIgd2lsbCBoYXZl IGFycm93cyBhdCB0aGUNCiMgZW5kcy4gIFdpdGggbW91c2UgZW5hYmxlZCwg dGhlIGFycm93cyBhcmUgY2xpY2thYmxlLCBhbmQgc2Nyb2xsIHRoZSB3aW5k b3cgYnkNCiMgMiBsaW5lcy4gIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBzY3Jv bGxiYXIgYXJyb3dzIGNhbiBiZSBjaGFuZ2VkIGZyb20gTFlOWF9MU1MNCiMg ZmlsZTogIGRlZmluZSBhdHRyaWJ1dGVzIHNjcm9sbC5hcnJvdywgc2Nyb2xs Lm5vYXJyb3cgKGZvciBlbmFibGVkLWFycm93cywNCiMgYW5kIGRpc2FibGVk IGFycm93cykuICBBbiBhcnJvdyBpcyAiZGlzYWJsZWQiIGlmIHRoZSBiYXIg aXMgYXQgdGhpcyBlbmQgb2YNCiMgdGhlIHN0cmlwLg0KI1NDUk9MTEJBUl9B UlJPVzpUUlVFDQoNCg0KLmgyIFVTRV9NT1VTRQ0KIyBJZiBVU0VfTU9VU0Ug aXMgc2V0IFRSVUUsIEx5bnggKHdoZW4gY29uZmlndXJlZCB3aXRoIG5jdXJz ZXMsIFBEY3Vyc2VzIG9yDQojIHNsYW5nKSB3aWxsIGFsbG93IHRoZSB1c2Vy IHRvIGNsaWNrIHdpdGggYnV0dG9uLTEgb24gbGlua3MgdG8gc2VsZWN0IHRo ZW0uIA0KIyBPdGhlciBtb3VzZS11c2FibGUgb3BlcmF0aW9ucyBpbmNsdWRl OiAgY2xpY2tpbmcgb24gdGhlIHRvcCBvciBib3R0b20gb2YgYQ0KIyBwYWdl IHRvIG1ha2UgaXQgc2Nyb2xsIHVwIG9yIGRvd24sIGNsaWNraW5nIG9uIHRo ZSBsZWZ0IGVkZ2UgdG8gcG9wIHRoZQ0KIyBoaXN0b3J5IHN0YWNrLCB0byBt b3ZlIHRvIGEgdGV4dCBlbnRyeSBmaWVsZCwgb3IgbWFuaXB1bGF0ZSBhIHBv cHVwIG1lbnUuDQojDQojIG5jdXJzZXMgYW5kIHNsYW5nIGhhdmUgYnVpbHQt aW4gc3VwcG9ydCBmb3IgdGhlIHh0ZXJtIG1vdXNlIHByb3RvY29sLiAgSW4N CiMgYWRkaXRpb24sIG5jdXJzZXMgY2FuIGJlIGxpbmtlZCB3aXRoIHRoZSBn cG0gbW91c2UgbGlicmFyeSwgdG8gYXV0b21hdGljYWxseQ0KIyBwcm92aWRl IHN1cHBvcnQgZm9yIHRoaXMgaW50ZXJmYWNlIGluIGFwcGxpY2F0aW9ucyBz dWNoIGFzIEx5bnguICAoUGxlYXNlDQojIHJlYWQgdGhlIG5jdXJzZXMgZmFx IHRvIHdvcmsgYXJvdW5kIGJyb2tlbiBncG0gY29uZmlndXJhdGlvbnMgcGFj a2FnZWQgYnkNCiMgc29tZSBkaXN0cmlidXRvcnMpLiAgUERDdXJzZXMgaW1w bGVtZW50cyBtb3VzZSBzdXBwb3J0IGZvciB3aW4zMiBjb25zb2xlDQojIHdp bmRvd3MsIGFzIGRvZXMgc2xhbmcuDQojVVNFX01PVVNFOkZBTFNFDQoNCg0K LmgxIEhUTUwgUGFyc2luZw0KIyBUaGVzZSBzZXR0aW5ncyBjb250cm9sIHRo ZSB3YXkgTHlueCBwYXJzZXMgaW52YWxpZCBIVE1MDQojIGFuZCBob3cgaXQg bWF5IHJlc29sdmUgc3VjaCBpc3N1ZXMuDQoNCi5oMiBDT0xMQVBTRV9CUl9U QUdTDQojIElmIENPTExBUFNFX0JSX1RBR1MgaXMgc2V0IEZBTFNFLCBMeW54 IHdpbGwgbm90IGNvbGxhcHNlIHNlcmlhbCBCUiB0YWdzLg0KIyBJZiBzZXQg VFJVRSwgdHdvIG9yIG1vcmUgY29uY3VycmVudCBCUnMgd2lsbCBiZSBjb2xs YXBzZWQgaW50byBhIHNpbmdsZQ0KIyBsaW5lIGJyZWFrLiAgTm90ZSB0aGF0 IHRoZSB2YWxpZCB3YXkgdG8gaW5zZXJ0IGV4dHJhIGJsYW5rIGxpbmVzIGlu IEhUTUwNCiMgaXMgdmlhIGEgUFJFIGJsb2NrIHdpdGggb25seSBuZXdsaW5l cyBpbiB0aGUgYmxvY2suDQojDQojQ09MTEFQU0VfQlJfVEFHUzpUUlVFDQoN Cg0KLmgyIFRBR1NPVVANCiMgSWYgVEFHU09VUCBpcyBzZXQsIEx5bnggdXNl cyB0aGUgIlRhZyBTb3VwIERURCIgcmF0aGVyIHRoYW4gIlNvcnRhU0dNTCIu DQojIFRoZSB0d28gYXBwcm9hY2hlcyBkaWZmZXIgYnkgdGhlIHN0eWxlIG9m IGVycm9yIGRldGVjdGlvbiBhbmQgcmVjb3ZlcnkuDQojIFRhZyBTb3VwIERU RCBhbGxvd3MgZm9yIGltcHJvcGVybHkgbmVzdGVkIHRhZ3M7IFNvcnRhU0dN TCBpcyBzdHJpY3Rlci4NCiNUQUdTT1VQOkZBTFNFDQoNCg0KLmgxIENvb2tp ZXMNCg0KLmgyIFNFVF9DT09LSUVTDQojIElmIFNFVF9DT09LSUVTIGlzIHNl dCBGQUxTRSwgTHlueCB3aWxsIGlnbm9yZSBTZXQtQ29va2llIGhlYWRlcnMN CiMgaW4gaHR0cCBzZXJ2ZXIgcmVwbGllcy4gIE5vdGUgdGhhdCBpZiBhIENP T0tJRV9GSUxFIGlzIGluIHVzZSAoc2VlDQojIGJlbG93KSB0aGF0IGNvbnRh aW5zIGNvb2tpZXMgYXQgc3RhcnR1cCwgTHlueCB3aWxsIHN0aWxsIHNlbmQg dGhvc2UNCiMgcGVyc2lzdGVudCBjb29raWVzIGluIHJlcXVlc3RzIGFzIGFw cHJvcHJpYXRlLiAgU2V0dGluZyBTRVRfQ09PS0lFUw0KIyB0byBGQUxTRSBq dXN0IHByZXZlbnRzIGFjY2VwdGluZyBhbnkgbmV3IGNvb2tpZXMgZnJvbSBz ZXJ2ZXJzLiAgVG8NCiMgcHJldmVudCBhbGwgY29va2llIHByb2Nlc3Npbmcg KHNlbmRpbmcgKmFuZCogcmVjZWl2aW5nKSBpbiBhIHNlc3Npb24sDQojIG1h a2Ugc3VyZSB0aGF0IFBFUlNJU1RFTlRfQ09PS0lFUyBpcyBub3QgVFJVRSBv ciB0aGF0IENPT0tJRV9GSUxFIGRvZXMNCiMgbm90IHBvaW50IHRvIGEgZmls ZSB3aXRoIGNvb2tpZXMsIGluIGFkZGl0aW9uIHRvIHNldHRpbmcgU0VUX0NP T0tJRVMNCiMgdG8gRkFMU0UuDQojIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQg aW4gdXNlcmRlZnMuaCwgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGhlcmUsDQoj IGFuZC9vciB0b2dnbGVkIHZpYSB0aGUgLWNvb2tpZXMgY29tbWFuZCBsaW5l IHN3aXRjaC4NCiMNCiNTRVRfQ09PS0lFUzpUUlVFDQoNCg0KLmgyIEFDQ0VQ VF9BTExfQ09PS0lFUw0KIyBJZiBBQ0NFUFRfQUxMX0NPT0tJRVMgaXMgc2V0 IFRSVUUsIEx5bnggd2lsbCBhY2NlcHQgY29va2llcyBmcm9tIGFsbA0KIyBk b21haW5zIHdpdGggbm8gdXNlciBpbnRlcmFjdGlvbi4gIFRoaXMgaXMgZXF1 aXZhbGVudCB0byBhdXRvbWF0aWNhbGx5DQojIHJlcGx5aW5nIHRvIGFsbCBj b29raWUgJ0FsbG93PycgcHJvbXB0cyB3aXRoICdBJ2x3YXlzLiAgTm90ZSB0 aGF0IGl0DQojIGRvZXMgbm90IHByZWVtcHQgdmFsaWRpdHkgY2hlY2tpbmcs IHdoaWNoIGhhcyB0byBiZSBjb250cm9sbGVkIHNlcGFyYXRlbHkNCiMgKHNl ZSBiZWxvdykuDQojIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQgaW4gdXNlcmRl ZnMuaCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gaGVyZSwgb3INCiMgaW4gdGhl IC5seW54cmMgZmlsZSB2aWEgYW4gbyhwdGlvbnMpIHNjcmVlbiBzZXR0aW5n LiAgSXQgbWF5IGFsc28gYmUNCiMgdG9nZ2xlZCB2aWEgdGhlIC1hY2NlcHRf YWxsX2Nvb2tpZXMgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMNCiNBQ0NFUFRf QUxMX0NPT0tJRVM6RkFMU0UNCg0KDQouaDIgQ09PS0lFX0FDQ0VQVF9ET01B SU5TDQouaDIgQ09PS0lFX1JFSkVDVF9ET01BSU5TDQojIENPT0tJRV9BQ0NF UFRfRE9NQUlOUyBhbmQgQ09PS0lFX1JFSkVDVF9ET01BSU5TIGFyZSBjb21t YS1kZWxpbWl0ZWQgbGlzdHMNCiMgb2YgZG9tYWlucyBmcm9tIHdoaWNoIEx5 bnggc2hvdWxkIGF1dG9tYXRpY2FsbHkgYWNjZXB0IG9yIHJlamVjdCBjb29r aWVzDQojIHdpdGhvdXQgYXNraW5nIGZvciBjb25maXJtYXRpb24uICBJZiB0 aGUgc2FtZSBkb21haW4gaXMgc3BlY2lmaWVkIGluIGJvdGgNCiMgbGlzdHMs IHJlamVjdGlvbiB3aWxsIHRha2UgcHJlY2VkZW5jZS4NCiMgTm90ZSB0aGF0 IGluIG9yZGVyIHRvIG1hdGNoIGNvb2tpZXMsIGRvbWFpbnMgaGF2ZSB0byBi ZSBzcGVsbGVkIG91dCBleGFjdGx5DQojIGluIHRoZSBmb3JtIGluIHdoaWNo IHRoZXkgd291bGQgYXBwZWFyIG9uIHRoZSBDb29raWUgSmFyIHBhZ2UgKGNh c2UgaXMNCiMgaW5zaWduaWZpY2FudCkuICBUaGV5IGFyZSBub3Qgd2lsZGNh cmRzLiAgRG9tYWlucyB0aGF0IGFwcGx5IHRvIG1vcmUgdGhhbg0KIyBvbmUg aG9zdCBoYXZlIGEgbGVhZGluZyAnLicsIGJ1dCBoYXZlIHRvIG1hdGNoICp0 aGUgY29va2llJ3MqIGRvbWFpbg0KIyBleGFjdGx5Lg0KIw0KI0NPT0tJRV9B Q0NFUFRfRE9NQUlOUzoNCiNDT09LSUVfUkVKRUNUX0RPTUFJTlM6DQoNCg0K LmgyIENPT0tJRV9MT09TRV9JTlZBTElEX0RPTUFJTlMNCi5oMiBDT09LSUVf U1RSSUNUX0lOVkFMSURfRE9NQUlOUw0KLmgyIENPT0tJRV9RVUVSWV9JTlZB TElEX0RPTUFJTlMNCiMgQ09PS0lFX0xPT1NFX0lOVkFMSURfRE9NQUlOUywg Q09PS0lFX1NUUklDVF9JTlZBTElEX0RPTUFJTlMsIGFuZA0KIyBDT09LSUVf UVVFUllfSU5WQUxJRF9ET01BSU5TIGFyZSBjb21tYS1kZWxpbWl0ZWQgbGlz dHMgb2YgZG9tYWlucy4NCiMgVGhleSBjb250cm9sIHRoZSBkZWdyZWUgb2Yg dmFsaWRpdHkgY2hlY2tpbmcgdGhhdCBpcyBhcHBsaWVkIHRvIGNvb2tpZXMN CiMgZm9yIHRoZSBzcGVjaWZpZWQgZG9tYWlucy4NCiMgTm90ZSB0aGF0IGlu IG9yZGVyIHRvIG1hdGNoIGNvb2tpZXMsIGRvbWFpbnMgaGF2ZSB0byBiZSBz cGVsbGVkIG91dCBleGFjdGx5DQojIGluIHRoZSBmb3JtIGluIHdoaWNoIHRo ZXkgd291bGQgYXBwZWFyIG9uIHRoZSBDb29raWUgSmFyIHBhZ2UgKGNhc2Ug aXMNCiMgaW5zaWduaWZpY2FudCkuICBUaGV5IGFyZSBub3Qgd2lsZGNhcmRz LiAgRG9tYWlucyB0aGF0IGFwcGx5IHRvIG1vcmUgdGhhbg0KIyBvbmUgaG9z dCBoYXZlIGEgbGVhZGluZyAnLicsIGJ1dCBoYXZlIHRvIG1hdGNoICp0aGUg Y29va2llJ3MqIGRvbWFpbg0KIyBleGFjdGx5Lg0KIyBJZiBhIGRvbWFpbiBp cyBzZXQgdG8gc3RyaWN0IGNoZWNraW5nLCBzdHJpY3QgY29uZm9ybWFuY2Ug dG8gUkZDMjEwOSB3aWxsDQojIGJlIGFwcGxpZWQuICBBIGRvbWFpbiB3aXRo IGxvb3NlIGNoZWNraW5nIHdpbGwgYmUgYWxsb3dlZCB0byBzZXQgY29va2ll cw0KIyB3aXRoIGFuIGludmFsaWQgcGF0aCBvciBkb21haW4gYXR0cmlidXRl LiAgQWxsIGRvbWFpbnMgd2lsbCBkZWZhdWx0IHRvDQojIGFza2luZyB0aGUg dXNlciBmb3IgY29uZmlybWF0aW9uIGluIGNhc2Ugb2YgYW4gaW52YWxpZCBw YXRoIG9yIGRvbWFpbi4NCiMgQ29va2llIHZhbGlkaXR5IGNoZWNraW5nIHRh a2VzIHBsYWNlIGFzIGEgc2VwYXJhdGUgc3RlcCBiZWZvcmUgdGhlDQojIGZp bmFsIGRlY2lzaW9uIHRvIGFjY2VwdCBvciByZWplY3QgKHNlZSBwcmV2aW91 cyBvcHRpb25zKSwgdGhlcmVmb3JlDQojIGEgY29va2llIHRoYXQgcGFzc2Vz IHZhbGlkaXR5IGNoZWNraW5nIG1heSBzdGlsbCBiZSBhdXRvbWF0aWNhbGx5 DQojIHJlamVjdGVkIG9yIGNhdXNlIGFub3RoZXIgcHJvbXB0Lg0KIw0KI0NP T0tJRV9MT09TRV9JTlZBTElEX0RPTUFJTlM6DQojQ09PS0lFX1NUUklDVF9J TlZBTElEX0RPTUFJTlM6DQojQ09PS0lFX1FVRVJZX0lOVkFMSURfRE9NQUlO UzoNCg0KDQouaDIgUEVSU0lTVEVOVF9DT09LSUVTDQojIFBFUlNJU1RFTlRf Q09PS0lFUyBpbmRpY2F0ZXMgdGhhdCBjb29raWVzIHNob3VsZCBiZSByZWFk IGF0IHN0YXJ0dXAgZnJvbQ0KIyB0aGUgQ09PS0lFX0ZJTEUsIGFuZCBzYXZl ZCBhdCBleGl0IGZvciBzdG9yYWdlIGJldHdlZW4gTHlueCBzZXNzaW9ucy4N CiMgSXQgaXMgbm90IHVzZWQgaWYgTHlueCB3YXMgY29tcGlsZWQgd2l0aG91 dCBFWFBfUEVSU0lTVEVOVF9DT09LSUVTLg0KIyBUaGUgZGVmYXVsdCBpcyBG QUxTRSwgc28gdGhhdCB0aGUgZmVhdHVyZSBuZWVkcyB0byBiZSBlbmFibGVk IGhlcmUNCiMgZXhwbGljaXRseSBpZiB5b3Ugd2FudCBpdC4NCiMNCiNQRVJT SVNURU5UX0NPT0tJRVM6RkFMU0UNCg0KDQouaDIgQ09PS0lFX0ZJTEUNCiMg Q09PS0lFX0ZJTEUgaXMgdGhlIGRlZmF1bHQgZmlsZSBmcm9tIHdoaWNoIHBl cnNpc3RlbnQgY29va2llcyBhcmUgcmVhZA0KIyBhdCBzdGFydHVwIChpZiB0 aGUgZmlsZSBleGlzdHMpLCBpZiBMeW54IHdhcyBjb21waWxlZCB3aXRoDQoj IEVYUF9QRVJTSVNURU5UX0NPT0tJRVMgYW5kIHRoZSBQRVJTSVNURU5UX0NP T0tJRVMgb3B0aW9uIGlzIGVuYWJsZWQuDQojIFRoZSBjb29raWUgZmlsZSBj YW4gYWxzbyBiZSBzcGVjaWZpZWQgaW4gLmx5bnhyYyBvciBvbiB0aGUgY29t bWFuZCBsaW5lLg0KIw0KI0NPT0tJRV9GSUxFOn4vLmx5bnhfY29va2llcw0K DQoNCi5oMiBDT09LSUVfU0FWRV9GSUxFDQojIENPT0tJRV9TQVZFX0ZJTEUg aXMgdGhlIGRlZmF1bHQgZmlsZSBpbiB3aGljaCBwZXJzaXN0ZW50IGNvb2tp ZXMgYXJlDQojIHN0b3JlZCBhdCBleGl0LCBpZiBMeW54IHdhcyBjb21waWxl ZCB3aXRoIEVYUF9QRVJTSVNURU5UX0NPT0tJRVMgYW5kIHRoZQ0KIyBQRVJT SVNURU5UX0NPT0tJRVMgb3B0aW9uIGlzIGVuYWJsZWQuICBUaGUgY29va2ll IHNhdmUgZmlsZSBjYW4gYWxzbyBiZQ0KIyBzcGVjaWZpZWQgb24gdGhlIGNv bW1hbmQgbGluZS4NCiMNCiMgV2l0aCBhbiBpbnRlcmFjdGl2ZSBMeW54IHNl c3Npb24sIENPT0tJRV9TQVZFX0ZJTEUgd2lsbCBkZWZhdWx0IHRvDQojIENP T0tJRV9GSUxFIGlmIGl0IGlzIG5vdCBzZXQuICBXaXRoIGEgbm9uLWludGVy YWN0aXZlIEx5bnggc2Vzc2lvbiAoZS5nLiwNCiMgLWR1bXApLCBjb29raWVz IHdpbGwgb25seSBiZSBzYXZlZCB0byBmaWxlIGlmIENPT0tJRV9TQVZFX0ZJ TEUgaXMgc2V0Lg0KIw0KI0NPT0tJRV9TQVZFX0ZJTEU6fi8ubHlueF9jb29r aWVzDQoNCg0KLmgxIE1haWwtcmVsYXRlZA0KDQouaDIgU1lTVEVNX01BSUwN Ci5oMiBTWVNURU1fTUFJTF9GTEFHUw0KIyBWTVM6DQojID09PQ0KIyBUaGUg bWFpbCBjb21tYW5kIGFuZCBxdWFsaWZpZXJzIGFyZSBkZWZpbmVkIGluIHVz ZXJkZWZzLmguICBMeW54DQojIHdpbGwgc3Bhd24gYSBzdWJwcm9jZXNzIHRv IHNlbmQgcmVwbGllcyBhbmQgZXJyb3IgbWVzc2FnZXMuICBUaGUNCiMgY29t bWFuZCwgYW5kIHF1YWxpZmllcnMgKGlmIGFueSksIGNhbiBiZSByZS1kZWZp bmVkIGhlcmUuICBJZg0KIyB5b3UgdXNlIFBNREYgdGhlbiBoZWFkZXJzIHdp bGwgd2UgcGFzc2VkIHZpYSBhIGhlYWRlciBmaWxlLg0KIyBJZiB5b3UgdXNl ICJnZW5lcmljIiBWTVMgTUFJTCwgdGhlIHN1YmplY3Qgd2lsbCBiZSBwYXNz ZWQgb24gdGhlDQojIGNvbW1hbmQgbGluZSB2aWEgYSAvc3ViamVjdD0iU1VC SkVDVCIgcXVhbGlmaWVyLCBhbmQgaW5jbHVzaW9uDQojIG9mIG90aGVyIHJl bGV2YW50IGhlYWRlcnMgbWF5IG5vdCBiZSBwb3NzaWJsZS4NCiMgSWYgeW91 ciBtYWlsZXIgdXNlcyBhbm90aGVyIHN5bnRheCwgc29tZSBoYWNraW5nIG9m IHRoZSBtYWlsZm9ybSgpDQojIG1haWxtc2coKSBhbmQgcmVwbHlfYnlfbWFp bCgpIGZ1bmN0aW9ucyBpbiBMWU1haWwuYywgYW5kIHNlbmRfZmlsZV90b19t YWlsKCkNCiMgZnVuY3Rpb24gaW4gTFlQcmludC5jLCBtYXkgYmUgcmVxdWly ZWQuDQojDQouZXggMg0KI1NZU1RFTV9NQUlMOlBNREYgU0VORA0KI1NZU1RF TV9NQUlMX0ZMQUdTOi9oZWFkZXJzDQojDQouZXggMg0KI1NZU1RFTV9NQUlM Ok1BSUwNCiNTWVNURU1fTUFJTF9GTEFHUzoNCiMNCiMgVW5peDoNCiM9PT09 PT0NCiMgVGhlIG1haWwgcGF0aCBhbmQgZmxhZ3Mgbm9ybWFsbHkgYXJlIGRl ZmluZWQgZm9yIHNlbmRtYWlsIChvciBzdWJtaXQNCiMgd2l0aCBNTURGKSBp biB1c2VyZGVmcy5oLiAgWW91IGNhbiBjaGFuZ2UgdGhlbSBoZXJlLCBidXQg c2hvdWxkIGZpcnN0DQojIHJlYWQgdGhlIHppbGxpb25zIG9mIENFUlQgYWR2 aXNvcmllcyBhYm91dCBzZWN1cml0eSBwcm9ibGVtcyB3aXRoIFVuaXgNCiMg bWFpbGVycy4NCiMNCi5leCAyDQojU1lTVEVNX01BSUw6L3Vzci9tbWRmL2Jp bi9zdWJtaXQNCiNTWVNURU1fTUFJTF9GTEFHUzotbWxydXh0byxjY1wqDQoj DQouZXggMg0KI1NZU1RFTV9NQUlMOi91c3Ivc2Jpbi9zZW5kbWFpbA0KI1NZ U1RFTV9NQUlMX0ZMQUdTOi10IC1vaQ0KIw0KLmV4IDINCiNTWVNURU1fTUFJ TDovdXNyL2xpYi9zZW5kbWFpbA0KI1NZU1RFTV9NQUlMX0ZMQUdTOi10IC1v aQ0KDQojIFdpbjMyOg0KIz09PT09PT0NCiMgUGxlYXNlIHJlYWQgc2VuZG1h aWwudHh0IGluIHRoZSBMWU5YX1czMi5aSVAgZGlzdHJpYnV0aW9uDQojDQoj U1lTVEVNX01BSUw6c2VuZG1haWwgLWYgbWVAbXkuaG9zdCAtaCBteS5ob3N0 IC1yIG15LnNtdHAubWFpbGVyIC1tIFNNVFANCg0KDQouaDIgTUFJTF9BRFJT DQojIFZNUyBPTkxZOg0KIyA9PT09PT09PQ0KIyBNQUlMX0FEUlMgaXMgZGVm aW5lZCBpbiB1c2VyZGVmcy5oIGFuZCBub3JtYWxseSBpcyBzdHJ1Y3R1cmVk IGZvciBQTURGJ3MNCiMgSU4lIklOVEVSTkVUX0FERFJFU1MiIHNjaGVtZS4g IFRoZSAlcyBpcyByZXBsYWNlZCB3aXRoIHRoZSBhZGRyZXNzIGdpdmVuDQoj IGJ5IHRoZSB1c2VyLiAgSWYgeW91IGFyZSB1c2luZyBhIGRpZmZlcmVudCBJ bnRlcm5ldCBtYWlsIHRyYW5zcG9ydCwgY2hhbmdlDQojIHRoZSBJTiBhcHBy b3ByaWF0ZWx5IChlLmcuLCB0byBTTVRQLCBNWCwgb3IgV0lOUykuDQojDQoj TUFJTF9BRFJTOiJJTiUlIiIlcyIiIg0KDQoNCi5oMiBVU0VfRklYRURfUkVD T1JEUw0KIyBWTVMgT05MWToNCiMgPT09PT09PT0NCiMgSWYgVVNFX0ZJWEVE X1JFQ09SRFMgaXMgc2V0IHRvIFRSVUUgaGVyZSBvciBpbiB1c2VyZGVmcy5o LCBMeW54IHdpbGwNCiMgY29udmVydCAnZCdvd25sb2FkZWQgYmluYXJ5IGZp bGVzIHRvIEZJWEVEIDUxMiByZWNvcmQgZm9ybWF0IGJlZm9yZSBzYXZpbmcN CiMgdGhlbSB0byBkaXNrIG9yIGFjdGluZyBvbiBhIERPV05MT0FERVIgb3B0 aW9uLiAgSWYgc2V0IHRvIEZBTFNFLCB0aGUNCiMgaGVhZGVycyBvZiBzdWNo IGZpbGVzIHdpbGwgaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBTdHJlYW1fTEYg d2l0aCBJbXBsaWVkDQojIENhcnJpYWdlIENvbnRyb2wsIHdoaWNoIGlzIGlu Y29ycmVjdCwgYW5kIGNhbiBjYXVzZSBkb3dubG9hZGluZyBzb2Z0d2FyZQ0K IyB0byBnZXQgY29uZnVzZWQgYW5kIHVuaGFwcHkuICBJZiB5b3UgZG8gc2V0 IGl0IEZBTFNFLCB5b3UgY2FuIHVzZSB0aGUNCiMgRklYRUQ1MTIuQ09NIGNv bW1hbmQgZmlsZSwgd2hpY2ggaXMgaW5jbHVkZWQgaW4gdGhpcyBkaXN0cmli dXRpb24sIHRvIGRvDQojIHRoZSBjb252ZXJzaW9uIGV4dGVybmFsbHkuDQoj DQojVVNFX0ZJWEVEX1JFQ09SRFM6VFJVRQ0KDQoNCi5oMSBLZXlib2FyZCBJ bnB1dA0KIyBUaGVzZSBzZXR0aW5ncyBjb250cm9sIHRoZSB3YXkgTHlueCBp bnRlcnByZXRzIHVzZXIgaW5wdXQuDQoNCg0KLmgyIFZJX0tFWVNfQUxXQVlT X09ODQouaDIgRU1BQ1NfS0VZU19BTFdBWVNfT04NCiMgVmkgb3IgRW1hY3Mg bW92ZW1lbnQga2V5cywgaS5lLiBmYW1pbGlhciBoamtsIG9yIF5OXlBeRl5C IC4NCiMgVGhlc2UgYXJlIGRlZmF1bHRzLCB3aGljaCBjYW4gYmUgY2hhbmdl ZCBpbiB0aGUgT3B0aW9ucyBNZW51IG9yIC5seW54cmMgLg0KI1ZJX0tFWVNf QUxXQVlTX09OOkZBTFNFDQojRU1BQ1NfS0VZU19BTFdBWVNfT046RkFMU0UN Cg0KDQouaDIgREVGQVVMVF9LRVlQQURfTU9ERQ0KIyBERUZBVUxUX0tFWVBB RF9NT0RFIG1heSBiZSBzZXQgdG8gTlVNQkVSU19BU19BUlJPV1MNCiMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIExJTktTX0FSRV9OVU1C RVJFRA0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgTElO S1NfQU5EX0ZJRUxEU19BUkVfTlVNQkVSRUQNCiMgdG8gc3BlY2lmeSB3aGV0 aGVyIG51bWJlcnMgKGUuZy4gWzEwXSkgYXBwZWFyIGJlZm9yZSBhbGwgbGlu a3MsDQojIGFsbG93aW5nIGltbWVkaWF0ZSBhY2Nlc3MgYnkgZW50ZXJpbmcg dGhlIG51bWJlciBvbiB0aGUga2V5Ym9hcmQsDQojIG9yIG51bWJlcnMgb24g dGhlIG51bWVyaWMga2V5LXBhZCB3b3JrIGxpa2UgYXJyb3dzOw0KIyB0aGUg M3JkIG9wdGlvbiBjYXVzZXMgZm9ybSBmaWVsZHMgYWxzbyB0byBiZSBwcmVj ZWRlZCBieSBudW1iZXJzLg0KIyBUaGUgZmlyc3QgdHdvIG9wdGlvbnMgKGJ1 dCBub3QgdGhlIGxhc3QpIGNhbiBiZSBjaGFuZ2VkIGluIGx5bnguY2ZnDQoj IGFuZCBhbGwgdGhyZWUgY2FuIGJlIGNoYW5nZWQgdmlhIHRoZSBPcHRpb25z IE1lbnUuDQojDQojREVGQVVMVF9LRVlQQURfTU9ERTpOVU1CRVJTX0FTX0FS Uk9XUw0KDQoNCi5oMiBERUZBVUxUX0tFWVBBRF9NT0RFX0lTX05VTUJFUlNf QVNfQVJST1dTDQojIE9ic29sZXRlIGZvcm0gb2YgREVGQVVMVF9LRVlQQURf TU9ERSwNCiMgbnVtYmVycyB3b3JrIGxpa2UgYXJyb3dzIG9yIG51bWJlcmVk IGxpbmtzLg0KIyBTZXQgdG8gVFJVRSwgaW5kaWNhdGVzIG51bWJlcnMgYWN0 IGFzIGFycm93cywNCiMgYW5kIHNldCB0byBGQUxTRSBpbmRpY2F0ZXMgbnVt YmVycyByZWZlciB0byBudW1iZXJlZCBsaW5rcyBvbiB0aGUgcGFnZS4NCiMg TElOS1NfQU5EX0ZJRUxEU19BUkVfTlVNQkVSRUQgY2Fubm90IGJlIHNldCBi eSB0aGlzIG9wdGlvbiBiZWNhdXNlDQojIGl0IGFsbG93cyBvbmx5IHR3byB2 YWx1ZXMgKHRydWUgYW5kIGZhbHNlKS4NCiMNCiNERUZBVUxUX0tFWVBBRF9N T0RFX0lTX05VTUJFUlNfQVNfQVJST1dTOlRSVUUNCg0KDQouaDIgQ0FTRV9T RU5TSVRJVkVfQUxXQVlTX09ODQojIFRoZSBkZWZhdWx0IHNlYXJjaCB0eXBl Lg0KIyBUaGlzIGlzIGEgZGVmYXVsdCB0aGF0IGNhbiBiZSBvdmVycmlkZGVu IGJ5IHRoZSB1c2VyIQ0KIw0KI0NBU0VfU0VOU0lUSVZFX0FMV0FZU19PTjpG QUxTRQ0KDQoNCi5oMSBBdXhpbGlhcnkgRmFjaWxpdGllcw0KDQouaDIgREVG QVVMVF9CT09LTUFSS19GSUxFDQojIERFRkFVTFRfQk9PS01BUktfRklMRSBp cyB0aGUgZmlsZW5hbWUgdXNlZCBmb3Igc3RvcmluZyBwZXJzb25hbCBib29r bWFya3MuDQojIEl0IHdpbGwgYmUgcHJlcGVuZGVkIGJ5IHRoZSB1c2VyJ3Mg aG9tZSBkaXJlY3RvcnkuDQojIE5PVEUgdGhhdCBhIGZpbGUgZW5kaW5nIGlu IC5odG1sIG9yIG90aGVyIHN1ZmZpeCBtYXBwZWQgdG8gdGV4dC9odG1sDQoj IHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSBpdHMgdHJlYXRtZW50IGFzIEhU TUwuICBUaGUgYnVpbHQtaW4gZGVmYXVsdA0KIyBpcyBseW54X2Jvb2ttYXJr cy5odG1sLiAgT24gYm90aCBVbml4IGFuZCBWTVMsIGlmIGEgc3ViZGlyZWN0 b3J5IG9mZiBvZg0KIyB0aGUgSE9NRSBkaXJlY3RvcnkgaXMgZGVzaXJlZCwg dGhlIHBhdGggc2hvdWxkIGJlZ2luIHdpdGggIi4vIiAoZS5nLiwNCiMgLi9C TS9seW54X2Jvb2ttYXJrcy5odG1sKSwgYnV0IHRoZSBzdWJkaXJlY3Rvcnkg bXVzdCBhbHJlYWR5IGV4aXN0Lg0KIyBMeW54IHdpbGwgY3JlYXRlIHRoZSBi b29rbWFyayBmaWxlLCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBv bg0KIyB0aGUgZmlyc3QgQUREX0JPT0tNQVJLIGF0dGVtcHQgaWYgdGhlIEhP TUUgZGlyZWN0b3J5IGlzIGluZGljYXRlZA0KIyAoaS5lLiwgaWYgdGhlIGRl ZmluaXRpb24gaXMganVzdCBmaWxlbmFtZS5odG1sIHdpdGhvdXQgYW55IHNs YXNoZXMpLA0KIyBidXQgcmVxdWlyZXMgYSBwcmUtZXhpc3Rpbmcgc3ViZGly ZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZmlsZSB0aGVyZS4NCiMgVGhlIHVzZXIg Y2FuIHJlLWRlZmluZSB0aGUgZGVmYXVsdCBib29rbWFyayBmaWxlLCBhcyB3 ZWxsIGFzIGEgc2V0DQojIG9mIHN1Yi1ib29rbWFyayBmaWxlcyBpZiBtdWx0 aXBsZSBib29rbWFyayBmaWxlIHN1cHBvcnQgaXMgZW5hYmxlZA0KIyAoc2Vl IGJlbG93KSwgdmlhIHRoZSAnbydwdGlvbnMgbWVudSwgYW5kIGNhbiBzYXZl IHRob3NlIGRlZmluaXRpb25zDQojIGluIHRoZSAubHlueHJjIGZpbGUuDQoj DQojREVGQVVMVF9CT09LTUFSS19GSUxFOmx5bnhfYm9va21hcmtzLmh0bWwN Cg0KDQouaDIgTVVMVElfQk9PS01BUktfU1VQUE9SVA0KIyBJZiBNVUxUSV9C T09LTUFSS19TVVBQT1JUIGlzIHNldCBUUlVFLCBhbmQgQkxPQ0tfTVVMVElf Qk9PS01BUktTIChzZWUNCiMgYmVsb3cpIGlzIEZBTFNFLCBhbmQgc3ViLWJv b2ttYXJrcyBleGlzdCwgYWxsIGJvb2ttYXJrIG9wZXJhdGlvbnMgd2lsbA0K IyBmaXJzdCBwcm9tcHQgdGhlIHVzZXIgdG8gc2VsZWN0IGFuIGFjdGl2ZSBz dWItYm9va21hcmsgZmlsZSBvciB0aGUNCiMgZGVmYXVsdCBib29rbWFyayBm aWxlLiAgRkFMU0UgaXMgdGhlIGRlZmF1bHQgc28gdGhhdCBvbmUgKHRoZSBk ZWZhdWx0KQ0KIyBib29rbWFyayBmaWxlIHdpbGwgYmUgYXZhaWxhYmxlIGlu aXRpYWxseS4gIFRoZSBkZWZpbml0aW9uIGhlcmUgd2lsbA0KIyBvdmVycmlk ZSB0aGF0IGluIHVzZXJkZWZzLmguICBUaGUgdXNlciBjYW4gdHVybiBvbiBt dWx0aXBsZSBib29rbWFyaw0KIyBzdXBwb3J0IHZpYSB0aGUgJ28ncHRpb25z IG1lbnUsIGFuZCBjYW4gc2F2ZSB0aGF0IGNob2ljZSBhcyB0aGUgc3RhcnR1 cA0KIyBkZWZhdWx0IHZpYSB0aGUgLmx5bnhyYyBmaWxlLiAgV2hlbiBvbiwg dGhlIHNldHRpbmcgY2FuIGJlIFNUQU5EQVJEIG9yDQojIEFEVkFOQ0VELiAg SWYgU1VQUE9SVCBpcyBzZXQgdG8gdGhlIGxhdHRlciwgYW5kIHRoZSB1c2Vy IG1vZGUgYWxzbyBpcw0KIyBBRFZBTkNFRCwgdGhlIFZJRVdfQk9PS01BUksg Y29tbWFuZCB3aWxsIGludm9rZSBhIHN0YXR1c2xpbmUgcHJvbXB0IGF0DQoj IHdoaWNoIHRoZSB1c2VyIGNhbiBlbnRlciB0aGUgbGV0dGVyIHRva2VuIChB IC0gWikgb2YgdGhlIGRlc2lyZWQgYm9va21hcmssDQojIG9yICc9JyB0byBn ZXQgYSBtZW51IG9mIGF2YWlsYWJsZSBib29rbWFyayBmaWxlcy4gIFRoZSBt ZW51IGFsd2F5cyBpcw0KIyBwcmVzZW50ZWQgaW4gTk9WSUNFIG9yIElOVEVS TUVESUFURSBtb2RlLCBvciBpZiB0aGUgU1VQUE9SVCBpcyBzZXQgdG8NCiMg U1RBTkRBUkQuICBObyBwcm9tcHRpbmcgb3IgbWVudSBkaXNwbGF5IG9jY3Vy cyBpZiBvbmx5IG9uZSAodGhlIHN0YXJ0dXANCiMgZGVmYXVsdCkgYm9va21h cmsgZmlsZSBoYXMgYmVlbiBkZWZpbmVkIChkZWZpbmUgYWRkaXRpb25hbCBv bmVzIHZpYSB0aGUNCiMgJ28ncHRpb25zIG1lbnUpLiAgVGhlIHN0YXJ0dXAg ZGVmYXVsdCwgaG93ZXZlciBzZXQsIGNhbiBiZSBvdmVycmlkZGVuIG9uDQoj IHRoZSBjb21tYW5kIGxpbmUgdmlhIHRoZSAtcmVzdHJpY3Rpb25zPW11bHRp Ym9vayBvciB0aGUgLWFub255bW91cyBvcg0KIyAtdmFsaWRhdGUgc3dpdGNo ZXMuDQojDQojTVVMVElfQk9PS01BUktfU1VQUE9SVDpGQUxTRQ0KDQoNCi5o MiBCTE9DS19NVUxUSV9CT09LTUFSS1MNCiMgSWYgQkxPQ0tfTVVMVElfQk9P S01BUktTIGlzIHNldCBUUlVFLCBtdWx0aXBsZSBib29rbWFyayBzdXBwb3J0 IHdpbGwNCiMgYmUgZm9yY2VkIG9mZiwgYW5kIGNhbm5vdCB0byB0b2dnbGVk IG9uIHZpYSB0aGUgJ28ncHRpb25zIG1lbnUuICBUaGUNCiMgY29tcGlsYXRp b24gc2V0dGluZyBpcyBub3JtYWxseSBGQUxTRSwgYW5kIGNhbiBiZSBvdmVy cmlkZGVuIGhlcmUuDQojIEl0IGNhbiBhbHNvIGJlIHNldCB2aWEgdGhlIC1y ZXN0cmljdGlvbnM9bXVsdGlib29rIG9yIHRoZSAtYW5vbnltb3VzDQojIG9y IC12YWxpZGF0ZSBjb21tYW5kIGxpbmUgc3dpdGNoZXMuDQojDQojQkxPQ0tf TVVMVElfQk9PS01BUktTOkZBTFNFDQoNCg0KLmgxIEludGVyYWN0aW9uDQoN Ci5oMiBERUZBVUxUX1VTRVJfTU9ERQ0KIyBERUZBVUxUX1VTRVJfTU9ERSBz ZXRzIHRoZSBkZWZhdWx0IHVzZXIgbW9kZSBmb3IgTHlueCB1c2Vycy4NCiMg Tk9WSUNFIHNob3dzIGEgdGhyZWUgbGluZSBoZWxwIG1lc3NhZ2UgYXQgdGhl IGJvdHRvbSBvZiB0aGUgc2NyZWVuLg0KIyBJTlRFUk1FRElBVEUgc2hvd3Mg bm9ybWFsIGFtb3VudCBvZiBoZWxwIChvbmUgbGluZSkuDQojIEFEVkFOQ0VE IGhlbHAgaXMgcmVwbGFjZWQgYnkgdGhlIFVSTCBvZiB0aGUgY3VycmVudCBs aW5rLg0KIw0KI0RFRkFVTFRfVVNFUl9NT0RFOk5PVklDRQ0KDQoNCi5oMSBF eHRlcm5hbCBQcm9ncmFtcw0KDQouaDIgREVGQVVMVF9FRElUT1INCiMgSWYg REVGQVVMVF9FRElUT1IgaXMgZGVmaW5lZCwgdXNlcnMgbWF5IGVkaXQgbG9j YWwgZG9jdW1lbnRzIHdpdGggaXQNCiMgJiBpdCB3aWxsIGFsc28gYmUgdXNl ZCBmb3Igc2VuZGluZyBtYWlsIG1lc3NhZ2VzLg0KIyBJZiBubyBlZGl0b3Ig aXMgZGVmaW5lZCBoZXJlIG9yIGJ5IHRoZSB1c2VyLA0KIyB0aGUgdXNlciB3 aWxsIG5vdCBiZSBhYmxlIHRvIGVkaXQgbG9jYWwgZG9jdW1lbnRzDQojIGFu ZCBhIHByaW1pdGl2ZSBsaW5lLW9yaWVudGVkIG1haWwtaW5wdXQgbW9kZSB3 aWxsIGJlIHVzZWQuDQojDQojIEZvciBzeXNhZG1pbnM6IGRvIG5vdCBkZWZp bmUgYSBkZWZhdWx0IGVkaXRvcg0KIyB1bmxlc3MgeW91IGtub3cgRVZFUlkg dXNlciB3aWxsIGtub3cgaG93IHRvIHVzZSBpdDsNCiMgdXNlcnMgY2FuIGVh c2lseSBkZWZpbmUgdGhlaXIgb3duIGVkaXRvciBpbiB0aGUgT3B0aW9ucyBN ZW51Lg0KIw0KI0RFRkFVTFRfRURJVE9SOg0KDQoNCi5oMiBTWVNURU1fRURJ VE9SDQojIFNZU1RFTV9FRElUT1IgYmVoYXZlcyB0aGUgc2FtZSBhcyBERUZB VUxUX0VESVRPUiwNCiMgZXhjZXB0IHRoYXQgaXQgY2FuJ3QgYmUgY2hhbmdl ZCBieSB1c2Vycy4NCiMNCiNTWVNURU1fRURJVE9SOg0KDQoNCi5oMSBQcm94 eQ0KDQouaDIgSFRUUF9QUk9YWQ0KLmgyIEhUVFBTX1BST1hZDQouaDIgRlRQ X1BST1hZDQouaDIgR09QSEVSX1BST1hZDQouaDIgTkVXU1BPU1RfUFJPWFkN Ci5oMiBORVdTUkVQTFlfUFJPWFkNCi5oMiBORVdTX1BST1hZDQouaDIgTk5U UF9QUk9YWQ0KLmgyIFNORVdTUE9TVF9QUk9YWQ0KLmgyIFNORVdTUkVQTFlf UFJPWFkNCi5oMiBTTkVXU19QUk9YWQ0KLmgyIFdBSVNfUFJPWFkNCi5oMiBG SU5HRVJfUFJPWFkNCi5oMiBDU09fUFJPWFkNCiMgTHlueCB2ZXJzaW9uIDIu MiBhbmQgYmV5b25kIHN1cHBvcnRzIHRoZSB1c2Ugb2YgcHJveHkgc2VydmVy cyB0aGF0IGNhbiBhY3QgYXMNCiMgZmlyZXdhbGwgZ2F0ZXdheXMgYW5kIGNh Y2hpbmcgc2VydmVycy4gIFRoZXkgYXJlIHByZWZlcmFibGUgdG8gdGhlIG9s ZGVyDQojIGdhdGV3YXkgc2VydmVycy4gIEVhY2ggcHJvdG9jb2wgdXNlZCBi eSBMeW54IGNhbiBiZSBtYXBwZWQgc2VwYXJhdGVseSB1c2luZw0KIyBQUk9U T0NPTF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHNlZSBMeW54IFVz ZXJzIEd1aWRlKS4gIElmIHlvdSBoYXZlIG5vdCBzZXQNCiMgdGhlbSBleHRl cm5hbGx5LCB5b3UgY2FuIHNldCB0aGVtIGF0IHJ1biB0aW1lIHZpYSB0aGlz IGNvbmZpZ3VyYXRpb24gZmlsZS4NCiMgVGhleSB3aWxsIG5vdCBvdmVycmlk ZSBleHRlcm5hbCBzZXR0aW5ncy4gIFRoZSBub19wcm94eSB2YXJpYWJsZSBj YW4gYmUgdXNlZA0KIyB0byBpbmhpYml0IHByb3h5aW5nIHRvIHNlbGVjdGVk IHJlZ2lvbnMgb2YgdGhlIFdlYiAoc2VlIGJlbG93KS4gIE5vdGUgdGhhdCBv bg0KIyBWTVMgdGhlc2UgcHJveHkgdmFyaWFibGVzIGFyZSBzZXQgYXMgcHJv Y2VzcyBsb2dpY2FscyByYXRoZXIgdGhhbiBzeW1ib2xzLCB0bw0KIyBwcmVz ZXJ2ZSBsb3dlcmNhc2luZywgYW5kIHdpbGwgb3V0bGl2ZSB0aGUgTHlueCBp bWFnZS4NCiMNCi5leCAxNQ0KI2h0dHBfcHJveHk6aHR0cDovL3NvbWUuc2Vy dmVyLmRvbTpwb3J0Lw0KI2h0dHBzX3Byb3h5Omh0dHA6Ly9zb21lLnNlcnZl ci5kb206cG9ydC8NCiNmdHBfcHJveHk6aHR0cDovL3NvbWUuc2VydmVyLmRv bTpwb3J0Lw0KI2dvcGhlcl9wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9t OnBvcnQvDQojbmV3c19wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9tOnBv cnQvDQojbmV3c3Bvc3RfcHJveHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpw b3J0Lw0KI25ld3NyZXBseV9wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9t OnBvcnQvDQojc25ld3NfcHJveHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpw b3J0Lw0KI3NuZXdzcG9zdF9wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9t OnBvcnQvDQojc25ld3NyZXBseV9wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIu ZG9tOnBvcnQvDQojbm50cF9wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9t OnBvcnQvDQojd2Fpc19wcm94eTpodHRwOi8vc29tZS5zZXJ2ZXIuZG9tOnBv cnQvDQojZmluZ2VyX3Byb3h5Omh0dHA6Ly9zb21lLnNlcnZlci5kb206cG9y dC8NCiNjc29fcHJveHk6aHR0cDovL3NvbWUuc2VydmVyLmRvbTpwb3J0Lw0K I25vX3Byb3h5Omhvc3QuZG9tYWluLmRvbQ0KDQoNCi5oMiBOT19QUk9YWQ0K IyBUaGUgbm9fcHJveHkgdmFyaWFibGUgY2FuIGJlIGEgY29tbWEtc2VwYXJh dGVkIGxpc3Qgb2Ygc3RyaW5ncyBkZWZpbmluZw0KIyBuby1wcm94eSB6b25l cyBpbiB0aGUgRE5TIGRvbWFpbiBuYW1lIHNwYWNlLiAgSWYgYSB0YWlsIHN1 YnN0cmluZyBvZiB0aGUNCiMgZG9tYWluLXBhdGggZm9yIGEgaG9zdCBtYXRj aGVzIG9uZSBvZiB0aGVzZSBzdHJpbmdzLCB0cmFuc2FjdGlvbnMgd2l0aCB0 aGF0DQojIG5vZGUgd2lsbCBub3QgYmUgcHJveGllZC4NCi5leA0KI25vX3By b3h5OmRvbWFpbi5wYXRoMSxwYXRoMg0KIw0KIyBBIHNpbmdsZSBhc3Rlcmlz ayBhcyBhbiBlbnRyeSB3aWxsIG92ZXJyaWRlIGFsbCBwcm94eSB2YXJpYWJs ZXMgYW5kIG5vDQojIHRyYW5zYWN0aW9ucyB3aWxsIGJlIHByb3hpZWQuDQou ZXgNCiNub19wcm94eToqDQojIFRoaXMgaXMgdGhlIG9ubHkgYWxsb3dlZCB1 c2Ugb2YgKiBpbiBub19wcm94eS4NCiMNCiMgV2FybmluZzogIE5vdGUgdGhh dCBzZXR0aW5nICdpbCcgYXMgYW4gZW50cnkgaW4gdGhpcyBsaXN0IHdpbGwg YmxvY2sgcHJveHlpbmcNCiMgZm9yIHRoZSAubWlsIGRvbWFpbiBhcyB3ZWxs IGFzIHRoZSAuaWwgZG9tYWluLiAgSWYgdGhlIGVudHJ5IGlzICcuaWwnIHRo aXMNCiMgd2lsbCBub3QgaGFwcGVuLg0KDQoNCi5oMSBFeHRlcm5hbCBQcm9n cmFtcw0KDQouaDIgUFJJTlRFUg0KLmgyIERPV05MT0FERVINCi5oMiBVUExP QURFUg0KIyBQUklOVEVSLCBET1dOTE9BREVSICYgVVBMT0FERVIgREVGSU5J VElPTlM6DQojIEx5bnggaGFzIDQgcHJlLWRlZmluZWQgcHJpbnQgb3B0aW9u cyAmIDEgcHJlLWRlZmluZWQgZG93bmxvYWQgb3B0aW9uLA0KIyB3aGljaCBh cmUgY2FsbGVkIHVwIG9uLXNjcmVlbiB3aGVuIGBwJyBvciBgZCcgYXJlIGVu dGVyZWQ7DQojIGFueSBudW1iZXIgb2Ygb3B0aW9ucyBjYW4gYmUgYWRkZWQg YnkgdGhlIHVzZXIsIGFzIGV4cGxhaW5lZCBiZWxvdy4NCiMgVXBsb2FkZXJz IGNhbiBiZSBkZWZpbmVkIG9ubHkgZm9yIFVOSVggd2l0aCBESVJFRF9TVVBQ T1JUOg0KIyBzZWUgdGhlIE1ha2VmaWxlIGluIHRoZSB0b3AgZGlyZWN0b3J5 ICYgdGhlIGhlYWRlciBvZiBzcmMvTFlVcGxvYWQuYyAuDQojDQojIEZvciBg cCcgcHJlLWRlZmluZWQgb3B0aW9ucyBhcmU6IGBTYXZlIHRvIGxvY2FsIGZp bGUnLCBgRS1tYWlsIHRoZSBmaWxlJywNCiMgYFByaW50IHRvIHNjcmVlbicg YW5kIGBQcmludCB0byBsb2NhbCBwcmludGVyIGF0dGFjaGVkIHRvIHZ0MTAw Jy4NCiMgYFByaW50IHRvIHNjcmVlbicgYWxsb3dzIGZpbGUgdHJhbnNmZXJz IGluIHRoZSBhYnNlbmNlIG9mIGFsdGVybmF0aXZlcw0KIyBhbmQgaXMgb2Z0 ZW4gdGhlIG9ubHkgb3B0aW9uIGFsbG93ZWQgaGVyZSBmb3IgYW5vbnltb3Vz IHVzZXJzOw0KIyB0aGUgM3JkICYgNHRoIG9wdGlvbnMgYXJlIG5vdCBwcmUt ZGVmaW5lZCBmb3IgRE9TL1dJTkRPV1MgdmVyc2lvbnMgb2YgTHlueC4NCiMg Rm9yIGBkJyB0aGUgcHJlLWRlZmluZWQgb3B0aW9uIGlzOiBgRG93bmxvYWQg dG8gbG9jYWwgZmlsZScuDQojDQojIFRvIGRlZmluZSB5b3VyIG93biBwcmlu dCBvciBkb3dubG9hZCBvcHRpb24gdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0 czoNCiMNCiMgUFJJTlRFUjo8bmFtZT46PGNvbW1hbmQ+OjxvcHRpb24+Ojxs aW5lcy9wYWdlPg0KIw0KIyBET1dOTE9BREVSOjxuYW1lPjo8Y29tbWFuZD46 PG9wdGlvbj4NCiMNCiMgPG5hbWU+ICAgICAgIGlzIHdoYXQgeW91IHdpbGwg c2VlIG9uIHRoZSBwcmludC9kb3dubG9hZCBzY3JlZW4uDQojDQojIDxjb21t YW5kPiAgICBpcyB0aGUgY29tbWFuZCB5b3VyIHN5c3RlbSB3aWxsIGV4ZWN1 dGU6DQojICAgICAgICAgICAgICB0aGUgMXN0ICVzIGluIHRoZSBjb21tYW5k IHdpbGwgYmUgcmVwbGFjZWQNCiMgICAgICAgICAgICAgIGJ5IHRoZSB0ZW1w b3JhcnkgZmlsZW5hbWUgdXNlZCBieSBMeW54Ow0KIyAgICAgICAgICAgICAg YSAybmQgJXMgd2lsbCBiZSByZXBsYWNlZCBieSBhIGZpbGVuYW1lIG9mIHlv dXIgY2hvaWNlLA0KIyAgICAgICAgICAgICAgZm9yIHdoaWNoIEx5bnggd2ls bCBwcm9tcHQsIG9mZmVyaW5nIGEgc3VnZ2VzdGlvbi4NCiMgICAgICAgICAg ICAgIE9uIFVuaXgsIHdoaWNoIGhhcyBwaXBlcywgeW91IG1heSB1c2UgYSAn fCcgYXMgdGhlIGZpcnN0DQojICAgICAgICAgICAgICBjaGFyYWN0ZXIgb2Yg dGhlIGNvbW1hbmQsIGFuZCBMeW54IHdpbGwgb3BlbiBhIHBpcGUgdG8NCiMg ICAgICAgICAgICAgIHRoZSBjb21tYW5kLg0KIyAgICAgICAgICAgICAgSWYg dGhlIGNvbW1hbmQgZm9ybWF0IG9mIHlvdXIgcHJpbnRlci9kb3dubG9hZGVy IHJlcXVpcmVzDQojICAgICAgICAgICAgICBhIGRpZmZlcmVudCBsYXlvdXQs IHlvdSB3aWxsIG5lZWQgdG8gdXNlIGEgc2NyaXB0DQojICAgICAgICAgICAg ICAoc2VlIHRoZSBsYXN0IDIgZG93bmxvYWQgZXhhbXBsZXMgYmVsb3cpLg0K Iw0KIyA8b3B0aW9uPiAgICAgVFJVRSA6IHRoZSBwcmludGVyL2Rvd25sb2Fk ZXIgd2lsbCBhbHdheXMgYmUgRU5BQkxFRCwNCiMgICAgICAgICAgICAgIGV4 Y2VwdCB0aGF0IGRvd25sb2FkaW5nIGlzIGRpc2FibGVkIHdoZW4gLXZhbGlk YXRlIGlzIHVzZWQ7DQojICAgICAgICAgICAgICBGQUxTRSA6IGJvdGggd2ls bCBiZSBESVNBQkxFRCBmb3IgYW5vbnltb3VzIHVzZXJzDQojICAgICAgICAg ICAgICBhbmQgcHJpbnRpbmcgd2lsbCBiZSBkaXNhYmxlZCB3aGVuIC1ub3By aW50IGlzIHVzZWQuDQojDQojIDxsaW5lcy9wYWdlPiAocHJpbnRlcnM6IG9w dGlvbmFsKSB0aGUgbnVtYmVyIG9mIGxpbmVzL3BhZ2UgKGRlZmF1bHQgNjYp Og0KIyAgICAgICAgICAgICAgdXNlZCB0byBjb21wdXRlIHRoZSBhcHByb3hp bWF0ZSBvdXRwdXQgc2l6ZQ0KIyAgICAgICAgICAgICAgYW5kIHByb21wdCBp ZiB0aGUgZG9jdW1lbnQgaXMgPiA0IHByaW50ZXIgcGFnZXM7DQojICAgICAg ICAgICAgICBpdCB1c2VzIGN1cnJlbnQgc2NyZWVuIGxlbmd0aCBmb3IgdGhl IGNvbXB1dGF0aW9uDQojICAgICAgICAgICAgICB3aGVuIGBQcmludCB0byBz Y3JlZW4nIGlzIHNlbGVjdGVkLg0KIw0KIyBZb3UgbXVzdCBwdXQgdGhlIHdo b2xlIGRlZmluaXRpb24gb24gb25lIGxpbmU7DQojIGlmIHlvdSB1c2UgYSBj b2xvbiwgcHJlY2VkZSBpdCB3aXRoIGEgYmFja3NsYXNoLg0KIw0KIyBgUHJp bnRlcicgY2FuIGJlIGFueSBmaWxlLWhhbmRsaW5nIHByb2dyYW0geW91IGZp bmQgdXNlZnVsLA0KIyBldmVuIGlmIGl0IGRvZXMgbm90IHBoeXNpY2FsbHkg cHJpbnQgYW55dGhpbmcuDQojDQojIFVzdWFsbHksIGRvd24vdXAtbG9hZGlu ZyBpbnZvbHZlcyB0aGUgdXNlIG9mIChlLmcuKSBDa2VybWl0IG9yIFpNb2Rl bQ0KIyB0byB0cmFuc2ZlciBmaWxlcyB0byBhIHVzZXIncyBsb2NhbCBtYWNo aW5lIG92ZXIgYSBzZXJpYWwgbGluaywNCiMgYnV0IGRvd25sb2FkIG9wdGlv bnMgZG8gbm90IGhhdmUgdG8gYmUgZG93bmxvYWQtcHJvdG9jb2wgcHJvZ3Jh bXMuDQojDQojIFByaW50ZXIgZXhhbXBsZXM6DQouZXggMw0KI1BSSU5URVI6 Q29tcHV0ZXIgQ2VudGVyIHByaW50ZXI6bHByIC1QY2NwcnQgJXM6RkFMU0UN CiNQUklOVEVSOk9mZmljZSBwcmludGVyOmxwciAtUE9mZnBydCAlczpUUlVF DQojUFJJTlRFUjpWTVMgcHJpbnRlcjpwcmludCAvcXVldWU9Y2MkcHJpbnQg JXM6RkFMU0U6NTgNCiMgSWYgeW91IGhhdmUgYSB2ZXJ5IGJ1c3kgVk1TIHBy aW50IHF1ZXVlDQojIGFuZCBMeW54IGRlbGV0ZXMgdGhlIHRlbXBvcmFyeSBm aWxlcyBiZWZvcmUgdGhleSBoYXZlIGJlZW4gcXVldWVkLA0KIyB1c2UgdGhl IFZNU1ByaW50LmNvbSBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uOg0K LmV4DQojUFJJTlRFUjpCdXN5IFZNUyBwcmludGVyOkBMeW54X0Rpclw6Vk1T UHJpbnQgc3lzJHByaW50ICVzOkZBTFNFOjU4DQojIFRvIHNwZWNpZnkgYSBw cmludCBvcHRpb24gYXQgcnVuLXRpbWU6DQojIE5CQiBpZiB5b3UgaGF2ZSBB Tk9OWU1PVVMgdXNlcnMsIERPIE5PVCBhbGxvdyB0aGlzIG9wdGlvbiENCi5l eA0KI1BSSU5URVI6U3BlY2lmeSBhdCBydW4tdGltZTplY2hvIC1uICJFbnRl ciBhIHByaW50IGNvbW1hbmRcOiAiOyByZWFkIHdvcmQ7IHNoIC1jICIkd29y ZCAlcyI6RkFMU0UNCiMgVG8gcGFzcyB0byBhIHNvcGhpc3RpY2F0ZWQgZmls ZSB2aWV3ZXI6IC1rIHN1cHByZXNzZXMgaW52b2NhdGlvbg0KIyBvZiBoZXgg ZGlzcGxheSBtb2RlIGlmIDgtYml0IG9yIGNvbnRyb2wgY2hhcmFjdGVycyBh cmUgcHJlc2VudDsNCiMgK3MgaW52b2tlcyBzZWN1cmUgbW9kZSAoc2VlIGZ0 cDovL3NwYWNlLm1pdC5lZHUvcHViL2RhdmlzL21vc3QpOg0KLmV4DQojUFJJ TlRFUjpVc2UgTW9zdCB0byB2aWV3Om1vc3QgLWsgK3MgJXM6VFJVRToyMw0K Iw0KIyBEb3dubG9hZGVyIGV4YW1wbGVzOg0KIyBpbiBLZXJtaXQsIC1zICVz IGlzIHRoZSBmaWxlbmFtZSBzZW50LCAtYSAlcyB0aGUgZmlsZW5hbWUgb24g YXJyaXZhbA0KIyAoaWYgdGhleSBhcmUgZ2l2ZW4gaW4gcmV2ZXJzZSBvcmRl ciBoZXJlLCB0aGUgY29tbWFuZCB3aWxsIGZhaWwpOg0KLmV4DQojRE9XTkxP QURFUjpVc2UgS2VybWl0IHRvIGRvd25sb2FkIHRvIHRoZSB0ZXJtaW5hbDpr ZXJtaXQgLWkgLXMgJXMgLWEgJXM6VFJVRQ0KIyBOQiBkb24ndCB1c2UgLWsg d2l0aCBNb3N0LCBzbyB0aGF0IGJpbmFyaWVzIHdpbGwgaW52b2tlIGhleGFk ZWNpbWFsIG1vZGU6DQouZXgNCiNET1dOTE9BREVSOlVzZSBNb3N0IHRvIHZp ZXc6bW9zdCArcyAlczpUUlVFDQojIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBn aXZlcyB3cm9uZyBmaWxlbmFtZXMNCiMgKGBzeicgZG9lc24ndCBzdXBwb3J0 IGEgc3VnZ2VzdGVkIGZpbGVuYW1lIHBhcmFtZXRlcik6DQouZXgNCiNET1dO TE9BREVSOlVzZSBabW9kZW0gdG8gZG93bmxvYWQgdG8gdGhlIGxvY2FsIHRl cm1pbmFsOnN6ICVzOlRSVUUNCiMgVGhlIGZvbGxvd2luZyBleGFtcGxlIHJl dHVybnMgY29ycmVjdCBmaWxlbmFtZXMNCiMgYnkgdXNpbmcgYSBzY3JpcHQg dG8gbWFrZSBhIHN1YmRpcmVjdG9yeSBpbiAvdG1wLA0KIyBidXQgbWF5IGNv bmZsaWN0IHdpdGggdmVyeSBzdHJvbmcgc2VjdXJpdHkgb3IgcGVybWlzc2lv bnMgcmVzdHJpY3Rpb25zOg0KLmV4DQojRE9XTkxPQURFUjpVc2UgWm1vZGVt IHRvIGRvd25sb2FkIHRvIHRoZSBsb2NhbCB0ZXJtaW5hbDpzZXQgJXMgJXM7 dGQ9L3RtcC9Mc3okJDtta2RpciAkdGQ7bG4gLXMgJDEgJHRkLyIkMiI7c3og JHRkLyIkMiI7cm0gLXIgJHRkOlRSVUUNCi5leCAyDQojVVBMT0FERVI6VXNl IEtlcm1pdCB0byB1cGxvYWQgZnJvbSB5b3VyIGNvbXB1dGVyOiBrZXJtaXQg LWkgLXIgLWEgJXM6VFJVRQ0KI1VQTE9BREVSOlVzZSBabW9kZW0gdG8gdXBs b2FkIGZyb20geW91ciBjb21wdXRlcjogcnogJXM6VFJVRQ0KIw0KIyBOb3Rl IGZvciBPUy8zOTA6IC8qIFMvMzkwIC0tIGdpbCAtLSAxNDY0ICovDQojIFRo ZSBmb2xsb3dpbmcgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gdW5kbyBB U0NJSS0+RUJDRElDIGNvbnZlcnNpb24uDQouZXgNCiNET1dOTE9BREVSOlNh dmUgT1MvMzkwIGJpbmFyeSBmaWxlOiBpY29udiAtZiBJQk0tMTA0NyAtdCBJ U084ODU5LTEgJXMgPiVzOkZBTFNFDQoNCiMgQWRkZWQgYnkgUmVkIEhhdDog DQpET1dOTE9BREVSOlZpZXcgd2l0aCBsZXNzOmxlc3MgJXM6VFJVRSANCg0K DQouaDEgSW50ZXJhY3Rpb24NCg0KLmgyIE5PX0RPVF9GSUxFUw0KIyBJZiBO T19ET1RfRklMRVMgaXMgVFJVRSAobm9ybWFsIGRlZmF1bHQgdmlhIHVzZXJk ZWZzLmgpLCB0aGUgdXNlciB3aWxsIG5vdA0KIyBiZSBhbGxvd2VkIHRvIHNw ZWNpZnkgZmlsZXMgYmVnaW5uaW5nIHdpdGggYSBkb3QgaW4gcmVwbHkgdG8g b3V0cHV0IGZpbGVuYW1lDQojIHByb21wdHMsIGFuZCBmaWxlcyBiZWdpbm5p bmcgd2l0aCBhIGRvdCAoZS5nLiwgZmlsZTovL2xvY2FsaG9zdC9wYXRoLy5s eW54cmMpDQojIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBkaXJlY3Rv cnkgYnJvd3NlcidzIGxpc3RpbmdzLiAgSWYgc2V0IEZBTFNFLCB5b3UNCiMg Y2FuIGZvcmNlIGl0IHRvIGJlIHRyZWF0ZWQgYXMgVFJVRSB2aWEgLXJlc3Ry aWN0aW9ucz1kb3RmaWxlcy4gIElmIHNldCBGQUxTRQ0KIyBhbmQgbm90IGZv cmNlZCBUUlVFLCB0aGUgdXNlciBjYW4gcmVndWxhdGUgaXQgdmlhIHRoZSAn bydwdGlvbnMgbWVudSAoYW5kDQojIG1heSBzYXZlIHRoZSBwcmVmZXJlbmNl IGluIHRoZSBSQyBmaWxlKS4NCiMNCiNOT19ET1RfRklMRVM6VFJVRQ0KDQoN Ci5oMSBJbnRlcm5hbCBCZWhhdmlvcg0KDQouaDIgTk9fRlJPTV9IRUFERVIN CiMgSWYgTk9fRlJPTV9IRUFERVIgaXMgc2V0IEZBTFNFLCBGcm9tIGhlYWRl cnMgd2lsbCBiZSBzZW50IGluIHRyYW5zbWlzc2lvbnMNCiMgdG8gaHR0cCBv ciBodHRwcyBzZXJ2ZXJzIGlmIHRoZSBwZXJzb25hbF9tYWlsX2FkZHJlc3Mg aGFzIGJlZW4gZGVmaW5lZCB2aWENCiMgdGhlICdvJ3B0aW9ucyBtZW51LiAg VGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQgaXMgVFJVRSAobm8gRnJvbSBoZWFk ZXIgaXMNCiMgc2VudCkgYW5kIHRoZSBkZWZhdWx0IGNhbiBiZSBjaGFuZ2Vk IGhlcmUuICBUaGUgZGVmYXVsdCBjYW4gYmUgdG9nZ2xlZCBhdA0KIyBydW4g dGltZSB2aWEgdGhlIC1mcm9tIHN3aXRjaC4gIE5vdGUgdGhhdCB0cmFuc21p c3Npb25zIG9mIEZyb20gaGVhZGVycw0KIyBoYXZlIGJlY29tZSB3aWRlbHkg Y29uc2lkZXJlZCB0byBjcmVhdGUgYW4gaW52YXNpb24gb2YgcHJpdmFjeSBy aXNrLg0KIw0KI05PX0ZST01fSEVBREVSOlRSVUUNCg0KDQouaDIgTk9fUkVG RVJFUl9IRUFERVINCiMgSWYgTk9fUkVGRVJFUl9IRUFERVIgaXMgVFJVRSwg UmVmZXJlciBoZWFkZXJzIG5ldmVyIHdpbGwgYmUgc2VudCBpbg0KIyB0cmFu c21pc3Npb25zIHRvIHNlcnZlcnMuICBMeW54IG5vcm1hbGx5IHNlbmRzIHRo ZSBVUkwgb2YgdGhlIGRvY3VtZW50DQojIGZyb20gd2hpY2ggdGhlIGxpbmsg d2FzIGRlcml2ZWQsIGJ1dCBub3QgZm9yIHN0YXJ0ZmlsZSBVUkxzLCAnZydv dG8NCiMgVVJMcywgJ2ondW1wIHNob3J0Y3V0cywgYm9va21hcmsgZmlsZSBs aW5rcywgaGlzdG9yeSBsaXN0IGxpbmtzLCBvcg0KIyBVUkxzIHRoYXQgaW5j bHVkZSB0aGUgY29udGVudCBmcm9tIGZvcm0gc3VibWlzc2lvbnMgd2l0aCBt ZXRob2QgR0VULg0KIyBJZiBsZWZ0IEZBTFNFIGhlcmUsIGl0IGNhbiBiZSBz ZXQgVFJVRSBhdCBydW4gdGltZSB2aWEgdGhlIC1ub3JlZmVyZXINCiMgc3dp dGNoLg0KIw0KI05PX1JFRkVSRVJfSEVBREVSOkZBTFNFDQoNCg0KLmgxIElu dGVybmFsIEJlaGF2aW9yDQoNCi5oMiBOT19GSUxFX1JFRkVSRVINCiMgSWYg Tk9fRklMRV9SRUZFUkVSIGlzIFRSVUUsIFJlZmVyZXIgaGVhZGVycyBuZXZl ciB3aWxsIGJlIHNlbnQgaW4NCiMgdHJhbnNtaXNzaW9ucyB0byBzZXJ2ZXJz IGZvciBsaW5rcyBvciBhY3Rpb25zIGRlcml2ZWQgZnJvbSBkb2N1bWVudHMN CiMgb3IgZm9ybXMgd2l0aCBmaWxlIFVSTHMuICBUaGlzIGVuc3VyZXMgdGhh dCBwYXRocyBhc3NvY2lhdGVkIHdpdGgNCiMgdGhlIGxvY2FsIGZpbGUgc3lz dGVtIGFyZSBuZXZlciBpbmRpY2F0ZWQgdG8gc2VydmVycywgZXZlbiBpZg0K IyBOT19SRUZFUkVSX0hFQURFUiBpcyBGQUxTRS4gIElmIHNldCB0byBGQUxT RSBoZXJlLCBpdCBjYW4gc3RpbGwgYmUNCiMgc2V0IFRSVUUgYXQgcnVuIHRp bWUgdmlhIHRoZSAtbm9maWxlcmVmZXJlciBzd2l0Y2guDQojDQojTk9fRklM RV9SRUZFUkVSOlRSVUUNCg0KDQouaDIgUkVGRVJFUl9XSVRIX1FVRVJZDQoj IFJFRkVSRVJfV0lUSF9RVUVSWSBjb250cm9scyB3aGF0IGhhcHBlbnMgd2hl biB0aGUgVVJMIGluIGEgUmVmZXJlcg0KIyBoZWFkZXIgdG8gYmUgc2VudCB3 b3VsZCBjb250YWluIGEgcXVlcnkgcGFydCBpbiB0aGUgZm9ybSBvZiBhICc/ Jw0KIyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgYXR0cmli dXRlPXZhbHVlIHBhaXJzLiAgUXVlcnkgcGFydHMNCiMgb2Z0ZW4gY29udGFp biBzZW5zaXRpdmUgb3IgcGVyc29uYWwgaW5mb3JtYXRpb24gcmVzdWx0aW5n IGZyb20gZmlsbGluZw0KIyBvdXQgZm9ybXMsIG9yIG90aGVyIGluZm8gdGhh dCBhbGxvd3MgdHJhY2tpbmcgb2YgYSB1c2VyJ3MgYnJvd3NpbmcgcGF0aA0K IyB0aHJvdWdoIGEgc2l0ZSwgYW4gdGh1cyBzaG91bGQgbm90IGJlIHB1dCBp biBhIFJlZmVyZXIgaGVhZGVyICh3aGljaCBtYXkNCiMgZ2V0IHNlbnQgdG8g YW4gdW5yZWxhdGVkIHRoaXJkLXBhcnR5IHNpdGUpLiAgT24gdGhlIG90aGVy IGhhbmQsIHNvbWUNCiMgc2l0ZXMgKGltcHJvcGVybHkpIHJlbHkgb24gYnJv d3NlcnMgc2VuZGluZyBSZWZlcmVyIGhlYWRlcnMsIGV2ZW4gd2hlbg0KIyB0 aGUgdXNlciBpcyBjb21pbmcgZnJvbSBhIHBhZ2Ugd2hvc2UgVVJMIGhhcyBh IHF1ZXJ5IHBhcnQuDQojDQojIElmIFJFRkVSRVJfV0lUSF9RVUVSWSBpcyBT RU5ELCBmdWxsIFJlZmVyZXIgaGVhZGVycyB3aWxsIGJlIHNlbnQNCiMgaW5j bHVkaW5nIHRoZSBxdWVyeSBwYXJ0ICh1bmxlc3Mgc2VuZGluZyBvZiBSZWZl cmVyIGlzIGRpc2FibGVkIGluDQojIGdlbmVyYWwsIHNlZSBOT19SRUZFUkVS X0hFQURFUiBhYm92ZSkuICBJZiBSRUZFUkVSX1dJVEhfUVVFUlkgaXMNCiMg UEFSVElBTCwgdGhlIFJlZmVyZXIgaGVhZGVyIHdpbGwgY29udGFpbiBhIHBh cnRpYWwgVVJMLCB3aXRoIHRoZSBxdWVyeQ0KIyBwYXJ0IHN0cmlwcGVkIG9m Zi4gIFRoaXMgaXMgbm90IHN0cmljdGx5IGNvcnJlY3QsIGJ1dCBzaG91bGQg c2F0aXNmeQ0KIyB0aG9zZSBzaXRlcyB0aGF0IGNoZWNrIG9ubHkgd2hldGhl ciB0aGUgdXNlciBhcnJpdmVkIGF0IGEgcGFnZSBmcm9tIGFuDQojICJvdXRz aWRlIiBsaW5rLiAgSWYgUkVGRVJFUl9XSVRIX1FVRVJZIGlzIHNldCB0byBE Uk9QIChvciBhbnl0aGluZyBlbHNlDQojIHVucmVjb2duaXplZCksIHRoZSBk ZWZhdWx0LCBubyBSZWZlcmVyIGhlYWRlciBpcyBzZW50IGF0IGFsbCBpbiB0 aGlzDQojIHNpdHVhdGlvbi4NCiMNCiNSRUZFUkVSX1dJVEhfUVVFUlk6RFJP UA0KDQoNCi5oMSBBcHBlYXJhbmNlDQoNCi5oMiBWRVJCT1NFX0lNQUdFUw0K IyBWRVJCT1NFX0lNQUdFUyBjb250cm9scyB3aGV0aGVyIEx5bnggcmVwbGFj ZXMgW0xJTktdLCBbSU5MSU5FXSBhbmQgW0lNQUdFXQ0KIyAoZm9yIGltYWdl cyB3aXRob3V0IEFMVCkgd2l0aCBmaWxlbmFtZXMgb2YgdGhlc2UgaW1hZ2Vz Lg0KIyBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gZGV0ZXJtaW5pbmcgd2hhdCBp bWFnZXMgYXJlIGltcG9ydGFudA0KIyBhbmQgd2hpY2ggYXJlIG1lcmUgZGVj b3JhdGlvbnMsIGUuZy4gYnV0dG9uLmdpZiwgbGluZS5naWYsDQojIHByb3Zp ZGVkIHRoZSBhdXRob3IgdXNlcyBtZWFuaW5nZnVsIG5hbWVzLg0KIw0KIyBU aGUgZGVmaW5pdGlvbiBoZXJlIHdpbGwgb3ZlcnJpZGUgdGhlIHNldHRpbmcg aW4gdXNlcmRlZnMuaC4NCiMNCiNWRVJCT1NFX0lNQUdFUzpUUlVFDQoNCg0K LmgyIE1BS0VfTElOS1NfRk9SX0FMTF9JTUFHRVMNCiMgSWYgTUFLRV9MSU5L U19GT1JfQUxMX0lNQUdFUyBpcyBUUlVFLCBhbGwgaW1hZ2VzIHdpbGwgYmUg Z2l2ZW4gbGlua3MNCiMgd2hpY2ggY2FuIGJlIEFDVElWQVRFZC4gIEZvciBp bmxpbmVzLCB0aGUgQUxUIG9yIHBzZXVkby1BTFQgKCJbSU5MSU5FXSIpDQoj IHN0cmluZ3Mgd2lsbCBiZSBsaW5rcyBmb3IgdGhlIHJlc29sdmVkIFNSQyBy YXRoZXIgdGhhbiBqdXN0IHRleHQuDQojIEZvciBJU01BUCBvciBvdGhlciBn cmFwaGljIGxpbmtzLCBBTFQgb3IgcHNldWRvLUFMVCAoIltJU01BUF0iIG9y ICJbTElOS10iKQ0KIyB3aWxsIGhhdmUgJy0nIGFuZCBhIGxpbmsgbGFiZWxl ZCAiW0lNQUdFXSIgZm9yIHRoZSByZXNvbHZlZCBTUkMgYXBwZW5kZWQuDQoj IFNlZSBhbHNvIFZFUkJPU0VfSU1BR0VTIGZsYWcuDQojDQojIFRoZSBkZWZp bml0aW9uIGhlcmUgd2lsbCBvdmVycmlkZSB0aGF0IGluIHVzZXJkZWZzLmgN CiMgYW5kIGNhbiBiZSB0b2dnbGVkIHZpYSBhbiAiLWltYWdlX2xpbmtzIiBj b21tYW5kLWxpbmUgc3dpdGNoLg0KIyBUaGUgdXNlciBjYW4gYWxzbyB1c2Ug dGhlIExZS19JTUFHRV9UT0dHTEUga2V5IChkZWZhdWx0IGAqJykNCiMgb3Ig YFNob3cgSW1hZ2VzJyBpbiB0aGUgRm9ybS1iYXNlZCBPcHRpb25zIE1lbnUu DQojDQojTUFLRV9MSU5LU19GT1JfQUxMX0lNQUdFUzpGQUxTRQ0KDQouaDIg TUFLRV9QU0VVRE9fQUxUU19GT1JfSU5MSU5FUw0KIyBJZiBNQUtFX1BTRVVE T19BTFRTX0ZPUl9JTkxJTkVTIGlzIEZBTFNFLCBpbmxpbmUgaW1hZ2VzIHdo aWNoIGRvbid0IHNwZWNpZnkNCiMgYW4gQUxUIHN0cmluZyB3aWxsIG5vdCBo YXZlICJbSU5MSU5FXSIgaW5zZXJ0ZWQgYXMgYSBwc2V1ZG8tQUxULA0KIyBp LmUuIHRoZXknbGwgYmUgdHJlYXRlZCBhcyBoYXZpbmcgQUxUPSIiLg0KIyBP dGhlcndpc2UgKGlmIFRSVUUpLCBwc2V1ZG8tQUxUcyB3aWxsIGJlIGNyZWF0 ZWQgZm9yIGlubGluZXMsDQojIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBh cyBsaW5rcyB0byB0aGUgU1JDcy4NCiMgU2VlIGFsc28gVkVSQk9TRV9JTUFH RVMgZmxhZy4NCiMNCiMgVGhlIGRlZmluaXRpb24gaGVyZSB3aWxsIG92ZXJy aWRlIHRoYXQgaW4gdXNlcmRlZnMuaA0KIyBhbmQgY2FuIGJlIHRvZ2dsZWQg dmlhIGEgIi1wc2V1ZG9faW5saW5lcyIgY29tbWFuZC1saW5lIHN3aXRjaC4N CiMgVGhlIHVzZXIgY2FuIGFsc28gdXNlIHRoZSBMWUtfSU5MSU5FX1RPR0dM RSBrZXkgKGRlZmF1bHQgYFsnKQ0KIyBvciBgU2hvdyBJbWFnZXMnIGluIHRo ZSBGb3JtLWJhc2VkIE9wdGlvbnMgTWVudS4NCiMNCiNNQUtFX1BTRVVET19B TFRTX0ZPUl9JTkxJTkVTOlRSVUUNCg0KDQouaDIgU1VCU1RJVFVURV9VTkRF UlNDT1JFUw0KIyBJZiBTVUJTVElUVVRFX1VOREVSU0NPUkVTIGlzIFRSVUUs IHRoZSBfdW5kZXJsaW5lXyBmb3JtYXQgd2lsbCBiZSB1c2VkDQojIGZvciBl bXBoYXNpcyB0YWdzIGluIGR1bXBzLg0KIw0KIyBUaGUgZGVmYXVsdCBkZWZp bmVkIGhlcmUgd2lsbCBvdmVycmlkZSB0aGF0IGluIHVzZXJkZWZzLmgsIGFu ZCB0aGUgdXNlcg0KIyBjYW4gdG9nZ2xlIHRoZSBkZWZhdWx0IHZpYSBhICIt dW5kZXJzY29yZSIgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMNCiNTVUJTVElU VVRFX1VOREVSU0NPUkVTOkZBTFNFDQoNCg0KLmgxIEludGVyYWN0aW9uDQoN Ci5oMiBRVUlUX0RFRkFVTFRfWUVTDQojIElmIFFVSVRfREVGQVVMVF9ZRVMg aXMgVFJVRSB0aGVuIHdoZW4gdGhlIFFVSVQgY29tbWFuZCBpcyBlbnRlcmVk LCBhbnkNCiMgcmVzcG9uc2Ugb3RoZXIgdGhhbiBuIG9yIE4gd2lsbCBjb25m aXJtLiAgSXQgc2hvdWxkIGJlIEZBTFNFIGlmIHlvdQ0KIyBwcmVmZXIgdGhl IG1vcmUgY29uc2VydmF0aXZlIGFjdGlvbiBvZiByZXF1aXJpbmcgYW4gZXhw bGljaXQgWSBvciB5IHRvDQojIGNvbmZpcm0uICBUaGUgZGVmYXVsdCBkZWZp bmVkIGhlcmUgd2lsbCBvdmVycmlkZSB0aGF0IGluIHVzZXJkZWZzLmguDQoj DQojUVVJVF9ERUZBVUxUX1lFUzpUUlVFDQoNCg0KLmgxIEhUTUwgUGFyc2lu Zw0KDQouaDIgSElTVE9SSUNBTF9DT01NRU5UUw0KIyBJZiBISVNUT1JJQ0FM X0NPTU1FTlRTIGlzIFRSVUUsIEx5bnggd2lsbCByZXZlcnQgdG8gdGhlICJI aXN0b3JpY2FsIg0KIyBiZWhhdmlvciBvZiB0cmVhdGluZyBhbnkgJz4nIGFz IGEgdGVybWluYXRvciBmb3IgY29tbWVudHMsIGluc3RlYWQgb2YNCiMgc2Vl a2luZyBhIHZhbGlkICctLT4nIHRlcm1pbmF0b3IgKG5vdGUgdGhhdCB3aGl0 ZSBzcGFjZSBjYW4gYmUgcHJlc2VudA0KIyBiZXR3ZWVuIHRoZSAnLS0nIGFu ZCAnPicgaW4gdmFsaWQgdGVybWluYXRvcnMpLiAgVGhlIGNvbXBpbGF0aW9u IGRlZmF1bHQNCiMgaXMgRkFMU0UuDQojDQojIFRoZSBjb21waWxhdGlvbiBk ZWZhdWx0LCBvciBkZWZhdWx0IGRlZmluZWQgaGVyZSwgY2FuIGJlIHRvZ2ds ZWQgdmlhIGENCiMgIi1oaXN0b3JpY2FsIiBjb21tYW5kIGxpbmUgc3dpdGNo LCBhbmQgdmlhIHRoZSBMWUtfSElTVE9SSUNBTCBjb21tYW5kIGtleS4NCiMN CiNISVNUT1JJQ0FMX0NPTU1FTlRTOkZBTFNFDQoNCg0KLmgyIE1JTklNQUxf Q09NTUVOVFMNCiMgSWYgTUlOSU1BTF9DT01NRU5UUyBpcyBUUlVFLCBMeW54 IHdpbGwgbm90IHVzZSBWYWxpZCBjb21tZW50IHBhcnNpbmcNCiMgb2YgJy0t JyBwYWlycyBhcyBzZXJpYWwgY29tbWVudHMgd2l0aGluIGFuIG92ZXJhbGwg Y29tbWVudCBlbGVtZW50LA0KIyBhbmQgaW5zdGVhZCB3aWxsIHNlZWsgb25s eSBhICctLT4nIHRlcm1pbmF0b3IgZm9yIHRoZSBvdmVyYWxsIGNvbW1lbnQN CiMgZWxlbWVudC4gIFRoaXMgZW11bGF0ZXMgdGhlIE5ldHNjYXBlIHYyLjAg Y29tbWVudCBwYXJzaW5nIGJ1ZywgYW5kDQojIHdpbGwgaGVscCBMeW54IGNv cGUgd2l0aCB0aGUgdXNlIG9mIGRhc2hlcyBhcyAiZGVjb3JhdGlvbnMiLCB3 aGljaA0KIyBjb25zZXF1ZW50bHkgaGFzIGJlY29tZSBjb21tb24gaW4gc28t Y2FsbGVkICJFbmhhbmNlZCBmb3IgTmV0c2NhcGUiDQojIHBhZ2VzLiAgTm90 ZSB0aGF0IHNldHRpbmcgSGlzdG9yaWNhbCBjb21tZW50cyBvbiB3aWxsIG92 ZXJyaWRlIHRoZQ0KIyBNaW5pbWFsIG9yIFZhbGlkIHNldHRpbmcuDQojDQoj IFRoZSBjb21waWxhdGlvbiBkZWZhdWx0IGZvciBNSU5JTUFMX0NPTU1FTlRT IGlzIEZBTFNFLCBidXQgd2UnbGwNCiMgc2V0IGl0IFRSVUUgaGVyZSwgdW50 aWwgTmV0c2NhcGUgZ2V0cyBpdHMgY29tbWVudCBwYXJzaW5nIHJpZ2h0LA0K IyBhbmQgImRlY29yYXRpdmUiIGRhc2hlcyBjZWFzZSB0byBiZSBzbyBjb21t b24uDQojDQojIFRoZSBjb21waWxhdGlvbiBkZWZhdWx0LCBvciBkZWZhdWx0 IGRlZmluZWQgaGVyZSwgY2FuIGJlIHRvZ2dsZWQgdmlhIGENCiMgIi1taW5p bWFsIiBjb21tYW5kIGxpbmUgc3dpdGNoLCBhbmQgdmlhIHRoZSBMWUtfTUlO SU1BTCBjb21tYW5kIGtleS4NCiMNCk1JTklNQUxfQ09NTUVOVFM6VFJVRQ0K DQoNCi5oMiBTT0ZUX0RRVU9URVMNCiMgSWYgU09GVF9EUVVPVEVTIGlzIFRS VUUsIEx5bnggd2lsbCBlbXVsYXRlIHRoZSBpbnZhbGlkIGJlaGF2aW9yIG9m DQojIHRyZWF0aW5nICc+JyBhcyBhIGNvLXRlcm1pbmF0b3Igb2YgYSBkb3Vi bGUtcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZQ0KIyBhbmQgdGhlIHRhZyB3aGlj aCBjb250YWlucyBpdCwgYXMgd2FzIGRvbmUgaW4gb2xkIHZlcnNpb25zIG9m IE5ldHNjYXBlDQojIGFuZCBNb3NhaWMuICBUaGUgY29tcGlsYXRpb24gZGVm YXVsdCBpcyBGQUxTRS4NCiMNCiMgVGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQs IG9yIGRlZmF1bHQgZGVmaW5lZCBoZXJlLCBjYW4gYmUgdG9nZ2xlZCB2aWEN CiMgYSAiLXNvZnRfZHF1b3RlcyIgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMN CiNTT0ZUX0RRVU9URVM6RkFMU0UNCg0KDQouaDIgU1RSSVBfRE9URE9UX1VS TFMNCiMgSWYgU1RSSVBfRE9URE9UX1VSTFMgaXMgVFJVRSwgTHlueCBlbXVs YXRlcyB0aGUgaW52YWxpZCBiZWhhdmlvciBvZiBtYW55DQojIGJyb3dzZXJz IHRvIHN0cmlwIGEgbGVhZGluZyAiLi4vIiBzZWdtZW50IGZyb20gcmVsYXRp dmUgVVJMcyBpbiBIVE1MDQojIGRvY3VtZW50cyB3aXRoIGEgaHR0cCBvciBo dHRwcyBiYXNlIFVSTCwgaWYgdGhpcyB3b3VsZCBvdGhlcndpc2UgbGVhZCB0 bw0KIyBhbiBhYnNvbHV0ZSBVUkxzIHdpdGggdGhvc2UgY2hhcmFjdGVycyBz dGlsbCBpbiBpdC4gIFN1Y2ggVVJMcyBhcmUgbm9ybWFsbHkNCiMgZXJyb25l b3VzIGFuZCBub3Qgd2hhdCBpcyBpbnRlbmRlZCBieSBwYWdlIGF1dGhvcnMu ICBMeW54IHdpbGwgaXNzdWUNCiMgYSB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiB0 aGlzIG9jY3Vycy4NCiMNCiMgSWYgU1RSSVBfRE9URE9UX1VSTFMgaXMgRkFM U0UsIEx5bnggd2lsbCB1c2UgdGhvc2UgVVJMcyBmb3IgcmVxdWVzdHMNCiMg d2l0aG91dCB0YWtpbmcgYW55IHNwZWNpYWwgYWN0aW9ucyBvciBpc3N1aW5n IFdhcm5pbmdzLCBpbiBtb3N0IGNhc2VzDQojIHRoaXMgd2lsbCByZXN1bHQg aW4gYW4gZXJyb3IgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLg0KIw0KIyBO b3RlIHRoYXQgTHlueCBuZXZlciB0cmllcyB0byBmaXggc2ltaWxhciBVUkxz IGZvciBwcm90b2NvbHMgb3RoZXIgdGhhbg0KIyBodHRwIGFuZCBodHRwcywg c2luY2UgdGhleSBhcmUgbGVzcyBjb21tb24gYW5kIG1heSBhY3R1YWxseSBi ZSB2YWxpZCBpbg0KIyBzb21lIGNhc2VzLg0KIw0KI1NUUklQX0RPVERPVF9V UkxTOlRSVUUNCg0KDQouaDEgQXBwZWFyYW5jZQ0KDQouaDIgRU5BQkxFX1ND Uk9MTEJBQ0sNCiMgSWYgRU5BQkxFX1NDUk9MTEJBQ0sgaXMgVFJVRSwgTHlu eCB3aWxsIGNsZWFyIHRoZSBlbnRpcmUgc2NyZWVuIGJlZm9yZQ0KIyBkaXNw bGF5aW5nIGVhY2ggbmV3IHNjcmVlbmZ1bCBvZiB0ZXh0LiAgVGhvdWdoIGxl c3MgZWZmaWNpZW50IGZvciBub3JtYWwNCiMgdXNlLCB0aGlzIGFsbG93cyBw cm9ncmFtcyB0aGF0IG1haW50YWluIGEgYnVmZmVyIG9mIHByZXZpb3VzbHkt ZGlzcGxheWVkDQojIHRleHQgdG8gcmVjb2duaXplIHRoZSBjb250aW51aXR5 IG9mIHdoYXQgaGFzIGJlZW4gZGlzcGxheWVkLCBzbyB0aGF0DQojIHByZXZp b3VzIHNjcmVlbmZ1bHMgY2FuIGJlIHJldmlld2VkIGJ5IHdoYXRldmVyIG1l dGhvZCB0aGUgcHJvZ3JhbSB1c2VzDQojIHRvIHNjcm9sbCBiYWNrIHRocm91 Z2ggcHJldmlvdXMgdGV4dC4gIEZvciBleGFtcGxlLCB0aGUgUEMgY29tbSBw cm9ncmFtDQojIFFNb2RlbSBoYXMgYSBrZXkgdGhhdCBjYW4gYmUgcHJlc3Nl ZCB0byBzY3JvbGwgYmFjazsgaWYgRU5BQkxFX1NDUk9MTEJBQ0sNCiMgaXMg VFJVRSwgcHJlc3NpbmcgdGhlIHNjcm9sbGJhY2sga2V5IHdpbGwgYWNjZXNz IHByZXZpb3VzIHNjcmVlbmZ1bHMgd2hpY2gNCiMgd2lsbCBoYXZlIGJlZW4g c3RvcmVkIG9uIHRoZSBsb2NhbCBQQyBhbmQgd2lsbCB0aGVyZWZvcmUgYmUg ZGlzcGxheWVkDQojIGluc3RhbnRhbmVvdXNseSwgaW5zdGVhZCBvZiBuZWVk aW5nIHRvIGJlIHJldHJhbnNtaXR0ZWQgYnkgTHlueCBhdCB0aGUNCiMgc3Bl ZWQgb2YgdGhlIGNvbW0gY29ubmVjdGlvbiAoYnV0IEx5bnggd2lsbCBub3Qg a25vdyBhYm91dCB0aGUgY2hhbmdlLA0KIyBzbyB5b3UgbXVzdCByZXN0b3Jl IHRoZSBsYXN0IHNjcmVlbiBiZWZvcmUgcmVzdW1pbmcgd2l0aCBMeW54IGNv bW1hbmRzKS4NCiMNCiMgVGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQgaXMgRkFM U0UgKGlmIFJFVkVSU0VfQ0xFQVJfU0NSRUVOX1BST0JMRU0gd2FzIG5vdA0K IyBkZWZpbmVkIGluIHRoZSBVbml4IE1ha2VmaWxlIHRvIGludm9rZSB0aGlz IGJlaGF2aW9yIGFzIGEgd29ya2Fyb3VuZCBmb3INCiMgc29tZSBwb29yIGN1 cnNlcyBpbXBsZW1lbnRhdGlvbnMpLg0KIw0KIyBUaGUgZGVmYXVsdCBjb21w aWxhdGlvbiBvciBjb25maWd1cmF0aW9uIHNldHRpbmcgY2FuIGJlIHRvZ2ds ZWQgdmlhIGFuDQojICItZW5hYmxlX3Njcm9sbGJhY2siIGNvbW1hbmQgbGlu ZSBzd2l0Y2guDQojDQojRU5BQkxFX1NDUk9MTEJBQ0s6RkFMU0UNCg0KDQou aDIgU0NBTl9GT1JfQlVSSUVEX05FV1NfUkVGUw0KIyBJZiBTQ0FOX0ZPUl9C VVJJRURfTkVXU19SRUZTIGlzIHNldCB0byBUUlVFLCBMeW54IHdpbGwgc2Nh biB0aGUgYm9kaWVzDQojIG9mIG5ld3MgYXJ0aWNsZXMgZm9yIGJ1cmllZCBh cnRpY2xlIGFuZCBVUkwgcmVmZXJlbmNlcyBhbmQgY29udmVydCB0aGVtDQoj IHRvIGxpbmtzLiAgVGhlIGNvbXBpbGF0aW9uIGRlZmF1bHQgaXMgVFJVRSwg YnV0IHNvbWUgZW1haWwgYWRkcmVzc2VzDQojIGVuY2xvc2VkIGluIGFuZ2xl IGJyYWNrZXRzICgiPHVzZXJAYWRkcmVzcz4iKSBtaWdodCBiZSBjb252ZXJ0 ZWQgdG8gZmFsc2UNCiMgbmV3cyBsaW5rcywgYW5kIHV1ZW5jb2RlZCBtZXNz YWdlcyBtaWdodCBiZSBjb3JydXB0ZWQuICBUaGUgY29udmVyc2lvbiBpcw0K IyBub3QgZG9uZSB3aGVuIHRoZSBkaXNwbGF5IGlzIHRvZ2dsZWQgdG8gc291 cmNlIG9yIHdoZW4gJ2Qnb3dubG9hZGluZywgc28NCiMgdXVlbmNvZGVkIGFy dGljbGVzIGNhbiBiZSBzYXZlZCBpbnRhY3QgcmVnYXJkbGVzcyBvZiB0aGVz ZSBzZXR0aW5ncy4NCiMNCiMgVGhlIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUg dG9nZ2xlZCB2aWEgYSAiLWJ1cmllZF9uZXdzIiBjb21tYW5kIGxpbmUNCiMg c3dpdGNoLg0KIw0KI1NDQU5fRk9SX0JVUklFRF9ORVdTX1JFRlM6VFJVRQ0K DQoNCi5oMiBQUkVQRU5EX0JBU0VfVE9fU09VUkNFDQojIElmIFBSRVBFTkRf QkFTRV9UT19TT1VSQ0UgaXMgc2V0IHRvIEZBTFNFLCBMeW54IHdpbGwgbm90 IHByZXBlbmQgYQ0KIyBSZXF1ZXN0IFVSTCBjb21tZW50IGFuZCBCQVNFIGVs ZW1lbnQgdG8gdGV4dC9odG1sIHNvdXJjZSBmaWxlcyB3aGVuDQojIHRoZXkg YXJlIHJldHJpZXZlZCBmb3IgJ2Qnb3dubG9hZGluZyBvciBwYXNzZWQgdG8g J3AncmludCBmdW5jdGlvbnMuDQojIFRoZSBjb21waWxhdGlvbiBkZWZhdWx0 IGlzIFRSVUUuICBOb3RlIHRoYXQgdGhpcyBwcmVwZW5kaW5nIGlzIG5vdA0K IyBkb25lIGZvciAtc291cmNlIGR1bXBzLCB1bmxlc3MgdGhlIC1iYXNlIHN3 aXRjaCBhbHNvIHdhcyBpbmNsdWRlZCBvbg0KIyB0aGUgY29tbWFuZCBsaW5l LCBhbmQgdGhlIGxhdHRlciBzd2l0Y2ggb3ZlcnJpZGVzIHRoZSBzZXR0aW5n IG9mIHRoZQ0KIyBQUkVQRU5EX0JBU0VfVE9fU09VUkNFIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuDQojDQojUFJFUEVORF9CQVNFX1RPX1NPVVJDRTpUUlVF DQoNCg0KIyBNSU1FIHR5cGVzIGFuZCB2aWV3ZXJzIQ0KIw0KIyBmaWxlIGV4 dGVuc2lvbnMgbWF5IGJlIGFzc2lnbmVkIHRvIE1JTUUgdHlwZXMgdXNpbmcN CiMgdGhlIFNVRkZJWDogZGVmaW5pdGlvbi4NCiMNCiMgTk9URTogSXQgaXMg bm9ybWFsbHkgcHJlZmVyYWJsZSB0byBkZWZpbmUgbmV3IGV4dGVuc2lvbiBt YXBwaW5ncyBpbg0KIyAgICAgICBFWFRFTlNJT05fTUFQIGZpbGVzIChzZWUg YmVsb3cpIGluc3RlYWQgb2YgaGVyZTogIERlZmluaXRpb25zDQojICAgICAg IGhlcmUgYXJlIG92ZXJyaWRkZW4gYnkgdGhvc2UgaW4gRVhURU5TSU9OX01B UCBmaWxlcyBhbmQgZXZlbiBieQ0KIyAgICAgICBzb21lIGJ1aWx0LWluIGRl ZmF1bHRzIGluIHNyYy9IVEluaXQuYy4gIE9uIHRoZSBvdGhlciBoYW5kLA0K IyAgICAgICBkZWZpbml0aW9ucyBoZXJlIGFsbG93IHNvbWUgbW9yZSBmaWVs ZHMgdGhhdCBhcmUgbm90IHBvc3NpYmxlDQojICAgICAgIGluIHRob3NlIGZp bGVzLg0KIw0KIyAgICAgICBFeHRlbnNpb24gbWFwcGluZ3MgaGF2ZSBhbiBl ZmZlY3QgbW9zdGx5IGZvciBmdHAgYW5kIGxvY2FsIGZpbGVzLA0KIyAgICAg ICB0aGV5IGFyZSBOT1QgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2Yg Y29udGVudCBmb3IgVVJMcyB3aXRoDQojICAgICAgIHRoZSBodHRwIHByb3Rv Y29sLiAgVGhpcyBpcyBiZWNhdXNlIEhUVFAgc2VydmVycyBhbHJlYWR5IHNw ZWNpZnkNCiMgICAgICAgdGhlIE1JTUUgdHlwZSBpbiB0aGUgQ29udGVudC1U eXBlIGhlYWRlci4gIFtJdCBtYXkgc3RpbGwgYmUNCiMgICAgICAgbmVjZXNz YXJ5IHRvIHNldCB1cCBhbiBhcHByb3ByaWF0ZSBzdWZmaXggZm9yIHNvbWUg TUlNRSB0eXBlcywNCiMgICAgICAgZXZlbiBpZiB0aGV5IGFyZSBhY2Nlc3Nl ZCBvbmx5IHZpYSB0aGUgSFRUUCBwcm90b2NvbCwgaWYgdGhlIHZpZXdlcg0K IyAgICAgICAoc2VlIGJlbG93KSBmb3IgdGhvc2UgTUlNRSB0eXBlcyByZXF1 aXJlcyBhIGNlcnRhaW4gc3VmZml4IGZvciB0aGUNCiMgICAgICAgdGVtcG9y YXJ5IGZpbGUgcGFzc2VkIHRvIGl0Ll0NCg0KDQouaDEgRXh0ZXJuYWwgUHJv Z3JhbXMNCg0KLmgyIEdMT0JBTF9FWFRFTlNJT05fTUFQDQouaDIgUEVSU09O QUxfRVhURU5TSU9OX01BUA0KIyBUaGUgZ2xvYmFsIGFuZCBwZXJzb25hbCBF WFRFTlNJT05fTUFQIGZpbGVzIGFsbG93IHlvdSB0byBhc3NpZ24gZXh0ZW5z aW9ucw0KIyB0byBNSU1FIHR5cGVzIHdoaWNoIHdpbGwgb3ZlcnJpZGUgYW55 IG9mIHRoZSBzdWZmaXggbWFwcyBpbiB0aGlzIChseW54LmNmZykNCiMgY29u ZmlndXJhdGlvbiBmaWxlLCBvciBpbiBzcmMvSFRJbml0LmMuICBTZWUgdGhl IGV4YW1wbGUgbWltZS50eXBlcyBmaWxlDQojIGluIHRoZSBzYW1wbGVzIHN1 YmRpcmVjdG9yeS4NCiMNCiMgVW5peDoNCiMgPT09PQ0KI0dMT0JBTF9FWFRF TlNJT05fTUFQOi91c3IvbG9jYWwvbGliL21vc2FpYy9taW1lLnR5cGVzDQoj IFZNUzoNCiMgPT09DQojR0xPQkFMX0VYVEVOU0lPTl9NQVA6THlueF9EaXI6 bWltZS50eXBlcw0KIw0KIwlVbml4IChzb3VnaHQgaW4gdXNlcidzIGhvbWUg ZGlyZWN0b3J5KToNCiNQRVJTT05BTF9FWFRFTlNJT05fTUFQOi5taW1lLnR5 cGVzDQojCVZNUyAoc291Z2h0IGluIHVzZXIncyBzeXMkbG9naW4gZGlyZWN0 b3J5KToNCiNQRVJTT05BTF9FWFRFTlNJT05fTUFQOm1pbWUudHlwZXMNCg0K DQouaDIgU1VGRklYX09SREVSDQojIFdpdGggU1VGRklYX09SREVSIHRoZSBw cmVjZWRlbmNlIG9mIHN1ZmZpeCBtYXBwaW5ncyBjYW4gYmUgY2hhbmdlZC4N CiMgVHdvIGtpbmRzIG9mIHNldHRpbmdzIGFyZSByZWNvZ25pemVkOg0KIw0K IyAgICBQUkVDRURFTkNFX09USEVSIG9yIFBSRUNFREVOQ0VfSEVSRQ0KIyAg ICAgIFN1ZmZpeCBtYXBwaW5ncyBjYW4gY29tZSBmcm9tIGZvdXIgc291cmNl czogKDEpIFNVRkZJWCBydWxlcw0KIyAgICAgIGdpdmVuIGhlcmUgLSBzZWUg YmVsb3csICgyKSBidWlsdGluIGRlZmF1bHRzIChIVEluaXQuYyksIGFuZCB0 aGUNCiMgICAgICAoMykgR0xPQkFMX0VYVEVOU0lPTl9NQVAgYW5kICg0KSBQ RVJTT05BTF9FWFRFTlNJT05fTUFQIGZpbGVzLg0KIyAgICAgIFRoZSBvcmRl ciBvZiBwcmVjZWRlbmNlIGlzIG5vcm1hbGx5IGFzIGxpc3RlZDogKDEpIGhh cyB0aGUNCiMgICAgICAqbG93ZXN0KiwgKDQpIGhhcyB0aGUgKmhpZ2hlc3Qq IHByZWNlZGVuY2UgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cy4NCiMgICAgICBJ biBvdGhlciB3b3JkcywgU1VGRklYIG1hcHBpbmdzIGhlcmUgYXJlIG92ZXJy aWRkZW4gYnkgY29uZmxpY3RpbmcNCiMgICAgICBvbmVzIGVsc2V3aGVyZS4g IFRoaXMgZGVmYXVsdCBvcmRlcmluZyBpcyBjYWxsZWQgUFJFQ0VERU5DRV9P VEhFUi4NCiMgICAgICBXaXRoIFBSRUNFREVOQ0VfSEVSRSwgdGhlIG9yZGVy IGJlY29tZXMgKDIpICgzKSAoNCkgKDEpLCBpLmUuDQojICAgICAgbWFwcGlu Z3MgaGVyZSBvdmVycmlkZSBvdGhlcnMgbWFkZSBlbHNld2hlcmUuDQojDQoj ICAgIE5PX0JVSUxUSU4NCiMgICAgICBUaGlzIGRpc2FibGVzIGFsbCBidWls dGluIGRlZmF1bHQgcnVsZXMuICBJbiBvdGhlciB3b3JkcywgKDIpIGluIHRo ZQ0KIyAgICAgIGxpc3QgYWJvdmUgaXMgc2tpcHBlZC4gIFNvbWUgcmVjb2du aXRpb24gZm9yIGNvbXByZXNzZWQgZmlsZXMgKCIuZ3oiLA0KIyAgICAgICIu WiIpIGlzIHN0aWxsIGhhcmR3aXJlZC4gICBBIG1hcHBpbmcgZm9yIHNvbWUg YmFzaWMgdHlwZXMsIGF0IGxlYXN0DQojICAgICAgZm9yIHRleHQvaHRtbCBp cyBwcm9iYWJseSBuZWNlc3NhcnkgdG8gZ2V0IGEgdXNhYmxlIGNvbmZpZ3Vy YXRpb24sDQojICAgICAgaXQgY2FuIGJlIGdpdmVuIGluIGEgU1VGRklYIHJ1 bGUgYmVsb3cgb3IgYW4gZXh0ZW5zaW9uIG1hcCBmaWxlLg0KIyBCb3RoIGtp bmRzIG9mIHNldHRpbmdzIGNhbiBiZSBjb21iaW5lZCwgc2VwYXJhdGVkIGJ5 IGNvbW1hIGFzIGluDQojICAgICAgICBTVUZGSVhfT1JERVI6UFJFQ0VERU5D RV9IRVJFLE5PX0JVSUxUSU4NCiMgTm90ZTogVXNpbmcgUFJFQ0VERU5DRV9I RVJFIGhhcyBvbmx5IGFuIGVmZmVjdCBvbiBTVUZGSVggcnVsZXMgdGhhdCBm b2xsb3cuDQojIE1vcmVvdmVyLCBpZiBHTE9CQUxfRVhURU5TSU9OX01BUCBv ciBQRVJTT05BTF9FWFRFTlNJT05fTUFQIGRpcmVjdGl2ZXMNCiMgYXJlIHVz ZWQsIHRoZXkgc2hvdWxkIGNvbWUgKmJlZm9yZSogYSBTVUZGSVhfT1JERVI6 UFJFQ0VERU5DRV9IRVJFLg0KIw0KI1NVRkZJWF9PUkRFUjpQUkVDRURFTkNF X09USEVSDQoNCg0KLmgyIFNVRkZJWA0KIyBUaGUgU1VGRklYIGRlZmluaXRp b24gdGFrZXMgdGhlIGZvcm0gb2Y6DQojDQojICAgIFNVRkZJWDo8ZmlsZSBl eHRlbnNpb24+OjxtaW1lIHR5cGU+OjxlbmNvZGluZz46PHF1YWxpdHk+Ojxk ZXNjcmlwdGlvbj4NCiMNCiMgQWxsIGZpZWxkcyBhZnRlciA8bWltZSB0eXBl PiBhcmUgb3B0aW9uYWwgKGluY2x1ZGluZyB0aGUgc2VwYXJhdG9ycw0KIyBp ZiBubyBtb3JlIGZpZWxkcyBmb2xsb3cpLg0KIw0KIyAgICAgPGZpbGUgZXh0 ZW5zaW9uPiB0cmFpbGluZyBlbmQgb2YgZmlsZSBuYW1lLiAgVGhpcyBuZWVk IG5vdCBzdHJpY3RseQ0KIyAgICAgICAgICAgICAgICAgICAgICBiZSBhIGZp bGUgZXh0ZW5zaW9uIGFzIHVuZGVyc3Rvb2QgYnkgdGhlIE9TLCBhIGRvdA0K IyAgICAgICAgICAgICAgICAgICAgICBoYXMgdG8gYmUgZ2l2ZW4gZXhwbGlj aXRseSBpZiBpdCBpcyBpbmRlbnRlZCwgZm9yDQojICAgICAgICAgICAgICAg ICAgICAgIHNvbWUgdXNlcyBvbmUgY291bGQgZXZlbiBtYXRjaCBmdWxsIGZp bGVuYW1lcyBoZXJlLg0KIyAgICAgICAgICAgICAgICAgICAgICBJbiBhZGRp dGlvbiwgdHdvIGZvcm1zIGFyZSBzcGVjaWFsOiAiKi4qIiBhbmQgIioiDQoj ICAgICAgICAgICAgICAgICAgICAgIHJlZmVyIHRvIHRoZSBkZWZhdWx0cyBm b3Igb3RoZXJ3aXNlIHVubWF0Y2hlZCBmaWxlcw0KIyAgICAgICAgICAgICAg ICAgICAgICAodGhlIGZpcnN0IGZvciBmaWxlbmFtZXMgd2l0aCBhIGRvdCBz b21ld2hlcmUgaW4NCiMgICAgICAgICAgICAgICAgICAgICAgdGhlIG5hbWUs IHRoZSBzZWNvbmQgd2l0aG91dCksIHRoZXNlIGFyZSBjdXJyZW50bHkNCiMg ICAgICAgICAgICAgICAgICAgICAgbWFwcGVkIHRvIHRleHQvcGxhaW4gaW4g dGhlIChIVEluaXQuYykgYnVpbHRpbiBjb2RlLg0KIw0KIyAgICAgPG1pbWUg dHlwZT4gYSBNSU1FIGNvbnRlbnQgdHlwZS4gIEl0IGNhbiBhbHNvIGNvbnRh aW4gYSBjaGFyc2V0DQojICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIsIHNl ZSBleGFtcGxlIGJlbG93LiAgVGhpcyBzaG91bGQgYmUgZ2l2ZW4gaW4NCiMg ICAgICAgICAgICAgICAgIGFsbCBsb3dlcmNhc2UsIHVzZSA8ZGVzY3JpcHRp b24+IGZvciBtb3JlIGZhbmN5IGxhYmVscy4NCiMgICAgICAgICAgICAgICAg IEl0IGNhbiBiZSBsZWZ0IGVtcHR5IGlmIGFuIEhUVFAgc3R5bGUgZW5jb2Rp bmcgaXMgZ2l2ZW4uDQojDQojIEZpZWxkcyBpbiBhZGRpdGlvbiB0byB0aGUg dXN1YWwgb25lcyBhcmUNCiMNCiMgICAgIDxlbmNvZGluZz4gIGVpdGhlciBh IG1haWwgc3R5bGUgdHJpdmlhbCBlbmNvZGluZyAoN2JpdCwgOGJpdCwgYmlu YXJ5KQ0KIyAgICAgICAgICAgICAgICAgd2hpY2ggY291bGQgYmUgdXNlZCBv biBzb21lIHN5c3RlbXMgdG8gZGV0ZXJtaW5lIGhvdyB0bw0KIyAgICAgICAg ICAgICAgICAgb3BlbiBsb2NhbCBmaWxlcyAoY3VycmVudGx5IGl0IGlzbid0 KSwgYW5kIGlzIHVzZWQgdG8NCiMgICAgICAgICAgICAgICAgIGRldGVybWlu ZSB0cmFuc2ZlciBtb2RlIGZvciBzb21lIEZUUCBVUkxzOyBvciBhIEhUVFAg c3R5bGUNCiMgICAgICAgICAgICAgICAgIGNvbnRlbnQgZW5jb2RpbmcgKGd6 aXAgKGVxdWl2YWxlbnQgdG8geC1nemlwKSwgY29tcHJlc3MpDQojDQojICAg ICA8cXVhbGl0eT4gYSBmbG9hdGluZyBwb2ludCBxdWFsaXR5IGZhY3Rvciwg dXN1YWxseSBiZXR3ZWVuIDAuMCBhbmQgMS4wDQojICAgICAgICAgICAgICAg Y3VycmVudGx5IHVudXNlZCBpbiBtb3N0IHNpdHVhdGlvbnMuDQojDQojICAg ICA8ZGVzY3JpcHRpb24+IHRleHQgdGhhdCBjYW4gYXBwZWFyIGluIEZUUCBk aXJlY3RvcnkgbGlzdGluZ3MsIGFuZCBpbg0KIyAgICAgICAgICAgICAgICAg ICBsb2NhbCBkaXJlY3RvcnkgbGlzdGluZ3MgKHNlZSBMSVNUX0ZPUk1BVCwg Y29kZSAldCkNCiMNCiMgRm9yIGluc3RhbmNlIHRoZSBmb2xsb3dpbmcgZGVm aW5pdGlvbiBtYXBzIHRoZQ0KIyBleHRlbnNpb24gIi5naWYiIHRvIHRoZSBt aW1lIHR5cGUgImltYWdlL2dpZiINCi5leA0KIyAgICBTVUZGSVg6LmdpZjpp bWFnZS9naWYNCiMNCiMgVGhlIGZvbGxvd2luZyBjYW4gYmUgdXNlZCBpZiB5 b3UgaGF2ZSBhIGNvbnZlbnRpb24gdG8gbGFiZWwNCiMgSFRNTCBmaWxlcyBp biBzb21lIGNoYXJhY3RlciBzZXQgdGhhdCBkaWZmZXJzIGZyb20geW91ciBs b2NhbA0KIyBkZWZhdWx0IChzZWUgYWxzbyBBU1NVTUVfTE9DQUxfQ0hBUlNF VCkgd2l0aCBhIGRpZmZlcmVudA0KIyBleHRlbnNpb24sIGhlcmUgIi5odG1s LXU4Ii4gIEl0IGFsc28gZGVtb25zdHJhdGVzIHVzZSBvZiB0aGUNCiMgZGVz Y3JpcHRpb24gZmllbGQsIG5vdGUgZXh0cmEgc2VwYXJhdG9ycyBmb3Igb21p dHRlZCBmaWVsZHM6DQouZXgNCiMgICAgU1VGRklYOi5odG1sLXU4OnRleHQv aHRtbDtjaGFyc2V0PXV0Zi04Ojo6VVRGLTggSFRNTA0KIw0KIyBUaGUgZm9s bG93aW5nIHNob3dzIGhvdyBhIHN1ZmZpeCBjYW4gaW5kaWNhdGUgYSBjb21i aW5hdGlvbg0KIyBvZiBNSU1FIHR5cGUgYW5kIGNvbXByZXNzaW9uIG1ldGhv ZC4gKFRoZSBlbmRpbmcgIi5wcy5neiIgc2hvdWxkDQojIGFscmVhZHkgYmUg cmVjb2duaXplZCBieSBkZWZhdWx0OyB0aGUgZm9ybSBiZWxvdyBjb3VsZCBi ZSB1c2VkIG9uDQojIHN5c3RlbXMgdGhhdCBkb24ndCBhbGxvdyBtb3JlIHRo YW4gb25lIGRvdCBpbiBmaWxlbmFtZXMuKQ0KLmV4DQojICAgIFNVRkZJWDou cHNfZ3o6YXBwbGljYXRpb24vcG9zdHNjcmlwdDpnemlwOjpnemlwJ2QgUG9z dHNjcmlwdA0KIw0KIyBUaGUgZm9sbG93aW5nIGlzIG1lYW50IHRvIG1hdGNo IGEgZnVsbCBmaWxlbmFtZSAoYnV0IGNhbiBtYXRjaA0KIyBhbnkgZmlsZSBl bmRpbmcgaW4gImNvcmUiLCBzbyBiZSBjYXJlZnVsKToNCi5leA0KIyAgICBT VUZGSVg6Y29yZTphcHBsaWNhdGlvbi94LWNvcmUtZmlsZQ0KIw0KIyBmaWxl IHN1ZmZpeGVzIGFyZSBjYXNlIElOc2Vuc2l0aXZlIQ0KIw0KIyBUaGUgc3Vm Zml4IGRlZmluaXRpb25zIGxpc3RlZCBoZXJlIGluIHRoZSBkZWZhdWx0IGx5 bnguY2ZnIGZpbGUgYXJlDQojIHNpbWlsYXIgdG8gdGhvc2Ugbm9ybWFsbHkg ZXN0YWJsaXNoZWQgdmlhIHNyYy9IVEluaXQuYy4gIFlvdSBjYW4gY2hhbmdl DQojIHRoZSBkZWZhdWx0cyBieSBlZGl0aW5nIHRoYXQgZmlsZSBvciBkaXNh YmxlIHRoZW0sIG9yIHZpYSB0aGUgZ2xvYmFsIG9yDQojIHBlcnNvbmFsIG1p bWUudHlwZXMgZmlsZXMgYXQgcnVuIHRpbWUgKGV4Y2VwdCBmb3IgdGhlIGFk ZGl0aW9uYWwgZmllbGRzKS4NCiMgQXNzaWdubWVudHMgbWFkZSBoZXJlIGFy ZSBvdmVycmlkZGVuIGJ5IGVudHJpZXMgaW4gdGhvc2UgZmlsZXMNCiMgdW5s ZXNzIHByZWNlZGVkIHdpdGggYSBTVUZGSVhfT1JERVI6UFJFQ0VERU5DRV9I RVJFLg0KIw0KLmV4IDI5DQojU1VGRklYOi5wczphcHBsaWNhdGlvbi9wb3N0 c2NyaXB0DQojU1VGRklYOi5lcHM6YXBwbGljYXRpb24vcG9zdHNjcmlwdA0K I1NVRkZJWDouYWk6YXBwbGljYXRpb24vcG9zdHNjcmlwdA0KI1NVRkZJWDou cnRmOmFwcGxpY2F0aW9uL3J0Zg0KI1NVRkZJWDouc25kOmF1ZGlvL2Jhc2lj DQojU1VGRklYOi5naWY6aW1hZ2UvZ2lmDQojU1VGRklYOi5yZ2I6aW1hZ2Uv eC1yZ2INCiNTVUZGSVg6LnBuZzppbWFnZS9wbmcNCiNTVUZGSVg6LnhibTpp bWFnZS94LXhiaXRtYXANCiNTVUZGSVg6LnRpZmY6aW1hZ2UvdGlmZg0KI1NV RkZJWDouanBnOmltYWdlL2pwZWcNCiNTVUZGSVg6LmpwZWc6aW1hZ2UvanBl Zw0KI1NVRkZJWDoubXBnOnZpZGVvL21wZWcNCiNTVUZGSVg6Lm1wZWc6dmlk ZW8vbXBlZw0KI1NVRkZJWDoubW92OnZpZGVvL3F1aWNrdGltZQ0KI1NVRkZJ WDouaHF4OmFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MA0KI1NVRkZJWDouYmlu OmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KI1NVRkZJWDouZXhlOmFwcGxp Y2F0aW9uL29jdGV0LXN0cmVhbQ0KI1NVRkZJWDoudGFyOmFwcGxpY2F0aW9u L3gtdGFyDQojU1VGRklYOi50Z3o6YXBwbGljYXRpb24veC10YXI6Z3ppcA0K I1NVRkZJWDouWjo6Y29tcHJlc3MNCiNTVUZGSVg6Lmd6OjpnemlwDQojU1VG RklYOi5iejI6YXBwbGljYXRpb24veC1iemlwMg0KI1NVRkZJWDouemlwOmFw cGxpY2F0aW9uL3ppcA0KI1NVRkZJWDoubHpoOmFwcGxpY2F0aW9uL3gtbHpo DQojU1VGRklYOi5saGE6YXBwbGljYXRpb24veC1saGENCiNTVUZGSVg6LmRt czphcHBsaWNhdGlvbi94LWRtcw0KI1NVRkZJWDouaHRtbDp0ZXh0L2h0bWwN CiNTVUZGSVg6LnR4dDp0ZXh0L3BsYWluDQoNCg0KLmgyIFhMT0FESU1BR0Vf Q09NTUFORA0KIyBWTVM6DQojID09PT0NCiMgWExPQURJTUFHRV9DT01NQU5E IHdpbGwgYmUgdXNlZCBhcyBhIGRlZmF1bHQgaW4gc3JjL0hUSW5pdC5jDQoj IGZvciB2aWV3aW5nIGltYWdlIGNvbnRlbnQgdHlwZXMgd2hlbiB0aGUgREVD VyRESVNQTEFZIGxvZ2ljYWwNCiMgaXMgc2V0LiAgTWFrZSBpdCB0aGUgZm9y ZWlnbiBjb21tYW5kIGZvciB5b3VyIHN5c3RlbSdzIFggaW1hZ2UNCiMgdmll d2VyIChjb21tb25seSwgInh2IikuICBJdCBjYW4gYmUgYW55dGhpbmcgdGhh dCB3aWxsIGhhbmRsZSBHSUYsDQojIFRJRkYgYW5kIG90aGVyIHBvcHVsYXIg aW1hZ2UgZm9ybWF0cy4gIEZyZWV3YXJlIHBvcnRzIG9mIHh2IGZvcg0KIyBW TVMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZnRwOi8vZnRwLndrdS5lZHUvdm1z L3Vuc3VwcG9ydGVkIGFuZA0KIyBodHRwOi8vd3d3Lm9wZW52bXMuZGlnaXRh bC5jb20vY2QvWFYzMTBBLyBzdWJkaXJlY3Rvcmllcy4gIFlvdQ0KIyBtdXN0 IGFsc28gaGF2ZSBhICIlcyIgZm9yIHRoZSBmaWxlbmFtZS4gIFRoZSBkZWZh dWx0IGlzIGRlZmluZWQNCiMgaW4gdXNlcmRlZnMuaCBhbmQgY2FuIGJlIG92 ZXJyaWRkZW4gaGVyZSwgb3IgdmlhIHRoZSBnbG9iYWwgb3INCiMgcGVyc29u YWwgbWFpbGNhcCBmaWxlcyAoc2VlIGJlbG93KS4NCiMNCiMgTWFrZSB0aGlz IGVtcHR5IChidXQgbm8gY29tbWVudGVkIG91dCkgaWYgeW91IGRvbid0IGhh dmUgc3VjaCBhDQojIHZpZXdlciBvciBkb24ndCB3YW50IHRvIGRpc2FibGUg dGhlIGJ1aWx0LWluIGRlZmF1bHQgdmlld2VyDQojIG1hcHBpbmdzIGZvciBp bWFnZSB0eXBlcy4NCiMNCiNYTE9BRElNQUdFX0NPTU1BTkQ6eHYgJXMNCg0K IyBVbml4Og0KIyA9PT09PQ0KIyBYTE9BRElNQUdFX0NPTU1BTkQgd2lsbCBi ZSB1c2VkIGFzIGEgZGVmYXVsdCBpbiBzcmMvSFRJbml0LmMgZm9yDQojIHZp ZXdpbmcgaW1hZ2UgY29udGVudCB0eXBlcyB3aGVuIHRoZSBESVNQTEFZIGVu dmlyb25tZW50IHZhcmlhYmxlDQojIGlzIHNldC4gIE1ha2UgaXQgdGhlIGZ1 bGwgcGF0aCBhbmQgbmFtZSBvZiB0aGUgeGxpIChhbHNvIGtub3cgYXMNCiMg eGxvYWRpbWFnZSBvciB4dmlldykgY29tbWFuZCwgb3Igb3RoZXIgaW1hZ2Ug dmlld2VyLiAgSXQgY2FuIGJlDQojIGFueXRoaW5nIHRoYXQgd2lsbCBoYW5k bGUgR0lGLCBUSUZGIGFuZCBvdGhlciBwb3B1bGFyIGltYWdlIGZvcm1hdHMN CiMgKHhsaSBkb2VzKS4gIFRoZSBmcmVld2FyZSBkaXN0cmlidXRpb24gb2Yg eGxpIGlzIGF2YWlsYWJsZSBpbiB0aGUNCiMgZnRwOi8vZnRwLngub3JnL2Nv bnRyaWIgc3ViZGlyZWN0b3J5LiAgVGhlIHNoYXJld2FyZSwgeHYsIGFsc28g aXMNCiMgc3VpdGFibGUuICBZb3UgbXVzdCBhbHNvIGhhdmUgYSAiJXMiIGZv ciB0aGUgZmlsZW5hbWU7ICImIiBmb3INCiMgYmFja2dyb3VuZCBpcyBvcHRp b25hbC4gIFRoZSBkZWZhdWx0IGlzIGRlZmluZWQgaW4gdXNlcmRlZnMuaCBh bmQgY2FuIGJlDQojIG92ZXJyaWRkZW4gaGVyZSwgb3IgdmlhIHRoZSBnbG9i YWwgb3IgcGVyc29uYWwgbWFpbGNhcCBmaWxlcyAoc2VlIGJlbG93KS4NCiMg TWFrZSB0aGlzIGVtcHR5IChidXQgbm90IGNvbW1lbnRlZCBvdXQpIGlmIHlv dSBkb24ndCBoYXZlIHN1Y2ggYQ0KIyB2aWV3ZXIgb3IgZG9uJ3Qgd2FudCB0 byBkaXNhYmxlIHRoZSBidWlsdC1pbiBkZWZhdWx0IHZpZXdlcg0KIyBtYXBw aW5ncyBmb3IgaW1hZ2UgdHlwZXMuDQojIE5vdGUgdGhhdCBvcGVuIGlzIHVz ZWQgYXMgdGhlIGRlZmF1bHQgZm9yIE5lWFQsIGluc3RlYWQgb2YgdGhlDQoj IFhMT0FESU1BR0VfQ09NTUFORCBkZWZpbml0aW9uLg0KIyBJZiB5b3UgdXNl IHhsaSwgeW91IG1heSB3YW50IHRvIGFkZCB0aGUgLXF1aWV0IGZsYWcuDQoj DQojWExPQURJTUFHRV9DT01NQU5EOnhsaSAlcyAmDQoNCi5oMiBWSUVXRVIN CiMgTUlNRSB0eXBlcyBtYXkgYmUgYXNzaWduZWQgdG8gZXh0ZXJuYWwgdmll d2VycyB1c2luZw0KIyB0aGUgVklFV0VSIGRlZmluaXRpb24uDQojDQojIE5P VEU6IGlmIHlvdSBkbyBub3QgZGVmaW5lIGEgdmlld2VyIHRvIGEgbmV3IE1J TUUgdHlwZQ0KIyAgICAgICB0aGF0IHlvdSBhc3NpZ25lZCBhYm92ZSB0aGVu IGl0IHdpbGwgYmUgc2F2ZWQgdG8NCiMgICAgICAgZGlzayBieSBkZWZhdWx0 Lg0KIyAgICAgICBJdCBpcyBub3JtYWxseSBwcmVmZXJhYmxlIHRvIGRlZmlu ZSBuZXcgdmlld2VycyBpbg0KIyAgICAgICBNQUlMQ0FQIGZpbGVzIChzZWUg YmVsb3cpIGluc3RlYWQgb2YgaGVyZTogIERlZmluaXRpb25zDQojICAgICAg IGhlcmUgYXJlIG92ZXJyaWRkZW4gYnkgdGhvc2UgaW4gTUFJTENBUCBmaWxl cyBhbmQgZXZlbg0KIyAgICAgICBieSBzb21lIGJ1aWx0LWluIGRlZmF1bHRz IGluIHNyYy9IVEluaXQuYy4NCiMNCiMgVGhlIFZJRVdFUiBkZWZpbml0aW9u IHRha2VzIHRoZSBmb3JtIG9mOg0KIyAgICBWSUVXRVI6PG1pbWUgdHlwZT46 PHZpZXdlciBjb21tYW5kPls6ZW52aXJvbm1lbnRdDQojICAgICAgd2hlcmUg LW1pbWUgdHlwZSBpcyB0aGUgTUlNRSBjb250ZW50IHR5cGUgb2YgdGhlIGZp bGUNCiMJICAgICAtdmlld2VyIGNvbW1hbmQgaXMgYSBzeXN0ZW0gY29tbWFu ZCB0aGF0IGNhbiBiZQ0KIyAgICAgICAgICAgICB1c2VkIHRvIGRpc3BsYXkg dGhlIGZpbGUgd2hlcmUgJXMgaXMgcmVwbGFjZWQNCiMgICAgICAgICAgICAg d2l0aGluIHRoZSBjb21tYW5kIHdpdGggdGhlIHBoeXNpY2FsIGZpbGVuYW1l DQojICAgICAgICAgICAgIChlLmcuLCAiZ2hvc3R2aWV3ICVzIiBiZWNvbWVz ICJnaG9zdHZpZXcgL3RtcC90ZW1wcHNmaWxlIikNCiMgICAgICAgICAgICAt ZW52aXJvbm1lbnQgaXMgb3B0aW9uYWwuICBUaGUgb25seSB2YWxpZCBrZXl3 b3Jkcw0KIyAgICAgICAgICAgICBhcmUgY3VycmVudGx5IFhXSU5ET1dTIGFu ZCBOT05fWFdJTkRPV1MuICBJZiB0aGUgWFdJTkRPV1MNCiMgICAgICAgICAg ICAgZW52aXJvbm1lbnQgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIHZpZXdlciB3 aWxsIG9ubHkgYmUNCiMgICAgICAgICAgICAgZGVmaW5lZCB3aGVuIHRoZSB1 c2VyIGhhcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgRElTUExBWQ0KIyAg ICAgICAgICAgICAoREVDVyRESVNQTEFZIG9uIFZNUykgZGVmaW5lZC4gIElm IHRoZSBOT05fWFdJTkRPV1MgZW52aXJvbm1lbnQNCiMgICAgICAgICAgICAg aXMgc3BlY2lmaWVkIHRoZSBzcGVjaWZpZWQgdmlld2VyIHdpbGwgb25seSBi ZSBkZWZpbmVkIHdoZW4gdGhlDQojICAgICAgICAgICAgIHVzZXIgRE9FUyBO T1QgaGF2ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgRElTUExBWSBkZWZp bmVkLg0KIyAgZXhhbXBsZXM6DQojCQlWSUVXRVI6aW1hZ2UvZ2lmOnhsaSAl czpYV0lORE9XUw0KIyAgICAgICAgICAgICAgIFZJRVdFUjppbWFnZS9naWY6 YXNjaWktdmlldyAlczpOT05fWFdJTkRPV1MNCiMgICAgICAgICAgICAgICBW SUVXRVI6YXBwbGljYXRpb24vc3RhcnQtZWxtOmVsbQ0KIw0KIyBZb3UgbXVz dCBwdXQgdGhlIHdob2xlIGRlZmluaXRpb24gb24gb25lIGxpbmUuDQojDQoj IElmIHlvdSBtdXN0IHVzZSBhIGNvbG9uIGluIHRoZSB2aWV3ZXIgY29tbWFu ZCwgcHJlY2VkZSBpdCB3aXRoIGEgYmFja3NsYXNoIQ0KIw0KIyBUaGUgTUlN RV90eXBlOnZpZXdlcjpYV0lORE9XUyBkZWZpbml0aW9ucyBsaXN0ZWQgaGVy ZSBpbiB0aGUgbHlueC5jZmcNCiMgZmlsZSBhcmUgYW1vbmcgdGhvc2UgZXN0 YWJsaXNoZWQgdmlhIHNyYy9IVEluaXQuYy4gIEZvciB0aGUgaW1hZ2UgdHlw ZXMsDQojIEhUSW5pdC5jIHVzZXMgdGhlIFhMT0FESU1BR0VfQ09NTUFORCBk ZWZpbml0aW9uIGluIHVzZXJkZWZzLmggb3IgYWJvdmUNCiMgKG9wZW4gaXMg dXNlZCBmb3IgTmVYVCkuICBZb3UgY2FuIGNoYW5nZSBhbnkgb2YgdGhlc2Ug ZGVmYXVsdHMgdmlhIHRoZQ0KIyBnbG9iYWwgb3IgcGVyc29uYWwgbWFpbGNh cCBmaWxlcy4gIEFzc2lnbm1lbnRzIG1hZGUgaGVyZSB3aWxsIGJlIG92ZXJy aWRkZW4NCiMgYnkgZW50cmllcyBpbiB0aG9zZSBmaWxlcy4NCiMNCi5leCA3 DQojVklFV0VSOmFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQ6Z2hvc3R2aWV3ICVz JjpYV0lORE9XUw0KI1ZJRVdFUjppbWFnZS9naWY6eGxpICVzJjpYV0lORE9X Uw0KI1ZJRVdFUjppbWFnZS94LXhibTp4bGkgJXMmOlhXSU5ET1dTDQojVklF V0VSOmltYWdlL3BuZzp4bGkgJXMmOlhXSU5ET1dTDQojVklFV0VSOmltYWdl L3RpZmY6eGxpICVzJjpYV0lORE9XUw0KI1ZJRVdFUjppbWFnZS9qcGVnOnhs aSAlcyY6WFdJTkRPV1MNCiNWSUVXRVI6dmlkZW8vbXBlZzptcGVnX3BsYXkg JXMgJjpYV0lORE9XUw0KDQoNCi5oMiBHTE9CQUxfTUFJTENBUA0KLmgyIFBF UlNPTkFMX01BSUxDQVANCiMgVGhlIGdsb2JhbCBhbmQgcGVyc29uYWwgTUFJ TENBUCBmaWxlcyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBleHRlcm5hbA0KIyB2 aWV3ZXJzIHRvIGJlIHNwYXduZWQgd2hlbiBMeW54IGVuY291bnRlcnMgZGlm ZmVyZW50IE1JTUUgdHlwZXMsIHdoaWNoDQojIHdpbGwgb3ZlcnJpZGUgYW55 IG9mIHRoZSBzdWZmaXggbWFwcyBpbiB0aGlzIChseW54LmNmZykgY29uZmln dXJhdGlvbg0KIyBmaWxlLCBvciBpbiBzcmMvSFRJbml0LmMuICBTZWUgaHR0 cDovL3d3dy5pbnRlcm5pYy5uZXQvcmZjL3JmYzE1MjQudHh0DQojIGFuZCB0 aGUgZXhhbXBsZSBtYWlsY2FwIGZpbGUgaW4gdGhlIHNhbXBsZXMgc3ViZGly ZWN0b3J5Lg0KIw0KIyBVbml4Og0KIyA9PT09DQojR0xPQkFMX01BSUxDQVA6 L3Vzci9sb2NhbC9saWIvbW9zYWljL21haWxjYXANCiMgVk1TOg0KIyA9PT0N CiNHTE9CQUxfTUFJTENBUDpMeW54X0RpcjptYWlsY2FwDQojDQojIAlTb3Vn aHQgaW4gdXNlcidzIGhvbWUgKFVuaXgpIG9yIHN5cyRsb2dpbiAoVk1TKSBk aXJlY3RvcnkuDQojUEVSU09OQUxfTUFJTENBUDoubWFpbGNhcA0KDQoNCi5o MSBLZXlib2FyZCBJbnB1dA0KDQouaDIgS0VZQk9BUkRfTEFZT1VUDQojIElm IHlvdXIgdGVybWluYWwgKG9yIHRlcm1pbmFsIGVtdWxhdG9yLCBvciBvcGVy YXRpbmcgc3lzdGVtKSBkb2VzIG5vdA0KIyBzdXBwb3J0IDgtYml0IGlucHV0 IChhdCBhbGwgb3IgaW4gZWFzeSB3YXkpLCB5b3UgY2FuIHVzZSBMeW54IHRv DQojIGdlbmVyYXRlIDgtYml0IGNoYXJhY3RlcnMgZnJvbSA3LWJpdCBvbmVz IG91dHB1dCBieSB0ZXJtaW5hbC4NCiMNCiMgQ3VycmVudGx5IGF2YWlsYWJs ZSBrZXlib2FyZCBsYXlvdXRzOg0KIwlST1QxMydkIGtleWJvYXJkIGxheW91 dA0KIwlKQ1VLRU4gQ3lyaWxsaWMsIGZvciBBVCAxMDEta2V5IGtiZA0KIwlZ QVdFUlRZIEN5cmlsbGljLCBmb3IgREVDIExLMjAxIGtiZA0KIw0KIyBUaGlz IGZlYXR1cmUgaXMgaWZkZWYnZCB3aXRoIEVYUF9LRVlCT0FSRF9MQVlPVVQu DQojS0VZQk9BUkRfTEFZT1VUOkpDVUtFTiBDeXJpbGxpYywgZm9yIEFUIDEw MS1rZXkga2JkDQoNCg0KLmgyIEtFWU1BUA0KIyBLZXkgcmVtYXBwaW5nIGRl ZmluaXRpb25zIQ0KIw0KIyBZb3UgbWF5IHJlZGVmaW5lIHRoZSBrZXltYXBw aW5nIG9mIGFueSBmdW5jdGlvbiBpbiBMeW54IGJ5DQojIHVzaW5nIHRoZSBL RVlNQVAgb3B0aW9uLiAgVGhlIGJhc2ljIGZvcm0gb2YgS0VZTUFQIGlzOg0K IyAgS0VZTUFQOjxLRVlTVFJPS0U+OjxMWU5YIEZVTkNUSU9OPg0KIyAoU2Vl IGJlbG93IGZvciBhbiBleHRlbmRlZCBmb3JtYXQuKQ0KIw0KIyBZb3UgbXVz dCBtYXAgdXBwZXIgYW5kIGxvd2VyY2FzZSBrZXlzIHNlcGFyYXRlbHkuDQoj DQojIEEgcmVwcmVzZW50YXRpdmUgbGlzdCBvZiBmdW5jdGlvbnMgbWFwcGVk IHRvIHRoZWlyIGRlZmF1bHQga2V5cyBpcw0KIyBwcm92aWRlZCBiZWxvdy4g IEFsbCBvZiB0aGUgbWFwcGluZ3MgYXJlIGNvbW1lbnRlZCBvdXQgYnkgZGVm YXVsdA0KIyBzaW5jZSB0aGV5IGp1c3QgcmVwZWF0IHRoZSBkZWZhdWx0IG1h cHBpbmdzLCBleGNlcHQgZm9yIFRPR0dMRV9IRUxQDQojIChzZWUgYmVsb3cp LiAgU2VlIExZS2V5bWFwLmMgZm9yIHRoZSBjb21wbGV0ZSBrZXkgbWFwcGlu Zy4gIFVzZSB0aGUNCiMgJ0snZXltYXAgY29tbWFuZCB3aGVuIHJ1bm5pbmcg THlueCBmb3IgYSBsaXN0IG9mIHRoZSBfY3VycmVudF8ga2V5bWFwcGluZ3Mu DQojDQojIChIb3dldmVyLCBpbiBjb250cmFzdCB0byB0aGUgb3V0cHV0IG9m ICdLJyBjb21tYW5kLA0KIyAnSCdlbHAgKGx5bnhfaGVscC8qLmh0bWwgYW5k IGx5bnhfaGVscC9rZXlzdHJva2VzLyouaHRtbCBmaWxlcykgc2hvd3MNCiMg dGhlIGRlZmF1bHQgbWFwcGluZyB1bmxlc3MgeW91IGNoYW5nZSB0aGF0IGZp bGVzIG1hbnVhbGx5LA0KIyBzbyB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBw b3NzaWJsZSBkZXZpYXRpb25zDQojIHdoZW4geW91IGFyZSBjaGFuZ2luZyBh bnkgS0VZTUFQIGJlbG93KS4NCi5uZg0KIw0KIyBLZXlzdHJva2VzIGZvciBz cGVjaWFsIGtleXMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBmb2xsb3dpbmcg Y29kZXM6DQojICAgICAgICAgVXAgQXJyb3c6IDB4MTAwDQojICAgICAgIERv d24gQXJyb3c6IDB4MTAxDQojICAgICAgUmlnaHQgQXJyb3c6IDB4MTAyDQoj ICAgICAgIExlZnQgQXJyb3c6IDB4MTAzDQojICAgICAgICBQYWdlIERvd246 IDB4MTA0DQojICAgICAgICAgIFBhZ2UgVXA6IDB4MTA1DQojICAgICAgS2V5 cGFkIEhvbWU6IDB4MTA2IChzZWUgYWxzbyAweDEwQSkNCiMgICAgICAgS2V5 cGFkIEVuZDogMHgxMDcgKHNlZSBhbHNvIDB4MTBCKQ0KIyAgIEZ1bmN0aW9u IGtleSAxOiAweDEwOA0KIyB2dDEwMCAgIEhlbHAgS2V5OiAweDEwOA0KIyB2 dDEwMCAgICAgRG8gS2V5OiAweDEwOQ0KIyB2dDEwMCAgIEZpbmQgS2V5OiAw eDEwQSAoVGhlIGtleSB3aXRoIGxhYmVsICJIb21lIiBtYXkgYmUgdHJlYXRl ZCBhcyBGaW5kKQ0KIyB2dDEwMCBTZWxlY3QgS2V5OiAweDEwQiAoVGhlIGtl eSB3aXRoIGxhYmVsICJFbmQiIG1heSBiZSB0cmVhdGVkIGFzIFNlbGVjdCkN CiMgICAgICAgSW5zZXJ0IEtleTogMHgxMEMNCiMgUmVtb3ZlIChEZWwpIEtl eTogMHgxMEQNCiMgICAgICBpZ25vcmVkIGtleSAgMHgxMEUgKHJlc2VydmVk IGZvciBpbnRlcm5hbCB1c2UsIERPX05PVEhJTkcpDQojIEJhY2sgKFNoaWZ0 KSBUYWI6IDB4MTBGDQojICAgIHJlc2VydmVkIGNvZGUgIDB4MTFEIChyZXNl cnZlZCBmb3IgaW50ZXJuYWwgdXNlIHdpdGggLXVzZV9tb3VzZSkNCiMgICAg cmVzZXJ2ZWQgY29kZSAgMHgyOTAgKHJlc2VydmVkIGZvciBpbnRlcm5hbCB1 c2Ugd2l0aCAtdXNlX21vdXNlKQ0KIw0KLmZpDQojIE90aGVyIGNvZGVzIG5v dCBsaXN0ZWQgYWJvdmUgbWF5IGJlIGF2YWlsYWJsZSBmb3IgYWRkaXRpb25h bCBrZXlzLA0KIyBkZXBlbmRpbmcgb24gb3BlcmF0aW5nIHN5c3RlbSBhbmQg bGlicmFyaWVzIHVzZWQgdG8gY29tcGlsZSBMeW54Lg0KIyBPbiBzb21lIHN5 c3RlbXMsIGlmIGNvbXBpbGVkIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIHNs YW5nIG9yIG5jdXJzZXMNCiMgKGlmIG1hY3JvIFVTRV9LRVlNQVBTIHdhcyBp biBlZmZlY3QgZHVyaW5nIGNvbXBpbGF0aW9uKSwgYW4gYWRkaXRpb25hbA0K IyBsZXZlbCBvZiBrZXkgbWFwcGluZyBpcyBzdXBwb3J0ZWQgdmlhIGFuIGV4 dGVybmFsICIubHlueC1rZXltYXBzIiBmaWxlLg0KIyBUaGlzIGZpbGUsIGlm IGZvdW5kIGluIHRoZSBob21lIGRpcmVjdG9yeSBhdCBzdGFydHVwLCB3aWxs IGFsd2F5cyBiZQ0KIyB1c2VkIHVuZGVyIHRob3NlIGNvbmRpdGlvbnM7IHNl ZSBseW54LWtleW1hcHMgZGlzdHJpYnV0ZWQgaW4gdGhlIHNhbXBsZXMNCiMg c3ViZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9uLiAgTm90ZSB0 aGF0IG1hcHBpbmcgdmlhDQojIC5seW54LWtleW1hcHMsIGlmIGFwcGxpY2Fi bGUsIGlzIGEgc3RlcCB0aGF0IGxvZ2ljYWxseSBjb21lcyBiZWZvcmUgdGhl DQojIG1hcHBpbmdzIGRvbmUgaGVyZTogS0VZTUFQIG1hcHMgdGhlIHJlc3Vs dCBvZiB0aGF0IHN0ZXAgKHdoaWNoIHN0aWxsDQojIHJlcHJlc2VudHMgYSBr ZXkpIHRvIGEgZnVuY3Rpb24gKHdoaWNoIHJlcHJlc2VudHMgYW4gYWN0aW9u IHRoYXQgTHlueA0KIyBzaG91bGQgcGVyZm9ybSkuDQojDQoubmYNCiNLRVlN QVA6MHg1QzpTT1VSQ0UJCSMgVG9nZ2xlIHNvdXJjZSB2aWV3aW5nIG1vZGUg KHNob3cgSFRNTCBzb3VyY2UpDQojS0VZTUFQOl5SOlJFTE9BRAkJIyBSZWxv YWQgdGhlIGN1cnJlbnQgZG9jdW1lbnQgYW5kIHJlZGlzcGxheQ0KI0tFWU1B UDpxOlFVSVQJCQkjIEFzayB0aGUgdXNlciB0byBxdWl0DQojS0VZTUFQOlE6 QUJPUlQJCQkjIFF1aXQgd2l0aG91dCB2ZXJpZmljYXRpb24NCiNLRVlNQVA6 MHgyMDpORVhUX1BBR0UJCSMgTW92ZSBkb3duIHRvIG5leHQgcGFnZQ0KI0tF WU1BUDotOlBSRVZfUEFHRQkJIyBNb3ZlIHVwIHRvIHByZXZpb3VzIHBhZ2UN CiNLRVlNQVA6XlA6VVBfVFdPCQkjIE1vdmUgZGlzcGxheSB1cCB0d28gbGlu ZXMNCiNLRVlNQVA6MHgxMEM6VVBfVFdPCQkjIEZ1bmN0aW9uIGtleSBJbnNl cnQgLSBNb3ZlIGRpc3BsYXkgdXAgdHdvIGxpbmVzDQojS0VZTUFQOl5OOkRP V05fVFdPCQkjIE1vdmUgZGlzcGxheSBkb3duIHR3byBsaW5lcw0KI0tFWU1B UDoweDEwRDpET1dOX1RXTwkJIyBGdW5jdGlvbiBrZXkgUmVtb3ZlIC0gTW92 ZSBkaXNwbGF5IGRvd24gdHdvIGxpbmVzDQojS0VZTUFQOig6VVBfSEFMRgkJ IyBNb3ZlIGRpc3BsYXkgdXAgaGFsZiBhIHBhZ2UNCiNLRVlNQVA6KTpET1dO X0hBTEYJCSMgTW92ZSBkaXNwbGF5IGRvd24gaGFsZiBhIHBhZ2UNCiNLRVlN QVA6Xlc6UkVGUkVTSAkJIyBSZWZyZXNoIHRoZSBzY3JlZW4NCiNLRVlNQVA6 XkE6SE9NRQkJCSMgR28gdG8gdG9wIG9mIGN1cnJlbnQgZG9jdW1lbnQNCiNL RVlNQVA6MHgxMDY6SE9NRQkJIyBLZXlwYWQgSG9tZSAtIEdvIHRvIHRvcCBv ZiBjdXJyZW50IGRvY3VtZW50DQojS0VZTUFQOjB4MTBBOkhPTUUJCSMgRnVu Y3Rpb24ga2V5IEZpbmQgLSBHbyB0byB0b3Agb2YgY3VycmVudCBkb2N1bWVu dA0KI0tFWU1BUDpeRTpFTkQJCQkjIEdvIHRvIGJvdHRvbSBvZiBjdXJyZW50 IGRvY3VtZW50DQojS0VZTUFQOjB4MTA3OkVORAkJIyBLZXlwYWQgRW5kIC0g R28gdG8gYm90dG9tIG9mIGN1cnJlbnQgZG9jdW1lbnQNCiNLRVlNQVA6MHgx MEI6RU5ECQkjIEZ1bmN0aW9uIGtleSBTZWxlY3QgLSBHbyB0byBib3R0b20g b2YgY3VycmVudCBkb2N1bWVudA0KI0tFWU1BUDoweDEwMDpQUkVWX0xJTksJ CSMgTW92ZSB0byB0aGUgcHJldmlvdXMgbGluayBvciBwYWdlDQojS0VZTUFQ OjB4MTAxOk5FWFRfTElOSwkJIyBNb3ZlIHRvIHRoZSBuZXh0IGxpbmsgb3Ig cGFnZQ0KI0tFWU1BUDoweDEwRjpGQVNUQkFDS1dfTElOSyAJIyBCYWNrIFRh YiAtIE1vdmUgdG8gcHJldmlvdXMgbGluayBvciB0ZXh0IGFyZWENCiNLRVlN QVA6Xkk6RkFTVEZPUldfTElOSwkjIFRhYiBrZXkgLSBNb3ZlIGFsd2F5cyB0 byBuZXh0IGxpbmsgb3IgdGV4dCBhcmVhDQojS0VZTUFQOl46RklSU1RfTElO SwkJIyBNb3ZlIHRvIHRoZSBmaXJzdCBsaW5rIG9uIGxpbmUNCiNLRVlNQVA6 JDpMQVNUX0xJTksJCSMgTW92ZSB0byB0aGUgbGFzdCBsaW5rIG9uIGxpbmUN CiNLRVlNQVA6PDpVUF9MSU5LCQkjIE1vdmUgdG8gdGhlIGxpbmsgYWJvdmUN CiNLRVlNQVA6PjpET1dOX0xJTksJCSMgTW92ZSB0byB0aGUgbGluayBiZWxv dw0KI0tFWU1BUDoweDdGOkhJU1RPUlkJCSMgU2hvdyB0aGUgaGlzdG9yeSBs aXN0DQojS0VZTUFQOjB4MDg6SElTVE9SWQkJIyBTaG93IHRoZSBoaXN0b3J5 IGxpc3QNCiNLRVlNQVA6MHgxMDM6UFJFVl9ET0MJCSMgUmV0dXJuIHRvIHRo ZSBwcmV2aW91cyBkb2N1bWVudCBpbiBoaXN0b3J5IHN0YWNrDQojS0VZTUFQ OjB4MTAyOkFDVElWQVRFCQkjIFNlbGVjdCB0aGUgY3VycmVudCBsaW5rDQoj S0VZTUFQOjB4MTA5OkFDVElWQVRFCQkjIEZ1bmN0aW9uIGtleSBEbyAtIFNl bGVjdCB0aGUgY3VycmVudCBsaW5rDQojS0VZTUFQOmc6R09UTwkJCSMgR290 byBhIHJhbmRvbSBVUkwNCiNLRVlNQVA6RzpFQ0dPVE8JCSMgRWRpdCB0aGUg Y3VycmVudCBkb2N1bWVudCdzIFVSTCBhbmQgZ28gdG8gaXQNCiNLRVlNQVA6 SDpIRUxQCQkJIyBTaG93IGRlZmF1bHQgaGVscCBzY3JlZW4NCiNLRVlNQVA6 MHgxMDg6RFdJTUhFTFAJCSMgRnVuY3Rpb24ga2V5IEhlbHAgLSBTaG93IGEg aGVscCBzY3JlZW4NCiNLRVlNQVA6aTpJTkRFWAkJCSMgU2hvdyBkZWZhdWx0 IGluZGV4DQojKioqIEVkaXQgRk9STV9MSU5LXyogbWVzc2FnZXMgaW4gTFlN ZXNzYWdlc19lbi5oIGlmIHlvdSBjaGFuZ2UgTk9DQUNIRSAqKioNCiNLRVlN QVA6eDpOT0NBQ0hFCQkjIEZvcmNlIHN1Ym1pc3Npb24gb2YgZm9ybSBvciBs aW5rIHdpdGggbm8tY2FjaGUNCiMqKiogRG8gbm90IGNoYW5nZSBJTlRFUlJV UFQgZnJvbSAneicgJiAnWicgKioqDQojS0VZTUFQOno6SU5URVJSVVBUCQkj IEludGVycnVwdCBuZXR3b3JrIHRyYW5zbWlzc2lvbg0KI0tFWU1BUDptOk1B SU5fTUVOVQkJIyBSZXR1cm4gdG8gdGhlIG1haW4gbWVudQ0KI0tFWU1BUDpv Ok9QVElPTlMJCSMgU2hvdyB0aGUgb3B0aW9ucyBtZW51DQojS0VZTUFQOmk6 SU5ERVhfU0VBUkNICQkjIFNlYXJjaCBhIHNlcnZlciBiYXNlZCBpbmRleA0K I0tFWU1BUDovOldIRVJFSVMJCSMgRmluZCBhIHN0cmluZyB3aXRoaW4gdGhl IGN1cnJlbnQgZG9jdW1lbnQNCiNLRVlNQVA6bjpORVhUCQkJIyBGaW5kIG5l eHQgb2NjdXJyZW5jZSBvZiBzdHJpbmcgd2l0aGluIGRvY3VtZW50DQojS0VZ TUFQOmM6Q09NTUVOVAkJIyBDb21tZW50IHRvIHRoZSBhdXRob3Igb2YgdGhl IGN1cnJlbnQgZG9jdW1lbnQNCiNLRVlNQVA6QzpDSERJUgkJCSMgQ2hhbmdl IGN1cnJlbnQgZGlyZWN0b3J5DQojS0VZTUFQOmU6RURJVAkJCSMgRWRpdCBj dXJyZW50IGRvY3VtZW50IG9yIGZvcm0ncyB0ZXh0YXJlYSAoY2FsbDogXlZl KQ0KI0tFWU1BUDpFOkVMR09UTwkJIyBFZGl0IHRoZSBjdXJyZW50IGxpbmsn cyBVUkwgb3IgQUNUSU9OIGFuZCBnbyB0byBpdA0KI0tFWU1BUDo9OklORk8J CQkjIFNob3cgaW5mbyBhYm91dCBjdXJyZW50IGRvY3VtZW50DQojS0VZTUFQ OnA6UFJJTlQJCQkjIFNob3cgcHJpbnQgb3B0aW9ucw0KI0tFWU1BUDphOkFE RF9CT09LTUFSSwkJIyBBZGQgY3VycmVudCBkb2N1bWVudCB0byBib29rbWFy ayBsaXN0DQojS0VZTUFQOnY6VklFV19CT09LTUFSSwkJIyBWaWV3IHRoZSBi b29rbWFyayBsaXN0DQojS0VZTUFQOlY6VkxJTktTCQkjIExpc3QgbGlua3Mg dmlzaXRlZCBkdXJpbmcgdGhlIGN1cnJlbnQgTHlueCBzZXNzaW9uDQojS0VZ TUFQOiE6U0hFTEwJCQkjIFNwYXduIGRlZmF1bHQgc2hlbGwNCiNLRVlNQVA6 ZDpET1dOTE9BRAkJIyBEb3dubG9hZCBjdXJyZW50IGxpbmsNCiNLRVlNQVA6 ajpKVU1QCQkJIyBKdW1wIHRvIGEgcHJlZGVmaW5lZCB0YXJnZXQNCiNLRVlN QVA6azpLRVlNQVAJCSMgRGlzcGxheSB0aGUgY3VycmVudCBrZXkgbWFwDQoj S0VZTUFQOmw6TElTVAkJCSMgTGlzdCB0aGUgcmVmZXJlbmNlcyAobGlua3Mp IGluIHRoZSBjdXJyZW50IGRvY3VtZW50DQojS0VZTUFQOiM6VE9PTEJBUgkJ IyBHbyB0byB0aGUgVG9vbGJhciBvciBCYW5uZXIgaW4gdGhlIGN1cnJlbnQg ZG9jdW1lbnQNCiNLRVlNQVA6XlQ6VFJBQ0VfVE9HR0xFCQkjIFRvZ2dsZSBk ZXRhaWxlZCB0cmFjaW5nIGZvciBkZWJ1Z2dpbmcNCiNLRVlNQVA6OzpUUkFD RV9MT0cJCSMgVmlldyB0cmFjZSBsb2cgaWYgYXZhaWxhYmxlIGZvciB0aGUg Y3VycmVudCBzZXNzaW9uDQojS0VZTUFQOio6SU1BR0VfVE9HR0xFCQkjIFRv Z2dsZSBpbmNsdXNpb24gb2YgbGlua3MgZm9yIGFsbCBpbWFnZXMNCiNLRVlN QVA6WzpJTkxJTkVfVE9HR0xFCQkjIFRvZ2dsZSBwc2V1ZG8tQUxUcyBmb3Ig aW5saW5lcyB3aXRoIG5vIEFMVCBzdHJpbmcNCiNLRVlNQVA6XTpIRUFECQkJ IyBTZW5kIGEgSEVBRCByZXF1ZXN0IGZvciBjdXJyZW50IGRvY3VtZW50IG9y IGxpbmsNCiMqKiogTXVzdCBiZSBjb21waWxlZCB3aXRoIFVTRV9FWFRFUk5B TFMgdG8gZW5hYmxlIEVYVEVSTiAqKioNCiNLRVlNQVA6LjpFWFRFUk4JCSMg UnVuIGV4dGVybmFsIHByb2dyYW0gd2l0aCB1cmwNCiMqKiogRXNjYXBpbmcg ZnJvbSB0ZXh0IGlucHV0IGZpZWxkcyB3aXRoIF5WIGlzIGluZGVwZW5kZW50 IGZyb20gdGhpczogKioqDQojS0VZTUFQOl5WOlNXSVRDSF9EVEQJCSMgVG9n Z2xlIGJldHdlZW4gU29ydGFTR01MIGFuZCBUYWdTb3VwIEhUTUwgcGFyc2lu Zw0KI0tFWU1BUDoweDAwOkRPX05PVEhJTkcJCSMgRG9lcyBub3RoaW5nIChp Z25vcmUgdGhpcyBrZXkpDQojS0VZTUFQOjB4MTBFOkRPX05PVEhJTkcJIyBE b2VzIG5vdGhpbmcgKGlnbm9yZSB0aGlzIGtleSkNCiMNCi5maQ0KIyBJbiBh ZGRpdGlvbiB0byB0aGUgYmluZGluZ3MgYXZhaWxhYmxlIGJ5IGRlZmF1bHQs IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zDQojIGFyZSBub3QgZGlyZWN0bHkg bWFwcGVkIHRvIGFueSBrZXlzIGJ5IGRlZmF1bHQsIGFsdGhvdWdoIHNvbWUg b2YgdGhlbSBtYXkNCiMgYmUgbWFwcGVkIGluIHNwZWNpZmljIGxpbmUtZWRp dG9yIGJpbmRpbmdzIChlZmZlY3RpdmUgd2hpbGUgaW4gdGV4dCBpbnB1dA0K IyBmaWVsZHMpOg0KLm5mDQojDQojS0VZTUFQOj8/PzpSSUdIVF9MSU5LCQkj IE1vdmUgdG8gdGhlIGxpbmsgdG8gdGhlIHJpZ2h0DQojS0VZTUFQOj8/PzpM RUZUX0xJTksJCSMgTW92ZSB0byB0aGUgbGluayB0byB0aGUgbGVmdA0KI0tF WU1BUDo/Pz86TFBPU19QUkVWX0xJTksJIyBMaWtlIFBSRVZfTElOSywgbGFz dCBjb2x1bW4gcG9zIGlmIGZvcm0gaW5wdXQNCiNLRVlNQVA6Pz8/OkxQT1Nf TkVYVF9MSU5LCSMgTGlrZSBORVhUX0xJTkssIGxhc3QgY29sdW1uIHBvcyBp ZiBmb3JtIGlucHV0DQojKioqIE9ubHkgdXNlZnVsIGluIGZvcm0gdGV4dCBm aWVsZHMgLCBuZWVkIFBBU1Mgb3IgcHJlZml4aW5nIHdpdGggXlY6ICoqKg0K I0tFWU1BUDo/Pz86RFdJTUhFTFAJCSMgRGlzcGxheSBoZWxwIHBhZ2UgdGhh dCBtYXkgZGVwZW5kIG9uIGNvbnRleHQNCiNLRVlNQVA6Pz8/OkRXSU1FRElU CQkjIFVzZSBleHRlcm5hbCBlZGl0b3IgZm9yIGNvbnRleHQtZGVwZW5kZW50 IHB1cnBvc2UNCiMqKiogT25seSB1c2VmdWwgaW4gYSBmb3JtIHRleHRhcmVh LCBuZWVkIFBBU1Mgb3IgcHJlZml4aW5nIHdpdGggXlY6ICoqKg0KI0tFWU1B UDo/Pz86RURJVFRFWFRBUkVBCSMgdXNlIGV4dGVybmFsIGVkaXRvciB0byBl ZGl0IGEgZm9ybSB0ZXh0YXJlYQ0KI0tFWU1BUDo/Pz86R1JPV1RFWFRBUkVB CSMgQWRkIHNvbWUgYmxhbmsgbGluZXMgdG8gYm90dG9tIG9mIHRleHRhcmVh DQojS0VZTUFQOj8/PzpJTlNFUlRGSUxFCQkjIEluc2VydCBmaWxlIGludG8g YSB0ZXh0YXJlYSAoanVzdCBhYm92ZSBjdXJzb3IpDQojKioqIE9ubHkgdXNl ZnVsIHdpdGggZGlyZWQgc3VwcG9ydCBhbmQgT0tfSU5TVEFMTDogKioqDQoj S0VZTUFQOj8/PzpJTlNUQUxMCQkjIGluc3RhbGwgKGkuZS4gY29weSkgbG9j YWwgZmlsZXMgdG8gbmV3IGxvY2F0aW9uDQouZmkNCiMNCiMgSWYgVE9HR0xF X0hFTFAgaXMgbWFwcGVkLCBpbiBub3ZpY2UgbW9kZSB0aGUgc2Vjb25kIGhl bHAgbWVudSBsaW5lDQojIGNhbiBiZSB0b2dnbGVkIGFtb25nIE5PVklDRV9M SU5FX1RXT19BLCBfQiwgYW5kIF9DLCBhcyBkZWZpbmVkIGluDQojIExZTWVz c2FnZXNfZW4uaCAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIE5PVklDRV9MSU5F X1RXTy4NCiMNCiNLRVlNQVA6TzpUT0dHTEVfSEVMUAkJIyBTaG93IG90aGVy IGNvbW1hbmRzIGluIHRoZSBub3ZpY2UgaGVscCBtZW51DQojDQojIEtFWU1B UCBsaW5lcyBjYW4gaGF2ZSBvbmUgb3IgdHdvIGFkZGl0aW9uYWwgZmllbGRz LiAgVGhlIGV4dGVuZGVkIGZvcm1hdCBpcw0KIyAgS0VZTUFQOjxLRVlTVFJP S0U+Ols8TUFJTiBMWU5YIEZVTkNUSU9OPl06PE9USEVSIEJJTkRJTkc+Wzo8 U0VMRUNUPl0NCiMNCiMgSWYgdGhlIGFkZGl0aW9uYWwgZmllbGQgT1RIRVIg QklORElORyBzcGVjaWZpZXMgRElSRUQsIHRoZW4gdGhlIGZ1bmN0aW9uIGlz DQojIG1hcHBlZCBpbiB0aGUgb3ZlcnJpZGUgdGFibGUgdXNlZCBvbmx5IGlu IERJUkVEIG1vZGUuICBUaGlzIGlzIG9ubHkgdmFsaWQNCiMgaWYgbHlueCB3 YXMgY29tcGlsZWQgd2l0aCBkaXJlZCBzdXBwb3J0IGFuZCBPS19PVkVSUklE RSBkZWZpbmVkLiAgQQ0KIyBNQUlOIExZTlggRlVOQ1RJT04gbXVzdCBiZSBn aXZlbiAoaXQgc2hvdWxkIG9mIGNvdXJzZSBiZSBvbmUgdGhhdCBtYWtlcw0K IyBzZW5zZSBpbiBEaXJlZCBtb2RlKSwgYW5kIFNFTEVDVCBpcyBtZWFuaW5n bGVzcy4gIERlZmF1bHQgYnVpbHQtaW4gb3ZlcnJpZGUNCiMgbWFwcGluZ3Mg YXJlDQojDQojS0VZTUFQOl5VOlBSRVZfRE9DOkRJUkVECSMgUmV0dXJuIHRv IHRoZSBwcmV2aW91cyBkb2N1bWVudA0KI0tFWU1BUDouOlRBR19MSU5LOkRJ UkVECSMgVGFnIGEgZmlsZSBvciBkaXJlY3RvcnkgZm9yIGxhdGVyIGFjdGlv bg0KI0tFWU1BUDpjOkNSRUFURTpESVJFRAkJIyBDcmVhdGUgYSBuZXcgZmls ZSBvciBkaXJlY3RvcnkNCiNLRVlNQVA6QzpDSERJUjpESVJFRAkJIyBjaGFu Z2UgY3VycmVudCBkaXJlY3RvcnkNCiNLRVlNQVA6ZjpESVJFRF9NRU5VOkRJ UkVECSMgRGlzcGxheSBhIG1lbnUgb2YgZmlsZSBvcGVyYXRpb25zDQojS0VZ TUFQOm06TU9ESUZZOkRJUkVECQkjIE1vZGlmeSBuYW1lIG9yIGxvY2F0aW9u IG9mIGEgZmlsZSBvciBkaXJlY3RvcnkNCiNLRVlNQVA6cjpSRU1PVkU6RElS RUQJCSMgUmVtb3ZlIGZpbGVzIG9yIGRpcmVjdG9yaWVzDQojS0VZTUFQOnQ6 VEFHX0xJTks6RElSRUQJIyBUYWcgYSBmaWxlIG9yIGRpcmVjdG9yeSBmb3Ig bGF0ZXIgYWN0aW9uDQojS0VZTUFQOnU6VVBMT0FEOkRJUkVECQkjIFNob3cg bWVudSBvZiAiVXBsb2FkIE9wdGlvbnMiDQojDQojIElmIHRoZSBPVEhFUiBC SU5ESU5HIGZpZWxkIGRvZXMgbm90IHNwZWNpZnkgRElSRUQsIHRoZW4gaXQg aXMgdGFrZW4gYXMgYQ0KIyBsaW5lLWVkaXRvciBhY3Rpb24uICBJdCBpcyBw b3NzaWJsZSB0byBrZWVwIHRoZSBNQUlOIExZTlggRlVOQ1RJT04gZmllbGQN CiMgZW1wdHkgaW4gdGhhdCBjYXNlLCBmb3IgY2hhbmdpbmcgb25seSB0aGUg bGluZS1lZGl0aW5nIGJlaGF2aW9yLg0KIyBJZiBhbHRlcm5hdGl2ZSBsaW5l IGVkaXQgc3R5bGVzIGFyZSBjb21waWxlZCBpbiwgYW5kIG1vZGlmeWluZyBh IGtleSdzDQojIGxpbmUtZWRpdG9yIGJpbmRpbmcgb24gYSBwZXIgc3R5bGUg YmFzaXMgaXMgcG9zc2libGUsIHRoZW4gU0VMRUNUIGNhbiBiZQ0KIyB1c2Vk IHRvIHNwZWNpZnkgd2hpY2ggc3R5bGVzIGFyZSBhZmZlY3RlZC4gIEJ5IGRl ZmF1bHQsIG9yIGlmIFNFTEVDVCBpcw0KIyAwLCBhbGwgbGluZSBlZGl0IHN0 eWxlcyBhcmUgYWZmZWN0ZWQuICBJZiBTRUxFQ1QgaXMgYSBwb3NpdGl2ZSBp bnRlZ2VyDQojIG51bWJlciwgb25seSB0aGUgYmluZGluZyBmb3IgdGhlIG51 bWJlcmVkIHN0eWxlIGlzIGNoYW5nZWQgKG51bWJlcmluZw0KIyBpcyBpbiB0 aGUgb3JkZXIgaW4gd2hpY2ggc3R5bGVzIGFyZSBzaG93biBpbiB0aGUgT3B0 aW9ucyBNZW51LCBzdGFydGluZw0KIyB3aXRoIDEgZm9yIHRoZSBEZWZhdWx0 IHN0eWxlKS4gIElmIFNFTEVDVCBpcyBuZWdhdGl2ZSAoLW4pLCBhbGwgc3R5 bGVzDQojIGV4Y2VwdCBuIGFyZSBhZmZlY3RlZC4NCi5uZg0KIw0KIyAgTk9Q CQkjIERvIE5vdGhpbmcNCiMgIEFCT1JUCSMgSW5wdXQgY2FuY2VsbGVkDQoj DQojICBCT0wJCSMgR28gdG8gYmVnaW4gb2YgbGluZQ0KIyAgRU9MCQkjIEdv IHRvIGVuZCAgIG9mIGxpbmUNCiMgIEZPUlcJCSMgQ3Vyc29yIGZvcndhcmRz DQojICBCQUNLCQkjIEN1cnNvciBiYWNrd2FyZHMNCiMgIEZPUldXCSMgV29y ZCBmb3J3YXJkDQojICBCQUNLVwkjIFdvcmQgYmFjaw0KIw0KIyAgREVMTgkJ IyBEZWxldGUgbmV4dC9jdXJyIGNoYXINCiMgIERFTFAJCSMgRGVsZXRlIHBy ZXYgICAgICBjaGFyDQojICBERUxOVwkjIERlbGV0ZSBuZXh0IHdvcmQNCiMg IERFTFBXCSMgRGVsZXRlIHByZXYgd29yZA0KIyAgREVMQkwJIyBEZWxldGUg YmFjayB0byBCT0wNCiMgIERFTEVMCSMgRGVsZXRlIHRocnUgRU9MDQojICBF UkFTRQkjIEVyYXNlIHRoZSBsaW5lDQojICBMT1dFUgkjIExvd2VyIGNhc2Ug dGhlIGxpbmUNCiMgIFVQUEVSCSMgVXBwZXIgY2FzZSB0aGUgbGluZQ0KIw0K IyAgTEtDTUQJIyBJbiBmaWVsZHM6IEludm9rZSBrZXkgY29tbWFuZCBwcm9t cHQgKGRlZmF1bHQgZm9yIF5WKQ0KIyAgUEFTUwkJIyBJbiBmaWVsZHM6IGhh bmRsZSBhcyBub24tbGluZWVkaXQga2V5OyBpbiBwcm9tcHRzOiBpZ25vcmUN CiMNCi5maQ0KIyBNb2RpZnkgZm9sbG93aW5nIGtleSAocHJlZml4aW5nIG9u bHkgd29ya3Mgd2l0aGluIGxpbmUtZWRpdGluZywgZWRpdCBhY3Rpb25zDQoj IG9mIHNvbWUgcmVzdWx0aW5nIHByZWZpeGVkIGtleXMgYXJlIGJ1aWx0LWlu LCBzZWUgTGluZSBFZGl0b3IgaGVscCBwYWdlcykNCiMgIFNFVE0xCSMgU2V0 IG1vZGlmaWVyIDEgZmxhZyAoZGVmYXVsdCBmb3IgXlggLSBrZXkgcHJlZml4 KQ0KIyAgU0VUTTIJIyBTZXQgbW9kaWZpZXIgMiBmbGFnIChhbm90aGVyIGtl eSBwcmVmaXggLSBzYW1lIGVmZmVjdCkNCiMNCiMgTWF5IG5vdCBhbHdheXMg YmUgY29tcGlsZWQgaW46DQoubmYNCiMNCiMgIFRQT1MJCSMgVHJhbnNwb3Nl IGNoYXJhY3RlcnMNCiMgIFNFVE1BUksJIyBlbWFjcy1saWtlIHNldC1tYXJr LWNvbW1hbmQNCiMgIFhQTUFSSwkjIGVtYWNzLWxpa2UgZXhjaGFuZ2UtcG9p bnQtYW5kLW1hcmsNCiMgIEtJTExSRUcJIyBlbWFjcy1saWtlIGtpbGwtcmVn aW9uDQojICBZQU5LCQkjIGVtYWNzLWxpa2UgeWFuaw0KIyAgU1dNQVAJIyBT d2l0Y2ggaW5wdXQga2V5bWFwDQojICBQQVNURQkjIENsaXBCb2FyZCB0byBM eW54IC0gV2luZG93cyBFeHRlbnNpb24NCiMNCi5maQ0KIyBNYXkgd29yayBk aWZmZXJlbnRseSBmcm9tIGV4cGVjdGVkIGlmIG5vdCBib3VuZCB0byB0aGVp ciBleHBlY3RlZCBrZXlzOg0KLm5mDQojDQojICBDSEFSCQkjIEluc2VydCBw cmludGFibGUgY2hhciAoZGVmYXVsdCBmb3IgYWxsIEFTQ0lJIHByaW50YWJs ZSkNCiMgIEVOVEVSCSMgSW5wdXQgY29tcGxldGUsIHJldHVybiBjaGFyL2x5 bnhrZXljb2RlIChmb3IgUkVUVVJOL0VOVEVSKQ0KIyAgVEFCCQkjIElucHV0 IGNvbXBsZXRlLCByZXR1cm4gVEFCIChmb3IgQVNDSUkgVEFCIGNoYXIgXkkp DQojDQouZmkNCiMgSW50ZXJuYWwgdXNlLCBwcm9iYWJseSBub3QgdXNlZnVs IGZvciBiaW5kaW5nLCBsaXN0ZWQgZm9yIGNvbXBsZXRlbmVzczoNCi5uZg0K Iw0KIyAgVU5NT0QJIyBGYWxsIGJhY2sgdG8gbm8tbW9kaWZpZXIgY29tbWFu ZA0KIyAgQUlYCQkjIEhleCA5Nw0KIyAgQzFDSEFSCSMgSW5zZXJ0IEMxIGNo YXIgaWYgcHJpbnRhYmxlDQojDQouZmkNCiMgSWYgT1RIRVIgQklORElORyBz cGVjaWZpZXMgUEFTUywgdGhlbiBpZiB0aGUga2V5IGlzIHByZXNzZWQgaW4g YSB0ZXh0IGlucHV0DQojIGZpZWxkIGl0IGlzIHBhc3NlZCBieSB0aGUgYnVp bHQtaW4gbGluZS1lZGl0b3IgdG8gbm9ybWFsIEtFWU1BUCBoYW5kbGluZywN CiMgaS5lLiB0aGlzIGZsYWcgYWN0cyBsaWtlIGFuIGltcGxpZWQgXlYgZXNj YXBlIChhbHdheXMgb3ZlcnJpZGVzIGxpbmUtZWRpdG9yDQojIGJlaGF2aW9y IG9mIHRoZSBrZXkpLiAgRm9yIGV4YW1wbGUsDQojS0VZTUFQOjB4MTBDOlVQ X1RXTzpQQVNTICMgRnVuY3Rpb24ga2V5IEluc2VydCAtIE1vdmUgZGlzcGxh eSB1cCB0d28gbGluZXMNCiMNCiMgT3RoZXIgZXhhbXBsZXMgKHJlcGVhdGlu ZyBidWlsdC1pbiBiaW5kaW5ncykNCiNLRVlNQVA6XlY6OkxLQ01ECSMgc2V0 IChvbmx5KSBsaW5lLWVkaXQgYWN0aW9uIGZvciBeVg0KI0tFWU1BUDpeVjpT V0lUQ0hfRFREOkxLQ01EICMgc2V0IG1haW4gbHlueGFjdGlvbiBhbmQgbGlu ZS1lZGl0IGFjdGlvbiBmb3IgXlYNCiNLRVlNQVA6XlU6OkVSQVNFOjEJIyBz ZXQgbGluZS1lZGl0IGJpbmRpbmcgZm9yIF5VLCBmb3IgZGVmYXVsdCBzdHls ZQ0KI0tFWU1BUDpeWzo6U0VUTTI6MwkjIHVzZSBlc2NhcGUga2V5IGFzIG1v ZGlmaWVyIC0gd29ya3Mgb25seSBzb21ldGltZXMNCg0KDQouaDEgRXh0ZXJu YWwgUHJvZ3JhbXMNCiMgVGhlc2Ugc2V0dGluZ3MgY29udHJvbCB0aGUgYWJp bGl0eSBvZiBMeW54IHRvIGludm9rZSB2YXJpb3VzIHByb2dyYW1zIGZvcg0K IyB0aGUgdXNlci4NCg0KLmgyIENTV0lOR19QQVRIDQojIFZNUyBPTkxZOg0K Iz09PT09PT09PT0NCiMgT24gVk1TLCBDU3dpbmcgKGFuIFhUcmVlIGVtdWxh dGlvbiBmb3IgVlR4eHggdGVybWluYWxzKSBpcyBpbnRlbmRlZCBmb3INCiMg dXNlIGFzIHRoZSBEaXJlY3RvcnkvRmlsZSBNYW5hZ2VyIChzb3VyY2VzLCBv YmplY3RzLCBvciBleGVjdXRhYmxlcyBhcmUNCiMgYXZhaWxhYmxlIGZyb20g ZnRwOi8vbmFybmlhLm1lbXN0LmVkdS8pLiAgQ1NXSU5HX1BBVEggc2hvdWxk IGJlIGRlZmluZWQNCiMgaGVyZSBvciBpbiB1c2VyZGVmcy5oIHRvIHlvdXIg Zm9yZWlnbiBjb21tYW5kIGZvciBDU3dpbmcsIHdpdGggYW55DQojIHJlZ3Vs YXRvcnkgc3dpdGNoZXMgeW91IHdhbnQgaW5jbHVkZWQuICBJZiBub3QgZGVm aW5lZCwgb3IgZGVmaW5lZCBhcw0KIyBhIHplcm8tbGVuZ3RoIHN0cmluZyAo IiIpIG9yICJub25lIiAoY2FzZS1pbnNlbnNpdGl2ZSksIHRoZSBzdXBwb3J0 DQojIHdpbGwgYmUgZGlzYWJsZWQuICBJdCB3aWxsIGFsc28gYmUgZGlzYWJs ZWQgaWYgdGhlIC1ub2Jyb3dzZSBvcg0KIyAtc2VsZWN0aXZlIHN3aXRjaGVz IGFyZSB1c2VkLCBvciBpZiB0aGUgZmlsZV91cmwgcmVzdHJpY3Rpb24gaXMg c2V0Lg0KIw0KIyBXaGVuIGVuYWJsZWQsIHRoZSBESVJFRF9NRU5VIGNvbW1h bmQgKG5vcm1hbGx5ICdmJyBvciAnRicpIHdpbGwgaW52b2tlDQojIENTd2lu Zywgbm9ybWFsbHkgd2l0aCB0aGUgY3VycmVudCBkZWZhdWx0IGRpcmVjdG9y eSBhcyBhbiBhcmd1bWVudCB0bw0KIyBwb3NpdGlvbiB0aGUgdXNlciBvbiB0 aGF0IG5vZGUgb2YgdGhlIGRpcmVjdG9yeSB0cmVlLiAgSG93ZXZlciwgaWYg dGhlDQojIGN1cnJlbnQgZG9jdW1lbnQgaXMgYSBsb2NhbCBkaXJlY3Rvcnkg bGlzdGluZywgb3IgYSBsb2NhbCBmaWxlIGFuZCBub3QNCiMgb25lIG9mIHRo ZSB0ZW1wb3JhcnkgbWVudSBvciBsaXN0IGZpbGVzLCB0aGUgYXNzb2NpYXRl ZCBkaXJlY3Rvcnkgd2lsbA0KIyBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQs IHRvIHBvc2l0aW9uIHRoZSB1c2VyIG9uIHRoYXQgbm9kZSBvZiB0aGUgdHJl ZS4NCiMNCiNDU1dJTkdfUEFUSDpzd2luZw0KDQoNCi5oMSBJbnRlcm5hbCBC ZWhhdmlvcg0KDQouaDIgQVVUT19VTkNBQ0hFX0RJUkxJU1RTDQojIEFVVE9f VU5DQUNIRV9ESVJMSVNUUyBkZXRlcm1pbmVzIHdoZW4gbG9jYWwgZmlsZSBk aXJlY3RvcnkgbGlzdGluZ3MgYXJlDQojIGF1dG9tYXRpY2FsbHkgcmVnZW5l cmF0ZWQgKGJ5IHJlLXJlYWRpbmcgdGhlIGFjdHVhbCBkaXJlY3RvcnkgZnJv bSBkaXNrKS4gDQojIFNldCB0aGUgdmFsdWUgdG8gMCB0byBhdm9pZCBhdXRv bWF0aWMgcmVnZW5lcmF0aW9uIGluIG1vc3QgY2FzZXMuICBUaGlzIGlzDQoj IHVzZWZ1bCBmb3IgYnJvd3NpbmcgbGFyZ2UgZGlyZWN0b3JpZXMgdGhhdCB0 YWtlIHNvbWUgdGltZSB0byByZWFkIGFuZCBmb3JtYXQuIA0KIyBBbiB1cGRh dGUgY2FuIHN0aWxsIGFsd2F5cyBiZSBmb3JjZWQgd2l0aCB0aGUgUkVMT0FE IGtleSwgYW5kIHNwZWNpZmljIERJUkVEDQojIGFjdGlvbnMgbWF5IGNhdXNl IGEgcmVmcmVzaCBhbnl3YXkuICBTZXQgdGhlIHZhbHVlIHRvIDEgdG8gZm9y Y2UgcmVnZW5lcmF0aW9uDQojIGFmdGVyIGNvbW1hbmRzIHRoYXQgdXN1YWxs eSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBvciBzb21lIGZpbGVzIGFuZCB3b3Vs ZCBtYWtlDQojIHRoZSBkaXNwbGF5ZWQgaW5mbyBzdGFsZSwgbGlrZSBFRElU IGFuZCBSRU1PVkUuICBTZXQgaXQgdG8gMiAodGhlIGRlZmF1bHQpIG9yDQoj IGdyZWF0ZXIgdG8gZm9yY2UgcmVnZW5lcmF0aW9uIGV2ZW4gYWZ0ZXIgbGVh dmluZyB0aGUgZGlzcGxheWVkIGRpcmVjdG9yeQ0KIyBsaXN0aW5nIGJ5IHNv bWUgYWN0aW9uIHRoYXQgdXN1YWxseSBjYXVzZXMgbm8gY2hhbmdlLCBsaWtl IEdPVE8gb3IgZW50ZXJpbmcgYQ0KIyBmaWxlIHdpdGggdGhlIEFDVElWQVRF IGtleS4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgaG9ub3JlZCBpbiBESVJFRCBt b2RlIChpLmUuIA0KIyB3aGVuIGx5bnggaXMgY29tcGlsZWQgd2l0aCBESVJF RF9TVVBQT1JUIGFuZCBpdCBpcyBub3QgZGlzYWJsZWQgd2l0aCBhDQojIC1y ZXN0cmljdGlvbikuICBMb2NhbCBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgd2l0 aG91dCBESVJFRCBub3JtYWxseSBhY3QgYXMgaWYNCiMgQVVUT19VTkNBQ0hF X0RJUkxJU1RTOjAgd2FzIGluIGVmZmVjdC4NCiMNCiNBVVRPX1VOQ0FDSEVf RElSTElTVFM6Mg0KDQoNCi5oMSBBcHBlYXJhbmNlDQoNCi5oMiBMSVNUX0ZP Uk1BVA0KIyBVbml4IE9OTFk6DQojPT09PT09PT09PT0NCiMgTElTVF9GT1JN QVQgZGVmaW5lcyB0aGUgZGlzcGxheSBmb3IgbG9jYWwgZmlsZXMgd2hlbiBM eW54IGhhcyBiZWVuDQojIGNvbXBpbGVkIHdpdGggTE9OR19MSVNUIGRlZmlu ZWQgaW4gdGhlIE1ha2VmaWxlLiAgVGhlIGRlZmF1bHQgaXMgc2V0DQojIGlu IHVzZXJkZWZzLmgsIG5vcm1hbGx5IHRvICJscyAtbCIgZm9ybWF0LCBhbmQg Y2FuIGJlIGNoYW5nZWQgaGVyZQ0KIyBieSB1bmNvbW1lbnRpbmcgdGhlIGlu ZGljYXRlZCBsaW5lcywgb3IgYWRkaW5nIGEgZGVmaW5pdGlvbiB3aXRoIGEN CiMgbW9kaWZpZWQgcGFyYW1ldGVyIGxpc3QuDQojDQojIFRoZSBwZXJjZW50 IGl0ZW1zIGluIHRoZSBsaXN0IGFyZSBpbnRlcnByZXRlZCBhcyBmb2xsb3dz Og0KLm5mDQojDQojCSVwCVVuaXgtc3R5bGUgcGVybWlzc2lvbiBiaXRzDQoj CSVsCWxpbmsgY291bnQNCiMJJW8Jb3duZXIgb2YgZmlsZQ0KIwklZwlncm91 cCBvZiBmaWxlDQojCSVkCWRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24NCiMJ JWEJYW5jaG9yIHBvaW50aW5nIHRvIGZpbGUgb3IgZGlyZWN0b3J5DQojCSVB CWFzIGFib3ZlIGJ1dCBkb24ndCBzaG93IHN5bWJvbGljIGxpbmtzDQojCSV0 CXR5cGUgb2YgZmlsZSAoZGVzY3JpcHRpb24gZGVyaXZlZCBmcm9tIE1JTUUg dHlwZSkNCiMJJVQJTUlNRSB0eXBlIGFzIGtub3duIGJ5IEx5bnggKGZyb20g bWltZS50eXBlcyBvciBkZWZhdWx0KQ0KIwklawlzaXplIG9mIGZpbGUgaW4g S2lsb2J5dGVzDQojCSVLCWFzIGFib3ZlIGJ1dCBvbWl0IHNpemUgZm9yIGRp cmVjdG9yaWVzDQojCSVzCXNpemUgb2YgZmlsZSBpbiBieXRlcw0KIw0KLmZp DQojIEFueXRoaW5nIGJldHdlZW4gdGhlIHBlcmNlbnQgYW5kIHRoZSBsZXR0 ZXIgaXMgcGFzc2VkIG9uIHRvIHNwcmludGYuDQojIEEgZG91YmxlIHBlcmNl bnQgeWllbGRzIGEgbGl0ZXJhbCBwZXJjZW50IG9uIG91dHB1dC4gIE90aGVy IGNoYXJhY3RlcnMNCiMgYXJlIHBhc3NlZCB0aHJvdWdoIGxpdGVyYWxseS4N CiMNCiMgSWYgeW91IHdhbnQgb25seSB0aGUgZmlsZW5hbWU6DQojDQouZXgN CiNMSVNUX0ZPUk1BVDogICAgJWENCiMNCiMgSWYgeW91IHdhbnQgYSBicmll ZiBvdXRwdXQ6DQojDQouZXgNCiNMSVNUX0ZPUk1BVDogICAlNEsgJS0xMi4x MmQgJWENCiMNCiMgSWYgeW91IHdhbnQgdGhlIFVuaXggImxzIC1sIiBmb3Jt YXQ6DQojDQouZXgNCiNMSVNUX0ZPUk1BVDogICAgJXAgJTRsICUtOC44byAl LTguOGcgJTdzICUtMTIuMTJkICVhDQoNCg0KLmgxIEV4dGVybmFsIFByb2dy YW1zDQoNCi5oMiBESVJFRF9NRU5VDQojIFVuaXggT05MWToNCiM9PT09PT09 PT09PQ0KIyBESVJFRF9NRU5VIGl0ZW1zIGFyZSB1c2VkIHRvIGNvbXBvc2Ug dGhlIEYpdWxsIG1lbnUgbGlzdCBpbiBESVJFRCBtb2RlDQojIFRoZSBiZWhh dmlvciBvZiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGdpdmVuIGhlcmUg aXMgbXVjaCB0aGUgc2FtZQ0KIyBhcyBpdCB3YXMgd2hlbiB0aGlzIG1lbnUg d2FzIGhhcmQtY29kZWQgYnV0IHRoZXNlIGl0ZW1zIGNhbiBub3cgYmUgYWRq dXN0ZWQNCiMgdG8gc3VpdCBsb2NhbCBuZWVkcy4gIEluIHBhcnRpY3VsYXIs IG1hbnkgb2YgdGhlIExZTlhESVJFRCBhY3Rpb25zIGNhbiBiZQ0KIyByZXBs YWNlZCB3aXRoIGx5bnhleGVjLCBseW54cHJvZyBhbmQgbHlueGNnaSBzY3Jp cHQgcmVmZXJlbmNlcy4NCiMNCiMgTk9URSB0aGF0IGRlZmluaW5nIGV2ZW4g b25lIERJUkVEX01FTlUgbGluZSBvdmVycmlkZXMgYWxsIHRoZSBidWlsdC1p bg0KIyBkZWZpbml0aW9ucywgc28gYSBjb21wbGV0ZSBzZXQgbXVzdCB0aGVu IGJlIGRlZmluZWQgaGVyZS4NCiMNCiMgRWFjaCBsaW5lIGNvbnNpc3RzIG9m IHRoZSBmb2xsb3dpbmcgZmllbGRzOg0KLm5mDQojDQojCURJUkVEX01FTlU6 dHlwZTpzdWZmaXg6bGluayB0ZXh0OmV4dHJhIHRleHQ6YWN0aW9uDQojDQoj CXR5cGU6IFRBRzogICBsaXN0IG9ubHkgd2hlbiBvbmUgb3IgbW9yZSBmaWxl cyBhcmUgdGFnZ2VkDQojCSAgICAgIEZJTEU6ICBsaXN0IG9ubHkgd2hlbiB0 aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYSByZWd1bGFyIGZpbGUNCiMJICAg ICAgRElSOiAgIGxpc3Qgb25seSB3aGVuIHRoZSBjdXJyZW50IHNlbGVjdGlv biBpcyBhIGRpcmVjdG9yeQ0KIwkgICAgICBMSU5LOiAgbGlzdCBvbmx5IHdo ZW4gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGEgc3ltYm9saWMgbGluaw0K Iw0KIwlzdWZmaXg6ICBsaXN0IG9ubHkgaWYgdGhlIGN1cnJlbnQgc2VsZWN0 aW9uIGVuZHMgaW4gdGhpcyBwYXR0ZXJuDQojDQojCWxpbmsgdGV4dDogIHRo ZSBkaXNwbGF5ZWQgdGV4dCBvZiB0aGUgbGluaw0KIw0KIwlleHRyYSB0ZXh0 OiAgdGhlIHRleHQgZGlzcGxheWVkIGZvbGxvd2luZyB0aGUgbGluaw0KIw0K IwlhY3Rpb246ICB0aGUgVVJMIHRvIGJlIGZvbGxvd2VkIHVwb24gc2VsZWN0 aW9uDQojDQojCWxpbmsgdGV4dCBhbmQgYWN0aW9uIGFyZSBzY2FubmVkIGZv ciAlIHNlcXVlbmNlcyB0aGF0IGFyZSBleHBhbmRlZA0KIwlhdCBkaXNwbGF5 IHRpbWUgYXMgZm9sbG93czoNCiMNCiMJCSVwICBwYXRoIG9mIGN1cnJlbnQg c2VsZWN0aW9uDQojCQklZiAgZmlsZW5hbWUgKGxhc3QgY29tcG9uZW50KSBv ZiBjdXJyZW50IHNlbGVjdGlvbg0KIwkJJXQgIHRhZ2dlZCBsaXN0IChmdWxs IHBhdGhzKQ0KIwkJJWwgIGxpc3Qgb2YgdGFnZ2VkIGZpbGUgbmFtZXMNCiMJ CSVkICB0aGUgY3VycmVudCBkaXJlY3RvcnkNCiMNCi5maQ0KI0RJUkVEX01F TlU6OjpOZXcgRmlsZTooaW4gY3VycmVudCBkaXJlY3RvcnkpOkxZTlhESVJF RDovL05FV19GSUxFJWQNCiNESVJFRF9NRU5VOjo6TmV3IERpcmVjdG9yeToo aW4gY3VycmVudCBkaXJlY3RvcnkpOkxZTlhESVJFRDovL05FV19GT0xERVIl ZA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9uIE9LX0lOU1RBTEwNCiNESVJF RF9NRU5VOkZJTEU6Okluc3RhbGw6c2VsZWN0ZWQgZmlsZSB0byBuZXcgbG9j YXRpb246TFlOWERJUkVEOi8vSU5TVEFMTF9TUkMlcA0KI0RJUkVEX01FTlU6 RElSOjpJbnN0YWxsOnNlbGVjdGVkIGRpcmVjdG9yeSB0byBuZXcgbG9jYXRp b246TFlOWERJUkVEOi8vSU5TVEFMTF9TUkMlcA0KDQojRElSRURfTUVOVTpG SUxFOjpNb2RpZnkgRmlsZSBOYW1lOihvZiBjdXJyZW50IHNlbGVjdGlvbik6 TFlOWERJUkVEOi8vTU9ESUZZX05BTUUlcA0KI0RJUkVEX01FTlU6RElSOjpN b2RpZnkgRGlyZWN0b3J5IE5hbWU6KG9mIGN1cnJlbnQgc2VsZWN0aW9uKTpM WU5YRElSRUQ6Ly9NT0RJRllfTkFNRSVwDQojRElSRURfTUVOVTpMSU5LOjpN b2RpZnkgTmFtZToob2Ygc2VsZWN0ZWQgc3ltYm9saWMgbGluayk6TFlOWERJ UkVEOi8vTU9ESUZZX05BTUUlcA0KDQojIEZvbGxvd2luZyBkZXBlbmRzIG9u IE9LX1BFUk1JVA0KI0RJUkVEX01FTlU6RklMRTo6TW9kaWZ5IEZpbGUgUGVy bWlzc2lvbnM6KG9mIGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9Q RVJNSVRfU1JDJXANCiNESVJFRF9NRU5VOkRJUjo6TW9kaWZ5IERpcmVjdG9y eSBQZXJtaXNzaW9uczoob2YgY3VycmVudCBzZWxlY3Rpb24pOkxZTlhESVJF RDovL1BFUk1JVF9TUkMlcA0KDQojRElSRURfTUVOVTpGSUxFOjpDaGFuZ2Ug TG9jYXRpb246KG9mIHNlbGVjdGVkIGZpbGUpOkxZTlhESVJFRDovL01PRElG WV9MT0NBVElPTiVwDQojRElSRURfTUVOVTpESVI6OkNoYW5nZSBMb2NhdGlv bjoob2Ygc2VsZWN0ZWQgZGlyZWN0b3J5KTpMWU5YRElSRUQ6Ly9NT0RJRllf TE9DQVRJT04lcA0KI0RJUkVEX01FTlU6TElOSzo6Q2hhbmdlIExvY2F0aW9u OihvZiBzZWxlY3RlZCBzeW1ib2xpYyBsaW5rKTpMWU5YRElSRUQ6Ly9NT0RJ RllfTE9DQVRJT04lcA0KI0RJUkVEX01FTlU6RklMRTo6UmVtb3ZlIEZpbGU6 KGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9SRU1PVkVfU0lOR0xF JXANCiNESVJFRF9NRU5VOkRJUjo6UmVtb3ZlIERpcmVjdG9yeTooY3VycmVu dCBzZWxlY3Rpb24pOkxZTlhESVJFRDovL1JFTU9WRV9TSU5HTEUlcA0KI0RJ UkVEX01FTlU6TElOSzo6UmVtb3ZlIFN5bWJvbGljIExpbms6KGN1cnJlbnQg c2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9SRU1PVkVfU0lOR0xFJXANCg0KIyBG b2xsb3dpbmcgZGVwZW5kcyBvbiBPS19VVURFQ09ERSBhbmQgIUFSQ0hJVkVf T05MWQ0KI0RJUkVEX01FTlU6RklMRTo6VVVEZWNvZGU6KGN1cnJlbnQgc2Vs ZWN0aW9uKTpMWU5YRElSRUQ6Ly9VVURFQ09ERSVwDQoNCiMgRm9sbG93aW5n IGRlcGVuZHMgb24gT0tfVEFSIGFuZCAhQVJDSElWRV9PTkxZDQojRElSRURf TUVOVTpGSUxFOi50YXIuWjpFeHBhbmQ6KGN1cnJlbnQgc2VsZWN0aW9uKTpM WU5YRElSRUQ6Ly9VTlRBUl9aJXANCg0KIyBGb2xsb3dpbmcgZGVwZW5kIG9u IE9LX1RBUiBhbmQgT0tfR1pJUCBhbmQgIUFSQ0hJVkVfT05MWQ0KI0RJUkVE X01FTlU6RklMRToudGFyLmd6OkV4cGFuZDooY3VycmVudCBzZWxlY3Rpb24p OkxZTlhESVJFRDovL1VOVEFSX0daJXANCiNESVJFRF9NRU5VOkZJTEU6LnRn ejpFeHBhbmQ6KGN1cnJlbnQgc2VsZWN0aW9uKTpMWU5YRElSRUQ6Ly9VTlRB Ul9HWiVwDQoNCiMgRm9sbG93aW5nIGRlcGVuZHMgb24gIUFSQ0hJVkVfT05M WQ0KI0RJUkVEX01FTlU6RklMRTouWjpVbmNvbXByZXNzOihjdXJyZW50IHNl bGVjdGlvbik6TFlOWERJUkVEOi8vREVDT01QUkVTUyVwDQoNCiMgRm9sbG93 aW5nIGRlcGVuZHMgb24gT0tfR1pJUCBhbmQgIUFSQ0hJVkVfT05MWQ0KI0RJ UkVEX01FTlU6RklMRTouZ3o6VW5jb21wcmVzczooY3VycmVudCBzZWxlY3Rp b24pOkxZTlhESVJFRDovL1VOR1pJUCVwDQoNCiMgRm9sbG93aW5nIGRlcGVu ZHMgb24gT0tfWklQIGFuZCAhQVJDSElWRV9PTkxZDQojRElSRURfTUVOVTpG SUxFOi56aXA6VW5jb21wcmVzczooY3VycmVudCBzZWxlY3Rpb24pOkxZTlhE SVJFRDovL1VOWklQJXANCg0KIyBGb2xsb3dpbmcgZGVwZW5kcyBvbiBPS19U QVIgYW5kICFBUkNISVZFX09OTFkNCiNESVJFRF9NRU5VOkZJTEU6LnRhcjpV blRhcjooY3VycmVudCBzZWxlY3Rpb24pOkxZTlhESVJFRDovL1VOVEFSJXAN Cg0KIyBGb2xsb3dpbmcgZGVwZW5kcyBvbiBPS19UQVINCiNESVJFRF9NRU5V OkRJUjo6VGFyOihjdXJyZW50IHNlbGVjdGlvbik6TFlOWERJUkVEOi8vVEFS JXANCg0KIyBGb2xsb3dpbmcgZGVwZW5kcyBvbiBPS19UQVIgYW5kIE9LX0da SVANCiNESVJFRF9NRU5VOkRJUjo6VGFyIGFuZCBjb21wcmVzczoodXNpbmcg R05VIGd6aXApOkxZTlhESVJFRDovL1RBUl9HWiVwDQoNCiMgRm9sbG93aW5n IGRlcGVuZHMgb24gT0tfWklQDQojRElSRURfTUVOVTpESVI6OlBhY2thZ2Ug YW5kIGNvbXByZXNzOih1c2luZyB6aXApOkxZTlhESVJFRDovL1pJUCVwDQoN CiNESVJFRF9NRU5VOkZJTEU6OkNvbXByZXNzOih1c2luZyBVbml4IGNvbXBy ZXNzKTpMWU5YRElSRUQ6Ly9DT01QUkVTUyVwDQoNCiMgRm9sbG93aW5nIGRl cGVuZHMgb24gT0tfR1pJUA0KI0RJUkVEX01FTlU6RklMRTo6Q29tcHJlc3M6 KHVzaW5nIGd6aXApOkxZTlhESVJFRDovL0daSVAlcA0KDQojIEZvbGxvd2lu ZyBkZXBlbmRzIG9uIE9LX1pJUA0KI0RJUkVEX01FTlU6RklMRTo6Q29tcHJl c3M6KHVzaW5nIHppcCk6TFlOWERJUkVEOi8vWklQJXANCg0KI0RJUkVEX01F TlU6VEFHOjpNb3ZlIGFsbCB0YWdnZWQgaXRlbXMgdG8gYW5vdGhlciBsb2Nh dGlvbi46OkxZTlhESVJFRDovL01PVkVfVEFHR0VEJWQNCg0KIyBGb2xsb3dp bmcgZGVwZW5kcyBvbiBPS19JTlNUQUxMDQojRElSRURfTUVOVTpUQUc6Oklu c3RhbGwgdGFnZ2VkIGZpbGVzIGludG8gYW5vdGhlciBkaXJlY3RvcnkuOjpM WU5YRElSRUQ6Ly9JTlNUQUxMX1NSQyUwMA0KDQojRElSRURfTUVOVTpUQUc6 OlJlbW92ZSBhbGwgdGFnZ2VkIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy46OkxZ TlhESVJFRDovL1JFTU9WRV9UQUdHRUQNCiNESVJFRF9NRU5VOlRBRzo6VW50 YWcgYWxsIHRhZ2dlZCBpdGVtcy46OkxZTlhESVJFRDovL0NMRUFSX1RBR0dF RA0KDQoNCi5oMSBJbnRlcm5hbCBCZWhhdmlvcg0KDQouaDIgTk9OUkVTVEFS VElOR19TSUdXSU5DSA0KIyBTb21lIHN5c3RlbXMgb25seToNCiM9PT09PT09 PT09PT09PT09PT09DQojIEx5bnggdHJpZXMgdG8gZGV0ZWN0IHdpbmRvdyBz aXplIGNoYW5nZXMgd2l0aCBhIHNpZ25hbCBoYW5kbGVyIGZvcg0KIyBTSUdX SU5DSCBpZiBzdXBwb3J0ZWQuICBJZiBOT05SRVNUQVJUSU5HX1NJR1dJTkNI IGlzIHNldCB0byBUUlVFLA0KIyBhbmQgdGhlIHNpZ2FjdGlvbiBpbnRlcmZh Y2UgaXMgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0sIHRoZSBoYW5kbGVyDQoj IGlzIGluc3RhbGxlZCBhcyAnbm9uLXJlc3RhcnRpbmcnLiAgT24gc29tZSBz eXN0ZW1zIChkZXBlbmRpbmcgb24gdGhlDQojIGxpYnJhcnkgdXNlZCBmb3Ig aGFuZGxpbmcga2V5Ym9hcmQgaW5wdXQsIGUuZy4gbmN1cnNlcyksIHRoaXMg YWxsb3dzDQojIG1vcmUgaW1tZWRpYXRlIG5vdGlmaWNhdGlvbiBvZiB3aW5k b3cgc2l6ZSBjaGFuZ2UgZXZlbnRzLiAgSWYgdGhlIHZhbHVlDQojIGlzIHNl dCB0byBGQUxTRSwgdGhlIHNpZ25hbCgpIGludGVyZmFjZSBpcyB1c2VkOyB0 aGlzIG5vcm1hbGx5IG1ha2VzDQojIHRoZSBoYW5kbGVyICdyZXN0YXJ0aW5n Jywgd2l0aCB0aGUgZWZmZWN0IHRoYXQgbHlueCBjYW4gcmVhY3QgdG8gc2l6 ZQ0KIyBjaGFuZ2VzIG9ubHkgYWZ0ZXIgc29tZSBrZXkgaXMgcHJlc3NlZC4g IFRoZSB2YWx1ZSBjYW4gYWxzbyBiZSBzZXQgdG8NCiMgWFdJTkRPV1M7IHRo aXMgaXMgZXF1aXZhbGVudCB0byBUUlVFIHdoZW4gdGhlIHVzZXIgaGFzIHRo ZSBlbnZpcm9ubWVudA0KIyB2YXJpYWJsZSBESVNQTEFZIGRlZmluZWQgKmF0 IHByb2dyYW0gc3RhcnQqLCBhbmQgZXF1aXZhbGVudCB0byBGQUxTRQ0KIyBv dGhlcndpc2UuICBUaGUgbm9uLXJlc3RhcnRpbmcgYmVoYXZpb3IgY2FuIGFs c28gYmUgY2hhbmdlZCB0byBUUlVFDQojIG9yIEZBTFNFIHdpdGggdGhlIC1u b25yZXN0YXJ0aW5nX3NpZ3dpbmNoIHN3aXRjaCwgd2hpY2ggb3ZlcnJpZGVz IHRoZQ0KIyB2YWx1ZSBpbiB0aGlzIGZpbGUuDQojDQojIE5vdGUgdGhhdCBM eW54IG5ldmVyIHJlLXBhcnNlcyBkb2N1bWVudCB0ZXh0IHB1cmVseSBhcyBh IHJlc3VsdCBvZiBhDQojIHdpbmRvdyBzaXplIGNoYW5nZSwgc28gdGV4dCBs aW5lcyBtYXkgYXBwZWFyIHRydW5jYXRlZCBhZnRlciBuYXJyb3dpbmcNCiMg dGhlIHdpbmRvdywgdW50aWwgdGhlIGRvY3VtZW50IGlzIHJlbG9hZGVkIHdp dGggXlIgb3IgYSBzaW1pbGFyIGtleQ0KIyBvciB1bnRpbCBhIGRpZmZlcmVu dCB0ZXh0IGlzIGxvYWRlZC4NCiMNCiMgVGhlIGRlZmF1bHQgaXMgRkFMU0Ug c2luY2UgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IG5vbi1yZXN0YXJ0 aW5nDQojIGludGVycnVwdHMgbWF5IGJlIG1pcy1pbnRlcnByZXRlZCBhcyBm YXRhbCBpbnB1dCBlcnJvcnMgaW4gc29tZQ0KIyBjb25maWd1cmF0aW9ucyAo bGVhZGluZyB0byBhbiBhYnJ1cHQgcHJvZ3JhbSBleGl0KSwgYW5kIHNpbmNl IHRoaXMNCiMgb3B0aW9uIGlzIHVzZWZ1bCBtb3N0bHkgb25seSBmb3IgdXNl cnMgcnVubmluZyBMeW54IHVuZGVyIHh0ZXJtIG9yIGENCiMgc2ltaWxhciBY IHRlcm1pbmFsIGVtdWxhdG9yLiAgT24gc3lzdGVtcyB3aGVyZSB0aGUgcHJl Y29uZGl0aW9ucyBkb24ndA0KIyBhcHBseSB0aGlzIG9wdGlvbiBpcyBpZ25v cmVkLg0KIw0KI05PTlJFU1RBUlRJTkdfU0lHV0lOQ0g6RkFMU0UNCg0KDQou aDIgTk9fRk9SQ0VEX0NPUkVfRFVNUA0KIyBVbml4IE9OTFk6DQojPT09PT09 PT09PT0NCiMgSWYgTk9fRk9SQ0VEX0NPUkVfRFVNUCBpcyBzZXQgdG8gVFJV RSwgTHlueCB3aWxsIG5vdCBmb3JjZQ0KIyBjb3JlIGR1bXBzIHZpYSBhYm9y dCgpIGNhbGxzIG9uIGZhdGFsIGVycm9ycyBvciBhc3NlcnQoKQ0KIyBjYWxs cyB0byBjaGVjayBwb3RlbnRpYWxseSBmYXRhbCBlcnJvcnMuICBUaGUgY29t cGlsYXRpb24NCiMgZGVmYXVsdCBub3JtYWxseSBpcyBGQUxTRSwgYW5kIGNh biBiZSBjaGFuZ2VkIGhlcmUuICBUaGUNCiMgY29tcGlsYXRpb24gb3IgY29u ZmlndXJhdGlvbiBkZWZhdWx0IGNhbiBiZSB0b2dnbGVkIHZpYQ0KIyB0aGUg LWNvcmUgY29tbWFuZCBsaW5lIHN3aXRjaC4NCiMgTm90ZSB0aGF0IHRoaXMg c2V0dGluZyBjYW5ub3QgYmUgdXNlZCB0byBwcmV2ZW50IGNvcmUgZHVtcHMN CiMgd2l0aCBjZXJ0YWludHkuICBJZiB0aGlzIGlzIGltcG9ydGFudCwgbWVh bnMgcHJvdmlkZWQgYnkgdGhlDQojIG9wZXJhdGluZyBzeXN0ZW0gb3Iga2Vy bmVsIHNob3VsZCBiZSB1c2VkLg0KIw0KI05PX0ZPUkNFRF9DT1JFX0RVTVA6 RkFMU0UNCg0KDQouaDEgQXBwZWFyYW5jZQ0KDQouaDIgQ09MT1INCiMgQ09M T1JTIChvbmx5IGF2YWlsYWJsZSBpZiBjb21waWxlZCB3aXRoIFNWcjQgY3Vy c2VzIG9yIHNsYW5nKQ0KIw0KIyBUaGUgbGluZSBtdXN0IGJlIG9mIHRoZSBm b3JtOg0KIw0KIyBDT0xPUjpJbnRlZ2VyOkZvcmVncm91bmQ6QmFja2dyb3Vu ZA0KLm5mDQojDQojIFRoZSBJbnRlZ2VyIHZhbHVlIGlzIGludGVycHJldGVk IGFzIGZvbGxvd3M6DQojICAgMCAtIG5vcm1hbCAgICAgICAgICAgICAgICAg ICAgICAtIG5vcm1hbCB0ZXh0DQojICAgMSAtIGJvbGQgICAgICAgICAgICAg ICAgICAgICAgICAtIGh5cGVybGlua3MsIHNlZSBhbHNvIEJPTERfKiBvcHRp b25zIGFib3ZlDQojICAgMiAtIHJldmVyc2UgICAgICAgICAgICAgICAgICAg ICAtIHN0YXR1c2xpbmUNCiMgICAzIC0gYm9sZCArIHJldmVyc2UgICAgICAg ICAgICAgIChub3QgdXNlZCkNCiMgICA0IC0gdW5kZXJsaW5lICAgICAgICAg ICAgICAgICAgIC0gdGV4dCBlbXBoYXNpcyAoRU0sIEksIEIgdGFncyBldGMu KQ0KIyAgIDUgLSBib2xkICsgdW5kZXJsaW5lICAgICAgICAgICAgLSBoeXBl cmxpbmtzIHdpdGhpbiB0ZXh0IGVtcGhhc2lzDQojICAgNiAtIHJldmVyc2Ug KyB1bmRlcmxpbmUgICAgICAgICAtIGN1cnJlbnRseSBzZWxlY3RlZCBoeXBl cmxpbmsNCiMgICA3IC0gcmV2ZXJzZSArIHVuZGVybGluZSArIGJvbGQgIC0g V0hFUkVJUyBzZWFyY2ggaGl0cw0KIw0KIyBFYWNoIEZvcmVncm91bmQgYW5k IEJhY2tncm91bmQgdmFsdWUgbXVzdCBiZSBvbmUgb2Y6DQojICAgYmxhY2sg ICAgICAgICByZWQgICAgICAgICAgICBncmVlbiAgICAgICAgIGJyb3duDQoj ICAgYmx1ZSAgICAgICAgICBtYWdlbnRhICAgICAgICBjeWFuICAgICAgICAg IGxpZ2h0Z3JheQ0KIyAgIGdyYXkgICAgICAgICAgYnJpZ2h0cmVkICAgICAg YnJpZ2h0Z3JlZW4gICB5ZWxsb3cNCiMgICBicmlnaHRibHVlICAgIGJyaWdo dG1hZ2VudGEgIGJyaWdodGN5YW4gICAgd2hpdGUNCiMNCi5maQ0KIyBvciAo aWYgeW91IGhhdmUgY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1kZWZhdWx0 LWNvbG9ycyB3aXRoIG5jdXJzZXMgb3INCiMgc2xhbmcpLCAiZGVmYXVsdCIg bWF5IGJlIHVzZWQgZm9yIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQuDQoj DQojIFVuY29tbWVudCBhbmQgY2hhbmdlIGFueSBvZiB0aGUgY29tcGlsYXRp b24gZGVmYXVsdHMuDQojDQojQ09MT1I6MDpibGFjazp3aGl0ZQ0KI0NPTE9S OjE6Ymx1ZTp3aGl0ZQ0KI0NPTE9SOjI6eWVsbG93OmJsdWUNCiNDT0xPUjoz OmdyZWVuOndoaXRlDQojQ09MT1I6NDptYWdlbnRhOndoaXRlDQojQ09MT1I6 NTpibHVlOndoaXRlDQojQ09MT1I6NjpyZWQ6d2hpdGUNCiNDT0xPUjo3Om1h Z2VudGE6Y3lhbg0KDQoNCi5oMiBBU1NVTUVEX0NPTE9SDQojIElmIGJ1aWx0 IHdpdGggYSBsaWJyYXJ5IHRoYXQgcmVjb2duaXplcyBkZWZhdWx0IGNvbG9y cywgaW5pdGlhbGl6ZXMgaXQNCiMgdG8gYXNzdW1lIHRoZSBjb3JyZXNwb25k aW5nIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLiAgRGVmYXVs dA0KIyBjb2xvcnMgYXJlIHRob3NlIHRoYXQgdGhlIHRlcm1pbmFsIChlbXVs YXRvcikgaXRzZWxmIGlzIGluaXRpYWxpemVkIHRvLg0KIyBGb3IgaW5zdGFu Y2UsIHlvdSBtaWdodCBoYXZlIGFuIHh0ZXJtIHJ1bm5pbmcgd2l0aCBibGFj ayB0ZXh0IG9uIGEgd2hpdGUNCiMgYmFja2dyb3VuZCwgYW5kIHdhbnQgbHlu eCB0byBkaXNwbGF5IGNvbG9yZWQgdGV4dCBvbiB0aGUgd2hpdGUgYmFja2dy b3VuZCwNCiMgYnV0IGxlYXZlIHRoZSBwb3NzaWJpbGl0eSBvZiB1c2luZyB0 aGUgc2FtZSBjb25maWd1cmF0aW9uIHRvIGRyYXcgY29sb3JlZA0KIyB0ZXh0 IG9uIGEgZGlmZmVyZW50IHh0ZXJtLCB0aGlzIHRpbWUgdXNpbmcgaXRzIGJh Y2tncm91bmQgc2V0IHRvIGJsYWNrLg0KIw0KIyBUaGUgZmlyc3QgdmFsdWUg Z2l2ZW4gaXMgdGhlIGZvcmVncm91bmQsIHRoZSBzZWNvbmQgaXMgdGhlIGJh Y2tncm91bmQuDQojQVNTVU1FRF9DT0xPUjpkZWZhdWx0OmRlZmF1bHQNCg0K DQouaDEgRXh0ZXJuYWwgUHJvZ3JhbXMNCg0KLmgyIEVYVEVSTkFMDQojIEV4 dGVybmFsIGFwcGxpY2F0aW9uIHN1cHBvcnQuICBUaGlzIGZlYXR1cmUgYWxs b3dzIEx5bnggdG8gcGFzcyBhIGdpdmVuDQojIFVSTCB0byBhbiBleHRlcm5h bCBwcm9ncmFtLiAgSXQgd2FzIHdyaXR0ZW4gZm9yIHRocmVlIHJlYXNvbnMu DQojDQojIDEpIFRvIG92ZXJjb21lIHRoZSBkZWZpY2llbmN5CW9mIEx5bnhf Mzg2IG5vdCBzdXBwb3J0aW5nIGZ0cCBhbmQgbmV3cy4NCiMgICAgRXh0ZXJu YWwgcHJvZ3JhbXMgY2FuIGJlIHVzZWQgaW5zdGVhZCBieSBwYXNzaW5nIHRo ZSBVUkwuDQojDQojIDIpIFRvIGFsbG93IGZvciBiYWNrZ3JvdW5kCXRyYW5z ZmVycyBpbiBtdWx0aXRhc2tpbmcgc3lzdGVtcy4NCiMgICAgSSB1c2Ugd2dl dCBmb3IgaHR0cCBhbmQgZnRwIHRyYW5zZmVycyB2aWEgdGhlIGV4dGVybmFs IGNvbW1hbmQuDQojDQojIDMpIFRvIGFsbG93IGZvciBuZXcgVVJMcyB0byBi ZSB1c2VkIHRocm91Z2ggTHlueC4NCiMJICBVUkxzIGNhbiBiZSBtYWRlIHVw IHN1Y2ggYXMgbXltYWlsOiB0byBzcGF3biBkZXNpcmVkIGFwcGxpY2F0aW9u cw0KIwkgIHZpYSB0aGUgZXh0ZXJuYWwgY29tbWFuZC4NCiMNCiMgUmVzdHJp Y3Rpb25zIGNhbiBiZSBpbXBvc2VkIHVzaW5nIC1yZXN0cmljdGlvbnM9ZXh0 ZXJuYWxzIGF0IHRoZSBMeW54IGNvbW1hbmQNCiMgbGluZS4gIFRoaXMgd2ls bCBkaXNhbGxvdyBhbGwgRVhURVJOQUwgbGluZXMgaW4gbHlueC5jZmcgdGhh dCBoYXZlIEZBTFNFIGluDQojIHRoZSAzcmQgZmllbGQgKG5vdCBjb3VudGlu ZyB0aGUgbmFtZSBvZiB0aGUgc2V0dGluZykuICBUUlVFIGxpbmVzIHdpbGwg c3RpbGwNCiMgZnVuY3Rpb24uDQojDQojIFRoZSBseW54LmNmZyBsaW5lIGlz IGFzIGZvbGxvd3M6DQojDQojIEVYVEVSTkFMOjx1cmw+Ojxjb21tYW5kPiAl czo8bm9yZXN0cmljdGlvbj46PGFsbG93X2Zvcl9hY3RpdmF0ZT4NCiMNCiMg PHVybD4gQW55IGdpdmVuIFVSTC4gIFRoaXMgY2FuIGJlIG5vcm1hbCBvbmVz IGxpa2UgZnRwIG9yIGh0dHAgb3IgaXQNCiMgY2FuIGJlIG9uZSBtYWRlIHVw IGxpa2UgbXltYWlsLg0KIw0KIyA8Y29tbWFuZD4gVGhlIGNvbW1hbmQgdG8g cnVuIHdpdGggJXMgYmVpbmcgdGhlIFVSTCB0aGF0IHdpbGwgYmUgcGFzc2Vk Lg0KIyBJbiBMaW51eCBJIHVzZSAid2dldCAtcSAlcyAmIiAobm8gcXVvdGVz KSB0byBzcGF3biBhIGNvcHkgb2Ygd2dldCBmb3INCiMgZG93bmxvYWRpbmcg aHR0cCBhbmQgZnRwIGZpbGVzIGluIHRoZSBiYWNrZ3JvdW5kLiAgSW4gV2lu OTUgSSB1c2UNCiMgInN0YXJ0IG5jZnRwICVzIiB0byBzcGF3biBuY2Z0cCBp biBhIG5ldyB3aW5kb3cuDQojDQojIDxub3Jlc3RyaWN0aW9uPiBUaGlzIGNv bXBsZW1lbnRzIHRoZSAtcmVzdHJpY3Rpb25zPWV4dGVybmFscyBmZWF0dXJl IHRvIGFsbG93DQojIGZvciBjZXJ0YWluIGV4dGVybmFscyB0byBiZSBlbmFi bGVkIHdoaWxlIHJlc3RyaWN0aW5nIG90aGVycy4gIFRSVUUgbWVhbnMNCiMg YSBjb21tYW5kIHdpbGwgc3RpbGwgZnVuY3Rpb24gd2hpbGUgTHlueCBpcyBy ZXN0cmljdGVkLiAgV0INCiMNCiMgPGFsbG93X2Zvcl9hY3RpdmF0ZT4gU2V0 dGluZyB0aGlzIHRvIFRSVUUgYWxsb3dzIHRoZSB1c2Ugb2YgdGhpcyBjb21t YW5kIG5vdA0KIyBvbmx5IHdoZW4gRVhURVJOIGtleSBpcyBwcmVzc2VkLCBi dXQgYWxzbyB3aGVuIEFDVElWQVRFIGNvbW1hbmQgaXMgaW52b2tlZA0KIyAo aS5lIGFjdGl2YXRpbmcgdGhlIGxpbmsgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4 IHdpbGwgYmUgZXF1aXZhbGVudCB0bw0KIyBwcmVzc2luZyBFWFRFUk4ga2V5 IG9uIGl0KS4gIElmIHRoaXMgY29tcG9uZW50IG9mIHRoZSBsaW5lIGlzIGFi c2VudCwgdGhlbg0KIyBGQUxTRSBpcyBhc3N1bWVkLg0KIyANCiMgRm9yIGlu dm9raW5nIHRoZSBjb21tYW5kIHVzZSB0aGUgRVhURVJOIGtleS4gIEJ5IGRl ZmF1bHQgaXQgaXMgbWFwcGVkDQojIHRvICcuJyAoaWYgdGhlIGZlYXR1cmUg aXMgZW5hYmxlZCksIHNlZSB0aGUgS0VZTUFQIHNlY3Rpb24gYWJvdmUuDQoj DQojRVhURVJOQUw6ZnRwOndnZXQgJXMgJjpUUlVFDQoNCg0KLmgxIEludGVy bmFsIEJlaGF2aW9yDQoNCi5oMiBSVUxFDQouaDIgUlVMRVNGSUxFDQojIENF Uk4tc3R5bGUgcnVsZXMsIEVYUEVSSU1FTlRBTCAgLSAgVVJMLXNwZWNpZmlj IHJ1bGVzDQojDQojIEEgQ0VSTi1zdHlsZSBydWxlcyBmaWxlIGNhbiBiZSBn aXZlbiB3aXRoIFJVTEVTRklMRS4gIFVzZSB0aGUgc3lzdGVtJ3MNCiMgbmF0 aXZlIGZvcm1hdCBmb3IgZmlsZW5hbWVzLCBvbiBVbml4ICd+JyBpcyBhbHNv IHJlY29nbml6ZWQuICBJZiBhIGZpbGVuYW1lDQojIGlzIGdpdmVuLCB0aGUg ZmlsZSBtdXN0IGV4aXN0Lg0KIw0KIyBTaW5nbGUgQ0VSTi1zdHlsZSBydWxl cyBjYW4gYmUgc3BlY2lmaWVkIHdpdGggUlVMRVMuDQojDQojIEJvdGggb3B0 aW9ucyBjYW4gYmUgcmVwZWF0ZWQsIHJ1bGVzIGFjY3VtdWxhdGUgaW4gdGhl IG9yZGVyDQojIGdpdmVuLCB0aGV5IHdpbGwgYmUgYXBwbGllZCBpbiBmaXJz dC10by1sYXN0IG9yZGVyLiAgU2VlIGNlcm5ydWxlcy50eHQNCiMgaW4gdGhl IHNhbXBsZXMgc3ViZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9u Lg0KIw0KIyBFeGFtcGxlczoNCi5leCA1DQojCVJVTEVTRklMRTovZXRjL2x5 bngvY2VybnJ1bGVzDQojCVJVTEU6RmFpbAlnb3BoZXI6KgkJICAgICAjIHJl amVjdCBieSBzY2hlbWUNCiMJUlVMRTpQYXNzCWZpbmdlcjovLypAbG9jYWxo b3N0LwkgICAgICMgYWxsb3cgdGhpcywNCiMJUlVMRTpGYWlsCWZpbmdlcjoq CQkgICAgICMgYnV0IG5vdCBvdGhlcnMNCiMJUlVMRTpSZWRpcmVjdAlodHRw Oi8vb2xkLnNlcnZlci8qCWh0dHA6Ly9uZXcuc2VydmVyLyoNCg0KDQouaDEg QXBwZWFyYW5jZQ0KDQouaDIgUFJFVFRZU1JDDQojIEVuYWJsZSBwcmV0dHkg c291cmNlIHZpZXcNCiNQUkVUVFlTUkM6RkFMU0UNCg0KLmgyIFBSRVRUWVNS Q19TUEVDDQojIFByZXR0eSBzb3VyY2UgdmlldyBzZXR0aW5ncy4gVGhlc2Ug c2V0dGluZ3MgYXJlIGluIGVmZmVjdCB3aGVuIC1wcmV0dHlzcmMNCiMgaXMg c3BlY2lmaWVkLg0KIyBUaGUgZm9sbG93aW5nIGxleGljYWwgZWxlbWVudHMg KGxleGVtZXMpIGFyZSByZWNvZ25pemVkOg0KIyBjb21tZW50LCB0YWcsIGF0 dHJpYnV0ZSwgYXR0cmlidXRlIHZhbHVlLCBnZW5lcmFsaXplZCBhbmdsZSBi cmFja2V0cyAoDQojICc8JyAnPicgJzwvJyApLCBlbnRpdHksIGh5cGVybGlu ayBkZXN0aW5hdGlvbiwgZW50aXJlIGZpbGUsIGJhZCBzZXF1ZW5jZSwNCiMg YmFkIHRhZywgYmFkIGF0dHJpYnV0ZSwgc2dtbCBzcGVjaWFsLg0KIyAgVGhl IGZvbGxvd2luZyBncm91cCBvZiBvcHRpb24gdGVsbHMgd2hpY2ggc3R5bGVz IHdpbGwgc3Vycm91bmQgZWFjaA0KIyBsZXhlbWUuIFRoZSBzeW50YXggb2Yg b3B0aW9uIGluIHRoaXMgZ3JvdXAgaXM6DQojUFJFVFRZU1JDX1NQRUM6PExF WEVNRU5BTUU+OjxUQUdTUEVDPjo8VEFHU1BFQz4NCiMgVGhlIGZpcnN0IDxU QUdTUEVDPiBzcGVjaWZpZXMgd2hhdCB0YWdzIHdpbGwgcHJlY2VkZSBsZXhl bWVzIG9mIHRoYXQgY2xhc3MNCiMgaW4gdGhlIGludGVybmFsIGh0bWwgbWFy a3VwLiBUaGUgc2Vjb25kIC0gd2hhdCB3aWxsIGJlIHBsYWNlZCAoaW50ZXJu YWxseSkNCiMgYWZ0ZXIgaXQuDQojIFRBR1NQRUMgaGFzIHRoZSBmb2xsb3dp bmcgc3ludGF4Og0KIyA8VEFHU1BFQz46PSBbICg8VEFHT1BFTj4gfCA8VEFH Q0xPU0U+KSA8U1BBQ0U+KyBdKg0KIyA8VEFHT1BFTj46PSB0YWduYW1lWy5j bGFzc25hbWVdDQojIDxUQUdDTE9TRT46PSAhdGFnbmFtZQ0KIw0KIyBUaGUg Zm9sbG93aW5nIHRhYmxlIGdpdmVzIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4g bGV4ZW1lIGFuZCBsZXhlbWUgbmFtZQ0KLm5mDQojIExleGVtZSAgICAgICAg ICAgICAgICAgICBMRVhFTUVOQU1FICBGVVJUSEVSIEVYUExBTkFUSU9ODQoj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KIyBjb21tZW50ICAgICAgICAgICAgICAgICAgQ09N TQ0KIyB0YWcgICAgICAgICAgICAgICAgICAgICAgVEFHICAgICAgICAgcmVj b2duaXplZCB0YWcgbmFtZSBvbmx5DQojIGF0dHJpYnV0ZSAgICAgICAgICAg ICAgICBBVFRSSUINCiMgYXR0cmlidXRlIHZhbHVlICAgICAgICAgIEFUVFJW QUwNCiMgZ2VuZXJhbGl6ZWQgYnJhY2tldHMgICAgIEFCUkFDS0VUICAgIDwg ID4gIDwvDQojIGVudGl0eSAgICAgICAgICAgICAgICAgICBFTlRJVFkNCiMg aHlwZXJsaW5rIGRlc3RpbmF0aW9uICAgIEhSRUYNCiMgZW50aXJlIGZpbGUg ICAgICAgICAgICAgIEVOVElSRQ0KIyBiYWQgc2VxdWVuY2UgICAgICAgICAg ICAgQkFEU0VRICAgICAgYmFkIGVudGl0eSBvciBpbnZhbGlkIGNvbnN0cnVj dCBhdCB0ZXh0DQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZXZlbC4NCiMgYmFkIHRhZyAgICAgICAgICAgICAgICAgIEJBRFRB RyAgICAgIFVucmVjb2duaXplZCBjb25zdHJ1Y3QgaW4gZ2VuZXJhbGl6ZWQN CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNr ZXRzLg0KIyBiYWQgYXR0cmlidXRlICAgICAgICAgICAgQkFEQVRUUiAgICAg VGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB1bmtub3duIHRvIGx5bngNCiMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0 YWcga25vd24gdG8gbHlueC4gKGkuZS4sDQojICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIG9mIHVua25vd24gdGFn cyB3aWxsIGhhdmUNCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcmt1cCBvZiAgQVRUUklCKQ0KIyBzZ21sIHNwZWNpYWwgICAg ICAgICAgICAgU0dNTFNQRUNJQUwgZG9jdHlwZSwgc2dtbGVsdCwgc2dtbGVs ZSwNCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNn bWxhdHRsaXN0LCBtYXJrZWQgc2VjdGlvbiwgaWRlbnRpZmllcg0KLmZpDQoj DQojIE5vdGVzOg0KIw0KIyAxKSBUaGUgbWFya3VwIGZvciBIVE1MX0VOVElS RSB3aWxsIGJlIGVtaXR0ZWQgb25seSBvbmNlIC0gaXQgd2lsbCBzdXJyb3Vu ZA0KIyAgICBlbnRpcmUgZmlsZSBzb3VyY2UuDQojDQojIDIpIFRoZSB0YWdu YW1lcyBzcGVjaWZpZWQgYnkgVEFHU1BFQyBzaG91bGQgYmUgdmFsaWQgaHRt bCB0YWcgbmFtZXMuDQojDQojIDMpIElmIHRoZSB0YWcvY2xhc3MgY29tYmlu YXRpb24gZ2l2ZW4gYnkgVEFHT1BFTiBpcyBub3QgYXNzaWduZWQgYSBjb2xv cg0KIyAgICBzdHlsZSBpbiBsc3MgZmlsZSAoZm9yIGx5bnggY29tcGlsZWQg d2l0aCBsc3Mgc3VwcG9ydCksIHRoYXQgdGFnL2NsYXNzDQojICAgIGNvbWJp bmF0aW9uIHdpbGwgYmUgZW1pdHRlZCBhbnl3YXkgZHVyaW5nIGludGVybmFs IGh0bWwgbWFya3VwLiBTdWNoDQojICAgIGNvbWJpbmF0aW9ucyB3aWxsIGJl IGFsc28gcmVwb3J0ZWQgdG8gdGhlIHRyYWNlIGxvZy4NCiMNCiMgNCkgTGV4 ZW1lICd0YWcnIG1lYW5zIHRhZyBuYW1lIG9ubHkNCiMNCiMgNSkgQW5nbGUg YnJhY2tldHMgb2YgaHRtbCBzcGVjaWFscyB3b24ndCBiZSBzdXJyb3VuZGVk IGJ5IG1hcmt1cCBmb3IgQUJSQUNLRVQNCiMNCi5leA0KIyBQUkVUVFlTUkNf U1BFQzpDT01NOkIgSTohSSAhQg0KIyAgICAgICAgICAgSFRNTCBjb21tZW50 cyB3aWxsIGJlIHN1cnJvdW5kZWQgYnkgPGI+PGk+IGFuZCA8L2k+PC9iPiBp biB0aGUNCiMgICAgICAgICAgIGludGVybmFsIGh0bWwgbWFya3VwDQouZXgN CiMgUFJFVFRZU1JDX1NQRUM6QVRUUlZBTDogc3Bhbi5hdHRydmFsIDogIXNw YW4NCiMgICAgICAgICAgIFZhbHVlcyBvZiB0aGUgYXR0cmlidXRlcyB3aWxs IGJlIHN1cnJvdW5kZWQgYnkgdGhlDQojICAgICAgICAgICA8U1BBTiBjbGFz cz1hdHRydmFsPiA8L1NQQU4+DQouZXgNCiMgUFJFVFRZU1JDX1NQRUM6SFJF Rjo6DQojICAgICAgICAgICBObyBzcGVjaWFsIGh0bWwgbWFya3VwIHdpbGwg c3Vycm91bmQgaHlwZXJsaW5rIGRlc3RpbmF0aW9ucyAoDQojICAgICAgICAg ICB0aGlzIG1lYW5zIHRoYXQgb25seSBkZWZhdWx0IGNvbG9yIHN0eWxlIGZv ciBocmVmcyB3aWxsIGJlIGFwcGxpZWQNCiMgICAgICAgICAgIHRvIHRoZW0p DQojDQojIEZvciBseW54IGNvbXBpbGVkIHdpdGggbHNzIHN1cHBvcnQsIHRo ZSBmb2xsb3dpbmcgc2V0dGluZ3MgYXJlIHRoZSBkZWZhdWx0Og0KI1BSRVRU WVNSQ19TUEVDOkNPTU06c3Bhbi5odG1sc3JjX2NvbW1lbnQ6IXNwYW4NCiNQ UkVUVFlTUkNfU1BFQzpUQUc6c3Bhbi5odG1sc3JjX3RhZzohc3Bhbg0KI1BS RVRUWVNSQ19TUEVDOkFUVFJJQjpzcGFuLmh0bWxzcmNfYXR0cmliOiFzcGFu DQojUFJFVFRZU1JDX1NQRUM6QVRUUlZBTDpzcGFuLmh0bWxzcmNfYXR0cnZh bDohc3Bhbg0KI1BSRVRUWVNSQ19TUEVDOkFCUkFDS0VUOnNwYW4uaHRtbHNy Y19hYnJhY2tldDohc3Bhbg0KI1BSRVRUWVNSQ19TUEVDOkVOVElUWTpzcGFu Lmh0bWxzcmNfZW50aXR5OiFzcGFuDQojUFJFVFRZU1JDX1NQRUM6SFJFRjpz cGFuLmh0bWxzcmNfaHJlZjohc3Bhbg0KI1BSRVRUWVNSQ19TUEVDOkVOVElS RTpzcGFuLmh0bWxzcmNfZW50aXJlOiFzcGFuDQojUFJFVFRZU1JDX1NQRUM6 QkFEU0VROnNwYW4uaHRtbHNyY19iYWRzZXE6IXNwYW4NCiNQUkVUVFlTUkNf U1BFQzpCQURUQUc6c3Bhbi5odG1sc3JjX2JhZHRhZzohc3Bhbg0KI1BSRVRU WVNSQ19TUEVDOkJBREFUVFI6c3Bhbi5odG1sc3JjX2JhZGF0dHI6IXNwYW4N CiNQUkVUVFlTUkNfU1BFQzpTR01MU1BFQ0lBTDpzcGFuLmh0bWxzcmNfc2dt bHNwZWNpYWw6IXNwYW4NCiMgdGhlIHN0eWxlcyBjb3JyZXNwb25kaW5nIHRv IHRoZW0gYXJlIHByZXNlbnQgaW4gc2FtcGxlIC5sc3MgZmlsZS4NCiMgRm9y IGx5bnggY29tcGlsZWQgd2l0aG91dCBsc3Mgc3VwcG9ydCwgdGhlIGZvbGxv d2luZyBzZXR0aW5ncyBhcmUgdGhlIGRlZmF1bHQ6DQojUFJFVFRZU1JDX1NQ RUM6Q09NTTpiOiFiDQojUFJFVFRZU1JDX1NQRUM6VEFHOmI6IWINCiNQUkVU VFlTUkNfU1BFQzpBVFRSSUI6YjohYg0KI1BSRVRUWVNSQ19TUEVDOkFUVFJW QUw6Og0KI1BSRVRUWVNSQ19TUEVDOkFCUkFDS0VUOmI6IWINCiNQUkVUVFlT UkNfU1BFQzpFTlRJVFk6YjohYg0KI1BSRVRUWVNSQ19TUEVDOkhSRUY6Og0K I1BSRVRUWVNSQ19TUEVDOkVOVElSRTo6DQojUFJFVFRZU1JDX1NQRUM6QkFE U0VROmI6IWINCiNQUkVUVFlTUkNfU1BFQzpCQURUQUc6Og0KI1BSRVRUWVNS Q19TUEVDOkJBREFUVFI6Og0KI1BSRVRUWVNSQ19TUEVDOlNHTUxTUEVDSUFM OmI6IWINCg0KDQouaDIgSFRNTFNSQ19BVFRSTkFNRV9YRk9STQ0KLmgyIEhU TUxTUkNfVEFHTkFNRV9YRk9STQ0KIyBPcHRpb25zIEhUTUxTUkNfVEFHTkFN RV9YRk9STSBhbmQgSFRNTFNSQ19BVFRSTkFNRV9YRk9STSBjb250cm9sIHRo ZSB3YXkgdGhlDQojIG5hbWVzIG9mIHRhZ3MgYW5kIG5hbWVzIG9mIGF0dHJp YnV0ZXMgYXJlIHRyYW5zZm9ybWVkIGNvcnJlc3BvbmRpbmdseS4NCiMgUG9z c2libGUgdmFsdWVzOiAwIC0gbG93ZXJjYXNlLCAxIC0gbGVhdmUgYXMgaXMs IDIgLSB1cHBlcmNhc2UuDQojSFRNTFNSQ19UQUdOQU1FX1hGT1JNOjINCiNI VE1MU1JDX0FUVFJOQU1FX1hGT1JNOjINCg0KDQouaDIgUFJFVFRZU1JDX1ZJ RVdfTk9fQU5DSE9SX05VTUJFUklORw0KIyBQUkVUVFlTUkNfVklFV19OT19B TkNIT1JfTlVNQkVSSU5HIC0gcHJldHR5IHNvdXJjZSB2aWV3IHNldHRpbmcN CiMgSWYgImtleXBhZCBtb2RlIiBpbiAnTydwdGlvbnMgc2NyZWVuIGlzICJM aW5rcyBhcmUgbnVtYmVyZWQiIG9yDQojICJMaW5rcyBhbmQgZm9ybSBmaWVs ZHMgYXJlIG51bWJlcmVkIiwgYW5kIFBSRVRUWVNSQ19WSUVXX05PX0FOQ0hP Ul9OVU1CRVJJTkcgaXMNCiMgVFJVRSwgdGhlbiBsaW5rcyB3b24ndCBiZSBu dW1iZXJlZCBpbiBwc3JjIHZpZXcgYW5kIHdpbGwgYmUgbnVtYmVyZWQNCiMg b3RoZXJ3aXNlLiBTZXQgdGhpcyBzZXR0aW5nIHRvIFRSVUUgaWYgeW91IHBy ZWZlciBudW1iZXJlZCBsaW5rcywgYnV0IHdpc2gNCiMgdG8gZ2V0IHZhbGlk IEhUTUwgc291cmNlIHdoZW4gcHJpbnRpbmcgb3IgbWFpbGluZyB3aGVuIGlu IHBzcmMgdmlldy4NCiMgRGVmYXVsdCBpcyBGQUxTRS4NCiNQUkVUVFlTUkNf VklFV19OT19BTkNIT1JfTlVNQkVSSU5HOkZBTFNFDQoNCg0KLmgxIEhUTUwg UGFyc2luZw0KDQouaDIgRk9SQ0VfRU1QVFlfSFJFRkxFU1NfQQ0KIyBGT1JD RV9FTVBUWV9IUkVGTEVTU19BIC0gSFRNTCBwYXJzaW5nDQojIFRoaXMgb3B0 aW9uIG1pcnJvcnMgY29tbWFuZC1saW5lIG9wdGlvbiB3aXRoIHRoZSBzYW1l IG5hbWUuICBEZWZhdWx0IGlzDQojIEZBTFNFLiAgSWYgdHJ1ZSwgdGhlbiBh bnkgJ0EnIGVsZW1lbnQgd2l0aG91dCBIUkVGIHdpbGwgYmUgY2xvc2VkDQoj IGltbWVkaWF0ZWx5LiAgVGhpcyBpcyB1c2VmdWwgd2hlbiB2aWV3aW5nIGRv Y3VtZW50YXRpb24gcHJvZHVjZWQgYnkgYnJva2VuDQojIHRyYW5zbGF0b3Ig dGhhdCBkb2Vzbid0IGVtaXQgYmFsYW5jZWQgQSBlbGVtZW50cy4gIElmIGx5 bnggd2FzIGNvbXBpbGVkIHdpdGgNCiMgY29sb3Igc3R5bGVzLCBzZXR0aW5n IHRoaXMgb3B0aW9uIHRvIFRSVUUgd2lsbCBtYWtlIGx5bnggc2NyZWVuIG11 Y2ggbW9yZQ0KIyByZWFzb25hYmxlIChvdGhlcndpc2UgYWxsIHRleHQgd2ls bCBwcm9iYWJseSBoYXZlIGNvbG9yIGNvcnJlc3BvbmRpbmcgdG8gdGhlDQoj IEEgZWxlbWVudCkuDQojDQojRk9SQ0VfRU1QVFlfSFJFRkxFU1NfQTpGQUxT RQ0KDQouaDIgSElEREVOX0xJTktfTUFSS0VSDQojIEhJRERFTl9MSU5LX01B UktFUiAtIEhUTUwgcGFyc2luZw0KIyBUaGlzIG9wdGlvbiBkZWZpbmVzIHRo ZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGl0bGUgb2YgaGlkZGVu IGxpbmsgKGENCiMgbGluayB0aGF0IG90aGVyd2lzZSB3aWxsIGhhdmUgbm8g bGFiZWwgYXNzb2NpYXRlZCB3aXRoIGl0KS4gIFVzaW5nIGFuIGVtcHR5DQoj IHN0cmluZyBhcyB0aGUgdmFsdWUgd2lsbCBjYXVzZSBseW54IHRvIGJlaGF2 ZSBpbiB0aGUgb2xkIHdheSAtIGhpZGRlbiBsaW5rcw0KIyB3aWxsIGJlIGhh bmRsZWQgYWNjb3JkaW5nIHRvIG90aGVyIHNldHRpbmdzIChtb3N0bHkgdGhl IHBhcmFtZXRlciBvZg0KIyAtLWhpZGRlbmxpbmtzIGNvbW1hbmQtbGluZSBz d2l0Y2gpLiAgSWYgdGhlIHZhbHVlIGlzIG5vbi1lbXB0eSBzdHJpbmcsIGhp ZGRlbg0KIyBsaW5rIGJlY29tZXMgbm9uLWhpZGRlbiBzbyBpdCB3b24ndCBi ZSBoYW5kbGVkIGFzIGhpZGRlbiBsaW5rLCBlLmcuLCBsaXN0ZWQNCiMgYW1v bmcgaGlkZGVuIGxpbmtzIG9uICdsJ2lzdGluZyBwYWdlLg0KIw0KI0hJRERF Tl9MSU5LX01BUktFUjoNCg0KLmgxIEFwcGVhcmFuY2UNCg0KLmgyIEpVU1RJ RlkNCiMgSlVTVElGWSAtIEFwcGVhcmFuY2UNCiMgVGhpcyBvcHRpb24gbWly cm9ycyBjb21tYW5kLWxpbmUgb3B0aW9uIHdpdGggc2FtZSBuYW1lLiAgRGVm YXVsdCBpcyBUUlVFLiAgSWYNCiMgdHJ1ZSwgbW9zdCBvZiB0ZXh0IChleGNl cHQgaGVhZGVycyBhbmQgbGlrZSB0aGlzKSB3aWxsIGJlIGp1c3RpZmllZC4g IFRoaXMNCiMgaGFzIG5vIGluZmx1ZW5jZSBvbiBDSksgdGV4dCByZW5kZXJp bmcuDQojDQojIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIEx5 bnggd2FzIGNvbXBpbGVkIHdpdGggRVhQX0pVU1RJRllfRUxUUy4NCiMNCiNK VVNUSUZZOlRSVUUNCg0KLmgyIEpVU1RJRllfTUFYX1ZPSURfUEVSQ0VOVCAN CiMgSlVTVElGWV9NQVhfVk9JRF9QRVJDRU5UIC0gQXBwZWFyYW5jZQ0KIyBU aGlzIG9wdGlvbiBjb250cm9scyB0aGUgbWF4aW11bSBhbGxvd2VkIHZhbHVl IGZvciByYXRpbyAoaW4gcGVyY2VudHMpIG9mDQojICd0aGUgbnVtYmVyIG9m IHNwYWNlcyB0byBzcHJlYWQgYWNyb3NzIHRoZSBsaW5lIHRvIGp1c3RpZnkg aXQnIHRvDQojICdtYXggbGluZSBzaXplIGZvciBjdXJyZW50IHN0eWxlIGFu ZCBuZXN0aW5nJyB3aGVuIGp1c3RpZmljYXRpb24gaXMgYWxsb3dlZC4NCiMg V2hlbiB0aGF0IHJhdGlvIGV4Y2VlZHMgdGhlIHZhbHVlIHNwZWNpZmllZCwg dGhhdCBwYXJ0aWN1bGFyIGxpbmUgd29uJ3QgYmUNCiMganVzdGlmaWVkLiBJ LmUuIHRoZSB2YWx1ZSAyOCBmb3IgdGhpcyBzZXR0aW5nIHdpbGwgbWVhbiBt YXhpbXVtIHZhbHVlIGZvcg0KIyB0aGF0IHJhdGlvIGlzIDAuMjguDQojDQoj SlVTVElGWV9NQVhfVk9JRF9QRVJDRU5UOjM1DQoNCg0KLmgxIEludGVyYWN0 aW9uDQoNCi5oMiBURVhURklFTERTX05FRURfQUNUSVZBVElPTg0KIyBJZiBU RVhURklFTERTX05FRURfQUNUSVZBVElPTiBpcyBzZXQgdG8gVFJVRSwgYW5k IGx5bnggd2FzIGNvbXBpbGVkIHdpdGgNCiMgVEVYVEZJRUxEU19NQVlfTkVF RF9BQ1RJVkFUSU9OIGRlZmluZWQsIHRoZW4gdGV4dCBpbnB1dCBmb3JtIGZp ZWxkcyBuZWVkDQojIHRvIGJlIGFjdGl2YXRlZCAoYnkgcHJlc3NpbmcgdGhl IEVudGVyIGtleSBvciBzaW1pbGFyKSBiZWZvcmUgdGhlIHVzZXINCiMgY2Fu IGVudGVyIG9yIG1vZGlmeSBpbnB1dC4gIEJ5IGRlZmF1bHQsIGlucHV0IGZp ZWxkcyBiZWNvbWUgYXV0b21hdGljYWxseQ0KIyBhY3RpdmF0ZWQgd2hlbiBz ZWxlY3RlZC4gIFJlcXVpcmluZyBleHBsaWNpdCBhY3RpdmF0aW9uIGNhbiBi ZSBkZXNpcmVkIGZvcg0KIyB1c2VycyB3aG8gdXNlIGFscGhhbnVtZXJpYyBr ZXlzIGZvciBuYXZpZ2F0aW9uIChvciBvdGhlciBrZXlzIHRoYXQgaGF2ZQ0K IyBzcGVjaWFsIG1lYW5pbmcgaW4gdGhlIGxpbmUgZWRpdG9yIC0gJyAnLCAn YicsIElOUywgREVMLCBldGMpLCBhbmQgZG9uJ3QNCiMgd2FudCB0byAnZ2V0 IHN0dWNrJyBpbiBmb3JtIGZpZWxkcy4gIEluc3RlYWQgb2Ygc2V0dGluZyB0 aGUgb3B0aW9uIGhlcmUsDQojIGV4cGxpY2l0IGFjdGl2YXRpb24gY2FuIGFs c28gYmUgcmVxdWVzdGVkIHdpdGggdGhlIC10bmEgY29tbWFuZCBsaW5lDQoj IG9wdGlvbi4NCiMNCiNURVhURklFTERTX05FRURfQUNUSVZBVElPTjpGQUxT RQ0KDQouaDIgTEVGVEFSUk9XX0lOX1RFWFRGSUVMRF9QUk9NUFQNCiMgTEVG VEFSUk9XX0lOX1RFWFRGSUVMRF9QUk9NUFQNCiMgVGhpcyBvcHRpb24gY29u dHJvbHMgd2hhdCBoYXBwZW5zIHdoZW4gYSBMZWZ0IEFycm93IGtleSBpcyBw cmVzc2VkIHdoaWxlDQojIGluIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiBhbiBh Y3RpdmUgdGV4dCBpbnB1dCBmaWVsZC4gIEJ5IGRlZmF1bHQsIEx5bngNCiMg YXNrcyBmb3IgY29uZmlybWF0aW9uICgiRG8geW91IHdhbnQgdG8gZ28gYmFj ayB0byB0aGUgcHJldmlvdXMgZG9jdW1lbnQ/IikNCiMgb25seSBpZiB0aGUg Y29udGVudHMgb2YgdGhlIGZpZWxkcyBoYXZlIGJlZW4gY2hhbmdlZCBzaW5j ZSBlbnRlcmluZyBpdC4NCiMgSWYgc2V0IHRvIFRSVUUsIHRoZSBjb25maXJt YXRpb24gcHJvbXB0IGlzIGFsd2F5cyBpc3N1ZWQuDQojDQojTEVGVEFSUk9X X0lOX1RFWFRGSUVMRF9QUk9NUFQ6RkFMU0UNCg0KDQouaDEgVGltZW91dHMN Cg0KLmgyIENPTk5FQ1RfVElNRU9VVA0KIyBTcGVjaWZpZXMgKGluIHNlY29u ZHMpIGNvbm5lY3QgdGltZW91dC4gTm90IGF2YWlsYWJsZSB1bmRlciBET1Mg KHVzZQ0KIyBzb2NrZGVsYXkgcGFyYW1ldGVyIG9mIHdhdHRjcCkuIERlZmF1 bHQgdmFsdWUgaXMgcmF0aGVyIGh1Z2UuDQojQ09OTkVDVF9USU1FT1VUOjE4 MDAwDQoNCg0KLmgxIEludGVybmFsIEJlaGF2aW9yDQojIFRoZXNlIHNldHRp bmdzIGNvbnRyb2wgaW50ZXJuYWwgbHlueCBiZWhhdmlvciAtIHRoZSB3YXkg aXQgaW50ZXJhY3RzIHdpdGggdGhlDQojIG9wZXJhdGluZyBzeXN0ZW0gYW5k IEludGVybmV0LiAgTW9kaWZ5aW5nIHRoZXNlIHNldHRpbmdzIHdpbGwgbm90 IGNoYW5nZQ0KIyB0aGUgcmVuZGl0aW9uIG9mIGRvY3VtZW50cyB0aGF0IHlv dSBicm93c2Ugd2l0aCBseW54LCBidXQgY2FuIGNoYW5nZSB2YXJpb3VzDQoj IGRlbGF5cyBhbmQgcmVzb3VyY2UgdXRpbGl6YXRpb24uDQoNCi5oMiBGVFBf UEFTU0lWRQ0KIyBTZXQgRlRQX1BBU1NJVkUgdG8gVFJVRSBpZiB5b3Ugd2Fu dCB0byB1c2UgcGFzc2l2ZSBtb2RlIGZ0cCB0cmFuc2ZlcnMuDQojIFlvdSBt aWdodCBoYXZlIHRvIGRvIHRoaXMgaWYgeW91J3JlIGJlaGluZCBhIHJlc3Ry aWN0aXZlIGZpcmV3YWxsLg0KI0ZUUF9QQVNTSVZFOkZBTFNFDQo= ---1463781110-1143260255-983462673=:1603--