From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Elijah G Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Flymake Support Indicator Errors in Margin Date: Sat, 6 Apr 2024 14:14:34 -0600 Message-ID: References: <87r0gfajlh.fsf@posteo.net> <868r2mtjdk.fsf@gnu.org> <86msr19ipu.fsf@gnu.org> <864jd677qh.fsf@gnu.org> <87jzm0iza9.fsf@catern.com> <87cyrsitqw.fsf@catern.com> <871q7w4jn7.fsf@catern.com> <86edbi3eqw.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000003622f50615733980" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38363"; mail-complaints-to="usenet@ciao.gmane.io" Cc: sbaugh@catern.com, sbaugh@janestreet.com, philipk@posteo.net, emacs-devel@gnu.org, luangruo@yahoo.com To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 06 22:15:39 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rtCRu-0009ob-IK for ged-emacs-devel@m.gmane-mx.org; Sat, 06 Apr 2024 22:15:38 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtCR8-0005zj-JU; Sat, 06 Apr 2024 16:14:50 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rtCR6-0005zV-V0 for emacs-devel@gnu.org; Sat, 06 Apr 2024 16:14:49 -0400 Original-Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtCR5-0006Da-8j; Sat, 06 Apr 2024 16:14:48 -0400 Original-Received: by mail-qk1-x741.google.com with SMTP id af79cd13be357-78d3c66ee65so259977885a.1; Sat, 06 Apr 2024 13:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712434485; x=1713039285; darn=gnu.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=QsPTyR97qFrcYg0YuleTWTqTq+Z5M/pbmdZRwujbl7k=; b=TBSMa++t7EcVe7nJCNMMkBc+jDWZVcocDx3WUdgBS1HxbDgL4NJZsEQDIKq9pIt2d5 XKBFPUO3Zi2YTeZIqrNfGJZ/f2oeRWmHbk5BBR3/vnUEXZULwpXr7f7NxI+qdh2HkRDD Vv5M1NsCgYwgJa0mqJ5wnHvzRDDyHC1e9IbtFsTcXVPZbLjhqtP4awPfoIhuaZAScvWN PMXaZ+vgOtKBYi3cO/LGUB6oGZ7XOadMPwxxsxDxLjt+bhubP/44ZGaIGDSwW4tzr90h cxL3oFvUiLbNwh+QLqTOnKMIUnI/POQmdI2S8LCaLdO83/Ua4kRbh7Tiqs/9tsrnQpxO haFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712434485; x=1713039285; 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=QsPTyR97qFrcYg0YuleTWTqTq+Z5M/pbmdZRwujbl7k=; b=Dil+iJigZ/53ohYYL/bYgGiZbrun2vdvxViQjc+kveRDbkta9x0gbiwkJhiuLAPudI sXc4gcmKSKmKyn5Germm9qPymyolEzyved4rBY+R7auhdx9d4rT1j5VaOmO/TtV/2oKE +MGRbd4kqyXwKakwlu/bQ+8yAgiZsfePkhIxQLBwTI6mIvC3CP8jNwpHeRql9+iMFIuW Bkca5tFVz4zlW11kwP8PpYAwCAE/9E3Jy3iUJ+YkplkJ/Tx6tvgEe29Iw/uf5TVm5dQJ BNw1+82yghLxSxhwTeYSAqv5uWzpvOluXAA65nC0IrO0So7ufAp00AV6kJY5N5dEM6aq gL3g== X-Forwarded-Encrypted: i=1; AJvYcCVl254EKa1ITLoh0+nly1gA67R8vrJXSY/+x4ZVot5wtyHNJcXjFtUXZOlp+99jlHIGBxynrS0FPQySghF74fFBGIKa X-Gm-Message-State: AOJu0YyV/Xk/dv5ybuagSKR9rSuMcG59p9aFuj7b903pptru3MouWMTC s/1F+5OyuNlhLPJ5TTiQYnCzn9AWhqYtHSut/9w+jhiWbZxWKFtLip5nQ+9SE6sffKb0rhUw/bw 03xMEx94YLo/2a8tjd6iMn4T+yF771TEA8RB5Yw== X-Google-Smtp-Source: AGHT+IFFIRVq2Q78lWpu9sgnV+2gUSJpPGwzRBnLkFby61YkT0YIXcp+ACxa+gCEgzpYXNKch0irKnNMZdqJZU9G2RE= X-Received: by 2002:a05:620a:1b81:b0:78d:49ec:7f6f with SMTP id dv1-20020a05620a1b8100b0078d49ec7f6fmr8286428qkb.30.1712434485518; Sat, 06 Apr 2024 13:14:45 -0700 (PDT) In-Reply-To: <86edbi3eqw.fsf@gnu.org> Received-SPF: pass client-ip=2607:f8b0:4864:20::741; envelope-from=eg642616@gmail.com; helo=mail-qk1-x741.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:317574 Archived-At: --0000000000003622f50615733980 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Apr 6, 2024 at 5:35=E2=80=AFAM Eli Zaretskii wrote: > > > From: Elijah G > > Date: Wed, 27 Mar 2024 15:29:28 -0600 > > Cc: Eli Zaretskii , Spencer Baugh = , philipk@posteo.net, > > emacs-devel@gnu.org, Po Lu > > > > I've now updated the patch to allow auto resize margins and using margi= ns > > when it's in terminal frames. > > Thanks, I think this is almost ready to be installed; see a few minor > comments below. > > > Sadly I couldn't find anything for detecting HDiPI frames, so the user > > must have to configure it. > > I don't think Emacs should second-guess the user in this matter: let > the user decide whether the fringes are too narrow for these > indicators. > > > +(defcustom flymake-indicator-type (if (display-graphic-p) > > + 'fringes > > + 'margins) > > + "Indicate which indicator type to use for display errors. > > + > > +The value can be nil (dont indicate errors but just highlight them), > ^^^^ > "don't" > > > +(defcustom flymake-margin-indicators-string > > + '((error "!!" compilation-error) > > + (warning "!" compilation-warning) > > + (note "!" compilation-info)) > > + "Strings used for margins indicators. > > +The value of each list may be a list of 3 elements where specifies the > > +error type, its string to use and its face, > ^^^^^^^^^^ > "the string" > > > +or a list of 2 elements specifying only the error type and its string. > ^^^^^^^^^^^^^^ > "and the corresponding string" > > > +Indicators can be an ASCII or non-ASCII string. > > This sentence is redundant, so I suggest to remove it. The ASCII vs > non-ASCII issue is only relevant for the default value; users can do > whatever they want when they customize the option. > > > +(defcustom flymake-autoresize-margins t > > + "If non-nil automatically resize margin-width. > ^ > Comma is missing there. Also, how about telling what triggers > the resizing? > > > +Only if `flymake-indicator-type' is set to margins." > ^^^^^^^ > "Only relevant if..." > > > +(defvar-local flymake-original-margin-width nil > > + "Store original margin width") > > Should this be an internal variable (named flymake--original-margin-width= )? > Also, please consider telling in the doc string when is the width restore= d. > > > +(defun flymake--resize-margins (&optional og-width) > > + "Resize current window margins according `flymake-margin-indicator-p= osition'. > ^^^^^^^^^ > "according to" > > > +Return to original margin width if OG-WIDTH is non-nil." > > Suggest to rename OG-WIDTH to ORIG-WIDTH. > > Last, but not least: please mention this change (and the new user > options) in NEWS and in the Flymake manual. Thank you, I've now fixed the patch and documented the changes done. Also I have a question, Do I need to assign copyright each time that I want to contribute to Flymake? I have a lot of ideas that I would like to contribute. --0000000000003622f50615733980 Content-Type: application/octet-stream; name="0001-Flymake-support-for-indicating-errors-in-margin.patch" Content-Disposition: attachment; filename="0001-Flymake-support-for-indicating-errors-in-margin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luoj4fxx0 RnJvbSA0ZWQ3M2M1MWU3ZDgyYjZhZGU4ZWNiNTE5MDY2YmE3ZTAwNmJlYWY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiRWxpYXMgRy4gQi4gUGVyZXoiIDxlZzY0MjYxNkBnbWFpbC5j b20+CkRhdGU6IFNhdCwgNiBBcHIgMjAyNCAxMzo1NzozMCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEZseW1ha2Ugc3VwcG9ydCBmb3IgaW5kaWNhdGluZyBlcnJvcnMgaW4gbWFyZ2luCgpBZGQgb3B0 aW9uYWwgc3VwcG9ydCBmb3IgZGlzcGxheSBmbHltYWtlIGVycm9yIGluIG1hcmdpbiwKdGhpcyBh bGxvdyBkaXNwbGF5aW5nIGVycm9yIGluZGljYXRvcnMgaW4gYm90aCBncmFwaGljYWwgYW5kCnRl cm1pbmFsIGZyYW1lcy4KKiBkb2MvbWlzYy9mbHltYWtlLnRleGkgKEN1c3RvbWl6YWJsZSB2YXJp YWJsZXMpCihGbHltYWtlIGVycm9yIHR5cGVzKTogRG9jdW1lbnQgbmV3IG1hcmdpbiBpbmRpY2F0 b3IuCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcgRmx5bWFrZSB1c2VyIG9wdGlvbiBmb3Ig bWFyZ2luCmluZGljYXRvcnMuCiogbGlzcC9wcm9nbW9kZXMvZmx5bWFrZS5lbCAoZmx5bWFrZS1p bmRpY2F0b3ItdHlwZSkKKGZseW1ha2UtbWFyZ2luLWluZGljYXRvcnMtc3RyaW5nLCBmbHltYWtl LWF1dG9yZXNpemUtbWFyZ2lucykKKGZseW1ha2UtbWFyZ2luLWluZGljYXRvci1wb3NpdGlvbik6 IE5ldyB1c2VyIG9wdGlvbnMuCihmbHltYWtlLS1vcmlnaW5hbC1tYXJnaW4td2lkdGgpOiBBZGQg YnVmZmVyLWxvY2FsIHZhcmlhYmxlIGZvcgpzdG9yZSBvcmlnaW5hbCBidWZmZXIgbWFyZ2luIHdp ZHRoLgooZmx5bWFrZS1lcnJvciwgZmx5bWFrZS13YXJuaW5nLCBmbHltYWtlLW5vdGUpOiBVc2Ug bmV3IG1hcmdpbgp2YWx1ZS4KKGZseW1ha2UtLWluZGljYXRvci1vdmVybGF5LXNwZWMpOiBSZXdv cmsgYW5kIFJlbmFtZSBmcm9tCmZseW1ha2UtLWZyaW5nZS1vdmVybGF5LXNwZWMuCihmbHltYWtl LS1yZXNpemUtbWFyZ2lucyk6IEFkZCBuZXcgZnVuY3Rpb24gZm9yIHJlc2l6ZSBtYXJnaW4Kd2lk dGguCihmbHltYWtlLS1oaWdobGlnaHQtbGluZSwgZmx5bWFrZS1tb2RlKTogUmV3b3JrLgotLS0K IGRvYy9taXNjL2ZseW1ha2UudGV4aSAgICAgfCAgMjUgKysrKysrKwogZXRjL05FV1MgICAgICAg ICAgICAgICAgICB8ICAyMSArKysrKysKIGxpc3AvcHJvZ21vZGVzL2ZseW1ha2UuZWwgfCAxMzQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwg MTY1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9taXNj L2ZseW1ha2UudGV4aSBiL2RvYy9taXNjL2ZseW1ha2UudGV4aQppbmRleCA4NGE3NGE5Li43YjQy ZGUwIDEwMDY0NAotLS0gYS9kb2MvbWlzYy9mbHltYWtlLnRleGkKKysrIGIvZG9jL21pc2MvZmx5 bWFrZS50ZXhpCkBAIC0zMDksNiArMzA5LDExIEBAIEN1c3RvbWl6YWJsZSB2YXJpYWJsZXMKIEEg Y3VzdG9tIGZhY2UgZm9yIGhpZ2hsaWdodGluZyByZWdpb25zIGZvciB3aGljaCBhIG5vdGUgaGFz IGJlZW4KIHJlcG9ydGVkLgogCitAaXRlbSBmbHltYWtlLWluZGljYXRvci10eXBlCitXaGljaCBp bmRpY2F0b3IgdHlwZSBzaG91bGQgRmx5bWFrZSB1c2UuCitEZXBlbmRpbmcgb24geW91ciBwcmVm ZXJlbmNlLCB0aGlzIGNhbiBlaXRoZXIgdXNlIEBjb2Rle2ZyaW5nZXN9IG9yCitAY29kZXttYXJn aW5zfSBmb3IgaW5kaWNhdGluZyBlcnJvcnMuCisKIEBpdGVtIGZseW1ha2UtZXJyb3ItYml0bWFw CiBBIGJpdG1hcCB1c2VkIGluIHRoZSBmcmluZ2UgdG8gbWFyayBsaW5lcyBmb3Igd2hpY2ggYW4g ZXJyb3IgaGFzCiBiZWVuIHJlcG9ydGVkLgpAQCAtMzIwLDYgKzMyNSwxOCBAQCBDdXN0b21pemFi bGUgdmFyaWFibGVzCiBAaXRlbSBmbHltYWtlLWZyaW5nZS1pbmRpY2F0b3ItcG9zaXRpb24KIFdo aWNoIGZyaW5nZSAoaWYgYW55KSBzaG91bGQgc2hvdyB0aGUgd2FybmluZy9lcnJvciBiaXRtYXBz LgogCitAaXRlbSBmbHltYWtlLW1hcmdpbi1pbmRpY2F0b3JzLXN0cmluZworQSBMaXN0IHVzZWQg Zm9yIHNwZWNpZnkgc3RyaW5nLCBmYWNlIGFuZCBlcnJvciB0eXBlcyB0bwordXNlIGluIHRoZSBt YXJnaW4gaW5kaWNhdG9ycy4KKworQGl0ZW0gZmx5bWFrZS1tYXJnaW4taW5kaWNhdG9yLXBvc2l0 aW9uCitXaGljaCBtYXJnaW4gKGlmIGFueSkgc2hvdWxkIHNob3cgdGhlIHdhcm5pbmcvZXJyb3Ig c3RyaW5ncy4KKworQGl0ZW0gZmx5bWFrZS1hdXRvcmVzaXplLW1hcmdpbnMKK0lmIG5vbi1AY29k ZXtuaWx9LCB3aWxsIHJlc2l6ZSBtYXJnaW5zIGVpdGhlciBAY29kZXtmbHltYWtlLW1vZGV9IGlz Citub24tQGNvZGV7bmlsfSBvciBAY29kZXtuaWx9LgorT25seSByZWxldmFudCBpZiBAY29kZXtm bHltYWtlLWluZGljYXRvci10eXBlfSBpcyBzZXQgdG8gQGNvZGV7bWFyZ2luc30uCisKIEBpdGVt IGZseW1ha2Utd3JhcC1hcm91bmQKIElmIG5vbi1AY29kZXtuaWx9LCBtb3ZpbmcgdG8gZXJyb3Jz IHdpdGggQGNvZGV7Zmx5bWFrZS1nb3RvLW5leHQtZXJyb3J9IGFuZAogQGNvZGV7Zmx5bWFrZS1n b3RvLXByZXYtZXJyb3J9IHdyYXBzIGFyb3VuZCBidWZmZXIgYm91bmRhcmllcy4KQEAgLTM4Nyw2 ICs0MDQsMTQgQEAgRmx5bWFrZSBlcnJvciB0eXBlcwogdmFyaWFibGVzfSkuICBJdCBpcyBvdmVy cmlkZGVuIGJ5IGFueSBAY29kZXtiZWZvcmUtc3RyaW5nfSBvdmVybGF5CiBwcm9wZXJ0eS4KIAor QGl0ZW0KK0BjaW5kZXggbWFyZ2luIG9mIGRpYWdub3N0aWMKK0Bjb2Rle2ZseW1ha2UtbWFyZ2lu LXN0cmluZ30sIGFuIHN0cmluZyBkaXNwbGF5ZWQgaW4gdGhlIG1hcmdpbgorYWNjb3JkaW5nIHRv IEBjb2Rle2ZseW1ha2UtbWFyZ2luLWluZGljYXRvci1wb3NpdGlvbn0uCitUaGUgdmFsdWUgYWN0 dWFsbHkgZm9sbG93cyB0aGUgc3ludGF4IG9mIEBjb2Rle2ZseW1ha2UtbWFyZ2luLWluZGljYXRv cnMtc3RyaW5nfQorKEBweHJlZntDdXN0b21pemFibGUgdmFyaWFibGVzfSkuIEl0IGlzIG92ZXJy aWRkZW4gYnkgYW55CitAY29kZXtiZWZvcmUtc3RyaW5nfSBvdmVybGF5IHByb3BlcnR5LgorCiBA aXRlbQogQGNvZGV7Zmx5bWFrZS1vdmVybGF5LWNvbnRyb2x9LCBhbiBhbGlzdCAoKEB2YXJ7T1ZQ Uk9QfSAuIEB2YXJ7VkFMVUV9KQogQHZhcnsuLi59KSBvZiBmdXJ0aGVyIHByb3BlcnRpZXMgdXNl ZCB0byBhZmZlY3QgdGhlIGFwcGVhcmFuY2Ugb2YKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj L05FV1MKaW5kZXggMzc1YzI3YS4uOGE3ZWNmYiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIv ZXRjL05FV1MKQEAgLTEyMDEsNiArMTIwMSwyNyBAQCBpbiBhIGNsZWFuIGVudmlyb25tZW50Lgog CiAqKiBGbHltYWtlCiAKKysrKworKioqIE5ldyB1c2VyIG9wdGlvbiAnZmx5bWFrZS1pbmRpY2F0 b3ItdHlwZScuCitUaGlzIHVzZXIgb3B0aW9uIGNvbnRyb2xzIHdoaWNoIGVycm9yIGluZGljYXRv ciB0eXBlIEZseW1ha2Ugc2hvdWxkIHVzZQoraW4gY3VycmVudCBidWZmZXIuIERlcGVuZGluZyBv biB5b3VyIHByZWZlcmVuY2UsIHRoaXMgY2FuIGVpdGhlciB1c2UKK2ZyaW5nZXMgb3IgbWFyZ2lu cyBmb3IgaW5kaWNhdGluZyBlcnJvcnMuCisKKysrKworKioqIE5ldyB1c2VyIG9wdGlvbiAnZmx5 bWFrZS1tYXJnaW4taW5kaWNhdG9ycy1zdHJpbmcnCitJdCBjb250cm9scyB0aGUgc3RyaW5nLCB0 aGVpciBmYWNlIGFuZCB0eXBlIGVycm9yIHRvIGRpc3BsYXkgaW4KK21hcmdpbiBpbmRpY2F0b3Jz LgorCisrKysKKyoqKiBOZXcgdXNlciBvcHRpb24gJ2ZseW1ha2UtYXV0b3Jlc2l6ZS1tYXJnaW5z JworV2hlbiBub24tbmlsLCBGbHltYWtlIHdpbGwgcmVzaXplIG1hcmdpbnMgZWl0aGVyIGBmbHlt YWtlLW1vZGVgIGlzCitub24tbmlsIG9yIG5pbC4KK09ubHkgcmVsZXZhbnQgaWYgYGZseW1ha2Ut aW5kaWNhdG9yLXR5cGVgIGlzIHNldCB0byBgbWFyZ2luc2AuCisKKysrKworKioqIE5ldyB1c2Vy IG9wdGlvbiAnZmx5bWFrZS1tYXJnaW4taW5kaWNhdG9yLXBvc2l0aW9uJworSXQgY29udHJvbHMg d2hpY2ggcG9zaXRpb24gc2hvdWxkIEZseW1ha2Ugc2hvdyBtYXJnaW4gaW5kaWNhdG9ycy4KKwog KysrCiAqKiogTmV3IHVzZXIgb3B0aW9uICdmbHltYWtlLXNob3ctZGlhZ25vc3RpY3MtYXQtZW5k LW9mLWxpbmUnLgogV2hlbiBub24tbmlsLCBGbHltYWtlIHNob3dzIHN1bW1hcml6ZWQgZGVzY3Jp cHRpb25zIG9mIGRpYWdub3N0aWNzIGF0CmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9mbHlt YWtlLmVsIGIvbGlzcC9wcm9nbW9kZXMvZmx5bWFrZS5lbAppbmRleCA3NzljNjEyLi5mYzY0MzY4 IDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9mbHltYWtlLmVsCisrKyBiL2xpc3AvcHJvZ21v ZGVzL2ZseW1ha2UuZWwKQEAgLTE4MCw2ICsxODAsNTkgQEAgZmx5bWFrZS1mcmluZ2UtaW5kaWNh dG9yLXBvc2l0aW9uCiAJCSAoY29uc3QgcmlnaHQtZnJpbmdlKQogCQkgKGNvbnN0IDp0YWcgIk5v IGZyaW5nZSBpbmRpY2F0b3JzIiBuaWwpKSkKIAorKGRlZmN1c3RvbSBmbHltYWtlLWluZGljYXRv ci10eXBlIChpZiAoZGlzcGxheS1ncmFwaGljLXApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdmcmluZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnbWFyZ2lucykKKyAgIkluZGljYXRlIHdoaWNoIGluZGljYXRvciB0eXBlIHRvIHVzZSBmb3Ig ZGlzcGxheSBlcnJvcnMuCisKK1RoZSB2YWx1ZSBjYW4gYmUgbmlsIChkb24ndCBpbmRpY2F0ZSBl cnJvcnMgYnV0IGp1c3QgaGlnaGxpZ2h0IHRoZW0pLAorZnJpbmdlcyAodXNlIGZyaW5nZXMpIG9y IG1hcmdpbnMgKHVzZSBtYXJnaW5zKQorCitEaWZmZXJlbmNlIGJldHdlZW4gZnJpbmdlcyBhbmQg bWFyZ2luIGlzIHRoYXQgZnJpbmdlcyBzdXBwb3J0IGRpcGxheWluZworYml0bWFwcyBvbiBncmFw aGljYWwgZGlzcGxheXMgYW5kIG1hcmdpbnMgZGlzcGxheSB0ZXh0IGluIGEgYmxhbmsgYXJlYQor ZnJvbSBjdXJyZW50IGJ1ZmZlciB0aGF0IHdvcmtzIGluIGJvdGggZ3JhcGhpY2FsIGFuZCB0ZXh0 IGRpc3BsYXlzLgorCitTZWUgSW5mbyBub2RlIGBGcmluZ2VzJyBhbmQgSW5mbyBub2RlIGAoZWxp c3ApRGlzcGxheSBNYXJnaW5zJy4iCisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnKGNob2lj ZSAoY29uc3QgOnRhZyAiVXNlIEZyaW5nZXMiIGZyaW5nZXMpCisgICAgICAgICAgICAgICAgIChj b25zdCA6dGFnICJVc2UgTWFyZ2lucyAibWFyZ2lucykKKyAgICAgICAgICAgICAgICAgKGNvbnN0 IDp0YWcgIk5vIGluZGljYXRvcnMiIG5pbCkpKQorCisoZGVmY3VzdG9tIGZseW1ha2UtbWFyZ2lu LWluZGljYXRvcnMtc3RyaW5nCisgICcoKGVycm9yICIhISIgY29tcGlsYXRpb24tZXJyb3IpCisg ICAgKHdhcm5pbmcgIiEiIGNvbXBpbGF0aW9uLXdhcm5pbmcpCisgICAgKG5vdGUgIiEiIGNvbXBp bGF0aW9uLWluZm8pKQorICAiU3RyaW5ncyB1c2VkIGZvciBtYXJnaW5zIGluZGljYXRvcnMuCitU aGUgdmFsdWUgb2YgZWFjaCBsaXN0IG1heSBiZSBhIGxpc3Qgb2YgMyBlbGVtZW50cyB3aGVyZSBz cGVjaWZpZXMgdGhlCitlcnJvciB0eXBlLCB0aGUgc3RyaW5nIHRvIHVzZSBhbmQgaXRzIGZhY2Us CitvciBhIGxpc3Qgb2YgMiBlbGVtZW50cyBzcGVjaWZ5aW5nIG9ubHkgdGhlIGVycm9yIHR5cGUg YW5kCit0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcuCisKK1RoZSBvcHRpb24gYGZseW1ha2UtbWFy Z2luLWluZGljYXRvci1wb3NpdGlvbicgY29udHJvbHMgaG93IGFuZCB3aGVyZQordGhpcyBpcyB1 c2VkLiIKKyAgOnZlcnNpb24gIjMwLjEiCisgIDp0eXBlICcocmVwZWF0IDp0YWcgIkVycm9yIHR5 cGVzIGxpc3RzIgorICAgICAgICAgICAgICAgICAobGlzdCA6dGFnICJTdHJpbmcgYW5kIGZhY2Ug Zm9yIGVycm9yIHR5cGVzIgorICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sIDp0YWcgIkVy cm9yIHR5cGUiKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcgIlN0cmluZyIp CisgICAgICAgICAgICAgICAgICAgICAgIChmYWNlIDp0YWcgIkZhY2UiKSkpKQorCisoZGVmY3Vz dG9tIGZseW1ha2UtYXV0b3Jlc2l6ZS1tYXJnaW5zIHQKKyAgIklmIG5vbi1uaWwsIGF1dG9tYXRp Y2FsbHkgcmVzaXplIG1hcmdpbi13aWR0aCBjYWxsaW5nIGZseW1ha2UtLXJlc2l6ZS1tYXJnaW5z LgorCitPbmx5IHJlbGV2YW50IGlmIGBmbHltYWtlLWluZGljYXRvci10eXBlJyBpcyBzZXQgdG8g bWFyZ2lucy4iCisgIDp2ZXJzaW9uICIzMC4xIgorICA6dHlwZSAnYm9vbGVhbikKKworKGRlZmN1 c3RvbSBmbHltYWtlLW1hcmdpbi1pbmRpY2F0b3ItcG9zaXRpb24gJ2xlZnQtbWFyZ2luCisgICJU aGUgcG9zaXRpb24gdG8gcHV0IEZseW1ha2UgbWFyZ2luIGluZGljYXRvci4KK1RoZSB2YWx1ZSBj YW4gYmUgbmlsIChkbyBub3QgdXNlIGluZGljYXRvcnMpLCBgbGVmdC1tYXJnaW4nIG9yIGByaWdo dC1tYXJnaW4nLgorU2VlIGBmbHltYWtlLW1hcmdpbi1pbmRpY2F0b3JzLXN0cmluZycuIgorICA6 dmVyc2lvbiAiMzAuMSIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IGxlZnQtbWFyZ2luKQorICAg ICAgICAgICAgICAgICAoY29uc3QgcmlnaHQtbWFyZ2luKQorICAgICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiTm8gbWFyZ2luIGluZGljYXRvcnMiIG5pbCkpKQorCiAobWFrZS1vYnNvbGV0ZS12 YXJpYWJsZSAnZmx5bWFrZS1zdGFydC1zeW50YXgtY2hlY2stb24tbmV3bGluZQogCQkgICAgICAg ICJjYW4gY2hlY2sgb24gbmV3bGluZSBpbiBwb3N0LXNlbGYtaW5zZXJ0LWhvb2siCiAgICAgICAg ICAgICAgICAgICAgICAgICAiMjcuMSIpCkBAIC0yNTgsNiArMzExLDExIEBAIGZseW1ha2UtdGlt ZXIKIChkZWZ2YXItbG9jYWwgZmx5bWFrZS1jaGVjay1zdGFydC10aW1lIG5pbAogICAiVGltZSBh dCB3aGljaCBzeW50YXggY2hlY2sgd2FzIHN0YXJ0ZWQuIikKIAorKGRlZnZhci1sb2NhbCBmbHlt YWtlLS1vcmlnaW5hbC1tYXJnaW4td2lkdGggbmlsCisgICJTdG9yZSBvcmlnaW5hbCBtYXJnaW4g d2lkdGguCitVc2VkIGJ5IGBmbHltYWtlLS1yZXNpemUtbWFyZ2lucycgZm9yIHJlc3RvcmUgb3Jp Z2luYWwgbWFyZ2luIHdpZHRoCit3aGVuIGZseW1ha2UgaXMgdHVybmVkIG9mZi4iKQorCiAoZGVm dW4gZmx5bWFrZS0tbG9nLTEgKGxldmVsIHN1YmxvZyBtc2cgJnJlc3QgYXJncykKICAgIkRvIGFj dHVhbCB3b3JrIGZvciBgZmx5bWFrZS1sb2cnLiIKICAgKGxldCAoOzsgbmV2ZXIgcG9wdXAgdGhl IGxvZyBidWZmZXIKQEAgLTYzMCw2ICs2ODgsNyBAQCBmbHltYWtlLWRpYWdub3N0aWMtdHlwZXMt YWxpc3QKIAogKHB1dCAnZmx5bWFrZS1lcnJvciAnZmFjZSAnZmx5bWFrZS1lcnJvcikKIChwdXQg J2ZseW1ha2UtZXJyb3IgJ2ZseW1ha2UtYml0bWFwICdmbHltYWtlLWVycm9yLWJpdG1hcCkKKyhw dXQgJ2ZseW1ha2UtZXJyb3IgJ2ZseW1ha2UtbWFyZ2luLXN0cmluZyAoYWxpc3QtZ2V0ICdlcnJv ciBmbHltYWtlLW1hcmdpbi1pbmRpY2F0b3JzLXN0cmluZykpCiAocHV0ICdmbHltYWtlLWVycm9y ICdzZXZlcml0eSAod2FybmluZy1udW1lcmljLWxldmVsIDplcnJvcikpCiAocHV0ICdmbHltYWtl LWVycm9yICdtb2RlLWxpbmUtZmFjZSAnZmx5bWFrZS1lcnJvci1lY2hvKQogKHB1dCAnZmx5bWFr ZS1lcnJvciAnZWNoby1mYWNlICdmbHltYWtlLWVycm9yLWVjaG8pCkBAIC02MzgsNiArNjk3LDcg QEAgZmx5bWFrZS1kaWFnbm9zdGljLXR5cGVzLWFsaXN0CiAKIChwdXQgJ2ZseW1ha2Utd2Fybmlu ZyAnZmFjZSAnZmx5bWFrZS13YXJuaW5nKQogKHB1dCAnZmx5bWFrZS13YXJuaW5nICdmbHltYWtl LWJpdG1hcCAnZmx5bWFrZS13YXJuaW5nLWJpdG1hcCkKKyhwdXQgJ2ZseW1ha2Utd2FybmluZyAn Zmx5bWFrZS1tYXJnaW4tc3RyaW5nIChhbGlzdC1nZXQgJ3dhcm5pbmcgZmx5bWFrZS1tYXJnaW4t aW5kaWNhdG9ycy1zdHJpbmcpKQogKHB1dCAnZmx5bWFrZS13YXJuaW5nICdzZXZlcml0eSAod2Fy bmluZy1udW1lcmljLWxldmVsIDp3YXJuaW5nKSkKIChwdXQgJ2ZseW1ha2Utd2FybmluZyAnbW9k ZS1saW5lLWZhY2UgJ2ZseW1ha2Utd2FybmluZy1lY2hvKQogKHB1dCAnZmx5bWFrZS13YXJuaW5n ICdlY2hvLWZhY2UgJ2ZseW1ha2Utd2FybmluZy1lY2hvKQpAQCAtNjQ2LDYgKzcwNiw3IEBAIGZs eW1ha2UtZGlhZ25vc3RpYy10eXBlcy1hbGlzdAogCiAocHV0ICdmbHltYWtlLW5vdGUgJ2ZhY2Ug J2ZseW1ha2Utbm90ZSkKIChwdXQgJ2ZseW1ha2Utbm90ZSAnZmx5bWFrZS1iaXRtYXAgJ2ZseW1h a2Utbm90ZS1iaXRtYXApCisocHV0ICdmbHltYWtlLW5vdGUgJ2ZseW1ha2UtbWFyZ2luLXN0cmlu ZyAoYWxpc3QtZ2V0ICdub3RlIGZseW1ha2UtbWFyZ2luLWluZGljYXRvcnMtc3RyaW5nKSkKIChw dXQgJ2ZseW1ha2Utbm90ZSAnc2V2ZXJpdHkgKHdhcm5pbmctbnVtZXJpYy1sZXZlbCA6ZGVidWcp KQogKHB1dCAnZmx5bWFrZS1ub3RlICdtb2RlLWxpbmUtZmFjZSAnZmx5bWFrZS1ub3RlLWVjaG8p CiAocHV0ICdmbHltYWtlLW5vdGUgJ2VjaG8tZmFjZSAnZmx5bWFrZS1ub3RlLWVjaG8pCkBAIC02 ODIsMTkgKzc0Myw1MyBAQCBmbHltYWtlLS1zZXZlcml0eQogICAoZmx5bWFrZS0tbG9va3VwLXR5 cGUtcHJvcGVydHkgdHlwZSAnc2V2ZXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3YXJuaW5nLW51bWVyaWMtbGV2ZWwgOmVycm9yKSkpCiAKLShkZWZ1biBmbHltYWtlLS1m cmluZ2Utb3ZlcmxheS1zcGVjIChiaXRtYXAgJm9wdGlvbmFsIHJlY3Vyc2VkKQotICAoaWYgKGFu ZCAoc3ltYm9scCBiaXRtYXApCi0gICAgICAgICAgIChib3VuZHAgYml0bWFwKQotICAgICAgICAg ICAobm90IHJlY3Vyc2VkKSkKLSAgICAgIChmbHltYWtlLS1mcmluZ2Utb3ZlcmxheS1zcGVjCi0g ICAgICAgKHN5bWJvbC12YWx1ZSBiaXRtYXApIHQpCi0gICAgKGFuZCBmbHltYWtlLWZyaW5nZS1p bmRpY2F0b3ItcG9zaXRpb24KLSAgICAgICAgIGJpdG1hcAotICAgICAgICAgKHByb3BlcnRpemUg IiEiICdkaXNwbGF5Ci0gICAgICAgICAgICAgICAgICAgICAoY29ucyBmbHltYWtlLWZyaW5nZS1p bmRpY2F0b3ItcG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobGlzdHAg Yml0bWFwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGlzdCBiaXRtYXApKSkpKSkpCisoZGVmdW4gZmx5bWFrZS0t aW5kaWNhdG9yLW92ZXJsYXktc3BlYyAoaW5kaWNhdG9yKQorICAiUmV0dXJuIElORElDQVRPUiBh cyBwcm9wZXJ0aXplZCBzdHJpbmcgdG8gdXNlIGluIGVycm9yIGluZGljYXRvcnMuIgorICAobGV0 KiAoKHZhbHVlIChpZiAoc3ltYm9scCBpbmRpY2F0b3IpCisgICAgICAgICAgICAgICAgICAgIChz eW1ib2wtdmFsdWUgaW5kaWNhdG9yKQorICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yKSkKKyAg ICAgICAgIChpbmRpY2F0b3ItY2FyIChpZiAobGlzdHAgdmFsdWUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNhciB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUp KQorICAgICAgICAgKGluZGljYXRvci1jZHIgKGlmIChsaXN0cCB2YWx1ZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2RyIHZhbHVlKSkpKQorICAgIChjb25kCisgICAgICgoc3ltYm9s cCBpbmRpY2F0b3ItY2FyKQorICAgICAgKHByb3BlcnRpemUgIiEiICdkaXNwbGF5CisgICAgICAg ICAgICAgICAgICAoY29ucyBmbHltYWtlLWZyaW5nZS1pbmRpY2F0b3ItcG9zaXRpb24KKyAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAobGlzdHAgdmFsdWUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgdmFsdWUpKSkp KQorICAgICAoKHN0cmluZ3AgaW5kaWNhdG9yLWNhcikKKyAgICAgIChwcm9wZXJ0aXplICIhIgor ICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkKKyAgICAgICAgICAgICAgICAgIGAoKG1hcmdpbiAs Zmx5bWFrZS1tYXJnaW4taW5kaWNhdG9yLXBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAs KHByb3BlcnRpemUKKyAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3ItY2FyCisgICAgICAg ICAgICAgICAgICAgICAgJ2ZhY2UKKyAgICAgICAgICAgICAgICAgICAgICBgKDppbmhlcml0ICgs aW5kaWNhdG9yLWNkcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQp KSkpKSkpKSkKKworKGRlZnVuIGZseW1ha2UtLXJlc2l6ZS1tYXJnaW5zICgmb3B0aW9uYWwgb3Jp Zy13aWR0aCkKKyAgIlJlc2l6ZSBjdXJyZW50IHdpbmRvdyBtYXJnaW5zIGFjY29yZGluZyB0byBg Zmx5bWFrZS1tYXJnaW4taW5kaWNhdG9yLXBvc2l0aW9uJy4KK1JldHVybiB0byBvcmlnaW5hbCBt YXJnaW4gd2lkdGggaWYgT1JJRy1XSURUSCBpcyBub24tbmlsLiIKKyAgKHdoZW4gKGFuZCAoZXEg Zmx5bWFrZS1pbmRpY2F0b3ItdHlwZSAnbWFyZ2lucykKKyAgICAgICAgICAgICBmbHltYWtlLWF1 dG9yZXNpemUtbWFyZ2lucykKKyAgICAoY29uZAorICAgICAoKGFuZCBvcmlnLXdpZHRoIGZseW1h a2UtLW9yaWdpbmFsLW1hcmdpbi13aWR0aCkKKyAgICAgIChpZiAoZXEgZmx5bWFrZS1tYXJnaW4t aW5kaWNhdG9yLXBvc2l0aW9uICdsZWZ0LW1hcmdpbikKKyAgICAgICAgICAoc2V0cS1sb2NhbCBs ZWZ0LW1hcmdpbi13aWR0aCBmbHltYWtlLS1vcmlnaW5hbC1tYXJnaW4td2lkdGgpCisgICAgICAg IChzZXRxLWxvY2FsIHJpZ2h0LW1hcmdpbi13aWR0aCBmbHltYWtlLS1vcmlnaW5hbC1tYXJnaW4t d2lkdGgpKSkKKyAgICAgKHQKKyAgICAgIChpZiAoZXEgZmx5bWFrZS1tYXJnaW4taW5kaWNhdG9y LXBvc2l0aW9uICdsZWZ0LW1hcmdpbikKKyAgICAgICAgICAoc2V0cS1sb2NhbCBmbHltYWtlLS1v cmlnaW5hbC1tYXJnaW4td2lkdGggbGVmdC1tYXJnaW4td2lkdGgKKyAgICAgICAgICAgICAgICAg ICAgICBsZWZ0LW1hcmdpbi13aWR0aCAyKQorICAgICAgICAoc2V0cS1sb2NhbCBmbHltYWtlLS1v cmlnaW5hbC1tYXJnaW4td2lkdGggcmlnaHQtbWFyZ2luLXdpZHRoCisgICAgICAgICAgICAgICAg ICAgIHJpZ2h0LW1hcmdpbi13aWR0aCAyKSkpKQorICAgIDs7IEFwcGx5IG1hcmdpbiB0byBhbGwg d2luZG93cyBhdmFsYWlibGVzCisgICAgKG1hcGMgKGxhbWJkYSAoeCkKKyAgICAgICAgICAgIChz ZXQtd2luZG93LWJ1ZmZlciB4ICh3aW5kb3ctYnVmZmVyIHgpKSkKKyAgICAgICAgICAoZ2V0LWJ1 ZmZlci13aW5kb3ctbGlzdCBuaWwgbmlsICd2aXNpYmxlKSkpKQogCiAoZGVmdW4gZmx5bWFrZS0t ZXF1YWwtZGlhZ25vc3RpYy1wIChhIGIpCiAgICJUZWxsIGlmIEEgYW5kIEIgYXJlIGVxdWl2YWxl bnQgYGZseW1ha2UtLWRpYWcnIG9iamVjdHMuIgpAQCAtODQwLDEwICs5MzUsMTMgQEAgZmx5bWFr ZS0taGlnaGxpZ2h0LWxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0eXBlIHByb3AgdmFsdWUpKSkpKQogICAgICAgKGRlZmF1bHQtbWF5YmUgJ2ZhY2UgJ2ZseW1h a2UtZXJyb3IpCiAgICAgICAoZGVmYXVsdC1tYXliZSAnYmVmb3JlLXN0cmluZwotICAgICAgICAo Zmx5bWFrZS0tZnJpbmdlLW92ZXJsYXktc3BlYworICAgICAgICAoZmx5bWFrZS0taW5kaWNhdG9y LW92ZXJsYXktc3BlYwogICAgICAgICAgKGZseW1ha2UtLWxvb2t1cC10eXBlLXByb3BlcnR5CiAg ICAgICAgICAgdHlwZQotICAgICAgICAgICdmbHltYWtlLWJpdG1hcAorICAgICAgICAgIChjb25k ICgoZXEgZmx5bWFrZS1pbmRpY2F0b3ItdHlwZSAnZnJpbmdlcykKKyAgICAgICAgICAgICAgICAg J2ZseW1ha2UtYml0bWFwKQorICAgICAgICAgICAgICAgICgoZXEgZmx5bWFrZS1pbmRpY2F0b3It dHlwZSAnbWFyZ2lucykKKyAgICAgICAgICAgICAgICAgJ2ZseW1ha2UtbWFyZ2luLXN0cmluZykp CiAgICAgICAgICAgKGFsaXN0LWdldCAnYml0bWFwIChhbGlzdC1nZXQgdHlwZSA7IGJhY2t3YXJk IGNvbXBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZseW1ha2Ut ZGlhZ25vc3RpYy10eXBlcy1hbGlzdCkpKSkpCiAgICAgICA7OyAoZGVmYXVsdC1tYXliZSAnYWZ0 ZXItc3RyaW5nCkBAIC0xMjg1LDYgKzEzODMsOSBAQCBmbHltYWtlLW1vZGUKICAgICAoYWRkLWhv b2sgJ2tpbGwtYnVmZmVyLWhvb2sgJ2ZseW1ha2Uta2lsbC1idWZmZXItaG9vayBuaWwgdCkKICAg ICAoYWRkLWhvb2sgJ2VsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rpb25zICdmbHltYWtlLWVsZG9j LWZ1bmN0aW9uIHQgdCkKIAorICAgIDs7IEF1dG9SZXNpemUgbWFyZ2lucy4KKyAgICAoZmx5bWFr ZS0tcmVzaXplLW1hcmdpbnMpCisKICAgICA7OyBJZiBGbHltYWtlIGhhcHBlbmVkIHRvIGJlIGFs cmVhZHkgT04sIHdlIG11c3QgY2xlYW51cAogICAgIDs7IGV4aXN0aW5nIGRpYWdub3N0aWMgb3Zl cmxheXMsIGxlc3Qgd2UgZm9yZ2V0IHRoZW0gYnkgYmxpbmRseQogICAgIDs7IHJlaW5pdGlhbGl6 aW5nIGBmbHltYWtlLS1zdGF0ZScgaW4gdGhlIG5leHQgbGluZS4KQEAgLTEzMzMsNiArMTQzNCw5 IEBAIGZseW1ha2UtbW9kZQogICAgIDs7KyhyZW1vdmUtaG9vayAnZmluZC1maWxlLWhvb2sgKGZ1 bmN0aW9uIGZseW1ha2UtZmluZC1maWxlLWhvb2spIHQpCiAgICAgKHJlbW92ZS1ob29rICdlbGRv Yy1kb2N1bWVudGF0aW9uLWZ1bmN0aW9ucyAnZmx5bWFrZS1lbGRvYy1mdW5jdGlvbiB0KQogCisg ICAgOzsgcmV0dXJuIG1hcmdpbiB0byBvcmlnaW5hbCBzaXplCisgICAgKGZseW1ha2UtLXJlc2l6 ZS1tYXJnaW5zIHQpCisKICAgICAod2hlbiBmbHltYWtlLXRpbWVyCiAgICAgICAoY2FuY2VsLXRp bWVyIGZseW1ha2UtdGltZXIpCiAgICAgICAoc2V0cSBmbHltYWtlLXRpbWVyIG5pbCkpCi0tIAoy LjQ0LjAud2luZG93cy4xCgo= --0000000000003622f50615733980--