Re: nano: make configuring key bindings easier for users
Steef Boerrigter <[email protected]> Sun, 10 May 2026 17:02:08 -0400
| Newsgroups | gmane.editors.nano.devel |
|---|---|
| Message-ID | <CAFe6kZuG8Gi4noTzoBqgE8vPH6e5ueY6mew9Lb61xLqZw6VfwQ@mail.gmail.com> |
--000000000000b373c506517cf1f1 Content-Type: multipart/alternative; boundary="000000000000b373c506517cf1ef" --000000000000b373c506517cf1ef Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable All, In response to Benno's curiosity of how extensive my changes to the nano keybindings are, please see the attached file. I am a long-term cooledit user, so configured most keys to closely resemble its keybindings. If you want a fresh start and not have remnants of the built-in keybindings, it takes a lot of unbind commands. Benno asked if the manual isn't enough. Although it does provide the key between the description of the functions in the online help and how to access them in the nanorc files, it means you have to navigate between three documents. The manual does not well describe the different keybindings in all of the special menus. Best, Steef On Thu, May 7, 2026 at 4:43=E2=80=AFAM Benno Schulenberg <bensberg@telfort.= nl> wrote: > > Op 05-05-2026 om 19:37 schreef Steef Boerrigter: > > I spent a significant amount of time figuring out how to configure nano > key > > bindings to fit them to my needs. > > Were the built-in help (^G/^H) and the man pages not enough documentation= ? > If so, what was missing? > > It would also be helpful to see how you have actually configured your nan= o, > what rebindings you made. I'm curious to see how extensive the rebinding= s > are. > > > Benno > > --000000000000b373c506517cf1ef Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>All,</div><div><br></div><div>In response=C2=A0to Ben= no's curiosity of how extensive my changes to the nano keybindings are,= please see the attached file.</div><div>I am a long-term cooledit user, so= configured most keys to closely=C2=A0resemble its keybindings.</div><div><= br></div><div>If you want a fresh start and not have remnants of the built-= in keybindings, it takes a lot of unbind commands.</div><div><br></div><div= >Benno asked if the manual isn't enough.</div><div>Although it does pro= vide the key between the description of the functions in the online help an= d how to access them in the nanorc files, it means you have to navigate bet= ween three documents. The manual does not well describe the different keybi= ndings in all of the special menus.</div><div><br></div><div><br></div><div= >Best,</div><div>Steef</div><div><br></div></div><br><div class=3D"gmail_qu= ote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Ma= y 7, 2026 at 4:43=E2=80=AFAM Benno Schulenberg <<a href=3D"mailto:bensbe= [email protected]">[email protected]</a>> wrote:<br></div><blockquote clas= s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r= gb(204,204,204);padding-left:1ex"><br> Op 05-05-2026 om 19:37 schreef Steef Boerrigter:<br> > I spent a significant amount of time figuring out how to configure nan= o key <br> > bindings to fit them to my needs.<br> <br> Were the built-in help (^G/^H) and the man pages not enough documentation?<= br> If so, what was missing?<br> <br> It would also be helpful to see how you have actually configured your nano,= <br> what rebindings you made.=C2=A0 I'm curious to see how extensive the re= bindings<br> are.<br> <br> <br> Benno<br> <br> </blockquote></div> --000000000000b373c506517cf1ef-- --000000000000b373c506517cf1f1 Content-Type: application/octet-stream; name="nanorc.steef" Content-Disposition: attachment; filename="nanorc.steef" Content-Transfer-Encoding: base64 Content-ID: <f_mp091qbp0> X-Attachment-Id: f_mp091qbp0 IyMgU3RlZWYgc2V0dGluZ3MgdG8gcmVzZW1ibGUgY29vbGVkaXQKCiMjIE1ha2UgJ25leHR3b3Jk JyAoQ3RybCtSaWdodCkgYW5kICdjaG9wd29yZHJpZ2h0JyAoQ3RybCtEZWxldGUpCiMjIHN0b3Ag YXQgd29yZCBlbmRzIGluc3RlYWQgb2YgYXQgYmVnaW5uaW5ncy4KIyBzZXQgYWZ0ZXJlbmRzCgoj IyBXaGVuIHNvZnQgbGluZSB3cmFwcGluZyBpcyBlbmFibGVkLCBtYWtlIGl0IHdyYXAgbGluZXMg YXQgYmxhbmtzCiMjICh0YWJzIGFuZCBzcGFjZXMpIGluc3RlYWQgb2YgYWx3YXlzIGF0IHRoZSBl ZGdlIG9mIHRoZSBzY3JlZW4uCiMgc2V0IGF0YmxhbmtzCgojIyBBdXRvbWF0aWNhbGx5IGluZGVu dCBhIG5ld2x5IGNyZWF0ZWQgbGluZSB0byB0aGUgc2FtZSBudW1iZXIgb2YKIyMgdGFicyBhbmQv b3Igc3BhY2VzIGFzIHRoZSBwcmVjZWRpbmcgbGluZSAtLSBvciBhcyB0aGUgbmV4dCBsaW5lCiMj IGlmIHRoZSBwcmVjZWRpbmcgbGluZSBpcyB0aGUgYmVnaW5uaW5nIG9mIGEgcGFyYWdyYXBoLgoj IHNldCBhdXRvaW5kZW50CgojIyBCYWNrIHVwIGZpbGVzIHRvIHRoZSBjdXJyZW50IGZpbGVuYW1l IHBsdXMgYSB0aWxkZS4KIyBzZXQgYmFja3VwCgojIyBUaGUgZGlyZWN0b3J5IHRvIHB1dCB1bmlx dWUgYmFja3VwIGZpbGVzIGluLgojIHNldCBiYWNrdXBkaXIgIiIKCiMjIFVzZSBib2xkIHRleHQg aW5zdGVhZCBvZiByZXZlcnNlIHZpZGVvIHRleHQuCiMgc2V0IGJvbGR0ZXh0CgojIyBUcmVhdCBh bnkgbGluZSB3aXRoIGxlYWRpbmcgd2hpdGVzcGFjZSBhcyB0aGUgYmVnaW5uaW5nIG9mIGEgcGFy YWdyYXBoLgojIHNldCBib29rc3R5bGUKCiMjIFRoZSBjaGFyYWN0ZXJzIHRyZWF0ZWQgYXMgY2xv c2luZyBicmFja2V0cyB3aGVuIGp1c3RpZnlpbmcgcGFyYWdyYXBocy4KIyMgVGhpcyBtYXkgbm90 IGluY2x1ZGUgYW55IGJsYW5rIGNoYXJhY3RlcnMuICBPbmx5IGNsb3NpbmcgcHVuY3R1YXRpb24s CiMjIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgdGhlc2UgY2xvc2luZyBicmFja2V0cywgY2FuIGVu ZCBzZW50ZW5jZXMuCiMgc2V0IGJyYWNrZXRzICIiJyk+XX0iCgojIyBBdXRvbWF0aWNhbGx5IGhh cmQtd3JhcCB0aGUgY3VycmVudCBsaW5lIHdoZW4gaXQgYmVjb21lcyBvdmVybG9uZy4KIyBzZXQg YnJlYWtsb25nbGluZXMKCiMjIERvIGNhc2Utc2Vuc2l0aXZlIHNlYXJjaGVzIGJ5IGRlZmF1bHQu CiMgc2V0IGNhc2VzZW5zaXRpdmUKCiMjIEludGVycHJldCBkaWdpdHMgYWZ0ZXIgYSBjb2xvbiBh ZnRlciBhIGZpbGVuYW1lIChvbiB0aGUgY29tbWFuZCBsaW5lKQojIyBhcyB0aGUgbGluZSBudW1i ZXIgdG8gZ28gdG8gaW4gdGhhdCBmaWxlLgpzZXQgY29sb25wYXJzaW5nCgojIyBDb25zdGFudGx5 IHJlcG9ydCB0aGUgY3Vyc29yIHBvc2l0aW9uLCBpbiB0aGUgc3RhdHVzIGJhciBvciBtaW5pYmFy LgpzZXQgY29uc3RhbnRzaG93CgojIyBVc2UgY3V0LWZyb20tY3Vyc29yLXRvLWVuZC1vZi1saW5l IGJ5IGRlZmF1bHQuCiMgc2V0IGN1dGZyb21jdXJzb3IKCiMjIERvIG5vdCB1c2UgdGhlIGxpbmUg YmVsb3cgdGhlIHRpdGxlIGJhciwgbGVhdmluZyBpdCBlbnRpcmVseSBibGFuay4KIyBzZXQgZW1w dHlsaW5lCgojIyBTZXQgdGhlIHRhcmdldCB3aWR0aCBmb3IgYXV0b21hdGljIGhhcmQtd3JhcHBp bmcgYW5kIGZvciBqdXN0aWZ5aW5nCiMjIHBhcmFncmFwaHMuICBJZiB0aGUgc3BlY2lmaWVkIHZh bHVlIGlzIDAgb3IgbGVzcywgdGhlIHdyYXBwaW5nIHBvaW50CiMjIHdpbGwgYmUgdGhlIHRlcm1p bmFsJ3Mgd2lkdGggbWludXMgdGhpcyBudW1iZXIuCiMgc2V0IGZpbGwgLTgKCiMjIERyYXcgYSB2 ZXJ0aWNhbCBzdHJpcGUgYXQgdGhlIGdpdmVuIGNvbHVtbiwgdG8gaGVscCBqdWRnZSB0ZXh0IHdp ZHRoLgojIyAoVGhpcyBvcHRpb24gZG9lcyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUuKQojIHNl dCBndWlkZXN0cmlwZSA3NQoKIyMgUmVtZW1iZXIgdGhlIHVzZWQgc2VhcmNoL3JlcGxhY2UvY29t bWFuZCBzdHJpbmdzIGZvciB0aGUgbmV4dCBzZXNzaW9uLgojIHNldCBoaXN0b3J5bG9nCgojIyBE aXNwbGF5IGEgInNjcm9sbGJhciIgb24gdGhlIHJpZ2h0aGFuZCBzaWRlIG9mIHRoZSBlZGl0IHdp bmRvdy4KIyBzZXQgaW5kaWNhdG9yCgojIyBTY3JvbGwgdGhlIGJ1ZmZlciBjb250ZW50cyBwZXIg aGFsZi1zY3JlZW4gaW5zdGVhZCBvZiBwZXIgbGluZS4KIyBzZXQganVtcHlzY3JvbGxpbmcKCiMj IERpc3BsYXkgbGluZSBudW1iZXJzIHRvIHRoZSBsZWZ0IChhbmQgYW55IGFuY2hvcnMgaW4gdGhl IG1hcmdpbikuCiMgc2V0IGxpbmVudW1iZXJzCgojIyBMZXQgb3RoZXIgdXNlcnMgKG9mIG5hbm8g b3IgdmltKSBrbm93IHRoYXQgeW91IGFyZSBlZGl0aW5nIHRoZSBmaWxlCiMjIHRoZXkgYXJlIHRy eWluZyB0byBlZGl0LCBhbmQgdGhlIG90aGVyIHdheSBhcm91bmQuCnNldCBsb2NraW5nCgojIyBG YWxsIGJhY2sgdG8gc2xvdyBsaWJtYWdpYyB0byB0cnkgYW5kIGRldGVybWluZSBhbiBhcHBsaWNh YmxlIHN5bnRheC4KIyBzZXQgbWFnaWMKCiMjIFRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNr ZXRzIHRoYXQgYXJlIGZvdW5kIGJ5IGEgbWF0Y2hpbmctYnJhY2tldAojIyBzZWFyY2guICBUaGlz IG1heSBub3QgY29udGFpbiBibGFuayBjaGFyYWN0ZXJzLiAgVGhlIG9wZW5pbmcgYnJhY2tldHMK IyMgbXVzdCBjb21lIGJlZm9yZSB0aGUgY2xvc2luZyBvbmVzLCBhbmQgdGhleSBtdXN0IGJlIGlu IHRoZSBzYW1lIG9yZGVyLgojIHNldCBtYXRjaGJyYWNrZXRzICIoPFt7KT5dfSIKCiMjIFN1cHBy ZXNzIHRoZSB0aXRsZSBiYXIgYW5kIHNob3cgdGhlIGZpbGVuYW1lIHBsdXMgYSBjdXJzb3ItcG9z aXRpb24KIyMgcGVyY2VudGFnZSBpbiB0aGUgc3BhY2Ugb2YgdGhlIHN0YXR1cyBiYXIuCnNldCBt aW5pYmFyCgojIyBFbmFibGUgbW91c2Ugc3VwcG9ydCwgaWYgYXZhaWxhYmxlIGZvciB5b3VyIHN5 c3RlbS4gIFdoZW4gZW5hYmxlZCwKIyMgbW91c2UgY2xpY2tzIGNhbiBiZSB1c2VkIHRvIHBsYWNl IHRoZSBjdXJzb3IsIHNldCB0aGUgbWFyayAod2l0aAojIyB0d28gY2xpY2tzKSwgYW5kIGV4ZWN1 dGUgc2hvcnRjdXRzLiAgVGhlIG1vdXNlIHdpbGwgd29yayBpbiB0aGUKIyMgWCBXaW5kb3cgU3lz dGVtLCBhbmQgb24gdGhlIGNvbnNvbGUgd2hlbiBncG0gaXMgcnVubmluZy4Kc2V0IG1vdXNlCgoj IyBTd2l0Y2ggb24gbXVsdGlwbGUgZmlsZSBidWZmZXJzIChpbnNlcnRpbmcgYSBmaWxlIHdpbGwg cHV0IGl0IGludG8KIyMgYSBzZXBhcmF0ZSBidWZmZXIpLgojIHNldCBtdWx0aWJ1ZmZlcgoKIyMg RG9uJ3QgY29udmVydCBmaWxlcyBmcm9tIERPUyBmb3JtYXQuCiMgc2V0IG5vY29udmVydAoKIyMg RG9uJ3QgZGlzcGxheSB0aGUgaGVscGZ1bCBzaG9ydGN1dCBsaXN0cyBhdCB0aGUgYm90dG9tIG9m IHRoZSBzY3JlZW4uCnNldCBub2hlbHAKCiMjIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIGEgbmV3 bGluZSB3aGVuIGEgZmlsZSBkb2VzIG5vdCBlbmQgd2l0aCBvbmUuCiMgc2V0IG5vbmV3bGluZXMK CiMjIFNldCBvcGVyYXRpbmcgZGlyZWN0b3J5LiAgbmFubyB3aWxsIG5vdCByZWFkIG9yIHdyaXRl IGZpbGVzIG91dHNpZGUKIyMgdGhpcyBkaXJlY3RvcnkgYW5kIGl0cyBzdWJkaXJlY3Rvcmllcy4g IEFsc28sIHRoZSBjdXJyZW50IGRpcmVjdG9yeQojIyBpcyBjaGFuZ2VkIHRvIGhlcmUsIHNvIGFu eSBmaWxlcyBhcmUgaW5zZXJ0ZWQgZnJvbSB0aGlzIGRpci4gIEEgYmxhbmsKIyMgc3RyaW5nIG1l YW5zIHRoZSBvcGVyYXRpbmctZGlyZWN0b3J5IGZlYXR1cmUgaXMgdHVybmVkIG9mZi4KIyBzZXQg b3BlcmF0aW5nZGlyICIiCgojIyBSZW1lbWJlciB0aGUgcG9zaXRpb24gb2YgY3Vyc29yIGFuZCBh bmNob3JzIGZvciB0aGUgbmV4dCBlZGl0aW5nIHNlc3Npb24uCiMgc2V0IHBvc2l0aW9ubG9nCgoj IyBQcmVzZXJ2ZSB0aGUgWE9OIGFuZCBYT0ZGIGtleXMgKF5RIGFuZCBeUykuCiMgc2V0IHByZXNl cnZlCgojIyBUaGUgY2hhcmFjdGVycyB0cmVhdGVkIGFzIGNsb3NpbmcgcHVuY3R1YXRpb24gd2hl biBqdXN0aWZ5aW5nIHBhcmFncmFwaHMuCiMjIFRoaXMgbWF5IG5vdCBjb250YWluIGJsYW5rIGNo YXJhY3RlcnMuICBPbmx5IHRoZXNlIHRlcm1pbmF0aW5nIGNoYXJhY3RlcnMsCiMjIG9wdGlvbmFs bHkgZm9sbG93ZWQgYnkgY2xvc2luZyBicmFja2V0cywgY2FuIGVuZCBzZW50ZW5jZXMuCiMgc2V0 IHB1bmN0ICIhLj8iCgojIyBNYWtlIHN0YXR1cy1iYXIgbWVzc2FnZXMgZGlzYXBwZWFyIGFmdGVy IDEga2V5c3Ryb2tlIGluc3RlYWQgb2YgYWZ0ZXIgMjAuCiMgc2V0IHF1aWNrYmxhbmsKCiMjIFRo ZSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIHF1b3RpbmcgY2hhcmFjdGVycyBpbiBl bWFpbAojIyBvciBsaW5lLWNvbW1lbnQgaW50cm9kdWNlcnMgaW4gc291cmNlIGNvZGUuICBUaGUg ZGVmYXVsdCBpczoKIyBzZXQgcXVvdGVzdHIgIl4oWyAJXSooWyEjJTo7Pnx9XXwvLykpKyIKCiMj IFRyeSB0byB3b3JrIGFyb3VuZCBhIG1pc21hdGNoaW5nIHRlcm1pbmZvIHRlcm1pbmFsIGRlc2Ny aXB0aW9uLgojIHNldCByYXdzZXF1ZW5jZXMKCiMjIEZpeCBCYWNrc3BhY2UvRGVsZXRlIGNvbmZ1 c2lvbiBwcm9ibGVtLgojIHNldCByZWJpbmRkZWxldGUKCiMjIERvIHJlZ3VsYXItZXhwcmVzc2lv biBzZWFyY2hlcyBieSBkZWZhdWx0LgojIyBSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBvZiB0aGUg ZXh0ZW5kZWQgdHlwZSAoRVJFKS4KIyBzZXQgcmVnZXhwCgojIyBTYXZlIGEgY2hhbmdlZCBidWZm ZXIgYXV0b21hdGljYWxseSBvbiBleGl0OyBkb24ndCBwcm9tcHQuCiMgc2V0IHNhdmVvbmV4aXQK CiMjIFB1dCB0aGUgY3Vyc29yIG9uIHRoZSBoaWdobGlnaHRlZCBpdGVtIGluIHRoZSBmaWxlIGJy b3dzZXIsIGFuZAojIyBzaG93IHRoZSBjdXJzb3IgaW4gdGhlIGhlbHAgdmlld2VyOyB1c2VmdWwg Zm9yIHBlb3BsZSB3aG8gdXNlIGEKIyMgYnJhaWxsZSBkaXNwbGF5IGFuZCBwZW9wbGUgd2l0aCBw b29yIHZpc2lvbi4KIyBzZXQgc2hvd2N1cnNvcgoKIyMgTWFrZSB0aGUgSG9tZSBrZXkgc21hcnRl cjogd2hlbiBIb21lIGlzIHByZXNzZWQgYW55d2hlcmUgYnV0IGF0IHRoZQojIyB2ZXJ5IGJlZ2lu bmluZyBvZiBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG9uIGEgbGluZSwgdGhlIGN1cnNvcgoj IyB3aWxsIGp1bXAgdG8gdGhhdCBiZWdpbm5pbmcgKGVpdGhlciBmb3J3YXJkcyBvciBiYWNrd2Fy ZHMpLiAgSWYgdGhlCiMjIGN1cnNvciBpcyBhbHJlYWR5IGF0IHRoYXQgcG9zaXRpb24sIGl0IHdp bGwganVtcCB0byB0aGUgdHJ1ZSBzdGFydAojIyBvZiB0aGUgbGluZSAodGhlIGxlZnQgZWRnZSku CnNldCBzbWFydGhvbWUKCiMjIFNwcmVhZCBvdmVybG9uZyBsaW5lcyBvdmVyIG11bHRpcGxlIHNj cmVlbiBsaW5lcy4KIyBzZXQgc29mdHdyYXAKCiMjIFNjcm9sbCBvbmx5IHRoZSBjdXJyZW50IGxp bmUgc2lkZXdheXMgKGluc3RlYWQgb2YgYWxsIGxpbmVzKS4Kc2V0IHNvbG9zaWRlc2Nyb2xsCgoj IyBVc2UgdGhpcyBzcGVsbGluZyBjaGVja2VyIGluc3RlYWQgb2YgdGhlIGludGVybmFsIG9uZS4g IFRoaXMgb3B0aW9uCiMjIGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlLgojIHNldCBzcGVs bGVyICJhc3BlbGwgLXggLWMiCgojIyBVc2UgdGhlIGVuZCBvZiB0aGUgdGl0bGUgYmFyIGZvciBz b21lIHN0YXRlIGZsYWdzOiBJID0gYXV0by1pbmRlbnRpbmcsCiMjIE0gPSBtYXJrLCBMID0gaGFy ZC13cmFwcGluZyBsb25nIGxpbmVzLCBSID0gcmVjb3JkaW5nLCBTID0gc29mdC13cmFwcGluZy4K c2V0IHN0YXRlZmxhZ3MKCiMjIFVzZSB0aGlzIHRhYiBzaXplIGluc3RlYWQgb2YgdGhlIGRlZmF1 bHQ7IGl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuCiMgc2V0IHRhYnNpemUgOAoKIyMgQ29udmVy dCBlYWNoIHR5cGVkIHRhYiB0byB0aGUgZml0dGluZyBudW1iZXIgb2Ygc3BhY2VzLgojIHNldCB0 YWJzdG9zcGFjZXMKCiMjIFNuaXAgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIGxpbmVzIHdoZW4g anVzdGlmeWluZyBvciBoYXJkLXdyYXBwaW5nLgojIHNldCB0cmltYmxhbmtzCgojIyBTYXZlIGZp bGVzIGFsd2F5cyBpbiBVbml4IGZvcm1hdCAoYWxzbyB3aGVuIHRoZXkgd2VyZSBET1MpLgojIHNl dCB1bml4CgojIyBUaGUgdHdvIHNpbmdsZS1jb2x1bW4gY2hhcmFjdGVycyB1c2VkIHRvIGRpc3Bs YXkgdGhlIGZpcnN0IGNoYXJhY3RlcnMKIyMgb2YgdGFicyBhbmQgc3BhY2VzLiAgMTg3IGluIElT TyA4ODU5LTEgKDAwMDBCQiBpbiBVbmljb2RlKSBhbmQgMTgzIGluCiMjIElTTy04ODU5LTEgKDAw MDBCNyBpbiBVbmljb2RlKSBzZWVtIHRvIGJlIGdvb2QgdmFsdWVzIGZvciB0aGVzZS4KIyMgVGhl IGRlZmF1bHQgd2hlbiBpbiBhIFVURi04IGxvY2FsZToKIyBzZXQgd2hpdGVzcGFjZSAiwrvCtyIK IyMgVGhlIGRlZmF1bHQgb3RoZXJ3aXNlOgojIHNldCB3aGl0ZXNwYWNlICI+LiIKCiMjIERldGVj dCB3b3JkIGJvdW5kYXJpZXMgZGlmZmVyZW50bHkgYnkgdHJlYXRpbmcgcHVuY3R1YXRpb24KIyMg Y2hhcmFjdGVycyBhcyBwYXJ0cyBvZiB3b3Jkcy4KIyBzZXQgd29yZGJvdW5kcwoKIyMgVGhlIGNo YXJhY3RlcnMgKGJlc2lkZXMgYWxwaGFudW1lcmljIG9uZXMpIHRoYXQgc2hvdWxkIGJlIGNvbnNp ZGVyZWQKIyMgYXMgcGFydHMgb2Ygd29yZHMuICBUaGlzIG9wdGlvbiBkb2VzIG5vdCBoYXZlIGEg ZGVmYXVsdCB2YWx1ZS4gIFdoZW4KIyMgc2V0LCBpdCBvdmVycmlkZXMgb3B0aW9uICdzZXQgd29y ZGJvdW5kcycuCiMgc2V0IHdvcmRjaGFycyAiPF8+LiIKCiMjIExldCBhbiB1bm1vZGlmaWVkIEJh Y2tzcGFjZSBvciBEZWxldGUgZXJhc2UgdGhlIG1hcmtlZCByZWdpb24gKGluc3RlYWQKIyMgb2Yg YSBzaW5nbGUgY2hhcmFjdGVyLCBhbmQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGN1dGJ1ZmZlciku CnNldCB6YXAKCiMjIEhpZGUgdGhlIGJhcnMgcGx1cyBoZWxwIGxpbmVzIGFuZCB1c2UgdGhlIHdo b2xlIHRlcm1pbmFsIGFzIGVkaXQgYXJlYS4KIyBzZXQgemVybwoKCiMjIFBhaW50IHRoZSBpbnRl cmZhY2UgZWxlbWVudHMgb2YgbmFuby4gIFRoZXNlIGFyZSBleGFtcGxlczsgdGhlcmUgYXJlCiMj IG5vIGNvbG9ycyBieSBkZWZhdWx0LCBleGNlcHQgZm9yIGVycm9yY29sb3IgYW5kIHNwb3RsaWdo dGNvbG9yLgojIHNldCB0aXRsZWNvbG9yIGJvbGQsd2hpdGUsYmx1ZQojIHNldCBwcm9tcHRjb2xv ciBsaWdodHdoaXRlLGdyZXkKIyBzZXQgc3RhdHVzY29sb3IgYm9sZCx3aGl0ZSxncmVlbgojIHNl dCBlcnJvcmNvbG9yIGJvbGQsd2hpdGUscmVkCiMgc2V0IHNwb3RsaWdodGNvbG9yIGJsYWNrLGxp Z2h0eWVsbG93CiMgc2V0IHNlbGVjdGVkY29sb3IgbGlnaHR3aGl0ZSwjODA0CiMgc2V0IHN0cmlw ZWNvbG9yICwjNDQ0CiMgc2V0IHNjcm9sbGVyY29sb3Igc2xhdGUsIzIyMgojIHNldCBudW1iZXJj b2xvciBjeWFuCiMgc2V0IGtleWNvbG9yIGN5YW4KIyBzZXQgZnVuY3Rpb25jb2xvciBncmVlbgoK IyMgSW4gcm9vdCdzIC5uYW5vcmMgeW91IG1pZ2h0IHdhbnQgdG8gdXNlOgojIHNldCB0aXRsZWNv bG9yIGJvbGQsd2hpdGUsbWFnZW50YQojIHNldCBwcm9tcHRjb2xvciBibGFjayx5ZWxsb3cKIyBz ZXQgc3RhdHVzY29sb3IgYm9sZCx3aGl0ZSxtYWdlbnRhCiMgc2V0IGVycm9yY29sb3IgYm9sZCx3 aGl0ZSxyZWQKIyBzZXQgc3BvdGxpZ2h0Y29sb3IgYmxhY2ssb3JhbmdlCiMgc2V0IHNlbGVjdGVk Y29sb3IgbGlnaHR3aGl0ZSxjeWFuCiMgc2V0IHN0cmlwZWNvbG9yICx5ZWxsb3cKIyBzZXQgc2Ny b2xsZXJjb2xvciBtYWdlbnRhCiMgc2V0IG51bWJlcmNvbG9yIG1hZ2VudGEKIyBzZXQga2V5Y29s b3IgbGlnaHRtYWdlbnRhCiMgc2V0IGZ1bmN0aW9uY29sb3IgbWFnZW50YQoKCiMjID09PSBTeW50 YXggY29sb3JpbmcgPT09CiMjIEZvciBhbGwgZGV0YWlscywgc2VlICdtYW4gbmFub3JjJywgc2Vj dGlvbiBTWU5UQVggSElHSExJR0hUSU5HLgoKIyMgTW9zdCBvZiB0aGUgZXhpc3Rpbmcgc3ludGF4 IGRlZmluaXRpb25zIGFyZSBpbmNsdWRlZCBieSBkZWZhdWx0OgppbmNsdWRlIC91c3IvbG9jYWwv c2hhcmUvbmFuby8qLm5hbm9yYwojaW5jbHVkZSAvaG9tZS9zdGVlZi8uY29uZmlnL25hbm8vZC5u YW5vcmMKCiMjIE9yIHlvdSBjYW4gc2VsZWN0IGp1c3QgdGhlIG9uZXMgeW91IG5lZWQuICBGb3Ig ZXhhbXBsZToKIyBpbmNsdWRlIC91c3IvbG9jYWwvc2hhcmUvbmFuby9odG1sLm5hbm9yYwojIGlu Y2x1ZGUgL3Vzci9sb2NhbC9zaGFyZS9uYW5vL3B5dGhvbi5uYW5vcmMKIyBpbmNsdWRlIC91c3Iv bG9jYWwvc2hhcmUvbmFuby9zaC5uYW5vcmMKCiMjIEluIC91c3IvbG9jYWwvc2hhcmUvbmFuby9l eHRyYS8geW91IGNhbiBmaW5kIHNvbWUgc3ludGF4ZXMgdGhhdCBhcmUKIyMgc3BlY2lmaWMgZm9y IGNlcnRhaW4gZGlzdHJvcyBvciBmb3Igc29tZSBsZXNzIGNvbW1vbiBsYW5ndWFnZXMuCgoKIyMg SWYgPFRhYj4gc2hvdWxkIGFsd2F5cyBwcm9kdWNlIGZvdXIgc3BhY2VzIHdoZW4gZWRpdGluZyBh IFB5dGhvbiBmaWxlLAojIyBpbmRlcGVuZGVudCBvZiB0aGUgc2V0dGluZ3Mgb2YgJ3RhYnNpemUn IGFuZCAndGFic3Rvc3BhY2VzJzoKIyBleHRlbmRzeW50YXggcHl0aG9uIHRhYmdpdmVzICIgICAg IgoKCiMjID09PSBLZXkgYmluZGluZ3MgPT09CiMjIEZvciBhbGwgZGV0YWlscywgc2VlICdtYW4g bmFub3JjJywgc2VjdGlvbiBSRUJJTkRJTkcgS0VZUy4KIyMKIyMgQWxsIG9mIG5hbm8ncyBkZWZh dWx0IGtleSBiaW5kaW5ncyBhcmUgZGVmaW5lZCBoZXJlLiAgU2luY2Ugbm8gYmluZGluZ3MKIyMg YXJlIGNvbXBpbGVkIGluLCB0aGlzIGZpbGUgKG9yIHlvdXIgb3duIG5hbm9yYykgbXVzdCBiZSBw cmVzZW50IGZvciB0aGUKIyMgZWRpdG9yIHRvIHdvcmsuICBOYW5vIHdpbGwgcmVmdXNlIHRvIHN0 YXJ0IGlmIG5vIGtleSBpcyBib3VuZCB0byAiZXhpdCIKIyMgaW4gdGhlIG1haW4gbWVudS4KIyMK IyMgVG8gY2hhbmdlIGEgYmluZGluZywgZWRpdCB0aGUga2V5IHN0cmluZyBvbiBpdHMgbGluZS4K IyMgVG8gZGlzYWJsZSBhIGJpbmRpbmcsIGNvbW1lbnQgb3V0IG9yIGRlbGV0ZSBpdHMgbGluZS4K IyMgVGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgJ3VuYmluZCcgYmVmb3JlIGFzc2lnbmluZyBhIGtl eTsgYSBuZXcgYXNzaWdubWVudAojIyBhdXRvbWF0aWNhbGx5IHNoYWRvd3MgYW55IGVhcmxpZXIg b25lIGZvciB0aGUgc2FtZSBrZXkgaW4gdGhlIHNhbWUgbWVudS4KIyMKIyMgRWFjaCAnYmluZCcg bGluZSBhY2NlcHRzIGV4YWN0bHkgb25lIG1lbnUgbmFtZS4gIFZhbGlkIG1lbnUgbmFtZXMgYXJl OgojIyAgIG1haW4gIHNlYXJjaCAgcmVwbGFjZSAgcmVwbGFjZXdpdGggIHllc25vICBnb3RvbGlu ZSAgd3JpdGVvdXQgIGluc2VydAojIyAgIGV4ZWN1dGUgIGhlbHAgIHNwZWxsICBsaW50ZXIgIGJy b3dzZXIgIHdoZXJlaXNmaWxlICBnb3RvZGlyICBhbGwKIyMgImFsbCIgY292ZXJzIGV2ZXJ5IG1l bnUuICBMYXRlciBsaW5lcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBlYXJsaWVyIG9uZXMKIyMgZm9y IHRoZSBzYW1lIGtleSBhbmQgbWVudSwgc28gZ2VuZXJhbCBiaW5kaW5ncyBjb21lIGZpcnN0IGhl cmUgYW5kCiMjIG1lbnUtc3BlY2lmaWMgb3ZlcnJpZGVzIGNvbWUgYWZ0ZXIuCiMjCiMjIEZvciB0 aGUgY29tcGxldGUgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcywgc2VlICdtYW4gbmFub3JjJy4KCgoj IyMjIyBNZW51OiBhbGwKCiMjIC0tIFRleHQgZW50cnkgYW5kIGRlbGV0aW9uIC0tCmJpbmQgRW50 ZXIgICAgZW50ZXIgICAgICBhbGwKYmluZCBeTSAgICAgICBlbnRlciAgICAgIGFsbApiaW5kIFRh YiAgICAgIHRhYiAgICAgICAgYWxsCgojIyBCYWNrc3BhY2UgYW5kIERlbGV0ZSB3b3JrIHRoZSBz YW1lIGluIGFsbCBwcm9tcHQgbWVudXM6CmJpbmQgQnNwICAgICAgYmFja3NwYWNlICBhbGwKYmlu ZCBEZWwgICAgICBkZWxldGUgICAgIGFsbAoKIyMgLS0gQ3Vyc29yIG1vdmVtZW50IC0tCmJpbmQg TGVmdCAgICAgYmFjayAgICAgICBhbGwKYmluZCBSaWdodCAgICBmb3J3YXJkICAgIGFsbApiaW5k IFVwICAgICAgIHByZXZsaW5lICAgYWxsCmJpbmQgRG93biAgICAgbmV4dGxpbmUgICBhbGwKCiMj IFdvcmQtbGV2ZWwgbW92ZW1lbnQ6CmJpbmQgXkxlZnQgICAgcHJldndvcmQgICBhbGwKYmluZCBe UmlnaHQgICBuZXh0d29yZCAgIGFsbAoKIyMgQmVnaW5uaW5nIGFuZCBlbmQgb2YgbGluZToKYmlu ZCBIb21lICAgICBob21lICAgICAgIGFsbApiaW5kIEVuZCAgICAgIGVuZCAgICAgICAgYWxsCgoj IyBQYWdlIHVwL2Rvd246CmJpbmQgUGdVcCAgICAgcGFnZXVwICAgICBhbGwKYmluZCBQZ0RuICAg ICBwYWdlZG93biAgIGFsbAoKIyMgUmVmcmVzaCB0aGUgc2NyZWVuOyBpbiBtYWluLCBhbHNvIGNl bnRlcnMgdGhlIGN1cnNvciBsaW5lOgpiaW5kIF5MICAgICAgIHJlZnJlc2ggICAgYWxsCgojIyAt LSBIZWxwLCB3b3JrcyBpbiBhbGwgbWVudXMgLS0KYmluZCBGMSAgICAgICBoZWxwICAgICAgIGFs bAoKIyMgXkMgY2FuY2VscyBpbiBwcm9tcHRzLCByZXBvcnRzIHBvc2l0aW9uIGluIG1haW4sIGFu ZCBleGl0cyBpbiBicm93c2VyL2hlbHA6CiNtYXliZSBvdmVycmlkZSBpbiBtYWluICAgICBiaW5k IF5DICAgICAgIGNhbmNlbCAgICAgYWxsCgojIyAtLSBFZGl0aW5nIC0tCmJpbmQgXlggICAgICAg Y3V0ICAgICAgICBhbGwKYmluZCBeQyAgICAgICBjb3B5ICAgICAgIGFsbApiaW5kIF5WICAgICAg IHBhc3RlICAgICAgYWxsCgojIyBFbnRlciBhIGNoYXJhY3RlciBieSBpdHMga2V5Y29kZToKYmlu ZCBeUSAgICAgICB2ZXJiYXRpbSAgIGFsbAoKIyMgLS0gU2VhcmNoaW5nIC0tCmJpbmQgRjcgICAg ICAgd2hlcmVpcyAgICBhbGwKYmluZCBGMTcgICAgICBmaW5kbmV4dCAgIGFsbApiaW5kIEY2ICAg ICAgIHdoZXJld2FzICAgYWxsCmJpbmQgRjE2ICAgICAgZmluZHByZXZpb3VzICBhbGwKCiMjIC0t IFRvZ2dsZXMgKE1ldGEgKyBsZXR0ZXIpIC0tCmJpbmQgTS1YICAgICAgbm9oZWxwICAgICAgICAg ICAgIGFsbAoKYmluZCBGMTAgICAgICBleGl0ICAgICAgIGFsbAoKIyMjIyMgIE1lbnU6IG1haW4K CiMjIEp1bXAgdG8gdGhlIHZlcnkgZmlyc3Qgb3IgbGFzdCBsaW5lIG9mIHRoZSBmaWxlOgpiaW5k IF5Ib21lICAgIGZpcnN0bGluZSAgbWFpbgpiaW5kIF5FbmQgICAgIGxhc3RsaW5lICAgbWFpbgoK IyMgQmxvY2sgbmF2aWdhdGlvbiAoYmxhbmstbGluZS1zZXBhcmF0ZWQgYmxvY2tzIC8gcGFyYWdy YXBocyk6CmJpbmQgXlVwICAgICAgcHJldmJsb2NrICBtYWluCmJpbmQgXkRvd24gICAgbmV4dGJs b2NrICBtYWluCiNiaW5kIE0tKCAgICAgIGJlZ2lucGFyYSAgbWFpbgojYmluZCBNLSkgICAgICBl bmRwYXJhICAgIG1haW4KCiMjIEdvIHRvIGZpcnN0IG9yIGxhc3QgdmlzaWJsZSByb3cgaW4gdGhl IHZpZXdwb3J0OgojYmluZCBeUGdVcCAgICB0b3Byb3cgICAgIG1haW4gIGtleS1jb2RlIG5vdCBr bm93bgojYmluZCBeUGdEbiAgICBib3R0b21yb3cgIG1haW4gIGtleS1jb2RlIG5vdCBrbm93bgoK IyMgU2Nyb2xsIHRoZSB2aWV3cG9ydCB3aXRob3V0IG1vdmluZyB0aGUgY3Vyc29yIHRleHR1YWxs eToKI2JpbmQgTS1VcCAgICAgc2Nyb2xsdXAgICBtYWluICBrZXkgbm90IHJlY29nbml6ZWQKI2Jp bmQgTS1Eb3duICAgc2Nyb2xsZG93biBtYWluICBrZXkgbm90IHJlY29nbml6ZWQKI2JpbmQgTS0t ICAgICAgc2Nyb2xsdXAgICBtYWluCiNiaW5kIE0tXyAgICAgIHNjcm9sbHVwICAgbWFpbgojYmlu ZCBNLSsgICAgICBzY3JvbGxkb3duIG1haW4KI2JpbmQgTS09ICAgICAgc2Nyb2xsZG93biBtYWlu CgojIyBTY3JvbGwgc2lkZXdheXMgKHVzZWZ1bCB3aGVuIHNvZnR3cmFwIGlzIG9mZik6CiNiaW5k IE0tPCAgICAgIHNjcm9sbGxlZnQgIG1haW4KI2JpbmQgTS0+ICAgICAgc2Nyb2xscmlnaHQgbWFp bgoKIyMgUmVmcmVzaCB0aGUgc2NyZWVuOyBpbiBtYWluLCBhbHNvIGNlbnRlcnMgdGhlIGN1cnNv ciBsaW5lOgpiaW5kIF5MICAgICAgIGNlbnRlciAgICAgbWFpbgpiaW5kIE0tJSAgICAgIGN5Y2xl ICAgICAgbWFpbgoKIyMgLS0gRmlsZSBvcGVyYXRpb25zIC0tCmJpbmQgRjIgICAgICAgc2F2ZWZp bGUgICBtYWluCmJpbmQgRjEyICAgICAgd3JpdGVvdXQgICBtYWluCmJpbmQgRjE1ICAgICAgaW5z ZXJ0ICAgICBtYWluCgojIyAtLSBFZGl0aW5nIC0tCmJpbmQgRjMgICAgICAgbWFyayAgICAgICBt YWluCgpiaW5kIE0tfSAgICAgIGluZGVudCAgICAgbWFpbgpiaW5kIE0teyAgICAgIHVuaW5kZW50 ICAgbWFpbgpiaW5kIFNoLVRhYiAgIHVuaW5kZW50ICAgbWFpbgoKYmluZCBeVSAgICAgICB1bmRv ICAgICAgIG1haW4KYmluZCBeWiAgICAgICB1bmRvICAgICAgIG1haW4KYmluZCBeWSAgICAgICBy ZWRvICAgICAgIG1haW4KCiMjIyBeQnNwIGRvZXMgbm90IGV4aXN0cywgYnV0IHNlbmRzIF5IIG9u IG1vc3QgdGVybWluYWxzCmJpbmQgXkggICAgICAgY2hvcHdvcmRsZWZ0ICAgbWFpbgpiaW5kIF5E ZWwgICAgIGNob3B3b3JkcmlnaHQgIG1haW4KYmluZCBGOCAgICAgICB6YXAgICAgICAgICAgICBt YWluCiNiaW5kIF5LICAgInttYXJrfXtlbmR9e3phcH0iIG1haW4KI2JpbmQgXlUgICJ7bWFya317 aG9tZX17emFwfSIgbWFpbgoKI2JpbmQgXl0gICAgICAgY29tcGxldGUgICBtYWluCmJpbmQgTS0z ICAgICAgY29tbWVudCAgICBtYWluCgpiaW5kIE0tOiAgICAgIHJlY29yZG1hY3JvICBtYWluCmJp bmQgTS07ICAgICAgcnVubWFjcm8gICAgIG1haW4KCmJpbmQgTS1cICAgICAgYW5jaG9yICAgICBt YWluIApiaW5kIE0tXSAgICAgIG5leHRhbmNob3IgbWFpbgpiaW5kIE0tWyAgICAgIHByZXZhbmNo b3IgbWFpbgoKIyMgU3dpdGNoIGJldHdlZW4gb3BlbiBidWZmZXJzOgpiaW5kIE0tLCAgICAgIHBy ZXZidWYgICAgbWFpbgpiaW5kIE0tLiAgICAgIG5leHRidWYgICAgbWFpbgoKYmluZCBGNCAgICAg ICByZXBsYWNlICAgIG1haW4KCmJpbmQgTS1CICAgICAgZmluZGJyYWNrZXQgIG1haW4KCiMjIEdv IHRvIGEgc3BlY2lmaWMgbGluZSBhbmQgY29sdW1uIG51bWJlcjoKYmluZCBeRyAgICAgICBnb3Rv bGluZSAgIG1haW4KCiMjIC0tIEp1c3RpZnkgLS0KYmluZCBeSiAgICAgICBqdXN0aWZ5ICAgIG1h aW4KIyMjYmluZCBNLUogICAgICBmdWxsanVzdGlmeSAgbWFpbgoKIyMgLS0gU3BlbGwgY2hlY2tp bmcsIGxpbnRpbmcsIGFuZCBmb3JtYXR0aW5nIC0tCmJpbmQgXkUgICAgICAgZXhlY3V0ZSAgICBt YWluCiNiaW5kIEYxMiAgICAgIHNwZWxsZXIgICAgbWFpbiAgCgojIyAtLSBDdXJzb3IgcG9zaXRp b24gYW5kIHdvcmQgY291bnQgLS0KYmluZCBGMTEgICAgICBsb2NhdGlvbiAgIG1haW4KYmluZCBe UCAgICAgICBsb2NhdGlvbiAgIG1haW4KYmluZCBNLUQgICAgICB3b3JkY291bnQgIG1haW4KCiMj IC0tIFRvZ2dsZXMgKE1ldGEgKyBsZXR0ZXIpIC0tCmJpbmQgTS1aICAgICAgemVybyAgICAgICAg ICAgICAgIG1haW4KYmluZCBNLUMgICAgICBjb25zdGFudHNob3cgICAgICAgbWFpbgpiaW5kIE0t UyAgICAgIHNvZnR3cmFwICAgICAgICAgICBtYWluCmJpbmQgTS1OICAgICAgbGluZW51bWJlcnMg ICAgICAgIG1haW4KYmluZCBNLVAgICAgICB3aGl0ZXNwYWNlZGlzcGxheSAgbWFpbgpiaW5kIE0t WSAgICAgIG5vc3ludGF4ICAgICAgICAgICBtYWluCmJpbmQgTS1IICAgICAgc21hcnRob21lICAg ICAgICAgIG1haW4KYmluZCBNLUkgICAgICBhdXRvaW5kZW50ICAgICAgICAgbWFpbgpiaW5kIE0t SyAgICAgIGN1dGZyb21jdXJzb3IgICAgICBtYWluCmJpbmQgTS1MICAgICAgYnJlYWtsb25nbGlu ZXMgICAgIG1haW4KYmluZCBNLU8gICAgICB0YWJzdG9zcGFjZXMgICAgICAgbWFpbgpiaW5kIE0t TSAgICAgIG1vdXNlICAgICAgICAgICAgICBtYWluCgojIyAtLSBGLWtleSBzaG9ydGN1dHMgLS0K YmluZCBGMTEgICAgICBsb2NhdGlvbiAgIG1haW4KI2JpbmQgRjEyICAgICAgc3BlbGxlciAgICBt YWluICAgIyMjIHNhdmUgYXMuLi4KCiMjID09PSBVc2VmdWwgY3VzdG9taXphdGlvbnMgKGNvbW1l bnRlZCBvdXQpID09PQojIyBTdXNwZW5kIG5hbm8gd2l0aCBhIHNpbmdsZSBrZXlzdHJva2UgaW5z dGVhZCBvZiB2aWEgXlQgXlo6CiMgYmluZCBeWiBzdXNwZW5kIG1haW4KCiMjIE1ha2UgQ3RybCtC YWNrc3BhY2UgZGVsZXRlIHRoZSB3b3JkIHRvIHRoZSBsZWZ0IChpZiBeSCBpcyBmcmVlKToKIyBi aW5kIF5IIGNob3B3b3JkbGVmdCBtYWluCgojIyBJZiB5b3Ugd2FudCBeTCB0byBvbmx5IHJlZnJl c2ggdGhlIHNjcmVlbiwgbm90IGNlbnRlciB0aGUgY3Vyc29yOgojIGJpbmQgXkwgcmVmcmVzaCBt YWluCgojIyBGb3IgcXVpY2tseSB1cHBlcmNhc2luZyBvciBsb3dlcmNhc2luZyB0aGUgd29yZCB1 bmRlciB0aGUgY3Vyc29yOgojIGJpbmQgU2gtTS1VICJ7bmV4dHdvcmR9e21hcmt9e3ByZXZ3b3Jk fXtleGVjdXRlfXwgc2VkICdzLy4qL1xVJi8nIHtlbnRlcn0iIG1haW4KIyBiaW5kIFNoLU0tTCAi e25leHR3b3JkfXttYXJrfXtwcmV2d29yZH17ZXhlY3V0ZX18IHNlZCAncy8uKi9cTCYvJyB7ZW50 ZXJ9IiBtYWluCgojIyBDb3B5IHRoZSBtYXJrZWQgcmVnaW9uIHRvIHRoZSBzeXN0ZW0gY2xpcGJv YXJkIChyZXF1aXJlcyB4c2VsKToKIyBiaW5kIFNoLU0tQyAie2V4ZWN1dGV9fCB4c2VsIC1pYiB7 ZW50ZXJ9e3VuZG99IiBtYWluCgojIyBGb3Igc25pcHBpbmcgdHJhaWxpbmcgd2hpdGVzcGFjZSB3 aGVuIHNhdmluZzoKIyBiaW5kIF5TICJ7ZXhlY3V0ZX18IHNlZCAncy9bWzpzcGFjZTpdXVwrJC8v JyB7ZW50ZXJ9e3NhdmVmaWxlfSIgbWFpbgoKCgojIyMjIyAgTWVudTogc2VhcmNoCgojIyBJbiBo aXN0b3J5LWNhcGFibGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0 IGluc3RlYWQ6CmJpbmQgVXAgICAgICAgb2xkZXIgICAgICBzZWFyY2gKYmluZCBEb3duICAgICBu ZXdlciAgICAgIHNlYXJjaAoKIyMgVG9nZ2xlcyBpbiB0aGUgc2VhcmNoIGFuZCByZXBsYWNlIHBy b21wdHM6CmJpbmQgTS1DICAgICAgY2FzZXNlbnMgICBzZWFyY2gKYmluZCBNLVIgICAgICByZWdl eHAgICAgIHNlYXJjaApiaW5kIE0tQiAgICAgIGJhY2t3YXJkcyAgc2VhcmNoCmJpbmQgXlIgICAg ICAgZmxpcHJlcGxhY2UgIHNlYXJjaApiaW5kIF5HICAgICAgIGZsaXBnb3RvICAgc2VhcmNoCgoK IyMjIyMgIE1lbnU6IHJlcGxhY2UKCiMjIEluIGhpc3RvcnktY2FwYWJsZSBwcm9tcHRzLCBVcC9E b3duIG5hdmlnYXRlIHRoZSBoaXN0b3J5IGxpc3QgaW5zdGVhZDoKYmluZCBVcCAgICAgICBvbGRl ciAgICAgIHJlcGxhY2UKYmluZCBEb3duICAgICBuZXdlciAgICAgIHJlcGxhY2UKCiMjIFRvZ2ds ZXMgaW4gdGhlIHNlYXJjaCBhbmQgcmVwbGFjZSBwcm9tcHRzOgpiaW5kIE0tQyAgICAgIGNhc2Vz ZW5zICAgICByZXBsYWNlCmJpbmQgTS1SICAgICAgcmVnZXhwICAgICAgIHJlcGxhY2UKYmluZCBN LUIgICAgICBiYWNrd2FyZHMgICAgcmVwbGFjZQpiaW5kIF5SICAgICAgIGZsaXByZXBsYWNlICBy ZXBsYWNlCgoKIyMjIyMgIE1lbnU6IHJlcGxhY2V3aXRoCgojIyBJbiBoaXN0b3J5LWNhcGFibGUg cHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3RlYWQ6CmJpbmQg VXAgICAgICAgb2xkZXIgICAgICByZXBsYWNld2l0aApiaW5kIERvd24gICAgIG5ld2VyICAgICAg cmVwbGFjZXdpdGgKCiMjIyMjICBNZW51OiB5ZXNubwpiaW5kIF5DICAgICAgIGNhbmNlbCAgICAg IHllc25vCiMjI2RvZXMgbm90IHJlY29nbml6ZSAneWVzJyBhcyBhIGNvbW1hbmQgICAgYmluZCBF bnRlciAgICB5ZXMgICAgICAgICB5ZXNubwoKIyMjIyMgIE1lbnU6IGdvdG9saW5lCgojIyBJbiB0 aGUgZ290b2xpbmUgYW5kIHNlYXJjaCBwcm9tcHRzLCBeWS9eViBqdW1wIHRvIGZpcnN0L2xhc3Qg bGluZToKIyMjYmluZCBeWSAgICAgICBmaXJzdGxpbmUgIGdvdG9saW5lCiMjI2JpbmQgXlYgICAg ICAgbGFzdGxpbmUgICBnb3RvbGluZQoKIyMgVG9nZ2xlcyBpbiB0aGUgc2VhcmNoIGFuZCByZXBs YWNlIHByb21wdHM6CmJpbmQgXkcgICAgICAgZmxpcGdvdG8gICBnb3RvbGluZQoKIyMgSW4gdGhl IGdvdG9saW5lIHByb21wdCwgbmF2aWdhdGUgYnkgcGFyYWdyYXBoOgpiaW5kIF5XICAgICAgIGJl Z2lucGFyYSAgZ290b2xpbmUKYmluZCBeTyAgICAgICBlbmRwYXJhICAgIGdvdG9saW5lCgojIyMj IyAgTWVudTogd3JpdGVvdXQKCiMjIE9wZW4gdGhlIGZpbGUgYnJvd3NlciBmcm9tIHRoZSB3cml0 ZW91dCBvciBpbnNlcnQgcHJvbXB0OgpiaW5kIF5UICAgICAgIHRvZmlsZXMgICAgd3JpdGVvdXQK CiMjIE9wdGlvbnMgaW4gdGhlIHdyaXRlLW91dCBwcm9tcHQ6CmJpbmQgXlEgICAgICAgZGlzY2Fy ZGJ1ZmZlciAgd3JpdGVvdXQKYmluZCBNLUQgICAgICBkb3Nmb3JtYXQgICAgICB3cml0ZW91dApi aW5kIE0tQiAgICAgIGJhY2t1cCAgICAgICAgIHdyaXRlb3V0CmJpbmQgTS1BICAgICAgYXBwZW5k ICAgICAgICAgd3JpdGVvdXQKYmluZCBNLVAgICAgICBwcmVwZW5kICAgICAgICB3cml0ZW91dAoK IyMjIyMgIE1lbnU6IGluc2VydAoKIyMgT3BlbiB0aGUgZmlsZSBicm93c2VyIGZyb20gdGhlIHdy aXRlb3V0IG9yIGluc2VydCBwcm9tcHQ6CmJpbmQgXlQgICAgICAgdG9maWxlcyAgICBpbnNlcnQK CiMjIE9wdGlvbnMgaW4gdGhlIGluc2VydCBhbmQgZXhlY3V0ZSBwcm9tcHRzOgpiaW5kIF5YICAg ICAgIGZsaXBleGVjdXRlICAgIGluc2VydApiaW5kIE0tTiAgICAgIGZsaXBjb252ZXJ0ICAgIGlu c2VydApiaW5kIE0tRiAgICAgIGZsaXBuZXdidWZmZXIgIGluc2VydAoKIyMjIyMgIE1lbnU6IGV4 ZWN1dGUKCiMjIEluIGhpc3RvcnktY2FwYWJsZSBwcm9tcHRzLCBVcC9Eb3duIG5hdmlnYXRlIHRo ZSBoaXN0b3J5IGxpc3QgaW5zdGVhZDoKYmluZCBVcCAgICAgICBvbGRlciAgICAgIGV4ZWN1dGUK YmluZCBEb3duICAgICBuZXdlciAgICAgIGV4ZWN1dGUKCiMjIE9wdGlvbnMgaW4gdGhlIGluc2Vy dCBhbmQgZXhlY3V0ZSBwcm9tcHRzOgpiaW5kIE0tRiAgICAgIGZsaXBuZXdidWZmZXIgIGV4ZWN1 dGUKYmluZCBNLVwgICAgICBmbGlwcGlwZSAgICAgICBleGVjdXRlCmJpbmQgXlQgICAgICAgY3V0 cmVzdG9mZmlsZSAgZXhlY3V0ZQoKIyMgU3VzcGVuZCB0byB0aGUgYmFja2dyb3VuZCAodmlhIHRo ZSBleGVjdXRlIG1lbnU6IF5UIHRoZW4gXlopOgpiaW5kIF5aICAgICAgIHN1c3BlbmQgICAgZXhl Y3V0ZQoKIyMgLS0gSnVzdGlmeSAtLQpiaW5kIF5KICAgICAgIGZ1bGxqdXN0aWZ5ICBleGVjdXRl CgojIyAtLSBTcGVsbCBjaGVja2luZywgbGludGluZywgYW5kIGZvcm1hdHRpbmcgLS0KYmluZCBe UyAgICAgICBzcGVsbGVyICAgIGV4ZWN1dGUKYmluZCBeTCAgICAgICBsaW50ZXIgICAgIGV4ZWN1 dGUKYmluZCBeTyAgICAgICBmb3JtYXR0ZXIgIGV4ZWN1dGUKCgojIyMjIyAgTWVudTogaGVscAoK IyMgSW4gdGhlIGhlbHAgdmlld2VyLCBIb21lL0VuZCBqdW1wIHRvIHRoZSBmaXJzdC9sYXN0IGxp bmU6CmJpbmQgSG9tZSAgICAgZmlyc3RsaW5lICBoZWxwCmJpbmQgRW5kICAgICAgbGFzdGxpbmUg ICBoZWxwCgojIyAtLSBIZWxwLCBleGl0LCBhbmQgY2FuY2VsIC0tCmJpbmQgRjEgICAgICAgZXhp dCAgICAgICBoZWxwCgojIyMjIyAgTWVudTogc3BlbGwKCgojIyMjIyAgTWVudTogbGludGVyCmJp bmQgXlggICAgICAgY2FuY2VsICAgICBsaW50ZXIKCgojIyMjIyAgTWVudTogYnJvd3NlcgoKIyMg SW4gdGhlIGJyb3dzZXIsIEhvbWUvRW5kIGp1bXAgdG8gdGhlIGZpcnN0L2xhc3QgZmlsZToKYmlu ZCBIb21lICAgICBmaXJzdGZpbGUgIGJyb3dzZXIKYmluZCBFbmQgICAgICBsYXN0ZmlsZSAgIGJy b3dzZXIKCiMjIC0tIEZpbGUgYnJvd3NlciBuYXZpZ2F0aW9uIC0tCmJpbmQgXkcgICAgICAgZ290 b2RpciAgICBicm93c2VyCgoKIyMjIyMgIE1lbnU6IHdoZXJlaXNmaWxlCgojIyBJbiBoaXN0b3J5 LWNhcGFibGUgcHJvbXB0cywgVXAvRG93biBuYXZpZ2F0ZSB0aGUgaGlzdG9yeSBsaXN0IGluc3Rl YWQ6CmJpbmQgVXAgICAgICAgb2xkZXIgICAgICB3aGVyZWlzZmlsZQpiaW5kIERvd24gICAgIG5l d2VyICAgICAgd2hlcmVpc2ZpbGUKCiMjIEluIHRoZSBmaWxlIGJyb3dzZXIncyBzZWFyY2ggcHJv bXB0LCBeWS9eViBqdW1wIHRvIGZpcnN0L2xhc3QgZmlsZToKIyMjYmluZCBeWSAgICAgICBmaXJz dGZpbGUgIHdoZXJlaXNmaWxlCiMjI2JpbmQgXlYgICAgICAgbGFzdGZpbGUgICB3aGVyZWlzZmls ZQoKCiMjIyMjICBNZW51OiBnb3RvZGlyCgo= --000000000000b373c506517cf1f1--