From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/115322 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Benjamin Buchmuller via ntg-context Newsgroups: gmane.comp.tex.context Subject: Re: Count (and limit) glyphs per line? Date: Sun, 26 Jun 2022 11:59:01 -0400 Message-ID: References: <252F31DD-EEDD-458C-9B54-5B7DFE420C3D@gmail.com> <5a679f35-3c56-b020-79ff-c8b8ac969601@telus.net> <384D9F49-B377-426F-B6FA-483F58945687@gmail.com> <436F4218-E4EC-4107-861B-B60385707E65@gmail.com> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\)) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6706"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Benjamin Buchmuller , mailing list for ConTeXt users To: Max Chernoff Original-X-From: ntg-context-bounces@ntg.nl Sun Jun 26 17:59:54 2022 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o5Ufy-0001XK-7r for gctc-ntg-context-518@m.gmane-mx.org; Sun, 26 Jun 2022 17:59:54 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 1EC952A3A80; Sun, 26 Jun 2022 17:59:11 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zxrU5UtILdBF; Sun, 26 Jun 2022 17:59:08 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id DCEF52A3A86; Sun, 26 Jun 2022 17:59:07 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id ECD142A3A85 for ; Sun, 26 Jun 2022 17:59:05 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W8SozHqRIrhK for ; Sun, 26 Jun 2022 17:59:04 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.219.42; helo=mail-qv1-f42.google.com; envelope-from=benjamin.buchmuller@gmail.com; receiver= Original-Received: from mail-qv1-f42.google.com (mail-qv1-f42.google.com [209.85.219.42]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 5721E2A3A80 for ; Sun, 26 Jun 2022 17:59:04 +0200 (CEST) Original-Received: by mail-qv1-f42.google.com with SMTP id p31so11680861qvp.5 for ; Sun, 26 Jun 2022 08:59:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:mime-version:subject:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=iLBu+dk6QFX8DjcsLrzc70+QhdmGlkXGMfBQaiZ6v4U=; b=gOPPLDSSAvQtf2d6VpPvx3Nb3NbeLuKhO0TbvYAKlY6KJ0kjXf6K00+8fb6PEP5c5M tgRg9hKBoCovxGJO5qZ2vkl369VtRJ15U7xKjuUYBImWdcKvumgXhDaDon3MoMabaH41 fuU5rVDPzSNKEA34JKCU7Fpu0DvarlNBHx/lwgVvkRxE3Slo+1L5x26KT/QenVoIaFYb nUsGOAGxn9QkfLGO6RAHnolaqZmo0IwqI/xCmfkMkYM+QmVzQjUSHvhbmePQIaXTyqt8 eoREarXvgnCehb1Z53+VlcA1WqnBD8dcc9hW94T/1DTRfxL0sLk8nQP6GslSbFaPMGGb nRCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:subject:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=iLBu+dk6QFX8DjcsLrzc70+QhdmGlkXGMfBQaiZ6v4U=; b=0iaaGzX0j13nSd7kexB6Ke7SZ229OLGHPI0Kcby1//CS1QpfANFavtiJLerUk8CEzV esOs50Lfb6xzhr+OxC93xfos0vtUmdwBddaVaaZOSdWF251a9Ws/370ouVSfbgSoNNFM kdnmY7Wh6vGYIOOhKgBhFkUN45yrYpKh929OfNUNqj48U0yzlvhAiZhnygG9MwoSSNaD xGdpWk6a2CjRW55yoa6h8inkbeTMvNX+u/6hw7vGGUs2Cq8hCudsO7+7JhAEXpU37QRg ZK1afbacyqhVKTslxnvDHdHEcRebljCZ1w+h+XYF2YYVNvausPx194YIeQ1EFmH+t/KS IcPg== X-Gm-Message-State: AJIora/NRc1Pw4NL+dmXCXdxVvs6NzlN660AJia/1117qHVPtappaHNc mt/hyAEgS/1SjP3rNATX1t4= X-Google-Smtp-Source: AGRyM1sDVgcW3v0aI6NRk0ibzDgyD6tGX+ffO085MKP62EJWtxW2BkPCfOcy8GLBu7VW0z8TUnSmYA== X-Received: by 2002:ac8:598d:0:b0:305:25ad:2f1e with SMTP id e13-20020ac8598d000000b0030525ad2f1emr6622030qte.237.1656259142729; Sun, 26 Jun 2022 08:59:02 -0700 (PDT) Original-Received: from smtpclient.apple (nat-wireless-140-180-240-87.princeton.edu. [140.180.240.87]) by smtp.gmail.com with ESMTPSA id ay41-20020a05620a17a900b006af0d99c7fesm3262438qkb.132.2022.06.26.08.59.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jun 2022 08:59:02 -0700 (PDT) X-Google-Original-From: Benjamin Buchmuller In-Reply-To: X-Mailer: Apple Mail (2.3696.100.31) X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:115322 Archived-At: SGkgTWF4LCAKClRoYW5rIHlvdSBzbyBtdWNoIGZvciB5b3VyIGhlbHAgYW5kIHBvaW50aW5nIG1l IHRvIHRoZSBkb2N1bWVudHM7IGFsd2F5cyBhIGxvdCBvZiB0aGluZ3MgdG8gbGVhcm4gaW4gVGVY IQoKSSdtIGFmcmFpZCB0aGF0IGluY2x1ZGluZyB0aGUgaHlwaGVuIHdpZHRoIGRvZXNuJ3Qgc29s dmUgdGhlIGlzc3VlIHlldC4gSXQgc2VlbXMgdG8gbW92ZSB0aGUgcHJvYmxlbSB0byBvdGhlciBw YXJ0cyBvZiB0aGUgdGV4dC4gTXkgZ3Vlc3MgaXMgdGhhdCBvbmUgY291bGQgZXF1aXZhbGVudGx5 IGhhdmUgc2FpZCAibG9jYWwgbWF4X2xlbmd0aCA9IDExMSIsIHJpZ2h0PwoKSSBtYWRlIHRoZSBm b2xsb3dpbmcgTVdFIChyZXByb2R1Y2libGUgYWxzbyBvbmxpbmUpIHRvIGlsbHVzdHJhdGUgd2hh dCBJIHNlZTogCgoqIEhlcmUsIGluc3RlYWQgb2YgYSBicmVha2luZyBwb2ludCwgdGhlIHRyb3Vi bGUgaXMgY2F1c2VkIGJ5IG5vdCBiZWluZyBhYmxlIHRvIGJyZWFrIGl0LiBUaGlzIGNhdXNlcyB0 aGUgbmV4dCBsaW5lIHRvIGJlIHVuZGVyZnVsbC4gKEkgZ2V0IGEgbG90IG9mIHRoZXNlLCBidXQg YWxzbyBzb21lIHdpdGggaHlwaGVuYXRlZCBicmVha3BvaW50cywgaW4gbXkgb3duIGRvY3VtZW50 LiBNYXliZSB0aGUgaW5zZXJ0aW9uIHBvaW50IG9mIHRoZSBwZW5hbHR5L2JyZWFraW5nIGJvbnVz IG5lZWRzIHRvIG1vdmUgdXA/KSAKCiogUnVubmluZyB3aXRoIGhzaXplIG9ubHkgbWFrZXMgdGhl IHByb2JsZW0gd29yc2UgaW4gaXRlbWl6YXRpb25zLCBzbyBJIHRoaW5rIGxvY2FsaHNpemUgaXMg dGhlIHdheSB0byBnby4gTXkgZ3Vlc3MsIGxvY2FsaHNpemUgaXMgdGhlIHdpZHRoIG9mIHRoZSAi dGV4dCIgcGFydCBvZiBhIHBhcmFncmFwaCwgZm9yIGV4YW1wbGUsIGV4Y2x1ZGluZyB0aGUgc3lt Ym9scyBpbiB0aGUgaXRlbWl6YXRpb24uCgooTW9yZSB0aG91Z2h0cyBiZWxvdykKClxzdGFydGx1 YWNvZGUKICAgICAgIGxvY2FsIG1heF9sZW5ndGggPSAxMTIKCiAgICAgICBsb2NhbCBnbHlwaF9p ZCA9IG5vZGUuaWQgImdseXBoIgogICAgICAgbG9jYWwgZGlzY19pZCA9IG5vZGUuaWQgImRpc2Mi CiAgICAgICBsb2NhbCBnbHVlX2lkID0gbm9kZS5pZCAiZ2x1ZSIKCiAgICAgICBmdW5jdGlvbiB1 c2VyZGF0YS5saW1pdGVyKGhlYWQpCiAgICAgICAgICAgaGVhZCA9IGxhbmd1YWdlLmh5cGhlbmF0 ZShoZWFkKQoKICAgICAgICAgICBsb2NhbCBoeXBoZW4gPSBub2RlLm5ldyAiZ2x5cGgiCiAgICAg ICAgICAgaHlwaGVuLmNoYXIgPSBsYW5ndWFnZS5wcmVoeXBoZW5jaGFyKDApCiAgICAgICAgICAg aHlwaGVuLmZvbnQgPSBmb250LmN1cnJlbnQoKQogICAgICAgICAgIGxvY2FsIHdpZHRoID0gaHlw aGVuLndpZHRoCiAgICAgICAgICAgbm9kZS5mcmVlKGh5cGhlbikKCiAgICAgICAgICAgbG9jYWwg Y2hhcnMgPSAwCiAgICAgICAgICAgbG9jYWwgbiA9IGhlYWQKICAgICAgICAgICB3aGlsZSBuIGRv CiAgICAgICAgICAgICAgIGlmIG4uaWQgPT0gZ2x5cGhfaWQgb3Igbi5pZCA9PSBnbHVlX2lkIHRo ZW4KICAgICAgICAgICAgICAgICAgIGNoYXJzID0gY2hhcnMgKyAxCiAgICAgICAgICAgICAgICAg ICB3aWR0aCA9IHdpZHRoICsgbi53aWR0aCAtIChuLnNocmluayBvciAwKQogICAgICAgICAgICAg ICBlbmQKCiAgICAgICAgICAgICAgIGxvY2FsIGxvY2FsaHNpemUgPSB0ZXguZGltZW5bInRleHR3 aWR0aCJdCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBpZiB0ZXguZGltZW5bImxvY2Fs aHNpemUiXSA+IDAgdGhlbgogICAgICAgICAgICAgICAgICAgbG9jYWxoc2l6ZSA9IHRleC5kaW1l blsibG9jYWxoc2l6ZSJdCiAgICAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgICAgaWYgY2hh cnMgPj0gbWF4X2xlbmd0aCBvciB3aWR0aCA+IGxvY2FsaHNpemUgdGhlbgogICAgICAgICAgICAg ICAgICAgbG9jYWwgYmFja19jaGFycyA9IDAKICAgICAgICAgICAgICAgICAgIGxvY2FsIGVuZF9k aXNjID0gbmlsCgogICAgICAgICAgICAgICAgICAgd2hpbGUgbiBkbwogICAgICAgICAgICAgICAg ICAgICAgIGlmIG4uaWQgPT0gZ2x1ZV9pZCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAg IGxvY2FsIHBlbmFsdHkgPSBub2RlLm5ldyAicGVuYWx0eSIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGVuYWx0eS5wZW5hbHR5ID0gLTEwMDAwCiAgICAgICAgICAgICAgICAgICAgICAgICAg IG5vZGUuaW5zZXJ0YmVmb3JlKGhlYWQsIG4sIHBlbmFsdHkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAg ICAgICAgIGlmIG5vdCBlbmRfZGlzYyBhbmQgbi5pZCA9PSBkaXNjX2lkIHRoZW4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW5kX2Rpc2MgPSBuCiAgICAgICAgICAgICAgICAgICAgICAgZW5k CgogICAgICAgICAgICAgICAgICAgICAgIGlmIGVuZF9kaXNjIGFuZCBiYWNrX2NoYXJzID49IDUg dGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfZGlzYy5wZW5hbHR5ID0gLTEwMDAw CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAg ZW5kCgogICAgICAgICAgICAgICAgICAgICAgIGlmIG4uaWQgPT0gZ2x5cGhfaWQgdGhlbgogICAg ICAgICAgICAgICAgICAgICAgICAgICBiYWNrX2NoYXJzID0gYmFja19jaGFycyArIDEKICAgICAg ICAgICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgICAgICAgICAgbiA9IG4ucHJldgog ICAgICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAgICAgd2lkdGggPSAwCiAgICAg ICAgICAgICAgICAgICBjaGFycyA9IDAKICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAg ICBuID0gbi5uZXh0CiAgICAgICAgICAgZW5kCgogICAgICAgICAgIHJldHVybiBoZWFkCiAgICAg ICBlbmQKCiAgICAgICBub2Rlcy50YXNrcy5hcHBlbmRhY3Rpb24oCiAgICAgICAgICAgInByb2Nl c3NvcnMiLAogICAgICAgICAgICJiZWZvcmUiLAogICAgICAgICAgICJ1c2VyZGF0YS5saW1pdGVy IgogICAgICAgKQogICBcc3RvcGx1YWNvZGUKCiAgIFxzZXR1cHBhcGVyc2l6ZVtBNV0KICAgXHNo b3dmcmFtZQoKICAgXHN0YXJ0dGV4dAoJCQoJCVRoaXMgaXMgdGV4dCB3aWR0aDoKCSAgIFxjdHhs dWF7Y29udGV4dCh0ZXguZGltZW5bInRleHR3aWR0aCJdKX0KCSAgIAoJICAgVGhpcyBpcyBoc2l6 ZToKCSAgIFxjdHhsdWF7Y29udGV4dCh0ZXguZGltZW5bImhzaXplIl0pfQoJICAgCgkgICBUaGlz IGlzIGxvY2FsaHNpemU6CgkgICBcY3R4bHVhe2NvbnRleHQodGV4LmRpbWVuWyJsb2NhbGhzaXpl Il0pfQoKCSAgIFxzdGFydGl0ZW1pemVbd2lkdGg9NWVtXQoJICAgCgkgICBcaXRlbSBUaHVzLCBJ IGNhbWUgdG8gdGhlIGNvbmNsdXNpb24gdGhhdCB0aGUgXGhib3h7ZGXCrXNpZ25lcn0gb2YgYSBu ZXcgc3lzdGVtIG11c3Qgbm90IG9ubHkgYmUgdGhlIGltcGxlbWVudGVyIGFuZCBmaXJzdCBsYXJn ZS0tc2NhbGUgdXNlcjsgdGhlIGRlwq0gc2lnbmVyIHNob3VsZCBhbHNvIHdyaXRlIHRoZSBmaXJz dCB1c2VyIG1hbnVhbC4KCgkgICBcaXRlbSBcc2FtcGxlZmlsZXtrbnV0aH0KCgkJVGhpcyBpcyB0 ZXh0IHdpZHRoOgoJICAgXGN0eGx1YXtjb250ZXh0KHRleC5kaW1lblsidGV4dHdpZHRoIl0pfQoJ ICAgCgkgICBUaGlzIGlzIGhzaXplOgoJICAgXGN0eGx1YXtjb250ZXh0KHRleC5kaW1lblsiaHNp emUiXSl9CgkgICAKCSAgIFRoaXMgaXMgbG9jYWxoc2l6ZToKCSAgIFxjdHhsdWF7Y29udGV4dCh0 ZXguZGltZW5bImxvY2FsaHNpemUiXSl9CgoJICAgXHN0b3BpdGVtaXplCgkgICAJICAgCiAgIFxz dG9wdGV4dAoKSSdtIHdvbmRlcmluZyBpZiBJIGRvIHVuZGVyc3RhbmQgdGhlIHNlY29uZCB3aGls ZSBsb29wIGNvcnJlY3RseToKCiogT25jZSB3ZSBmaW5kIHRoZSBub2RlIHRoYXQgZXhjZWVkcyBl aXRoZXIgdGhlIGNoYXJhY3RlciBsaW1pdCBvciB0aGUgKGxvY2FsLSloc2l6ZSAoZ2x5cGhzIGFu ZCBnbHVlcyBzdW1tZWQsIGZvciBkaXNjIHdlIGFkZCBoeXBoZW4ud2lkdGgsIGRvIHdlPyksIHRo ZW4gd2UgaW5zZXJ0IGFuIGluY3JlZGlibHkgZ29vZCBicmVha2luZyBwb2ludCBmb3IgYSBuZXcg bGluZS4gQW5kIGV4aXQgdGhlIGxvb3AuCgoqIFRoZSBvdGhlciBjYXNlcyBzdGlsbCBzZWVtIGEg Yml0IG9ic2N1cmUgdG8gbWUsIGFuZCBJIHRyaWVkIHRvIHRyYWNlIHdoZXJlIGVhY2ggb2YgdGhl bSBtaWdodCBiZSB0cmlnZ2VyZWQ6CgogICAgICAgICAgICAgICAgICAgICAgIGlmIG4uaWQgPT0g Z2x1ZV9pZCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIHBlbmFsdHkgPSBu b2RlLm5ldyAicGVuYWx0eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuYWx0eS5wZW5h bHR5ID0gLTEwMDAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuaW5zZXJ0YmVmb3Jl KGhlYWQsIG4sIHBlbmFsdHkpCgkJCQkJCSAgIGNvbnRleHQuaW5yaWdodG1hcmdpbigiZ2x1ZSIp CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAg ZW5kCgogICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBlbmRfZGlzYyBhbmQgbi5pZCA9PSBk aXNjX2lkIHRoZW4KCQkJCQkgICAJICAgY29udGV4dC5pbnJpZ2h0bWFyZ2luKCJkaXNjIikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2Rpc2MgPSBuCiAgICAgICAgICAgICAgICAgICAg ICAgZW5kCgogICAgICAgICAgICAgICAgICAgICAgIGlmIGVuZF9kaXNjIGFuZCBiYWNrX2NoYXJz ID49IDUgdGhlbgoJCQkJCSAgICAgICBjb250ZXh0LmlucmlnaHRtYXJnaW4oImVuZCIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZF9kaXNjLnBlbmFsdHkgPSAtMTAwMDAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICBlbmQKCiAgICAg ICAgICAgICAgICAgICAgICAgaWYgbi5pZCA9PSBnbHlwaF9pZCB0aGVuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRleHQuaW5yaWdodG1hcmdpbigiZ2x5cGgiKQoJCQkJCQkgICBiYWNr X2NoYXJzID0gYmFja19jaGFycyArIDEKICAgICAgICAgICAgICAgICAgICAgICBlbmQKCkknbSBt YXliZSBkb2luZyB0aGlzIHdyb25nLCBidXQgSSBzZWUgdGhlc2UgY29uZGl0aW9ucyB0cmlnZ2Vy ZWQgbW9yZSBvZnRlbiB0aGFuIHByb2JhYmx5IGV4cGVjdGVkIGZvciBhIDI1IGxpbmUgZG9jdW1l bnQ/IAoKICAgIGxvY2FsIGNvdW50X21lID0gMCAKCiAgICAuLi4KCiAgICBpZiBjaGFycyA+PSBt YXhfbGVuZ3RoIG9yIHdpZHRoID4gbG9jYWxoc2l6ZSB0aGVuCiAgICAgICAgICAgICAgICAgICBs b2NhbCBiYWNrX2NoYXJzID0gMAogICAgICAgICAgICAgICAgICAgbG9jYWwgZW5kX2Rpc2MgPSBu aWwKCiAgICAgICAgICAgICAgICAgICB3aGlsZSBuIGRvCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvY2FsIGNoZWNrID0gImdseXBoIgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgY291bnRfbWUgPSBjb3VudF9tZSArIDEKICAgICAgICAgICAgICAg ICAgICAgICBpZiBuLmlkID09IGdsdWVfaWQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAg ICBsb2NhbCBwZW5hbHR5ID0gbm9kZS5uZXcgInBlbmFsdHkiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBlbmFsdHkucGVuYWx0eSA9IC0xMDAwMAogICAgICAgICAgICAgICAgICAgICAgICAg ICBub2RlLmluc2VydGJlZm9yZShoZWFkLCBuLCBwZW5hbHR5KQogICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250ZXh0LmlucmlnaHRtYXJnaW4oIlxcY29sb3JbcmVkXXsiIC4uIHN0cmluZy5y ZXAoIl8iLCBjb3VudF9tZSkgLi4gY291bnRfbWUgLi4gIn0iKQogICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBlbmRfZGlzYyBhbmQgbi5pZCA9 PSBkaXNjX2lkIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX2Rpc2MgPSBuCiAg ICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgLS0KICAgICAgICAgICAgICAgICAgICAgICBpZiBlbmRfZGlzYyBhbmQg YmFja19jaGFycyA+PSA1IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5p bnJpZ2h0bWFyZ2luKCJcXGNvbG9yW2JsdWVdeyIgLi4gc3RyaW5nLnJlcCgiXyIsIGNvdW50X21l KSAuLiBjb3VudF9tZSAuLiAifSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9kaXNj LnBlbmFsdHkgPSAtMTAwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAg ICAgICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgICAgICAgICAgICAgaWYgbi5pZCA9PSBn bHlwaF9pZCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuaW5yaWdodG1h cmdpbigiXFxjb2xvcltibGFja117IiAuLiBzdHJpbmcucmVwKCJfIiwgY291bnRfbWUpIC4uIGNv dW50X21lIC4uICJ9IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja19jaGFycyA9IGJh Y2tfY2hhcnMgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAg ICAgICAgIG4gPSBuLnByZXYKICAgICAgICAgICAgICAgICAgIGVuZAoKTWFueSB0aGFua3MgYWdh aW4hCgoKQmVuamFtaW4KCgo+IE9uIEp1biAyNSwgMjAyMiwgYXQgMTc6NDAsIE1heCBDaGVybm9m ZiA8bXNldmVuQHRlbHVzLm5ldD4gd3JvdGU6Cj4gCj4+IEl0J3MgYWxzbyBhIHZlcnkgaW5zaWdo dGZ1bCBleGFtcGxlIG9mIGhvdyB0byB1c2UgYW5kIGluamVjdCBMdWEgY29kZSBpbiB0aGUgVGVY IG91dHB1dCByb3V0aW5lLiAKPiAKPiBUaGlzIGlzIGluamVjdGluZyBMdWEgY29kZSBiZWZvcmUg dGhlIHBhcmFncmFwaCBidWlsZGVyLCBub3QgaW4gdGhlIG91dHB1dCByb3V0aW5lLiBTb21ldGhp bmcgbGlrZSBodHRwczovL3RleC5zdGFja2V4Y2hhbmdlLmNvbS9hLzY0NDYxMy8yNzA2MDAgb3Ig bXkgbW9kdWxlICJsdWEtd2lkb3ctY29udHJvbCIgd291bGQgYmUgYW4gZXhhbXBsZSBvZiBMdWEg Y29kZSBpbiB0aGUgb3V0cHV0IHJvdXRpbmUuCj4gCj4+IERvIHlvdSBtaW5kIGlmIEkgYWRkIGl0 IHRvIHRoZSB3aWtpPyAoUHJvYmFibHkgdW5kZXIgIldyYXBwaW5nIi4pCj4gCj4gU3VyZQo+IAo+ PiBIb3dldmVyLCB0ZXgubG9jYWxoc2l6ZSAob3IgdGV4LmRpbWVuWyJsb2NhbGhzaXplIl0pIGlz IDAgd2hlbiB0aGUgZG9jdW1lbnQgaXMgaW5pdGlhbGl6ZWQuIChNYXliZSBhIG1vcmUgc2Vuc2li bGUgZGVmYXVsdCB3b3VsZCBiZSB0ZXh0d2lkdGggcmF0aGVyIHRoYW4gMD8pCj4+IFNvLCBJIGFk ZGVkOgo+PiAJbG9jYWwgbG9jYWxoc2l6ZSA9IHRleC5kaW1lblsidGV4dHdpZHRoIl0KPj4gCQkJ Cj4+IAlpZiB0ZXguZGltZW5bImxvY2FsaHNpemUiXSA+IDAgdGhlbgo+PiAJCWxvY2FsaHNpemUg PSB0ZXguZGltZW5bImxvY2FsaHNpemUiXQo+PiAJZW5kCj4+ICAgICAgICAgaWYgY2hhcnMgPj0g bWF4X2xlbmd0aCBvciB3aWR0aCA+IGxvY2FsaHNpemUgdGhlbgo+IAo+IEkgZG9uJ3QgdGhpbmsg dGhhdCdzIG5lY2Vzc2FyeS4gXGhzaXplIGlzIGEgcHJpbWl0aXZlIFRlWCBwYXJhbWV0ZXIgdGhh dCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgcGFyYWdyYXBoLiBJdCBtYXkgYmUgemVybyBhdCB0aGUg c3RhcnQgb2YgdGhlIGRvY3VtZW50LCBidXQgaXQgaXMgZGVmaW5pdGVseSBub24temVybyBieSB0 aGUgZW5kIG9mIGV2ZXJ5IHBhcmFncmFwaC4KPiAKPiBUaGUgTHVhIGZ1bmN0aW9uIGdldHMgdGhl IGN1cnJlbnQgdmFsdWUgb2YgXGhzaXplIGF0IHRoZSBlbmQgb2YgZXZlcnkgcGFyYWdyYXBoLCBz byBpdCBzaG91bGQgYmUgdXNpbmcgdGhlIGV4YWN0IHNhbWUgdmFsdWUgdGhhdCBUZVgncyBwYXJh Z3JhcGggYnVpbGRlciB1c2VzLCBtZWFuaW5nIHRoYXQgaXQgc2hvdWxkIGFjY291bnQgZm9yIGl0 ZW1pemF0aW9ucyBhbmQgc3VjaC4gSSdtIG5vdCByZWFsbHkgc3VyZSB3aGF0IFxsb2NhbGhzaXpl IGlzLCBidXQgaXQncyBwcm9iYWJseSBzaW1pbGFyIHRvIFxoc2l6ZS4KPj4gKDIpIEknbSAobm93 PykgcnVubmluZyBpbnRvIHRyb3VibGUgd2l0aCBoeXBoZW5hdGlvbi4KPj4gSW4gbXkgb3duIGRv Y3VtZW50LCBJIGFsc28gZ2V0IGxpbmVzIHdpdGggb25seSBhIHNpbmdsZSBjaGFyYWN0ZXIgb3Ig aGJveGVkIGdyb3VwLiBJIGFzc3VtZSwgdGhpcyBpcyBiZWNhdXNlIHRoZSBoeXBoZW4gaXMgbm90 IGNvdW50ZWQgYW5kIHB1c2hlcyB0aGUgcmVtYWluZGVyIHRvIGEgbmV3IGxpbmUgd2hlcmUgdGhl IGludGVuZGVkIGJyZWFrcG9pbnQgYWdhaW4gc3RhcnRzIGFub3RoZXIgb25lLgo+IAo+IFRyeSB0 aGlzOgo+IAo+ICAgIFxzdGFydGx1YWNvZGUKPiAgICAgICAgbG9jYWwgbWF4X2xlbmd0aCA9IDEx Mgo+IAo+ICAgICAgICBsb2NhbCBnbHlwaF9pZCA9IG5vZGUuaWQgImdseXBoIgo+ICAgICAgICBs b2NhbCBkaXNjX2lkID0gbm9kZS5pZCAiZGlzYyIKPiAgICAgICAgbG9jYWwgZ2x1ZV9pZCA9IG5v ZGUuaWQgImdsdWUiCj4gCj4gICAgICAgIGZ1bmN0aW9uIHVzZXJkYXRhLmxpbWl0ZXIoaGVhZCkK PiAgICAgICAgICAgIGxhbmd1YWdlLmh5cGhlbmF0ZShoZWFkKQo+IAo+ICAgICAgICAgICAgbG9j YWwgaHlwaGVuID0gbm9kZS5uZXcgImdseXBoIgo+ICAgICAgICAgICAgaHlwaGVuLmNoYXIgPSBs YW5ndWFnZS5wcmVoeXBoZW5jaGFyKDApCj4gICAgICAgICAgICBoeXBoZW4uZm9udCA9IGZvbnQu Y3VycmVudCgpCj4gICAgICAgICAgICBsb2NhbCB3aWR0aCA9IGh5cGhlbi53aWR0aAo+ICAgICAg ICAgICAgbm9kZS5mcmVlKGh5cGhlbikKPiAKPiAgICAgICAgICAgIGxvY2FsIGNoYXJzID0gMAo+ ICAgICAgICAgICAgbG9jYWwgbiA9IGhlYWQKPiAgICAgICAgICAgIHdoaWxlIG4gZG8KPiAgICAg ICAgICAgICAgICBpZiBuLmlkID09IGdseXBoX2lkIG9yIG4uaWQgPT0gZ2x1ZV9pZCB0aGVuCj4g ICAgICAgICAgICAgICAgICAgIGNoYXJzID0gY2hhcnMgKyAxCj4gICAgICAgICAgICAgICAgICAg IHdpZHRoID0gd2lkdGggKyBuLndpZHRoIC0gKG4uc2hyaW5rIG9yIDApCj4gICAgICAgICAgICAg ICAgZW5kCj4gCj4gICAgICAgICAgICAgICAgaWYgY2hhcnMgPj0gbWF4X2xlbmd0aCBvciB3aWR0 aCA+IHRleC5oc2l6ZSB0aGVuCj4gICAgICAgICAgICAgICAgICAgIGxvY2FsIGJhY2tfY2hhcnMg PSAwCj4gICAgICAgICAgICAgICAgICAgIGxvY2FsIGVuZF9kaXNjID0gbmlsCj4gCj4gICAgICAg ICAgICAgICAgICAgIHdoaWxlIG4gZG8KPiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG4uaWQg PT0gZ2x1ZV9pZCB0aGVuCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgcGVuYWx0 eSA9IG5vZGUubmV3ICJwZW5hbHR5Igo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmFs dHkucGVuYWx0eSA9IC0xMDAwMAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuaW5z ZXJ0YmVmb3JlKGhlYWQsIG4sIHBlbmFsdHkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWsKPiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAo+IAo+ICAgICAgICAgICAgICAgICAg ICAgICAgaWYgbm90IGVuZF9kaXNjIGFuZCBuLmlkID09IGRpc2NfaWQgdGhlbgo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVuZF9kaXNjID0gbgo+ICAgICAgICAgICAgICAgICAgICAgICAg ZW5kCj4gCj4gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbmRfZGlzYyBhbmQgYmFja19jaGFy cyA+PSA1IHRoZW4KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfZGlzYy5wZW5hbHR5 ID0gLTEwMDAwCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKPiAgICAgICAgICAg ICAgICAgICAgICAgIGVuZAo+IAo+ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbi5pZCA9PSBn bHlwaF9pZCB0aGVuCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja19jaGFycyA9IGJh Y2tfY2hhcnMgKyAxCj4gICAgICAgICAgICAgICAgICAgICAgICBlbmQKPiAKPiAgICAgICAgICAg ICAgICAgICAgICAgIG4gPSBuLnByZXYKPiAgICAgICAgICAgICAgICAgICAgZW5kCj4gCj4gICAg ICAgICAgICAgICAgICAgIHdpZHRoID0gMAo+ICAgICAgICAgICAgICAgICAgICBjaGFycyA9IDAK PiAgICAgICAgICAgICAgICBlbmQKPiAKPiAgICAgICAgICAgICAgICBuID0gbi5uZXh0Cj4gICAg ICAgICAgICBlbmQKPiAKPiAgICAgICAgICAgIHJldHVybiBoZWFkCj4gICAgICAgIGVuZAo+IAo+ ICAgICAgICBub2Rlcy50YXNrcy5hcHBlbmRhY3Rpb24oCj4gICAgICAgICAgICAicHJvY2Vzc29y cyIsCj4gICAgICAgICAgICAiYmVmb3JlIiwKPiAgICAgICAgICAgICJ1c2VyZGF0YS5saW1pdGVy Igo+ICAgICAgICApCj4gICAgXHN0b3BsdWFjb2RlCj4gCj4gSSd2ZSBqdXN0IGFkZGVkIHRoZSB3 aWR0aCBvZiBhIGh5cGhlbiB0byB0aGUgYWNjdW11bGF0ZWQgd2lkdGguIExldCBtZSBrbm93IGlm IHRoaXMgd29ya3M7IGlmIG5vdCwgdGhlcmUncyBhIG1vcmUgY29tcGxleCBmaXggdGhhdCBJIGNh biB0cnkuCj4gCj4+IFVuZm9ydHVuYXRlbHksIEkgZG9uJ3Qga25vdyB3aGF0IHRvIGNoYW5nZTsg SSBrbm93IGEgYml0IGFib3V0ICJnbHlwaCIgYW5kICJnbHVlIiwgYnV0IHdoYXQgaXMgImRpc2Mi IGFuZCB3b3VsZCBpdCBoZWxwIGhlcmU/Cj4gCj4gImRpc2MiIG5vZGVzIGFyZSAiZGlzY3JldGlv bmFyaWVzIiwgd2hpY2ggYXJlIHVzdWFsbHkgcG90ZW50aWFsIGh5cGhlbnMuIFNlZSAiVGhlIFRl WGJvb2siIChwYWdlIDk1KSBvciAiVGVYIGJ5IFRvcGljIiAoaHR0cHM6Ly90ZXhkb2Mub3JnL3Nl cnZlL3RleGJ5dG9waWMvMCNzdWJzZWN0aW9uLjE5LjMuMSkgZm9yIGRldGFpbHMgb24gdGhlIFRl WCBzaWRlLCBvciB0aGUgTHVhTWV0YVRlWCBtYW51YWwgKGh0dHBzOi8vd3d3LnByYWdtYS1hZGUu Y29tL2dlbmVyYWwvbWFudWFscy9sdWFtZXRhdGV4LnBkZiMlMjMxMjA1KSBmb3IgZGV0YWlscyBv biB0aGUgTHVhIHNpZGUuCj4gCj4gLS0gTWF4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ ZiB5b3VyIHF1ZXN0aW9uIGlzIG9mIGludGVyZXN0IHRvIG90aGVycyBhcyB3ZWxsLCBwbGVhc2Ug YWRkIGFuIGVudHJ5IHRvIHRoZSBXaWtpIQoKbWFpbGxpc3QgOiBudGctY29udGV4dEBudGcubmwg LyBodHRwOi8vd3d3Lm50Zy5ubC9tYWlsbWFuL2xpc3RpbmZvL250Zy1jb250ZXh0CndlYnBhZ2Ug IDogaHR0cDovL3d3dy5wcmFnbWEtYWRlLm5sIC8gaHR0cDovL2NvbnRleHQuYWFuaGV0Lm5ldAph cmNoaXZlICA6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9waGcvY29udGV4dC1taXJyb3IvY29tbWl0 cy8Kd2lraSAgICAgOiBodHRwOi8vY29udGV4dGdhcmRlbi5uZXQKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18K