From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#47711: bug#48841: bug#47711: bug#48841: bug#47711: [PATCH VERSION 2] Add new `completion-filter-completions` API and deferred highlighting Date: Wed, 25 Oct 2023 01:25:23 +0300 Message-ID: <9f432d18-e70f-54c1-0173-1899fb66d176@gutov.dev> References: <3d3f894f-a6fa-53ae-5d50-c3aa9bffc73e@daniel-mendler.de> <56ab18b1-4348-9b2c-85bb-af9b76cd429a@daniel-mendler.de> <328f87eb-6474-1442-e1ca-9ae8deb2a84a@yandex.ru> <83fsvcbio7.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------AUdgZRFE6FQlG2vfM1Gpkmdf" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="34012"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: 47711@debbugs.gnu.org To: Eli Zaretskii , Daniel Mendler , Stefan Monnier , =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Oct 25 00:27:02 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1qvPrY-0008WC-Oc for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 25 Oct 2023 00:27:02 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qvPr9-0008IF-55; Tue, 24 Oct 2023 18:26:35 -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 1qvPr7-0008GI-3T for bug-gnu-emacs@gnu.org; Tue, 24 Oct 2023 18:26:33 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qvPr6-0008Qj-RI for bug-gnu-emacs@gnu.org; Tue, 24 Oct 2023 18:26:32 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qvPra-000154-Bd for bug-gnu-emacs@gnu.org; Tue, 24 Oct 2023 18:27:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 24 Oct 2023 22:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47711 X-GNU-PR-Package: emacs Original-Received: via spool by 47711-submit@debbugs.gnu.org id=B47711.16981863724088 (code B ref 47711); Tue, 24 Oct 2023 22:27:02 +0000 Original-Received: (at 47711) by debbugs.gnu.org; 24 Oct 2023 22:26:12 +0000 Original-Received: from localhost ([127.0.0.1]:56845 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qvPqj-00013p-DR for submit@debbugs.gnu.org; Tue, 24 Oct 2023 18:26:11 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:39819) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qvPqe-00013G-FE for 47711@debbugs.gnu.org; Tue, 24 Oct 2023 18:26:07 -0400 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 40D803200A1E; Tue, 24 Oct 2023 18:25:28 -0400 (EDT) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Tue, 24 Oct 2023 18:25:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to; s=fm2; t=1698186327; x=1698272727; bh=30 uxqjCwOcvpTcJVIr0Y0MBWsiNqLkdeY4m1KKCzhQQ=; b=B2AtNUw2AZw0iIM2Dt XMdnFl7lu68tRsgQ+gD/3gxNvi5dRFIadWWK7wNSurhxOcMsMg4aF/hUNzk1pbpt Yni5IvkJezrFCKS0pOr8c+V8EoHW+KGJzAqHuzRvXnXsnp/7xNovdicECksLPO4i mQB/ODckTXvQf1LDTFJOWdk42xzjRM3qjVGT+EzDu6oJbhXSaN9TSXRxV+/4VDxF uJjvtCroK+1JOL2ME8F3UgAv2++3QBSjVotWdf+JMcYd+AXhfosCA2erlajWYcXM +0gBtEDSItCNyeNkTyqnEqnrwSSvDATabMU/K7Mb/i0faR/k+oQYxQAPRTV5ZaE+ 8Q2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1698186327; x=1698272727; bh=30uxqjCwOcvpT cJVIr0Y0MBWsiNqLkdeY4m1KKCzhQQ=; b=nSk7xXVncAcL4lE3O77s6xXGlLqML X/ODhgDB3mXWQ+ODyjS4MIe54kGrfXZUsXhBO8BBKcyUIKLgcD23uIZCFopkyiOh bDjOixEMbaMhLMUVGPJMqUpfH4qznhY3/lqTCjNt+fuFSNNCkjjwfoe87B8CTAq+ TYxkWN7/Z/fMDgWgO8z5NecEC1xddzSja+N+I3vMGpWaVzXKkVQi36E4LdR6Jg5n vesfPgW1a41RATwnQ00n2JE9E5pvtwG+gDC5ICdx4jRwQdjMZWLHGHx8G3XKN1Ly UOhv24S7gb3yCGWaRf64R5ZTvFVu2yO+KJwMQiOGXGcFDHWmdLt33uuPw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrkeelgddtlecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffvvehfhfgjsehmtderredtfeejnecuhfhrohhmpeffmhhithhr hicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvg hrnhepheetkefgteeiueejuedvtddvleetffeljeetuddvfeffjeeiheehueetffevieej necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmih htrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 24 Oct 2023 18:25:25 -0400 (EDT) Content-Language: en-US In-Reply-To: <83fsvcbio7.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:273129 Archived-At: This is a multi-part message in MIME format. --------------AUdgZRFE6FQlG2vfM1Gpkmdf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi all! Time flies, doesn't it? On 14/08/2021 10:16, Eli Zaretskii wrote: >>> If one removes these lines, the process becomes much faster, but there is a >>> problem with highlighting. My idea is indeed to defer highlighting by not >>> setting the 'face property directly on that shared string, but some >>> other property >>> that is read later from the shared string by compliant frontents. >> >> I haven't done any direct benchmarking, but I'm pretty sure that this >> approach cannot, by definition, be as fast as the non-mutating one. > > Daniel seems to think otherwise, AFAIU. > >> Because you go through the whole list and mutate all of its elements, >> you have to perform a certain bit of work W x N times, where N is the >> size of the whole list. >> >> Whereas the deferred-mutation approach will only have to do its bit >> (which is likely more work, like, WWW) only 20 times, or 100 times, or >> however many completions are displayed. And this is usually negligible. >> >> However big the difference is going to be, I can't say in advance, of >> course, or whether it's going to be shadowed by some other performance >> costs. But the non-mutating approach should have the best optimization >> potential when the list is long. > > So I guess the suggestion to have a benchmark is still useful, because > the estimations of which approach has better performance vary between > you three. So maybe producing such benchmarks would be a good step? To cross this out from my TODO, I spent most of the day rebasing both of the proposed patches (one of them longer than the other) -- one from an attachment here and another from a commit inside the scratch/icomplete-lazy-highlight-attempt-2 branch, porting icomplete to Daniel's new completion-filter-completions API (*), and benchmarking. (*) Included in the attached patch: it needed changing just two lines inside icomplete, but also new variable completion-all-sorted-highlight and updates to completion--cache-all-sorted-completions and completion-all-sorted-completions. Both rebased patches are attached to this email for your convenience. AFAICT, the results confirmed my expectations quoted above. Using Joao's benchmark, with setup: (defmacro lotsoffunctions () `(progn ,@(cl-loop repeat 150000 collect `(defun ,(intern (symbol-name (gensym "heyhey"))) () 42)))) (lotsoffunctions) I ran the comparisons for empty and non-empty inputs. With no characters typed: (benchmark-run 1 (let ((completion-styles '(flex)) (completion-lazy-hilit (cl-gensym)) ; might not be defined ) ;; Uncomment one of the lines below, depending on the patch used. ;; (completion-all-completions "" obarray 'fboundp 0 nil) ;; (completion-filter-completions "" obarray 'fboundp 0 nil) )) master => 0.066 lazy-hilit => 0.045 filter-and-defer => 0.041 (but more often ~0.110 including GC, somehow) With one character typed: (benchmark-run 1 (let ((completion-styles '(flex)) (completion-lazy-hilit (cl-gensym)) ; might not be defined ) ;; Uncomment one of the lines below, depending on the patch used. ;; (completion-all-completions "h" obarray 'fboundp 1 nil) ;; (completion-filter-completions "h" obarray 'fboundp 1 nil) )) master => 0.824 lazy-hilit => 0.395 filter-and-defer => 0.125 (!) This more or less translates into the improvement in speed of fido-vertical-mode, according to my benchmark-progn call inside icomplete-exhibit (included in both attached patches for convenience). For non-empty inputs (h or hh or hhe, to match the generated functions), filter-and-defer is about 1.5x faster than lazy-hilit, like 0.450ms vs 0.640ms. lazy-hilit is slightly faster than filter-and-defer with the empty input (like 380ms vs 420ms), and I'm not yet sure why, but it's the scenario with 0 highlighting (and so no flex scoring/sorting). Perhaps some short-circuiting can be added somewhere to reach parity, or it's the cost of extra branching somewhere for backward compatibility (which could be removed in the future). Worth additional study. --------------AUdgZRFE6FQlG2vfM1Gpkmdf Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-new-completion-filter-completions-API-and-deferr-v3.diff" Content-Disposition: attachment; filename*0="0001-Add-new-completion-filter-completions-API-and-deferr-v3"; filename*1=".diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvaWNvbXBsZXRlLmVsIGIvbGlzcC9pY29tcGxldGUuZWwKaW5k ZXggZTZmZGQxZjE4MzYuLjIzNDExM2U2MDdjIDEwMDY0NAotLS0gYS9saXNwL2ljb21wbGV0 ZS5lbAorKysgYi9saXNwL2ljb21wbGV0ZS5lbApAQCAtNzU0LDEyICs3NTQsMTMgQEAgaWNv bXBsZXRlLWV4aGliaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LWVu ZCByZm4tZXNoYWRvdy1vdmVybGF5KSkpCiAgICAgICAgICAgKGxldCogKChmaWVsZC1zdHJp bmcgKGljb21wbGV0ZS0tZmllbGQtc3RyaW5nKSkKICAgICAgICAgICAgICAgICAgKHRleHQg KHdoaWxlLW5vLWlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgKGJlbmNobWFyay1w cm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgIChpY29tcGxldGUtY29tcGxldGlvbnMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQtc3RyaW5nCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpY29tcGxldGUtLWNvbXBsZXRpb24tdGFibGUpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpY29tcGxldGUtLWNvbXBsZXRpb24tcHJlZGljYXRlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHdpbmRvdy1taW5pYnVmZmVyLXApCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgbWluaWJ1ZmZlci0tcmVxdWlyZS1tYXRj aCB0KSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSBtaW5pYnVmZmVy LS1yZXF1aXJlLW1hdGNoIHQpKSkpKSkKICAgICAgICAgICAgICAgICAgKGJ1ZmZlci11bmRv LWxpc3QgdCkKICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZS1tYXJrKQogICAgICAgICAg ICAgOzsgRG8gbm90aGluZyBpZiB3aGlsZS1uby1pbnB1dCB3YXMgYWJvcnRlZC4KQEAgLTg3 OCw3ICs4NzksNyBAQCBpY29tcGxldGUtLXJlbmRlci12ZXJ0aWNhbAogICA7OyBIYWxmd2F5 IHRoZXJlLi4uCiAgIChsZXQqICgoc2VsZWN0ZWQgKHByb3BlcnRpemUgKGNhciBjb21wcykg J2ljb21wbGV0ZS1zZWxlY3RlZCB0KSkKICAgICAgICAgIChjaG9zZW4gKGFwcGVuZCBzY3Jv bGwtYWJvdmUgKGxpc3Qgc2VsZWN0ZWQpIHNjcm9sbC1iZWxvdykpCi0gICAgICAgICAodHVw bGVzIChpY29tcGxldGUtLWF1Z21lbnQgbWQgY2hvc2VuKSkKKyAgICAgICAgICh0dXBsZXMg KGljb21wbGV0ZS0tYXVnbWVudCBtZCAoZnVuY2FsbCBjb21wbGV0aW9uLWFsbC1zb3J0ZWQt aGlnaGxpZ2h0IGNob3NlbikpKQogICAgICAgICAgbWF4LXByZWZpeC1sZW4gbWF4LWNvbXAt bGVuIGxpbmVzIG5zZWN0aW9ucykKICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSAwIChs ZW5ndGggc2VsZWN0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljb21wbGV0 ZS1zZWxlY3RlZC1tYXRjaCAnYXBwZW5kIHNlbGVjdGVkKQpAQCAtMTA2Nyw3ICsxMDY4LDgg QEAgaWNvbXBsZXRlLWNvbXBsZXRpb25zCiAgICAgICAgICAgICAgICAgICAoaWYgKDwgcHJv c3BlY3RzLWxlbiBwcm9zcGVjdHMtbWF4KQogICAgICAgICAgICAgICAgICAgICAgIChwdXNo IGNvbXAgcHJvc3BlY3RzKQogICAgICAgICAgICAgICAgICAgICAoc2V0cSBsaW1pdCB0KSkp Ci0gICAgICAgICAgICAgICAgKHNldHEgcHJvc3BlY3RzIChucmV2ZXJzZSBwcm9zcGVjdHMp KQorICAgICAgICAgICAgICAgIChzZXRxIHByb3NwZWN0cyAobnJldmVyc2UKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGNvbXBsZXRpb24tYWxsLXNvcnRl ZC1oaWdobGlnaHQgcHJvc3BlY3RzKSkpCiAgICAgICAgICAgICAgICAgOzsgRGVjb3JhdGUg Zmlyc3Qgb2YgdGhlIHByb3NwZWN0cy4KICAgICAgICAgICAgICAgICAod2hlbiBwcm9zcGVj dHMKICAgICAgICAgICAgICAgICAgIChsZXQgKChmaXJzdCAoY29weS1zZXF1ZW5jZSAocG9w IHByb3NwZWN0cykpKSkKZGlmZiAtLWdpdCBhL2xpc3AvbWluaWJ1ZmZlci5lbCBiL2xpc3Av bWluaWJ1ZmZlci5lbAppbmRleCAyMTIwZTMxNzc1ZS4uZThiMjg0OWY0NWEgMTAwNjQ0Ci0t LSBhL2xpc3AvbWluaWJ1ZmZlci5lbAorKysgYi9saXNwL21pbmlidWZmZXIuZWwKQEAgLTY3 Nyw2ICs2NzcsMTAgQEAgY29tcGxldGlvbi0tdHdxLWFsbAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRpb25zLWNvbW1vbi1wYXJ0KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFwcmVmaXgpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAocWNvbXBsZXRpb24gKGNvbmNhdCBxcHJlZml4IHFuZXcpKSkKKyAg ICAgICAgICAgICAgICAgICA7OyBBdHRhY2ggdW5xdW90ZWQgY29tcGxldGlvbiBzdHJpbmcs IHdoaWNoIGlzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgIDs7IHRvIHNjb3JlIHRoZSBj b21wbGV0aW9uIGluIGBjb21wbGV0aW9uLS1mbGV4LXNjb3JlJy4KKyAgICAgICAgICAgICAg ICAgICAocHV0LXRleHQtcHJvcGVydHkgMCAxICdjb21wbGV0aW9uLS11bnF1b3RlZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uIHFjb21wbGV0 aW9uKQogCQkgICA7OyBGSVhNRTogU2ltaWxhcmx5IGhlcmUsIEN5Z3dpbidzIG1hcHBpbmcg dHJpcHMgdGhpcwogCQkgICA7OyBhc3NlcnRpb24uCiAgICAgICAgICAgICAgICAgICAgOzso Y2wtYXNzZXJ0CkBAIC0xMTcxLDYgKzExNzUsMTcgQEAgY29tcGxldGlvbi0tc3R5bGVzCiAg ICAgICAgIChkZWxldGUtZHVwcyAoYXBwZW5kIChjZHIgb3ZlcikgKGNvcHktc2VxdWVuY2Ug Y29tcGxldGlvbi1zdHlsZXMpKSkKICAgICAgICBjb21wbGV0aW9uLXN0eWxlcykpKQogCiso ZGVmdmFyIGNvbXBsZXRpb24tLXJldHVybi1hbGlzdC1mbGFnIG5pbAorICAiTm9uLW5pbCBt ZWFucyB0byByZXR1cm4gY29tcGxldGlvbnMgaW4gYWxpc3QgZm9ybWF0LgorSWYgdGhpcyB2 YXJpYWJsZSBpcyBub24tbmlsIHRoZSBgYWxsLWNvbXBsZXRpb25zJyBmdW5jdGlvbiBvZiBh Citjb21wbGV0aW9uIHN0eWxlIHNob3VsZCByZXR1cm4gdGhlIHJlc3VsdHMgaW4gdGhlIGFs aXN0IGZvcm1hdCBvZgorYGNvbXBsZXRpb24tZmlsdGVyLWNvbXBsZXRpb25zJy4gIFRoaXMg dmFyaWFibGUgaXMgcHVyZWx5IG5lZWRlZCB0bworZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxp dHkgb2YgdGhlIGV4aXN0aW5nIGJ1aWx0aW4gY29tcGxldGlvbiBzdHlsZQorZnVuY3Rpb25z IGFzIG9mIEVtYWNzIDI4LiAgTmV3ZXIgY29tcGxldGlvbiBzdHlsZSBmdW5jdGlvbnMgc2hv dWxkCithbHdheXMgcmV0dXJuIHRoZWlyIHJlc3VsdHMgaW4gdGhlIGFsaXN0IGZvcm1hdCwg c2luY2UKK2Bjb21wbGV0aW9uLWFsbC1jb21wbGV0aW9ucycgdHJhbnNwYXJlbnRseSBjb252 ZXJ0cyBiYWNrIHRvIGEgbGlzdCBvZgorY29tcGxldGlvbnMgd2l0aCBiYXNlIHNpemUgaW4g dGhlIGxhc3QgY2RyLiIpCisKIChkZWZ1biBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbiAo biBzdHJpbmcgdGFibGUgcHJlZCBwb2ludCBtZXRhZGF0YSkKICAgIkNhbGwgdGhlIE50aCBt ZXRob2Qgb2YgY29tcGxldGlvbiBzdHlsZXMuIgogICA7OyBXZSBwcm92aWRlIHNwZWNpYWwg c3VwcG9ydCBmb3IgcXVvdGluZy91bnF1b3RpbmcgaGVyZSBiZWNhdXNlIGl0IGNhbm5vdApA QCAtMTE5Nyw2ICsxMjEyLDE1IEBAIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uCiAgICAg ICAgICAgICAgICAgIDs7IHRoZSBvcmlnaW5hbCB0YWJsZSwgaW4gdGhhdCBjYXNlIQogICAg ICAgICAgICAgICAgICAoZnVuY3Rpb25wIHRhYmxlKSkKICAgICAgICAgICAgIChsZXQgKChu ZXcgKGZ1bmNhbGwgdGFibGUgc3RyaW5nIHBvaW50ICdjb21wbGV0aW9uLS11bnF1b3RlKSkp CisgICAgICAgICAgICAgIDs7IEZJWE1FIEZvciBub3cgZG8gbm90IGF0dGVtcHQgZGVmZXJy ZWQgaGlnaGxpZ2h0aW5nIGlmCisgICAgICAgICAgICAgIDs7IHF1b3RpbmcgaXMgdXNlZC4g IE5vdCBkb2luZyBkZWZlcnJlZCBoaWdobGlnaHRpbmcgaXMKKyAgICAgICAgICAgICAgOzsg bm90IHRvbyBzZXZlcmUgaW4gdGhpcyBjYXNlLCBzaW5jZQorICAgICAgICAgICAgICA7OyBg Y29tcGxldGlvbi0tdHdxLWFsbCcgaXMgYWxyZWFkeSBhbiBleHBlbnNpdmUKKyAgICAgICAg ICAgICAgOzsgZnVuY3Rpb24sIHdoaWNoIGFsbG9jYXRlcyBhbGwgY29tcGxldGlvbiBzdHJp bmdzLiAgSW4KKyAgICAgICAgICAgICAgOzsgY29udHJhc3QgdG8gcGxhaW4gY29tcGxldGlv biB0YWJsZXMsIHRoZSBzYXZpbmdzIG9mCisgICAgICAgICAgICAgIDs7IGRlZmVycmVkIGhp Z2hsaWdodGluZyB3b3VsZCBiZSBtaW5pbWFsIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAg ICAgIDs7IHF1b3RlZCBjb21wbGV0aW9uIHRhYmxlcy4KKyAgICAgICAgICAgICAgKHNldHEg Y29tcGxldGlvbi0tcmV0dXJuLWFsaXN0LWZsYWcgbmlsKQogICAgICAgICAgICAgICAoc2V0 cSBzdHJpbmcgKHBvcCBuZXcpKQogICAgICAgICAgICAgICAoc2V0cSB0YWJsZSAocG9wIG5l dykpCiAgICAgICAgICAgICAgIChzZXRxIHBvaW50IChwb3AgbmV3KSkKQEAgLTEyMDUsMTgg KzEyMjksMzYgQEAgY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24KICAgICAgICAgIChyZXN1 bHQtYW5kLXN0eWxlCiAgICAgICAgICAgKHNlcS1zb21lCiAgICAgICAgICAgIChsYW1iZGEg KHN0eWxlKQotICAgICAgICAgICAgIChsZXQgKChwcm9iZSAoZnVuY2FsbAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG9yIChudGggbiAoYXNzcSBzdHlsZSBjb21wbGV0aW9uLXN0 eWxlcy1hbGlzdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJJ bnZhbGlkIGNvbXBsZXRpb24gc3R5bGUgJXMiIHN0eWxlKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZyB0YWJsZSBwcmVkIHBvaW50KSkpCisgICAgICAgICAgICAgKGxl dCogKChmdW4gKG9yIChudGggbiAoYXNzcSBzdHlsZSBjb21wbGV0aW9uLXN0eWxlcy1hbGlz dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJJbnZhbGlkIGNv bXBsZXRpb24gc3R5bGUgJXMiIHN0eWxlKSkpCisgICAgICAgICAgICAgICAgICAgIDs7IFRy YW5zcGFyZW50bHkgdXBncmFkZSB0aGUgcmV0dXJuIHZhbHVlIGZvcgorICAgICAgICAgICAg ICAgICAgICA7OyBleGlzdGluZyBidWlsdC1pbiBzdHlsZXMgYXMgb2YgRW1hY3MgMjguICBO bworICAgICAgICAgICAgICAgICAgICA7OyBuZXcgc3R5bGVzIHNob3VsZCBiZSBhZGRlZCBo ZXJlLiBOZXcgY29tcGxldGlvbgorICAgICAgICAgICAgICAgICAgICA7OyBzdHlsZXMgc2hv dWxkIGRpcmVjdGx5IHJldHVybiB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgIDs7IGNv bXBsZXRpb24gZm9ybWF0LmVsCisgICAgICAgICAgICAgICAgICAgIChjb21wbGV0aW9uLS1y ZXR1cm4tYWxpc3QtZmxhZworICAgICAgICAgICAgICAgICAgICAgKGFuZCBjb21wbGV0aW9u LS1yZXR1cm4tYWxpc3QtZmxhZworICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSBz dHlsZSAnKGVtYWNzMjEgZW1hY3MyMiBiYXNpYyBzdWJzdHJpbmcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsLWNvbXBsZXRpb24gaW5pdGlhbHMg ZmxleCkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHByb2JlIChmdW5jYWxsIGZ1biBzdHJp bmcgdGFibGUgcHJlZCBwb2ludCkpKQogICAgICAgICAgICAgICAgKGFuZCBwcm9iZSAoY29u cyBwcm9iZSBzdHlsZSkpKSkKICAgICAgICAgICAgKGNvbXBsZXRpb24tLXN0eWxlcyBtZCkp KQotICAgICAgICAgKGFkanVzdC1mbiAoZ2V0IChjZHIgcmVzdWx0LWFuZC1zdHlsZSkgJ2Nv bXBsZXRpb24tLWFkanVzdC1tZXRhZGF0YSkpKQotICAgICh3aGVuIChhbmQgYWRqdXN0LWZu IG1ldGFkYXRhKQotICAgICAgKHNldGNkciBtZXRhZGF0YSAoY2RyIChmdW5jYWxsIGFkanVz dC1mbiBtZXRhZGF0YSkpKSkKKyAgICAgICAgIChzdHlsZS1tZCAoZ2V0IChjZHIgcmVzdWx0 LWFuZC1zdHlsZSkgJ2NvbXBsZXRpb24tLXN0eWxlLW1ldGFkYXRhKSkKKyAgICAgICAgIChy ZXN1bHQgKGNhciByZXN1bHQtYW5kLXN0eWxlKSkpCisgICAgKHdoZW4gKGFuZCBzdHlsZS1t ZCBtZXRhZGF0YSkKKyAgICAgIChzZXRjZHIgbWV0YWRhdGEgKGNkciAoZnVuY2FsbCBzdHls ZS1tZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyB0YWJs ZSBwcmVkIHBvaW50IG1ldGFkYXRhKSkpKQorICAgICh3aGVuIChhbmQgKG5vdCBjb21wbGV0 aW9uLS1yZXR1cm4tYWxpc3QtZmxhZykgKD0gbiAyKSAoY29uc3AgKGNhciByZXN1bHQpKSkK KyAgICAgIDs7IEdpdmUgdGhlIGNvbXBsZXRpb24gc3R5bGVzIHNvbWUgZnJlZWRvbSEgIElm IHRoZXkgYXJlCisgICAgICA7OyB0YXJnZXRpbmcgRW1hY3MgMjggdXB3YXJkcyBvbmx5LCB0 aGV5IG1heSByZXR1cm4gYSByZXN1bHQKKyAgICAgIDs7IHdpdGggZGVmZXJyZWQgaGlnaGxp Z2h0aW5nLiAgV2UgY29udmVydCBiYWNrIHRvIHRoZSBvbGQKKyAgICAgIDs7IGZvcm1hdCBo ZXJlIGJ5IGFwcGx5aW5nIHRoZSBoaWdobGlnaHRpbmcgZWFnZXJseS4KKyAgICAgIChzZXRx IHJlc3VsdCAobmNvbmMgKGZ1bmNhbGwgKGNkciAoYXNzcSAnaGlnaGxpZ2h0IHJlc3VsdCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ2NvbXBs ZXRpb25zIHJlc3VsdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3Nx ICdiYXNlIHJlc3VsdCkpKSkpCiAgICAgKGlmIHJlcXVvdGUKLSAgICAgICAgKGZ1bmNhbGwg cmVxdW90ZSAoY2FyIHJlc3VsdC1hbmQtc3R5bGUpIG4pCi0gICAgICAoY2FyIHJlc3VsdC1h bmQtc3R5bGUpKSkpCisgICAgICAgIChmdW5jYWxsIHJlcXVvdGUgcmVzdWx0IG4pCisgICAg ICByZXN1bHQpKSkKIAogKGRlZnVuIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24gKHN0cmlu ZyB0YWJsZSBwcmVkIHBvaW50ICZvcHRpb25hbCBtZXRhZGF0YSkKICAgIlRyeSB0byBjb21w bGV0ZSBTVFJJTkcgdXNpbmcgY29tcGxldGlvbiB0YWJsZSBUQUJMRS4KQEAgLTEyMjUsNyAr MTI2Nyw4IEBAIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24KIFRoZSByZXR1cm4gdmFsdWUg Y2FuIGJlIGVpdGhlciBuaWwgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBpcyBubyBjb21wbGV0 aW9uLAogdCB0byBpbmRpY2F0ZSB0aGF0IFNUUklORyBpcyB0aGUgb25seSBwb3NzaWJsZSBj b21wbGV0aW9uLAogb3IgYSBwYWlyIChORVdTVFJJTkcgLiBORVdQT0lOVCkgb2YgdGhlIGNv bXBsZXRlZCByZXN1bHQgc3RyaW5nIHRvZ2V0aGVyIHdpdGgKLWEgbmV3IHBvc2l0aW9uIGZv ciBwb2ludC4iCithIG5ldyBwb3NpdGlvbiBmb3IgcG9pbnQuCitUaGUgTUVUQURBVEEgbWF5 IGJlIG1vZGlmaWVkIGJ5IHRoZSBjb21wbGV0aW9uIHN0eWxlLiIKICAgKGNvbXBsZXRpb24t LW50aC1jb21wbGV0aW9uIDEgc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQgbWV0YWRhdGEpKQog CiAoZGVmdW4gY29tcGxldGlvbi1hbGwtY29tcGxldGlvbnMgKHN0cmluZyB0YWJsZSBwcmVk IHBvaW50ICZvcHRpb25hbCBtZXRhZGF0YSkKQEAgLTEyMzMsMTAgKzEyNzYsNDcgQEAgY29t cGxldGlvbi1hbGwtY29tcGxldGlvbnMKIE9ubHkgdGhlIGVsZW1lbnRzIG9mIHRhYmxlIHRo YXQgc2F0aXNmeSBwcmVkaWNhdGUgUFJFRCBhcmUgY29uc2lkZXJlZC4KIFBPSU5UIGlzIHRo ZSBwb3NpdGlvbiBvZiBwb2ludCB3aXRoaW4gU1RSSU5HLgogVGhlIHJldHVybiB2YWx1ZSBp cyBhIGxpc3Qgb2YgY29tcGxldGlvbnMgYW5kIG1heSBjb250YWluIHRoZSBiYXNlLXNpemUK LWluIHRoZSBsYXN0IGBjZHInLiIKLSAgOzsgRklYTUU6IFdlIG5lZWQgdG8gYWRkaXRpb25h bGx5IHJldHVybiB0aGUgaW5mbyBuZWVkZWQgZm9yIHRoZQotICA7OyBzZWNvbmQgcGFydCBv ZiBjb21wbGV0aW9uLWJhc2UtcG9zaXRpb24uCi0gIChjb21wbGV0aW9uLS1udGgtY29tcGxl dGlvbiAyIHN0cmluZyB0YWJsZSBwcmVkIHBvaW50IG1ldGFkYXRhKSkKK2luIHRoZSBsYXN0 IGBjZHInLgorVGhlIE1FVEFEQVRBIG1heSBiZSBtb2RpZmllZCBieSB0aGUgY29tcGxldGlv biBzdHlsZS4KKworVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5IGBjb21w bGV0aW9uLWZpbHRlci1jb21wbGV0aW9ucycsCit3aGljaCByZXR1cm5zIHJpY2hlciBpbmZv cm1hdGlvbiBhbmQgc3VwcG9ydHMgZGVmZXJyZWQgY2FuZGlkYXRlCitoaWdobGlnaHRpbmcu IgorICAobGV0ICgoY29tcGxldGlvbi0tcmV0dXJuLWFsaXN0LWZsYWcgbmlsKSkKKyAgICAo Y29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24gMiBzdHJpbmcgdGFibGUgcHJlZCBwb2ludCBt ZXRhZGF0YSkpKQorCisoZGVmdW4gY29tcGxldGlvbi1maWx0ZXItY29tcGxldGlvbnMgKHN0 cmluZyB0YWJsZSBwcmVkIHBvaW50IG1ldGFkYXRhKQorICAiRmlsdGVyIHRoZSBwb3NzaWJs ZSBjb21wbGV0aW9ucyBvZiBTVFJJTkcgaW4gY29tcGxldGlvbiB0YWJsZSBUQUJMRS4KK09u bHkgdGhlIGVsZW1lbnRzIG9mIHRhYmxlIHRoYXQgc2F0aXNmeSBwcmVkaWNhdGUgUFJFRCBh cmUgY29uc2lkZXJlZC4KK1BPSU5UIGlzIHRoZSBwb3NpdGlvbiBvZiBwb2ludCB3aXRoaW4g U1RSSU5HLgorVGhlIE1FVEFEQVRBIG1heSBiZSBtb2RpZmllZCBieSB0aGUgY29tcGxldGlv biBzdHlsZS4KK1RoZSByZXR1cm4gdmFsdWUgaXMgYSBhbGlzdCB3aXRoIHRoZSBrZXlzOgor CistIGJhc2U6IEJhc2UgcG9zaXRpb24gb2YgdGhlIGNvbXBsZXRpb24gKGZyb20gdGhlIHN0 YXJ0IG9mIFNUUklORykKKy0gZW5kOiBFbmQgcG9zaXRpb24gb2YgdGhlIGNvbXBsZXRpb24g KGZyb20gdGhlIHN0YXJ0IG9mIFNUUklORykKKy0gaGlnaGxpZ2h0OiBIaWdobGlnaHRpbmcg ZnVuY3Rpb24gdGFraW5nIGEgbGlzdCBvZiBjb21wbGV0aW9ucyBhbmQKKyAgcmV0dXJuaW5n IGEgbmV3IGxpc3Qgb2YgbmV3IHN0cmluZ3Mgd2l0aCBhcHBsaWVkIGhpZ2hsaWdodGluZy4K Ky0gY29tcGxldGlvbnM6IFRoZSBsaXN0IG9mIGNvbXBsZXRpb25zLgorCitUaGlzIGZ1bmN0 aW9uIHN1cGVyc2VkZXMgdGhlIGZ1bmN0aW9uIGBjb21wbGV0aW9uLWFsbC1jb21wbGV0aW9u cycsCit3aGljaCBkb2VzIG5vdCBwcm92aWRlIHRoZSBgZW5kJyBwb3NpdGlvbiBvZiB0aGUg Y29tcGxldGlvbiBhbmQgZG9lcworbm90IHN1cHBvcnQgZGVmZXJyZWQgaGlnaGxpZ2h0aW5n LiIKKyAgKGxldCogKChjb21wbGV0aW9uLS1yZXR1cm4tYWxpc3QtZmxhZyB0KQorICAgICAg ICAgKHJlc3VsdCAoY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24gMiBzdHJpbmcgdGFibGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQgcG9p bnQgbWV0YWRhdGEpKSkKKyAgICAoaWYgKGFuZCByZXN1bHQgKG5vdCAoY29uc3AgKGNhciBy ZXN1bHQpKSkpCisgICAgICAgIDs7IERlZmVycmVkIGhpZ2hsaWdodGluZyBoYXMgYmVlbiBy ZXF1ZXN0ZWQsIGJ1dCB0aGUKKyAgICAgICAgOzsgY29tcGxldGlvbiBzdHlsZSByZXR1cm5l ZCBhIG5vbi1kZWZlcnJlZCByZXN1bHQuICBDb252ZXJ0CisgICAgICAgIDs7IHRoZSByZXN1 bHQgdG8gdGhlIGFsaXN0IGZvcm1hdCBvZgorICAgICAgICA7OyBgY29tcGxldGlvbi1maWx0 ZXItY29tcGxldGlvbnMnLgorICAgICAgICAobGV0KiAoKGxhc3QgKGxhc3QgcmVzdWx0KSkK KyAgICAgICAgICAgICAgIChiYXNlIChvciAoY2RyIGxhc3QpIDApKSkKKyAgICAgICAgICAo c2V0Y2RyIGxhc3QgbmlsKQorICAgICAgICAgIGAoKGJhc2UgLiAsYmFzZSkKKyAgICAgICAg ICAgIChlbmQgLiAsKGxlbmd0aCBzdHJpbmcpKQorICAgICAgICAgICAgKGhpZ2hsaWdodCAu IGlkZW50aXR5KQorICAgICAgICAgICAgKGNvbXBsZXRpb25zIC4gLHJlc3VsdCkpKQorICAg ICAgcmVzdWx0KSkpCiAKIChkZWZ1biBtaW5pYnVmZmVyLS1iaXRzZXQgKG1vZGlmaWVkIGNv bXBsZXRpb25zIGV4YWN0KQogICAobG9naW9yIChpZiBtb2RpZmllZCAgICA0IDApCkBAIC0x MjUzLDcgKzEzMzMsOCBAQCBjb21wbGV0aW9uLS1yZXBsYWNlCiAgIChpZiBtaW5pYnVmZmVy LWFsbG93LXRleHQtcHJvcGVydGllcwogICAgICAgOzsgSWYgd2UncmUgcHJlc2VydmluZyBw cm9wZXJ0aWVzLCB0aGVuIGp1c3QgcmVtb3ZlIHRoZSBmYWNlcwogICAgICAgOzsgYW5kIG90 aGVyIHByb3BlcnRpZXMgYWRkZWQgYnkgdGhlIGNvbXBsZXRpb24gbWFjaGluZXJ5LgotICAg ICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgMCAobGVuZ3RoIG5ld3RleHQpICcoZmFjZSBj b21wbGV0aW9uLXNjb3JlKQorICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgMCAobGVu Z3RoIG5ld3RleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZhY2Ugbmls IGNvbXBsZXRpb24tc2NvcmUgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmV3dGV4dCkKICAgICA7OyBSZW1vdmUgYWxsIHRleHQgcHJvcGVydGllcy4KICAgICAoc2V0 LXRleHQtcHJvcGVydGllcyAwIChsZW5ndGggbmV3dGV4dCkgbmlsIG5ld3RleHQpKQpAQCAt MTM1Niw2ICsxNDM3LDcgQEAgY29tcGxldGlvbi0tY3ljbGUtdGhyZXNob2xkCiAKIChkZWZ2 YXItbG9jYWwgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRpb25zIG5pbCkKIChkZWZ2 YXItbG9jYWwgY29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy1sb2NhdGlvbiBu aWwpCisoZGVmdmFyLWxvY2FsIGNvbXBsZXRpb24tYWxsLXNvcnRlZC1oaWdobGlnaHQgbmls KQogKGRlZnZhciBjb21wbGV0aW9uLWN5Y2xpbmcgbmlsKSAgICAgIDtGdW5jdGlvbiB0aGF0 IHRha2VzIGRvd24gdGhlIGN5Y2xpbmcgbWFwLgogKGRlZnZhciBjb21wbGV0aW9uLXRhYi13 aWR0aCBuaWwpCiAKQEAgLTE1NjIsMTIgKzE2NDQsMTUgQEAgY29tcGxldGlvbi0taW4tcmVn aW9uLTEKICAgICAgICAgICA7OyBXaGVuIHRoZSBjb21wbGV0aW9uIGxpc3Qgd2luZG93IHdh cyBkaXNwbGF5ZWQsIHNlbGVjdCBpdC4KICAgICAgICAgICAoc3dpdGNoLXRvLWNvbXBsZXRp b25zKSkpKSkpCiAKLShkZWZ1biBjb21wbGV0aW9uLS1jYWNoZS1hbGwtc29ydGVkLWNvbXBs ZXRpb25zIChiZWcgZW5kIGNvbXBzKQorKGRlZnVuIGNvbXBsZXRpb24tLWNhY2hlLWFsbC1z b3J0ZWQtY29tcGxldGlvbnMgKGJlZyBlbmQgY29tcHMgJm9wdGlvbmFsIGhpZ2hsaWdodCkK ICAgKGFkZC1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zCiAgICAgICAgICAgICAjJ2Nv bXBsZXRpb24tLWZsdXNoLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgbmlsIHQpCiAgIChzZXRx IGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtbG9jYXRpb24KICAgICAgICAg KGNvbnMgKGNvcHktbWFya2VyIGJlZykgKGNvcHktbWFya2VyIGVuZCkpKQotICAoc2V0cSBj b21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgY29tcHMpKQorICAoc2V0cSBjb21w bGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgY29tcHMpCisgICh3aGVuIGhpZ2hsaWdo dAorICAgIChzZXRxIGNvbXBsZXRpb24tYWxsLXNvcnRlZC1oaWdobGlnaHQgaGlnaGxpZ2h0 KSkKKyAgY29tcHMpCiAKIChkZWZ1biBjb21wbGV0aW9uLS1mbHVzaC1hbGwtc29ydGVkLWNv bXBsZXRpb25zICgmb3B0aW9uYWwgc3RhcnQgZW5kIF9sZW4pCiAgICh1bmxlc3MgKGFuZCBz dGFydCBlbmQKQEAgLTE1NzgsNyArMTY2Myw4IEBAIGNvbXBsZXRpb24tLWZsdXNoLWFsbC1z b3J0ZWQtY29tcGxldGlvbnMKICAgICA7OyBSZW1vdmUgdGhlIHRyYW5zaWVudCBtYXAgaWYg YXBwbGljYWJsZS4KICAgICAod2hlbiBjb21wbGV0aW9uLWN5Y2xpbmcKICAgICAgIChmdW5j YWxsIChwcm9nMSBjb21wbGV0aW9uLWN5Y2xpbmcgKHNldHEgY29tcGxldGlvbi1jeWNsaW5n IG5pbCkpKSkKLSAgICAoc2V0cSBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMg bmlsKSkpCisgICAgKHNldHEgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRpb25zIG5p bAorICAgICAgICAgIGNvbXBsZXRpb24tYWxsLXNvcnRlZC1oaWdobGlnaHQgbmlsKSkpCiAK IChkZWZ1biBjb21wbGV0aW9uLS1tZXRhZGF0YSAoc3RyaW5nIGJhc2UgbWQtYXQtcG9pbnQg dGFibGUgcHJlZCkKICAgOzsgTGlrZSBjb21wbGV0aW9uLW1ldGFkYXRhLCBidXQgZm9yIHRo ZSBzcGVjaWZpYyBjYXNlIG9mIGdldHRpbmcgdGhlCkBAIC0xNjU2LDE0ICsxNzQyLDE1IEBA IGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucwogICAgICAgICAgICAgIChlbmQg KG9yIGVuZCAocG9pbnQtbWF4KSkpCiAgICAgICAgICAgICAgKHN0cmluZyAoYnVmZmVyLXN1 YnN0cmluZyBzdGFydCBlbmQpKQogICAgICAgICAgICAgIChtZCAoY29tcGxldGlvbi0tZmll bGQtbWV0YWRhdGEgc3RhcnQpKQotICAgICAgICAgICAgIChhbGwgKGNvbXBsZXRpb24tYWxs LWNvbXBsZXRpb25zCi0gICAgICAgICAgICAgICAgICAgc3RyaW5nCi0gICAgICAgICAgICAg ICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXRhYmxlCi0gICAgICAgICAgICAgICAgICAg bWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZQotICAgICAgICAgICAgICAgICAgICgt IChwb2ludCkgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgbWQpKQotICAgICAgICAgICAg IChsYXN0IChsYXN0IGFsbCkpCi0gICAgICAgICAgICAgKGJhc2Utc2l6ZSAob3IgKGNkciBs YXN0KSAwKSkKKyAgICAgICAgICAgICAoYWxpc3QgKGNvbXBsZXRpb24tZmlsdGVyLWNvbXBs ZXRpb25zCisgICAgICAgICAgICAgICAgICAgICBzdHJpbmcKKyAgICAgICAgICAgICAgICAg ICAgIG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZQorICAgICAgICAgICAgICAgICAgICAg bWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZQorICAgICAgICAgICAgICAgICAgICAg KC0gKHBvaW50KSBzdGFydCkKKyAgICAgICAgICAgICAgICAgICAgIG1kKSkKKyAgICAgICAg ICAgICAoYWxsIChhc3NvYy1kZWZhdWx0ICdjb21wbGV0aW9ucyBhbGlzdCkpCisgICAgICAg ICAgICAgKGJhc2Utc2l6ZSAoYXNzb2MtZGVmYXVsdCAnYmFzZSBhbGlzdCkpCisgICAgICAg ICAgICAgKGhpZ2hsaWdodCAoYXNzb2MtZGVmYXVsdCAnaGlnaGxpZ2h0IGFsaXN0KSkKICAg ICAgICAgICAgICAoYWxsLW1kIChjb21wbGV0aW9uLS1tZXRhZGF0YSAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXJ0IChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmFzZS1zaXplIG1kCkBAIC0xNjcxLDE0ICsxNzU4LDExIEBAIGNv bXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi1wcmVkaWNhdGUp KQogICAgICAgICAgICAgIChzb3J0LWZ1biAoY29tcGxldGlvbi1tZXRhZGF0YS1nZXQgYWxs LW1kICdjeWNsZS1zb3J0LWZ1bmN0aW9uKSkKICAgICAgICAgICAgICAoZ3JvdXAtZnVuIChj b21wbGV0aW9uLW1ldGFkYXRhLWdldCBhbGwtbWQgJ2dyb3VwLWZ1bmN0aW9uKSkpCi0gICAg ICAgICh3aGVuIGxhc3QKLSAgICAgICAgICAoc2V0Y2RyIGxhc3QgbmlsKQotCisgICAgICAg ICh3aGVuIGFsbAogICAgICAgICAgIDs7IERlbGV0ZSBkdXBsaWNhdGVzOiBkbyBpdCBhZnRl ciBzZXR0aW5nIGxhc3QncyBjZHIgdG8gbmlsIChzbwogICAgICAgICAgIDs7IGl0J3MgYSBw cm9wZXIgbGlzdCksIGFuZCBiZSBjYXJlZnVsIHRvIHJlc2V0IGBsYXN0JyBzaW5jZSBpdAog ICAgICAgICAgIDs7IG1heSBiZSBhIGRpZmZlcmVudCBjb25zLWNlbGwuCiAgICAgICAgICAg KHNldHEgYWxsIChkZWxldGUtZHVwcyBhbGwpKQotICAgICAgICAgIChzZXRxIGxhc3QgKGxh c3QgYWxsKSkKIAogICAgICAgICAgIChjb25kCiAgICAgICAgICAgIChzb3J0LWZ1biAoc2V0 cSBhbGwgKGZ1bmNhbGwgc29ydC1mdW4gYWxsKSkpCkBAIC0xNzA0LDcgKzE3ODgsNyBAQCBj b21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMKICAgICAgICAgICA7OyByZXBlYXRl ZCBjYWxscyB0byBtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlIGNhbiBjeWNsZSB0aHJvdWdo CiAgICAgICAgICAgOzsgYWxsIHBvc3NpYmlsaXRpZXMuCiAgICAgICAgICAgKGNvbXBsZXRp b24tLWNhY2hlLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMKLSAgICAgICAgICAgc3RhcnQgZW5k IChuY29uYyBhbGwgYmFzZS1zaXplKSkpKSkpCisgICAgICAgICAgIHN0YXJ0IGVuZCAobmNv bmMgYWxsIGJhc2Utc2l6ZSkgaGlnaGxpZ2h0KSkpKSkKIAogKGRlZnVuIG1pbmlidWZmZXIt Zm9yY2UtY29tcGxldGUtYW5kLWV4aXQgKCkKICAgIkNvbXBsZXRlIHRoZSBtaW5pYnVmZmVy IHdpdGggZmlyc3Qgb2YgdGhlIG1hdGNoZXMgYW5kIGV4aXQuIgpAQCAtMjIzOCwzNCArMjMy Miw0OSBAQCBjb21wbGV0aW9uLWhpbGl0LWNvbW1vbmFsaXR5CiBJdCByZXR1cm5zIGEgbGlz dCB3aXRoIGZvbnQtbG9jayBwcm9wZXJ0aWVzIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50LAog YW5kIHdpdGggQkFTRS1TSVpFIGFwcGVuZGVkIGFzIHRoZSBsYXN0IGVsZW1lbnQuIgogICAo d2hlbiBjb21wbGV0aW9ucwotICAgIChsZXQgKChjb20tc3RyLWxlbiAoLSBwcmVmaXgtbGVu IChvciBiYXNlLXNpemUgMCkpKSkKLSAgICAgIChuY29uYwotICAgICAgIChtYXBjYXIKLSAg ICAgICAgKGxhbWJkYSAoZWxlbSkKLSAgICAgICAgICAobGV0ICgoc3RyCi0gICAgICAgICAg ICAgICAgIDs7IERvbid0IG1vZGlmeSB0aGUgc3RyaW5nIGl0c2VsZiwgYnV0IGEgY29weSwg c2luY2UgdGhlCi0gICAgICAgICAgICAgICAgIDs7IHN0cmluZyBtYXkgYmUgcmVhZC1vbmx5 IG9yIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgotICAgICAgICAgICAgICAgICA7OyBGdXJ0 aGVybW9yZSwgc2luY2UgYGNvbXBsZXRpb25zJyBtYXkgY29tZSBmcm9tCi0gICAgICAgICAg ICAgICAgIDs7IGRpc3BsYXktY29tcGxldGlvbi1saXN0LCBgZWxlbScgbWF5IGJlIGEgbGlz dC4KLSAgICAgICAgICAgICAgICAgKGlmIChjb25zcCBlbGVtKQotICAgICAgICAgICAgICAg ICAgICAgKGNhciAoc2V0cSBlbGVtIChjb25zIChjb3B5LXNlcXVlbmNlIChjYXIgZWxlbSkp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBlbGVt KSkpKQotICAgICAgICAgICAgICAgICAgIChzZXRxIGVsZW0gKGNvcHktc2VxdWVuY2UgZWxl bSkpKSkpCi0gICAgICAgICAgICAoZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eQot ICAgICAgICAgICAgIDAKLSAgICAgICAgICAgICA7OyBJZiBjb21wbGV0aW9uLWJvdW5kYXJp ZXMgcmV0dXJucyBpbmNvcnJlY3QKLSAgICAgICAgICAgICA7OyB2YWx1ZXMsIGFsbC1jb21w bGV0aW9ucyBtYXkgcmV0dXJuIHN0cmluZ3MKLSAgICAgICAgICAgICA7OyB0aGF0IGRvbid0 IGNvbnRhaW4gdGhlIHByZWZpeC4KLSAgICAgICAgICAgICAobWluIGNvbS1zdHItbGVuIChs ZW5ndGggc3RyKSkKLSAgICAgICAgICAgICAnZmFjZSAnY29tcGxldGlvbnMtY29tbW9uLXBh cnQgc3RyKQotICAgICAgICAgICAgKGlmICg+IChsZW5ndGggc3RyKSBjb20tc3RyLWxlbikK LSAgICAgICAgICAgICAgICAoZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eSBjb20t c3RyLWxlbiAoMSsgY29tLXN0ci1sZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMtZmlyc3QtZGlmZmVyZW5jZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cikp KQotICAgICAgICAgIGVsZW0pCi0gICAgICAgIGNvbXBsZXRpb25zKQotICAgICAgIGJhc2Ut c2l6ZSkpKSkKKyAgICAobmNvbmMKKyAgICAgKGNvbXBsZXRpb24tLWhpbGl0LWNvbW1vbmFs aXR5ICgtIHByZWZpeC1sZW4gKG9yIGJhc2Utc2l6ZSAwKSkgY29tcGxldGlvbnMpCisgICAg IGJhc2Utc2l6ZSkpKQorCisoZGVmdW4gY29tcGxldGlvbi0taGlsaXQtY29tbW9uYWxpdHkg KGNvbS1zaXplIGNvbXBsZXRpb25zKQorICAobWFwY2FyCisgICAobGFtYmRhIChlbGVtKQor ICAgICAobGV0ICgoc3RyCisgICAgICAgICAgICA7OyBEb24ndCBtb2RpZnkgdGhlIHN0cmlu ZyBpdHNlbGYsIGJ1dCBhIGNvcHksIHNpbmNlIHRoZQorICAgICAgICAgICAgOzsgc3RyaW5n IG1heSBiZSByZWFkLW9ubHkgb3IgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuCisgICAgICAg ICAgICA7OyBGdXJ0aGVybW9yZSwgc2luY2UgYGNvbXBsZXRpb25zJyBtYXkgY29tZSBmcm9t CisgICAgICAgICAgICA7OyBkaXNwbGF5LWNvbXBsZXRpb24tbGlzdCwgYGVsZW0nIG1heSBi ZSBhIGxpc3QuCisgICAgICAgICAgICAoaWYgKGNvbnNwIGVsZW0pCisgICAgICAgICAgICAg ICAgKGNhciAoc2V0cSBlbGVtIChjb25zIChjb3B5LXNlcXVlbmNlIChjYXIgZWxlbSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgZWxlbSkpKSkKKyAg ICAgICAgICAgICAgKHNldHEgZWxlbSAoY29weS1zZXF1ZW5jZSBlbGVtKSkpKSkKKyAgICAg ICAoZm9udC1sb2NrLXByZXBlbmQtdGV4dC1wcm9wZXJ0eQorICAgICAgICAwCisgICAgICAg IDs7IElmIGNvbXBsZXRpb24tYm91bmRhcmllcyByZXR1cm5zIGluY29ycmVjdAorICAgICAg ICA7OyB2YWx1ZXMsIGFsbC1jb21wbGV0aW9ucyBtYXkgcmV0dXJuIHN0cmluZ3MKKyAgICAg ICAgOzsgdGhhdCBkb24ndCBjb250YWluIHRoZSBwcmVmaXguCisgICAgICAgIChtaW4gY29t LXNpemUgKGxlbmd0aCBzdHIpKQorICAgICAgICAnZmFjZSAnY29tcGxldGlvbnMtY29tbW9u LXBhcnQgc3RyKQorICAgICAgIChpZiAoPiAobGVuZ3RoIHN0cikgY29tLXNpemUpCisgICAg ICAgICAgIChmb250LWxvY2stcHJlcGVuZC10ZXh0LXByb3BlcnR5IGNvbS1zaXplICgxKyBj b20tc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2ZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nv bXBsZXRpb25zLWZpcnN0LWRpZmZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyKSkpCisgICAgIGVsZW0pCisgICBjb21wbGV0aW9ucykp CisKKyhkZWZ1biBjb21wbGV0aW9uLS1kZWZlcnJlZC1oaWxpdCAoY29tcGxldGlvbnMgcHJl Zml4LWxlbiBiYXNlIGVuZCkKKyAgIlJldHVybiBjb21wbGV0aW9ucyBhcyBhIGxpc3Qgb3Ig YXMgYW4gYWxpc3QuCitJZiBgY29tcGxldGlvbi0tcmV0dXJuLWFsaXN0LWZsYWcnIGlzIG5v bi1uaWwgdXNlIHRoZSBhbGlzdCBmb3JtYXQgb2YKK2Bjb21wbGV0aW9uLWZpbHRlci1jb21w bGV0aW9ucycuIgorICAoaWYgY29tcGxldGlvbi0tcmV0dXJuLWFsaXN0LWZsYWcKKyAgICAg ICh3aGVuIGNvbXBsZXRpb25zCisgICAgICAgIGAoKGJhc2UgLiAsYmFzZSkKKyAgICAgICAg ICAoZW5kIC4gLGVuZCkKKyAgICAgICAgICAoaGlnaGxpZ2h0IC4gLChhcHBseS1wYXJ0aWFs bHkgIydjb21wbGV0aW9uLS1oaWxpdC1jb21tb25hbGl0eQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoLSBwcmVmaXgtbGVuIGJhc2UpKSkKKyAgICAgICAg ICAoY29tcGxldGlvbnMgLiAsY29tcGxldGlvbnMpKSkKKyAgICAoY29tcGxldGlvbi1oaWxp dC1jb21tb25hbGl0eSBjb21wbGV0aW9ucyBwcmVmaXgtbGVuIGJhc2UpKSkKIAogKGRlZnVu IGRpc3BsYXktY29tcGxldGlvbi1saXN0IChjb21wbGV0aW9ucyAmb3B0aW9uYWwgY29tbW9u LXN1YnN0cmluZyBncm91cC1mdW4pCiAgICJEaXNwbGF5IHRoZSBsaXN0IG9mIGNvbXBsZXRp b25zLCBDT01QTEVUSU9OUywgdXNpbmcgYHN0YW5kYXJkLW91dHB1dCcuCkBAIC0yMzczLDE1 ICsyNDcyLDE2IEBAIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwCiAgICAgICAgICAoZW5k IChvciBlbmQgKHBvaW50LW1heCkpKQogICAgICAgICAgKHN0cmluZyAoYnVmZmVyLXN1YnN0 cmluZyBzdGFydCBlbmQpKQogICAgICAgICAgKG1kIChjb21wbGV0aW9uLS1maWVsZC1tZXRh ZGF0YSBzdGFydCkpCi0gICAgICAgICAoY29tcGxldGlvbnMgKGNvbXBsZXRpb24tYWxsLWNv bXBsZXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cmluZwotICAgICAgICAgICAg ICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tdGFibGUKLSAgICAgICAgICAgICAg ICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZQotICAgICAgICAgICAg ICAgICAgICAgICAoLSAocG9pbnQpIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICBt ZCkpKQorICAgICAgICAgKGZpbHRlcmVkLWNvbXBsZXRpb25zIChjb21wbGV0aW9uLWZpbHRl ci1jb21wbGV0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9u LXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmlidWZmZXItY29t cGxldGlvbi1wcmVkaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0g KHBvaW50KSBzdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQpKQor ICAgICAgICAgKGNvbXBsZXRpb25zIChhbGlzdC1nZXQgJ2NvbXBsZXRpb25zIGZpbHRlcmVk LWNvbXBsZXRpb25zKSkpCiAgICAgKG1lc3NhZ2UgbmlsKQogICAgIChpZiAob3IgKG51bGwg Y29tcGxldGlvbnMpCi0gICAgICAgICAgICAoYW5kIChub3QgKGNvbnNwIChjZHIgY29tcGxl dGlvbnMpKSkKKyAgICAgICAgICAgIChhbmQgKG5vdCAoY2RyIGNvbXBsZXRpb25zKSkKICAg ICAgICAgICAgICAgICAgKGVxdWFsIChjYXIgY29tcGxldGlvbnMpIHN0cmluZykpKQogICAg ICAgICAocHJvZ24KICAgICAgICAgICA7OyBJZiB0aGVyZSBhcmUgbm8gY29tcGxldGlvbnMs IG9yIGlmIHRoZSBjdXJyZW50IGlucHV0IGlzIGFscmVhZHkKQEAgLTIzOTMsOCArMjQ5Myw3 IEBAIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwCiAJICAgICAgKGRpbmcpCiAJICAgICAg KGNvbXBsZXRpb24tLW1lc3NhZ2UgIk5vIG1hdGNoIikpKSkKIAotICAgICAgKGxldCogKChs YXN0IChsYXN0IGNvbXBsZXRpb25zKSkKLSAgICAgICAgICAgICAoYmFzZS1zaXplIChvciAo Y2RyIGxhc3QpIDApKQorICAgICAgKGxldCogKChiYXNlLXNpemUgKGFsaXN0LWdldCAnYmFz ZSBmaWx0ZXJlZC1jb21wbGV0aW9ucykpCiAgICAgICAgICAgICAgKHByZWZpeCAodW5sZXNz ICh6ZXJvcCBiYXNlLXNpemUpIChzdWJzdHJpbmcgc3RyaW5nIDAgYmFzZS1zaXplKSkpCiAg ICAgICAgICAgICAgKGJhc2UtcHJlZml4IChidWZmZXItc3Vic3RyaW5nIChtaW5pYnVmZmVy LS1jb21wbGV0aW9uLXByb21wdC1lbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgrIHN0YXJ0IGJhc2Utc2l6ZSkpKQpAQCAtMjQ0Miw5ICsyNTQx LDEyIEBAIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwCiAgICAgICAgICAgICAoYm9keS1m dW5jdGlvbgogICAgICAgICAgICAgIC4gLCMnKGxhbWJkYSAoX3dpbmRvdykKICAgICAgICAg ICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgbWFpbmJ1ZgotICAgICAgICAgICAg ICAgICAgICAgIDs7IFJlbW92ZSB0aGUgYmFzZS1zaXplIHRhaWwgYmVjYXVzZSBgc29ydCcg cmVxdWlyZXMgYSBwcm9wZXJseQotICAgICAgICAgICAgICAgICAgICAgIDs7IG5pbC10ZXJt aW5hdGVkIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgICAgKHdoZW4gbGFzdCAoc2V0Y2Ry IGxhc3QgbmlsKSkKKyAgICAgICAgICAgICAgICAgICAgICA7OyBBcHBseSBoaWdobGlnaHRp bmcgdXNpbmcgdGhlIGRlZmVycmVkCisgICAgICAgICAgICAgICAgICAgICAgOzsgaGlnaGxp Z2h0aW5nIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgOzsg YGNvbXBsZXRpb24tZm9ybWF0LWNvbXBsZXRpb25zJy4KKyAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBjb21wbGV0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIChhbGlzdC1nZXQgJ2hpZ2hsaWdodCBmaWx0ZXJlZC1jb21wbGV0aW9ucykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9ucykpCiAKICAgICAg ICAgICAgICAgICAgICAgICA7OyBTb3J0IGZpcnN0IHVzaW5nIHRoZSBgZGlzcGxheS1zb3J0 LWZ1bmN0aW9uJy4KICAgICAgICAgICAgICAgICAgICAgICA7OyBGSVhNRTogVGhpcyBmdW5j dGlvbiBpcyBmb3IgdGhlIG91dHB1dCBvZgpAQCAtMjQ4NiwxMyArMjU4OCwxMCBAQCBtaW5p YnVmZmVyLWNvbXBsZXRpb24taGVscAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21wbGV0aW9ucykpKSkKIAogICAgICAgICAgICAgICAgICAgICAgICh3aXRo LWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91dHB1dAotICAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEtbG9jYWwgY29tcGxldGlvbi1iYXNlLXBvc2l0aW9uCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsaXN0ICgrIHN0YXJ0IGJhc2Utc2l6ZSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgRklYTUU6IFdlIHNob3VsZCBwYXkgYXR0ZW50 aW9uIHRvIGNvbXBsZXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgYm91bmRhcmllcyBoZXJlLCBidXQgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IGNvbXBsZXRpb24tYWxsLWNvbXBsZXRpb25zIGRvZXMgbm90 IGdpdmUgdXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG5l Y2Vzc2FyeSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxLWxvY2FsCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29tcGxldGlvbi1iYXNlLXBvc2l0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgKCsgc3RhcnQgYmFzZS1zaXplKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgrIHN0YXJ0IChhbGlzdC1nZXQgJ2VuZCBmaWx0ZXJlZC1j b21wbGV0aW9ucykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxLWxvY2FsIGNv bXBsZXRpb24tYmFzZS1hZmZpeGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGlzdCBiYXNlLXByZWZpeCBiYXNlLXN1ZmZpeCkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cS1sb2NhbCBjb21wbGV0aW9uLWxpc3QtaW5zZXJ0LWNob2ljZS1mdW5j dGlvbgpAQCAtMzQ2OCwxMCArMzU2NywxMSBAQCBjb21wbGV0aW9uLWVtYWNzMjEtdHJ5LWNv bXBsZXRpb24KICAgICAgIGNvbXBsZXRpb24pKSkKIAogKGRlZnVuIGNvbXBsZXRpb24tZW1h Y3MyMS1hbGwtY29tcGxldGlvbnMgKHN0cmluZyB0YWJsZSBwcmVkIF9wb2ludCkKLSAgKGNv bXBsZXRpb24taGlsaXQtY29tbW9uYWxpdHkKKyAgKGNvbXBsZXRpb24tLWRlZmVycmVkLWhp bGl0CiAgICAoYWxsLWNvbXBsZXRpb25zIHN0cmluZyB0YWJsZSBwcmVkKQogICAgKGxlbmd0 aCBzdHJpbmcpCi0gICAoY2FyIChjb21wbGV0aW9uLWJvdW5kYXJpZXMgc3RyaW5nIHRhYmxl IHByZWQgIiIpKSkpCisgICAoY2FyIChjb21wbGV0aW9uLWJvdW5kYXJpZXMgc3RyaW5nIHRh YmxlIHByZWQgIiIpKQorICAgKGxlbmd0aCBzdHJpbmcpKSkKIAogKGRlZnVuIGNvbXBsZXRp b24tZW1hY3MyMi10cnktY29tcGxldGlvbiAoc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQpCiAg IChsZXQgKChzdWZmaXggKHN1YnN0cmluZyBzdHJpbmcgcG9pbnQpKQpAQCAtMzQ5NCwxMSAr MzU5NCwxMiBAQCBjb21wbGV0aW9uLWVtYWNzMjItdHJ5LWNvbXBsZXRpb24KICAgICAgIChj b25zIChjb25jYXQgY29tcGxldGlvbiBzdWZmaXgpIChsZW5ndGggY29tcGxldGlvbikpKSkp CiAKIChkZWZ1biBjb21wbGV0aW9uLWVtYWNzMjItYWxsLWNvbXBsZXRpb25zIChzdHJpbmcg dGFibGUgcHJlZCBwb2ludCkKLSAgKGxldCAoKGJlZm9yZXBvaW50IChzdWJzdHJpbmcgc3Ry aW5nIDAgcG9pbnQpKSkKLSAgICAoY29tcGxldGlvbi1oaWxpdC1jb21tb25hbGl0eQorICAo bGV0KiAoKGJlZm9yZXBvaW50IChzdWJzdHJpbmcgc3RyaW5nIDAgcG9pbnQpKQorICAgICAg ICAgKGFmdGVycG9pbnQgKHN1YnN0cmluZyBzdHJpbmcgcG9pbnQpKQorICAgICAgICAgKGJv dW5kcyAoY29tcGxldGlvbi1ib3VuZGFyaWVzIGJlZm9yZXBvaW50IHRhYmxlIHByZWQgYWZ0 ZXJwb2ludCkpKQorICAgIChjb21wbGV0aW9uLS1kZWZlcnJlZC1oaWxpdAogICAgICAoYWxs LWNvbXBsZXRpb25zIGJlZm9yZXBvaW50IHRhYmxlIHByZWQpCi0gICAgIHBvaW50Ci0gICAg IChjYXIgKGNvbXBsZXRpb24tYm91bmRhcmllcyBiZWZvcmVwb2ludCB0YWJsZSBwcmVkICIi KSkpKSkKKyAgICAgcG9pbnQgKGNhciBib3VuZHMpICgrIHBvaW50IChjZHIgYm91bmRzKSkp KSkKIAogOzs7IEJhc2ljIGNvbXBsZXRpb24uCiAKQEAgLTM1NTcsNyArMzY1OCw3IEBAIGNv bXBsZXRpb24tYmFzaWMtYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ3BvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBh ZnRlcnBvaW50IDAgKGNkciBib3VuZHMpKSkpKQogICAgICAgICAgKGFsbCAoY29tcGxldGlv bi1wY20tLWFsbC1jb21wbGV0aW9ucyBwcmVmaXggcGF0dGVybiB0YWJsZSBwcmVkKSkpCi0g ICAgKGNvbXBsZXRpb24taGlsaXQtY29tbW9uYWxpdHkgYWxsIHBvaW50IChjYXIgYm91bmRz KSkpKQorICAgIChjb21wbGV0aW9uLS1kZWZlcnJlZC1oaWxpdCBhbGwgcG9pbnQgKGNhciBi b3VuZHMpICgrIHBvaW50IChjZHIgYm91bmRzKSkpKSkKIAogOzs7IFBhcnRpYWwtY29tcGxl dGlvbi1tb2RlIHN0eWxlIGNvbXBsZXRpb24uCiAKQEAgLTM3NDksMTQgKzM4NTAsMjcgQEAg ZmxleC1zY29yZS1tYXRjaC10aWdodG5lc3MKIHRoYW4gdGhlIGxhdHRlciAod2hpY2ggaGFz IHR3byBcImhvbGVzXCIgYW5kIHRocmVlCiBvbmUtbGV0dGVyLWxvbmcgbWF0Y2hlcykuIikK IAotKGRlZnVuIGNvbXBsZXRpb24tcGNtLS1oaWxpdC1jb21tb25hbGl0eSAocGF0dGVybiBj b21wbGV0aW9ucykKKyhkZWZ1biBjb21wbGV0aW9uLXBjbS0tZGVmZXJyZWQtaGlsaXQgKHBh dHRlcm4gY29tcGxldGlvbnMgYmFzZSBlbmQpCisgICJSZXR1cm4gY29tcGxldGlvbnMgYXMg YSBsaXN0IG9yIGFzIGFuIGFsaXN0LgorSWYgYGNvbXBsZXRpb24tLXJldHVybi1hbGlzdC1m bGFnJyBpcyBub24tbmlsIHVzZSB0aGUgYWxpc3QgZm9ybWF0IG9mCitgY29tcGxldGlvbi1m aWx0ZXItY29tcGxldGlvbnMnLiIKKyAgKHdoZW4gY29tcGxldGlvbnMKKyAgICAoaWYgY29t cGxldGlvbi0tcmV0dXJuLWFsaXN0LWZsYWcKKyAgICAgICAgYCgoYmFzZSAuICxiYXNlKQor ICAgICAgICAgIChlbmQgLiAsZW5kKQorICAgICAgICAgIChoaWdobGlnaHQgLiAsKGFwcGx5 LXBhcnRpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICMnY29tcGxldGlvbi1wY20t LWhpbGl0LWNvbW1vbmFsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybikp CisgICAgICAgICAgKGNvbXBsZXRpb25zIC4gLGNvbXBsZXRpb25zKSkKKyAgICAgIChuY29u YyAoY29tcGxldGlvbi1wY20tLWhpbGl0LWNvbW1vbmFsaXR5IHBhdHRlcm4gY29tcGxldGlv bnMgJ3Njb3JlKSBiYXNlKSkpKQorCisoZGVmdW4gY29tcGxldGlvbi1wY20tLWhpbGl0LWNv bW1vbmFsaXR5IChwYXR0ZXJuIGNvbXBsZXRpb25zICZvcHRpb25hbCBzY29yZSkKICAgIlNo b3cgd2hlcmUgYW5kIGhvdyB3ZWxsIFBBVFRFUk4gbWF0Y2hlcyBDT01QTEVUSU9OUy4KIFBB VFRFUk4sIGEgbGlzdCBvZiBzeW1ib2xzIGFuZCBzdHJpbmdzIGFzIHNlZW4KIGBjb21wbGV0 aW9uLXBjbS0tbWVyZ2UtY29tcGxldGlvbnMnLCBpcyBhc3N1bWVkIHRvIG1hdGNoIGV2ZXJ5 CiBzdHJpbmcgaW4gQ09NUExFVElPTlMuICBSZXR1cm4gYSBkZWVwIGNvcHkgb2YgQ09NUExF VElPTlMgd2hlcmUKLWVhY2ggc3RyaW5nIGlzIHByb3BlcnRpemVkIHdpdGggYGNvbXBsZXRp b24tc2NvcmUnLCBhIG51bWJlcgotYmV0d2VlbiAwIGFuZCAxLCBhbmQgd2l0aCBmYWNlcyBg Y29tcGxldGlvbnMtY29tbW9uLXBhcnQnLAorZWFjaCBzdHJpbmcgaXMgcHJvcGVydGl6ZWQg d2l0aCBmYWNlcyBgY29tcGxldGlvbnMtY29tbW9uLXBhcnQnLAogYGNvbXBsZXRpb25zLWZp cnN0LWRpZmZlcmVuY2UnIGluIHRoZSByZWxldmFudCBzZWdtZW50cy4iCiAgIChjb25kCiAg ICAoKGFuZCBjb21wbGV0aW9ucyAoY2wtbG9vcCBmb3IgZSBpbiBwYXR0ZXJuIHRoZXJlaXMg KHN0cmluZ3AgZSkpKQogICAgIChsZXQqICgocmUgKGNvbXBsZXRpb24tcGNtLS1wYXR0ZXJu LT5yZWdleCBwYXR0ZXJuICdncm91cCkpCkBAIC0zNzczLDg2ICszODg4LDE0NSBAQCBjb21w bGV0aW9uLXBjbS0taGlsaXQtY29tbW9uYWxpdHkKICAgICAgICAgICAgICAgICAobWF0Y2gt ZW5kIChtYXRjaC1lbmQgMCkpCiAgICAgICAgICAgICAgICAgKG1kIChjZGRyIChzZXRxIGxh c3QtbWQgKG1hdGNoLWRhdGEgdCBsYXN0LW1kKSkpKQogICAgICAgICAgICAgICAgIChmcm9t IDApCi0gICAgICAgICAgICAgICAgKGVuZCAobGVuZ3RoIHN0cikpCi0gICAgICAgICAgICAg ICAgOzsgVG8gdW5kZXJzdGFuZCBob3cgdGhpcyB3b3JrcywgY29uc2lkZXIgdGhlc2Ugc2lt cGxlCi0gICAgICAgICAgICAgICAgOzsgYXNjaWkgZGlhZ3JhbXMgc2hvd2luZyBob3cgdGhl IHBhdHRlcm4gImZvbyIKLSAgICAgICAgICAgICAgICA7OyBmbGV4LW1hdGNoZXMgImZhYnJv YmF6byIsICJmYmFyYmF6b28iIGFuZAotICAgICAgICAgICAgICAgIDs7ICJiYXJmb29iYXoi OgotCi0gICAgICAgICAgICAgICAgOzsgICAgICBmIGFiciBvIGJheiBvCi0gICAgICAgICAg ICAgICAgOzsgICAgICArIC0tLSArIC0tLSArCi0KLSAgICAgICAgICAgICAgICA7OyAgICAg IGYgYmFyYmF6IG9vCi0gICAgICAgICAgICAgICAgOzsgICAgICArIC0tLS0tLSArKwotCi0g ICAgICAgICAgICAgICAgOzsgICAgICBiYXIgZm9vIGJhegotICAgICAgICAgICAgICAgIDs7 ICAgICAgICAgICsrKwotCi0gICAgICAgICAgICAgICAgOzsgIisiIGluZGljYXRlcyBwYXJ0 cyB3aGVyZSB0aGUgcGF0dGVybiBtYXRjaGVkLiAgQQotICAgICAgICAgICAgICAgIDs7ICJo b2xlIiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmcgaXMgaW5kaWNhdGVkIGJ5Ci0gICAg ICAgICAgICAgICAgOzsgIi0iLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBubyAiaG9sZXMiIG5l YXIgdGhlIGVkZ2VzCi0gICAgICAgICAgICAgICAgOzsgb2YgdGhlIHN0cmluZy4gIFRoZSBj b21wbGV0aW9uIHNjb3JlIGlzIGEgbnVtYmVyCi0gICAgICAgICAgICAgICAgOzsgYm91bmQg YnkgKDAuLjFdIChpLmUuLCBsYXJnZXIgdGhhbiAoYnV0IG5vdCBlcXVhbAotICAgICAgICAg ICAgICAgIDs7IHRvKSB6ZXJvLCBhbmQgc21hbGxlciBvciBlcXVhbCB0byBvbmUpOiB0aGUg aGlnaGVyCi0gICAgICAgICAgICAgICAgOzsgdGhlIGJldHRlciBhbmQgb25seSBhIHBlcmZl Y3QgbWF0Y2ggKHBhdHRlcm4gZXF1YWxzCi0gICAgICAgICAgICAgICAgOzsgc3RyaW5nKSB3 aWxsIGhhdmUgc2NvcmUgMS4gIFRoZSBmb3JtdWxhIHRha2VzIHRoZQotICAgICAgICAgICAg ICAgIDs7IGZvcm0gb2YgYSBxdW90aWVudC4gIEZvciB0aGUgbnVtZXJhdG9yLCB3ZSB1c2Ug dGhlCi0gICAgICAgICAgICAgICAgOzsgbnVtYmVyIG9mICssIGkuZS4gdGhlIGxlbmd0aCBv ZiB0aGUgcGF0dGVybi4gIEZvcgotICAgICAgICAgICAgICAgIDs7IHRoZSBkZW5vbWluYXRv ciwgaXQgZmlyc3QgY29tcHV0ZXMKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAg ICAgIDs7ICAgICBob2xlX2lfY29udHJpYiA9IDEgKyAoTGktMSleKDEvdGlnaHRuZXNzKQot ICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAgICAgOzsgLCBmb3IgZWFjaCBob2xl ICJpIiBvZiBsZW5ndGggIkxpIiwgd2hlcmUgdGlnaHRuZXNzCi0gICAgICAgICAgICAgICAg OzsgaXMgZ2l2ZW4gYnkgYGZsZXgtc2NvcmUtbWF0Y2gtdGlnaHRuZXNzJy4gIFRoZQotICAg ICAgICAgICAgICAgIDs7IGZpbmFsIHZhbHVlIGZvciB0aGUgZGVub21pbmF0b3IgaXMgdGhl biBnaXZlbiBieToKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICAgIDs7ICAg IChTVU1fYWNyb3NzX2koaG9sZV9pX2NvbnRyaWIpICsgMSkgKiBsZW4KLSAgICAgICAgICAg ICAgICA7OwotICAgICAgICAgICAgICAgIDs7ICwgd2hlcmUgImxlbiIgaXMgdGhlIHN0cmlu ZydzIGxlbmd0aC4KLSAgICAgICAgICAgICAgICAoc2NvcmUtbnVtZXJhdG9yIDApCi0gICAg ICAgICAgICAgICAgKHNjb3JlLWRlbm9taW5hdG9yIDApCi0gICAgICAgICAgICAgICAgKGxh c3QtYiAwKQotICAgICAgICAgICAgICAgICh1cGRhdGUtc2NvcmUtYW5kLWZhY2UKLSAgICAg ICAgICAgICAgICAgKGxhbWJkYSAoYSBiKQotICAgICAgICAgICAgICAgICAgICJVcGRhdGUg c2NvcmUgYW5kIGZhY2UgZ2l2ZW4gbWF0Y2ggcmFuZ2UgKEEgQikuIgotICAgICAgICAgICAg ICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IGEgYgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucy1jb21tb24tcGFydAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBzdHIpCi0gICAg ICAgICAgICAgICAgICAgKHNldHEKLSAgICAgICAgICAgICAgICAgICAgc2NvcmUtbnVtZXJh dG9yICAgKCsgc2NvcmUtbnVtZXJhdG9yICgtIGIgYSkpKQotICAgICAgICAgICAgICAgICAg ICh1bmxlc3MgKG9yICg9IGEgbGFzdC1iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh6ZXJvcCBsYXN0LWIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD0g YSAobGVuZ3RoIHN0cikpKQotICAgICAgICAgICAgICAgICAgICAgKHNldHEKLSAgICAgICAg ICAgICAgICAgICAgICBzY29yZS1kZW5vbWluYXRvciAoKyBzY29yZS1kZW5vbWluYXRvcgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwdCAoLSBhIGxhc3QtYiAx KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgv IDEuMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZsZXgtc2NvcmUtbWF0Y2gtdGlnaHRuZXNzKSkpKSkKLSAgICAgICAgICAgICAgICAg ICAoc2V0cQotICAgICAgICAgICAgICAgICAgICBsYXN0LWIgICAgICAgICAgICAgIGIpKSkp CisgICAgICAgICAgICAgICAgKGxlbiAobGVuZ3RoIHN0cikpKQorICAgICAgICAgICAod2hl biAoYW5kIHNjb3JlICgvPSAwIGxlbikpCisgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3Bl cnR5CisgICAgICAgICAgICAgIDAgMSAnY29tcGxldGlvbi1zY29yZSAoLSAoY29tcGxldGlv bi0tZmxleC1zY29yZS0xIG1kIG1hdGNoLWVuZCBsZW4pKSBzdHIpKQogICAgICAgICAgICAo d2hpbGUgbWQKLSAgICAgICAgICAgICAoZnVuY2FsbCB1cGRhdGUtc2NvcmUtYW5kLWZhY2Ug ZnJvbSAocG9wIG1kKSkKKyAgICAgICAgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBm cm9tIChwb3AgbWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nv bXBsZXRpb25zLWNvbW1vbi1wYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmlsIHN0cikKICAgICAgICAgICAgICAoc2V0cSBmcm9tIChwb3AgbWQpKSkKICAg ICAgICAgICAgOzsgSWYgYHBhdHRlcm4nIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCB0cmFp bGluZyBhbnksIHRoZQogICAgICAgICAgICA7OyByZWdleCBgcmUnIHdvbid0IHByb2R1Y2Ug bWF0Y2ggZGF0YSByZXByZXNlbnRpbmcgdGhlCiAgICAgICAgICAgIDs7IHJlZ2lvbiBhZnRl ciB0aGUgbWF0Y2guICBXZSBuZWVkIHRvIGFjY291bnQgdG8gYWNjb3VudAogICAgICAgICAg ICA7OyBmb3IgdGhhdCBleHRyYSBiaXQgb2YgbWF0Y2ggKGJ1ZyM0MjE0OSkuCiAgICAgICAg ICAgICh1bmxlc3MgKD0gZnJvbSBtYXRjaC1lbmQpCi0gICAgICAgICAgICAgKGZ1bmNhbGwg dXBkYXRlLXNjb3JlLWFuZC1mYWNlIGZyb20gbWF0Y2gtZW5kKSkKLSAgICAgICAgICAgKGlm ICg+IChsZW5ndGggc3RyKSBwb3MpCisgICAgICAgICAgICAgKGFkZC1mYWNlLXRleHQtcHJv cGVydHkgZnJvbSBtYXRjaC1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnY29tcGxldGlvbnMtY29tbW9uLXBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwgc3RyKSkKKyAgICAgICAgICAgKGlmICg+IGxlbiBwb3MpCiAg ICAgICAgICAgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eQogICAgICAgICAgICAgICAg IHBvcyAoMSsgcG9zKQogICAgICAgICAgICAgICAgICdjb21wbGV0aW9ucy1maXJzdC1kaWZm ZXJlbmNlCi0gICAgICAgICAgICAgICAgbmlsIHN0cikpCi0gICAgICAgICAgICh1bmxlc3Mg KHplcm9wIChsZW5ndGggc3RyKSkKLSAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkK LSAgICAgICAgICAgICAgMCAxICdjb21wbGV0aW9uLXNjb3JlCi0gICAgICAgICAgICAgICgv IHNjb3JlLW51bWVyYXRvciAoKiBlbmQgKDErIHNjb3JlLWRlbm9taW5hdG9yKSkgMS4wKSBz dHIpKSkKKyAgICAgICAgICAgICAgICBuaWwgc3RyKSkpCiAgICAgICAgICBzdHIpCiAgICAg ICAgY29tcGxldGlvbnMpKSkKICAgICh0IGNvbXBsZXRpb25zKSkpCiAKKyhkZWZ1biBjb21w bGV0aW9uLS1mbGV4LXNjb3JlLTEgKG1kIG1hdGNoLWVuZCBsZW4pCisgICJDb21wdXRlIG1h dGNoaW5nIHNjb3JlIG9mIGNvbXBsZXRpb24uCitUaGUgc2NvcmUgbGllcyBpbiB0aGUgcmFu Z2UgYmV0d2Vlbi0xIGFuZCAwLCB3aGVyZSAtMSBjb3JyZXNwb25kcyB0bwordGhlIGZ1bGwg bWF0Y2guCitNRCBpcyB0aGUgbWF0Y2ggZGF0YS4KK01BVENILUVORCBpcyB0aGUgZW5kIG9m IHRoZSBtYXRjaC4KK0xFTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBjb21wbGV0aW9uIHN0cmlu Zy4iCisgIChsZXQqICgoZnJvbSAwKQorICAgICAgICAgOzsgVG8gdW5kZXJzdGFuZCBob3cg dGhpcyB3b3JrcywgY29uc2lkZXIgdGhlc2Ugc2ltcGxlCisgICAgICAgICA7OyBhc2NpaSBk aWFncmFtcyBzaG93aW5nIGhvdyB0aGUgcGF0dGVybiAiZm9vIgorICAgICAgICAgOzsgZmxl eC1tYXRjaGVzICJmYWJyb2Jhem8iLCAiZmJhcmJhem9vIiBhbmQKKyAgICAgICAgIDs7ICJi YXJmb29iYXoiOgorCisgICAgICAgICA7OyAgICAgIGYgYWJyIG8gYmF6IG8KKyAgICAgICAg IDs7ICAgICAgKyAtLS0gKyAtLS0gKworCisgICAgICAgICA7OyAgICAgIGYgYmFyYmF6IG9v CisgICAgICAgICA7OyAgICAgICsgLS0tLS0tICsrCisKKyAgICAgICAgIDs7ICAgICAgYmFy IGZvbyBiYXoKKyAgICAgICAgIDs7ICAgICAgICAgICsrKworCisgICAgICAgICA7OyAiKyIg aW5kaWNhdGVzIHBhcnRzIHdoZXJlIHRoZSBwYXR0ZXJuIG1hdGNoZWQuICBBCisgICAgICAg ICA7OyAiaG9sZSIgaW4gdGhlIG1pZGRsZSBvZiB0aGUgc3RyaW5nIGlzIGluZGljYXRlZCBi eQorICAgICAgICAgOzsgIi0iLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBubyAiaG9sZXMiIG5l YXIgdGhlIGVkZ2VzCisgICAgICAgICA7OyBvZiB0aGUgc3RyaW5nLiAgVGhlIGNvbXBsZXRp b24gc2NvcmUgaXMgYSBudW1iZXIKKyAgICAgICAgIDs7IGJvdW5kIGJ5ICgwLi4xXSAoaS5l LiwgbGFyZ2VyIHRoYW4gKGJ1dCBub3QgZXF1YWwKKyAgICAgICAgIDs7IHRvKSB6ZXJvLCBh bmQgc21hbGxlciBvciBlcXVhbCB0byBvbmUpOiB0aGUgaGlnaGVyCisgICAgICAgICA7OyB0 aGUgYmV0dGVyIGFuZCBvbmx5IGEgcGVyZmVjdCBtYXRjaCAocGF0dGVybiBlcXVhbHMKKyAg ICAgICAgIDs7IHN0cmluZykgd2lsbCBoYXZlIHNjb3JlIDEuICBUaGUgZm9ybXVsYSB0YWtl cyB0aGUKKyAgICAgICAgIDs7IGZvcm0gb2YgYSBxdW90aWVudC4gIEZvciB0aGUgbnVtZXJh dG9yLCB3ZSB1c2UgdGhlCisgICAgICAgICA7OyBudW1iZXIgb2YgKywgaS5lLiB0aGUgbGVu Z3RoIG9mIHRoZSBwYXR0ZXJuLiAgRm9yCisgICAgICAgICA7OyB0aGUgZGVub21pbmF0b3Is IGl0IGZpcnN0IGNvbXB1dGVzCisgICAgICAgICA7OworICAgICAgICAgOzsgICAgIGhvbGVf aV9jb250cmliID0gMSArIChMaS0xKV4oMS90aWdodG5lc3MpCisgICAgICAgICA7OworICAg ICAgICAgOzsgLCBmb3IgZWFjaCBob2xlICJpIiBvZiBsZW5ndGggIkxpIiwgd2hlcmUgdGln aHRuZXNzCisgICAgICAgICA7OyBpcyBnaXZlbiBieSBgZmxleC1zY29yZS1tYXRjaC10aWdo dG5lc3MnLiAgVGhlCisgICAgICAgICA7OyBmaW5hbCB2YWx1ZSBmb3IgdGhlIGRlbm9taW5h dG9yIGlzIHRoZW4gZ2l2ZW4gYnk6CisgICAgICAgICA7OworICAgICAgICAgOzsgICAgKFNV TV9hY3Jvc3NfaShob2xlX2lfY29udHJpYikgKyAxKSAqIGxlbgorICAgICAgICAgOzsKKyAg ICAgICAgIDs7ICwgd2hlcmUgImxlbiIgaXMgdGhlIHN0cmluZydzIGxlbmd0aC4KKyAgICAg ICAgIChzY29yZS1udW1lcmF0b3IgMCkKKyAgICAgICAgIChzY29yZS1kZW5vbWluYXRvciAw KQorICAgICAgICAgKGxhc3QtYiAwKSkKKyAgICAod2hpbGUgbWQKKyAgICAgIChsZXQgKChh IGZyb20pCisgICAgICAgICAgICAoYiAocG9wIG1kKSkpCisgICAgICAgIChzZXRxCisgICAg ICAgICBzY29yZS1udW1lcmF0b3IgICAoKyBzY29yZS1udW1lcmF0b3IgKC0gYiBhKSkpCisg ICAgICAgICh1bmxlc3MgKG9yICg9IGEgbGFzdC1iKQorICAgICAgICAgICAgICAgICAgICAo emVyb3AgbGFzdC1iKQorICAgICAgICAgICAgICAgICAgICAoPSBhIGxlbikpCisgICAgICAg ICAgKHNldHEKKyAgICAgICAgICAgc2NvcmUtZGVub21pbmF0b3IgKCsgc2NvcmUtZGVub21p bmF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZXhwdCAoLSBhIGxhc3QtYiAxKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoLyAxLjAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmxleC1zY29yZS1tYXRjaC10aWdodG5lc3MpKSkpKQor ICAgICAgICAoc2V0cQorICAgICAgICAgbGFzdC1iICAgICAgICAgICAgICBiKSkKKyAgICAg IChzZXRxIGZyb20gKHBvcCBtZCkpKQorICAgIDs7IElmIGBwYXR0ZXJuJyBkb2Vzbid0IGhh dmUgYW4gZXhwbGljaXQgdHJhaWxpbmcgYW55LCB0aGUKKyAgICA7OyByZWdleCBgcmUnIHdv bid0IHByb2R1Y2UgbWF0Y2ggZGF0YSByZXByZXNlbnRpbmcgdGhlCisgICAgOzsgcmVnaW9u IGFmdGVyIHRoZSBtYXRjaC4gIFdlIG5lZWQgdG8gYWNjb3VudCB0byBhY2NvdW50CisgICAg OzsgZm9yIHRoYXQgZXh0cmEgYml0IG9mIG1hdGNoIChidWcjNDIxNDkpLgorICAgICh1bmxl c3MgKD0gZnJvbSBtYXRjaC1lbmQpCisgICAgICAobGV0ICgoYSBmcm9tKQorICAgICAgICAg ICAgKGIgbWF0Y2gtZW5kKSkKKyAgICAgICAgKHNldHEKKyAgICAgICAgIHNjb3JlLW51bWVy YXRvciAgICgrIHNjb3JlLW51bWVyYXRvciAoLSBiIGEpKSkKKyAgICAgICAgKHVubGVzcyAo b3IgKD0gYSBsYXN0LWIpCisgICAgICAgICAgICAgICAgICAgICh6ZXJvcCBsYXN0LWIpCisg ICAgICAgICAgICAgICAgICAgICg9IGEgbGVuKSkKKyAgICAgICAgICAoc2V0cQorICAgICAg ICAgICBzY29yZS1kZW5vbWluYXRvciAoKyBzY29yZS1kZW5vbWluYXRvcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChleHB0ICgtIGEgbGFzdC1iIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgvIDEuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmbGV4LXNjb3JlLW1hdGNoLXRpZ2h0bmVzcykpKSkpCisgICAgICAgIChzZXRxCisg ICAgICAgICBsYXN0LWIgICAgICAgICAgICAgIGIpKSkKKyAgICAoLSAoLyBzY29yZS1udW1l cmF0b3IgKCogbGVuICgxKyBzY29yZS1kZW5vbWluYXRvcikpIDEuMCkpKSkKKworKGRlZnVu IGNvbXBsZXRpb24tLWZsZXgtc2NvcmUgKHBhdHRlcm4gY29tcGxldGlvbnMpCisgICJDb21w dXRlIGhvdyB3ZWxsIFBBVFRFUk4gbWF0Y2hlcyBDT01QTEVUSU9OUy4KK1BBVFRFUk4sIGEg cGNtIHBhdHRlcm4gaXMgYXNzdW1lZCB0byBtYXRjaCBldmVyeSBzdHJpbmcgaW4gdGhlCitD T01QTEVUSU9OUyBsaXN0LiAgUmV0dXJuIGEgY29weSBvZiBDT01QTEVUSU9OUyB3aGVyZSBl YWNoIGVsZW1lbnQgaXMKK2EgcGFpciBvZiBhIHNjb3JlIGFuZCB0aGUgc3RyaW5nLiAgVGhl IHNjb3JlIGxpZXMgaW4gdGhlIHJhbmdlIGJldHdlZW4KKy0xIGFuZCAwLCB3aGVyZSAtMSBj b3JyZXNwb25kcyB0byB0aGUgZnVsbCBtYXRjaC4iCisgICh3aGVuIGNvbXBsZXRpb25zCisg ICAgKGxldCogKChyZSAoY29tcGxldGlvbi1wY20tLXBhdHRlcm4tPnJlZ2V4IHBhdHRlcm4g J2dyb3VwKSkKKyAgICAgICAgICAgKGNhc2UtZm9sZC1zZWFyY2ggY29tcGxldGlvbi1pZ25v cmUtY2FzZSkKKyAgICAgICAgICAgbGFzdC1tZCkKKyAgICAgIChtYXBjYXIKKyAgICAgICAo bGFtYmRhIChzdHIpCisgICAgICAgICA7OyBUaGUgZmxleCBjb21wbGV0aW9uIHN0eWxlIHJl cXVpcmVzIHRoZSBjb21wbGV0aW9uIHRvIG1hdGNoCisgICAgICAgICA7OyB0aGUgcGF0dGVy biB0byBjb21wdXRlIHRoZSBzY29yaW5nLiAgRm9yIHF1b3RlZCBjb21wbGV0aW9uCisgICAg ICAgICA7OyB0YWJsZXMgdGhlIGNvbXBsZXRpb25zIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhl ICp1bnF1b3RlZAorICAgICAgICAgOzsgaW5wdXQgc3RyaW5nKi4gIEhvd2V2ZXIgYGNvbXBs ZXRpb24tYWxsLWNvbXBsZXRpb25zJyBhbmQKKyAgICAgICAgIDs7IGBjb21wbGV0aW9uLWZp bHRlci1jb21wbGV0aW9ucycgcmV0dXJuIGEgbGlzdCBvZiAqcXVvdGVkCisgICAgICAgICA7 OyBjb21wbGV0aW9ucyosIHdoaWNoIGlzIHN1YnNlcXVlbnRseSBzb3J0ZWQuICBUaGVyZWZv cmUgd2UKKyAgICAgICAgIDs7IG9idGFpbiB0aGUgdW5xdW90ZWQgY29tcGxldGlvbiBzdHJp bmcgd2hpY2ggaXMgc3RvcmVkIGluCisgICAgICAgICA7OyB0aGUgdGV4dCBwcm9wZXJ0eSBg Y29tcGxldGlvbi0tdW5xdW90ZWQnLgorICAgICAgICAgKGxldCAoKHVucXVvdGVkIChvciAo Z2V0LXRleHQtcHJvcGVydHkgMCAnY29tcGxldGlvbi0tdW5xdW90ZWQgc3RyKSBzdHIpKSkK KyAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLW1hdGNoIHJlIHVucXVvdGVkKQorICAgICAg ICAgICAgIChlcnJvciAiSW50ZXJuYWwgZXJyb3I6ICVzIGRvZXMgbm90IG1hdGNoICVzIiBy ZSB1bnF1b3RlZCkpCisgICAgICAgICAgIChjb25zIChjb21wbGV0aW9uLS1mbGV4LXNjb3Jl LTEgKGNkZHIgKHNldHEgbGFzdC1tZCAobWF0Y2gtZGF0YSB0IGxhc3QtbWQpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDApIChs ZW5ndGggdW5xdW90ZWQpKQorICAgICAgICAgICAgICAgICBzdHIpKSkKKyAgICAgICBjb21w bGV0aW9ucykpKSkKKwogKGRlZnVuIGNvbXBsZXRpb24tcGNtLS1maW5kLWFsbC1jb21wbGV0 aW9ucyAoc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgZmlsdGVyKQogICAiRmlu ZCBhbGwgY29tcGxldGlvbnMgZm9yIFNUUklORyBhdCBQT0lOVCBpbiBUQUJMRSwgc2F0aXNm eWluZyBQUkVELgpAQCAtMzk0OCwxMSArNDEyMiwxMSBAQCBjb21wbGV0aW9uLXBjbS0tZmlu ZC1hbGwtY29tcGxldGlvbnMKICAgICAgICAgKGxpc3QgcGF0dGVybiBhbGwgcHJlZml4IHN1 ZmZpeCkpKSkpCiAKIChkZWZ1biBjb21wbGV0aW9uLXBjbS1hbGwtY29tcGxldGlvbnMgKHN0 cmluZyB0YWJsZSBwcmVkIHBvaW50KQotICAocGNhc2UtbGV0ICgoYCgscGF0dGVybiAsYWxs ICxwcmVmaXggLF9zdWZmaXgpCisgIChwY2FzZS1sZXQgKChgKCxwYXR0ZXJuICxhbGwgLHBy ZWZpeCAsc3VmZml4KQogICAgICAgICAgICAgICAgKGNvbXBsZXRpb24tcGNtLS1maW5kLWFs bC1jb21wbGV0aW9ucyBzdHJpbmcgdGFibGUgcHJlZCBwb2ludCkpKQotICAgICh3aGVuIGFs bAotICAgICAgKG5jb25jIChjb21wbGV0aW9uLXBjbS0taGlsaXQtY29tbW9uYWxpdHkgcGF0 dGVybiBhbGwpCi0gICAgICAgICAgICAgKGxlbmd0aCBwcmVmaXgpKSkpKQorICAgIChjb21w bGV0aW9uLXBjbS0tZGVmZXJyZWQtaGlsaXQgcGF0dGVybiBhbGwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggcHJlZml4KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKGxlbmd0aCBzdHJpbmcpIChsZW5ndGggc3VmZml4 KSkpKSkKIAogKGRlZnVuIGNvbXBsZXRpb24tLWNvbW1vbi1zdWZmaXggKHN0cnMpCiAgICJS ZXR1cm4gdGhlIGNvbW1vbiBzdWZmaXggb2YgdGhlIHN0cmluZ3MgU1RSUy4iCkBAIC00MTM2 LDggKzQzMTAsOCBAQCBjb21wbGV0aW9uLXBjbS10cnktY29tcGxldGlvbgogOzs7IFN1YnN0 cmluZyBjb21wbGV0aW9uCiA7OyBNb3N0bHkgZGVyaXZlZCBmcm9tIHRoZSBjb2RlIG9mIGBi YXNpYycgY29tcGxldGlvbi4KIAotKGRlZnVuIGNvbXBsZXRpb24tc3Vic3RyaW5nLS1hbGwt Y29tcGxldGlvbnMKLSAgICAoc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQgJm9wdGlvbmFsIHRy YW5zZm9ybS1wYXR0ZXJuLWZuKQorKGRlZnVuIGNvbXBsZXRpb24tLXBhdHRlcm4tY29tcGls ZXIKKyAgICAoc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQgdHJhbnNmb3JtLXBhdHRlcm4tZm4p CiAgICJNYXRjaCB0aGUgcHJlc3VtZWQgc3Vic3RyaW5nIFNUUklORyB0byB0aGUgZW50cmll cyBpbiBUQUJMRS4KIFJlc3BlY3QgUFJFRCBhbmQgUE9JTlQuICBUaGUgcGF0dGVybiB1c2Vk IGlzIGEgUENNLXN0eWxlCiBzdWJzdHJpbmcgcGF0dGVybiwgYnV0IGl0IGJlIG1hc3NhZ2Vk IGJ5IFRSQU5TRk9STS1QQVRURVJOLUZOLCBpZgpAQCAtNDE1NSwxMiArNDMyOSwyMyBAQCBj b21wbGV0aW9uLXN1YnN0cmluZy0tYWxsLWNvbXBsZXRpb25zCiAgICAgICAgICAocGF0dGVy biAoY29tcGxldGlvbi1wY20tLW9wdGltaXplLXBhdHRlcm4KICAgICAgICAgICAgICAgICAg ICAoaWYgdHJhbnNmb3JtLXBhdHRlcm4tZm4KICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgdHJhbnNmb3JtLXBhdHRlcm4tZm4gcGF0dGVybikKLSAgICAgICAgICAgICAgICAg ICAgIHBhdHRlcm4pKSkKLSAgICAgICAgIChhbGwgKGNvbXBsZXRpb24tcGNtLS1hbGwtY29t cGxldGlvbnMgcHJlZml4IHBhdHRlcm4gdGFibGUgcHJlZCkpKQotICAgIChsaXN0IGFsbCBw YXR0ZXJuIHByZWZpeCBzdWZmaXggKGNhciBib3VuZHMpKSkpCisgICAgICAgICAgICAgICAg ICAgICBwYXR0ZXJuKSkpKQorICAgIChsaXN0IHBhdHRlcm4gcHJlZml4IHN1ZmZpeCkpKQor CisoZGVmdW4gY29tcGxldGlvbi1zdWJzdHJpbmctLWFsbC1jb21wbGV0aW9ucworICAgIChz dHJpbmcgdGFibGUgcHJlZCBwb2ludCAmb3B0aW9uYWwgdHJhbnNmb3JtLXBhdHRlcm4tZm4p CisgICJNYXRjaCB0aGUgcHJlc3VtZWQgc3Vic3RyaW5nIFNUUklORyB0byB0aGUgZW50cmll cyBpbiBUQUJMRS4KK1Jlc3BlY3QgUFJFRCBhbmQgUE9JTlQuICBUaGUgcGF0dGVybiB1c2Vk IGlzIGEgUENNLXN0eWxlCitzdWJzdHJpbmcgcGF0dGVybiwgYnV0IGl0IGJlIG1hc3NhZ2Vk IGJ5IFRSQU5TRk9STS1QQVRURVJOLUZOLCBpZgordGhhdCBpcyBub24tbmlsLiIKKyAgKHBj YXNlLWxldCAoKChhbmQgcmVzdWx0IGAoLHBhdHRlcm4gLHByZWZpeCAsX3N1ZmZpeCkpCisg ICAgICAgICAgICAgICAoY29tcGxldGlvbi0tcGF0dGVybi1jb21waWxlciBzdHJpbmcgdGFi bGUgcHJlZCBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHJhbnNmb3JtLXBhdHRlcm4tZm4pKSkKKyAgICAoY29ucyAoY29tcGxldGlvbi1w Y20tLWFsbC1jb21wbGV0aW9ucyBwcmVmaXggcGF0dGVybiB0YWJsZSBwcmVkKQorICAgICAg ICAgIHJlc3VsdCkpKQogCiAoZGVmdW4gY29tcGxldGlvbi1zdWJzdHJpbmctdHJ5LWNvbXBs ZXRpb24gKHN0cmluZyB0YWJsZSBwcmVkIHBvaW50KQotICAocGNhc2UtbGV0ICgoYCgsYWxs ICxwYXR0ZXJuICxwcmVmaXggLHN1ZmZpeCAsX2NhcmJvdW5kcykKKyAgKHBjYXNlLWxldCAo KGAoLGFsbCAscGF0dGVybiAscHJlZml4ICxzdWZmaXgpCiAgICAgICAgICAgICAgICAoY29t cGxldGlvbi1zdWJzdHJpbmctLWFsbC1jb21wbGV0aW9ucwogICAgICAgICAgICAgICAgIHN0 cmluZyB0YWJsZSBwcmVkIHBvaW50KSkpCiAgICAgKGlmIG1pbmlidWZmZXItY29tcGxldGlu Zy1maWxlLW5hbWUKQEAgLTQxNjgsMTIgKzQzNTMsMTIgQEAgY29tcGxldGlvbi1zdWJzdHJp bmctdHJ5LWNvbXBsZXRpb24KICAgICAoY29tcGxldGlvbi1wY20tLW1lcmdlLXRyeSBwYXR0 ZXJuIGFsbCBwcmVmaXggc3VmZml4KSkpCiAKIChkZWZ1biBjb21wbGV0aW9uLXN1YnN0cmlu Zy1hbGwtY29tcGxldGlvbnMgKHN0cmluZyB0YWJsZSBwcmVkIHBvaW50KQotICAocGNhc2Ut bGV0ICgoYCgsYWxsICxwYXR0ZXJuICxwcmVmaXggLF9zdWZmaXggLF9jYXJib3VuZHMpCisg IChwY2FzZS1sZXQgKChgKCxhbGwgLHBhdHRlcm4gLHByZWZpeCAsc3VmZml4KQogICAgICAg ICAgICAgICAgKGNvbXBsZXRpb24tc3Vic3RyaW5nLS1hbGwtY29tcGxldGlvbnMKICAgICAg ICAgICAgICAgICBzdHJpbmcgdGFibGUgcHJlZCBwb2ludCkpKQotICAgICh3aGVuIGFsbAot ICAgICAgKG5jb25jIChjb21wbGV0aW9uLXBjbS0taGlsaXQtY29tbW9uYWxpdHkgcGF0dGVy biBhbGwpCi0gICAgICAgICAgICAgKGxlbmd0aCBwcmVmaXgpKSkpKQorICAgIChjb21wbGV0 aW9uLXBjbS0tZGVmZXJyZWQtaGlsaXQgcGF0dGVybiBhbGwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZW5ndGggcHJlZml4KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKC0gKGxlbmd0aCBzdHJpbmcpIChsZW5ndGggc3VmZml4KSkp KSkKIAogOzs7ICJmbGV4IiBjb21wbGV0aW9uLCBhbHNvIGtub3duIGFzIGZseC9mdXp6eS9z Y2F0dGVyIGNvbXBsZXRpb24KIDs7IENvbXBsZXRlcyAiZm9vIiB0byAiZnJvZG8iIGFuZCAi ZmFyZnJvbXNvYmVyIgpAQCAtNDE4MywxOSArNDM2OCwxMSBAQCBjb21wbGV0aW9uLWZsZXgt bm9zcGFjZQogICA6dmVyc2lvbiAiMjcuMSIKICAgOnR5cGUgJ2Jvb2xlYW4pCiAKLShwdXQg J2ZsZXggJ2NvbXBsZXRpb24tLWFkanVzdC1tZXRhZGF0YSAnY29tcGxldGlvbi0tZmxleC1h ZGp1c3QtbWV0YWRhdGEpCisocHV0ICdmbGV4ICdjb21wbGV0aW9uLS1zdHlsZS1tZXRhZGF0 YSAnY29tcGxldGlvbi0tZmxleC1zdHlsZS1tZXRhZGF0YSkKIAotKGRlZnVuIGNvbXBsZXRp b24tLWZsZXgtYWRqdXN0LW1ldGFkYXRhIChtZXRhZGF0YSkKKyhkZWZ1biBjb21wbGV0aW9u LS1mbGV4LXN0eWxlLW1ldGFkYXRhIChzdHJpbmcgdGFibGUgcHJlZCBwb2ludCBtZXRhZGF0 YSkKICAgIklmIGBmbGV4JyBpcyBhY3R1YWxseSBkb2luZyBmaWx0ZXJpbmcsIGFkanVzdCBz b3J0aW5nLiIKLSAgKGxldCAoKGZsZXgtaXMtZmlsdGVyaW5nLXAKLSAgICAgICAgIDs7IEpU QDIwMTktMTItMjM6IEZJWE1FOiB0aGlzIGlzIGtpbmRhIHdyb25nLiAgV2hhdCB3ZSBuZWVk Ci0gICAgICAgICA7OyB0byB0ZXN0IGhlcmUgaXMgInNvbWUgaW5wdXQgdGhhdCBhY3R1YWxs eSBsZWFkcy9sZWQgdG8KLSAgICAgICAgIDs7IGZsZXggZmlsdGVyaW5nIiwgbm90ICJzb21l dGhpbmcgYWZ0ZXIgdGhlIG1pbmlidWZmZXIKLSAgICAgICAgIDs7IHByb21wdCIuICBFLmcu IFRoZSBsYXR0ZXIgaXMgYWx3YXlzIHRydWUgZm9yIGZpbGUKLSAgICAgICAgIDs7IHNlYXJj aGVzLCBtZWFuaW5nIHdlJ2xsIGJlIGRvaW5nIGV4dHJhIHdvcmsgd2hlbiB3ZQotICAgICAg ICAgOzsgbmVlZG4ndC4KLSAgICAgICAgIChvciAobm90ICh3aW5kb3ctbWluaWJ1ZmZlci1w KSkKLSAgICAgICAgICAgICAoPiAocG9pbnQtbWF4KSAobWluaWJ1ZmZlci1wcm9tcHQtZW5k KSkpKQorICAobGV0ICgoZmxleC1pcy1maWx0ZXJpbmctcCAobm90IChlcXVhbCBzdHJpbmcg IiIpKSkKICAgICAgICAgKGV4aXN0aW5nLWRzZgogICAgICAgICAgKGNvbXBsZXRpb24tbWV0 YWRhdGEtZ2V0IG1ldGFkYXRhICdkaXNwbGF5LXNvcnQtZnVuY3Rpb24pKQogICAgICAgICAo ZXhpc3RpbmctY3NmCkBAIC00MjA0LDEyICs0MzgxLDMyIEBAIGNvbXBsZXRpb24tLWZsZXgt YWRqdXN0LW1ldGFkYXRhCiAgICAgICAgICgoY29tcG9zZS1mbGV4LXNvcnQtZm4KICAgICAg ICAgICAoZXhpc3Rpbmctc29ydC1mbikgOyB3aXNoIGBjbC1mbGV0JyBoYWQgcHJvcGVyIGlu ZGVudGF0aW9uLi4uCiAgICAgICAgICAgKGxhbWJkYSAoY29tcGxldGlvbnMpCi0gICAgICAg ICAgICAoc29ydAotICAgICAgICAgICAgIChmdW5jYWxsIGV4aXN0aW5nLXNvcnQtZm4gY29t cGxldGlvbnMpCi0gICAgICAgICAgICAgKGxhbWJkYSAoYzEgYzIpCi0gICAgICAgICAgICAg ICAobGV0ICgoczEgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2NvbXBsZXRpb24tc2NvcmUgYzEp KQotICAgICAgICAgICAgICAgICAgICAgKHMyIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdjb21w bGV0aW9uLXNjb3JlIGMyKSkpCi0gICAgICAgICAgICAgICAgICg+IChvciBzMSAwKSAob3Ig czIgMCkpKSkpKSkpCisgICAgICAgICAgICAobGV0ICgocHJlLXNvcnRlZCAoZnVuY2FsbCBl eGlzdGluZy1zb3J0LWZuIGNvbXBsZXRpb25zKSkKKyAgICAgICAgICAgICAgICAgIChwYXR0 ZXJuIChjYXIgKGNvbXBsZXRpb24tLXBhdHRlcm4tY29tcGlsZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmluZyB0YWJsZSBwcmVkIHBvaW50CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjJ2NvbXBsZXRpb24tZmxleC0tbWFrZS1mbGV4LXBh dHRlcm4pKSkpCisgICAgICAgICAgICAgIDs7IElmIGBjb21wbGV0aW9uLXNjb3JlcycgYXJl IGFscmVhZHkgcHJlc2VudCB1c2UKKyAgICAgICAgICAgICAgOzsgdGhvc2UgaW5zdGVhZCBv ZiByZWNvbXB1dGluZyB0aGUgc2NvcmVzIHdpdGgKKyAgICAgICAgICAgICAgOzsgYGNvbXBs ZXRpb24tLWZsZXgtc2NvcmUnLiAgVGhlIHNjb3JlcyBhcmUgYWxyZWFkeQorICAgICAgICAg ICAgICA7OyBwcmVzZW50LCB3aGVuIHRoZSBjYW5kaWRhdGVzIGhhdmUgYmVlbiBjb21wdXRl ZCBieQorICAgICAgICAgICAgICA7OyBgY29tcGxldGlvbi1hbGwtY29tcGxldGlvbnMnLiAg SW4gY29udHJhc3QsIHRoZQorICAgICAgICAgICAgICA7OyBzY29yZSBpcyBub3QgeWV0IHBy ZXNlbnQsIHdoZW4gdGhlIGNhbmRpZGF0ZXMgaGF2ZQorICAgICAgICAgICAgICA7OyBiZWVu IGNvbXB1dGVkIGJ5IGBjb21wbGV0aW9uLWZpbHRlci1jb21wbGV0aW9ucycuCisgICAgICAg ICAgICAgIChpZiAoYW5kIChjYXIgcHJlLXNvcnRlZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2NvbXBsZXRpb24tc2NvcmUgKGNhciBwcmUtc29y dGVkKSkpCisgICAgICAgICAgICAgICAgICAoc29ydAorICAgICAgICAgICAgICAgICAgIHBy ZS1zb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAobGFtYmRhIChjMSBjMikKKyAgICAgICAg ICAgICAgICAgICAgICg+IChvciAoZ2V0LXRleHQtcHJvcGVydHkgMCAnY29tcGxldGlvbi1z Y29yZSBjMSkgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChvciAoZ2V0LXRleHQtcHJv cGVydHkgMCAnY29tcGxldGlvbi1zY29yZSBjMikgMCkpKSkKKyAgICAgICAgICAgICAgICAo bGV0KiAoKHNvcnRlZCAoc29ydCAoY29tcGxldGlvbi0tZmxleC1zY29yZSBwYXR0ZXJuIHBy ZS1zb3J0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIydjYXIt bGVzcy10aGFuLWNhcikpCisgICAgICAgICAgICAgICAgICAgICAgIChjZWxsIHNvcnRlZCkp CisgICAgICAgICAgICAgICAgICA7OyBSZW1vdmUgc2NvcmUgZGVjb3JhdGlvbnMsIHJldXNl IHRoZSBsaXN0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgorICAgICAgICAgICAgICAgICAgKHdo aWxlIGNlbGwKKyAgICAgICAgICAgICAgICAgICAgKHNldGNhciBjZWxsIChjZGFyIGNlbGwp KQorICAgICAgICAgICAgICAgICAgICAocG9wIGNlbGwpKQorICAgICAgICAgICAgICAgICAg c29ydGVkKSkpKSkpCiAgICAgICBgKG1ldGFkYXRhCiAgICAgICAgICxAKGFuZCBmbGV4LWlz LWZpbHRlcmluZy1wCiAgICAgICAgICAgICAgICBgKChkaXNwbGF5LXNvcnQtZnVuY3Rpb24K QEAgLTQyMzksNyArNDQzNiw3IEBAIGNvbXBsZXRpb24tZmxleC0tbWFrZS1mbGV4LXBhdHRl cm4KIChkZWZ1biBjb21wbGV0aW9uLWZsZXgtdHJ5LWNvbXBsZXRpb24gKHN0cmluZyB0YWJs ZSBwcmVkIHBvaW50KQogICAiVHJ5IHRvIGZsZXgtY29tcGxldGUgU1RSSU5HIGluIFRBQkxF IGdpdmVuIFBSRUQgYW5kIFBPSU5ULiIKICAgKHVubGVzcyAoYW5kIGNvbXBsZXRpb24tZmxl eC1ub3NwYWNlIChzdHJpbmctc2VhcmNoICIgIiBzdHJpbmcpKQotICAgIChwY2FzZS1sZXQg KChgKCxhbGwgLHBhdHRlcm4gLHByZWZpeCAsc3VmZml4ICxfY2FyYm91bmRzKQorICAgIChw Y2FzZS1sZXQgKChgKCxhbGwgLHBhdHRlcm4gLHByZWZpeCAsc3VmZml4KQogICAgICAgICAg ICAgICAgICAoY29tcGxldGlvbi1zdWJzdHJpbmctLWFsbC1jb21wbGV0aW9ucwogICAgICAg ICAgICAgICAgICAgc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQKICAgICAgICAgICAgICAgICAg ICMnY29tcGxldGlvbi1mbGV4LS1tYWtlLWZsZXgtcGF0dGVybikpKQpAQCAtNDI1NiwxMyAr NDQ1MywxMyBAQCBjb21wbGV0aW9uLWZsZXgtdHJ5LWNvbXBsZXRpb24KIChkZWZ1biBjb21w bGV0aW9uLWZsZXgtYWxsLWNvbXBsZXRpb25zIChzdHJpbmcgdGFibGUgcHJlZCBwb2ludCkK ICAgIkdldCBmbGV4LWNvbXBsZXRpb25zIG9mIFNUUklORyBpbiBUQUJMRSwgZ2l2ZW4gUFJF RCBhbmQgUE9JTlQuIgogICAodW5sZXNzIChhbmQgY29tcGxldGlvbi1mbGV4LW5vc3BhY2Ug KHN0cmluZy1zZWFyY2ggIiAiIHN0cmluZykpCi0gICAgKHBjYXNlLWxldCAoKGAoLGFsbCAs cGF0dGVybiAscHJlZml4ICxfc3VmZml4ICxfY2FyYm91bmRzKQorICAgIChwY2FzZS1sZXQg KChgKCxhbGwgLHBhdHRlcm4gLHByZWZpeCAsc3VmZml4KQogICAgICAgICAgICAgICAgICAo Y29tcGxldGlvbi1zdWJzdHJpbmctLWFsbC1jb21wbGV0aW9ucwogICAgICAgICAgICAgICAg ICAgc3RyaW5nIHRhYmxlIHByZWQgcG9pbnQKICAgICAgICAgICAgICAgICAgICMnY29tcGxl dGlvbi1mbGV4LS1tYWtlLWZsZXgtcGF0dGVybikpKQotICAgICAgKHdoZW4gYWxsCi0gICAg ICAgIChuY29uYyAoY29tcGxldGlvbi1wY20tLWhpbGl0LWNvbW1vbmFsaXR5IHBhdHRlcm4g YWxsKQotICAgICAgICAgICAgICAgKGxlbmd0aCBwcmVmaXgpKSkpKSkKKyAgICAgIChjb21w bGV0aW9uLXBjbS0tZGVmZXJyZWQtaGlsaXQgcGF0dGVybiBhbGwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggcHJlZml4KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKGxlbmd0aCBzdHJpbmcpIChsZW5ndGggc3VmZml4 KSkpKSkpCiAKIDs7IEluaXRpYWxzIGNvbXBsZXRpb24KIDs7IENvbXBsZXRlIC91bXMgdG8g L3Vzci9tb25uaWVyL3NyYyBvciBsY2ggdG8gbGlzdC1jb21tYW5kLWhpc3RvcnkuCkBAIC00 Mjk5LDcgKzQ0OTYsMTEgQEAgY29tcGxldGlvbi1pbml0aWFscy1leHBhbmQKIChkZWZ1biBj b21wbGV0aW9uLWluaXRpYWxzLWFsbC1jb21wbGV0aW9ucyAoc3RyaW5nIHRhYmxlIHByZWQg X3BvaW50KQogICAobGV0ICgobmV3c3RyIChjb21wbGV0aW9uLWluaXRpYWxzLWV4cGFuZCBz dHJpbmcgdGFibGUgcHJlZCkpKQogICAgICh3aGVuIG5ld3N0cgotICAgICAgKGNvbXBsZXRp b24tcGNtLWFsbC1jb21wbGV0aW9ucyBuZXdzdHIgdGFibGUgcHJlZCAobGVuZ3RoIG5ld3N0 cikpKSkpCisgICAgICAocGNhc2UtbGV0ICgoYCgscGF0dGVybiAsYWxsICxwcmVmaXggLF9z dWZmaXgpCisgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpb24tcGNtLS1maW5kLWFsbC1j b21wbGV0aW9ucyBuZXdzdHIgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQgKGxlbmd0aCBuZXdzdHIpKSkpCisg ICAgICAgIChjb21wbGV0aW9uLXBjbS0tZGVmZXJyZWQtaGlsaXQgcGF0dGVybiBhbGwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHByZWZpeCkg KGxlbmd0aCBzdHJpbmcpKSkpKSkKIAogKGRlZnVuIGNvbXBsZXRpb24taW5pdGlhbHMtdHJ5 LWNvbXBsZXRpb24gKHN0cmluZyB0YWJsZSBwcmVkIF9wb2ludCkKICAgKGxldCAoKG5ld3N0 ciAoY29tcGxldGlvbi1pbml0aWFscy1leHBhbmQgc3RyaW5nIHRhYmxlIHByZWQpKSkKZGlm ZiAtLWdpdCBhL3Rlc3QvbGlzcC9taW5pYnVmZmVyLXRlc3RzLmVsIGIvdGVzdC9saXNwL21p bmlidWZmZXItdGVzdHMuZWwKaW5kZXggNGY5MmQ3Zjg0MWMuLjFhYjgwY2QxMzY0IDEwMDY0 NAotLS0gYS90ZXN0L2xpc3AvbWluaWJ1ZmZlci10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3Av bWluaWJ1ZmZlci10ZXN0cy5lbApAQCAtMjgsOCArMjgsNyBAQAogCiAocmVxdWlyZSAnZXJ0 KQogKHJlcXVpcmUgJ2VydC14KQotCi0oZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ2Ns LWxpYikpCisocmVxdWlyZSAnY2wtbGliKQogCiAoZXJ0LWRlZnRlc3QgY29tcGxldGlvbi10 ZXN0MSAoKQogICAod2l0aC10ZW1wLWJ1ZmZlcgpAQCAtMzQ0LDYgKzM0MywyMjEgQEAgY29t cGxldGlvbi1mbGV4LXRlc3QtMwogICAgICAgICAgICAgICAgICAgImN1c3Rncm91cCIgJygi Y3VzdG9taXplLWdyb3VwLW90aGVyLXdpbmRvdyIpIG5pbCA5KSkpCiAgICAgICAgICAgIDE1 KSkpCiAKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLWZsZXgtc2NvcmUtdGVzdC0xICgpCisg IDs7IEZ1bGwgbWF0Y2ghCisgIChzaG91bGQgKGVxdWFsCisgICAgICAgICAgIChjb21wbGV0 aW9uLS1mbGV4LXNjb3JlICcocHJlZml4ICJSIikgJygiUiIpKQorICAgICAgICAgICAobGlz dCAoY29ucyAtMS4wICJSIikpKSkpCisKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLWZsZXgt c2NvcmUtdGVzdC0yICgpCisgIDs7IE9uZSB0aGlyZCBhbmQgaGFsZiBvZiBhIG1hdGNoIQor ICAoc2hvdWxkIChlcXVhbAorICAgICAgICAgICAoY29tcGxldGlvbi0tZmxleC1zY29yZSAn KHByZWZpeCAiZm9vIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygi YmFyZm9vYmFyIiAiZm9vYm9vIikpCisgICAgICAgICAgIChsaXN0IChjb25zICgvIC0xLjAg My4wKSAiYmFyZm9vYmFyIikKKyAgICAgICAgICAgICAgICAgKGNvbnMgKC8gLTEuMCAyLjAp ICJmb29ib28iKSkpKSkKKworKGVydC1kZWZ0ZXN0IGNvbXBsZXRpb24tZmxleC1zY29yZS10 ZXN0LTMgKCkKKyAgOzsgT25lIGZvdXJ0aCBvZiBhIG1hdGNoCisgIChzaG91bGQgKGVxbAor ICAgICAgICAgICAoY2FhciAoY29tcGxldGlvbi0tZmxleC1zY29yZSAnKHByZWZpeCAiUiIg cG9pbnQgIk8iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn KCJSYU9iIikpKQorICAgICAgICAgICAoLyAtMS4wIDQuMCkpKSkKKworKGVydC1kZWZ0ZXN0 IGNvbXBsZXRpb24tZmxleC1zY29yZS10ZXN0LTQgKCkKKyAgOzsgRm9yIHF1b3RlZCBjb21w bGV0aW9uIHRhYmxlcywgc2NvcmUgdGhlIHVucXVvdGVkIGNvbXBsZXRpb24gc3RyaW5nLgor ICAoc2hvdWxkIChlcXVhbAorICAgICAgICAgICAoY29tcGxldGlvbi0tZmxleC1zY29yZQor ICAgICAgICAgICAgJyhwcmVmaXggIlIiKQorICAgICAgICAgICAgKGxpc3QgKHByb3BlcnRp emUgIlgiICdjb21wbGV0aW9uLS11bnF1b3RlZCAiUiIpKSkKKyAgICAgICAgICAgKGxpc3Qg KGNvbnMgLTEuMCAiWCIpKSkpKQorCisoZGVmdW4gY29tcGxldGlvbi0tdGVzdC1zdHlsZSAo c3R5bGUgc3RyaW5nIHBvaW50IHRhYmxlIGZpbHRlcmVkKQorICAobGV0KiAoKGNvbXBsZXRp b24tc3R5bGVzIChsaXN0IHN0eWxlKSkKKyAgICAgICAgIChwcmVkIChsYW1iZGEgKHgpIChu b3QgKHN0cmluZy1zZWFyY2ggIiEiIHgpKSkpCisgICAgICAgICAocmVzdWx0IChjb21wbGV0 aW9uLWZpbHRlci1jb21wbGV0aW9ucworICAgICAgICAgICAgICAgICAgc3RyaW5nIHRhYmxl IHByZWQgcG9pbnQgbmlsKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGFsaXN0LWdldCAnYmFz ZSByZXN1bHQpIDApKQorICAgIChzaG91bGQgKGVxdWFsIChhbGlzdC1nZXQgJ2VuZCByZXN1 bHQpIChsZW5ndGggc3RyaW5nKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGFsaXN0LWdldCAn Y29tcGxldGlvbnMgcmVzdWx0KSBmaWx0ZXJlZCkpCisgICAgOzsgVGhlIGhpZ2hsaWdodGlu ZyBmdW5jdGlvbiBzaG91bGQgYmUgcHJlc2VudC4KKyAgICAoc2hvdWxkIChub3QgKG1lbXEg KGFsaXN0LWdldCAnaGlnaGxpZ2h0IHJlc3VsdCkgJyhuaWwgaWRlbnRpdHkpKSkpCisgICAg OzsgRXF1YWwgcmVzdWx0cyBhcyBgY29tcGxldGlvbi1hbGwtY29tcGxldGlvbnMnLgorICAg IChzaG91bGQgKGVxdWFsIChjb21wbGV0aW9uLWFsbC1jb21wbGV0aW9ucyBzdHJpbmcgdGFi bGUgcHJlZCBwb2ludCkKKyAgICAgICAgICAgICAgICAgICAoYXBwZW5kIGZpbHRlcmVkIDAp KSkKKyAgICA7OyBUaGUgcmV0dXJuZWQgc3RyaW5ncyBzaG91bGQgYmUgaWRlbnRpY2FsIHRv IHRoZSBvcmlnaW5hbCBzdHJpbmdzLgorICAgIDs7IFRoZSBgY29tcGxldGlvbi1maWx0ZXIt Y29tcGxldGlvbnMnIGZ1bmN0aW9uIGF2b2lkcyBhbGxvY2F0aW9ucyEKKyAgICAoc2hvdWxk IChjbC1pbnRlcnNlY3Rpb24gKGFsaXN0LWdldCAnY29tcGxldGlvbnMgcmVzdWx0KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSA6dGVzdCAjJ2VxKSkpKQorCisoZXJ0 LWRlZnRlc3QgY29tcGxldGlvbi1iYXNpYy1zdHlsZS10ZXN0LTEgKCkKKyAgOzsgcG9pbnQg YXQgdGhlIGJlZ2lubmluZyB8Zm9vCisgIChjb21wbGV0aW9uLS10ZXN0LXN0eWxlICdiYXNp YyAiZm9vIiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICcoImZvb2JhciIgImZvbyEi ICJiYXJmb28iICJ4Zm9veSIgImJvb2JhciIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICcoImZvb2JhciIgImJhcmZvbyIgInhmb295IikpKQorCisoZXJ0LWRlZnRlc3QgY29tcGxl dGlvbi1iYXNpYy1zdHlsZS10ZXN0LTIgKCkKKyAgOzsgcG9pbnQgZm9vCisgIChjb21wbGV0 aW9uLS10ZXN0LXN0eWxlICdiYXNpYyAiZm9vIiAyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICcoImZvb2JhciIgImZvbyEiICJmb2JhciIgImJhcmZvbyIgInhmb295IiAiYm9vYmFy IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJygiZm9vYmFyIikpKQorCisoZXJ0LWRl ZnRlc3QgY29tcGxldGlvbi1zdWJzdHJpbmctc3R5bGUtdGVzdCAoKQorICAoY29tcGxldGlv bi0tdGVzdC1zdHlsZSAnc3Vic3RyaW5nICJmb28iIDEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgJygiZm9vYmFyIiAiZm9vISIgImJhcmZvbyIgInhmb295IiAiYm9vYmFyIikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgJygiZm9vYmFyIiAiYmFyZm9vIiAieGZvb3kiKSkp CisKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLWVtYWNzMjEtc3R5bGUtdGVzdCAoKQorICAo Y29tcGxldGlvbi0tdGVzdC1zdHlsZSAnZW1hY3MyMSAiZm9vIiAxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICcoImZvb2JhciIgImZvbyEiICJmb2JhciIgImJhcmZvbyIgInhmb295 IiAiYm9vYmFyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJygiZm9vYmFyIikpKQor CisoZXJ0LWRlZnRlc3QgY29tcGxldGlvbi1lbWFjczIyLXN0eWxlLXRlc3QgKCkKKyAgKGNv bXBsZXRpb24tLXRlc3Qtc3R5bGUgJ2VtYWNzMjIgImZvMCIgMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAnKCJmb29iYXIiICJmb28hIiAiZm9iYXIiICJiYXJmb28iICJ4Zm9veSIg ImJvb2JhciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICcoImZvb2JhciIgImZvYmFy IikpKSA7OyBzdWZmaXggaWdub3JlZCBjb21wbGV0ZWx5CisKKyhlcnQtZGVmdGVzdCBjb21w bGV0aW9uLWZsZXgtc3R5bGUtdGVzdCAoKQorICAoY29tcGxldGlvbi0tdGVzdC1zdHlsZSAn ZmxleCAiYWJjIiAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICcoImFiYyIgImFiYyEi ICJ4YXliemMiICJ4YXlieiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICcoImFiYyIg InhheWJ6YyIpKSkKKworKGVydC1kZWZ0ZXN0IGNvbXBsZXRpb24taW5pdGlhbHMtc3R5bGUt dGVzdCAoKQorICAoY29tcGxldGlvbi0tdGVzdC1zdHlsZSAnaW5pdGlhbHMgImFiYyIgMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJhLWItYyIgImEtYi1jISIgImF4LWJ5LWN6 IiAieGF4LWJ5LWN6IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJygiYS1iLWMiICJh eC1ieS1jeiIpKSkKKworKGVydC1kZWZ0ZXN0IGNvbXBsZXRpb24tcGNtLXN0eWxlLXRlc3Qg KCkKKyAgKGNvbXBsZXRpb24tLXRlc3Qtc3R5bGUgJ3BhcnRpYWwtY29tcGxldGlvbiAiYXgt Yi1jIiAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICcoImF4LWItYyIgImF4LWItYyEi ICJheC1ieS1jeiIgInhheC1ieS1jeiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICco ImF4LWItYyIgImF4LWJ5LWN6IikpKQorCisoZXJ0LWRlZnRlc3QgY29tcGxldGlvbi1maWx0 ZXItY29tcGxldGlvbnMtaGlnaGxpZ2h0LXRlc3QgKCkKKyAgOzsgcG9pbnQgYXQgdGhlIGJl Z2lubmluZyB8Zm9vCisgIChsZXQqICgoY29tcGxldGlvbi1zdHlsZXMgJyhiYXNpYykpCisg ICAgICAgICAocmVzdWx0IChjb21wbGV0aW9uLWZpbHRlci1jb21wbGV0aW9ucworICAgICAg ICAgICAgICAgICAgImZvbyIgJygiZm9vYmFyIiAiZmJhcmZvbyIgImZ4Zm9veSIgImJhciIp CisgICAgICAgICAgICAgICAgICBuaWwgMSBuaWwpKSkKKyAgICAoc2hvdWxkIChlcXVhbAor ICAgICAgICAgICAgIChmb3JtYXQgIiVTIiAoYWxpc3QtZ2V0ICdjb21wbGV0aW9ucyByZXN1 bHQpKQorICAgICAgICAgICAgIChmb3JtYXQgIiVTIiAnKCJmb29iYXIiICJmYmFyZm9vIiAi Znhmb295IikpKSkKKyAgICAoc2hvdWxkIChlcXVhbAorICAgICAgICAgICAgIChmb3JtYXQg IiVTIiAoZnVuY2FsbCAoYWxpc3QtZ2V0ICdoaWdobGlnaHQgcmVzdWx0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtZ2V0ICdjb21wbGV0aW9ucyByZXN1 bHQpKSkKKyAgICAgICAgICAgICAoZm9ybWF0ICIlUyIKKyAgICAgICAgICAgICAgICAgICAg ICcoIygiZm9vYmFyIiAwIDEgKGZhY2UgKGNvbXBsZXRpb25zLWNvbW1vbi1wYXJ0KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAxIDIgKGZhY2UgKGNvbXBsZXRpb25zLWZpcnN0LWRp ZmZlcmVuY2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIygiZmJhcmZvbyIgMCAxIChm YWNlIChjb21wbGV0aW9ucy1jb21tb24tcGFydCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgMSAyIChmYWNlIChjb21wbGV0aW9ucy1maXJzdC1kaWZmZXJlbmNlKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICMoImZ4Zm9veSIgMCAxIChmYWNlIChjb21wbGV0aW9ucy1jb21t b24tcGFydCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgMSAyIChmYWNlIChjb21wbGV0 aW9ucy1maXJzdC1kaWZmZXJlbmNlKSkpKSkpKSkpCisKKyhkZWZ1biBjb21wbGV0aW9uLS10 ZXN0LWJvdW5kYXJpZXMgKHN0eWxlIHN0cmluZyB0YWJsZSByZXN1bHQpCisgIChsZXQgKCh0 YWJsZQorICAgICAgICAgKGxhbWJkYSAoc3RyIHByZWQgYWN0aW9uKQorICAgICAgICAgICAo cGNhc2UgYWN0aW9uCisgICAgICAgICAgICAgKGAoYm91bmRhcmllcyAuICxzdWZmaXgpIGAo Ym91bmRhcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwo MSsgKHN0cmluZy1tYXRjaC1wICI8XFx8LyIgc3RyKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAuICwob3IgKHN0cmluZy1zZWFyY2ggIj4iIHN1ZmZpeCkg KGxlbmd0aCBzdWZmaXgpKSkpCisgICAgICAgICAgICAgKF8gKGNvbXBsZXRlLXdpdGgtYWN0 aW9uIGFjdGlvbiB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIuKls8L10iICIiIHN0cikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZCkpKSkpCisgICAgICAgIChwb2lu dCAoc3RyaW5nLXNlYXJjaCAifCIgc3RyaW5nKSkKKyAgICAgICAgKHN0cmluZyAoc3RyaW5n LXJlcGxhY2UgInwiICIiIHN0cmluZykpCisgICAgICAgIChjb21wbGV0aW9uLXN0eWxlcyAo bGlzdCBzdHlsZSkpKQorICAgIChzaG91bGQgKGVxdWFsCisgICAgICAgICAgICAgKGFzc3Et ZGVsZXRlLWFsbAorICAgICAgICAgICAgICAoaWYgKGFzc3EgJ2hpZ2hsaWdodCByZXN1bHQp ICctZG9lcy1ub3QtZXhpc3QgJ2hpZ2hsaWdodCkKKyAgICAgICAgICAgICAgKGNvbXBsZXRp b24tZmlsdGVyLWNvbXBsZXRpb25zCisgICAgICAgICAgICAgICBzdHJpbmcgdGFibGUgbmls IHBvaW50IG5pbCkpCisgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAoc2hvdWxkIChlcXVh bAorICAgICAgICAgICAgIChjb21wbGV0aW9uLWFsbC1jb21wbGV0aW9ucworICAgICAgICAg ICAgICBzdHJpbmcgdGFibGUgbmlsIHBvaW50KQorICAgICAgICAgICAgIChhcHBlbmQgKGFs aXN0LWdldCAnY29tcGxldGlvbnMgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgKGFs aXN0LWdldCAnYmFzZSByZXN1bHQpKSkpKSkKKworKGVydC1kZWZ0ZXN0IGNvbXBsZXRpb24t ZW1hY3MyMS1ib3VuZGFyaWVzLXRlc3QgKCkKKyAgKGNvbXBsZXRpb24tLXRlc3QtYm91bmRh cmllcyAnZW1hY3MyMSAiYmVmb3JlPGlufHB1dD5hZnRlciIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnKCJvdGhlciIpIG5pbCkKKyAgKGNvbXBsZXRpb24tLXRlc3QtYm91 bmRhcmllcyAnZW1hY3MyMSAiYmVmb3JlPGlufHB1dD5hZnRlciIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnKCJhaW5wdXQ+YWZ0ZXIiICJpbnB1dD5hZnRlciIgImlucHV4 PmFmdGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlueHB1dHk+YWZ0 ZXIiICJpbnB1dD5hZnRlcjIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICco KGJhc2UgLiA3KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZCAuIDE4 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpb25zICJpbnB1 dD5hZnRlciIgImlucHV0PmFmdGVyMiIpKSkpCisKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9u LWVtYWNzMjItYm91bmRhcmllcy10ZXN0ICgpCisgIChjb21wbGV0aW9uLS10ZXN0LWJvdW5k YXJpZXMgJ2VtYWNzMjIgImJlZm9yZTxpbnxwdXQ+YWZ0ZXIiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJygib3RoZXIiKSBuaWwpCisgIChjb21wbGV0aW9uLS10ZXN0LWJv dW5kYXJpZXMgJ2VtYWNzMjIgImJlZm9yZTxpbnxwdXQ+YWZ0ZXIiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJygiYWlueHh4IiAiaW55eSIgImluenp6IikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKChiYXNlIC4gNykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlbmQgLiAxMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb21wbGV0aW9ucyAiaW55eSIgImluenp6IikpKSkKKworKGVydC1kZWZ0ZXN0 IGNvbXBsZXRpb24tYmFzaWMtYm91bmRhcmllcy10ZXN0ICgpCisgIChjb21wbGV0aW9uLS10 ZXN0LWJvdW5kYXJpZXMgJ2Jhc2ljICJiZWZvcmU8aW58cHV0PmFmdGVyIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcoIm90aGVyIikgbmlsKQorICAoY29tcGxldGlvbi0t dGVzdC1ib3VuZGFyaWVzICdiYXNpYyAiYmVmb3JlPGlufHB1dD5hZnRlciIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKCJhaW5wdXQiICJpbnB1dCIgImlucHV4IiAiaW54 cHV0eSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoYmFzZSAuIDcpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kIC4gMTIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29tcGxldGlvbnMgImlucHV0IiAiaW54cHV0eSIp KSkpCisKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLXN1YnN0cmluZy1ib3VuZGFyaWVzLXRl c3QgKCkKKyAgKGNvbXBsZXRpb24tLXRlc3QtYm91bmRhcmllcyAnc3Vic3RyaW5nICJiZWZv cmU8aW58cHV0cz5hZnRlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJv dGhlciIpIG5pbCkKKyAgKGNvbXBsZXRpb24tLXRlc3QtYm91bmRhcmllcyAnc3Vic3RyaW5n ICJiZWZvcmU8aW58cHV0cz5hZnRlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnKCJhaW5wdXRzIiAiaW5wdXRzIiAiaW5wdXgiICJpbnhwdXRzeSIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygoYmFzZSAuIDcpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZW5kIC4gMTMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29tcGxldGlvbnMgImFpbnB1dHMiICJpbnB1dHMiICJpbnhwdXRzeSIpKSkpCisK KyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLXBjbS1ib3VuZGFyaWVzLXRlc3QgKCkKKyAgKGNv bXBsZXRpb24tLXRlc3QtYm91bmRhcmllcyAncGFydGlhbC1jb21wbGV0aW9uICJiZWZvcmU8 aW4tcHx0PmFmdGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoIm90aGVy IikgbmlsKQorICAoY29tcGxldGlvbi0tdGVzdC1ib3VuZGFyaWVzICdwYXJ0aWFsLWNvbXBs ZXRpb24gImJlZm9yZTxpbi1wfHQ+YWZ0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJygiYWluLXB1LXRzIiAiaW4tcHRzIiAiaW4tcHUtdHMiICJpbi1weCIgImlueC1w dHN5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChiYXNlIC4gNykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmQgLiAxMikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjb21wbGV0aW9ucyAiaW4tcHRzIiAiaW4tcHUtdHMi ICJpbngtcHRzeSIpKSkpCisKKyhlcnQtZGVmdGVzdCBjb21wbGV0aW9uLWluaXRpYWxzLWJv dW5kYXJpZXMtdGVzdCAoKQorICAoY29tcGxldGlvbi0tdGVzdC1ib3VuZGFyaWVzICdpbml0 aWFscyAiL2lwfHQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygib3RoZXIi KSBuaWwpCisgIChjb21wbGV0aW9uLS10ZXN0LWJvdW5kYXJpZXMgJ2luaXRpYWxzICIvaXB8 dCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJhaW4vcHUvdHMiICJpbi9w dHMiICJpbi9wdS90cyIgImEvaW4vcHUvdHMiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiaW4vcHUvdHMvZm9vIiAiaW4vcHgiICJpbngvcHRzeSIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygoYmFzZSAuIDEpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZW5kIC4gNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb21wbGV0aW9ucyAiaW4vcHUvdHMiICJpbi9wdS90cy9mb28iKSkpKQorCisoZGVm dW4gY29tcGxldGlvbi1lbWFjczIyb3JpZy1hbGwtY29tcGxldGlvbnMgKHN0cmluZyB0YWJs ZSBwcmVkIHBvaW50KQorICAobGV0ICgoYmVmb3JlcG9pbnQgKHN1YnN0cmluZyBzdHJpbmcg MCBwb2ludCkpKQorICAgIChjb21wbGV0aW9uLWhpbGl0LWNvbW1vbmFsaXR5CisgICAgICAo YWxsLWNvbXBsZXRpb25zIGJlZm9yZXBvaW50IHRhYmxlIHByZWQpCisgICAgIHBvaW50Cisg ICAgIChjYXIgKGNvbXBsZXRpb24tYm91bmRhcmllcyBiZWZvcmVwb2ludCB0YWJsZSBwcmVk ICIiKSkpKSkKKworKGVydC1kZWZ0ZXN0IGNvbXBsZXRpb24tdXBncmFkZS1yZXR1cm4tdHlw ZS10ZXN0ICgpCisgIDs7IFRlc3QgdHJhbnNwYXJlbnQgdXBncmFkZSBvZiBsaXN0IGNvbXBs ZXRpb24gc3R5bGUgcmV0dXJuIHZhbHVlCisgIDs7IHRvIHRoZSBhbGlzdCByZXR1cm4gdmFs dWUgZm9ybWF0IG9mIGBjb21wbGV0aW9uLWZvcm1hdC1jb21wbGV0aW9ucycuCisgIChsZXQg KChjb21wbGV0aW9uLXN0eWxlcy1hbGlzdAorICAgICAgICAgJygoZW1hY3MyMm9yaWcgY29t cGxldGlvbi1lbWFjczIyLXRyeS1jb21wbGV0aW9uCisgICAgICAgICAgICAgICAgICAgICAg ICBjb21wbGV0aW9uLWVtYWNzMjJvcmlnLWFsbC1jb21wbGV0aW9ucyBuaWwpKSkpCisgIChj b21wbGV0aW9uLS10ZXN0LWJvdW5kYXJpZXMgJ2VtYWNzMjJvcmlnICJiZWZvcmU8aW58cHV0 PmFmdGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImFpbnh4eCIgImlu eXkiICJpbnp6eiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoYmFzZSAu IDcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAxOCBpcyBpbmNvcnJl Y3QsIHNob3VsZCBiZSAxMiEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IEJ1dCB0aGUgaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgZHVlIHRvIHRoZSBjb21wbGV0aW9uLXN0eWxlIHVwZ3Jh ZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kIC4gMTgpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZGVudGl0eSBoaWdobGlnaHRpbmcg ZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlnaGxpZ2h0 IC4gaWRlbnRpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcGxl dGlvbnMgImlueXkiICJpbnp6eiIpKSkpKQorCisKIAwKIChkZWZtYWNybyBjb21wbGV0aW5n LXJlYWQtd2l0aC1taW5pYnVmZmVyLXNldHVwIChjb2xsZWN0aW9uICZyZXN0IGJvZHkpCiAg IChkZWNsYXJlIChpbmRlbnQgMSkgKGRlYnVnIChjb2xsZWN0aW9uIGJvZHkpKSkK --------------AUdgZRFE6FQlG2vfM1Gpkmdf Content-Type: text/x-patch; charset=UTF-8; name="completion-lazy-hilit.patch" Content-Disposition: attachment; filename="completion-lazy-hilit.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvaWNvbXBsZXRlLmVsIGIvbGlzcC9pY29tcGxldGUuZWwKaW5k ZXggZTZmZGQxZjE4MzYuLmE5YWMwYjNmMDQwIDEwMDY0NAotLS0gYS9saXNwL2ljb21wbGV0 ZS5lbAorKysgYi9saXNwL2ljb21wbGV0ZS5lbApAQCAtNTQ1LDYgKzU0NSw3IEBAIGljb21w bGV0ZS1taW5pYnVmZmVyLXNldHVwCiAgICAgKHNldHEtbG9jYWwgaWNvbXBsZXRlLS1pbml0 aWFsLWlucHV0IChpY29tcGxldGUtLWZpZWxkLXN0cmluZykpCiAgICAgKHNldHEtbG9jYWwg Y29tcGxldGlvbi1zaG93LWlubGluZS1oZWxwIG5pbCkKICAgICAoc2V0cSBpY29tcGxldGUt LXNjcm9sbGVkLWNvbXBsZXRpb25zIG5pbCkKKyAgICAoc2V0cSBjb21wbGV0aW9uLWxhenkt aGlsaXQgKGNsLWdlbnN5bSkpCiAgICAgKHVzZS1sb2NhbC1tYXAgKG1ha2UtY29tcG9zZWQt a2V5bWFwIGljb21wbGV0ZS1taW5pYnVmZmVyLW1hcAogICAgIAkJCQkJIChjdXJyZW50LWxv Y2FsLW1hcCkpKQogICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgIydpY29tcGxl dGUtcG9zdC1jb21tYW5kLWhvb2sgbmlsIHQpCkBAIC03NTQsMTIgKzc1NSwxMyBAQCBpY29t cGxldGUtZXhoaWJpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktZW5k IHJmbi1lc2hhZG93LW92ZXJsYXkpKSkKICAgICAgICAgICAobGV0KiAoKGZpZWxkLXN0cmlu ZyAoaWNvbXBsZXRlLS1maWVsZC1zdHJpbmcpKQogICAgICAgICAgICAgICAgICAodGV4dCAo d2hpbGUtbm8taW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYmVuY2htYXJrLXBy b2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGljb21wbGV0ZS1jb21wbGV0aW9ucwog ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC1zdHJpbmcKICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGljb21wbGV0ZS0tY29tcGxldGlvbi10YWJsZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGljb21wbGV0ZS0tY29tcGxldGlvbi1wcmVkaWNhdGUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAod2luZG93LW1pbmlidWZmZXItcCkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChlcSBtaW5pYnVmZmVyLS1yZXF1aXJlLW1hdGNo IHQpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIG1pbmlidWZmZXIt LXJlcXVpcmUtbWF0Y2ggdCkpKSkpKQogICAgICAgICAgICAgICAgICAoYnVmZmVyLXVuZG8t bGlzdCB0KQogICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlLW1hcmspCiAgICAgICAgICAg ICA7OyBEbyBub3RoaW5nIGlmIHdoaWxlLW5vLWlucHV0IHdhcyBhYm9ydGVkLgpAQCAtOTAx LDcgKzkwMyw3IEBAIGljb21wbGV0ZS0tcmVuZGVyLXZlcnRpY2FsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdpY29tcGxldGUtc2VsZWN0ZWQtbWF0Y2ggJ2FwcGVuZCBj b21wKQogICAgICBjb2xsZWN0IChjb25jYXQgcHJlZml4CiAgICAgICAgICAgICAgICAgICAg ICAobWFrZS1zdHJpbmcgKC0gbWF4LXByZWZpeC1sZW4gKGxlbmd0aCBwcmVmaXgpKSA/ICkK LSAgICAgICAgICAgICAgICAgICAgIGNvbXAKKyAgICAgICAgICAgICAgICAgICAgIChjb21w bGV0aW9uLWxhenktaGlsaXQgY29tcCkKICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0 cmluZyAoLSBtYXgtY29tcC1sZW4gKGxlbmd0aCBjb21wKSkgPyApCiAgICAgICAgICAgICAg ICAgICAgICBzdWZmaXgpCiAgICAgIGludG8gbGluZXMtYXV4CkBAIC0xMDY3LDcgKzEwNjks OCBAQCBpY29tcGxldGUtY29tcGxldGlvbnMKICAgICAgICAgICAgICAgICAgIChpZiAoPCBw cm9zcGVjdHMtbGVuIHByb3NwZWN0cy1tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgKHB1 c2ggY29tcCBwcm9zcGVjdHMpCiAgICAgICAgICAgICAgICAgICAgIChzZXRxIGxpbWl0IHQp KSkKLSAgICAgICAgICAgICAgICAoc2V0cSBwcm9zcGVjdHMgKG5yZXZlcnNlIHByb3NwZWN0 cykpCisgICAgICAgICAgICAgICAgKHNldHEgcHJvc3BlY3RzCisgICAgICAgICAgICAgICAg ICAgICAgKG5yZXZlcnNlIChtYXBjYXIgIydjb21wbGV0aW9uLWxhenktaGlsaXQgcHJvc3Bl Y3RzKSkpCiAgICAgICAgICAgICAgICAgOzsgRGVjb3JhdGUgZmlyc3Qgb2YgdGhlIHByb3Nw ZWN0cy4KICAgICAgICAgICAgICAgICAod2hlbiBwcm9zcGVjdHMKICAgICAgICAgICAgICAg ICAgIChsZXQgKChmaXJzdCAoY29weS1zZXF1ZW5jZSAocG9wIHByb3NwZWN0cykpKSkKZGlm ZiAtLWdpdCBhL2xpc3AvbWluaWJ1ZmZlci5lbCBiL2xpc3AvbWluaWJ1ZmZlci5lbAppbmRl eCAyMTIwZTMxNzc1ZS4uYzU2ZWY2NDQ5NGEgMTAwNjQ0Ci0tLSBhL2xpc3AvbWluaWJ1ZmZl ci5lbAorKysgYi9saXNwL21pbmlidWZmZXIuZWwKQEAgLTM3NDksNiArMzc0OSw1NCBAQCBm bGV4LXNjb3JlLW1hdGNoLXRpZ2h0bmVzcwogdGhhbiB0aGUgbGF0dGVyICh3aGljaCBoYXMg dHdvIFwiaG9sZXNcIiBhbmQgdGhyZWUKIG9uZS1sZXR0ZXItbG9uZyBtYXRjaGVzKS4iKQog CisoZGVmdmFyLWxvY2FsIGNvbXBsZXRpb24tbGF6eS1oaWxpdCBuaWwKKyAgIklmIG5vbi1u aWwsIHJlcXVlc3QgY29tcGxldGlvbiBsYXp5IGhpbGlnaHRpbmcuCisKK0NvbXBsZXRpb24t cHJlc2VudGluZyBmcm9udGVuZHMgbWF5IG9wdCB0byBiaW5kIHRoaXMgdmFyaWFibGUgdG8K K2EgdW5pcXVlIG5vbi1uaWwgdmFsdWUgaW4gdGhlIGNvbnRleHQgb2YgY29tcGxldGlvbi1w cm9kdWNpbmcKK2NhbGxzIChzdWNoIGFzIGBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxl dGlvbnMnKS4gIFRoaXMgaGludHMKK3RoZSBpbnRlcnZlbmluZyBjb21wbGV0aW9uIHN0eWxl cyB0aGF0IHRoZXkgZG8gbm90IG5lZWQgdG8KK3Byb3BlcnRpemUgY29tcGxldGlvbiBzdHJp bmdzIHdpdGggdGhlIGBmYWNlJyBwcm9wZXJ0eS4KKworV2hlbiBkb2luZyBzbywgaXQgaXMg dGhlIGZyb250ZW5kIC0tIG5vdCB0aGUgc3R5bGUgLS0gd2hvIGJlY29tZXMKK3Jlc3BvbnNp YmxlIGZvciBgZmFjZSctcHJvcGVydGl6aW5nIG9ubHkgdGhlIGNvbXBsZXRpb24gc3RyaW5n cwordGhhdCBhcmUgbWVhbnQgdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiAgVGhpcyBj YW4gYmUgZG9uZSBieQorY2FsbGluZyB0aGUgZnVuY3Rpb24gYGNvbXBsZXRpb24tbGF6eS1o aWxpdCcgd2hpY2ggcmV0dXJucyBhCitgZmFjZSctcHJvcGVydGl6ZWQgc3RyaW5nLgorCitU aGUgdmFsdWUgc3RvcmVkIGluIHRoaXMgdmFyaWFibGUgYnkgdGhlIGNvbXBsZXRpb24gZnJv bnRlbmQKK3Nob3VsZCBiZSB1bmlxdWUgdG8gZWFjaCBjb21wbGV0aW9uIGF0dGVtcHQgb3Ig c2Vzc2lvbiB0aGF0Cit1dGlsaXplcyB0aGUgc2FtZSBjb21wbGV0aW9uIHN0eWxlIGluIGBj b21wbGV0aW9uLXN0eWxlcy1hbGlzdCcuCitGb3IgZnJvbnRlbmRzIHVzaW5nIHRoZSBtaW5p YnVmZmVyIGFzIHRoZSBsb2N1cyBvZiBjb21wbGV0aW9uCitjYWxscyBhbmQgZGlzcGxheSwg c2V0dGluZyBpdCB0byBhIGJ1ZmZlci1sb2NhbCB2YWx1ZSBnaXZlbiBieQorYGdlbnN5bScg aXMgYXBwcm9wcmlhdGUuICBGb3IgZnJvbnRlbmRzIG9wZXJhdGluZyBlbnRpcmVseSBpbiBh CitzaW5nbGUgY29tbWFuZCwgbGV0LWJpbmRpbmcgaXQgdG8gYGdlbnN5bScgaXMgYXBwcm9w cmlhdGUuCisKK05vdGUgdGhhdCB0aGUgb3B0aW1pemF0aW9uIGVuYWJsZWQgYnkgdmFyaWFi bGUgaXMgb25seSBhY3R1YWxseQorcGVyZm9ybWVkIHNvbWUgY29tcGxldGlvbnMgc3R5bGVz LiAgVG8gb3RoZXJzLCBpdCBpcyBhIGhhcm1sZXNzCithbmQgdXNlbGVzcyBoaW50LiAgVG8g YXV0aG9yIGEgY29tcGxldGlvbiBzdHlsZSB0aGF0IHRha2VzCithZHZhbnRhZ2Ugb2YgdGhp cywgbG9vayBpbiB0aGUgc291cmNlIG9mCitgY29tcGxldGlvbi1wY20tLWhpbGl0LWNvbW1v bmFsaXR5Jy4iKQorCisoZGVmdW4gY29tcGxldGlvbi1sYXp5LWhpbGl0IChzdHIpCisgICJS ZXR1cm4gYSBjb3B5IG9mIGNvbXBsZXRpb24gU1RSIHRoYXQgaXMgYGZhY2UnLXByb3BlcnRp emVkLgorU2VlIGRvY3VtZW50YXRpb24gZm9yIHZhcmlhYmxlIGBjb21wbGV0aW9uLWxhenkt aGlsaXQnIGZvciBtb3JlCitkZXRhaWxzLiIKKyAgKGxldCogKChzdHIgKGNvcHktc2VxdWVu Y2Ugc3RyKSkKKyAgICAgICAgIChkYXRhIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdjb21wbGV0 aW9uLWxhenktaGlsaXQtZGF0YSBzdHIpKQorICAgICAgICAgKHJlIChhbmQKKyAgICAgICAg ICAgICAgY29tcGxldGlvbi1sYXp5LWhpbGl0CisgICAgICAgICAgICAgIChlcSBjb21wbGV0 aW9uLWxhenktaGlsaXQgKGNhciBkYXRhKSkgKGNkciBkYXRhKSkpCisgICAgICAgICAobWQg KGFuZCByZSAoc3RyaW5nLW1hdGNoIHJlIHN0cikgKGNkZHIgKG1hdGNoLWRhdGEgdCkpKSkK KyAgICAgICAgIChtZSAoYW5kIG1kIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgKGZyb20g MCkpCisgICAgKHdoaWxlIG1kCisgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBmcm9t IChwb3AgbWQpICdjb21wbGV0aW9ucy1jb21tb24tcGFydCBuaWwgc3RyKQorICAgICAgKHNl dHEgZnJvbSAocG9wIG1kKSkpCisgICAgKHVubGVzcyAob3IgKG5vdCBtZSkgKD0gZnJvbSBt ZSkpCisgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBmcm9tIG1lICdjb21wbGV0aW9u cy1jb21tb24tcGFydCBuaWwgc3RyKSkKKyAgICBzdHIpKQorCiAoZGVmdW4gY29tcGxldGlv bi1wY20tLWhpbGl0LWNvbW1vbmFsaXR5IChwYXR0ZXJuIGNvbXBsZXRpb25zKQogICAiU2hv dyB3aGVyZSBhbmQgaG93IHdlbGwgUEFUVEVSTiBtYXRjaGVzIENPTVBMRVRJT05TLgogUEFU VEVSTiwgYSBsaXN0IG9mIHN5bWJvbHMgYW5kIHN0cmluZ3MgYXMgc2VlbgpAQCAtMzc2NSw4 ICszODEzLDkgQEAgY29tcGxldGlvbi1wY20tLWhpbGl0LWNvbW1vbmFsaXR5CiAgICAgICAg ICAgIGxhc3QtbWQpCiAgICAgICAobWFwY2FyCiAgICAgICAgKGxhbWJkYSAoc3RyKQotCSA7 OyBEb24ndCBtb2RpZnkgdGhlIHN0cmluZyBpdHNlbGYuCi0gICAgICAgICAoc2V0cSBzdHIg KGNvcHktc2VxdWVuY2Ugc3RyKSkKKyAgICAgICAgICh1bmxlc3MgY29tcGxldGlvbi1sYXp5 LWhpbGl0CisgICAgICAgICAgIDs7IERvbid0IG1vZGlmeSB0aGUgc3RyaW5nIGl0c2VsZi4K KyAgICAgICAgICAgKHNldHEgc3RyIChjb3B5LXNlcXVlbmNlIHN0cikpKQogICAgICAgICAg KHVubGVzcyAoc3RyaW5nLW1hdGNoIHJlIHN0cikKICAgICAgICAgICAgKGVycm9yICJJbnRl cm5hbCBlcnJvcjogJXMgZG9lcyBub3QgbWF0Y2ggJXMiIHJlIHN0cikpCiAgICAgICAgICAo bGV0KiAoKHBvcyAoaWYgcG9pbnQtaWR4IChtYXRjaC1iZWdpbm5pbmcgcG9pbnQtaWR4KSAo bWF0Y2gtZW5kIDApKSkKQEAgLTM4MTUsOSArMzg2NCwxMCBAQCBjb21wbGV0aW9uLXBjbS0t aGlsaXQtY29tbW9uYWxpdHkKICAgICAgICAgICAgICAgICAodXBkYXRlLXNjb3JlLWFuZC1m YWNlCiAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGEgYikKICAgICAgICAgICAgICAgICAg ICAiVXBkYXRlIHNjb3JlIGFuZCBmYWNlIGdpdmVuIG1hdGNoIHJhbmdlIChBIEIpLiIKLSAg ICAgICAgICAgICAgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBhIGIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGxldGlvbnMtY29tbW9u LXBhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwg c3RyKQorICAgICAgICAgICAgICAgICAgICh1bmxlc3MgY29tcGxldGlvbi1sYXp5LWhpbGl0 CisgICAgICAgICAgICAgICAgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBhIGIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wbGV0aW9u cy1jb21tb24tcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmlsIHN0cikpCiAgICAgICAgICAgICAgICAgICAgKHNldHEKICAgICAgICAgICAg ICAgICAgICAgc2NvcmUtbnVtZXJhdG9yICAgKCsgc2NvcmUtbnVtZXJhdG9yICgtIGIgYSkp KQogICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKG9yICg9IGEgbGFzdC1iKQpAQCAtMzg0 MCw3ICszODkwLDEwIEBAIGNvbXBsZXRpb24tcGNtLS1oaWxpdC1jb21tb25hbGl0eQogICAg ICAgICAgICA7OyBmb3IgdGhhdCBleHRyYSBiaXQgb2YgbWF0Y2ggKGJ1ZyM0MjE0OSkuCiAg ICAgICAgICAgICh1bmxlc3MgKD0gZnJvbSBtYXRjaC1lbmQpCiAgICAgICAgICAgICAgKGZ1 bmNhbGwgdXBkYXRlLXNjb3JlLWFuZC1mYWNlIGZyb20gbWF0Y2gtZW5kKSkKLSAgICAgICAg ICAgKGlmICg+IChsZW5ndGggc3RyKSBwb3MpCisgICAgICAgICAgIChwdXQtdGV4dC1wcm9w ZXJ0eSAwIDEgJ2NvbXBsZXRpb24tbGF6eS1oaWxpdC1kYXRhCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY29ucyBjb21wbGV0aW9uLWxhenktaGlsaXQgcmUpIHN0cikKKyAg ICAgICAgICAgKGlmIChhbmQgKD4gKGxlbmd0aCBzdHIpIHBvcykKKyAgICAgICAgICAgICAg ICAgICAgKG5vdCBjb21wbGV0aW9uLWxhenktaGlsaXQpKQogICAgICAgICAgICAgICAgKGFk ZC1mYWNlLXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICBwb3MgKDErIHBvcykKICAg ICAgICAgICAgICAgICAnY29tcGxldGlvbnMtZmlyc3QtZGlmZmVyZW5jZQo= --------------AUdgZRFE6FQlG2vfM1Gpkmdf--