From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/51910 Path: news.gmane.org!not-for-mail From: Aditya Mahajan Newsgroups: gmane.comp.tex.context Subject: Re: t-vim: inline typing? Date: Mon, 20 Jul 2009 11:34:32 -0400 (EDT) Message-ID: References: Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1808475687-1248104073=:15108" X-Trace: ger.gmane.org 1248104170 6344 80.91.229.12 (20 Jul 2009 15:36:10 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 20 Jul 2009 15:36:10 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Mon Jul 20 17:36:03 2009 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by lo.gmane.org with esmtp (Exim 4.50) id 1MSuuF-0006LN-AD for gctc-ntg-context-518@m.gmane.org; Mon, 20 Jul 2009 17:35:59 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 3DAFC1FBC1; Mon, 20 Jul 2009 17:35:53 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 27149-02-5; Mon, 20 Jul 2009 17:35:13 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 03CD71FB5B; Mon, 20 Jul 2009 17:35:12 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 399EE1FB5B for ; Mon, 20 Jul 2009 17:35:11 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 24575-05-3 for ; Mon, 20 Jul 2009 17:35:03 +0200 (CEST) Original-Received: from filter4-nij.mf.surf.net (filter4-nij.mf.surf.net [195.169.124.155]) by ronja.ntg.nl (Postfix) with ESMTP id E5E621FB39 for ; Mon, 20 Jul 2009 17:35:02 +0200 (CEST) Original-Received: from hellskitchen.mr.itd.umich.edu (smtp.mail.umich.edu [141.211.14.82]) by filter4-nij.mf.surf.net (8.13.8/8.13.8/Debian-3) with ESMTP id n6KFYstl021295 for ; Mon, 20 Jul 2009 17:34:56 +0200 Original-Received: FROM [192.168.2.8] (c-71-192-164-42.hsd1.ct.comcast.net [71.192.164.42]) By hellskitchen.mr.itd.umich.edu ID 4A648E9D.1C52D.19756 ; Authuser adityam; 20 Jul 2009 11:34:53 EDT In-Reply-To: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN) X-CanIt-Geo: ip=141.211.14.82; country=US; region=MI; city=Ann Arbor; postalcode=48109; latitude=42.2923; longitude=-83.7145; metrocode=505; areacode=734; http://maps.google.com/maps?q=42.2923,-83.7145&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 263496323 - becb8fdd491c - 20090720 X-Scanned-By: CanIt (www . roaringpenguin . com) on 195.169.124.155 X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.11 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:51910 Archived-At: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1808475687-1248104073=:15108 Content-Type: TEXT/PLAIN; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Mon, 20 Jul 2009, Peter M=FCnster wrote: > Hello, > > Is it possible somehow, to get inline syntax highlighting (as with > \type{...})? Attached is an ugly solution. I haven't tested it too much. Usage example \usemodule[vim] \setupwhitespace[big] \setupcolors[state=3Dstart] \definevimtyping[C][syntax=3Dc] \starttext We can always type code in display mode \startC #include \stopC But more interestingly, we can now type code in inline mode also. For example to print something we use \startinlineC printf("%d", num); \stopinlineC and we can continue typing. \stoptext It should be possible to also define \typeC{...}, but then I will need to= =20 read up how to read code in verbatim and write it to a file. Aditya --8323328-1808475687-1248104073=:15108 Content-Type: TEXT/x-tex; name=t-vim.tex Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=t-vim.tex JU0gXGxvZ28gW1ZJTV0ge1ZJTX0gJSBOZWVkZWQgZm9yIHRoZSB0aXRsZQ0K DQolRCBcbW9kdWxlDQolRCAgIFsgICAgICBmaWxlPXQtdmltLA0KJUQgICAg ICAgIHZlcnNpb249MjAwOC4wNy4xNSwNCiVEICAgICAgICAgIHRpdGxlPVxW SU1cIHRvIFxDT05URVhULA0KJUQgICAgICAgc3VidGl0bGU9VXNlIFxWSU1c IHRvIGdlbmVyYXRlIGNvZGUgbGlzdGluZywNCiVEICAgICAgICAgYXV0aG9y PU1vamNhIE1pa2xhdmVjIFwmIEFkaXR5YSBNYWhhamFuLA0KJUQgICAgICAg ICAgZW1haWw9YWRpdHlhbSBhdCB1bWljaCBkb3QgZWR1LA0KJUQgICAgICAg ICAgIGRhdGU9XGN1cnJlbnRkYXRlLA0KJUQgICAgICBjb3B5cmlnaHQ9UHVi bGljIERvbWFpbl0NCg0KJU0NCiVNIFx1c2Vtb2R1bGUgW3ZpbV0NCiVNIFx1 c2Vtb2R1bGVbaW50LWxvYWRdDQolTSBcbG9hZHNldHVwc1t0LXZpbS54bWxd DQolTSBcdXNldHlwZXNjcmlwdFttb2Rlcm4tYmFzZV1bdGV4bmFuc2ldIFxz ZXR1cGJvZHlmb250W21vZGVybl0NCiVNIFxzZXR1cHR5cGluZ1tvcHRpb249 Y29sb3JdDQolTSBcc2V0dXBjb2xvcnNbc3RhdGU9c3RhcnRdDQoNCiVEIFxz ZWN0aW9uICAge1VzZXIgTWFudWFsfQ0KJUQNCiVEIFxDT05URVhUXCBoYXMg YW4gZXhjZWxsZW50IHByZXR0eSBwcmludGluZyBjYXBhYmlsaXRpZXMgZm9y IG1hbnkgbGFuZ3VhZ2VzLg0KJUQgVGhlIGNvZGUgZm9yIHByZXR0eSBwcmlu dGluZyBpcyB3cml0dGVuIGluIFxURVgsIGFuZCBkdWUgdG8gY2F0Y29kZQ0K JUQganVnZ2xlcnkgdmVyYmF0aW0gdHlwZXNldHRpbmcgaXMgcGVyaGFwcyB0 aGUgdHJpY2tpZXN0IHBhcnQgb2YgXFRFWC4gVGhpcw0KJUQgbWFrZXMgaXQg ZGlmZmljdWx0IGZvciBhIFxxdW90YXRpb257bm9ybWFsfSB1c2VyIHRvIGRl ZmluZSBzeW50YXgNCiVEIGhpZ2hsaWdodGluZyBydWxlcyBmb3IgYSBuZXcg bGFuZ3VhZ2UuIFRoaXMgbW9kdWxlLCB0YWtlcyB0aGUgb251cyBvZg0KJUQg ZGVmaW5pbmcgc3ludGF4IGhpZ2hsaWdodGluZyBydWxlcyBhd2F5IGZyb20g dGhlIHVzZXIgYW5kIHVzZXMgXFZJTVwgZWRpdG9yDQolRCB0byBnZW5lcmF0 ZSB0aGUgc3ludGF4IGhpZ2hsaWdodGluZy4gIFRoZXJlIGlzIGEgaGVscGVy DQolRCBcZmlsZW5hbWV7MmNvbnRleHQudmltfSBzY3JpcHQgdG8gZG8gdGhl IHN5bnRheCBwYXJzaW5nIGluIFxWSU0uIFRoaXMgaXMgYQ0KJUQgc3RvcHwt fGdhcCBtZXRob2QsIGFuZCBob3BlZnVsbHkgd2l0aCBcTFVBVEVYLCB0aGlu Z3Mgd2lsbCBiZSBtdWNoIGVhc2llci4gDQolRA0KJUQgVGhlIG1haW4gbWFj cm8gb2YgdGhpcyBtb2R1bGUgaXMgXHR5cGV7XGRlZmluZXZpbXR5cGluZ30u IFRoZSBiZXN0IHdheSB0bw0KJUQgZXhwbGFpbiBpdCBpcyBieSB1c2luZyBh biBleGFtcGxlLiBTdXBwb3NlIHlvdSB3YW50IHRvIHByZXR0eSBwcmludCBy dWJ5DQolRCBjb2RlIGluIFxDT05URVhULiBTbyB5b3UgY2FuIGRvDQolRCBc c3RhcnR0eXBpbmcNCiVEIFxkZWZpbmV2aW10eXBpbmcgW1JVQlldICBbc3lu dGF4PXJ1YnldDQolRCBcc3RvcHR5cGluZw0KJUQgYWZ0ZXIgd2hpY2ggeW91 IGNhbiBnZXQgcnVieSBoaWdobGlnaHRpbmcgYnkNCiVEIFxzdGFydHR5cGlu Zw0KJUQgXHN0YXJ0UlVCWQ0KJUQgLi4uLg0KJUQgXHN0b3BSVUJZDQolRCBc c3RvcHR5cGluZw0KJUQNCiVEIEZvciBleGFtcGxlDQolRCBcc3RhcnRidWZm ZXINCiVEIFxkZWZpbmV2aW10eXBpbmcgW1JVQlldIFtzeW50YXg9cnVieV0N CiVEDQolRCBcc3RhcnRSVUJZDQolRCAjISAvdXNyL2Jpbi9ydWJ5DQolRCAj IFRoaXMgaXMgbXkgZmlyc3QgcnVieSBwcm9ncmFtDQolRCBwdXRzICJIZWxs byBXb3JsZCINCiVEIFxzdG9wUlVCWQ0KJUQgXHN0b3BidWZmZXINCiVEIHtc Z2V0YnVmZmVyfQ0KJUQgVGhpcyB3YXMgdHlwZWQgYXMgXHR5cGVidWZmZXIN CiVEDQolRCBUaGUgdHlwaW5nIGNhbiBiZSBzZXR1cCB1c2luZyBcdHlwZXtc c2V0dXB2aW10eXBpbmd9Lg0KJUQNCiVEIFxzaG93c2V0dXB7c2V0dXB2aW10 eXBpbmd9DQolRA0KJUQgSGVyZSBcdHlwZXtzeW50YXh9IGlzIHRoZSBzeW50 YXggZmlsZSBpbiBcVklNXCBmb3IgdGhlIGxhbmd1YWdlDQolRCBoaWdobGln aHRpbmcgdGhhdCB5b3Ugd2FudC4gU2VlIFx0eXBlezpoZSBzeW50YXgudHh0 fSBpbnNpZGUgXFZJTVwgZm9yDQolRCBkZXRhaWxzLiBcdHlwZXtjb2xvcnNj aGVtZX0gcHJvdmlkZXMgdGhlIHN5bnRheCBoaWdobGlnaHRpbmcgZm9yIHZh cmlvdXMNCiVEIHJlZ2lvbnMuIFJpZ2h0IG5vdywgdHdvIGNvbG9yc2NoZW1l cyBhcmUgZGVmaW5lZC4gVGhlIFx0eXBle2RlZmF1bHR9DQolRCBjb2xvcnNj aGVtZSBpcyBiYXNlZCBvbiBvbiBcZmlsZW5hbWV7cHNfY29sb3IudmltfSBj b2xvcnNjaGVtZSBpbiBcVklNLCBhbmQNCiVEIHRoZSBcdHlwZXtibGFja2Fu ZHdoaXRlfSBjb2xvcnNjaGVtZSBpcyBiYXNlZCBvbiBcZmlsZW5hbWV7cHJp bnRfYncudmltfS4NCiVEIElmIHRoZXJlIGlzIGEgcGFydGljdWxhciBjb2xv cnNjaGVtZSB0aGF0IHlvdSB3aWxsIGxpa2UsIHlvdSBjYW4gY29udmVydCBp dA0KJUQgaW50byBcQ09OVEVYVC4gXHR5cGV7c3BhY2U9KHllc3xvbnxubyl9 IG1ha2VzIHRoZSBzcGFjZSBzaWduaWZpY2FudCwNCiVEIHZpc2libGUsIGFu ZCBpbnNpZ25pZmljYW50IHJlc3BlY3RpdmVseS4gXHR5cGV7dGFifSBzcGVj aWZpZXMgdGhlIG51bWJlciBvZg0KJUQgc3BhY2VzIGEgdGFiIGlzIGVxdWl2 YWxlbnQgdG8uIEl0J3MgZGVmYXVsdCB2YWx1ZSBpcyA4LiBcdHlwZXtzdGFy dH0gYW5kDQolRCBcdHlwZXtzdG9wfSBzcGVjaWZ5IHdoaWNoIGxpbmVzIHRv IHJlYWQgZnJvbSBhIGZpbGUuIFRoZXNlIG9wdGlvbnMgb25seQ0KJUQgbWFr ZSBzZW5zZSBmb3IgaGlnaGxpZ2h0aW5nIGZpbGVzIGFuZCBzaG91bGQgbm90 IHRvIGJlIHNldCBieQ0KJUQgXHR5cGV7XHNldHVwdmltdHlwaW5nfS4gIFx0 eXBle251bWJlcmluZ30gZW5hYmxlcyBsaW5lIG51bWJlcmluZywgYW5kDQol RCBcdHlwZXtzdGVwfSBzcGVjaWZpZXMgd2hpY2ggbGluZXMgYXJlIG51bWJl cmVkLiBcdHlwZXtudW1iZXJzdHlsZX0gYW5kDQolRCBcdHlwZXtudW1iZXJj b2xvcn0gc3BlY2lmeSB0aGUgc3R5bGUgYW5kIGNvbG9yIG9mIGxpbmUgbnVt YmVycy4gQnkNCiVEIGRlZmF1bHQgdGhlIG51bWJlcnMgYXJlIHBsYWNlZCBv biB0aGUgbGVmdC4gVGhlIGxvY2F0aW9uIG9mIHRoZSBudW1iZXJzIGNhbg0K JUQgYmUgY29uZmlndXJlZCB1c2luZyBcdHlwZXtudW1iZXJjb21tYW5kfSBv cHRpb24uDQolRA0KJUQgQSBuZXcgdHlwaW5nIHJlZ2lvbiBjYW4gYmUgZGVm aW5lIHVzaW5nIFx0eXBle1xkZWZpbmV2aW10eXBpbmd9Lg0KJUQNCiVEIFxz aG93c2V0dXB7ZGVmaW5ldmltdHlwaW5nfQ0KJUQNCiVEIE1pbm9yIGNoYW5n ZXMgaW4gc3ludGF4IGhpZ2hsaWdodGluZyBjYW4gYmUgbWFkZSBlYXNpbHku IEZvciBleGFtcGxlLCBNb2pjYQ0KJUQgbGlrZXMgXHF1b3Rle3ZvaWR9IHRv IGJlIGJvbGQgaW4gQyBwcm9ncmFtcy4gVGhpcyBjYW4gYmUgZG9uZSBhcyBm b2xsb3dzDQolRA0KJUQgXHN0YXJ0YnVmZmVyDQolRCBcZGVmaW5ldmltdHlw aW5nIFtDXSBbc3ludGF4PWMsbnVtYmVyaW5nPW9uXQ0KJUQgDQolRCBcc3Rh cnR2aW1jb2xvcnNjaGVtZVtkZWZhdWx0XQ0KJUQgDQolRCBcZGVmaW5ldmlt c3ludGF4DQolRCAgIFtUeXBlXQ0KJUQgICBbc3R5bGU9Ym9sZG1vbm9dDQol RA0KJUQgXGRlZmluZXZpbXN5bnRheA0KJUQgICBbUHJlUHJvY10NCiVEICAg W3N0eWxlPXNsYW50ZWRtb25vXQ0KJUQgDQolRCBcc3RvcHZpbWNvbG9yc2No ZW1lDQolRCANCiVEIFxzdGFydEMNCiVEICNpbmNsdWRlIDxzdGRpby5oPg0K JUQgI2luY2x1ZGUgPHN0ZGxpYi5oPg0KJUQgDQolRCB2b2lkIG1haW4oKSAN CiVEIHsNCiVEICAgIHByaW50ZigiSGVsbG8gV29ybGRcbiIpIDsNCiVEICAg IHJldHVybjsNCiVEIH0NCiVEIFxzdG9wQw0KJUQgXHN0b3BidWZmZXIgDQol RCBcdHlwZWJ1ZmZlciB3aGljaCBnaXZlcyB7XGdldGJ1ZmZlcn0NCiVEDQol RCBUaGUgc2Vjb25kIGNvbW1hbmQgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUg aXMgXHR5cGV7XGRlZmluZXR5cGV2aW1maWxlfSBmb3INCiVEIHR5cGVzZXR0 aW5nIGZpbGVzLiAgVGhlIHN5bnRheCBvZiB0aGlzIGNvbW1hbmQgaXMNCiVE DQolRCBcc2hvd3NldHVwe2RlZmluZXR5cGV2aW1maWxlfQ0KJUQNCiVEIEZv ciBleGFtcGxlLCB0byBwcmV0dHkgcHJpbnQgYSBydWJ5IGZpbGUgeW91IGNh biBkbw0KJUQgXHN0YXJ0dHlwaW5nDQolRCBcZGVmaW5ldHlwZXZpbWZpbGVb dHlwZVJVQlldIFtzeW50YXg9cnVieV0NCiVEIFxzdG9wdHlwaW5nDQolRCBh ZnRlciB3aGljaCBvbmUgY2FuIHVzZQ0KJUQgXHN0YXJ0dHlwaW5nDQolRCBc dHlwZVJVQllbb3B0aW9uXXtydWJ5ZmlsZX0NCiVEIFxzdG9wdHlwaW5nDQol RA0KJUQgV2UgaG9wZSB0aGF0IHRoaXMgaXMgc3VmZmljaWVudCB0byBnZXQg eW91IHN0YXJ0ZWQuIFRoZSByZXN0IG9mIHRoaXMNCiVEIGRvY3VtZW50IGdp dmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBtb2R1bGUu IElmIHlvdSB3YW50IHRvDQolRCBjaGFuZ2Ugc29tZXRoaW5nLCByZWFkIGFo ZWFkLg0KDQolRCBcc2VjdGlvbiAgIHtNb2R1bGUgRGV0YWlsc30NCiVEIFRo ZSBzeW50YXggaGlnaGxpZ2h0aW5nIG9mIHRoZSBzb3VyY2UgaGVyZSBpcyBk b25lIHVzaW5nIFx0eXBle3QtdmltfQ0KJUQgbW9kdWxlLiBUaGVyZSBpcyBh IGJ1ZyBpbiB0aGUgbW9kdWxlIGR1ZSB0byB3aGljaCBsaW5lIG51bWJlcmlu Z3MgZm9yDQolRCBkaWZmZXJlbnQgZmlsZXR5cGVzIHVzZSB0aGUgc2FtZSBj b3VudGVyLiBJbiB0aGUgc291cmNlIHJvdW5kfHxhYm91dA0KJUQgbWV0aG9k IHRvIGNvcnJlY3QgdGhpcy4gUmlnaHQgbm93LCBpbiBjYXNlIHNvbWVvbmUg bmVlZHMgdGhpcyBtb2R1bGUgZm9yDQolRCBudW1iZXJpbmcgbW9yZSB0aGFu IG9uZSBmaWxldHlwZSwgbGV0IG1lIGtub3csIGFuZCBJIHdpbGwgdHJ5IHRv IGlyb24NCiVEIG91dCB0aGUgYnVnLg0KDQolTSAlIER1ZSB0byB0aGUgYnVn IGluIG51bWJlcmluZw0KJU0gXGRlZmluZXZpbXR5cGluZyBbZGVmaW5pdGlv bl0gIFtzeW50YXg9Y29udGV4dCxzdGFydD0xLG51bWJlcmluZz1vbl0NCg0K XHdyaXRlc3RhdHVzICB7bG9hZGluZ30gICB7Q29udGV4dCBNb2R1bGUgZm9y IFZpTSBTeXRheCBIaWdobGlnaHRpbmd9DQoNCiVNIFxkZWZpbmV2aW10eXBp bmcgW2RlZmluaXRpb25dICBbc3ludGF4PWNvbnRleHQsc3RhcnQ9Y29udGlu dWUsbnVtYmVyaW5nPW9uXQ0KDQpcc3RhcnRtb2R1bGVbdmltXQ0KDQpcdW5w cm90ZWN0DQoNClxkZWZpbmVzeXN0ZW12YXJpYWJsZSB7dnN9ICAlIFZpbSBT eW50YXgNCg0KJUQgRmlyc3Qgb2YgYWxsIHdlIHRha2UgY2FyZSBvZiBib2xk IG1vbm90eXBlLiBCeSBkZWZhdWx0LCBcQ09OVEVYVFwgdXNlcw0KJUQgbGF0 aW4gbW9kZXJuIGZvbnRzLiBJZiB5b3Ugd2FudCB0byBnZXQgYm9sZCBtb25v dHlwZSBpbiBsYXRpbiBtb2Rlcm4sIHlvdQ0KJUQgbmVlZCB0byB1c2UgXHR5 cGV7bW9kZXJuLWJhc2V9IHR5cGVzY3JpcHQuIEZvciBleGFtcGxlOg0KJUQg XHN0YXJ0dHlwaW5nDQolRCBcdXNldHlwZXNjcmlwdFttb2Rlcm4tYmFzZV1b dGV4bmFuc2ldIFxzZXR1cGJvZHlmb250W21vZGVybl0NCiVEIFxzdGFydHRl eHQNCiVEIHtcdHRcYmYgVGhpcyBpcyBib2xkIG1vbm90eXBlfQ0KJUQgXHN0 b3B0ZXh0DQolRCBcc3RvcHR5cGluZw0KJUQgXENPTlRFWFRcIGRvZXMgbm90 IHByb3ZpZGUgYW55IHN0eWxlIGFsdGVybmF0aXZlIGZvciBib2xkIG1vbm90 eXBlIGFuZA0KJUQgc2xhbnRlZCBtb25vdHlwZSwgc28gd2UgcHJvdmlkZSBv bmUgaGVyZS4gVGhlc2Ugd2lsbCBvbmx5IHdvcmsgaWYgeW91ciBmb250DQol RCBzZXR1cCBrbm93cyBhYm91dCBib2xkIGFuZCBzbGFudGVkIG1vbm90eXBl Lg0KDQpcZGVmaW5lYWx0ZXJuYXRpdmVzdHlsZSBbXHYhYm9sZFx2IW1vbm8s XHYhbW9ub1x2IWJvbGRdICAgICAgIFtcdHRiZl0gW10NClxkZWZpbmVhbHRl cm5hdGl2ZXN0eWxlIFtcdiFzbGFudGVkXHYhbW9ubyxcdiFtb25vXHYhc2xh bnRlZF0gW1x0dHNsXSBbXQ0KDQolRCBcbWFjcm9ze3N0YXJ0dmltY29sb3Jz Y2hlbWV9DQolRCBUbyBzdGFydCBhIG5ldyB2aW0gY29sb3JzY2hlbWUuDQoN ClxkZWZcc3RhcnR2aW1jb2xvcnNjaGVtZVsjMV0lDQogIHtccHVzaG1hY3Jv XHZpbWNvbG9yc2NoZW1lDQogICBcZWRlZlx2aW1jb2xvcnNjaGVtZXsjMX19 DQoNClxkZWZcc3RvcHZpbWNvbG9yc2NoZW1lDQogIHtccG9wbWFjcm9cdmlt Y29sb3JzY2hlbWV9DQoNCiVEIFxtYWNyb3N7ZGVmaW5ldmltc3ludGF4LCBk ZWZpbmV2aW1zeW50YXhzeW5vbnltc30gDQolRCBUaGVzZSBtYWNyb3Mgc2hv dWxkIGFsd2F5cyBvY2N1ciBpbnNpZGUgYSBcdHlwZXtcc3RhcnR2aW1jb2xv cnNjaG1lfQ0KJUQgXHVua25vd24gXHR5cGV7XHN0b3B2aW1jb2xvcnNjaGVt ZX0gcGFpci4gIFRoZSBcdHlwZXtcZGVmaW5ldmltc3ludGF4fQ0KJUQgbWFj cm8gZGVmaW5lcyBzeW50YXggaGlnaGxpZ2h0aW5nIHJ1bGVzIGZvciBcVklN J3Mgc3ludGF4IGhpZ2hsaWdodGluZw0KJUQgcmVnaW9ucy4gSXQgdGFrZXMg dGhyZWUgYXJndW1lbnRzIFx0eXBle3N0eWxlfSwgXHR5cGV7Y29sb3J9IGFu ZA0KJUQgXHR5cGV7Y29tbWFuZH0uIFRoZSBtb3N0IGNvbW1vbiBcVklNXCBz eW50YXggaGlnaGxpZ2h0aW5nIHJlZ2lvbnMgYXJlIGRlZmluZWQNCiVEIGlu IHRoZSBlbmQgb2YgdGhpcyBmaWxlLiBUaGUgXHR5cGV7XGRlZmluZXZpbXN5 bnRheHN5bm9ueW1zfSBtYWNybyBqdXN0DQolRCBjb3BpZXMgdGhlIHNldHRp bmdzIGZyb20gYW5vdGhlciBzeW50YXggaGlnaGxpZ2h0aW5nIHJlZ2lvbi4N Cg0KXGRlZlxkZWZpbmV2aW1zeW50YXgNCiAge1xkb2RvdWJsZWFyZ3VtZW50 d2l0aHNldFxkb2RlZmluZXZpbXN5bnRheH0NCg0KXGRlZlxkb2RlZmluZXZp bXN5bnRheFsjMV0lIFsjMl0NCiAge1xnZXRwYXJhbWV0ZXJzW1w/P3ZzXHZp bWNvbG9yc2NoZW1lIzFdfSAlWyMyXQ0KDQpcZGVmXGRlZmluZXZpbXN5bnRh eHN5bm9ueW1zDQogIHtcZG9kb3VibGVhcmd1bWVudHdpdGhzZXRcZG9kZWZp bmV2aW1zeW50YXhzeW5vbnltc30NCg0KXGRlZlxkb2RlZmluZXZpbXN5bnRh eHN5bm9ueW1zWyMxXVsjMl0lDQogIHtcY29weXBhcmFtZXRlcnNbXD8/dnNc dmltY29sb3JzY2hlbWUjMV1bXD8/dnNcdmltY29sb3JzY2hlbWUjMl0NCiAg ICAgICAgICAgICAgICAgIFtcYyFzdHlsZSxcYyFjb2xvcixcYyFjb21tYW5k XX0NCg0KDQolRCBcbWFjcm9ze3ZpbXN5bnRheH0NCiVEIFRoaXMgaXMganVz dCBhIHBsYWNlaG9sZGVyIG1hY3JvLiBUaGUgXGZpbGVuYW1lezJjb250ZXh0 LnZpbX0gc2NyaXB0IG1hcmtzDQolRCB0aGUgaGlnaGxpZ2h0aW4gcmVpZ2lv bnMgYnkgXHR5cGV7XHNbLi4uXXsuLi59fS4gV2hpbGUgdHlwaW5nIHRoZSBn ZW5lcmF0ZWQNCiVEIGZpbGVzLCB3ZSBsb2NhbGx5IHJlZGVmaW5lIFx0eXBl e1xzfSB0byBcdHlwZXtcdmltc3ludGF4fS4NCg0KXGRlZlx2aW1zeW50YXhb IzFdIzIlDQogIHtcZG9zdGFydGF0dHJpYnV0ZXN7XD8/dnNcdmltY29sb3Jz Y2hlbWUgTm9ybWFsfVxjIXN0eWxlXGMhY29sb3JcZW1wdHklDQogICBcZG9z dGFydGF0dHJpYnV0ZXN7XD8/dnNcdmltY29sb3JzY2hlbWUgIzF9XGMhc3R5 bGVcYyFjb2xvclxlbXB0eSUNCiAgIFxnZXR2YWx1ZXtcPz92c1x2aW1jb2xv cnNjaGVtZSAjMVxjIWNvbW1hbmR9eyMyfSUNCiAgICBcZG9zdG9wYXR0cmli dXRlcyUNCiAgICBcZG9zdG9wYXR0cmlidXRlc30NCg0KJUQgXG1hY3Jvc3tz ZXR1cHZpbXR5cGluZywgdHlwZXZpbWZpbGV9DQolRCBUaGVyZSBhcmUgdGhy ZWUgc2V0dGluZ3MgZm9yIFx0eXBle1xzZXR1cHZpbXR5cGluZ306IFx0eXBl e3N5bnRheH0sIHdoaWNoDQolRCB0ZWxscyBcVklNXCB3aGljaCBzeW50YXgg cnVsZXMgdG8gdXNlOyBcdHlwZXt0YWJ9LCB3aGljaCBzZXRzIHRoZQ0KJUQg XHR5cGV7dGFic3RvcH0gaW4gXFZJTTsgYW5kIFx0eXBle3NwYWNlfSB3aGlj aCB0YWtlcyBjYXJlIG9mIHNwYWNlcy4NCiVEDQolRCBcdHlwZXtcdHlwZXZp bWZpbGV9IG1hY3JvIGJhc2ljYWxseSBjYWxscyBcVklNXCB3aXRoIGFwcHJv cHJpYXRlIHNldHRpbmdzIGFuZA0KJUQgc291cmNlcyB0aGUgXGZpbGVuYW1l ezJjb250ZXh0LnZpbX0gc2NyaXB0LiBUaGUgcmVzdWx0IGlzIHNsb3csIGJl Y2F1c2UNCiVEIHBhcnNpbmcgYnkgXFZJTVwgaXMgc2xvdy4gRG8gbm90IHVz ZSB0aGlzIG1ldGhvZCBmb3IgYW55dGhpbmcgbGFyZ2VyIHRoYW4gYQ0KJUQg ZmV3IGh1bmRyZWQgbGluZXMuIEZvciBsYXJnZSBmaWxlcywgb25lIG9wdGlv biBpcyB0byBwcmV8fHByYXNlIHRoZW0sIGFuZA0KJUQgdGhlbiB0eXBlc2V0 IHRoZSByZXN1bHQuIFdlIGhhdmUgbm90IHByb3ZpZGVkIGFueSBpbnRlcmZh Y2UgZm9yIHRoYXQsIGJ1dA0KJUQgaXQgaXMgcmVsYXRpdmVseSBlYXN5IHRv IGltcGxlbWVudC4NCiVEDQolRCBUYWtpbmcgY2FyZSBvZiBsaW5lfHxudW1i ZXJpbmcgaXMgbW9yZSB0cmlja3kuIFdlIGNvdWxkIG5vdCBnZXQNCiVEIFx0 eXBle1xzZXR1cGxpbmVudW1iZXJpbmd9IHRvIHdvcmsgcHJvcGVybHksIHNv IGltcGxlbWVudCBvdXIgb3duDQolRCBsaW5lfHxudW1iZXJpbmcgbWVjaGFu aXNtLiBUaGlzIGlzIGEgYml0IGF3a3dhcmQsIHNpbmNlIGl0IHBsYWNlcw0K JUQgbGluZXx8bnVtYmVyIGFmdGVyIGVhY2ggXHR5cGV7Xk19IGluIHRoZSBz b3VyY2UgZmlsZS4gU28sIGlmIHRoZSBzb3VyY2UNCiVEIGNvZGUgbGluZSBp cyBsYXJnZXIgdGhhbiBvbmUgdHlwZXNldCBsaW5lLCB0aGUgbGluZSBudW1i ZXIgd2lsbCBiZSBvbiB0aGUNCiVEIHNlY29uZCBsaW5lLiBUbyBkbyBpdCBj b3JyZWN0bHksIHdlIG5lZWQgdG8gcmVhZCBsaW5lcyBmcm9tIHRoZSB2aW1z eW50YXgNCiVEIGZpbGUgb25lfC18Ynl8LXxvbmUuIE91ciBvd24gbWVjaGFu aXNtIGZvciBsaW5lfHxudW1iZXJpbmcgaXMgcGxhaW4uDQolRCBVbmxpa2Ug XENPTlRFWFQncyBjb3JlIHZlcmJhdGltIGhpZ2hsaWdodGluZywgbXVsdGlw bGUgYmxhbmsgbGluZXMgYXJlDQolRCBkaXNwbGF5ZWQgYW5kIG51bWJlcmVk Lg0KDQpcZGVmXHNldHVwdmltdHlwaW5nDQogIHtcZG9zaW5nbGVhcmd1bWVu dFxnZXRwYXJhbWV0ZXJzW1w/P3ZzXX0NCg0KXGRlZlx0eXBldmltZmlsZQ0K ICB7XGRvc2luZ2xlZW1wdHlcZG90eXBldmltZmlsZX0NCg0KXGRlZlxub3R5 cGV2aW1maWxlWyMxXVsjMl0jMyUNCiAge1xkb3R5cGV2aW1maWxlWyMxLCMy XXsjM319DQoNClxkZWZcZG90eXBldmltZmlsZVsjMV0jMiUNCiAge1xkb2lm ZmlsZWVsc2V7IzJ9DQogICB7XGRvZG90eXBldmltZmlsZVsjMV17IzJ9fQ0K ICAge1xyZXBvcnR0eXBpbmdlcnJvcnsjMn19fQ0KDQoNClxkZWZcc2F2ZWFu ZHR5cGV2aW1maWxlWyMxXSUNCiAge1xzYXZldmltYnVmZmVyDQogICBcZG90 eXBldmltZmlsZVsjMV17XFRFWGJ1ZmZlcmZpbGV7dmltc3ludGF4fX19DQoN Cg0KXGxldFxzYXZldmltYnVmZmVyXGRvbm90aGluZw0KDQpcYmVnaW5MVUFU RVgNCg0KXGRlZlxzYXZldmltYnVmZmVye1xzYXZlYnVmZmVyW3ZpbXN5bnRh eF19DQoNClxlbmRMVUFURVgNCg0KXGRlZlxkb2RvdHlwZXZpbWZpbGVbIzFd IzIlDQogIHtcQEB2c2JlZm9yZQ0KICAgXGJncm91cA0KICAgXGluaXRpYWxp emV2aW10eXBpbmd7IzF9JQ0KICAgXHJ1bnZpbXN5bnRheHsjMn0lDQogICAg JSBUaGUgc3RydXQgaXMgbmVlZGVkIGZvciB0aGUgb3V0cHV0IHRvIGJlIHRo ZSBzYW1lIHdoZW4gbm90IHVzaW5nDQogICAgJSBudW1iZXJpbmcuIE90aGVy d2lzZSwgbXVsdGlwbGUgcGFyJ3MgYXJlIGlnbm9yZWQuIFdlIG5lZWQgdG8g ZmlndXJlIG91dA0KICAgICUgYSBtZWNoYW5pc20gdG8gaW1pdGF0ZSB0aGlz IGJlaGF2aW91ciBldmVuIHdoaWxlIHVzaW5nIGxpbmUgbnVtYmVyaW5nLg0K ICAgIFxpZmNvbmRpdGlvbmFsXHZpbXR5cGluZ2lubGluZSBcZWxzZQ0KICAg ICAgXHN0cnV0JWVsc2UgdGhlIGZpcnN0IGxpbmUgaXMgc2hpZnRlZCB0byB0 aGUgbGVmdA0KICAgIFxmaQ0KICAgIFxpbnB1dCAjMi12aW1zeW50YXgudG1w XHJlbGF4JQ0KICAgIFxpZmNvbmRpdGlvbmFsXHZpbXR5cGluZ2lubGluZSBc cmVtb3ZldW53YW50ZWRzcGFjZXMgXGZpDQogICBcZWdyb3VwDQogICBcQEB2 c2FmdGVyfQ0KDQpcbWFrZWNvdW50ZXJ7dmltbGluZW51bWJlcn0NCg0KXGRl Zlxkb3BsYWNldmltbGluZW51bWJlciANCiAgeyVBbHdheXMgcGxhY2UgdGhl IGZpcnN0IGxpbmVudW1iZXINCiAgIFxzaG93dmltbGluZW51bWJlcg0KICAg JUNhbGN1bGF0ZSBzdGVwIGluIGZ1dHV0ZQ0KICAgXGxldFxwbGFjZXZpbWxp bmVudW1iZXJcZG9kb3BsYWNldmltbGluZW51bWJlcg0KICAgXHBsdXNjb3Vu dGVye3ZpbWxpbmVudW1iZXJ9fQ0KDQpcZGVmXGRvZG9wbGFjZXZpbWxpbmVu dW1iZXINCiAge1xpZm51bVxudW1leHByKFxjb3VudGVydmFsdWV7dmltbGlu ZW51bWJlcn0vXEBAdnNzdGVwKSpcQEB2c3N0ZXBccmVsYXg9JQ0KICAgICAg ICAgXG51bWV4cHJcY291bnRlcnZhbHVle3ZpbWxpbmVudW1iZXJ9XHJlbGF4 DQogICAgICBcc2hvd3ZpbWxpbmVudW1iZXINCiAgXGZpDQogICBccGx1c2Nv dW50ZXJ7dmltbGluZW51bWJlcn19DQogICANClxkZWZcc2hvd3ZpbWxpbmVu dW1iZXINCiAge1xAQHZzbnVtYmVyY29tbWFuZA0KICAgICAge1xkb3N0YXJ0 YXR0cmlidXRlc1w/P3ZzXGMhbnVtYmVyc3R5bGVcYyFudW1iZXJjb2xvclxl bXB0eQ0KICAgICAgIFxjb3VudGVydmFsdWV7dmltbGluZW51bWJlcn0NCiAg ICAgICBcZG9zdG9wYXR0cmlidXRlc319DQoNClxkZWZcaW5pdGlhbGl6ZXZp bXR5cGluZyMxJQ0KICB7XHNldHVwdmltdHlwaW5nWyMxXSUNCiAgICVNYWtl IHN1cmUgdGhhdCBzdG9wIGlzIG5vdCBlbXB0eQ0KICAgXGlmY29uZGl0aW9u YWxcdmltdHlwaW5naW5saW5lIFxlbHNlDQogICAgIFxkb2lmZW1wdHl7XEBA dnNzdG9wfXtcc2V0dmFsdWV7XEBAdnNzdG9wfXswfX0lDQogICAgIFxkb2lm ZWxzZXtcQEB2c3N0YXJ0fXtcdiFjb250aW51ZX0NCiAgICAgIHtcc2V0dmFs dWV7QEB2c3N0YXJ0fXtcY291bnRlcnZhbHVle3ZpbWxpbmVudW1iZXJ9fX0N CiAgICAgIHtcc2V0Y291bnRlcnt2aW1saW5lbnVtYmVyfXtcZG9pZm51bWJl cmVsc2V7XEBAdnNzdGFydH17XEBAdnNzdGFydH17MX19fSUNCiAgICAgXHdo aXRlc3BhY2UNCiAgICAlXHBhZ2VbXHYhcHJlZmVyZW5jZV19IGdhYXQgbWlz IG5hIGtvcHBlbiwgbmlldXc6IGxhdGVyIFxub2JyZWFrDQogICAgIFxzZXR1 cHdoaXRlc3BhY2VbXHYhbm9uZV0lDQogICAgIFxvYmV5bGluZXMNCiAgIFxm aQ0KICAgXGlnbm9yZWVvZnMNCiAgIFxpZ25vcmVzcGFjZXMNCiAgIFxsZXRc cz1cdmltc3ludGF4DQogICBcZGVmXHRhYiMjMXtcZG9yZWN1cnNleyMjMX17 XHNwYWNlfX0lIFRPRE86IGFsbG93IGN1c3RvbWl6YXRpb24NCiAgIFxkZWZc dmltY29sb3JzY2hlbWV7XEBAdnNjb2xvcnNjaGVtZX0lDQogICBcaWZjb25k aXRpb25hbFx2aW10eXBpbmdpbmxpbmUgDQogICAgXGxldFxwbGFjZXZpbWxp bmVudW1iZXJccmVsYXgNCiAgIFxlbHNlDQogICAgIFxhY3RpdmF0ZXNwYWNl aGFuZGxlclxAQHZzc3BhY2UNCiAgICAgXHByb2Nlc3NhY3Rpb25bXEBAdnNu dW1iZXJpbmddDQogICAgIFsgICAgIFx2IW9uPT5cbGV0XHBsYWNldmltbGlu ZW51bWJlclxkb3BsYWNldmltbGluZW51bWJlciwNCiAgICAgICAgICBcdiFv ZmY9PlxsZXRccGxhY2V2aW1saW5lbnVtYmVyXHJlbGF4LA0KICAgICAgXHMh dW5rbm93bj0+XGxldFxwbGFjZXZpbWxpbmVudW1iZXJccmVsYXgsDQogICAg ICBccyFkZWZhdWx0PT5cbGV0XHBsYWNldmltbGluZW51bWJlclxyZWxheCwN CiAgICAgXSUNCiAgICAgXGRlZlxvYmV5ZWRsaW5le1xwbGFjZXZpbWxpbmVu dW1iZXJccGFyXHN0cnV0fSUNCiAgIFxmaQ0KICAgfQ0KDQoNClxkZWZcc2hl bGxlc2NhcGVkcXVvdGV7XGxldHRlcmJhY2tzbGFzaFxsZXR0ZXJkb3VibGVx dW90ZX0NClxkZWZcc2hlbGxlc2NhcGVkcXVvdGV7XGxldHRlcmRvdWJsZXF1 b3RlfQ0KDQpcZGVmXHJ1bnZpbXN5bnRheCMxJQ0Ke1xleGVjdXRlc3lzdGVt Y29tbWFuZA0KICAgICAge210eHJ1biAtLXZlcmJvc2UgLS1ub3F1b3RlcyBi aW46dmltICIiDQogICAgICAgICAgIC11IE5PTkUgICUgTm8gbmVlZCB0byBy ZWFkIHVubmVzc2FyeSBjb25maWd1cmF0aW9ucw0KICAgICAgICAgICAtZSAg ICAgICAlIHJ1biBpbiBleCBtb2RlDQogICAgICAgICAgIC1DICAgICAgICUg U2V0IGNvbXBhdGliaWxlDQogICAgICAgICAgIC1uICAgICAgICUgTm8gc3dh cA0KJSAgICAgICAgICAtVjEwbG9nICAlIEZvciBkZWJ1Z2dpbmcgb25seSwg d2lsbCBnbyBhd2F5IGxhdGVyLg0KICAgICAgICAgICAtYyBcc2hlbGxlc2Nh cGVkcXVvdGUgc2V0IHRhYnN0b3A9XEBAdnN0YWIgXHNoZWxsZXNjYXBlZHF1 b3RlXHNwYWNlICAgIA0KICAgICAgICAgICAtYyBcc2hlbGxlc2NhcGVkcXVv dGUgc3ludGF4IG9uXHNoZWxsZXNjYXBlZHF1b3RlXHNwYWNlIA0KICAgICAg ICAgICAtYyBcc2hlbGxlc2NhcGVkcXVvdGUgc2V0IHN5bnRheD1cQEB2c3N5 bnRheFxzaGVsbGVzY2FwZWRxdW90ZVxzcGFjZQ0KICAgICAgICAgICAtYyBc c2hlbGxlc2NhcGVkcXVvdGUgbGV0IGNvbnRleHRzdGFydGxpbmU9XEBAdnNz dGFydFxzaGVsbGVzY2FwZWRxdW90ZVxzcGFjZQ0KICAgICAgICAgICAtYyBc c2hlbGxlc2NhcGVkcXVvdGUgbGV0IGNvbnRleHRzdG9wbGluZT1cQEB2c3N0 b3Bcc2hlbGxlc2NhcGVkcXVvdGUgIFxzcGFjZQ0KICAgICAgICAgICAtYyBc c2hlbGxlc2NhcGVkcXVvdGUgc291cmNlIGtwc2U6MmNvbnRleHQudmltXHNo ZWxsZXNjYXBlZHF1b3RlXHNwYWNlDQogICAgICAgICAgIC1jIFxzaGVsbGVz Y2FwZWRxdW90ZSB3cWFcc2hlbGxlc2NhcGVkcXVvdGVcc3BhY2UgICAgDQog ICAgICAgICAgICBcc2hlbGxlc2NhcGVkcXVvdGUjMVxzaGVsbGVzY2FwZWRx dW90ZX19DQoNCg0KJUQgXG1hY3Jvc3tkZWZpbmV0eXBldmltZmlsZX0NCiVE IFRoaXMgbWFjcm8gYWxsb3dzIHlvdSB0byBkZWZpbmUgbmV3IGZpbGUgdHlw aW5nIGNvbW1hbmRzLiBGb3IgZXhhbXBsZQ0KJUQgXHN0YXJ0dHlwaW5nDQol RCBcZGVmaW5ldHlwZXZpbWZpbGVbdHlwZVJVQlldIFtzeW50YXg9cnVieV0N CiVEIFxzdG9wdHlwaW5nDQolRCBhZnRlciB3aGljaCBvbmUgY2FuIHVzZQ0K JUQgXHN0YXJ0dHlwaW5nDQolRCBcdHlwZVJVQllbb3B0aW9uXXtydWJ5Zmls ZX0NCiVEIFxzdG9wdHlwaW5nDQoNClxkZWZcZGVmaW5ldHlwZXZpbWZpbGUN CiAge1xkb2RvdWJsZWFyZ3VtZW50XGRvZGVmaW5ldHlwZXZpbWZpbGV9DQoN ClxkZWZcZG9kZWZpbmV0eXBldmltZmlsZVsjMV1bIzJdJQ0KICB7XHVuZXhw YW5kZWRcc2V0dmFsdWV7IzF9e1xkb2RvdWJsZWVtcHR5XG5vdHlwZXZpbWZp bGVbIzJdfX0NCg0KJUQgXG1hY3Jvc3tkZWZpbmV2aW10eXBpbmd9DQolRA0K JUQgVGhpcyBtYWNybyBhbGxvd3MgeW91IHRvIHByZXR0eSBwcmludCBjb2Rl IHNuaXBwZXRzLiBGb3IgZXhhbXBsZQ0KJUQgXHN0YXJ0YnVmZmVyDQolRCBc ZGVmaW5ldmltdHlwaW5nIFtSVUJZXSBbc3ludGF4PXJ1YnldDQolRCBcc3Rh cnRSVUJZDQolRCAjIFRoaXMgaXMgbXkgZmlyc3QgcnVieSBwcm9ncmFtDQol RCBwdXRzICJIZWxsbyBXb3JsZCINCiVEIFxzdG9wUlVCWQ0KJUQgXHN0b3Bi dWZmZXINCiVEIFx0eXBlYnVmZmVyIGdpdmVzIFxnZXRidWZmZXINCg0KJU0g JU1vcmUgYnVnIGZpeGVzIHRvIGdldCB0aGUgbGluZSBudW1iZXJpbmcgaW4g ZG9jdW1lbnRhdGlvbiByaWdodC4NCiVNIFxkZWZpbmV2aW10eXBpbmcgW2Rl ZmluaXRpb25dICBbc3ludGF4PWNvbnRleHQsc3RhcnQ9MTE5LG51bWJlcmlu Zz1vbl0NCg0KXGRlZlxkZWZpbmV2aW10eXBpbmcNCiAge1xkb2RvdWJsZWFy Z3VtZW50XGRvZGVmaW5ldmltdHlwaW5nfQ0KDQolTSAlTW9yZSBidWcgZml4 ZXMgdG8gZ2V0IHRoZSBsaW5lIG51bWJlcmluZyBpbiBkb2N1bWVudGF0aW9u IHJpZ2h0Lg0KJU0gXGRlZmluZXZpbXR5cGluZyBbZGVmaW5pdGlvbl0gIFtz eW50YXg9Y29udGV4dCxzdGFydD1jb250aW51ZSxudW1iZXJpbmc9b25dDQoN ClxuZXdjb25kaXRpb25hbFx2aW10eXBpbmdpbmxpbmUgXHNldGZhbHNlXHZp bXR5cGluZ2lubGluZQ0KDQpcZGVmXGRvZGVmaW5ldmltdHlwaW5nWyMxXVsj Ml0lDQogIHtcc2V0ZXZhbHVle1xlIXN0YXJ0IzF9JQ0KICAgIHtcc2V0ZmFs c2VcdmltdHlwaW5naW5saW5lDQogICAgIFxub2V4cGFuZFxkb3N0YXJ0YnVm ZmVyW3ZpbXN5bnRheF1bXGUhc3RhcnQjMV1bXGUhc3RvcCMxXX0lDQogICBc c2V0dmFsdWV7XGUhc3RvcCMxfXtcc2F2ZWFuZHR5cGV2aW1maWxlWyMyXX0l DQogIFxzZXRldmFsdWV7XGUhc3RhcnQgaW5saW5lIzF9JQ0KICAgIHtcc2V0 dHJ1ZVx2aW10eXBpbmdpbmxpbmUNCiAgICAgXG5vZXhwYW5kXGRvc3RhcnRi dWZmZXJbdmltc3ludGF4XVtcZSFzdGFydCBpbmxpbmUjMV1bXGUhc3RvcCBp bmxpbmUjMV19JQ0KICAgXHNldHZhbHVle1xlIXN0b3AgaW5saW5lIzF9e1xz YXZlYW5kdHlwZXZpbWZpbGVbIzJdfX0NCg0KDQolRCBTb21lIGRlZmF1bHRz Lg0KDQpcc2V0dXB2aW10eXBpbmcNCiAgWyAgICAgICAgc3ludGF4PWNvbnRl eHQsDQogICAgICAgICAgIFxjIXRhYj04LA0KICAgICAgICAgXGMhc3BhY2U9 XHYheWVzLA0KICAgICAgICAgXGMhc3RhcnQ9MSwNCiAgICAgICAgICBcYyFz dG9wPTAsDQogICAgICAgIFxjIWJlZm9yZT0sDQogICAgICAgICBcYyFhZnRl cj0sDQogICAgIFxjIW51bWJlcmluZz1cdiFvZmYsDQogXGMhbnVtYmVyY29t bWFuZD1caW5sZWZ0LCANCiAgIFxjIW51bWJlcnN0eWxlPVx2IXNtYWxsc2xh bnRlZCwNCiAgIFxjIW51bWJlcmNvbG9yPSwNCiAgICAgICAgICBcYyFzdGVw PTEsDQogICAgICBjb2xvcnNjaGVtZT1kZWZhdWx0LA0KICBdDQoNCiVEIFBy ZS1kZWZpbmVkIFN5bnRheCA6ICUge3t7IA0KJUQgVGhpcyBpcyBiYXNlZCBv biBcZmlsZW5hbWV7cHNfY29sb3IudmltfSwgd2hpY2ggZG9lcyBub3QgdXNl IGFueSBib2xkDQolRCB0eXBlZmFjZS4NCg0KJUQgXFZJTVwgdXNlcyBoZXgg bW9kZSBmb3Igc2V0dGluZyBjb2xvcnMsIEkgZG8gbm90IHdhbnQgdG8gY29u dmVydCB0aGVtIHRvIHJnYg0KJUQgdmFsdWVzLg0KDQpcc3RhcnR2aW1jb2xv cnNjaGVtZVtkZWZhdWx0XQ0KDQpcc2V0dXBjb2xvcltoZXhdDQoNClxkZWZp bmVjb2xvciAgW3ZpbXN5bnRheCFkZWZhdWx0IVNwZWNpYWxdICAgICBbaD05 MDcwMDBdDQpcZGVmaW5lY29sb3IgIFt2aW1zeW50YXghZGVmYXVsdCFDb21t ZW50XSAgICAgW2g9NjA2MDAwXQ0KXGRlZmluZWNvbG9yICBbdmltc3ludGF4 IWRlZmF1bHQhTnVtYmVyXSAgICAgIFtoPTkwNzAwMF0NClxkZWZpbmVjb2xv ciAgW3ZpbXN5bnRheCFkZWZhdWx0IUNvbnN0YW50XSAgICBbaD0wMDcwNjhd DQpcZGVmaW5lY29sb3IgIFt2aW1zeW50YXghZGVmYXVsdCFQcmVQcm9jXSAg ICAgW2g9MDA5MDMwXQ0KXGRlZmluZWNvbG9yICBbdmltc3ludGF4IWRlZmF1 bHQhU3RhdGVtZW50XSAgIFtoPTIwNjBhOF0NClxkZWZpbmVjb2xvciAgW3Zp bXN5bnRheCFkZWZhdWx0IVR5cGVdICAgICAgICBbaD0wODUwYTBdDQpcZGVm aW5lY29sb3IgIFt2aW1zeW50YXghZGVmYXVsdCFUb2RvXSAgICAgICAgW2g9 ZTBlMDkwXQ0KDQpcZGVmaW5lY29sb3IgIFt2aW1zeW50YXghZGVmYXVsdCFF cnJvcl0gICAgICAgW2g9YzAzMDAwXQ0KXGRlZmluZWNvbG9yICBbdmltc3lu dGF4IWRlZmF1bHQhSWRlbnRpZmllcl0gIFtoPWEwMzBhMF0NClxkZWZpbmVj b2xvciAgW3ZpbXN5bnRheCFkZWZhdWx0IVNwZWNpYWxLZXldICBbaD0xMDUw YTBdDQpcZGVmaW5lY29sb3IgIFt2aW1zeW50YXghZGVmYXVsdCFVbmRlcmxp bmVdICAgW2g9NmE1YWNkXQ0KDQoNClxkZWZpbmV2aW1zeW50YXgNCiAgW05v cm1hbF0NCiAgW1xjIXN0eWxlPVx0dHRmLFxjIWNvbG9yPVxtYWludGV4dGNv bG9yXQ0KDQpcZGVmaW5ldmltc3ludGF4IA0KICBbQ29uc3RhbnRdDQogIFtc YyFzdHlsZT1cdiFtb25vLFxjIWNvbG9yPXZpbXN5bnRheCFkZWZhdWx0IUNv bnN0YW50XQ0KDQpcZGVmaW5ldmltc3ludGF4c3lub255bXMNCiAgW0NoYXJh Y3RlcixCb29sZWFuLEZsb2F0XQ0KICBbQ29uc3RhbnRdDQoNClxkZWZpbmV2 aW1zeW50YXgNCiAgW051bWJlcl0NCiAgW1xjIXN0eWxlPVx2IW1vbm8sXGMh Y29sb3I9dmltc3ludGF4IWRlZmF1bHQhTnVtYmVyXQ0KDQpcZGVmaW5ldmlt c3ludGF4DQogIFtJZGVudGlmaWVyXQ0KICBbXGMhc3R5bGU9XHYhbW9ubyxc YyFjb2xvcj12aW1zeW50YXghZGVmYXVsdCFJZGVudGlmaWVyXQ0KDQpcZGVm aW5ldmltc3ludGF4c3lub255bXMNCiAgW0Z1bmN0aW9uXQ0KICBbSWRlbnRp Zmllcl0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW1N0YXRlbWVudF0NCiAg W1xjIXN0eWxlPVx2IW1vbm8sXGMhY29sb3I9dmltc3ludGF4IWRlZmF1bHQh U3RhdGVtZW50XQ0KDQpcZGVmaW5ldmltc3ludGF4c3lub255bXMNCiAgW0Nv bmRpdGlvbmFsLFJlcGVhdCxMYWJlbCxPcGVyYXRvcixLZXl3b3JkLEV4Y2Vw dGlvbl0NCiAgW1N0YXRlbWVudF0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAg W1ByZVByb2NdDQogIFtcYyFzdHlsZT1cdiFtb25vLFxjIWNvbG9yPXZpbXN5 bnRheCFkZWZhdWx0IVByZVByb2NdDQoNClxkZWZpbmV2aW1zeW50YXhzeW5v bnltcw0KICBbSW5jbHVkZSxEZWZpbmUsTWFjcm8sUHJlQ29uZGl0XQ0KICBb UHJlUHJvY10NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW1R5cGUsU3RvcmFn ZUNsYXNzLCBTdHJ1Y3R1cmUsIFR5cGVkZWZdDQogIFtcYyFzdHlsZT1cdiFt b25vLCBcYyFjb2xvcj12aW1zeW50YXghZGVmYXVsdCFUeXBlXQ0KDQpcZGVm aW5ldmltc3ludGF4IA0KICBbU3BlY2lhbF0NCiAgW1xjIXN0eWxlPVx2IW1v bm8sXGMhY29sb3I9dmltc3ludGF4IWRlZmF1bHQhU3BlY2lhbF0NCg0KXGRl ZmluZXZpbXN5bnRheCANCiAgW1NwZWNpYWxLZXldDQogIFtcYyFzdHlsZT1c diFtb25vLFxjIWNvbG9yPXZpbXN5bnRheCFkZWZhdWx0IVNwZWNpYWxLZXld DQoNClxkZWZpbmV2aW1zeW50YXgNCiAgW1RhZyxEZWxpbWl0ZXJdDQogIFtc YyFzdHlsZT1cdiFtb25vXQ0KDQpcZGVmaW5ldmltc3ludGF4DQogIFtDb21t ZW50LFNwZWNpYWxDb21tZW50XQ0KICBbXGMhc3R5bGU9XHYhbW9ubyxcYyFj b2xvcj12aW1zeW50YXghZGVmYXVsdCFDb21tZW50XQ0KDQpcZGVmaW5ldmlt c3ludGF4DQogIFtEZWJ1Z10NCiAgW1xjIXN0eWxlPVx2IW1vbm9dDQoNClxk ZWZpbmV2aW1zeW50YXgNCiAgW1VuZGVybGluZWRdDQogIFtcYyFzdHlsZT1c diFtb25vLFxjIWNvbW1hbmQ9XHVuZGVyYmFyXQ0KDQpcZGVmaW5ldmltc3lu dGF4IA0KICBbSWdub3JlXQ0KICBbXGMhc3R5bGU9XHYhbW9ub10NCg0KXGRl ZmluZXZpbXN5bnRheCANCiAgW0Vycm9yXQ0KICBbXGMhc3R5bGU9XHYhbW9u byxcYyFjb2xvcj12aW1zeW50YXghZGVmYXVsdCFFcnJvcl0NCg0KXGRlZmlu ZXZpbXN5bnRheCANCiAgW1RvZG9dDQogIFtcYyFzdHlsZT1cdiFtb25vLFxj IWNvbG9yPXZpbXN5bnRheCFkZWZhdWx0IVRvZG9dDQoNClxzdG9wdmltY29s b3JzY2hlbWUNCiUgfX19DQoNClxzdGFydHZpbWNvbG9yc2NoZW1lW2JsYWNr YW5kd2hpdGVdDQoNClxkZWZpbmV2aW1zeW50YXgNCiAgW05vcm1hbF0NCiAg W1xjIXN0eWxlPVx0dHRmLFxjIWNvbG9yPVxtYWludGV4dGNvbG9yXQ0KDQpc ZGVmaW5ldmltc3ludGF4IA0KICBbQ29uc3RhbnRdDQogIFtcYyFzdHlsZT1c diFtb25vLFxjIWNvbG9yPV0NCg0KXGRlZmluZXZpbXN5bnRheHN5bm9ueW1z DQogIFtDaGFyYWN0ZXIsQm9vbGVhbixGbG9hdF0NCiAgW0NvbnN0YW50XQ0K DQpcZGVmaW5ldmltc3ludGF4DQogIFtOdW1iZXJdDQogIFtcYyFzdHlsZT1c diFtb25vLFxjIWNvbG9yPV0NCg0KXGRlZmluZXZpbXN5bnRheA0KICBbSWRl bnRpZmllcl0NCiAgW1xjIXN0eWxlPVx2IW1vbm8sXGMhY29sb3I9XQ0KDQpc ZGVmaW5ldmltc3ludGF4c3lub255bXMNCiAgW0Z1bmN0aW9uXQ0KICBbSWRl bnRpZmllcl0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW1N0YXRlbWVudF0N CiAgW1xjIXN0eWxlPVx2IW1vbm9cdiFib2xkLFxjIWNvbG9yPV0NCg0KXGRl ZmluZXZpbXN5bnRheHN5bm9ueW1zDQogIFtDb25kaXRpb25hbCxSZXBlYXQs TGFiZWwsT3BlcmF0b3IsS2V5d29yZCxFeGNlcHRpb25dDQogIFtTdGF0ZW1l bnRdDQoNClxkZWZpbmV2aW1zeW50YXggDQogIFtQcmVQcm9jXQ0KICBbXGMh c3R5bGU9XHYhYm9sZFx2IW1vbm8sXGMhY29sb3I9XQ0KDQpcZGVmaW5ldmlt c3ludGF4c3lub255bXMNCiAgW0luY2x1ZGUsRGVmaW5lLE1hY3JvLFByZUNv bmRpdF0NCiAgW1ByZVByb2NdDQoNClxkZWZpbmV2aW1zeW50YXggDQogIFtU eXBlLFN0b3JhZ2VDbGFzcywgU3RydWN0dXJlLCBUeXBlZGVmXQ0KICBbXGMh c3R5bGU9XHYhYm9sZFx2IW1vbm8sIFxjIWNvbG9yPV0NCg0KXGRlZmluZXZp bXN5bnRheCANCiAgW1NwZWNpYWxdDQogIFtcYyFzdHlsZT1cdiFtb25vLFxj IWNvbG9yPV0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW1NwZWNpYWxLZXld DQogIFtcYyFzdHlsZT1cdiFtb25vLFxjIWNvbG9yPV0NCg0KXGRlZmluZXZp bXN5bnRheA0KICBbVGFnLERlbGltaXRlcl0NCiAgW1xjIXN0eWxlPVx2IW1v bm8sXGMhY29sb3I9XQ0KDQpcZGVmaW5ldmltc3ludGF4DQogIFtDb21tZW50 LFNwZWNpYWxDb21tZW50XQ0KICBbXGMhc3R5bGU9XHYhc2xhbnRlZFx2IW1v bm8sXGMhY29sb3I9XQ0KDQpcZGVmaW5ldmltc3ludGF4DQogIFtEZWJ1Z10N CiAgW1xjIXN0eWxlPVx2IW1vbm8sXGMhY29sb3I9XQ0KDQpcZGVmaW5ldmlt c3ludGF4DQogIFtVbmRlcmxpbmVkXQ0KICBbXGMhc3R5bGU9XHYhbW9ubyxc YyFjb2xvcj0sXGMhY29tbWFuZD1cdW5kZXJiYXJdDQoNClxkZWZpbmV2aW1z eW50YXggDQogIFtJZ25vcmVdDQogIFtcYyFzdHlsZT1cdiFtb25vLFxjIWNv bG9yPV0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW0Vycm9yXQ0KICBbXGMh c3R5bGU9XHYhbW9ubyxcYyFjb2xvcj0sXGMhY29tbWFuZD1cb3ZlcnN0cmlr ZV0NCg0KXGRlZmluZXZpbXN5bnRheCANCiAgW1RvZG9dDQogIFtcYyFzdHls ZT1cdiFtb25vLFxjIWNvbW1hbmQ9XGluZnJhbWVkXQ0KDQpcc3RvcHZpbWNv bG9yc2NoZW1lDQolIH19fQ0KDQoNClxwcm90ZWN0DQoNClxzdG9wbW9kdWxl DQoNCg0KJUQgQW4gZXhhbXBsZSB1c2FnZTogJSB7e3sNCg0KXGRvaWZub3Rt b2Rle2RlbW99e1xlbmRpbnB1dH0NCg0KXHNldHVwY29sb3JzW3N0YXRlPXN0 YXJ0XQ0KDQpcdXNldHlwZXNjcmlwdFttb2Rlcm4tYmFzZV1bdGV4bmFuc2ld DQoNClxzZXR1cGJvZHlmb250W21vZGVybiwxMHB0XQ0KDQpcc3RhcnR0ZXh0 DQoNClx0aXRsZXtNYXRsYWIgQ29kZSBMaXN0aW5nIC0tIENvbG9yfQ0KDQpc ZGVmaW5ldmltdHlwaW5nICBbTUFUTEFCXSAgW3N5bnRheD1tYXRsYWJdDQoN ClxzdGFydE1BVExBQg0KZnVuY3Rpb24gcnVzc2VsbF9kZW1vKCkNCiUgRG8g dGhlIGV4YW1wbGUgaW4gY2ggMTcgKHA1MDEpIG9mIFJ1c3NlbGwgYW5kIE5v cnZpZw0KJSAoMSwxKSBpcyB0b3AgbGVmdCBjb3JuZXIuDQpyID0gMzsgYyA9 IDQ7IHAgPSAwLjg7IGFjdGlvbl9jb3N0ID0gLTEvMjU7DQpvYnN0YWNsZSA9 IHplcm9zKHIsYyk7IG9ic3RhY2xlKDIsMik9MTsNCnRlcm1pbmFsID0gemVy b3MocixjKTsgdGVybWluYWwoMSw0KT0xOyB0ZXJtaW5hbCgyLDQpPTE7DQph YnNvcmIgPSAxOw0Kd3JhcF9hcm91bmQgPSAwOw0Kbm9vcCA9IDA7DQpUID0g bWtfZ3JpZF93b3JsZChyLCBjLCBwLCBvYnN0YWNsZSwgdGVybWluYWwsIGFi c29yYiwgd3JhcF9hcm91bmQsIG5vb3ApOw0KJSBBZGQgcmV3YXJkcyBmb3Ig dGVybWluYWwgc3RhdGVzDQpuc3RhdGVzID0gcipjICsgMTsNCmlmIG5vb3AN CiAgbmFjdCA9IDU7DQplbHNlDQogIG5hY3QgPSA0Ow0KZW5kDQpSID0gYWN0 aW9uX2Nvc3Qqb25lcyhuc3RhdGVzLCBuYWN0KTsNClIoMTAsOikgPSAxOw0K UigxMSw6KSA9IC0xOw0KUihuc3RhdGVzLDopID0gMDsNCmRpc2NvdW50X2Zh Y3RvciA9IDE7DQoNClYgPSB2YWx1ZV9pdGVyYXRpb24oVCwgUiwgZGlzY291 bnRfZmFjdG9yKTsNCiVyZXNoYXBlKFYoMTplbmQtMSksW3IgY10pDQolICAg IDAuODExNiAgICAwLjg2NzggICAgMC45MTc4ICAgIDEuMDAwMA0KJSAgICAw Ljc2MTYgICAgMC43OTY0ICAgIDAuNjYwMyAgIC0xLjAwMDANCiUgICAgMC43 MDUzICAgIDAuNjU1MyAgICAwLjYxMTQgICAgMC4zODc4DQolIFNhbWUgYXMg dGhlIGJvb2sgcDUwMQ0KDQpRID0gUV9mcm9tX1YoViwgVCwgUiwgZGlzY291 bnRfZmFjdG9yKTsNCltWLCBwXSA9IG1heChRLCBbXSwgMik7DQoNCg0KdXNl X3ZhbF9pdGVyID0gMTsNCiUgKEktZ1QpIGlzIHNpbmd1bGFyIHNpbmNlIGc9 MSBhbmQgdGhlcmUgaXMgYW4gYWJzb3JiaW5nIHN0YXRlIChpLmUuLCBUKGks aSk9MSkNCiUgSGVuY2Ugd2UgY2Fubm90IHVzZSB2YWx1ZSBkZXRlcm1pbmF0 aW9uLg0KW3AsVl0gPSBwb2xpY3lfaXRlcmF0aW9uKFQsIFIsIGRpc2NvdW50 X2ZhY3RvciwgdXNlX3ZhbF9pdGVyKTsNCg0KJXJlc2hhcGUoVigxOmVuZC0x KSxbciBjXSkNCiUgICAgMC44MTE1ICAgIDAuODY3OCAgICAwLjkxNzggICAg MS4wMDAwDQolICAgIDAuNzYxNSAgICAwLjc5NjQgICAgMC42NjAzICAgLTEu MDAwMA0KJSAgICAwLjcwNDggICAgMC42NTM5ICAgIDAuNjA4NSAgICAwLjM4 MjQNClxzdG9wTUFUTEFCDQoNClx0aXRsZXtMdWEgQ29kZSBMaXN0aW5nIC0t IEJsYWNrIGFuZCBXaGl0ZX0NCg0KXGRlZmluZXZpbXR5cGluZyAgW0xVQV0g IFtzeW50YXg9bHVhLGNvbG9yc2NoZW1lPWJsYWNrYW5kd2hpdGVdDQoNClxz dGFydExVQQ0KLS0gdmVyc2lvbiAgIDogMS4wLjAgLSAwNy8yMDA1DQotLSBh dXRob3IgICAgOiBIYW5zIEhhZ2VuIC0gUFJBR01BIEFERSAtIHd3dy5wcmFn bWEtYWRlLmNvbQ0KLS0gY29weXJpZ2h0IDogcHVibGljIGRvbWFpbiBvciB3 aGF0ZXZlciBzdWl0cw0KLS0gcmVtYXJrICAgIDogcGFydCBvZiB0aGUgY29u dGV4dCBkaXN0cmlidXRpb24NCg0KLS0gVE9ETzogbmFtZSBzcGFjZSBmb3Ig bG9jYWwgZnVuY3Rpb25zDQoNCi0tIGxvYWRpbmc6IHNjaXRlLWN0eC5wcm9w ZXJ0aWVzDQoNCi0tIGdlbmVyaWMgZnVuY3Rpb25zDQoNCmxvY2FsIGNybGYg PSAiXG4iDQoNCmZ1bmN0aW9uIHRyYWNlbG4oc3RyKQ0KICAgIHRyYWNlKHN0 ciAuLiBjcmxmKQ0KICAgIGlvLmZsdXNoKCkNCmVuZA0KDQp0YWJsZS5sZW4g ID0gdGFibGUuZ2V0bg0KdGFibGUuam9pbiA9IHRhYmxlLmNvbmNhdA0KDQpm dW5jdGlvbiB0YWJsZS5mb3VuZCh0YWIsIHN0cikNCiAgICBsb2NhbCBsLCBy LCBwDQogICAgaWYgc3RyaW5nLmxlbihzdHIpID09IDAgdGhlbg0KICAgICAg ICByZXR1cm4gZmFsc2UNCiAgICBlbHNlDQogICAgICAgIGwsIHIgPSAxLCB0 YWJsZS5sZW4odGFiKQ0KICAgICAgICB3aGlsZSBsIDw9IHIgZG8NCiAgICAg ICAgICAgIHAgPSBtYXRoLmZsb29yKChsK3IpLzIpDQogICAgICAgICAgICBp ZiBzdHIgPCB0YWJbcF0gdGhlbg0KICAgICAgICAgICAgICAgIHIgPSBwIC0g MQ0KICAgICAgICAgICAgZWxzZWlmIHN0ciA+IHRhYltwXSB0aGVuDQogICAg ICAgICAgICAgICAgbCA9IHAgKyAxDQogICAgICAgICAgICBlbHNlDQogICAg ICAgICAgICAgICAgcmV0dXJuIHRydWUNCiAgICAgICAgICAgIGVuZA0KICAg ICAgICBlbmQNCiAgICAgICAgcmV0dXJuIGZhbHNlDQogICAgZW5kDQplbmQN Cg0KZnVuY3Rpb24gc3RyaW5nLmdyYWIoc3RyLCBkZWxpbWl0ZXIpDQogICAg bG9jYWwgbGlzdCA9IHt9DQogICAgZm9yIHNuaXBwZXQgaW4gc3RyaW5nLmdm aW5kKHN0cixkZWxpbWl0ZXIpIGRvDQogICAgICAgIHRhYmxlLmluc2VydChs aXN0LCBzbmlwcGV0KQ0KICAgIGVuZA0KICAgIHJldHVybiBsaXN0DQplbmQN Cg0KZnVuY3Rpb24gc3RyaW5nLmpvaW4obGlzdCwgZGVsaW1pdGVyKQ0KICAg IGxvY2FsIHNpemUsIHN0ciA9IHRhYmxlLmxlbihsaXN0KSwgJycNCiAgICBp ZiBzaXplID4gMCB0aGVuDQogICAgICAgIHN0ciA9IGxpc3RbMV0NCiAgICAg ICAgZm9yIGkgPSAyLCBzaXplLCAxIGRvDQogICAgICAgICAgICBzdHIgPSBz dHIgLi4gZGVsaW1pdGVyIC4uIGxpc3RbaV0NCiAgICAgICAgZW5kDQogICAg ZW5kDQogICAgcmV0dXJuIHN0cg0KZW5kDQoNCmZ1bmN0aW9uIHN0cmluZy5z cGFjeShzdHIpDQogICAgaWYgc3RyaW5nLmZpbmQoc3RyLCJeJXMqJCIpIHRo ZW4NCiAgICAgICAgcmV0dXJuIHRydWUNCiAgICBlbHNlDQogICAgICAgIHJl dHVybiBmYWxzZQ0KICAgIGVuZA0KZW5kDQoNCmZ1bmN0aW9uIHN0cmluZy5h bHBoYWNtcChhLGIsaSkgLS0gc2xvdyBidXQgb2sNCiAgICBpZiBpIGFuZCBp ID4gMCB0aGVuDQogICAgICAgIHJldHVybiBzdHJpbmcubG93ZXIoc3RyaW5n LmdzdWIoc3RyaW5nLnN1YihhLGkpLCcwJywnICcpKSA8IHN0cmluZy5sb3dl cihzdHJpbmcuZ3N1YihzdHJpbmcuc3ViKGIsaSksJzAnLCcgJykpDQogICAg ZWxzZQ0KICAgICAgICByZXR1cm4gc3RyaW5nLmxvd2VyKGEpIDwgc3RyaW5n Lmxvd2VyKGIpDQogICAgZW5kDQplbmQNCg0KZnVuY3Rpb24gdGFibGUuYWxw aGFzb3J0KGxpc3QsaSkNCiAgICB0YWJsZS5zb3J0KGxpc3QsIGZ1bmN0aW9u KGEsYikgcmV0dXJuIHN0cmluZy5hbHBoYWNtcChhLGIsaSkgZW5kKQ0KZW5k DQoNCmZ1bmN0aW9uIGlvLmV4aXN0cyhmaWxlbmFtZSkNCiAgICBsb2NhbCBv aywgcmVzdWx0LCBtZXNzYWdlID0gcGNhbGwoaW8ub3BlbixmaWxlbmFtZSkN CiAgICBpZiByZXN1bHQgdGhlbg0KICAgICAgICBpby5jbG9zZShyZXN1bHQp DQogICAgICAgIHJldHVybiB0cnVlDQogICAgZWxzZQ0KICAgICAgICByZXR1 cm4gZmFsc2UNCiAgICBlbmQNCmVuZA0KDQpmdW5jdGlvbiBvcy5lbnZ2YXIo c3RyKQ0KICAgIGlmIG9zLmdldGVudihzdHIpIH49ICcnIHRoZW4NCiAgICAg ICAgcmV0dXJuIG9zLmdldGVudihzdHIpDQogICAgZWxzZWlmIG9zLmdldGVu dihzdHJpbmcudXBwZXIoc3RyKSkgfj0gJycgdGhlbg0KICAgICAgICByZXR1 cm4gb3MuZ2V0ZW52KHN0cmluZy51cHBlcihzdHIpKQ0KICAgIGVsc2VpZiBv cy5nZXRlbnYoc3RyaW5nLmxvd2VyKHN0cikpIH49ICcnIHRoZW4NCiAgICAg ICAgcmV0dXJuIG9zLmdldGVudihzdHJpbmcubG93ZXIoc3RyKSkNCiAgICBl bHNlDQogICAgICAgIHJldHVybiAnJw0KICAgIGVuZA0KZW5kDQoNCmZ1bmN0 aW9uIHN0cmluZy5leHBhbmQoc3RyKQ0KICAgIHJldHVybiBzdHJpbmcuZ3N1 YihzdHIsICJFTlYlKCgldyspJSkiLCBvcy5lbnZ2YXIpDQplbmQNCg0KZnVu Y3Rpb24gc3RyaW5nLnN0cmlwKHN0cikNCiAgICByZXR1cm4gc3RyaW5nLmdz dWIoc3RyaW5nLmdzdWIoc3RyLCJeJXMrIiwnJyksIiVzKyQiLCcnKQ0KZW5k DQoNCmZ1bmN0aW9uIHN0cmluZy5yZXBsYWNlKG9yaWdpbmFsLHBhdHRlcm4s cmVwbGFjZW1lbnQpDQogICAgbG9jYWwgc3RyID0gc3RyaW5nLmdzdWIob3Jp Z2luYWwscGF0dGVybixyZXBsYWNlbWVudCkNCi0tICAgICBwcmludChzdHIp IC0tIGluZGlyZWN0LCBzaW5jZSBlbHNlIHN0ciArIG5vZnN1YnMNCiAgICBy ZXR1cm4gc3RyIC0tIGluZGlyZWN0LCBzaW5jZSBlbHNlIHN0ciArIG5vZnN1 YnMNCmVuZA0KDQpcc3RvcExVQQ0KDQolIFx0aXRsZXtTb3VyY2UgQ29kZSBv ZiB0aGUgTW9kdWxlfQ0KDQolIFx0eXBldmltZmlsZVtudW1iZXJpbmc9b24s bnVtYmVyY29sb3I9cmVkLHN0ZXA9NV17XGpvYm5hbWUudGV4fQ0KDQpcc3Rv cHRleHQNCg0KJSB9fX0NCg== --8323328-1808475687-1248104073=:15108 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________ --8323328-1808475687-1248104073=:15108--