From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27188 invoked from network); 3 Oct 2008 13:57:11 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,MISSING_HEADERS autolearn=no version=3.2.5 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 3 Oct 2008 13:57:11 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 3837 invoked from network); 3 Oct 2008 13:56:50 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 3 Oct 2008 13:56:50 -0000 Received: (qmail 7040 invoked by alias); 3 Oct 2008 13:56:33 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 25805 Received: (qmail 7008 invoked from network); 3 Oct 2008 13:56:28 -0000 Received: from bifrost.dotsrc.org (130.225.254.106) by sunsite.dk with SMTP; 3 Oct 2008 13:56:28 -0000 Received: from cluster-d.mailcontrol.com (cluster-d.mailcontrol.com [217.69.20.190]) by bifrost.dotsrc.org (Postfix) with ESMTPS id BE07380308BA for ; Fri, 3 Oct 2008 15:56:22 +0200 (CEST) Received: from cameurexb01.EUROPE.ROOT.PRI ([193.128.72.68]) by rly21d.srv.mailcontrol.com (MailControl) with ESMTP id m93DuDJK026744 for ; Fri, 3 Oct 2008 14:56:21 +0100 Received: from news01 ([10.103.143.38]) by cameurexb01.EUROPE.ROOT.PRI with Microsoft SMTPSVC(6.0.3790.3959); Fri, 3 Oct 2008 14:56:14 +0100 Date: Fri, 3 Oct 2008 14:56:14 +0100 From: Peter Stephenson Cc: zsh-workers@sunsite.dk (Zsh hackers list) Subject: Re: Shell argument splitting behaviour Message-ID: <20081003145614.14d78501@news01> In-Reply-To: <571.1222866122@csr.com> References: <571.1222866122@csr.com> Organization: CSR X-Mailer: Claws Mail 3.5.0 (GTK+ 2.12.8; i386-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/fbcsAbuymvK733Ijcdq0/x2" X-OriginalArrivalTime: 03 Oct 2008 13:56:14.0083 (UTC) FILETIME=[CC8F3D30:01C9255F] X-Scanned-By: MailControl A-08-50-15 (www.mailcontrol.com) on 10.68.0.131 X-Virus-Scanned: ClamAV 0.92.1/8372/Thu Oct 2 17:21:47 2008 on bifrost X-Virus-Status: Clean --MP_/fbcsAbuymvK733Ijcdq0/x2 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wed, 01 Oct 2008 14:02:02 +0100 Peter Stephenson wrote: > What I was trying to do was use this to get lisp-like lists of > arguments (since after the first word parentheses have to be balanced), > but I can get that to work just by putting a dummy word in front, so > it's actually not a major concern. In case there's any interest, here's what I came up with for my own use. The list-word function handle list-style trees showing what can follow what. It's essentially yet another way of doing argument handling, optimised for another different case. The _dynamic_directory_name for my own use shows roughly how to use this; it completes colon-separated parts as in ~[p1:u:main]. -- Peter Stephenson Software Engineer CSR PLC, Churchill House, Cambridge Business Park, Cowley Road Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070 --MP_/fbcsAbuymvK733Ijcdq0/x2 Content-Type: application/octet-stream; name=list_word Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=list_word I2F1dG9sb2FkCiMKIyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBs aXN0IG9mIHdvcmRzIHRoYXQgYXJlIGFsbG93ZWQKIyBhdCBlYWNoIHBvaW50IGluIGFuIG9yZGVy ZWQgbGlzdCBvZiB3b3JkcyB3aGVyZSB0aGUgbmV4dCB3b3JkIGRlcGVuZHMgb24KIyB0aGUgcHJl dmlvdXMgb25lLCBnaXZlbiBhIGxpc3Atc3R5bGUgaW5wdXQgYW5kIHRoZSB3b3JkcyBzbyBmYXIu ICBGb3IKIyBleGFtcGxlLCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgbWF5IGJlICJvbmUiICJ0d28i IG9yICJ0aHJlZSIsIGJ1dCAib25lIgojIGlzIGFsd2F5cyBmb2xsb3dlZCBieSB0aGUgc2Vjb25k IGFyZ3VtZW50ICJlaW5zIiwgYW5kIGxpa2V3aXNlICJ0d28iIGJ5CiMgInp3ZWkiIGFuZCAidGhy ZWUiIGJ5ICJkcmVpIiwgdGhpcyBmdW5jdGlvbiB3aWxsIGxpc3QgdGhlIHBvc3NpYmlsaXRpZXMK IyBhdCBlYWNoIHN0ZXAuICAoU2VlIHRoZSBzZWNvbmQgYW5kIHRoaXJkIG9mIHRoZSAiRXhhbXBs ZXMiIGJlbG93IGZvciBob3cKIyB0aGlzIHBhcnRpY3VsYXIgZXhhbXBsZSB3b3Jrcy4pCiMKIyBJ bnB1dDoKIyAgIC0gYSBsaXNwLWxpa2UgdHJlZSBzdHJ1Y3R1cmUgYXMgYSBzaW5nbGUgc3RyaW5n LiAgVGhlIG91dGVybW9zdAojICAgICBsaXN0LCB3aGljaCBpbmNsdWRlcyB0aGUgZW50aXJlIHRy ZWUsIGNvbnRhaW5zIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEKIyAgICAgc2V0IG9mIHdvcmRzLiAg VGhlIHNwZWNpZmljYXRpb24gZm9yIGVhY2ggd29yZCBpcyBhbHNvIGEgbGlzdCB0aGF0CiMgICAg IG1heSBjb25zaXN0IG9mIG9uZSBvciB0d28gZWxlbWVudHMuICBUaGUgZmlyc3QgZWxlbWVudCBp cyB0aGUgd29yZAojICAgICBpdHNlbGY7IHRoZSBvcHRpb25hbCBzZWNvbmQgZWxlbWVudCBpcyBh IHJlY3Vyc2l2ZSBsaXN0IGluIHRoZSBzYW1lCiMgICAgIGZvcm1hdCBhcyB0aGUgb3V0ZXJtb3N0 IGxpc3QgdGhhdCBzcGVjaWZpZXMgd29yZHMgdGhhdCBtYXkgZm9sbG93LgojCiMgICAtIFRoZSBt YWluIHRyZWUgc3RydWN0dXJlIG1heSBvcHRpb25hbGx5IGJlIHByZWNlZGVkIGJ5IGEgbnVtYmVy IG9mIG5hbWVkCiMgICAgIHRyZWVzLCBpbiB0aGUgZm9ybSAibmFtZS06dHJlZSIsIHdoZXJlIHRy ZWUgaGFzIHRoZSBpZGVudGljYWwgZm9ybQojICAgICB0byB0aGUgbWFpbiB0cmVlIChzbyBpcyBz dXJyb3VuZGVkIGJ5IHBhcmVudGhlc2VzKS4gIFRoZXNlCiMgICAgIG1heSBhcHBlYXIgd2hlbmV2 ZXIgYSBzdWJ0cmVlLCBpLmUuIGxpc3QgZGVzY3JpYmluZyBmb2xsb3dpbmcgd29yZHMsCiMgICAg IG1heSBhcHBlYXIgaW4gdGhlIGNvZGUsIGZvciBleGFtcGxlIHRoZSBzaW5nbGUgYXJndW1lbnQK IyAgICAgICAoKG9uZSAoKGVpbnMpKSkgKHR3byAoKHp3ZWkpIChkb3MpIChkdW8pKSkpCiMgICAg IGFuZCB0aGUgdHdvIGFyZ3VtZW50cwojICAgICAgIHR3b2FyZy06KCh6d2VpKSAoZG9zKSAoZHVv KSkKIyAgICAgICAoKG9uZSAoKGVpbnMpKSkgKHR3byAtOnR3b2FyZykpCiMgICAgIGFyZSBlcXVp dmFsZW50LiAgUmVjdXJzaXZlIHVzZSBvZiBuYW1lZCBzdWJ0cmVlcyBpcyBwb3NzaWJsZSwgc28K IyAgICAgICBBLTooKEEgLTpCKSkKIyAgICAgICBCLTooKEIgLTpBKSkKIyAgICAgICAoKEEgLTpC KSkKIyAgICAgZGVzY3JpYmVzIGFueSBudW1iZXIgb2YgYWx0ZXJuYXRpbmcgd29yZHMgQSBCIEEg Li4uCiMKIyAgIC0gd29yZHMgbWF0Y2hlZCBzbyBmYXIgYXMgc2VwYXJhdGUgYXJndW1lbnRzLgoj CiMgT3V0cHV0OgojICAgc2V0cyByZXBseSB0byB0aGUgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMg dGhhdCBjYW4gY29tZSBuZXh0IGFuZCByZXR1cm4KIyAgIHplcm8uICBJZiBubyBtYXRjaCwgb3Ig dHdvIG1hbnkgYXJndW1lbnRzLCByZXR1cm4gMS4KIwojICAgUmV0dXJucyBzdGF0dXMgMiBpZgoj ICAgLSBhbiBhcmd1bWVudCBiZWZvcmUgdGhlIGZpcnN0IHN1cnJvdW5kZWQgYnkgcGFyZW50aGVz ZXMgZGlkIG5vdAojICAgICBmaXQgdGhlIGZvcm0gKictOignKicpJwojICAgLSBubyBhcmd1bWVu dCBtYXRjaGVkIHRoZSBmb3JtICcoJyonKScKIyAgIC0gYSBsaXN0IGRlc2NyaWJpbmcgYSBzaW5n bGUgd29yZCBhbmQgKG9wdGlvbmFsbHkpIGl0cyBmb2xsb3dpbmcgd29yZAojICAgICBoYWQgbW9y ZSB0aGFuIHR3byBlbGVtZW50cwojICAgLSBpZiBzdWNoIGEgbGlzdCBoYWQgdGhlIGZvcm0gKHdv cmQgLTpuYW1lKSwgbm8gcHJlZGVmaW5lZCBzdWJsaXN0CiMgICAgIGZvciBuYW1lIGV4aXN0ZWQu CiMKIyBGdXJ0aGVyIG5vdGVzIG9uIGxpc3QgZm9ybWF0OgojICAgT3JkaW5hcnkgc2hlbGwgcXVv dGluZyBtYXkgYmUgYXBwbGllZCB0byBpbmRpdmlkdWFsIGVsZW1lbnRzIGFuZCB3aWxsCiMgICBi ZSBzdHJpcHBlZCBmb3IgY29tcGFyaXNvbnMgYW5kIGluIHRoZSByZXR1cm5lZCBhcnJheS4gIE5v IHNoZWxsCiMgICBleHBhbnNpb24gaXMgcGVyZm9ybWVkLiAgSWYgaW4gZG91YnQsIGNoYXJhY3Rl cnMgc2hvdWxkIGJlIHF1b3RlZAojICAgc2luY2UgdGhlIGxpc3QgaXMgcGFyc2VkIGJ5IHNoZWxs IHdvcmQgc3BsaXR0aW5nIGluIHdoaWNoIGNlcnRhaW4KIyAgIGNoYXJhY3RlcnMgKHN1Y2ggYXMg IjwiIGFuZCAiPiIpIGFyZSBwcm9jZXNzZWQgYXMgc2VwYXJhdGUgd29yZHMKIyAgIHdoZW4gdW5x dW90ZWQuICBRdW90aW5nIGFsc28gZXNjYXBlcyBvdGhlciBhY3RpdmUgZm9ybXMsIGluY2x1ZGlu ZwojICAgIi06IiBkZXNjcmliZWQgYmVsb3cuICBOb3RlIHRoYXQgdGhlIHF1b3RlcyBoZXJlIGFy ZSBhZGRpdGlvbmFsCiMgICB0byBhbnkgcXVvdGVzIG5lZWQgdG8gcHJvdGVjdCB0aGUgYXJndW1l bnQgdG8gdGhlIGZ1bmN0aW9uIGZyb20KIyAgIGltbWVkaWF0ZSBzaGVsbCBleHBhbnNpb24uCiMK IyAgIFdvcmRzIG1hdGNoZWQgc28gZmFyIChpLmUuIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24g YWZ0ZXIgdGhlCiMgICB0b3AtbGV2ZWwgbGlzdCkgYXJlIG5vdCBzdWJqZWN0IHRvIGZ1cnRoZXIg cXVvdGUgcHJvY2Vzc2luZy4KIwojICAgVGhlIG5hbWVkIHRyZWVzIG1heSBiZSB1c2VkIGFzIHBh cnQgb2YgbGlzdHMgb2Ygd29yZHMgKGFzIHdlbGwKIyAgIGFzIGluIHRoZSBzZWNvbmQgZWxlbWVu dCBvZiB3b3JkIHNwZWNpZmljYXRpb25zKS4gIEluIHRoaXMgY2FzZSwKIyAgIG9uZSBsZXZlbCBv ZiBwYXJlbnRoZXNlcyB3aWxsIGJlIHJlbW92ZWQgYW5kIHRoZSByZXN1bHQgdXNlZAojICAgYXMg aWYgaXQgd2VyZSBhIGxpc3Qgb2Ygd29yZCBzcGVjaWZpY2F0aW9ucy4gIEhlbmNlIHRoZSBhcmd1 bWVudHM6CiMgICAgIGV4dHJhLTooKG1vcmUxKSAobW9yZTIpIChtb3JlMykpCiMgICAgICgoc29t ZTEpIChzb21lMikgKHNvbWUzKSAtOmV4dHJhKQojICAgYmVoYXZlIGFzIGlmIGFsbCBzaXggd29y ZHMgd2VyZSBnaXZlbiBhcyB0b3AtbGV2ZWwgcG9zc2liaWxpdGllcy4KIyAgIEFzIGFuIGV4YW1w bGUgdG8gZGlzdGluZ3Vpc2ggdGhlIHR3byB1c2VzLCB0aGUgZm9sbG93aW5nOgojICAgICBleHRy YS06KChtb3JlMSkgKG1vcmUyKSAobW9yZTMpKQojICAgICAoKHNvbWUxIC06ZXh0cmEpIChzb21l MikgKHNvbWUzKSAtOmV4dHJhKQojICAgaGFzIHRoZSBzYW1lIGVmZmVjdCBhdCB0aGUgdG9wIGxl dmVsLCBidXQgdGhlIGZpcnN0IHdvcmQgInNvbWUxIgojICAgY2FuIGFsc28gYmUgZm9sbG93ZWQg YnkgdGhlIHRocmVlIHdvcmRzIGRlZmluZWQgYnkgLTpleHRyYS4KIwojIEV4YW1wbGVzOgojICAg VGhlIHNpbXBsZXN0IGNhc2U6CiMgICAgICIoKG9uZSkgKHR3bykgKHRocmVlKSkiCiMgICBzZXRz IHJlcGx5IHRvIHRoZSB0aHJlZSBlbGVtZW50cyBvbmUsIHR3byB0aHJlZS4KIwojICAgICAiKChv bmUgKChlaW5zKSkpICh0d28gKCh6d2VpKSkpICh0aHJlZSAoKGRyZWkpKSkpIgojICAgdGhlIHNh bWUKIwojICAgICAiKChvbmUgKChlaW5zKSkpICh0d28gKCh6d2VpKSkpICh0aHJlZSAoKGRyZWkp KSkpIiB0d28KIyAgIHNldHMgcmVwbHkgdG8gdGhlIHNpbmdsZSBlbGVtZW50IHp3ZWkKIwojICAg ICAiKChvbmUgKChlaW5zKSkpICh0d28gKCh6d2VpKSAoZG9zKSAoZHVvKSkpICh0aHJlZSAoKGRy ZWkpKSkpIiB0d28KIyAgIHNldHMgcmVwbHkgdG8gdGhlIGFycmF5IGNvbnNpc3Rpbmcgb2Ygendl aSwgZG9zLCBkdW8uCiMKIyBOb3RlczoKIyAgIE5vdGUgdGhhdCBwYXJlbnRoZXNlcyBoYXZlIHR3 byBkaWZmZXJlbnQgdGFza3MsIGhlbmNlIHRoZSBwcm9saWZlcmF0aW5nCiMgICBsZXZlbHMuICBU aGUgb3V0ZXJtb3N0IHBhcmVudGhlc2VzIGFuZCBhbHRlcm5hdGUgbGV2ZWxzIGdvaW5nIGlud2Fy ZAojICAgZW5jbG9zZSBsaXN0cyBvZiBwb3NzaWJsZSB2YWx1ZXMgYXQgYSBwYXJ0aWN1bGFyIGRl cHRoLCBhbmQgdGhlcmUgY2FuCiMgICBiZSBhcyBtYW55IGVsZW1lbnRzIGFzIG5lY2Vzc2FyeSB3 aXRoaW4gZWFjaCBsZXZlbC4gIFRoZQojICAgc2Vjb25kLWZyb20tb3V0ZXJtb3N0IHBhcmVudGhl c2VzIGFuZCBhbHRlcm5hdGUgbGV2ZWxzIGRlc2NyaWJlCiMgICBhIHNpbmdsZSBhcmd1bWVudCBh dCB0aGUgY3VycmVudCBsZXZlbCwgdG9nZXRoZXIgd2l0aCBhbiBvcHRpb25hbAojICAgc3BlY2lm aWNhdGlvbiBmb3IgdGhvc2UgdGhhdCBtYXkgZm9sbG93LgojCiMgICBUaGUgaW5uZXJtb3N0IGxl dmVsKHMpIG9mIHBhcmVudGhlc2VzIGFyb3VuZCBhIHNpbmdsZSBhcmd1bWVudAojICAgbWF5IGJl IG1pc3NlZCBvdXQ7IGhvd2V2ZXIsIHRoaXMgbWFrZXMgaXQgbW9yZSBjb25mdXNpbmcgd2hlbgoj ICAgYXR0ZW1wdGluZyB0byBhZGQgbmV3IGxldmVscy4KIwojICAgVW5xdW90ZWQgcGFyZW50aGVz ZXMgYW5kIHdoaXRlc3BhY2UgYXJlIGFsd2F5cyBzaWduaWZpY2FudDsgdXNlIHF1b3RlcwojICAg d2hlcmUgbmVjZXNzYXJ5LgojCiMgICBUaGUgY29kZSBpcyBub3QgdG9sZXJhbnQgdG8gZXJyb3Jz IGluIHBhcmVudGhlc2VzLiAgVXNlIG5hbWVkCiMgICBzdWJ0cmVlcyB0byBjbGFyaWZ5IHN0cnVj dHVyZS4KCmxpc3Rfd29yZF9leHBhbmRfdHJlZSgpIHsKICAjIHdvcmsgYXJvdW5kIHRoZSBmYWN0 IHRoYXQgIigiIGlzIGEga2V5d29yZCBpZiBpdCBhcHBlYXJzIGZpcnN0CiAgbG9jYWwgcGFyYW09 JDEgdG1wdHJlZT0iOiAkMiIKICBzZXQgLUEgJHBhcmFtICR7KHopdG1wdHJlZX0KICBzaGlmdCAk cGFyYW0KfQoKbGlzdF93b3JkKCkgewogIGVtdWxhdGUgLUwgenNoCiAgc2V0b3B0IGV4dGVuZGVk Z2xvYgoKICBsb2NhbCAtYSBtYXRjaCBtYmVnaW4gbWVuZAogIHR5cGVzZXQgLUEgc3VibGlzdHMK ICB3aGlsZSBbWyAkMSA9ICgjYikoKiknLTonKFwoKlwpKSBdXTsgZG8KICAgIHN1Ymxpc3RzWyRt YXRjaFsxXV09JG1hdGNoWzJdCiAgICBzaGlmdAogIGRvbmUKCiAgW1sgJCMgLWd0IDAgJiYgJDEg PSBcKCpcKSBdXSB8fCByZXR1cm4gMgoKICBsb2NhbCB0cmVlPSQxIGVsdCBuZXh0dHJlZQogIGxv Y2FsIC1hIGF0cmVlIHN1YnRyZWUgc3Vic3RzCiAgbG9jYWwgLUEgc2VlbgogIHNoaWZ0CgogIHdo aWxlIFtbICQjIC1ndCAwICYmICR7I3RyZWV9IC1uZSAwIF1dOyBkbwogICAgaWYgW1sgJHRyZWUg PSBcKCpcKSBdXTsgdGhlbgogICAgICAjIGF0IHRoaXMgbGV2ZWwgdGhpcyBtdXN0IGJlIGEgc2lu Z2xlIGFyZ3VtZW50CiAgICAgIHRyZWU9JHRyZWVbMiwtMl0KICAgIGZpCiAgICBsaXN0X3dvcmRf ZXhwYW5kX3RyZWUgYXRyZWUgJHRyZWUKICAgICMgbG9vcCBvdmVyIGFkZGl0aW9uYWwgc3Vic3Rp dHV0aW9ucwogICAgIyBtYXJraW5nIG9uZXMgd2UndmUgZG9uZSBpbiBzZWVuCiAgICBzZWVuPSgp CiAgICB3aGlsZSB0cnVlOyBkbwogICAgICBmb3IgZWx0IGluICRhdHJlZTsgZG8KCWlmIFtbICRl bHQgPSBcKCpcKSBdXTsgdGhlbgoJICBlbHQ9JGVsdFsyLC0yXQoJICBsaXN0X3dvcmRfZXhwYW5k X3RyZWUgc3VidHJlZSAkZWx0CgkgIGVsdD0keyhRKXN1YnRyZWVbMV19CgkgIGlmICgoICR7I3N1 YnRyZWV9ID4gMiApKTsgdGhlbgoJICAgIHJldHVybiAyCgkgIGZpCgkgIGlmIFtbICRzdWJ0cmVl WzJdID0gIi06IiogXV0KCSAgICB0aGVuCgkgICAgbmV4dHRyZWU9JHN1Ymxpc3RzWyR7c3VidHJl ZVsyXVszLC0xXX1dCgkgICAgW1sgLXogJG5leHR0cmVlIF1dICYmIHJldHVybiAyCgkgIGVsc2UK CSAgICBuZXh0dHJlZT0kc3VidHJlZVsyXQoJICBmaQoJZWxpZiBbWyAkZWx0ID0gIi06IiogXV07 IHRoZW4KCSAgZWx0PSR7KFEpZWx0WzMsLTFdfQoJICBpZiBbWyAteiAke3NlZW5bJGVsdF19IF1d OyB0aGVuCgkgICAgW1sgLXogJHN1Ymxpc3RzWyRlbHRdIF1dICYmIHJldHVybiAyCgkgICAgc2Vl blskZWx0XT0xCgkgICAgc3Vic3RzKz0oJGVsdCkKCSAgICBjb250aW51ZQoJICBmaQoJZWxzZQoJ ICBlbHQ9JHsoUSllbHR9CgkgIG5leHR0cmVlPQoJZmkKCWlmIFtbICRlbHQgPSAkMSBdXTsgdGhl bgoJICAjIG1hdGNoZWQgYXQgdGhpcyBsZXZlbCwgZGl2ZSBkZWVwZXIgdG8gdGhlIG5leHQgbGV2 ZWwKCSAgc2hpZnQKCSAgdHJlZT0kbmV4dHRyZWUKCSAgY29udGludWUgMwoJZmkKICAgICAgZG9u ZQogICAgICAjIFByb2Nlc3MgYWRkaXRpb25hbCAtOnN0dWZmIHdlIG1heSBoYXZlIHBpY2tlZCB1 cC4KICAgICAgKCggJHsjc3Vic3RzfSApKSB8fCBicmVhawogICAgICBhdHJlZT0oKQogICAgICBm b3IgZWx0IGluICRzdWJzdHM7IGRvCgkjIFN0cmlwIG9uZSBsZXZlbCBvZiBwYXJlbnRoZXNlcy4K CWVsdD0keyR7c3VibGlzdHNbJGVsdF19WzIsLTJdfQoJIyBBZGQgdGhpcyB0byB0aGUgY3VycmVu dCBsZXZlbCBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgoJbGlzdF93b3JkX2V4cGFuZF90cmVlIHN1 YnRyZWUgJGVsdAoJYXRyZWUrPSgkc3VidHJlZSkKICAgICAgZG9uZQogICAgICBzdWJzdHM9KCkK ICAgIGRvbmUKICAgIHJldHVybiAxCiAgZG9uZQoKICBpZiBbWyAkIyAtZXEgMCAmJiAkeyN0cmVl fSAtbmUgMCBdXTsgdGhlbgogICAgaWYgW1sgJHRyZWUgPSBcKCpcKSBdXTsgdGhlbgogICAgICAj IGF0IHRoaXMgbGV2ZWwgdGhpcyBtdXN0IGJlIGEgc2luZ2xlIGFyZ3VtZW50CiAgICAgIHRyZWU9 JHRyZWVbMiwtMl0KICAgIGZpCiAgICBsaXN0X3dvcmRfZXhwYW5kX3RyZWUgYXRyZWUgJHRyZWUK ICAgIHR5cGVzZXQgLWdhIHJlcGx5CiAgICByZXBseT0oKQogICAgc2Vlbj0oKQogICAgd2hpbGUg dHJ1ZTsgZG8KICAgICAgZm9yIGVsdCBpbiAkYXRyZWU7IGRvCglpZiBbWyAkZWx0ID0gXCgqXCkg XV07IHRoZW4KCSAgZWx0PSRlbHRbMiwtMl0KCSAgbGlzdF93b3JkX2V4cGFuZF90cmVlIHN1YnRy ZWUgJGVsdAoJICByZXBseSs9KCR7KFEpc3VidHJlZVsxXX0pCgllbGlmIFtbICRlbHQgPSAiLToi KiBdXTsgdGhlbgoJICBlbHQ9JHsoUSllbHRbMywtMV19CgkgIGlmIFtbIC16ICR7c2VlblskZWx0 XX0gXV07IHRoZW4KCSAgICBbWyAteiAkc3VibGlzdHNbJGVsdF0gXV0gJiYgcmV0dXJuIDIKCSAg ICBzZWVuWyRlbHRdPTEKCSAgICBzdWJzdHMrPSgkZWx0KQoJICAgIGNvbnRpbnVlCgkgIGZpCgll bHNlCgkgIHJlcGx5Kz0oJHsoUSllbHR9KQoJZmkKICAgICAgZG9uZQogICAgICAjIFByb2Nlc3Mg YWRkaXRpb25hbCAtOnN0dWZmIHdlIG1heSBoYXZlIHBpY2tlZCB1cC4KICAgICAgKCggJHsjc3Vi c3RzfSApKSB8fCBicmVhawogICAgICBhdHJlZT0oKQogICAgICBmb3IgZWx0IGluICRzdWJzdHM7 IGRvCgkjIFN0cmlwIG9uZSBsZXZlbCBvZiBwYXJlbnRoZXNlcy4KCWVsdD0keyR7c3VibGlzdHNb JGVsdF19WzIsLTJdfQoJIyBBZGQgdGhpcyB0byB0aGUgY3VycmVudCBsZXZlbCBmb3IgZnVydGhl ciBwcm9jZXNzaW5nLgoJbGlzdF93b3JkX2V4cGFuZF90cmVlIHN1YnRyZWUgJGVsdAoJYXRyZWUr PSgkc3VidHJlZSkKICAgICAgZG9uZQogICAgICBzdWJzdHM9KCkKICAgIGRvbmUKICAgIHJldHVy biAwCiAgZWxzZQogICAgcmV0dXJuIDEKICBmaQp9CgpsaXN0X3dvcmQgIiRAIgo= --MP_/fbcsAbuymvK733Ijcdq0/x2 Content-Type: application/octet-stream; name=_dynamic_directory_name Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=_dynamic_directory_name I2F1dG9sb2FkCgpsb2NhbCBleHBsIFNFUENIQVIKbG9jYWwgLWEgZGlycyBwYXJ0cyByZXBseQoK IyBDb25maWd1cmFibGUgYml0ClNFUENIQVI9OgpkaXJzPSgKICAidXdiLTooKG1haW4pIChwPWJ1 ZmZlcjMyKSkiCiAgImRvdDExLTooKG1haW4pICh2NC4wKSAodjUuMCkpIgogICJwcm9qLTooKHUg LTp1d2IpICgxMSAtOmRvdDExKSkiCiAgIigocDEgLTpwcm9qKSAtOnByb2opIgopCiMgRW5kIGNv bmZpZwoKbG9jYWwgLWEgcGFydHMKCmlmIFtbICRQUkVGSVggPSAqJHtTRVBDSEFSfVteJHtTRVBD SEFSfV0jIF1dOyB0aGVuCiAgaWYgW1sgJFNFUENIQVIgPSAuIF1dOyB0aGVuCiAgICBldmFsIHBh cnRzPVwoXCJcJHtcKEBzOiR7U0VQQ0hBUn06XClQUkVGSVh9XCJcKQogIGVsc2UKICAgIGV2YWwg cGFydHM9XChcIlwke1woQHMuJHtTRVBDSEFSfS5cKVBSRUZJWH1cIlwpCiAgZmkKICBwYXJ0cz0o IiR7KEApcGFydHNbMSwtMl19IikKICBjb21wc2V0IC1QICIqJFNFUENIQVIiCiMgZWxzZSBsZWF2 ZSBwYXJ0cyBlbXB0eSBhbmQgUFJFRklYIGFzIHdoYXRldmVyCmZpCgphdXRvbG9hZCAtVXogbGlz dF93b3JkCmxpc3Rfd29yZCAkZGlycyAiJHsoQClwYXJ0c30iCgpfd2FudGVkIG5hbWVwYXJ0IGV4 cGwgIk5hbWUgcGFydCIgY29tcGFkZCAtUyddJyAtciAiJFNFUENIQVIiIC0tICRyZXBseQo= --MP_/fbcsAbuymvK733Ijcdq0/x2--