From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vivien Kraus Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCH v2] Add resolve-relative-reference in (web uri), as in RFC 3986 5.2. Date: Mon, 02 Oct 2023 18:32:50 +0200 Message-ID: <090848be45623b187539be7826e924ddb05806a8.camel@planete-kraus.eu> References: Mime-Version: 1.0 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="3605"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Evolution 3.46.4 To: Maxime Devos , guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Mon Oct 02 18:33:21 2023 Return-path: Envelope-to: guile-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 1qnLrE-0000Ve-I9 for guile-devel@m.gmane-mx.org; Mon, 02 Oct 2023 18:33:20 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qnLqw-0001WK-FD; Mon, 02 Oct 2023 12:33:02 -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 1qnLqu-0001WB-Dr for guile-devel@gnu.org; Mon, 02 Oct 2023 12:33:00 -0400 Original-Received: from planete-kraus.eu ([89.234.140.182]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1qnLqq-000516-VW for guile-devel@gnu.org; Mon, 02 Oct 2023 12:32:59 -0400 Original-Received: from planete-kraus.eu (localhost.lan [127.0.0.1]) by planete-kraus.eu (OpenSMTPD) with ESMTP id 115b1826; Mon, 2 Oct 2023 16:32:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=planete-kraus.eu; h= message-id:subject:from:to:date:in-reply-to:references :content-type:content-transfer-encoding:mime-version; s= albinoniB; bh=MMDBPFD24TmwDW0cH1rG6r0iGxU=; b=fFSLGewOgbRZ7DZmCq brTm/jm83Df8ThPMFrZ/uGniIDxdk6HVvEKu7yrWpqEcGtodgJHxBods93urdELW GyCHrDNl3BRUBNA/e4POA/z09GdFXb3akn/4LYSDNSGRU7ndHO9ZhFB6Ul1o2xNv oomTvXbuTgUenzYkvVXijVUIy9Dx8X/2lb8rnodM79hSSGgEqgoPWfsmVx8W0ZUq ybOjzH70g6NwS5JRmEKM+Q4n4HI4aQ4FpNU28CKmJK3XTrumkuJsGl0GxVuzP43l oVKidVPizy+ckbh1PHBG6n2mU7QAU9QlLXsIctlM7/4OccCfHJoHeJMu3au2Va2Z cGrw== Original-Received: by planete-kraus.eu (OpenSMTPD) with ESMTPSA id e1d4f012 (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Mon, 2 Oct 2023 16:32:52 +0000 (UTC) In-Reply-To: Received-SPF: pass client-ip=89.234.140.182; envelope-from=vivien@planete-kraus.eu; helo=planete-kraus.eu X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:22006 Archived-At: SGkhCgpBcmUgdGhlcmUgb3RoZXIgdGhpbmdzIHRvIGZpeD8KCkJlc3QgcmVnYXJkcywKClZpdmll bgoKTGUgbHVuZGkgMjUgc2VwdGVtYnJlIDIwMjMgw6AgMTg6NDggKzAyMDAsIFZpdmllbiBLcmF1 cyBhIMOpY3JpdMKgOgo+ICogbW9kdWxlL3dlYi91cmkuc2NtIChyZW1vdmUtZG90LXNlZ21lbnRz KTogSW1wbGVtZW50IGFsZ29yaXRobQo+IDUuMi40Lgo+IChtZXJnZS1wYXRocyk6IEltcGxlbWVu dCBhbGdvcml0aG0gNS4yLjMuCj4gKHJlc29sdmUtcmVsYXRpdmUtcmVmZXJlbmNlKTogSW1wbGVt ZW50IGFsZ29yaXRobSA1LjIuMi4KPiAobW9kdWxlKTogRXhwb3J0IHJlc29sdmUtcmVsYXRpdmUt cmVmZXJlbmNlLgo+ICogTkVXUzogUmVmZXJlbmNlIGl0IGhlcmUuCj4gKiBkb2MvcmVmL3dlYi50 ZXhpIChVUklzKTogRG9jdW1lbnQgaXQgaGVyZS4KPiAoU3VidHlwZXMgb2YgVVJJKTogQWRkIGEg QG5vZGUgZGVjbGFyYXRpb24gdG8gY3Jvc3MtcmVmZXJlbmNlIGl0Lgo+IChIVFRQIEhlYWRlcnMp IFtsb2NhdGlvbl06IFBvaW50IHRvIHRoZSBzZWN0aW9uIGZvciBkaWZmZXJlbnQgVVJJCj4gdHlw ZXMuCj4gKFdlYiBDbGllbnQpIFtodHRwLXJlcXVlc3RdOiBJbmRpY2F0ZSB0aGF0IG5vIHJlZGly ZWN0aW9uIGlzCj4gcGVyZm9ybWVkLgo+IC0tLQo+IAo+IEkgY2xhcmlmaWVkIHRoZSBzaXR1YXRp b24gYWJvdXQgcmVkaXJlY3Rpb25zLiBJIGRvbuKAmXQgdGhpbmsgaXTigJlzCj4gR3VpbGXigJlz Cj4gam9iIHRvIGRvIGl0LiBGb3IgcGVybWFuZW50IHJlZGlyZWN0aW9ucyAoMzAxKSwgdGhlIGFw cGxpY2F0aW9uCj4gZGV2ZWxvcGVyIGlzIHN1cHBvc2VkIHRvIGVkaXQgdGhlIHBhZ2VzIHRoYXQg cG9pbnQgdG8gdGhlIG5vdy1tb3ZlZAo+IHJlc291cmNlIGFueXdheS4gQSBoYW5kZnVsIG9mIHNl Y3VyaXR5IGlzc3VlcyBtdXN0IGFsc28gYmUgbHVya2luZyBpbgo+IHRoZSBzaGFkb3dzLCBhbmQg SSBkb27igJl0IHRoaW5rIGl0IHNob3VsZCBiZSBhIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUKPiBH dWlsZSB3ZWIgY2xpZW50Lgo+IAo+IFRoZSBzcGVjaWZpY2F0aW9uIHVzZXMgdGhlIHdvcmQgInJl bGF0aXZlIiBib3RoIGZvciB0aGUgdHlwZSBvZiBVUkkKPiB0aGF0Cj4gaXMgbW9zdCBsaWtlbHkg dG8gYmUgZm91bmQsIGFuZCB0byBleHByZXNzIHRoZSBhc3ltbWV0cmljIHJlbGF0aW9uCj4gYmV0 d2VlbiBib3RoIGFyZ3VtZW50cyBvZiB0aGUgYWxnb3JpdGhtLiBJIHRoaW5rICJiYXNlIiBhbmQK PiAiZGVwZW5kZW50Igo+IGFyZSBjbGVhcmVyLCB3aGF0IGRvIHlvdSB0aGluaz8KPiAKPiBUaGUg c2VtaWNvbG9uIGFuZCBlcXVhbCBzaWduIGFyZSBib3RoIHJlc2VydmVkIGNoYXJhY3RlcnMsIHNv IGl04oCZcwo+IGV4cGVjdGVkIHRoYXQgR3VpbGUgZXNjYXBlcyB0aGVtLiBJZiB0aGVyZeKAmXMg YSBidWcsIGl0IGlzIGluIHRoZSA1LjQKPiBzZWN0aW9uIG9mIHRoZSBSRkMuIEhvd2V2ZXIsIEkg dW5kZXJzdGFuZCB0aGF0IGl0IHdvdWxkIGJlIGRlc2lyYWJsZQo+IGZvcgo+IHRoZSBhbGdvcml0 aG0gdG8gYWNjZXB0IHN1Y2ggdW5lc2NhcGVkIGNoYXJhY3RlcnMsIHNpbmNlIGl0IHdvcmtzCj4g d2l0aAo+IFVSSXMgaW4gaXNvbGF0aW9uIGFuZCBub3QgaW4gYW4gSFRUUCBmcmFtZSBvciB3ZWIg cGFnZS4KPiAKPiDCoE5FV1PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCA3ICsrCj4gwqBkb2MvcmVmL3dlYi50ZXhpwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgIDI3ICsrKysrLQo+IMKgbW9kdWxlL3dlYi91cmkuc2NtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDE2MQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K PiDCoHRlc3Qtc3VpdGUvdGVzdHMvd2ViLXVyaS50ZXN0IHzCoCA2OCArKysrKysrKysrKysrKwo+ IMKgNCBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKPiBpbmRleCBiMzE5NDA0ZDcuLmJkZjc1Y2IzYyAx MDA2NDQKPiAtLS0gYS9ORVdTCj4gKysrIGIvTkVXUwo+IEBAIC05LDYgKzksMTMgQEAgQ2hhbmdl cyBpbiAzLjAuMTAgKHNpbmNlIDMuMC45KQo+IMKgCj4gwqAqIE5ldyBpbnRlcmZhY2VzIGFuZCBm dW5jdGlvbmFsaXR5Cj4gwqAKPiArKiogTmV3IGZ1bmN0aW9uIGluICh3ZWIgdXJpKTogcmVzb2x2 ZS1yZWxhdGl2ZS1yZWZlcmVuY2UKPiArCj4gK0ltcGxlbWVudCB0aGUgLzUuMi4gUmVsYXRpdmUg UmVzb2x1dGlvbi8gYWxnb3JpdGhtIGluIFJGQyAzOTg2LiBJdAo+IG1heQo+ICtiZSB1c2VkIHRv IHJlcXVlc3QgYSBtb3ZlZCByZXNvdXJjZSBpbiBjYXNlIG9mIGEgMzAxIG9yIDMwMiBIVFRQCj4g K3Jlc3BvbnNlLCBieSByZXNvbHZpbmcgdGhlIExvY2F0aW9uIHZhbHVlIG9mIHRoZSByZXNwb25z ZSBvbiB0b3Agb2YKPiB0aGUKPiArcmVxdWVzdGVkIFVSSS4KPiArCj4gwqAqKiBOZXcgd2Fybmlu ZzogdW51c2VkLW1vZHVsZQo+IMKgCj4gwqBUaGlzIGFuYWx5c2lzLCBlbmFibGVkIGF0IGAtVzIn LCBpc3N1ZXMgd2FybmluZ3MgZm9yIG1vZHVsZXMgdGhhdAo+IGFwcGVhcgo+IGRpZmYgLS1naXQg YS9kb2MvcmVmL3dlYi50ZXhpIGIvZG9jL3JlZi93ZWIudGV4aQo+IGluZGV4IDYwN2M4NTViNi4u MjI2N2M5Nzc0IDEwMDY0NAo+IC0tLSBhL2RvYy9yZWYvd2ViLnRleGkKPiArKysgYi9kb2MvcmVm L3dlYi50ZXhpCj4gQEAgLTI5Nyw2ICsyOTcsNyBAQCBGb3IgZXhhbXBsZSwgdGhlIGxpc3QgQGNv ZGV7KCJzY3JhbWJsZWQgZWdncyIKPiAiYmlzY3VpdHMmZ3JhdnkiKX0gZW5jb2Rlcwo+IMKgYXMg QGNvZGV7InNjcmFtYmxlZCUyMGVnZ3MvYmlzY3VpdHMlMjZncmF2eSJ9Lgo+IMKgQGVuZCBkZWZm bgo+IMKgCj4gK0Bub2RlIFN1YnR5cGVzIG9mIFVSSQo+IMKgQHN1YnN1YmhlYWRpbmcgU3VidHlw ZXMgb2YgVVJJCj4gwqAKPiDCoEFzIHdlIG5vdGVkIGFib3ZlLCBub3QgYWxsIFVSSSBvYmplY3Rz IGhhdmUgYSBzY2hlbWUuwqAgWW91IG1pZ2h0Cj4gaGF2ZQo+IEBAIC0zNTYsNiArMzU3LDI1IEBA IFBhcnNlIEB2YXJ7c3RyaW5nfSBpbnRvIGEgVVJJIG9iamVjdCwgd2hpbGUKPiBhc3NlcnRpbmcg dGhhdCBubyBzY2hlbWUgaXMKPiDCoHByZXNlbnQuwqAgUmV0dXJuIEBjb2RleyNmfSBpZiB0aGUg c3RyaW5nIGNvdWxkIG5vdCBiZSBwYXJzZWQuCj4gwqBAZW5kIGRlZmZuCj4gwqAKPiArQGNpbmRl eCByZXNvbHZlIFVSSSByZWZlcmVuY2UKPiArSW4gb3JkZXIgdG8gZ2V0IGEgVVJJIG9iamVjdCBm cm9tIGEgYmFzZSBVUkkgYW5kIGEgcmVsYXRpdmUKPiByZWZlcmVuY2UsCj4gK29uZSBoYXMgdG8g dXNlIGEgQGRmbntyZWxhdGl2ZSBVUkkgcmVmZXJlbmNlIHJlc29sdXRpb259IGFsZ29yaXRobS7C oAo+IEZvcgo+ICtpbnN0YW5jZSwgZ2l2ZW4gYSBiYXNlIFVSSSwgQHNhbXB7aHR0cHM6Ly9leGFt cGxlLmNvbS9vdmVyL2hlcmV9LAo+IGFuZCBhCj4gK3JlbGF0aXZlIHJlZmVyZW5jZSwgQHNhbXB7 Li4vbm8vdGhlcmV9LCBpdCBtYXkgc2VlbSBlYXN5IHRvIGdldCBhbgo+ICthYnNvbHV0ZSBVUkkg YXMgQHNhbXB7aHR0cHM6Ly9leGFtcGxlLmNvbS9vdmVyLy4uL25vL3RoZXJlfS4gSXQgaXMKPiAr cG9zc2libGUgdGhhdCB0aGUgc2VydmVyIGF0IEBzYW1we2h0dHBzOi8vZXhhbXBsZS5jb219IGNv dWxkIHNlcnZlCj4gdGhlCj4gK3NhbWUgcmVzb3VyY2UgdW5kZXIgdGhpcyBVUkwgYXMKPiArQHNh bXB7aHR0cHM6Ly9leGFtcGxlLmNvbS9uby90aGVyZX0uIEhvd2V2ZXIsIGEgd2ViIGNhY2hlLCBv ciBhCj4gbGlua2VkCj4gK2RhdGEgcHJvY2Vzc29yLCBtdXN0IHVuZGVyc3RhbmQgdGhhdCB0aGUg cmVsYXRpdmUgcmVmZXJlbmNlCj4gcmVzb2x1dGlvbgo+ICtsZWFkcyB0byBAc2FtcHtodHRwczov L2V4YW1wbGUuY29tL25vL3RoZXJlfS4KPiArCj4gK0BkZWZmbiB7U2NoZW1lIHByb2NlZHVyZX0g cmVzb2x2ZS1yZWxhdGl2ZS1yZWZlcmVuY2UgQHZhcntiYXNlfQo+IEB2YXJ7ZGVwZW5kZW50fQo+ ICtSZXR1cm4gYSBVUkkgb2JqZWN0IHJlcHJlc2VudGluZyBAdmFye2RlcGVuZGVudH0sIHVzaW5n IHRoZQo+IGNvbXBvbmVudHMKPiArb2YgQHZhcntiYXNlfSBpZiBtaXNzaW5nLCBhcyBkZWZpbmVk IGluIHNlY3Rpb24gNS4yIGluIFJGQyAzOTg2Lgo+IFRoaXMKPiArZnVuY3Rpb24gY2Fubm90IHJl dHVybiBhIHJlbGF0aXZlIHJlZmVyZW5jZSAoaXQgY2FuIG9ubHkgcmV0dXJuIGFuCj4gK2Fic29s dXRlIFVSSSBvYmplY3QpLCBpZiBlaXRoZXIgQHZhcntiYXNlfSBvciBAdmFye2RlcGVuZGVudH0g aXMgYW4KPiArYWJzb2x1dGUgVVJJIG9iamVjdC4KPiArQGVuZCBkZWZmbgo+IMKgCj4gwqBAbm9k ZSBIVFRQCj4gwqBAc3Vic2VjdGlvbiBUaGUgSHlwZXItVGV4dCBUcmFuc2ZlciBQcm90b2NvbAo+ IEBAIC0xMDM4LDcgKzEwNTgsOCBAQCBUaGUgZW50aXR5LXRhZyBvZiB0aGUgcmVzb3VyY2UuCj4g wqBAZGVmdHlwZXZyIHtIVFRQIEhlYWRlcn0gVVJJLXJlZmVyZW5jZSBsb2NhdGlvbgo+IMKgQSBV UkkgcmVmZXJlbmNlIG9uIHdoaWNoIGEgcmVxdWVzdCBtYXkgYmUgY29tcGxldGVkLsKgIFVzZWQg aW4KPiDCoGNvbWJpbmF0aW9uIHdpdGggYSByZWRpcmVjdGluZyBzdGF0dXMgY29kZSB0byBwZXJm b3JtIGNsaWVudC1zaWRlCj4gLXJlZGlyZWN0aW9uLgo+ICtyZWRpcmVjdGlvbi4gQHhyZWZ7U3Vi dHlwZXMgb2YgVVJJLCB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0eXBlcyBvZgo+ICtVUkl9LCBm b3IgbW9yZSBpbmZvcm1hdGlvbiBvbiByZWxhdGl2ZSByZWZlcmVuY2VzLgo+IMKgQGV4YW1wbGUK PiDCoChwYXJzZS1oZWFkZXIgJ2xvY2F0aW9uICJodHRwOi8vZXhhbXBsZS5jb20vb3RoZXIiKQo+ IMKgQHJlc3VsdHt9ICM8dXJpIC4uLj4KPiBAQCAtMTUwMSw2ICsxNTIyLDEwIEBAIGNvbnN0YW50 cywgc3VjaCBhcyBAY29kZXtjZXJ0aWZpY2F0ZS0KPiBzdGF0dXMvc2lnbmVyLW5vdC1mb3VuZH0g b3IKPiDCoENvbm5lY3QgdG8gdGhlIHNlcnZlciBjb3JyZXNwb25kaW5nIHRvIEB2YXJ7dXJpfSBh bmQgbWFrZSBhIHJlcXVlc3QKPiBvdmVyCj4gwqBIVFRQLCB1c2luZyBAdmFye21ldGhvZH0gKEBj b2Rle0dFVH0sIEBjb2Rle0hFQUR9LCBAY29kZXtQT1NUfSwKPiBldGMuKS4KPiDCoAo+ICtAY29k ZXtodHRwLXJlcXVlc3R9IGRvZXMgbm90IGZvbGxvdyByZWRpcmVjdGlvbnMuIElmIGEgcmVkaXJl Y3Rpb24KPiBpcwo+ICtyZXF1aXJlZCwgQGNvZGV7aHR0cC1yZXF1ZXN0fSByZXR1cm5zIGEgcmVz cG9uc2Ugb2JqZWN0IHdpdGggYW4KPiBhZGVxdWF0ZQo+ICtyZXNwb25zZSBjb2RlIChlLmcuIDMw MSBvciAzMDIpLgo+ICsKPiDCoFRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgYWxsb3cg eW91IHRvIG1vZGlmeSB0aGUgcmVxdWVzdHMgaW4KPiDCoHZhcmlvdXMgd2F5cywgZm9yIGV4YW1w bGUgYXR0YWNoaW5nIGEgYm9keSB0byB0aGUgcmVxdWVzdCwgb3IKPiBzZXR0aW5nCj4gwqBzcGVj aWZpYyBoZWFkZXJzLsKgIFRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIGtleXdvcmQgYXJn dW1lbnRzCj4gYW5kCj4gZGlmZiAtLWdpdCBhL21vZHVsZS93ZWIvdXJpLnNjbSBiL21vZHVsZS93 ZWIvdXJpLnNjbQo+IGluZGV4IDhlMGI5YmVlNy4uYWNlYzJkMWU4IDEwMDY0NAo+IC0tLSBhL21v ZHVsZS93ZWIvdXJpLnNjbQo+ICsrKyBiL21vZHVsZS93ZWIvdXJpLnNjbQo+IEBAIC00Nyw3ICs0 Nyw5IEBACj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXJpLXJlZmVyZW5jZT8gcmVs YXRpdmUtcmVmPwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWlsZC11cmktcmVmZXJlbmNl IGJ1aWxkLXJlbGF0aXZlLXJlZgo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cmluZy0+dXJp LXJlZmVyZW5jZSBzdHJpbmctPnJlbGF0aXZlLXJlZikpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RyaW5nLT51cmktcmVmZXJlbmNlIHN0cmluZy0+cmVsYXRpdmUtcmVmCj4gKwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJlc29sdmUtcmVsYXRpdmUtcmVmZXJlbmNlKSkKPiDCoAo+IMKg KGRlZmluZS1yZWNvcmQtdHlwZSA8dXJpPgo+IMKgwqAgKG1ha2UtdXJpIHNjaGVtZSB1c2VyaW5m byBob3N0IHBvcnQgcGF0aCBxdWVyeSBmcmFnbWVudCkKPiBAQCAtNTAxLDMgKzUwMywxNjAgQEAg c3RyaW5ncywgYW5kIGpvaW4gdGhlIHBhcnRzIHRvZ2V0aGVyIHdpdGgg4oCYL+KAmQo+IGFzIGEg ZGVsaW1pdGVyLgo+IMKgRm9yIGV4YW1wbGUsIHRoZSBsaXN0IOKAmChcInNjcmFtYmxlZCBlZ2dz XCIgXCJiaXNjdWl0cyZncmF2eVwiKeKAmQo+IMKgZW5jb2RlcyBhcyDigJhcInNjcmFtYmxlZCUy MGVnZ3MvYmlzY3VpdHMlMjZncmF2eVwi4oCZLiIKPiDCoMKgIChzdHJpbmctam9pbiAobWFwIHVy aS1lbmNvZGUgcGFydHMpICIvIikpCj4gKwo+ICsoZGVmaW5lIChyZW1vdmUtZG90LXNlZ21lbnRz IHBhdGgpCj4gK8KgICJSZW1vdmUgdGhlIEBzYW1wey4vfSBhbmQgQHNhbXB7Li4vfSBzZWdtZW50 cyBpbiBAdmFye3BhdGh9LCBhcwo+ICsgUkZDMzk4Niwgc2VjdGlvbiA1LjIuNC4iCj4gK8KgIChs ZXQgc2NhbiAoKGlucHV0Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXQgKChjb21w b25lbnRzIChzcGxpdC1hbmQtZGVjb2RlLXVyaS1wYXRoIHBhdGgpKSkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIChpZiAoc3RyaW5nLXN1ZmZpeD8gIi8iIHBhdGgpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGAoLEBjb21wb25lbnRzICIiKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wb25lbnRzKSkpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaW5wdXQtcGF0aC1hYnNvbHV0ZT8gKHN0cmluZy1wcmVm aXg/ICIvIiBwYXRoKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChvdXRwdXQgJygpKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG91dHB1dC1hYnNvbHV0ZT8gI2YpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAob3V0cHV0LWVuZHMtaW4tLz8gKHN0cmluZy1zdWZmaXg/ICIv IiBwYXRoKSkpCj4gK8KgwqDCoCAoY29uZAo+ICvCoMKgwqDCoCAoKGFuZCBpbnB1dC1wYXRoLWFi c29sdXRlPwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAobnVsbD8gaW5wdXQpKQo+ICvCoMKgwqDC oMKgIDs7IFRyYW5zZmVyIHRoZSBpbml0aWFsICIvIiBmcm9tIHRoZSBpbnB1dCB0byB0aGUgZW5k IG9mIHRoZQo+ICvCoMKgwqDCoMKgIDs7IG91dHB1dC4KPiArwqDCoMKgwqDCoCAoc2NhbiAnKCkg I2Ygb3V0cHV0IG91dHB1dC1hYnNvbHV0ZT8gI3QpKQo+ICvCoMKgwqDCoCAoKG51bGw/IGlucHV0 KQo+ICvCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kCj4gK8KgwqDCoMKgwqDCoCAoaWYgb3V0cHV0 LWFic29sdXRlPyAiLyIgIiIpCj4gK8KgwqDCoMKgwqDCoCAoZW5jb2RlLWFuZC1qb2luLXVyaS1w YXRoCj4gK8KgwqDCoMKgwqDCoMKgIChyZXZlcnNlIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoCAo aWYgb3V0cHV0LWVuZHMtaW4tLz8gIi8iICIiKSkpCj4gK8KgwqDCoMKgICgoYW5kIChub3QgaW5w dXQtcGF0aC1hYnNvbHV0ZT8pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIChvciAoZXF1YWw/IChj YXIgaW5wdXQpICIuLiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGVxdWFsPyAo Y2FyIGlucHV0KSAiLiIpKSkKPiArwqDCoMKgwqDCoCAoc2NhbiAoY2RyIGlucHV0KSAjZiBvdXRw dXQgb3V0cHV0LWFic29sdXRlPyBvdXRwdXQtZW5kcy1pbi0KPiAvPykpCj4gK8KgwqDCoMKgICgo YW5kIGlucHV0LXBhdGgtYWJzb2x1dGU/Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIChlcXVhbD8g KGNhciBpbnB1dCkgIi4iKSkKPiArwqDCoMKgwqDCoCAoc2NhbiAoY2RyIGlucHV0KSAjdCBvdXRw dXQgb3V0cHV0LWFic29sdXRlPyBvdXRwdXQtZW5kcy1pbi0KPiAvPykpCj4gK8KgwqDCoMKgICgo YW5kIGlucHV0LXBhdGgtYWJzb2x1dGU/Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIChlcXVhbD8g KGNhciBpbnB1dCkgIi4uIikpCj4gK8KgwqDCoMKgwqAgKHNjYW4gKGNkciBpbnB1dCkgI3QKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaWYgKG51bGw/IG91dHB1dCkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIG91dHB1dAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKGNkciBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IFJlbW92ZSB0aGUg bGFzdCBzZWdtZW50LCBpbmNsdWRpbmcgdGhlIHByZWNlZGluZyAvLgo+IFNvLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDs7IGlmIHRoZXJlIGlzIDAgb3IgMSBzZWdtZW50LCByZW1vdmUgdGhl IHJvb3QgLyB0b28uCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGlmIChvciAobnVsbD8gb3V0 cHV0KSAobnVsbD8gKGNkciBvdXRwdXQpKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICNmwqAgOzsgcmVtb3ZlIHRoZSAvCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAjdCkgOzsga2VlcCBpdAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICNmKSkKPiArwqDCoMKg wqAgKGVsc2UKPiArwqDCoMKgwqDCoCAoc2NhbiAoY2RyIGlucHV0KQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDs7IElmIHRoZXJlIGlzIG9ubHkgMSBpdGVtIGluIGlucHV0LCB0aGVuIGl0IGRv ZXMgbm90Cj4gZW5kIGluCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgLywgc28gdGhlIHJl Y3Vyc2l2ZSBjYWxsIGRvZXMgbm90IHN0YXJ0IHdpdGgKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA7OyAvLiBPdGhlcndpc2UsIHRoZSByZWN1cnNpdmUgY2FsbCBzdGFydHMgd2l0aCAvLgo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChub3QgKG51bGw/IChjZHIgaW5wdXQpKSkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAoY29ucyAoY2FyIGlucHV0KSBvdXRwdXQpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgOzsgSWYgdGhlIG91dHB1dCBpcyBlbXB0eSBhbmQgdGhlIGlucHV0IHBhdGgg aXMKPiBhYnNvbHV0ZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyB0aGUgLyBvZiB0aGUg dHJhbnNmZXJyZWQgcGF0aCBpcyB0cmFuc2ZlcnJlZCBhcyB3ZWxsLgo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChvciBvdXRwdXQtYWJzb2x1dGU/Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAoYW5kIChudWxsPyBvdXRwdXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW5wdXQtcGF0aC1hYnNvbHV0ZT8pKQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICNmKSkpKSkKPiArCj4gKyhkZWZpbmUgKG1lcmdlLXBhdGhzIGJhc2UtaGFzLWF1dGhv cml0eT8gYmFzZSBkZXBlbmRlbnQpCj4gK8KgICJSZXR1cm4gQHNhbXB7QHZhcntiYXNlfS9AdmFy e2RlcGVuZGVudH19LCB3aXRoIHRoZSBzdWJ0ZWx0aWVzIG9mCj4gYWJzb2x1dGUKPiArIHBhdGhz IGV4cGxhaW5lZCBpbiBSRkMzOTg2LCBzZWN0aW9uIDUuMi4zLiBJZiB0aGUgYmFzZSBVUkkgaGFz IGFuCj4gK2F1dGhvcml0eSAodXNlcmluZm8sIGhvc3QsIHBvcnQpLCB0aGVuIHRoZSBwcm9jZXNz aW5nIGlzIGEgYml0Cj4gK2RpZmZlcmVudC4iCj4gK8KgIChpZiAoYW5kIGJhc2UtaGFzLWF1dGhv cml0eT8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGVxdWFsPyBiYXNlICIiKSkKPiArwqDCoMKg wqDCoCAoc3RyaW5nLWFwcGVuZCAiLyIgZGVwZW5kZW50KQo+ICvCoMKgwqDCoMKgIChsZXQgKChs YXN0LS8gKHN0cmluZy1yaW5kZXggYmFzZSAjXC8pKSkKPiArwqDCoMKgwqDCoMKgwqAgKGlmIGxh c3QtLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdHJpbmctYXBwZW5kIChzdWJzdHJpbmcg YmFzZSAwIGxhc3QtLykgIi8iIGRlcGVuZGVudCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZXBlbmRlbnQpKSkpCj4gKwo+ICsoZGVmaW5lIChyZXNvbHZlLXJlbGF0aXZlLXJlZmVyZW5jZSBi YXNlIGRlcGVuZGVudCkKPiArwqAgIlJlc29sdmUgQHZhcntkZXBlbmRlbnR9IG9uIHRvcCBvZiBA dmFye2Jhc2V9LCBhcyBSRkMzOTg2LCBzZWN0aW9uCj4gKzUuMi4gQm90aCBAdmFye2RlcGVuZGVu dH0gYW5kIEB2YXJ7YmFzZX0gbWF5IGJlIFVSSSBvciByZWxhdGl2ZQo+ICtyZWZlcmVuY2VzLiBU aGUgcmV0dXJuIHZhbHVlIGlzIGEgVVJJIGlmIGVpdGhlciBAdmFye2RlcGVuZGVudH0gb3IKPiAr QHZhcntiYXNlfSBpcyBhIFVSSS4iCj4gK8KgIDs7IEFzIG9wcG9zZWQgdG8gUkZDIDM5ODYsIHdl IHVzZSAiZGVwZW5kZW50IiBpbnN0ZWFkIG9mCj4gInJlbGF0aXZlIiB0bwo+ICvCoCA7OyBhdm9p ZCBjb25mdXNpb24gYmV0d2VlbiAiVVJJIiBhbmQgInJlbGF0aXZlIHJlZmVyZW5jZSIsIHRoZQo+ ICvCoCA7OyBkZXBlbmRlbnQgVVJJIG1heSBiZSBlaXRoZXIuCj4gK8KgIChsZXQgKChiLXNjaGVt ZSAodXJpLXNjaGVtZSBiYXNlKSkKPiArwqDCoMKgwqDCoMKgwqAgKGItdXNlcmluZm8gKHVyaS11 c2VyaW5mbyBiYXNlKSkKPiArwqDCoMKgwqDCoMKgwqAgKGItaG9zdCAodXJpLWhvc3QgYmFzZSkp Cj4gK8KgwqDCoMKgwqDCoMKgIChiLXBvcnQgKHVyaS1wb3J0IGJhc2UpKQo+ICvCoMKgwqDCoMKg wqDCoCAoYi1wYXRoICh1cmktcGF0aCBiYXNlKSkKPiArwqDCoMKgwqDCoMKgwqAgKGItcXVlcnkg KHVyaS1xdWVyeSBiYXNlKSkKPiArwqDCoMKgwqDCoMKgwqAgKGItZnJhZ21lbnQgKHVyaS1mcmFn bWVudCBiYXNlKSkKPiArwqDCoMKgwqDCoMKgwqAgKHItc2NoZW1lICh1cmktc2NoZW1lIGRlcGVu ZGVudCkpCj4gK8KgwqDCoMKgwqDCoMKgIChyLXVzZXJpbmZvICh1cmktdXNlcmluZm8gZGVwZW5k ZW50KSkKPiArwqDCoMKgwqDCoMKgwqAgKHItaG9zdCAodXJpLWhvc3QgZGVwZW5kZW50KSkKPiAr wqDCoMKgwqDCoMKgwqAgKHItcG9ydCAodXJpLXBvcnQgZGVwZW5kZW50KSkKPiArwqDCoMKgwqDC oMKgwqAgKHItcGF0aCAodXJpLXBhdGggZGVwZW5kZW50KSkKPiArwqDCoMKgwqDCoMKgwqAgKHIt cXVlcnkgKHVyaS1xdWVyeSBkZXBlbmRlbnQpKQo+ICvCoMKgwqDCoMKgwqDCoCAoci1mcmFnbWVu dCAodXJpLWZyYWdtZW50IGRlcGVuZGVudCkpCj4gK8KgwqDCoMKgwqDCoMKgICh0LXNjaGVtZSAj ZikKPiArwqDCoMKgwqDCoMKgwqAgKHQtdXNlcmluZm8gI2YpCj4gK8KgwqDCoMKgwqDCoMKgICh0 LWhvc3QgI2YpCj4gK8KgwqDCoMKgwqDCoMKgICh0LXBvcnQgI2YpCj4gK8KgwqDCoMKgwqDCoMKg ICh0LXBhdGggIiIpCj4gK8KgwqDCoMKgwqDCoMKgICh0LXF1ZXJ5ICNmKQo+ICvCoMKgwqDCoMKg wqDCoCAodC1mcmFnbWVudCAjZikpCj4gK8KgwqDCoCA7OyBodHRwczovL3d3dy5yZmMtZWRpdG9y Lm9yZy9yZmMvcmZjMzk4NiNzZWN0aW9uLTUuMgo+ICsKPiArwqDCoMKgIDs7VGhlIHByb2dyYW1t aW5nIHN0eWxlIHVzZXMgbXV0YXRpb25zIHRvIGJldHRlciBhZGhlcmUgdG8gdGhlCj4gK8KgwqDC oCA7O2FsZ29yaXRobSBzcGVjaWZpY2F0aW9uLgo+ICvCoMKgwqAgKGlmIHItc2NoZW1lCj4gK8Kg wqDCoMKgwqDCoMKgIChiZWdpbgo+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHNldCEgdC1zY2hlbWUg ci1zY2hlbWUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAoc2V0ISB0LXVzZXJpbmZvIHItdXNlcmlu Zm8pCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCAoc2V0ISB0LWhvc3Qgci1ob3N0KQo+ICvCoMKgwqDC oMKgwqDCoMKgwqAgKHNldCEgdC1wb3J0IHItcG9ydCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgIChz ZXQhIHQtcGF0aCAocmVtb3ZlLWRvdC1zZWdtZW50cyByLXBhdGgpKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqAgKHNldCEgdC1xdWVyeSByLXF1ZXJ5KSkKPiArwqDCoMKgwqDCoMKgwqAgOzsgci1zY2hl bWUgaXMgbm90IGRlZmluZWQ6Cj4gK8KgwqDCoMKgwqDCoMKgIChiZWdpbgo+ICvCoMKgwqDCoMKg wqDCoMKgwqAgKGlmIHItaG9zdAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYmVnaW4K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzZXQhIHQtdXNlcmluZm8gci11c2Vy aW5mbykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzZXQhIHQtaG9zdCByLWhv c3QpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc2V0ISB0LXBvcnQgci1wb3J0 KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNldCEgdC1wYXRoIChyZW1vdmUt ZG90LXNlZ21lbnRzIHItcGF0aCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo c2V0ISB0LXF1ZXJ5IHItcXVlcnkpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBy LXNjaGVtZSBpcyBub3QgZGVmaW5lZCwgci1hdXRob3JpdHkgaXMgbm90Cj4gZGVmaW5lZDoKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGJlZ2luCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoaWYgKGVxdWFsPyByLXBhdGggIiIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIChiZWdpbgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKHNldCEgdC1wYXRoIGItcGF0aCkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChpZiByLXF1ZXJ5Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IHItc2NoZW1lLCByLWF1dGhvcml0 eSwgci1wYXRoIGFyZSBub3QKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgOzsgZGVmaW5lZDoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNldCEgdC1xdWVyeSByLXF1ZXJ5KQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyByLXNjaGVtZSwg ci1hdXRob3JpdHksIHItcGF0aCwgci1xdWVyeQo+IGFyZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBub3QgZGVmaW5lZDoKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHNldCEgdC1xdWVy eSBiLXF1ZXJ5KSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7 IHItc2NoZW1lLCByLWF1dGhvcml0eSBub3QgZGVmaW5lZCwgci1wYXRoCj4gZGVmaW5lZDoKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGJlZ2luCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaWYgKHN0cmluZy1wcmVmaXg/ICIv IiByLXBhdGgpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDs7IHItc2NoZW1lLCByLWF1dGhvcml0eSBub3QgZGVmaW5lZCwgci0KPiBwYXRoCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IGFi c29sdXRlOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoc2V0ISB0LXBhdGggKHJlbW92ZS1kb3Qtc2VnbWVudHMgci1wYXRoKSkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgci1zY2hlbWUs IHItYXV0aG9yaXR5IG5vdCBkZWZpbmVkLCByLQo+IHBhdGgKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgZGVwZW5kZW50Ogo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc2V0ISB0LXBhdGgK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKHJlbW92ZS1kb3Qtc2VnbWVudHMKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobWVyZ2UtcGF0aHMgYi1o b3N0IGItcGF0aCByLQo+IHBhdGgpKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoc2V0ISB0LXF1ZXJ5IHItcXVlcnkpKSkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChzZXQhIHQtdXNlcmluZm8gYi11c2VyaW5mbykKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzZXQhIHQtaG9zdCBiLWhvc3QpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoc2V0ISB0LXBvcnQgYi1wb3J0KSkpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoCAoc2V0ISB0LXNjaGVtZSBiLXNjaGVtZSkpKQo+ICvCoMKgwqAgKHNldCEgdC1mcmFn bWVudCByLWZyYWdtZW50KQo+ICvCoMKgwqAgKGJ1aWxkLXVyaS1yZWZlcmVuY2UgIzpzY2hlbWUg dC1zY2hlbWUKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICM6dXNlcmluZm8gdC11c2VyaW5mbwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIzpob3N0IHQtaG9zdAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzpwb3J0IHQtcG9ydAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzpwYXRoIHQtcGF0aAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIzpxdWVyeSB0 LXF1ZXJ5Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAjOmZyYWdtZW50IHQtZnJhZ21lbnQpKSkKPiBkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0ZS90ZXN0 cy93ZWItdXJpLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3dlYi0KPiB1cmkudGVzdAo+IGluZGV4 IDk1ZmQ4MmYxNi4uYzQ1M2JmNjBmIDEwMDY0NAo+IC0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvd2Vi LXVyaS50ZXN0Cj4gKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy93ZWItdXJpLnRlc3QKPiBAQCAtMjAs NiArMjAsNyBAQAo+IMKgKGRlZmluZS1tb2R1bGUgKHRlc3Qtd2ViLXVyaSkKPiDCoMKgICM6dXNl LW1vZHVsZSAod2ViIHVyaSkKPiDCoMKgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpCj4gK8Kg ICM6dXNlLW1vZHVsZSAoaWNlLTkgc3RyaW5nLWZ1bikKPiDCoMKgICM6dXNlLW1vZHVsZSAodGVz dC1zdWl0ZSBsaWIpKQo+IMKgCj4gwqAKPiBAQCAtNjkzLDMgKzY5NCw3MCBAQAo+IMKgwqAgKHBh c3MtaWYgKGVxdWFsPyAiZm9vJTIwYmFyIiAodXJpLWVuY29kZSAiZm9vIGJhciIpKSkKPiDCoMKg IChwYXNzLWlmIChlcXVhbD8gImZvbyUwQSUwMGJhciIgKHVyaS1lbmNvZGUgImZvb1xuXHgwMGJh ciIpKSkKPiDCoMKgIChwYXNzLWlmIChlcXVhbD8gIiUzQyUzRSU1QyU1RSIgKHVyaS1lbmNvZGUg Ijw+XFxeIikpKSkKPiArCj4gKyh3aXRoLXRlc3QtcHJlZml4ICJyZXNvbHZlIHJlbGF0aXZlIHJl ZmVyZW5jZSIKPiArwqAgOzsgVGVzdCBzdWl0ZSBpbiBSRkMzOTg2LCBzZWN0aW9uIDUuNC4KPiAr wqAgKGxldCAoKGJhc2UgKHN0cmluZy0+dXJpICJodHRwOi8vYS9iL2MvZDtwP3EiKSkKPiArwqDC oMKgwqDCoMKgwqAgKGVxdWFsL2VuY29kZWQ/Cj4gK8KgwqDCoMKgwqDCoMKgwqAgOzsgVGhlIHRl c3Qgc3VpdGUgY2hlY2tzIGZvciAnOycgY2hhcmFjdGVycywgYnV0IEd1aWxlCj4gZXNjYXBlcwo+ ICvCoMKgwqDCoMKgwqDCoMKgIDs7IHRoZW0gaW4gVVJJcy4gU2FtZSBmb3IgJz0nLgo+ICvCoMKg wqDCoMKgwqDCoMKgIChsZXQgKChlc2NhcGUtY29sb24KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChsYW1iZGEgKHgpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyB4ICI7IiAiJTNCIikpKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIChlc2NhcGUtZXF1YWwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChsYW1iZGEgKHgpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyB4ICI9IiAiJTNEIikpKSkKPiArwqDCoMKgwqDC oMKgwqDCoCAobGFtYmRhICh4IHkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIChlcXVhbD8gKGVz Y2FwZS1jb2xvbiAoZXNjYXBlLWVxdWFsIHgpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKGVzY2FwZS1jb2xvbiAoZXNjYXBlLWVxdWFsIHkpKSkpKSkpCj4gK8KgwqDC oCAobGV0ICgocmVzb2x2ZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAobGFtYmRhIChyZWxhdGl2 ZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsZXQqICgocmVsYXRpdmUtdXJpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cmluZy0+dXJpLXJlZmVy ZW5jZSByZWxhdGl2ZSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChyZXNvbHZlZC11cmkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAocmVzb2x2ZS1yZWxhdGl2ZS1yZWZlcmVuY2UgYmFzZSByZWxhdGl2ZS11cmkpKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAocmVzb2x2ZWQgKHVyaS0+c3RyaW5n IHJlc29sdmVkLXVyaSkpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc29sdmVk KSkpKQo+ICvCoMKgwqDCoMKgICh3aXRoLXRlc3QtcHJlZml4ICJub3JtYWwiCj4gK8KgwqDCoMKg wqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiZzpoIikgImc6aCIpKQo+ ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgImciKSAi aHR0cDovL2EvYi9jL2ciKSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29k ZWQ/IChyZXNvbHZlICIuL2ciKSAiaHR0cDovL2EvYi9jL2ciKSkKPiArwqDCoMKgwqDCoMKgwqAg KHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJnLyIpICJodHRwOi8vYS9iL2MvZy8i KSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICIv ZyIpICJodHRwOi8vYS9nIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNv ZGVkPyAocmVzb2x2ZSAiLy9nIikgImh0dHA6Ly9nIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNz LWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiP3kiKQo+ICJodHRwOi8vYS9iL2MvZDtwP3ki KSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJn P3kiKQo+ICJodHRwOi8vYS9iL2MvZz95IikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChl cXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiI3MiKQo+ICJodHRwOi8vYS9iL2MvZDtwP3EjcyIpKQo+ ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgImc/eSNz IikKPiAiaHR0cDovL2EvYi9jL2c/eSNzIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChl cXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiO3giKSAiaHR0cDovL2EvYi9jLzt4IikpCj4gK8KgwqDC oMKgwqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiZzt4P3kjcyIpCj4g Imh0dHA6Ly9hL2IvYy9nO3g/eSNzIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVh bC9lbmNvZGVkPyAocmVzb2x2ZSAiIikgImh0dHA6Ly9hL2IvYy9kO3A/cSIpKQo+ICvCoMKgwqDC oMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgIi4iKSAiaHR0cDovL2Ev Yi9jLyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29s dmUgIi4vIikgImh0dHA6Ly9hL2IvYy8iKSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVx dWFsL2VuY29kZWQ/IChyZXNvbHZlICIuLiIpICJodHRwOi8vYS9iLyIpKQo+ICvCoMKgwqDCoMKg wqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgIi4uLyIpICJodHRwOi8vYS9i LyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUg Ii4uL2ciKSAiaHR0cDovL2EvYi9nIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVh bC9lbmNvZGVkPyAocmVzb2x2ZSAiLi4vLi4iKSAiaHR0cDovL2EvIikpCj4gK8KgwqDCoMKgwqDC oMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiLi4vLi4vIikgImh0dHA6Ly9h LyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUg Ii4uLy4uL2ciKSAiaHR0cDovL2EvZyIpKSkKPiArwqDCoMKgwqDCoCAod2l0aC10ZXN0LXByZWZp eCAiYWJub3JtYWwiCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAo cmVzb2x2ZSAiLi4vLi4vLi4vZyIpCj4gImh0dHA6Ly9hL2ciKSkKPiArwqDCoMKgwqDCoMKgwqAg KHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICIuLi8uLi8uLi8uLi9nIikKPiAiaHR0 cDovL2EvZyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJl c29sdmUgIi8uL2ciKSAiaHR0cDovL2EvZyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAo ZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgIi8uLi9nIikgImh0dHA6Ly9hL2ciKSkKPiArwqDCoMKg wqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJnLiIpICJodHRwOi8v YS9iL2MvZy4iKSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChy ZXNvbHZlICIuZyIpICJodHRwOi8vYS9iL2MvLmciKSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3Mt aWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJnLi4iKQo+ICJodHRwOi8vYS9iL2MvZy4uIikp Cj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiLi5n IikKPiAiaHR0cDovL2EvYi9jLy4uZyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1 YWwvZW5jb2RlZD8gKHJlc29sdmUgIi4vLi4vZyIpICJodHRwOi8vYS9iL2ciKSkKPiArwqDCoMKg wqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICIuL2cvLiIpCj4gImh0 dHA6Ly9hL2IvYy9nLyIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2Rl ZD8gKHJlc29sdmUgImcvLi9oIikKPiAiaHR0cDovL2EvYi9jL2cvaCIpKQo+ICvCoMKgwqDCoMKg wqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgImcvLi4vaCIpCj4gImh0dHA6 Ly9hL2IvYy9oIikpCj4gK8KgwqDCoMKgwqDCoMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAo cmVzb2x2ZSAiZzt4PTEvLi95IikKPiAiaHR0cDovL2EvYi9jL2c7eD0xL3kiKSkKPiArwqDCoMKg wqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJnO3g9MS8uLi95IikK PiAiaHR0cDovL2EvYi9jL3kiKSkKPiArwqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2Vu Y29kZWQ/IChyZXNvbHZlICJnP3kvLi94IikKPiAiaHR0cDovL2EvYi9jL2c/eS8uL3giKSkKPiAr wqDCoMKgwqDCoMKgwqAgKHBhc3MtaWYgKGVxdWFsL2VuY29kZWQ/IChyZXNvbHZlICJnP3kvLi4v eCIpCj4gImh0dHA6Ly9hL2IvYy9nP3kvLi4veCIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1p ZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29sdmUgImcjcy8uL3giKQo+ICJodHRwOi8vYS9iL2MvZyNz Ly4veCIpKQo+ICvCoMKgwqDCoMKgwqDCoCAocGFzcy1pZiAoZXF1YWwvZW5jb2RlZD8gKHJlc29s dmUgImcjcy8uLi94IikKPiAiaHR0cDovL2EvYi9jL2cjcy8uLi94IikpCj4gK8KgwqDCoMKgwqDC oMKgIChwYXNzLWlmIChlcXVhbC9lbmNvZGVkPyAocmVzb2x2ZSAiaHR0cDpnIikgImh0dHA6ZyIp KSkpKSkKPiArwqDCoMKgwqDCoMKgwqAgCj4gCj4gYmFzZS1jb21taXQ6IDg0NDFkOGZmNTY3MWRi NjkwZWIyMzljZmVhNGRjZmRlZTZkNmRjZGIKCg==