From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 18496 invoked from network); 19 Nov 2023 05:25:52 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 19 Nov 2023 05:25:52 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1700371552; b=pWfv3GrMmk2EiLXEyDecEKaUA+ld+fSxTZPWJmUfMYI8LO9gpV2mw/VP/jerWpP98di3e21dgI qCtVfk21wVdwtm09VwY+OTyIpAP9kUz2pBopFA2QkK98QX5oi8Jbee/1kK/Z9bECi0NpyMn+Bs Jo86k9Y38XSZsYOn+5mVKC3QoebcUByUnLSMGKfLEFC1B/RWj93K/cxm5bA7mK9mF/h5Rh26hJ Ijefb3np1nxxAnP8XIoLJIKzrooPaejuRwljN5YkzVA7YqsGSQ4mSdEHhyJ6sPypMPljBFaJRy sHJnDttnSa3fFb07GEqqMAR/IRb7gzO2FA+F5pV8T9EpMg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f45.google.com) smtp.remote-ip=209.85.218.45; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1700371552; bh=Yo5znXY47DL6vj8R8EWn7av/3E7q7PXy65omb+7sRsM=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=NKF3DV8MPFB2g/dYaAfiwkulVgJEQt4Ujdbwr11Zkm44gkJWQg3AOhnWG0IpkGvqBXvBaaUPaS E9om1FuQmzDsk9NymJSwlxhJk/QN+rQY6kuwvzUdnonX6qmXqF7KSi1hkYBrErarqs+7HyxvGX A2t+4oCd/6B5uW2MEzrlm1Ra1ixU0poYwfJ8/z5t4OyzDGXr43QKpxPMvl18B6RMCM0m7rwbxc nfRiT6sdsFdSTPiLgxoqY7yavASfLjgOdBR2zE4Z4hgio6tcEWYzgcWtlhM0nThVrQKn3Uwf8+ Le4gNvkR9ufbw2Q+1ayZ2j1VaEPe3nuI8szfXGF6+nUeSg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=tG9Z08rG1BvQT/warVWkSncuj1VCDDNRYZuNwZ70Ym4=; b=DhriHM9f4juZznWVffVutElUeL Beu6YHf9pqRH5tBH4uF/Tb95RKRMaJ+NJ0iCj1Bkk/8OPZVOXubscCt1ztU0UYnSYJ9lQLq+czQAW teGl1NCYgMhj/SBLmRQowcZBsPU5cNw+Z9AmOFT512VA8KZKoLupUF7wtf/LQKbJEQVLDs3mkK3D1 OAWdjtBojs6KKlz5f08osKZ6vnIUQkXvCwxS2+BAOUlPQSsY6O9tIwuuguubGZZtiZ1KzDttbL0aO hllLD+iSpK6RLaBA0eJJmZ+QlG5Q5ACdyYgAVS9mmamoGGOOmC6sOiA3RZ0JxCHABtUCwaw7QBWbB IPIhpvgg==; Received: by zero.zsh.org with local id 1r4aJa-000Hlv-PE; Sun, 19 Nov 2023 05:25:50 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f45.google.com) smtp.remote-ip=209.85.218.45; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f45.google.com ([209.85.218.45]:49201) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1r4aJH-000HUT-TB; Sun, 19 Nov 2023 05:25:33 +0000 Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-9e28724ac88so458583966b.2 for ; Sat, 18 Nov 2023 21:25:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1700371531; x=1700976331; darn=zsh.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tG9Z08rG1BvQT/warVWkSncuj1VCDDNRYZuNwZ70Ym4=; b=Ah6kMwIR2UaIow3pWTTpeP8GWuzZD3KhhYbo6b3qh5ZrOMgiUdL4KSsnN434sbK9o2 2bbWVn0E6fUWOL7Jql9JGWl6FVHbZf6HhVPV8fm8EMP5m1ew6W614WFEH8M5uEOCIujJ 3atou1A9Ta0Jg1Q0UMS8CTVpkUCewjmOzrQsFEGZ0lzF7ZJjht8hQpfAE0Hz4s/09exo Tnwt6OLOn6Jh/BqGM6gHA7hgZilKNzl569xmCSl4nTwemabeeUIVFx9xVdfAdC10zpbu Bh2eVqwBpNnf//ZU/NZYDAmw6GG30MXtb0bz4P7GgCipVGlZ7N2sHjzjGhbmi1eO/4Sp vKCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700371531; x=1700976331; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tG9Z08rG1BvQT/warVWkSncuj1VCDDNRYZuNwZ70Ym4=; b=stoTWqk6oos0hFj0TQjFv0tJZ+JpgTyHfrRdu5AsroYlRTtkI3oPlumUpAwL47qZzY GOijV9YZWRry0tTCaOgCj/5GsEe3/8J0S2qyG1mLIyV97/OwdEgkayp9aaJn4ycsuCp0 /B7hwtMgTHMsi0pS18/Cr7LLXDcaA0DWAZwbgj/YxK/pRp4wSG4DHtryiT6nisGOiAM/ 0U9xrrDtPL2HCFIz5i+3Sik+BT7cQMv1adPhHuPb/90JBh9yX8POotdhgpVO84y4J5Tv C6fdmA9kAbZfZjPZxL3SHcXH6if9n3SSfjBw3kRDk51o4/zoFxJXswSbVGg0CPBpOIRv YI5Q== X-Gm-Message-State: AOJu0Yxgo7lyK79zXGl+YmG52apQ0L1+fo4OVHNCQqiPg5tEKhK7D5eO 0jCYKCeJitYB962kzokeTNF8SOiBQ+1sLbCQlkRsDfLQELLV85xh X-Google-Smtp-Source: AGHT+IGZeY4NwXLMUMkBHN6vioZGADTIdk/uOB5PpYMTgiovMI7n+dl1PpaHeuzpZUNwxRfyk2II7ueqVVXYHaBtpsY= X-Received: by 2002:a17:906:2d4:b0:9c6:9342:1459 with SMTP id 20-20020a17090602d400b009c693421459mr2883251ejk.20.1700371530153; Sat, 18 Nov 2023 21:25:30 -0800 (PST) MIME-Version: 1.0 References: <1185563186.165566.1619896723304.ref@mail.yahoo.com> <1185563186.165566.1619896723304@mail.yahoo.com> <1293997275.666259.1620093977494@mail.yahoo.com> In-Reply-To: From: Bart Schaefer Date: Sat, 18 Nov 2023 21:25:19 -0800 Message-ID: Subject: Re: Suggested improvement for sticky-note To: Zsh Hackers List Cc: vapnik spaknik Content-Type: multipart/mixed; boundary="0000000000000aabd4060a7a9979" X-Seq: 52314 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --0000000000000aabd4060a7a9979 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Nov 12, 2023 at 1:10=E2=80=AFPM Bart Schaefer wrote: > > I'm sure there are undiscovered bugs with this, so mess around if interes= ted. > > > That also caused me to notice that interrupting > > sticky-note with a keyboard interrupt (^C) can cause old notes to > > disappear, so that should be fixed. I solved this. It turns out that "fc -ap" removes events from the history file if the enclosing function exits on interrupt. This is probably a bug of some sort, but easily worked around by addition of an "always" block that clears the interrupt state. > Also yet to be fixed is expiring > lines from the display file when the corresponding lines expire from > the history. Fixed this too. The attached revision also adds a "history-opts" style for changing the localoptions used e.g. when navigating past notes and rewriting the stickyfile. --0000000000000aabd4060a7a9979 Content-Type: application/octet-stream; name=sticky-note Content-Disposition: attachment; filename=sticky-note Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp51aqff0 IyEvYmluL3pzaCAtZmkKIyBBIHpzaCBzdGlja3ktbm90ZSAoInBvc3QtaXQiKSBhcHBsaWNhdGlv bi4gIExvYWQgdGhpcyBmaWxlIGFzIGEgZnVuY3Rpb246CiMgICAgYXV0b2xvYWQgLVV6IHN0aWNr eS1ub3RlCiMKIyBJdCBtYXkgdGhlbiBiZSBib3VuZCBhcyBhIHdpZGdldDoKIyAgICB6bGUgLU4g c3RpY2t5LW5vdGUKIyBBbmQvb3IgcnVuIGFzIGEgY29tbWFuZDoKIyAgICBzdGlja3ktbm90ZQoj ICAgIHN0aWNreS1ub3RlIC1iCiMgICAgc3RpY2t5LW5vdGUgLWwgLi4uCiMgVGhlIC1iIG9wdGlv biBpcyBsaWtlICJ6ZWQgLWIiOiBpdCBpbnN0YWxscyBrZXltYXBzL2JpbmRpbmdzIG9ubHkuCiMg VXNlIHRoZSAtbCBvcHRpb24gdG8gbGlzdCBwcmV2aW91cyBzdGlja3kgbm90ZXMuICBNb3N0IG9w dGlvbnMgb2YgdGhlCiMgImZjIC1sIiBjb21tYW5kIGFyZSBzdXBwb3J0ZWQsIGZvciBzZWxlY3Rp bmcgd2hpY2ggbm90ZXMgdG8gZGlzcGxheS4KIyBJZiAic3RpY2t5LW5vdGUgLWwiIGlzIHJ1biBm cm9tIGluc2lkZSBhIHdpZGdldCwgdGhlIGN1cnNvciBpcyBtb3ZlZAojIHRvIHRoZSB0b3AgbGVm dCBvZiB0aGUgdGVybWluYWwgYmVmb3JlIGRpc3BsYXkgYW5kIHJldHVybmVkIHRvIGl0cwojIG9y aWdpbmFsIHBvc2l0aW9uIGFmdGVyIGRpc3BsYXkuICBUaGUgLWwgb3B0aW9uIGlzIGltcGxpY2l0 bHkgYWRkZWQKIyB3aGVuIHN0aWNreS1ub3RlIGlzIGNhbGxlZCBmcm9tIHpsZS1saW5lLWluaXQs IHRvIGF2b2lkIGluYWR2ZXJ0ZW50bHkKIyB0cmFwcGluZyB0aGUgdXNlciBpbnNpZGUgdGhlIG5v dGUgZWRpdG9yLgojCiMgT3RoZXJ3aXNlLCBpbnZva2UgdGhlIGxpbmUgZWRpdG9yIHdpdGggdGhl IHByZXZpb3VzIG5vdGVzIGF2YWlsYWJsZQojIGFzIGFuIGVkaXRvciBoaXN0b3J5LiAgVHdvIHF1 aWNrIHRhcHMgb24gdGhlIHJldHVybi9lbnRlciBrZXkgZmluaXNoCiMgdGhlIG5vdGUsIG9yIHlv dSBjYW4gdXNlIF5YXlcgYXMgdXN1YWwgKFpaIGluIHZpY21kIG1vZGUpLgoKIyBUaGUgYXBwbGlj YXRpb24gaXMgY29uZmlndXJlZCBieSBzZXZlcmFsIHpzdHlsZXMsIGFsbCB1c2luZyB0aGUgY29u dGV4dAojICI6c3RpY2t5LW5vdGUiLiAgVGhlIGNvbXBsZXRlIGxpc3Qgb2Ygc3R5bGVzIGlzIGFu ZCB0aGVpciB0eXBlcyBpczoKIyAgIG5vdGVmaWxlICAgICAgIHN0cmluZyAoZmlsZW5hbWUpCiMg ICBtYXhub3RlcyAgICAgICBudW1iZXIKIyAgIGhpc3Rvcnktb3B0cyAgIGFycmF5CiMgICB2YXJl ZC1vcHRpb25zICBhcnJheQojICAgdGhlbWUgICAgICAgICAgYXNzb2NpYXRpdmUgYXJyYXkKIyAg IGRpc3BsYXkgICAgICAgIGFzc29jaWF0aXZlIGFycmF5CiMgICBsaXN0LWRpc3BsYXkgICBib29s ZWFuIChzdHJpbmcgdHJ1ZXx5ZXN8b258MSBvciBub3Qgc2V0IGZvciBmYWxzZSkKCiMgVGhlIGZp cnN0IHR3byBzdHlsZXMgYXJlICJub3RlZmlsZSIgYW5kICJtYXhub3RlcyIgdG8gbmFtZSB0aGUg ZmlsZSBpbgojIHdoaWNoIG5vdGVzIGFyZSBzdG9yZWQgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBv ZiBub3RlcyB0byByZXRhaW46CiMgICB6c3R5bGUgOnN0aWNreS1ub3RlIG5vdGVmaWxlIH4vLnpz dGlja3kKIyAgIHpzdHlsZSA6c3RpY2t5LW5vdGUgbWF4bm90ZXMgMTAwMAoKIyBGb3IgYmFja3dh cmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbiBlYXJsaWVyIHZlcnNpb24sIHRoZSBub3RlZmlsZSBt YXkKIyBhbHNvIGJlIG5hbWVkIGJ5IHRoZSBTVElDS1lGSUxFIHZhcmlhYmxlIChkZWZhdWx0cyB0 byAkSE9NRS8uenN0aWNreSkuCiMgVGhlIG51bWJlciBvZiBub3RlcyBzdG9yZWQgbWF5IGJlIGdp dmVuIGJ5IFNUSUNLWVNJWkUgKDEwMDApLgoKIyBUaGUgImhpc3Rvcnktb3B0cyIgc3R5bGUgZ2l2 ZXMgYSBsaXN0IG9mIHNldG9wdCBuYW1lcywgcGFzc2VkIHRvCiMgInNldG9wdCBsb2NhbG9wdGlv bnMgLi4uIi4gIE5vdGUgdGhhdCB0aGlzIG1lYW5zIHlvdSBtdXN0IHVzZSB0aGUgIm5vIgojIHBy ZWZpeCB0byBkaXNhYmxlIGFuIG9wdGlvbi4gIFRoZSBleHRlbmRlZGhpc3Rvcnkgb3B0aW9uIGlz IGFsd2F5cyB1c2VkCiMgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyBvZiB0aGlzIHN0eWxlLCB0 byByZWNvcmQgbm90ZSB0aW1lc3RhbXBzLgojIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgZXF1 aXZhbGVudCB0bwojICAgenN0eWxlIDpzdGlja3ktbm90ZSBoaXN0b3J5LW9wdHMgXAojICAgICBu b2FwcGVuZGhpc3Rvcnkgbm9iYW5naGlzdCBoaXN0aWdub3JlZHVwcwojIFZhbHVlcyB0aGF0IGRv IG5vdCBjb250YWluIHRoZSBzdWJzdHJpbmcgImhpc3QiIGFyZSBpZ25vcmVkLCBhbG9uZyB3aXRo OgojICAgaGlzdGxleHdvcmRzIGhpc3Rub2Z1bmN0aW9ucyBoaXN0bm9zdG9yZSBpbmNhcHBlbmRo aXN0b3J5IHNoYXJlaGlzdG9yeQojIFVzZWZ1bCB2YWx1ZXMgaW5jbHVkZToKIyAgIGhpc3RleHBp cmVkdXBzZmlyc3QgaGlzdGZpbmRub2R1cHMgaGlzdGlnbm9yZWFsbGR1cHMgaGlzdHNhdmVub2R1 cHMKIyBPdGhlciBzZXRvcHRzIG5vdCByZWxhdGVkIHRvIGhpc3RvcnkgYXJlIHJlc2V0IHZpYSAi ZW11bGF0ZSAtUiB6c2giLgoKIyBUaGUgInZhcmVkLW9wdGlvbnMiIHN0eWxlIGxpc3RzIG9wdGlv bnMgcGFzc2VkIHRvIHZhcmVkIHdoZW4gYSBub3RlCiMgaXMgZWRpdGVkLiBUaGUgdmFyZWQgb3B0 aW9ucyAtQSwgLWEsIC1jLCAtTSwgYW5kIC1tIGFyZSBpZ25vcmVkLiAgVGhlCiMgdXNlZnVsIG9w dGlvbnMgYXJlIC1pLCAtZiwgLWUsIC1wLCAtciwgYW5kIGluIHVudXN1YWwgY2FzZXMgLXQuICBU aGUKIyBvcHRpb25zIC1wIGFuZCAtciBzaG91bGQgdXNlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUg InByb21wdCIgdmFsdWUgb2YKIyB0aGUgInRoZW1lIiBzdHlsZSwgZGVzY3JpYmVkIGJlbG93LCBh bmQgdGhlIC1yIG9wdGlvbiBzaG91bGQuICBBcyBhCiMgc3BlY2lhbCBjYXNlLCB0byBtYWtlIHRo ZSBub3RlIGhpc3RvcnkgdW5hdmFpbGFibGUgd2hlbiBlZGl0aW5nLAojIGluY2x1ZGUgK2ggaW4g dGhlIHZhcmVkLW9wdGlvbnMgc3R5bGUuICBFeGFtcGxlOgojICAgenN0eWxlIDpzdGlja3ktbm90 ZSB2YXJlZC1vcHRpb25zICtoIC1lIC1yICVUCgojIFRoZSAidGhlbWUiIHN0eWxlIG1heSBiZSBz ZXQgdG8gY29udHJvbCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgbm90ZXMuCiMgVGhlIHN0eWxlIGlz IGFuIGFzc29jaWF0aXZlIGFycmF5OyB0aGUgY3VycmVudCBzZXQgb2YgdmFsdWVzIChkZWZhdWx0 cwojIGluIHBhcmVucykgYXJlOgojICAgYmcgICAgID0+IG5hbWUgb3IgQU5TSSBlc2NhcGUgZm9y IGJhY2tncm91bmQgY29sb3IgKHllbGxvdykKIyAgIGZnICAgICA9PiBuYW1lIG9yIEFOU0kgZXNj YXBlIGZvciBmb3JlZ3JvdW5kIGNvbG9yIChibGFjaykKIyAgIGNvbG9yICA9PiBBTlNJIGVzY2Fw ZSBmb3IgY29sb3Igc2NoZW1lICgkdGhlbWVbYmddJHRoZW1lW2ZnXSkKIyAgIHJlc2V0ICA9PiBB TlNJIGVzY2FwZSB0byByZXN0b3JlICJub3JtYWwiIGNvbG9ycwojICAgcHJvbXB0ID0+IFBhc3Nl ZCB0byB2YXJlZC4gIE1heSByZWZlciB0byAleyR7dGhlbWVbYmddfSV9IGV0IGFsLgojIFZhbHVl cyBnaXZlbiBhcyBuYW1lcyBhcmUgbG9va2VkIHVwIGluIHRoZSAkYmcgYW5kICRmZyBhcnJheXMg ZnJvbSB0aGUKIyAiY29sb3JzIiBmdW5jdGlvbi4gIElmIGEgImNvbG9yIiBmaWVsZCBpcyBzZXQs IHRoZSAiYmciIGFuZCAiZmciIGZpZWxkcwojIGFyZSBub3QgdXNlZCB1bmxlc3MgcmVmZXJlbmNl ZCBpbiAicHJvbXB0Ii4gIFRoZSBwcm9tcHQgdmFsdWUgc2hvdWxkCiMgYmUgc2luZ2xlLXF1b3Rl ZCBhbmQgbXVzdCB1c2UgYXBwcm9wcmlhdGUgJXsuLi4lfSB3cmFwcGVycyBhcm91bmQKIyB6ZXJv LXdpZHRoIG91dHB1dHMgc3VjaCBhcyBjb2xvciBjaGFuZ2VzLiAgRXhhbXBsZToKIyAgIHpzdHls ZSA6c3RpY2t5LW5vdGUgdGhlbWUgXAojICAgICBiZyByZWQgXAojICAgICBmZyAkZmdfYm9sZFt5 ZWxsb3ddIFwKIyAgICAgcHJvbXB0ICcleyR0aGVtZVtiZ10kZmdfYm9sZFt3aGl0ZV0lfVBPU1Qt SVQ6JXskdGhlbWVbcmVzZXRdJX0nCiMgTk9URTogIFlvdSBtdXN0IGRlZmluZSBlaXRoZXIgY29s b3Igb3IgYm90aCBmZyBhbmQgYmcsIGJ1dCB0aGUgdmFsdWVzCiMgJHRoZW1lW2NvbG9yXSBhbmQg JHRoZW1lW3Jlc2V0XSBhcmUgYWx3YXlzIGdlbmVyYXRlZCBpZiBvbWl0dGVkLgoKIyBUaGUgImRp c3BsYXkiIHN0eWxlIGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IG1hcHBpbmcgY3VzdG9tIGRpc3Bs YXkKIyBhdHRyaWJ1dGUgbmFtZXMgdG8gdGhlIEFOU0kgY29kZXMgdG8gZW5hYmxlIHRoZW0uICBU aGUgc3R5bGUgbXVzdCB1c2UKIyAiJXMiIGF0IHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbm90ZSBz aG91bGQgYXBwZWFyLCBhbmQgbXVzdCBlbmQgd2l0aAojIEFOU0kgY29kZXMgdG8gZGlzY29udGlu dWUgdGhlIHN0eWxlLiAgQW4gZW1wdHkgdmFsdWUgdHVybnMgb2ZmIHRoZQojIGRpc3BsYXkgZm9y bWF0dGluZy4gIEZvciBleGFtcGxlOgojICAgenN0eWxlIDpzdGlja3ktbm90ZSBkaXNwbGF5IFwK IyAgICAgbm9uZSAiIiBcCiMgICAgIGJsaW5rICIkKGVjaG90aSBibGluayklcyQoZWNob3RpIHNn cjApIiBcCiMgICAgIHJldmVyc2UgJCdcZVswN20lc1xlWzAwbScKIyBJZiB5b3UgdXNlIHRoaXMg c3R5bGUsIGEgZmlsZSBuYW1lZCAkU1RJQ0tZRklMRS5kaXNwbGF5IGlzIGNyZWF0ZWQKIyB0byBw cmVzZXJ2ZSB0aGUgZGlzcGxheSBhdHRyaWJ1dGVzIG9mIHRoZSBub3RlcyBpbiAkU1RJQ0tZRklM RS4KIyBOT1RFOiBDaGFuZ2luZyB0aGUgZGlzcGxheSB6c3R5bGUgZG9lcyBub3QgY2hhbmdlIHRo ZSBkaXNwbGF5IG9mCiMgcHJldmlvdXNseSBjcmVhdGVkIG5vdGVzLiAgVGhlcmUgaXMgbm8gZGVm YXVsdCBkaXNwbGF5IHN0eWxlLgoKIyBUbyBzZXQgdGhlIGRpc3BsYXkgZm9yIGEgbm90ZSwgdHlw ZSBjdHJsLXggcXVlc3Rpb24tbWFyayAoXlg/KSB0bwojIHJ1biB0aGUgd2lkZ2V0ICJfc3RpY2t5 LWRpc3BsYXkiLiAgV2hlbiBhICJkaXNwbGF5IiBzdHlsZSBpcyBzZXQsIHRoaXMKIyByZXBsYWNl cyB0aGUgX2NvbXBsZXRlX2hlbHAgYmluZGluZyBmcm9tIHRoZSBkZWZhdWx0IGtleW1hcC4gIFRo ZQojIGtleW1hcCBuYW1lZCAic3RpY2t5IiBtYXkgYmUgbW9kaWZpZWQgdG8gY3VzdG9taXplIHRo aXMsIGFmdGVyIHJ1bm5pbmcKIyAic3RpY2t5LW5vdGUgLWIiIHRvIGluaXRpYWxpemUuCgojIEJ5 IGRlZmF1bHQgdGhlIGRpc3BsYXkgc3R5bGUgaXMgb25seSBhcHBsaWVkIHdoZW4gInBvc3Rpbmci IG5vdGVzIHRvCiMgdGhlIHRvcCBvZiB0aGUgc2NyZWVuIHZpYSB0aGUgWkxFIHdpZGdldCwgYnV0 IGNhbiBiZSBhcHBsaWVkIHRvIHRoZQojIG91dHB1dCBvZiAic3RpY2t5LW5vdGUgLWwiIGJ5IHNl dHRpbmcgdGhlICJsaXN0LWRpc3BsYXkiIHN0eWxlOgojICAgenN0eWxlIDpzdGlja3ktbm90ZSBs aXN0LWRpc3BsYXkgdHJ1ZQoKIyBJIGVuY291cmFnZSBhbGwgeW91IGNyZWF0aXZlIHBlb3BsZSB0 byBjb250cmlidXRlIGVuaGFuY2VtZW50cyAuLi4KCmVtdWxhdGUgLUxSIHpzaAoKdHlwZXNldCAt Z0EgLnpzdGlja3kuZGlzcGxheQoKIyBTZXQgdXAga2V5YmluZGluZ3MgKGFkYXB0ZWQgZnJvbSAi emVkIikKaWYgISBiaW5ka2V5IC1NIHN0aWNreSA+JiAvZGV2L251bGwKdGhlbgogIGJpbmRrZXkg LU4gc3RpY2t5IG1haW4KICBiaW5ka2V5IC1NIHN0aWNreSBeWF5XIGFjY2VwdC1saW5lCiAgYmlu ZGtleSAtTSBzdGlja3kgXk1eTSBhY2NlcHQtbGluZQkjIFR3byBxdWljayBSRVRzIGVuZHMgbm90 ZQogIGJpbmRrZXkgLU0gc3RpY2t5IF5NIHNlbGYtaW5zZXJ0LXVubWV0YQpmaQppZiAhIGJpbmRr ZXkgLU0gc3RpY2t5LXZpY21kID4mIC9kZXYvbnVsbCAKdGhlbgogIGJpbmRrZXkgLU4gc3RpY2t5 LXZpY21kIHZpY21kCiAgYmluZGtleSAtTSBzdGlja3ktdmljbWQgWlogYWNjZXB0LWxpbmUKZmkK aWYgISBmdW5jdGlvbnMgX3N0aWNreS1kaXNwbGF5ID4mIC9kZXYvbnVsbCAmJgogICAgIHpzdHls ZSAtbSA6c3RpY2t5LW5vdGUgZGlzcGxheSAnKicKdGhlbgogIGZ1bmN0aW9uIF9zdGlja3ktZGlz cGxheSB7CiAgICBpZiBbWyAteiAkY29tcHN0YXRlW3ZhcmVkXSBdXQogICAgdGhlbgogICAgICBs b2NhbCBzYXZlX2J1ZmZlcj0kQlVGRkVSIHNhdmVfY3Vyc29yPSRDVVJTT1IKICAgICAgQlVGRkVS PQogICAgICB6bGUgLVUgJCdcdCcKICAgICAgemxlIHJlY3Vyc2l2ZS1lZGl0IC1LIHN0aWNreS1k aXNwbGF5CiAgICAgIC56c3RpY2t5LmRpc3BsYXlbbGFzdF09JEJVRkZFUgogICAgICBQUkVESVNQ TEFZPSJbICRCVUZGRVIgXSAiCiAgICAgIEJVRkZFUj0kc2F2ZV9idWZmZXIgQ1VSU09SPSRzYXZl X2N1cnNvcgogICAgICB6bGUgcmVzZXQtcHJvbXB0CiAgICBlbHNlCiAgICAgIHpzdHlsZSAtYSA6 c3RpY2t5LW5vdGUgZGlzcGxheSBzdGlja3lfZGlzcGxheXMKICAgICAgY29tcGFkZCAteCAiUHJl c3MgVEFCIHRvIGNob29zZSBkaXNwbGF5IG1vZGUsIEVOVEVSIHRvIHNldDoiIFwKCSAgICAgIC1W IG5vc29ydCAkey56c3RpY2t5LmRpc3BsYXlbbGFzdF19IFwKCSAgICAgICR7JHsob2spc3RpY2t5 X2Rpc3BsYXlzfTojJHsuenN0aWNreS5kaXNwbGF5W2xhc3RdfX0KICAgICAgY29tcHN0YXRlW2lu c2VydF09bWVudQogICAgZmkKICB9CiAgemxlIC1OIF9zdGlja3ktZGlzcGxheQogIGJpbmRrZXkg LU0gc3RpY2t5ICdeWD8nIF9zdGlja3ktZGlzcGxheQogIHpsZSAtQyBzdGlja3ktZGlzcGxheS1j aG9pY2VzIG1lbnUtY29tcGxldGUgX3N0aWNreS1kaXNwbGF5CiAgYmluZGtleSAtTiBzdGlja3kt ZGlzcGxheQogIGJpbmRrZXkgLU0gc3RpY2t5LWRpc3BsYXkgJCdcdCcgc3RpY2t5LWRpc3BsYXkt Y2hvaWNlcwogIGJpbmRrZXkgLU0gc3RpY2t5LWRpc3BsYXkgXk0gYWNjZXB0LWxpbmUKZmkKCltb ICIkMSIgPT0gLWIgXV0gJiYgcmV0dXJuIDAKCnNldG9wdCBub2Zsb3djb250cm9sIG5vYmFuZ2hp c3QgZXh0ZW5kZWRoaXN0b3J5IGhpc3RpZ25vcmVkdXBzCnNldG9wdCBub2FwcGVuZGhpc3Rvcnkg bm9zaGFyZWhpc3Rvcnkgbm9pbmNhcHBlbmRoaXN0b3J5CnVuc2V0b3B0IGhpc3RsZXh3b3JkcyBo aXN0bm9mdW5jdGlvbnMgaGlzdG5vc3RvcmUKem1vZGxvYWQgLWkgenNoL2RhdGV0aW1lCgpsb2Nh bCBTVElDS1lGSUxFPSR7U1RJQ0tZRklMRTotJEhPTUUvLnpzdGlja3l9CmxvY2FsIFNUSUNLWVNJ WkU9JHtTVElDS1lTSVpFOi0xMDAwfQpsb2NhbCBQUkVESVNQTEFZIHN0aWNreSBzdGlja3lmaWxl IHN0aWNreXNpemUKbG9jYWwgLUEgc3RpY2t5X2Rpc3BsYXlzIHZhcmVkX29wdGlvbnMKCnpzdHls ZSAtcyA6c3RpY2t5LW5vdGUgbm90ZWZpbGUgc3RpY2t5ZmlsZSB8fCBzdGlja3lmaWxlPSRTVElD S1lGSUxFCnpzdHlsZSAtcyA6c3RpY2t5LW5vdGUgbWF4bm90ZXMgc3RpY2t5c2l6ZSB8fCBzdGlj a3lzaXplPSRTVElDS1lTSVpFCgojIFBvcHVsYXRlIGN1c3RvbSBoaXN0b3J5IHNldG9wdHMKKCkg ewogIGxvY2FsIC1hIGgwCiAgaWYgenN0eWxlIC1hIDpzdGlja3ktbm90ZSBoaXN0b3J5LW9wdHMg aDAKICB0aGVuCiAgICBoMD0oICR7KE0paDA6IypoaXN0Kn0gKQogICAgaDA9KCAke2gwOiMqKGV4 dGVuZGVkfGxleHdvcmRzfG5vZnVuY3Rpb25zfG5vc3RvcmV8aW5jYXBwZW5kfHNoYXJlKSp9ICkK ICAgIHNldG9wdCAkaDAKICBmaQp9CgojIFBvcHVsYXRlIG9wdGlvbnMgdG8gdmFyZWQKKCkgewog IGxvY2FsIC1hIHYwCiAgaWYgenN0eWxlIC1hIDpzdGlja3ktbm90ZSB2YXJlZC1vcHRpb25zIHYw CiAgdGhlbgogICAgdjBbJHt2MFsoaSktYV19XT0oKQogICAgdjBbJHt2MFsoaSktQV19XT0oKQog ICAgdjBbJHt2MFsoaSktY119XT0oKQogICAgaWYgKCggJHt2MFsoSSkraF19ICkpCiAgICB0aGVu CiAgICAgIHYwWyR7djBbKGkpLWhdfV09KCkKICAgICAgdjBbJHt2MFsoaSkraF19XT0oKQogICAg ZWxzZQogICAgICB2MCs9KC1oICcnKQogICAgZmkKICAgIGlmICgoICR7djBbKEkpLWddfSApKQog ICAgdGhlbgogICAgICB2MFske3YwWyhpKS1nXX1dPSgtZyAnJykKICAgIGZpCiAgICBpZiAoKCAk e3YwWyhJKS1lXX0gKSkKICAgIHRoZW4KICAgICAgdjBbJHt2MFsoaSktZV19XT0oLWUgJycpCiAg ICBmaQogIHZhcmVkX29wdGlvbnM9KCAiJHYwW0BdIiApCiAgZWxzZQogICAgdmFyZWRfb3B0aW9u cz0oLWggJycpCiAgZmkKfQo6ICR7dmFyZWRfb3B0aW9uc1staV06PXVuZGVmaW5lZC1rZXl9Cjog JHt2YXJlZF9vcHRpb25zWy1mXTo9dW5kZWZpbmVkLWtleX0KOiAke3ZhcmVkX29wdGlvbnNbLU1d Ojo9c3RpY2t5fQo6ICR7dmFyZWRfb3B0aW9uc1stbV06Oj1zdGlja3ktdmljbWR9CgojIExvb2sg dXAgY29sb3IgdGhlbWUKbG9jYWwgLUEgdGhlbWUKKCgkK2JnICYmICQrZmcpKSB8fCB7IGF1dG9s b2FkIC1VeiBjb2xvcnM7IGNvbG9ycyB9CnpzdHlsZSAtbSA6c3RpY2t5LW5vdGUgdGhlbWUgJyon IHx8IHsKICAgIHpzdHlsZSA6c3RpY2t5LW5vdGUgdGhlbWUgYmcgeWVsbG93IGZnIGJsYWNrCn0K enN0eWxlIC1hIDpzdGlja3ktbm90ZSB0aGVtZSB0aGVtZQooKCAkeytiZ1skdGhlbWVbYmddXX0g KSkgJiYgdGhlbWVbYmddPSRiZ1skdGhlbWVbYmddXQooKCAkeytmZ1skdGhlbWVbZmddXX0gKSkg JiYgdGhlbWVbZmddPSRmZ1skdGhlbWVbZmddXQooKCAkeyt0aGVtZVtjb2xvcl19ICkpIHx8IHRo ZW1lW2NvbG9yXT0kdGhlbWVbYmddJHRoZW1lW2ZnXQooKCAkeyt0aGVtZVtyZXNldF19ICkpIHx8 IHRoZW1lW3Jlc2V0XT0kcmVzZXRfY29sb3IKKCggJHsrdGhlbWVbcHJvbXB0XX0gKSkgfHwgdGhl bWVbcHJvbXB0XT0kdmFyZWRfb3B0aW9uc1stcF0KCnRoZW1lW3Byb21wdF09IiR7KGUpdGhlbWVb cHJvbXB0XX0leyR7dGhlbWVbY29sb3JdfSV9Igp2YXJlZF9vcHRpb25zWy1wXT0kdGhlbWVbcHJv bXB0XQoKIyBMb2FkIHBlci1ub3RlIGRpc3BsYXkgc2V0dGluZ3MKaWYgW1sgLXogJHsuenN0aWNr eS5kaXNwbGF5fSAmJiAtciAkc3RpY2t5ZmlsZS5kaXNwbGF5IF1dCnRoZW4KICBzb3VyY2UgJHN0 aWNreWZpbGUuZGlzcGxheQogICMgQ2xlYW4gdXAgbm90ZXMgZXhwaXJlZCBmcm9tIHRoZSBTVElD S1lGSUxFLgogICgpIHsKICAgIGxvY2FsIC1hIGRpc3BsYXlfa2V5cz0obGFzdCkgZDAKICAgIHdo aWxlIElGUz0nOiAnIHJlYWQgLUEgZDAKICAgIGRvCiAgICAgIGRpc3BsYXlfa2V5cys9KCAkZDBb Ml0gKQogICAgZG9uZSA8ICRzdGlja3lmaWxlCiAgICBkMD0oICR7KGspLnpzdGlja3kuZGlzcGxh eX0gKQogICAgc2V0IC0tICR7ZDA6fGRpc3BsYXlfa2V5c30KICAgIHdoaWxlIFtbIC1uICQxIF1d CiAgICBkbwogICAgICB1bnNldCAiLnpzdGlja3kuZGlzcGxheVskMV0iCiAgICAgIHNoaWZ0CiAg ICBkb25lCiAgICB0eXBlc2V0IC1wIDEgLnpzdGlja3kuZGlzcGxheSA+fCAkc3RpY2t5ZmlsZS5k aXNwbGF5CiAgfQpmaQoKIyBJZiBpbnZva2VkIGFzIGEgd2lkZ2V0LCBiZWhhdmUgYSBiaXQgbGlr ZSBydW4taGVscAppZiB6bGUKdGhlbgogIHptb2Rsb2FkIC1pIHpzaC9wYXJhbWV0ZXIKICBpZiBb WyAkKiA9PSAtKmwqIHx8ICRmdW5jdHJhY2UgPT0gKnpsZS1saW5lLWluaXQ6KiBdXQogIHRoZW4K ICAgIGxvY2FsIG51bSBzdGFtcCBjZW9sPSR7IGVjaG90aSBlbCB9CiAgICBmYyAtYXAgJHN0aWNr eWZpbGUgJHN0aWNreXNpemUgJHN0aWNreXNpemUKICAgIGVjaG90aSBjdXAgJExJTkVTIDEKICAg IHpsZSByZXNldC1wcm9tcHQKICAgIGVjaG90aSBzYwogICAgZWNob3RpIGhvbWUKICAgIHByaW50 IC1uciAiJHRoZW1lW2NvbG9yXSIKICAgIGZjIC10ICVzIC1sICIke0A6LS0xfSIgfAogICAgICB3 aGlsZSByZWFkIC1yIG51bSBzdGFtcCBzdGlja3kKICAgICAgZG8KCWlmIFtbIC1uICR7LnpzdGlj a3kuZGlzcGxheVskc3RhbXBdfSBdXQoJdGhlbgoJICBwcmludGYgLXYgc3RpY2t5ICIkey56c3Rp Y2t5LmRpc3BsYXlbJHN0YW1wXX0kdGhlbWVbY29sb3JdIiAkc3RpY2t5CglmaQoJcHJpbnRmICVz XFxuICIkbnVtICAiJHtzdGlja3kvLyQnXFxuJy8kY2VvbCQnXG4nfSRjZW9sCiAgICAgIGRvbmUK ICAgIHByaW50IC1uciAiJHRoZW1lW3Jlc2V0XSIKICAgIGVjaG90aSByYwogIGVsaWYgW1sgJENP TlRFWFQgPSAoY29udHxzZWxlY3R8dmFyZWQpIF1dCiAgdGhlbgogICAgemxlIC1NICJObyBzdGlj a2llcyBkdXJpbmcgJHskeyh6KVBSRUJVRkZFUn1bMV06LSRDT05URVhUfSwgc29ycnkiCiAgICB6 bGUgLmJlZXAKICAgIHpsZSAtUgogIGVsc2UKICAgIHpsZSAucHVzaC1saW5lCiAgICBCVUZGRVI9 c3RpY2t5LW5vdGUKICAgIHpsZSAuYWNjZXB0LWxpbmUKICBmaQogIHJldHVybiAwCmZpCgojIElu dm9rZWQgYXMgYSBjb21tYW5kLCBiZWhhdmUgbGlrZSB6ZWQsIGJ1dCB3cml0ZSBhIGhpc3Rvcnkg ZmlsZQpmYyAtYXAgJHN0aWNreWZpbGUgJHN0aWNreXNpemUgJHN0aWNreXNpemUKCiMgV2l0aCBh IC1sIG9wdGlvbiwgbGlzdCB0aGUgZXhpc3Rpbmcgc3RpY2t5IG5vdGVzCmlmIFtbICIkKiIgPT0g LSpsKiBdXQp0aGVuCiAgbG9jYWwgbnVtIHN0YW1wIGRpc3BsYXkKICBwcmludCAtbnIgIiR0aGVt ZVtjb2xvcl0iCiAgIyBVc2UgcmVhZC9wcmludCBsb29wIHRvIGludGVycG9sYXRlICJcbiIgaW4g aGlzdG9yeSBsaW5lcwogIGZjIC10ICVzICIkQCIgfAogICAgd2hpbGUgcmVhZCAtciBudW0gc3Rh bXAgc3RpY2t5CiAgICBkbwogICAgICBpZiB6c3R5bGUgLXQgOnN0aWNreS1ub3RlIGxpc3QtZGlz cGxheSAmJgoJICBbWyAtbiAkey56c3RpY2t5LmRpc3BsYXlbJHN0YW1wXX0gXV0KICAgICAgdGhl bgoJcHJpbnRmIC12IHN0aWNreSAiJHsuenN0aWNreS5kaXNwbGF5WyRzdGFtcF19JHRoZW1lW2Nv bG9yXSIgJHN0aWNreQogICAgICBmaQogICAgICBwcmludCAtLSAiJHt8IHN0cmZ0aW1lIC1zIFJF UExZIC1uICcleCAlSDolTScgJHN0YW1wIH0gICRzdGlja3kiCiAgICBkb25lCiAgcHJpbnQgLW5y ICIkdGhlbWVbcmVzZXRdIgogIHJldHVybiAwCmZpCgojIEVkaXQgYSBuZXcgc3RpY2t5IG5vdGUg YW5kIGFkZCBpdCB0byB0aGUgc3RpY2t5ZmlsZQp3aGlsZSB7CiAgICB2YXJlZCAkeyhrdil2YXJl ZF9vcHRpb25zfSBzdGlja3kKICB9IGFsd2F5cyB7CiAgICAjIEFzc3VyZSB3ZSByZWFjaCAicmV0 dXJuIDAiIHRvIGNvbXBsZXRlIGZjIC1hcAogICAgVFJZX0JMT0NLX0lOVEVSUlVQVD0wCn0gZG8K ICB7CiAgICBpZiBbWyAtbiAiJHN0aWNreSIgXV0KICAgIHRoZW4KICAgICAgcHJpbnQgLXMgLS0g IiRzdGlja3kiCiAgICAgIGZjIC1XICYmIFNBVkVISVNUPTAKICAgICAgIyBGaWxlIGlzIHVwZGF0 ZWQgYnV0IGludGVybmFsICJmYyAtbCIgaXMgbm90IHlldC4gIEdldCB0aGUgdGltZXN0YW1wLgog ICAgICBzdGFtcD0keyR7JHt8IGxvY2FsIGxpbmU7CgkJICB3aGlsZSByZWFkIGxpbmU7IGRvIFJF UExZPSRsaW5lOyBkb25lIDwkc3RpY2t5ZmlsZSB9IzogfSUlOip9CiAgICAgIGlmIFtbIC1uICRz dGFtcCAmJiAtbiAkey56c3RpY2t5LmRpc3BsYXlbbGFzdF19ICYmIC1uICRzdGlja3lfZGlzcGxh eXMgXV0KICAgICAgdGhlbgoJLnpzdGlja3kuZGlzcGxheVskc3RhbXBdPSR7c3RpY2t5X2Rpc3Bs YXlzWyR7LnpzdGlja3kuZGlzcGxheVtsYXN0XX1dfQogICAgICAgIHR5cGVzZXQgLXAgMSAuenN0 aWNreS5kaXNwbGF5ID58ICRzdGlja3lmaWxlLmRpc3BsYXkKICAgICAgZmkKICAgIGZpCiAgfSBh bHdheXMgewogICAgdW5zZXQgc3RpY2t5X2Rpc3BsYXlzCiAgICAoKCBUUllfQkxPQ0tfRVJST1Ig PSAwICkpCiAgfSAmJiBicmVhawogIGVjaG8gLW4gLWUgJ1xhJwpkb25lCnJldHVybiAwCg== --0000000000000aabd4060a7a9979--