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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9911 invoked from network); 18 Jul 2023 09:54:56 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 18 Jul 2023 09:54:56 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1689674096; b=O/Q3vp71BbMmuaOOXyzFuZlvpLiXa/s8HP24xqmLIXVSxiH/Enjyp0N6jzHoB+9CVWcXZ/ONJr NoA2gflaxOGCWA9l6eR0u2BzH0auRRTpQBgTVB+5qOYLzg/Rj/3qXyCqnOx+dksf5Nj9KOwbyf phuwz1rlgaQr5Gr6/epTTTclbnnxztHUW4M60DSasfEfrNcQ8ZV4xkotzN6dSlebrnpqMmtcsd evde3RP8L1kZfKWQSXUre6u1cPhWKrqsYh6MGO2fg96fjKWaEFIWAv26Ny3gTmC0AoAkGLUZXw u36A6Or9p/knKo2Bn+dBFrHWWhAQYWHgN3XEXWQdCvkGjw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (racky2.crushedhat.com) smtp.remote-ip=50.209.93.117; dkim=pass header.d=crushedhat.com header.s=default header.a=rsa-sha256; dmarc=pass header.from=crushedhat.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1689674096; bh=1x68biG/n7klVRt4l4FTJUSdqKEs1CpzBhl2oi2Bnt4=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Subject:From:To:MIME-Version:Date:Message-ID:Content-Type: DKIM-Signature:DKIM-Signature; b=FRyCnDjVWHyf+J27VHAAOiHqkNqP4gioabDvmQjWx8mtFJwlvVQs6+PvAYqX5SPtYlG7KAmBIw HyL2hhaXdeROtg3sL0/Cwu1033A9ziNbt0rxEZyDh5RNrK11gqLyV1SbfFxy3EfA7+3ToO4+eP gRZLhH9SBmi6GzKwqBMU2NxEbTuXaSdfe+yzD05/YLGgnbnmRZ00uLNzlHo3ducLh4KOpyod5a NZRgcLsh85En+j66qMN8mtGUaxGJl2Li/7+fPIWlENkcj0Ycq66h3tkEz0qkNjye3WQCW5YkCd OvRBT69Fvd1TgVHZhAxVz+oIvL/X46A8iT07O45JT6q+cw==; 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:Subject:From:To:MIME-Version:Date: Message-ID:Content-Type:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=Ug95JlxVOW9PidMr9wmPPQJ4kDDJpVJDwTN9fnqeeYw=; b=RsvuS5/RPBjPi9PnKSXikT0Xmw RmwBLLy9X23WVtmqooPoSmghHNbHnwERw7N51rTh0x9sqhAu2Dx8khcUsB1j2NFsww4QLdKvhv4Sr k9NkLUA2Aa1j9YZFuKjOFjuHCoc/NxI45/GD4dr1iiLbyckKANg27CbzwkrB9bvVaD58jlLPCcxtO V13DH98CgZ+ZSkeTb9xMF47OptJzUnzmhZFoKmi5jMYxtllBD191U6TqNSk8rTk8RL2uf6dD/GPVX ANcoDlvab6vN6r3Y6MuzM6NAWNGW/o0F/awS5Q+QPZjPK16Z83zxAMR0yExOaMlBahS4xo7wL2bxi kMgHfOQg==; Received: by zero.zsh.org with local id 1qLhPy-000NGt-JP; Tue, 18 Jul 2023 09:54:54 +0000 Authentication-Results: zsh.org; iprev=pass (racky2.crushedhat.com) smtp.remote-ip=50.209.93.117; dkim=pass header.d=crushedhat.com header.s=default header.a=rsa-sha256; dmarc=pass header.from=crushedhat.com; arc=none Received: from racky2.crushedhat.com ([50.209.93.117]:42372) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1qLhPL-000Mxg-CC; Tue, 18 Jul 2023 09:54:18 +0000 Received: from [IPV6:2603:3006:10c3:e100:e23f:49ff:feeb:21a3] (sheba-ipv6.crushedhat.com [IPv6:2603:3006:10c3:e100:e23f:49ff:feeb:21a3]) by racky2.crushedhat.com (Postfix) with ESMTPSA id 51D3D381872 for ; Tue, 18 Jul 2023 02:54:12 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 racky2.crushedhat.com 51D3D381872 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crushedhat.com; s=default; t=1689674052; bh=Ug95JlxVOW9PidMr9wmPPQJ4kDDJpVJDwTN9fnqeeYw=; h=Date:To:From:Subject:From; b=Z26bvV7FgMnLf1AXF1Ypy4ztZs5ba8hCrnn4aTxSz+RKhrUyEvVHnn5TKfcdiCVXm 9eDExN/N9rZUfB11i7a7DLmCFCGogS/CP9PqjlOLz7JxmWcb6kqOzwSdXz73G9kFSz sCB7pF0DmF7GiqjzGKBidCHyrvZYJcjN/vMQ5KEw= Content-Type: multipart/mixed; boundary="------------yvXOb9aCiSj5bd89NvRut3Zm" Message-ID: <3a8e90b4-def1-bada-c118-68ddc1245972@crushedhat.com> Date: Tue, 18 Jul 2023 02:54:11 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: zsh-workers@zsh.org From: Tim Eliseo Subject: [PATCH] Add option like tcsh's dextract X-Seq: 51958 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: This is a multi-part message in MIME format. --------------yvXOb9aCiSj5bd89NvRut3Zm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi all! This is my first post to the group. I’d been using tcsh as an interactive shell since way back when it was still cool, before zsh or bash even existed. Zsh is the first shell that’s a worthy successor. One of the small things that kept me from jumping to bash (along with everyone else in the Linux world) is that it doesn’t have a proper implementation of asynchronous notify of job completion (-b), which zsh does. Another thing that bugged me about bash was that there is no clean way to emulate tcsh’s dextract option, which rearranges the pushd stack differently. I eventually discovered that zsh can do the basic function through the cd/chdir builtin with the auto_pushd option set, but coding a pushd replacement function was complicated to get right for all option cases (see attached). However, I found that adding this pushd mode to zsh natively was trivial (simply testing for the new option in one place), and I’m still baffled why it wasn’t included a long time ago while someone was looking for ways to increase compatibility with other shells. The attached patch (based on the current master branch) does just that, and I hope you see fit to merge it into the codebase. I believe I’ve done all the appropriate option handling, documentation, and unit test to make this painless. I didn’t write a ChangeLog entry since I wasn’t sure of the appropriate format, or how to derive the number. (Is that an SVN revision number?) Tim --------------yvXOb9aCiSj5bd89NvRut3Zm Content-Type: text/plain; charset=UTF-8; name="zsh-pushd_extract.patch.txt" Content-Disposition: attachment; filename="zsh-pushd_extract.patch.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvYnVpbHRpbnMueW8gYi9Eb2MvWnNoL2J1aWx0aW5zLnlv CmluZGV4IDUzOTNjYjE0OS4uNDdjMTU1ODNiIDEwMDY0NAotLS0gYS9Eb2MvWnNoL2J1aWx0 aW5zLnlvCisrKyBiL0RvYy9ac2gvYnVpbHRpbnMueW8KQEAgLTE0NTksNiArMTQ1OSw3IEBA IHBpbmRleChQVVNIRF9UT19IT01FLCB1c2Ugb2YpCiBwaW5kZXgoUFVTSERfTUlOVVMsIHVz ZSBvZikKIHBpbmRleChDREFCTEVfVkFSUywgdXNlIG9mKQogcGluZGV4KFBVU0hEX1NJTEVO VCwgdXNlIG9mKQorcGluZGV4KFBVU0hEX0VYVFJBQ1QsIHVzZSBvZikKIHhpdGVtKHR0KHB1 c2hkKSBbIHR0KC1xc0xQKSBdIFsgdmFyKGFyZykgXSkKIHhpdGVtKHR0KHB1c2hkKSBbIHR0 KC1xc0xQKSBdIHZhcihvbGQpIHZhcihuZXcpKQogaXRlbSh0dChwdXNoZCkgWyB0dCgtcXNM UCkgXSB7dHQoUExVUygpKXx0dCgtKX12YXIobikpKApAQCAtMTQ3Myw4ICsxNDc0LDEwIEBA IE90aGVyd2lzZSwgdmFyKGFyZykgaXMgaW50ZXJwcmV0ZWQgYXMgaXQgd291bGQgYmUgYnkg dHQoY2QpLgogVGhlIG1lYW5pbmcgb2YgdmFyKG9sZCkgYW5kIHZhcihuZXcpIGluIHRoZSBz ZWNvbmQgZm9ybSBpcyBhbHNvCiB0aGUgc2FtZSBhcyBmb3IgdHQoY2QpLgogCi1UaGUgdGhp cmQgZm9ybSBvZiB0dChwdXNoZCkgY2hhbmdlcyBkaXJlY3RvcnkgYnkgcm90YXRpbmcgdGhl Ci1kaXJlY3RvcnkgbGlzdC4gIEFuIGFyZ3VtZW50IG9mIHRoZSBmb3JtIGB0dChQTFVTKCkp dmFyKG4pJyBpZGVudGlmaWVzIGEgc3RhY2sKK1RoZSB0aGlyZCBmb3JtIG9mIHR0KHB1c2hk KSBjaGFuZ2VzIGRpcmVjdG9yeSBlaXRoZXIgYnkgcm90YXRpbmcgdGhlCitkaXJlY3Rvcnkg bGlzdCAodGhlIGRlZmF1bHQpLCBvciBieSBleHRyYWN0aW5nIGFuIGVudHJ5IGZyb20gdGhl IGRpcmVjdG9yeQorbGlzdCBhbmQgcHVzaGluZyBpdCBvbiB0b3AgKHdoZW4gdGhlIHR0KFBV U0hEX0VYVFJBQ1QpIG9wdGlvbiBpcyBzZXQpLgorQW4gYXJndW1lbnQgb2YgdGhlIGZvcm0g YHR0KFBMVVMoKSl2YXIobiknIGlkZW50aWZpZXMgYSBzdGFjawogZW50cnkgYnkgY291bnRp bmcgZnJvbSB0aGUgbGVmdCBvZiB0aGUgbGlzdCBzaG93biBieSB0aGUgdHQoZGlycykKIGNv bW1hbmQsIHN0YXJ0aW5nIHdpdGggemVyby4gIEFuIGFyZ3VtZW50IG9mIHRoZSBmb3JtIGB0 dCgtKXZhcihuKScgY291bnRzCiBmcm9tIHRoZSByaWdodC4gIElmIHRoZSB0dChQVVNIRF9N SU5VUykgb3B0aW9uIGlzIHNldCwgdGhlIG1lYW5pbmdzCmRpZmYgLS1naXQgYS9Eb2MvWnNo L29wdGlvbnMueW8gYi9Eb2MvWnNoL29wdGlvbnMueW8KaW5kZXggY2JkM2QwZjhlLi4zYTNl NGI2MjkgMTAwNjQ0Ci0tLSBhL0RvYy9ac2gvb3B0aW9ucy55bworKysgYi9Eb2MvWnNoL29w dGlvbnMueW8KQEAgLTE2Miw2ICsxNjIsMTggQEAgc2hlbGxzKTsgYW5kIGFueSB1c2Ugb2Yg YSBjb21wb25lbnQgb2YgdHQoQ0RQQVRIKSwgaW5jbHVkaW5nIGEgYHR0KC4pJyBidXQKIGV4 Y2x1ZGluZyBhbiBlbXB0eSBjb21wb25lbnQgdGhhdCBpcyBvdGhlcndpc2UgdHJlYXRlZCBh cyBgdHQoLiknLCBjYXVzZXMKIHRoZSBkaXJlY3RvcnkgdG8gYmUgcHJpbnRlZC4KICkKK3Bp bmRleChQVVNIRF9FWFRSQUNUKQorcGluZGV4KE5PX1BVU0hEX0VYVFJBQ1QpCitwaW5kZXgo UFVTSERFWFRSQUNUKQorcGluZGV4KE5PUFVTSERFWFRSQUNUKQorY2luZGV4KGRpcmVjdG9y eSBzdGFjaywgYWx0ZXJpbmcgcmVvcmRlcmluZykKK2l0ZW0odHQoUFVTSERfRVhUUkFDVCkp KAorQSBwdXNoIHVzaW5nIGB0dChQTFVTKCkpJyBvciBgdHQoLSknIHdpbGwgcmVvcmRlciBi eSBtb3ZpbmcgdGhlIHNwZWNpZmllZAorZW50cnkgdG8gdGhlIHRvcCwgcHJlc2VydmluZyB0 aGUgb3JkZXIgb2YgdGhlIHJlbWFpbmRlciBiZWxvdyAobGlrZSB0aGUKK3R0KGRleHRyYWN0 KSBvcHRpb24gb2YgYmYodGNzaCkpLCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHdoaWNoIHJv dGF0ZXMgdGhlCitzdGFjayBzbyB0aGF0IHRoZSBzcGVjaWZpZWQgZW50cnkgaXMgb24gdG9w LiBUaGlzIG9wdGlvbiBtYWtlcyB0dChwdXNoZCkKK3VzaW5nIGB0dChQTFVTKCkpJyBvciBg dHQoLSknIGJlaGF2ZSBsaWtlIHR0KGNkKSB3aXRoIHR0KEFVVE9fUFVTSEQpIHNldC4KKykK IHBpbmRleChQVVNIRF9JR05PUkVfRFVQUykKIHBpbmRleChOT19QVVNIRF9JR05PUkVfRFVQ UykKIHBpbmRleChQVVNIRElHTk9SRURVUFMpCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwpp bmRleCAwZTcyNjY5OWYuLjQ3YzA2M2I0MCAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdT CkBAIC0xOCw2ICsxOCw5IEBAIGNvbnNpc3RlbnQgYW5kIGJldHRlciBhbGlnbmVkIHdpdGgg dGhlIFBPU0lYLTIwMTcgc3BlY2lmaWNhdGlvbiBvZgogYHNldCAtZWAuIEZvciBkZXRhaWxz IG9uIHdoYXQgZXhhY3RseSBjaGFuZ2VkLCBzZWUgdGhlIGxpc3Qgb2YKIGluY29tcGF0aWJp bGl0aWVzIGluIHRoZSBSRUFETUUgZmlsZS4KIAorVGhlIG9wdGlvbiBQVVNIRF9FWFRSQUNU IHdhcyBhZGRlZCB0byBhbHRlciBob3cgcHVzaGQgcmVvcmRlcnMgdGhlIHN0YWNrLAoraW4g dGhlIHNhbWUgd2F5IGFzIHRoZSBkZXh0cmFjdCBvcHRpb24gb2YgdGNzaC4KKwogQ2hhbmdl cyBzaW5jZSA1LjguMQogLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9TcmMv YnVpbHRpbi5jIGIvU3JjL2J1aWx0aW4uYwppbmRleCA2NjlhNDcwOTIuLjNiMTcwNWEwZiAx MDA2NDQKLS0tIGEvU3JjL2J1aWx0aW4uYworKysgYi9TcmMvYnVpbHRpbi5jCkBAIC0xMTk0 LDcgKzExOTQsNyBAQCBjZF9uZXdfcHdkKGludCBmdW5jLCBMaW5rTm9kZSBkaXIsIGludCBx dWlldCkKICAgICBzdHJ1Y3Qgc3RhdCBzdDEsIHN0MjsKICAgICBpbnQgZGlyc3RhY2tzaXpl OwogCi0gICAgaWYgKGZ1bmMgPT0gQklOX1BVU0hEKQorICAgIGlmIChmdW5jID09IEJJTl9Q VVNIRCAmJiB1bnNldChQVVNIREVYVFJBQ1QpKQogCXJvbGxsaXN0KGRpcnN0YWNrLCBkaXIp OwogICAgIG5ld19wd2QgPSByZW1ub2RlKGRpcnN0YWNrLCBkaXIpOwogCmRpZmYgLS1naXQg YS9TcmMvb3B0aW9ucy5jIGIvU3JjL29wdGlvbnMuYwppbmRleCBhOTk0YjU2M2UuLmIwYmVl N2U2ZCAxMDA2NDQKLS0tIGEvU3JjL29wdGlvbnMuYworKysgYi9TcmMvb3B0aW9ucy5jCkBA IC0yMzEsNiArMjMxLDcgQEAgc3RhdGljIHN0cnVjdCBvcHRuYW1lIG9wdG5zW10gPSB7CiB7 e05VTEwsICJwcm9tcHRwZXJjZW50IiwgICAgICBPUFRfTk9OQk9VUk5FfSwJCSBQUk9NUFRQ RVJDRU5UfSwKIHt7TlVMTCwgInByb21wdHNwIiwJICAgICAgT1BUX0FMTH0sCQkJIFBST01Q VFNQfSwKIHt7TlVMTCwgInByb21wdHN1YnN0IiwJICAgICAgT1BUX0JPVVJORX0sCQkgUFJP TVBUU1VCU1R9LAore3tOVUxMLCAicHVzaGRleHRyYWN0IiwgICAgICAgT1BUX0VNVUxBVEV9 LAkJIFBVU0hERVhUUkFDVH0sCiB7e05VTEwsICJwdXNoZGlnbm9yZWR1cHMiLCAgICBPUFRf RU1VTEFURX0sCQkgUFVTSERJR05PUkVEVVBTfSwKIHt7TlVMTCwgInB1c2hkbWludXMiLAkg ICAgICBPUFRfRU1VTEFURX0sCQkgUFVTSERNSU5VU30sCiB7e05VTEwsICJwdXNoZHNpbGVu dCIsCSAgICAgIDB9LAkJCSBQVVNIRFNJTEVOVH0sCmRpZmYgLS1naXQgYS9TcmMvenNoLmgg Yi9TcmMvenNoLmgKaW5kZXggYTAyNDNlOThlLi44NWJkOTdmYmEgMTAwNjQ0Ci0tLSBhL1Ny Yy96c2guaAorKysgYi9TcmMvenNoLmgKQEAgLTI1MDgsNiArMjUwOCw3IEBAIGVudW0gewog ICAgIFBST01QVFBFUkNFTlQsCiAgICAgUFJPTVBUU1AsCiAgICAgUFJPTVBUU1VCU1QsCisg ICAgUFVTSERFWFRSQUNULAogICAgIFBVU0hESUdOT1JFRFVQUywKICAgICBQVVNIRE1JTlVT LAogICAgIFBVU0hEU0lMRU5ULApkaWZmIC0tZ2l0IGEvVGVzdC9FMDFvcHRpb25zLnp0c3Qg Yi9UZXN0L0UwMW9wdGlvbnMuenRzdAppbmRleCA1MzNlMDg3NzMuLjg5ODYwYzc4ZiAxMDA2 NDQKLS0tIGEvVGVzdC9FMDFvcHRpb25zLnp0c3QKKysrIGIvVGVzdC9FMDFvcHRpb25zLnp0 c3QKQEAgLTkzOCw2ICs5MzgsMjUgQEAKID53YWFhaAogPmBlY2hvIHdhYWFoYAogCisgIG1r ZGlyIG5ld3BkCisgIGNkICRteWRpcgorICBwdXNoZCAkbXlkaXIvdG1wY2QKKyAgcHVzaGQg JG15ZGlyL25ld3BkCisgIGRpcnMKKyAgcHVzaGQgKzEKKyAgZGlycworICBzZXRvcHQgcHVz aGRleHRyYWN0CisgIHB1c2hkICsxCisgIGRpcnMKKyAgdW5zZXRvcHQgcHVzaGRleHRyYWN0 CisgIHBvcGQgPi9kZXYvbnVsbAorICBwb3BkID4vZGV2L251bGwKKyAgY2QgJG15ZGlyCisw cTpQVVNIRF9FWFRSQUNUIG9wdGlvbgorPiRteWRpcnQvbmV3cGQgJG15ZGlydC90bXBjZCAk bXlkaXJ0Cis+JG15ZGlydC90bXBjZCAkbXlkaXJ0ICRteWRpcnQvbmV3cGQKKz4kbXlkaXJ0 ICRteWRpcnQvdG1wY2QgJG15ZGlydC9uZXdwZAorCiAgIGRpcnMKICAgcHVzaGQgJG15ZGly L3RtcGNkCiAgIGRpcnMKQEAgLTE0NTksNyArMTQ3OCw3IEBAIEY6SWYgdGhpcyB0ZXN0IGZh aWxzIGF0IHRoZSBmaXJzdCB1bnNldG9wdCwgcmVmZXIgdG8gUDAxcHJpdmlsZWdlZC56dHN0 LgogICBmaQogICBCRUw9JCdcYScKIDBxOlJNX1NUQVJfU0lMRU5UCi0qPnpzaDogc3VyZSB5 b3Ugd2FudCB0byBkZWxldGUgYWxsIDE1IGZpbGVzIGluICR7UFdEOmh9L29wdGlvbnMudG1w IFxbeW5cXVw/ICR7QkVMfSh8bikKKyo+enNoOiBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBh bGwgMTYgZmlsZXMgaW4gJHtQV0Q6aH0vb3B0aW9ucy50bXAgXFt5blxdXD8gJHtCRUx9KHxu KQogKj56c2g6IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIChhbGwgPC0+fG1vcmUgdGhhbiA8 LT4pIGZpbGVzIGluIC8gXFt5blxdXD8gJHtCRUx9KHxuKQogCiAgICgpIHsK --------------yvXOb9aCiSj5bd89NvRut3Zm Content-Type: text/plain; charset=UTF-8; name="pushd_extract.zsh" Content-Disposition: attachment; filename="pushd_extract.zsh" Content-Transfer-Encoding: base64 IyBJbiB6c2gsIGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHB1c2hkIHdpdGggdGNzaCdzIGRl eHRyYWN0IG9wdGlvbgojIFZlcnNpb24gMS4wLCB3cml0dGVuIGJ5IFRpbW90aHkgUi4gRWxp c2VvCgojIERvbid0IG5lZWQgdGhlIGZ1bmN0aW9uIGRlZiBpZiBuYXRpdmUgb3B0aW9uIGV4 aXN0cwppZiAhIHNldG9wdCBwdXNoZF9leHRyYWN0IDI+IC9kZXYvbnVsbDsgdGhlbgogICAg cHVzaGQoKSB7CglzZXRvcHQgbG9jYWxfb3B0aW9ucyBleHRlbmRlZF9nbG9iIGF1dG9fcHVz aGQgY2Rfc2lsZW50Cgl6bW9kbG9hZCB6c2gvcGFyYW1ldGVyICAgICAgIyBOZWVkICRkaXJz dGFja1tdCgoJIyBHYXRoZXIgYW55IG9wdGlvbiBmbGFncywgZHVwbGljYXRpbmcgYnVpbHRp biBiZWhhdmlvciBvZiBvbmx5IHJlY29nbml6aW5nCgkjIGNlcnRhaW4gb3B0aW9ucywgYW5k IG9ubHkgYmVmb3JlIG5vbi1vcHRpb24gYXJndW1lbnRzLgoJbG9jYWwgLWEgb3B0cwoJd2hp bGUgW1sgJCMgLWd0IDAgJiYgJDEgPT0gLVtxc0xQXSMjIF1dOyBkbwoJICAgIG9wdHMrPSgi JDEiKQoJICAgIFtbICQxICE9ICpxKiBdXSB8fCBzZXRvcHQgcHVzaGRfc2lsZW50CgkgICAg c2hpZnQKCWRvbmUKCgkjIFRoZSBjaGRpci9jZCBidWlsdGluLCB3aXRoIG9uZSBhcmd1bWVu dCBpbiBbK3wtXW4gZm9ybSBhbmQgd2l0aAoJIyB0aGUgYXV0b19wdXNoZCBvcHRpb24gc2V0 LCBoYXMgdGhlIGRlc2lyZWQgc3RhY2sgZXh0cmFjdCBiZWhhdmlvciwKCSMgaW5zdGVhZCBv ZiBwdXNoZCdzIHN0YWNrIHJvdGF0aW9uLiBGb3IgYmV0dGVyIGVycm9yIG91dHB1dCwgd2Ug YWxzbwoJIyBjaGVjayBpZiB0aGUgaW5kZXggaXMgaW4gdGhlIHJhbmdlIHRoYXQgd291bGQg aGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3IgdGhhbgoJIyBwdXNoZC4gVGhpcyByYW5nZSBjaGVj ayBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mICsvLSBiZWNhdXNlIHB1c2hpbmcKCSMgZWl0 aGVyIHRoZSBmaXJzdCBvciBsYXN0IGVudHJ5IGhhcyB0aGUgc2FtZSByZXN1bHQgd2l0aCBl eHRyYWN0aW9uIG9yCgkjIHJvdGF0aW9uLgoJaWYgW1sgJCMgLWVxIDEgJiYgISAtbyBwb3Np eF9jZCAmJgoJICAkMSA9PSBbKy1dWzAtOV0jIyAmJiAkMSAtbmUgMCAmJiAkezE6MX0gLWx0 ICR7I2RpcnN0YWNrW0BdfSBdXTsgdGhlbgoJICAgICMgVXNlIGNoZGlyIHRvIHB1c2hkIHdp dGggZXh0cmFjdC4gY2Rfc2lsZW50IHN1cHByZXNzZXMgaXRzIG5vcm1hbAoJICAgICMgb3V0 cHV0LCBhbmQgdGhlbiB3ZSBleGVjdXRlIGRpcnMsIGFzIHB1c2hkIHdvdWxkLCBpZiBhcHBy b3ByaWF0ZS4KCSAgICBidWlsdGluIGNoZGlyICIke29wdHNbQF19IiAiJEAiICYmIHsgW1sg ISAtbyBpbnRlcmFjdGl2ZSB8fAoJICAgICAgLW8gcHVzaGRfc2lsZW50IF1dIHx8IGJ1aWx0 aW4gZGlyczsgfQoJZWxzZSAgICAgICAgIyBPdGhlcndpc2UganVzdCBleGVjdXRlIHB1c2hk IHdpdGggb3JpZ2luYWwgYXJncwoJICAgIGJ1aWx0aW4gcHVzaGQgIiR7b3B0c1tAXX0iICIk QCIKCWZpCiAgICB9CmZpCg== --------------yvXOb9aCiSj5bd89NvRut3Zm--