From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: [PATCH] Add inlay hints to eglot Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 11 Feb 2023 08:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Cc: Chinmay Dalal X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16761048145787 (code B ref -1); Sat, 11 Feb 2023 08:41:01 +0000 Received: (at submit) by debbugs.gnu.org; 11 Feb 2023 08:40:14 +0000 Received: from localhost ([127.0.0.1]:38611 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQlQb-0001VF-Pk for submit@debbugs.gnu.org; Sat, 11 Feb 2023 03:40:14 -0500 Received: from lists.gnu.org ([209.51.188.17]:44834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQl16-0000on-DR for submit@debbugs.gnu.org; Sat, 11 Feb 2023 03:13:52 -0500 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 1pQl15-0003s6-8u for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 03:13:51 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pQl13-00017N-8n for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 03:13:50 -0500 Received: by mail-pj1-x1033.google.com with SMTP id mi9so7596548pjb.4 for ; Sat, 11 Feb 2023 00:13:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=MQbSkvswjrUJsb+zXwjOI5qstVE5xVc4Z66AcwxSS6U=; b=kTD5bvpFvwpeJjULI/rZf2JXUIpXpaW3ao5QOtUNJhKuz2XeRAOnkf/XFNHDqlGxJa f7ZXZ2DQvJOzLV0OcNuarEiBQZ37w226wGD/emcw8TSlMz133EHR9MmJQLA3v5Ns2Rab jfFfMXEzgLitE/NGjjY5VyBhD/3ppfpH/2q06iKuLSsmAGHxJwc68Tm8POMJr8pFFLmT PYIp8OAfL6d45cT/6MYm/WlYvEnR2oXVWyWxcwgboiWL84llaPjyIkvn/qETBtHJfokR lQSaHztohbTPIuwEjg1I1pzk8HSobGHyHpXJjGQjah2sS7y/Belv6B7ccnncVd/rqhQD U4yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MQbSkvswjrUJsb+zXwjOI5qstVE5xVc4Z66AcwxSS6U=; b=CE/+luTmlgrANnPcstzEJdeqGY1NctnSL4N9E+ItR3i2BbW4u7PJHq4Ke58GDPuw5+ 6MtQiF2oU5s8U+a0tCvHmOENsV6z816WcgWOGULuWii+M4AnIKg/cmhImL9ff/XqLk2G b+jqxHByc9zXXzwci9+a+nkmwURxbY4Pioziovq9Y5su+bCV2l0SNIA9uOXU9lC4mwZG jtrQ6rV3I18bxX7ykLw8cbraP/JM93WbSgCrq0/qnfyrIJI6HH9lAWFftCceB1c+BP+q NRIvRu8FogA1CWyqZdCmRit41/4fK1T/6DId63vOW2PRO2P2/Y+5J8C1P0fjxO/ONlS3 odJQ== X-Gm-Message-State: AO0yUKUUVrqMeECsOcQZbEvi0UNoiK42nkPSCMCU6zockXZuDoGWMCSI jizAUaoDHb/z4UOH7Ow18JAzmnRlTDY9xA== X-Google-Smtp-Source: AK7set8BE5xYcPQuQVdAJ3i2uHcsk4NbRLqY85ipLyAsMuys4BdMpLtqRYes49A3BK9/DUg/NyTFbA== X-Received: by 2002:a17:90a:1993:b0:230:7c78:6a7 with SMTP id 19-20020a17090a199300b002307c7806a7mr19589833pji.28.1676103227138; Sat, 11 Feb 2023 00:13:47 -0800 (PST) Received: from ganymede.bits-hyderabad.ac.in ([103.177.232.33]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a756600b0023086d88781sm2023374pjk.3.2023.02.11.00.13.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Feb 2023 00:13:46 -0800 (PST) From: Chinmay Dalal Date: Sat, 11 Feb 2023 13:43:36 +0530 Message-Id: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=dalal.chinmay.0101@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Mailman-Approved-At: Sat, 11 Feb 2023 03:40:13 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Hello all, I have improved upon the patch from bug#61066. >From the original email: > - I can't figure out a way to show the hints on a document without causing lags or timeouts from the lsp server This might have been because they were sending an asynchronous request, waiting for the response, collecting the hints and displaying them. I have instead used `jsonrpc-async-request` with a handler function which should remedy this issue. I have tried this with rust-analyzer and faced no lags. The original patch also checked the wrong condition (`cond (eglot--managed-mode`) in `eglot-inlay-mode` and had a superfluous `(run-hooks 'eglot-managed-mode-hook)` (presumably copy-pasted from `define-minor-mode eglot--managed-mode`), I have fixed that. >From a reply to the original email: > AFAIU, inlay hints provide information of the same kind as ElDoc and > in similar manner from the display and UX POV. So I think this > feature should work via ElDoc, not as a separate from-the-scratch > implementation. This can't be done via ElDoc because the purpose of inlay hints is to display variable types and parameter names without moving the cursor to the location. One can already see this information if they move their cursor to the variable or function and wait for the "hover" - inlay hints were added to the spec after this which (IMHO) clearly means something like overlays should be used. A couple of issues at present: 1. I have not implemented "complex" hints (whose `label` is an array of `InlayHintLabelPart` instead of a string) because I don't know what to do when there are multiple labels at the same location. rust-analyzer uses these hints to show a clickable link at the end of a function block, which points to the beginning of the function. 2. I need to save the buffer or disable and re-enable `eglot-inlay-mode` to get hints for the first time after opening a file, even though I call `eglot--update-hints` once in `eglot-inlay-mode`. Regards, Chinmay Dalal --- lisp/progmodes/eglot.el | 70 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 6caf589..0d5e63e 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -404,6 +404,10 @@ This can be useful when using docker to run a language server.") (when (assoc 'flex completion-styles-alist) (add-to-list 'completion-category-defaults '(eglot (styles flex basic)))) +(defcustom eglot-inlay-hints t + "If non-nil, enable inlay hints." + :type 'boolean) + ;;; Constants ;;; @@ -1624,7 +1628,8 @@ under cursor." (const :tag "Highlight links in document" :documentLinkProvider) (const :tag "Decorate color references" :colorProvider) (const :tag "Fold regions of buffer" :foldingRangeProvider) - (const :tag "Execute custom commands" :executeCommandProvider))) + (const :tag "Execute custom commands" :executeCommandProvider) + (const :tag "Inlay hints" :inlayHintProvider))) (defun eglot--server-capable (&rest feats) "Determine if current server is capable of FEATS." @@ -1845,6 +1850,8 @@ If it is activated, also signal textDocument/didOpen." (when (and buffer-file-name (eglot-current-server)) (setq eglot--diagnostics nil) (eglot--managed-mode) + (unless (not eglot-inlay-hints) + (eglot-inlay-mode)) (eglot--signal-textDocument/didOpen)))) (add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode) @@ -3456,6 +3463,67 @@ If NOERROR, return predicate, else erroring function." (revert-buffer) (pop-to-buffer (current-buffer))))) +(defface eglot-inlay-hint + '((t (:height 0.8 :inherit shadow))) + "Face used for inlay hint overlays.") + +(define-minor-mode eglot-inlay-mode + "Mode for displaying inlay hints." + :lighter " inlay" + (if eglot-inlay-mode + (progn + (add-hook 'after-save-hook 'eglot--update-hints 0 t) + (eglot--update-hints)) + (progn + (remove-hook 'after-save-hook 'eglot--update-hints t) + (eglot--remove-hints)))) + +(defun eglot--inlay-handler (buffer hints) + "Apply vector of inlay hints HINTS on buffer BUFFER." + (seq-doseq (hint hints) + (let* ((position (plist-get hint :position)) + (line (plist-get position :line)) + (character (plist-get position :character)) + (label (plist-get hint :label))) + (when (stringp label) + (with-current-buffer buffer + (eglot--widening + (goto-char (point-min)) + (forward-line line) + (eglot-move-to-column character) + (let ((overlay (make-overlay (point) (point)))) + (overlay-put overlay 'before-string (propertize + (concat (if (plist-get hint :paddingLeft) " " "") + label + (if (plist-get hint :paddingRight) " " "")) + 'face 'eglot-inlay-hint)) + (overlay-put overlay 'is-eglot-inlay-hint t)))))))) + +(defun eglot--remove-hints () + "Remove inlay hints from the buffer." + (remove-overlays nil nil 'is-eglot-inlay-hint t)) + +(defun eglot--update-hints () + "Request inlay hints for the current buffer and apply them." + (unless (eglot--server-capable :inlayHintProvider) + (eglot--error "This LSP server isn't an :inlayHintProvider")) + ;; Remove existing hints + (eglot--remove-hints) + (let ((buffer (current-buffer))) + (jsonrpc-async-request + (eglot--current-server-or-lose) + :textDocument/inlayHint + (list + :textDocument (eglot--TextDocumentIdentifier) + :range (list + :start (list :line 0 :character 0) + :end (list + :line (count-lines (point-min) (point-max)) + :character 0))) + :success-fn (lambda (hints) + (eglot--inlay-handler buffer hints)) + :deferred t))) + ;;; Hacks ;;; -- 2.39.1 From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: [PATCH] Add inlay hints to eglot References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 11 Feb 2023 14:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167612693232145 (code B ref -1); Sat, 11 Feb 2023 14:49:02 +0000 Received: (at submit) by debbugs.gnu.org; 11 Feb 2023 14:48:52 +0000 Received: from localhost ([127.0.0.1]:39194 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQrBI-0008MM-Ra for submit@debbugs.gnu.org; Sat, 11 Feb 2023 09:48:51 -0500 Received: from lists.gnu.org ([209.51.188.17]:59434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQoOT-0001FW-0g for submit@debbugs.gnu.org; Sat, 11 Feb 2023 06:50:14 -0500 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 1pQoOR-00010K-2v for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 06:50:11 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pQoON-0002Oa-Co for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 06:50:10 -0500 Received: by mail-pf1-x433.google.com with SMTP id ea13so5141700pfb.13 for ; Sat, 11 Feb 2023 03:50:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:subject:to:in-reply-to:message-id:date:from:to:cc:subject:date :message-id:reply-to; bh=WLd2r3PjSUvfbiD720ZAefuF1+ajAiU4dDP0yvHyXEU=; b=bguHsqvWkbrT6V1zfwbKZGRfXHleACGDw86MDXUUYzQzTSsqitq8C9GhZCCwDCj7Oy kXMJwoGpW9w4TmpIrOHhLyiYsAiJYPTOT59CLs05xDWzju42OJrDUHvWDx3RGGt37gzF WaPRgLLRJ345dpbUwsrqiDR3DHJkPra8MpUwvZJAN+3UEBKgTLUEwmwuWsLmKk2ytUL5 EuMEYJPkvV0H/1L5MLqlDecF1AuVsVF544/s5usDXwOcZIx2kmjdvdrD8wWwlr+NUzpx 5qipXP2wlBz09gLCZjY+MP+eNDdRp22eejj/Y1CGEf4ibxk9u0Ab5r1tODys0U3xlOYu Fizw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=from:subject:to:in-reply-to:message-id:date:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WLd2r3PjSUvfbiD720ZAefuF1+ajAiU4dDP0yvHyXEU=; b=dJbe0Hvo3Jx29Hl6gKUWJJwt5kLBtlgnDgcZg8G8DB4ZNMwAoelHWNN3pENh5plAL3 qiWTlWo+C5wq8TP4PTOOdjuqjn5pRsd+0PLY9gPCwJV6Cg2JvmOYPxfq4DswVy52zKWY 9O+4C5DXukL8O2jeoz4fhZ2S0mhbXWFCvMJO74AmiAWAskh7MxjoV7IcPLPcfUac7Yp+ Fe1JovUxIvS3K4pNqKZyy3N9vZoJK6HMwqt2qlY3EXD8j09rfdAn65HX7UwIP62q9ifK 4DIktnnZByVwnsQLzYKM8RGNh3fJd4JUmVnm7uI8psG7nPGGf/toNVo8/1J/qSjBHMmU DkKw== X-Gm-Message-State: AO0yUKXBvwDKrIGTi65k7rDS7bjsesvHEiUVnZl0/Twmu4fXLfo/5A6Y LbKIKujlDjDz4c+6M+cHu16sVU2jaz8= X-Google-Smtp-Source: AK7set8i32Ia20whHv645d8mJlzl1d1pWBj0yd/rMRwqHtY+hdUX552C4GIjdwWNqODHiEFOCzvw/A== X-Received: by 2002:a62:6417:0:b0:5a8:8535:18b with SMTP id y23-20020a626417000000b005a88535018bmr854435pfb.11.1676116204392; Sat, 11 Feb 2023 03:50:04 -0800 (PST) Received: from ganymede ([14.98.244.193]) by smtp.gmail.com with ESMTPSA id y4-20020aa78544000000b005a81885f342sm4759511pfn.21.2023.02.11.03.50.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Feb 2023 03:50:04 -0800 (PST) Date: Sat, 11 Feb 2023 17:20:00 +0530 Message-Id: In-Reply-To: 20230211081335.312224-1-dalal.chinmay.0101@gmail.com From: Chinmay Dalal Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=dalal.chinmay.0101@gmail.com; helo=mail-pf1-x433.google.com X-Spam_score_int: 15 X-Spam_score: 1.5 X-Spam_bar: + X-Spam_report: (1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 2.5 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: More about InlayHintPart: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintLabelPart Content analysis details: (2.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.51.188.17 listed in wl.mailspike.net] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] X-Mailman-Approved-At: Sat, 11 Feb 2023 09:48:47 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: More about InlayHintPart: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintLabelPart Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.51.188.17 listed in wl.mailspike.net] -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager More about InlayHintPart: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintLabelPart From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Question about implementation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> In-Reply-To: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 11 Feb 2023 17:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167613816424103 (code B ref 61412); Sat, 11 Feb 2023 17:57:02 +0000 Received: (at 61412) by debbugs.gnu.org; 11 Feb 2023 17:56:04 +0000 Received: from localhost ([127.0.0.1]:43145 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQu6U-0006Gd-Ia for submit@debbugs.gnu.org; Sat, 11 Feb 2023 12:56:04 -0500 Received: from mail-pg1-f181.google.com ([209.85.215.181]:38498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQrmK-0001wJ-G3 for 61412@debbugs.gnu.org; Sat, 11 Feb 2023 10:27:06 -0500 Received: by mail-pg1-f181.google.com with SMTP id c29so1507216pgm.5 for <61412@debbugs.gnu.org>; Sat, 11 Feb 2023 07:27:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:subject:to:from:message-id:from:to:cc:subject:date:message-id :reply-to; bh=mtJLjBEacynWimuZ+TsxMcxodOE0pdoLIgmLY8EKxyc=; b=leZCblVEOV+Z/hj/nRDaJDOcF/fvIAy2dg6FJQgupo3Pn5gDla4XvmUQ9p1m7P8/aa jtPHOUHH9ZU2LxSdYNJeEhzd3THeIvAznSnIKQybmhJagaCQstsJWU0YJKj0jav3gZ6A YcqsZ+icbR4tDIlzQdFAD5fDMUSPrlI2EG1vvRufnMQ/YAXkMsyBwaA6eHqafSKAS2cs JHKLF5TxzBsZsnnAg76MFVGMWDyUMs4z2d9cNKNBAJ+A9fjMYwRZv+qjXzf7Q9eMpbom d6c6VzFD3KxkA/PEzC6j//pNcqPbvfrtDyLVRHSgQmRSCWjTmO2GFEXw+1X+XfUTkqny 6bzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=date:subject:to:from:message-id:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mtJLjBEacynWimuZ+TsxMcxodOE0pdoLIgmLY8EKxyc=; b=aXBor2Lel5un3yzK6hCjun1HpCFO8hp7iBDlH/Sag1CdZX/ZvZ+Ur4+BJVbG2z2AqC bwBb9hZO/fnl7rQ/I++o8TrLujP8MiCxAlxwm1vrTQIAjxZo1F2uOY2JWQNGWdXx6JuL S2z2QGzVxWQGLtJTrROWRg7N7ijUL5oWDeFe6xUd4kN7CfNux4sBQXTGuVuDUEZTrxFq AkZ87EXOVhevgJgVE2uMorBYv/VggLoaUpbM3+kjCiD9Ftbgrufw0GdQglk+ZLJ2mDG7 PW4cdaUrPlox2YQ9mkLxP4fsDtE1zggafLkmCMohOozfJFxUlXul+Wqz7/YxfgzNkHrn IQ7w== X-Gm-Message-State: AO0yUKXJxDPtmRhk0+XpbUuuRmLUG7Uemv1u/m0eGDwTnNHkrVLpahmf GoWTGDgStz5Q2JjAZQ/5jSzs0Rc/l6g= X-Google-Smtp-Source: AK7set/IQL+pDCfmK0mY/Wmx/JNnysUCwGiCUhstBtseu267AVrPQXCBCrV58LY7hFsUgKkXdT9XBg== X-Received: by 2002:a05:6a00:db:b0:5a8:4e4e:df6d with SMTP id e27-20020a056a0000db00b005a84e4edf6dmr9535886pfj.6.1676129218107; Sat, 11 Feb 2023 07:26:58 -0800 (PST) Received: from ganymede ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id n19-20020a62e513000000b005a83129caeasm5031986pff.185.2023.02.11.07.26.56 for <61412@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Feb 2023 07:26:57 -0800 (PST) Message-Id: From: Chinmay Dalal Date: Sat, 11 Feb 2023 20:53:29 +0530 X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I currently send the request with the coordinates of the whole buffer on save (while doing nothing on scroll), I was wondering if it would be better or worse to send requests with coordinates of just [...] Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.215.181 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.215.181 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Mailman-Approved-At: Sat, 11 Feb 2023 12:56:00 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I currently send the request with the coordinates of the whole buffer on save (while doing nothing on scroll), I was wondering if it would be better or worse to send requests with coordinates of just [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.215.181 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.215.181 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager I currently send the request with the coordinates of the whole buffer on save (while doing nothing on scroll), I was wondering if it would be better or worse to send requests with coordinates of just the current viewport on every scroll. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Hover github discussion References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> In-Reply-To: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 13 Feb 2023 17:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167630945728580 (code B ref 61412); Mon, 13 Feb 2023 17:31:02 +0000 Received: (at 61412) by debbugs.gnu.org; 13 Feb 2023 17:30:57 +0000 Received: from localhost ([127.0.0.1]:51405 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRcfJ-0007Qu-0W for submit@debbugs.gnu.org; Mon, 13 Feb 2023 12:30:57 -0500 Received: from mail-pl1-f181.google.com ([209.85.214.181]:43656) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pRau1-00080n-6J for 61412@debbugs.gnu.org; Mon, 13 Feb 2023 10:38:01 -0500 Received: by mail-pl1-f181.google.com with SMTP id d8so12654908plr.10 for <61412@debbugs.gnu.org>; Mon, 13 Feb 2023 07:38:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:subject:to:from:message-id:from:to:cc:subject:date:message-id :reply-to; bh=GRxBnOC0DvXOudR7Qv3vKsGNMrxfbXyEl0JKwXGVExs=; b=Yg9QKLydg9mThKKmLNfV2jzSyI9LPDyVRzvFckDokMp/TF7kbEg6ARuKqguixOSDqI Ome7EwojAqOjbterhohgVnRvGluAiGYKAWaDI31iyIVXmZdA/3nhNAgIj/9rpyqJpR7P FlXmAyJk6CjngKO8ZWHIDnHPRvIL/fSZE0sFf3AI5fH68vaEdDFwQkI8Bi2MAG8NNQgd C7Re3TwBUpSmMfSKS7CDGH1mdQkFyJhJ9BUSrj7b9CW/6Phmop9cVOj0ESzpghFUJN/D g2LlTnDKBLQ/kq3ml6RLTJK4fUAajOujCHuEZcQDa7ho+6m3jPvOaAePu9JlMnU4dn0A rLFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=date:subject:to:from:message-id:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GRxBnOC0DvXOudR7Qv3vKsGNMrxfbXyEl0JKwXGVExs=; b=KoX+Vexf1xANybYm7+mCboTQAL86m/DCKciM+bH28YMOD3lNIHdlKe9LT6B2WFfUIH fcTkf2FHzatS4qPbmkrHdp4XrI9BEbP8LwS+mI/ZSaydMmt844GKsF/+xiK+RZBCe7I7 5oyMwYfvRwlCaXI16Tct6gbgqKqtzhMxDQiV39/vBQEQ9gVSnSS817xtjzzSbR369fpU GuELJbBAPxHqHZOFcjL3KEcWMfe5Bla3ZotES4BAtNLk/1wXcSau/NEsyVmTK9B+uHab qCJFAso9PsaPzV/ioIpMTOOE1mKnjMSUWI/ftW7pRv1MW0x1n+N5qhP9822rrfkwvYQZ nldA== X-Gm-Message-State: AO0yUKXGG+OPhD53+EIYfYWx/tJCxYYppm2n8fTwWmO4Kywp+wnMPInV ohG2kt+rpxdprJ89nmOHPHPSA1OgApo= X-Google-Smtp-Source: AK7set/BKYC8Cb/8VSjLHQZeEvox71pspWTxfA+Zfk+asAjDf1pwZZB005j6kpODTMTvUiYKZ1mHHQ== X-Received: by 2002:a05:6a20:8c1a:b0:be:d368:5c7f with SMTP id j26-20020a056a208c1a00b000bed3685c7fmr22031001pzh.41.1676302674939; Mon, 13 Feb 2023 07:37:54 -0800 (PST) Received: from ganymede ([115.244.45.193]) by smtp.gmail.com with ESMTPSA id l3-20020a170903120300b00196053474a8sm8381739plh.53.2023.02.13.07.37.53 for <61412@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Feb 2023 07:37:54 -0800 (PST) Message-Id: From: Chinmay Dalal Date: Mon, 13 Feb 2023 21:05:12 +0530 X-Spam-Score: 0.3 (/) X-Mailman-Approved-At: Mon, 13 Feb 2023 12:30:55 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) >From the discussion on github https://github.com/joaotavora/eglot/discussions/963 > The default version would be a hoverable symbol that shows something in the echo area when you mouse hover over it. > Let's continue in the bug tracker discussion initiated by your bug report. > As far as I understand, inlay hints will show the type of many visible expressions at once, so it's different from the "hover" scenario. Yes, so it is impossible to use mouse hover for this as you can only hover on one thing at once, right? From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Hover github discussion Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 13:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal , =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.16764695236094 (code B ref 61412); Wed, 15 Feb 2023 13:59:01 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 13:58:43 +0000 Received: from localhost ([127.0.0.1]:58299 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSIJ1-0001aD-Hf for submit@debbugs.gnu.org; Wed, 15 Feb 2023 08:58:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54818) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSIIz-0001Zk-6k for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 08:58:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSIIt-0006uB-SW; Wed, 15 Feb 2023 08:58:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=oUC4zauPRagLSlVLd//AjfmG5kMz1FSEHcxrm/1XFfo=; b=lwSgDSEEv7dgnoEXD1OX QBV0k6PfRX7sr+/gfr0EamMp9Q9SgStvvMhc5rVE5wdbAqtThd38DBOooxHjJ29C8ci/rN1z908+I GiXmBS9C6gx7nVroXtHCgCHYM/FPnDZVK/J5/df/NgPJKMrIA286M1u6eOohpvHDhZjlSgIhfSEoY atDtLhl5pkDLb0NAa+wqLo4ROIBzhDWBF60erbGqBrCnbP+Mk3Xt2uLV9GTfyNLRtTIaoJTqE3EBE wMNdBCbNULJT4Ia3uh59iZ1sOEZnJBU7qWLDVFn18r01dn5lJ6+3Mhpxn3YKaAXFhMBVckv/PKFjA zqU8XlEN/vxRSw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSIIt-0007TM-5e; Wed, 15 Feb 2023 08:58:35 -0500 Date: Wed, 15 Feb 2023 15:58:17 +0200 Message-Id: <83o7pvav46.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Chinmay Dalal on Mon, 13 Feb 2023 21:05:12 +0530) References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Chinmay Dalal > Date: Mon, 13 Feb 2023 21:05:12 +0530 > > > From the discussion on github > https://github.com/joaotavora/eglot/discussions/963 > > > The default version would be a hoverable symbol that shows something in the echo area when you mouse hover over it. > > > > Let's continue in the bug tracker discussion initiated by your bug report. > > As far as I understand, inlay hints will show the type of many visible expressions at once, so it's different from the "hover" scenario. > > Yes, so it is impossible to use mouse hover for this as you can only > hover on one thing at once, right? Joćo, could you please look into this? From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: [PATCH v2] Add inlay hints to eglot References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> In-Reply-To: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 14:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Cc: Chinmay Dalal Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167647190819497 (code B ref 61412); Wed, 15 Feb 2023 14:39:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 14:38:28 +0000 Received: from localhost ([127.0.0.1]:58393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSIvR-00054M-O1 for submit@debbugs.gnu.org; Wed, 15 Feb 2023 09:38:27 -0500 Received: from mail-pj1-f51.google.com ([209.85.216.51]:44017) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSHL4-0005kJ-IM for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 07:56:48 -0500 Received: by mail-pj1-f51.google.com with SMTP id d13-20020a17090ad3cd00b0023127b2d602so1816242pjw.2 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 04:56:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=rtNYSk2yclzJb5DHB8JqdpsUb1jzw+/wL5kcbDCFOyA=; b=OItnhbZdWf81AuFimihb7uYlUXZpLVtePw8DM+2K+BVdFv9CDs6p8LAz4ot20LMYEz +ytqx+xzHZN3uhuWi9SnbhP8nDOxB2veTF+uKjzKOesYlIKljSnytqBhEa0ryXegGcRZ 8g2zCQH3WZ68Ue3UJ2dCrGKj5ZMaO0kUzxfOAzMKl0w6cnERrCTbNEIZcArwnNf/mCnC pwRgmukwdUBSIsm4LTbaTvxGcYMyAQGoK+sh4oFYPjSQX73Ru1m+P6U/qNKbZe34hxUi Ybwq9DW31roL3NFCWp+TdeF7LZmzdjL1hCpwp4YAd5OHamyOxvlQdUuJ4xaJ+XNfZ0Nd kg9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rtNYSk2yclzJb5DHB8JqdpsUb1jzw+/wL5kcbDCFOyA=; b=F7uOy434T0ysPogormmpFiOTeuuUIhNIsClmyPZuQIeEjJyP6jw/qBijoDgAEuetqR vH7RYVbny5pLfJ4uZ57iMChagTCQDBvgSqucuOUvMzeuoWM6W19u63I0bOB908aef0Vd 7Babefkx53r+ZLJBr47qZ+kX04mvD5TDvgWMLUrV+BPU47aB9m4Q6mKH44LdSGNx3FmG IbT5R+TVAMFiHT2Vdn8TRqysyxUcXJ0DYA76plA3NZmwt8z+gd8f5RgSBLtsK9glu2NI wjp8ywNxeu/3LXLCYiApvxbX0IAsTYa56/Y/3G2T/CLFzfQCBQPXpJwm7c+P4+6p4+uy bE/Q== X-Gm-Message-State: AO0yUKWgMg6tUNLjGpcHfbi6gVYclLf+8zXN/Xc1XMbCXFr57Bn5CVBW uR0A2Hw2xlQgRUQ2kUiQlhLdntvLEcY= X-Google-Smtp-Source: AK7set9u9VOTPwZ92kPgi8yM7pI4yQuavM8wQw+Ofv67xIonTlfNBzZ6kD/YVsDTolkTMFgnKXQ8WQ== X-Received: by 2002:a17:902:d4c1:b0:19a:9182:40fd with SMTP id o1-20020a170902d4c100b0019a918240fdmr2615873plg.65.1676465799216; Wed, 15 Feb 2023 04:56:39 -0800 (PST) Received: from ganymede.bits-hyderabad.ac.in ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id g1-20020a170902c38100b00198e663a856sm1197488plg.205.2023.02.15.04.56.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Feb 2023 04:56:38 -0800 (PST) From: Chinmay Dalal Date: Wed, 15 Feb 2023 18:26:15 +0530 Message-Id: <20230215125615.69890-1-dalal.chinmay.0101@gmail.com> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This uses different faces based on the "kind" of the hint: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintKind --- lisp/progmodes/eglot.el | 85 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.216.51 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.216.51 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Mailman-Approved-At: Wed, 15 Feb 2023 09:38:24 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This uses different faces based on the "kind" of the hint: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintKind --- lisp/progmodes/eglot.el | 85 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.216.51 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.216.51 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager This uses different faces based on the "kind" of the hint: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintKind --- lisp/progmodes/eglot.el | 85 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 6caf589..101644f 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -404,6 +404,10 @@ This can be useful when using docker to run a language server.") (when (assoc 'flex completion-styles-alist) (add-to-list 'completion-category-defaults '(eglot (styles flex basic)))) +(defcustom eglot-inlay-hints t + "If non-nil, enable inlay hints." + :type 'boolean) + ;;; Constants ;;; @@ -1624,7 +1628,8 @@ under cursor." (const :tag "Highlight links in document" :documentLinkProvider) (const :tag "Decorate color references" :colorProvider) (const :tag "Fold regions of buffer" :foldingRangeProvider) - (const :tag "Execute custom commands" :executeCommandProvider))) + (const :tag "Execute custom commands" :executeCommandProvider) + (const :tag "Inlay hints" :inlayHintProvider))) (defun eglot--server-capable (&rest feats) "Determine if current server is capable of FEATS." @@ -1845,6 +1850,8 @@ If it is activated, also signal textDocument/didOpen." (when (and buffer-file-name (eglot-current-server)) (setq eglot--diagnostics nil) (eglot--managed-mode) + (unless (not eglot-inlay-hints) + (eglot-inlay-mode)) (eglot--signal-textDocument/didOpen)))) (add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode) @@ -3456,6 +3463,82 @@ If NOERROR, return predicate, else erroring function." (revert-buffer) (pop-to-buffer (current-buffer))))) +(defface eglot-inlay-hint-face + '((t (:height 0.8 :inherit shadow))) + "Face used for inlay hint overlays.") + +(defface eglot-type-hint-face + '((t (:inherit eglot-inlay-hint))) + "Face used for type hints.") + +(defface eglot-parameter-hint-face + '((t (:inherit eglot-inlay-hint))) + "Face used for parameter hints.") + +(define-minor-mode eglot-inlay-mode + "Mode for displaying inlay hints." + :lighter " inlay" + (if eglot-inlay-mode + (progn + (add-hook 'after-save-hook 'eglot--update-hints 0 t) + (eglot--update-hints)) + (progn + (remove-hook 'after-save-hook 'eglot--update-hints t) + (eglot--remove-hints)))) + +(defun eglot--inlay-handler (buffer hints) + "Apply vector of inlay hints HINTS on buffer BUFFER." + (seq-doseq (hint hints) + (let* ((position (plist-get hint :position)) + (line (plist-get position :line)) + (character (plist-get position :character)) + (kind (plist-get hint :kind)) + (face (cond ((eq kind 1) + 'eglot-type-hint-face) + ((eq kind 2) + 'eglot-parameter-hint-face) + (t + 'eglot-inlay-hint-face))) + (label (plist-get hint :label))) + (when (stringp label) + (with-current-buffer buffer + (eglot--widening + (goto-char (point-min)) + (forward-line line) + (eglot-move-to-column character) + (let ((overlay (make-overlay (point) (point)))) + (overlay-put overlay 'before-string (propertize + (concat (if (plist-get hint :paddingLeft) " " "") + label + (if (plist-get hint :paddingRight) " " "")) + 'face face)) + (overlay-put overlay 'is-eglot-inlay-hint t)))))))) + +(defun eglot--remove-hints () + "Remove inlay hints from the buffer." + (remove-overlays nil nil 'is-eglot-inlay-hint t)) + +(defun eglot--update-hints () + "Request inlay hints for the current buffer and apply them." + (unless (eglot--server-capable :inlayHintProvider) + (eglot--error "This LSP server isn't an :inlayHintProvider")) + ;; Remove existing hints + (eglot--remove-hints) + (let ((buffer (current-buffer))) + (jsonrpc-async-request + (eglot--current-server-or-lose) + :textDocument/inlayHint + (list + :textDocument (eglot--TextDocumentIdentifier) + :range (list + :start (list :line 0 :character 0) + :end (list + :line (count-lines (point-min) (point-max)) + :character 0))) + :success-fn (lambda (hints) + (eglot--inlay-handler buffer hints)) + :deferred t))) + ;;; Hacks ;;; -- 2.39.1 From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: [PATCH v3] Add inlay hints to eglot References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> In-Reply-To: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 14:39:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167647191019506 (code B ref 61412); Wed, 15 Feb 2023 14:39:03 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 14:38:30 +0000 Received: from localhost ([127.0.0.1]:58395 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSIvU-00054Q-1X for submit@debbugs.gnu.org; Wed, 15 Feb 2023 09:38:29 -0500 Received: from mail-pj1-f42.google.com ([209.85.216.42]:53113) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSHYH-00069f-VP for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 08:10:28 -0500 Received: by mail-pj1-f42.google.com with SMTP id o13so18127620pjg.2 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 05:10:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:date:subject:to:from:message-id:from:to:cc:subject :date:message-id:reply-to; bh=PPLOmQU40NPZSUCpo7yMLnmVqAGYjk/DycGVeoKJ3pI=; b=JMcEYUUn4JHAp2k9y+Uke1HTvthqa2U89+LUSBXWAIfcoO15vZZrAdwzJBLFN9YFbt 74zS7M3iMTCSDCo/QyMlT/a55+TAvSWM2cZfsucZLdLWkAfq8mtDWH728Pa5qFSEflIJ 99RUtXIUKd8bOedTYaCR0fDT5KA+tN1agqmnfZngvd37KGTqMsqeoijwC7MrZrzGJ2Qs 9KriqisQTUIOlbkL1AFMlrTGNGbBTj28PHzYYcghgivYmFoUXN3GCtJLVIlPeSsXntRM uIFwjpQazhbnIOfmcSxAqq7b5LXXfXzyHPW8MstvFNZWKAJQ7lcBWn/hDUGFTHPDZry3 FY9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:date:subject:to:from:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PPLOmQU40NPZSUCpo7yMLnmVqAGYjk/DycGVeoKJ3pI=; b=kJ8LO1KweZlQL4P1kg11VRHYdYOFckuDPAvsv8qU+Yt/YvngwXuBUFTLSgL+VlA/tL Nk2VmplokVBc7DAM1RkwlLkNaNJXD888fNhWl+eK5/+RbvAqlASaVjEiHmNge/lJUi92 TFxk/Zlkg3cUF/+0O4LgE5hqG28ahBRt1J1i3qlo3hJasJB4sWgHJ9Kpv8JkKAdAkugF B5jvEeOJzN+a5hgXHm4FiY58MeTesT5NTc1+0HBKqDhP7DBS8nuwILiG7oLTgcVb+gCm r6NEJJm5IK0U1DQvaPhDXufP/YaXvVeDbpTPrpRzN4G+uG1RtC/8pbDFlx8mZcEoMWMz G6sg== X-Gm-Message-State: AO0yUKWEDzF8uGmEA70QUMf0ONaZ/IpM8N81Bp7xyYQzpW+CR+vAx4DS VuZ/+x1b3l+Gd+AewkGsstWRyY0M7DA= X-Google-Smtp-Source: AK7set+llOXWeKdGPYGaCfiIZPbfIzHIWdI+Nq4JxLqeoX+LOelKBx0A8KS5VdRQaJ0NMpKAtk/BQQ== X-Received: by 2002:a17:903:686:b0:196:5b76:8e6e with SMTP id ki6-20020a170903068600b001965b768e6emr1888275plb.1.1676466619816; Wed, 15 Feb 2023 05:10:19 -0800 (PST) Received: from ganymede ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id y4-20020a170902ed4400b00188c9c11559sm10153320plb.1.2023.02.15.05.10.18 for <61412@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Feb 2023 05:10:19 -0800 (PST) Message-Id: From: Chinmay Dalal Date: Wed, 15 Feb 2023 18:38:28 +0530 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This adds the "-face" suffix to the `:inherit` definitions of the new kind-based faces From 3092a1d3828985857298ead604f44c67737550ef Mon Sep 17 00:00:00 2001 From: Chinmay Dalal Date: Sat, 11 Feb 2023 10:00:20 +0530 Subject: [PATCH] Add inlay hints to eglot Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.216.42 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.216.42 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Mailman-Approved-At: Wed, 15 Feb 2023 09:38:24 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This adds the "-face" suffix to the `:inherit` definitions of the new kind-based faces From 3092a1d3828985857298ead604f44c67737550ef Mon Sep 17 00:00:00 2001 From: Chinmay Dalal Date: Sat, 11 Feb 2023 10:00:20 +0530 Subject: [PATCH] Add inlay hints to eglot Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.216.42 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.216.42 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain This adds the "-face" suffix to the `:inherit` definitions of the new kind-based faces --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Add-inlay-hints-to-eglot.patch >From 3092a1d3828985857298ead604f44c67737550ef Mon Sep 17 00:00:00 2001 From: Chinmay Dalal Date: Sat, 11 Feb 2023 10:00:20 +0530 Subject: [PATCH] Add inlay hints to eglot Hello all, I have improved upon the patch from bug#61066. >From the original email: > - I can't figure out a way to show the hints on a document without causing lags or timeouts from the lsp server This might have been because they were sending an asynchronous request, waiting for the response, collecting the hints and displaying them. I have instead used `jsonrpc-async-request` with a handler function which should remedy this issue. I have tried this with rust-analyzer and faced no lags. The original patch also checked the wrong condition (`cond (eglot--managed-mode`) in `eglot-inlay-mode` and had a superfluous `(run-hooks 'eglot-managed-mode-hook)` (presumably copy-pasted from `define-minor-mode eglot--managed-mode`), I have fixed that. >From a reply to the original email: > AFAIU, inlay hints provide information of the same kind as ElDoc and > in similar manner from the display and UX POV. So I think this > feature should work via ElDoc, not as a separate from-the-scratch > implementation. This can't be done via ElDoc because the purpose of inlay hints is to display variable types and parameter names without moving the cursor to the location. One can already see this information if they move their cursor to the variable or function and wait for the "hover" - inlay hints were added to the spec after this which (IMHO) clearly means something like overlays should be used. A couple of issues at present: 1. I have not implemented "complex" hints (whose `label` is an array of `InlayHintLabelPart` instead of a string) because I don't know what to do when there are multiple labels at the same location. rust-analyzer uses these hints to show a clickable link at the end of a function block, which points to the beginning of the function. 2. I need to save the buffer or disable and re-enable `eglot-inlay-mode` to get hints for the first time after opening a file, even though I call `eglot--update-hints` once in `eglot-inlay-mode`. Regards, Chinmay Dalal --- This uses different faces based on the "kind" of the hint: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#inlayHintKind --- This adds the "-face" suffix to the `:inherit` definitions of the new kind-based faces --- lisp/progmodes/eglot.el | 85 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 6caf589..d3fb329 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -404,6 +404,10 @@ This can be useful when using docker to run a language server.") (when (assoc 'flex completion-styles-alist) (add-to-list 'completion-category-defaults '(eglot (styles flex basic)))) +(defcustom eglot-inlay-hints t + "If non-nil, enable inlay hints." + :type 'boolean) + ;;; Constants ;;; @@ -1624,7 +1628,8 @@ under cursor." (const :tag "Highlight links in document" :documentLinkProvider) (const :tag "Decorate color references" :colorProvider) (const :tag "Fold regions of buffer" :foldingRangeProvider) - (const :tag "Execute custom commands" :executeCommandProvider))) + (const :tag "Execute custom commands" :executeCommandProvider) + (const :tag "Inlay hints" :inlayHintProvider))) (defun eglot--server-capable (&rest feats) "Determine if current server is capable of FEATS." @@ -1845,6 +1850,8 @@ If it is activated, also signal textDocument/didOpen." (when (and buffer-file-name (eglot-current-server)) (setq eglot--diagnostics nil) (eglot--managed-mode) + (unless (not eglot-inlay-hints) + (eglot-inlay-mode)) (eglot--signal-textDocument/didOpen)))) (add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode) @@ -3456,6 +3463,82 @@ If NOERROR, return predicate, else erroring function." (revert-buffer) (pop-to-buffer (current-buffer))))) +(defface eglot-inlay-hint-face + '((t (:height 0.8 :inherit shadow))) + "Face used for inlay hint overlays.") + +(defface eglot-type-hint-face + '((t (:inherit eglot-inlay-hint-face))) + "Face used for type hints.") + +(defface eglot-parameter-hint-face + '((t (:inherit eglot-inlay-hint-face))) + "Face used for parameter hints.") + +(define-minor-mode eglot-inlay-mode + "Mode for displaying inlay hints." + :lighter " inlay" + (if eglot-inlay-mode + (progn + (add-hook 'after-save-hook 'eglot--update-hints 0 t) + (eglot--update-hints)) + (progn + (remove-hook 'after-save-hook 'eglot--update-hints t) + (eglot--remove-hints)))) + +(defun eglot--inlay-handler (buffer hints) + "Apply vector of inlay hints HINTS on buffer BUFFER." + (seq-doseq (hint hints) + (let* ((position (plist-get hint :position)) + (line (plist-get position :line)) + (character (plist-get position :character)) + (kind (plist-get hint :kind)) + (face (cond ((eq kind 1) + 'eglot-type-hint-face) + ((eq kind 2) + 'eglot-parameter-hint-face) + (t + 'eglot-inlay-hint-face))) + (label (plist-get hint :label))) + (when (stringp label) + (with-current-buffer buffer + (eglot--widening + (goto-char (point-min)) + (forward-line line) + (eglot-move-to-column character) + (let ((overlay (make-overlay (point) (point)))) + (overlay-put overlay 'before-string (propertize + (concat (if (plist-get hint :paddingLeft) " " "") + label + (if (plist-get hint :paddingRight) " " "")) + 'face face)) + (overlay-put overlay 'is-eglot-inlay-hint t)))))))) + +(defun eglot--remove-hints () + "Remove inlay hints from the buffer." + (remove-overlays nil nil 'is-eglot-inlay-hint t)) + +(defun eglot--update-hints () + "Request inlay hints for the current buffer and apply them." + (unless (eglot--server-capable :inlayHintProvider) + (eglot--error "This LSP server isn't an :inlayHintProvider")) + ;; Remove existing hints + (eglot--remove-hints) + (let ((buffer (current-buffer))) + (jsonrpc-async-request + (eglot--current-server-or-lose) + :textDocument/inlayHint + (list + :textDocument (eglot--TextDocumentIdentifier) + :range (list + :start (list :line 0 :character 0) + :end (list + :line (count-lines (point-min) (point-max)) + :character 0))) + :success-fn (lambda (hints) + (eglot--inlay-handler buffer hints)) + :deferred t))) + ;;; Hacks ;;; -- 2.39.1 --=-=-=-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Hover github discussion Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 15:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: Chinmay Dalal , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167647353225879 (code B ref 61412); Wed, 15 Feb 2023 15:06:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 15:05:32 +0000 Received: from localhost ([127.0.0.1]:33582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSJLf-0006jL-Id for submit@debbugs.gnu.org; Wed, 15 Feb 2023 10:05:32 -0500 Received: from mail-ot1-f48.google.com ([209.85.210.48]:43657) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSJLd-0006j7-UN for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 10:05:30 -0500 Received: by mail-ot1-f48.google.com with SMTP id bv2-20020a0568300d8200b0068dc615ee44so5760686otb.10 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 07:05:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7XrVNQ8lufeoKHoUcojGlFZnZ5CzdZO75QkRycMdQ+A=; b=MyH7/0XW0MFYQ3ub/6Q/+ZSWHGabez4dWzqTXE0X3jANJQ9vvsxPGUcPlNo2mgWEh4 28O7lQRlyOKXUKNVMyxlfo1+1h6ga/mjSwIStgg1QmNOR1dsTQAS7J+i0K86lpa711s2 kUtr68zKceXklj1hbS8fCggu7LrJm8QzjeN+/AoYJIjpkQDkTRcSBSxDHbpdF1DvSCGk yvx27XhrTH2bvSxNe4lbFEmcgEaY9O99FzuFtmEvtyin3eYzU4EOvRhGYaqNcPOphRZp gRYFJ09G84mYo/tbt+7e0h9EC2RIFENie7d7HToO1YkS64j0SwI8iHKSV0uo0L0RRAGz A1ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7XrVNQ8lufeoKHoUcojGlFZnZ5CzdZO75QkRycMdQ+A=; b=yTY/FJ6vW8oU8MFcHpwpc6QhDGTENiT8h5lMuE2VmvsTXtBZE25mZAbqbgfRBuWh/i 88P7zeMOl87SdNCEdi3skKdWSlEpVCFBF8gJ56Z8rOuXO0DNnngLHjQwRwuIwReungGz fTqLFE4BV/yX22EP6L2GQyLn2aDfXiZEssD5hUQnO+JRNZg1YAY43T5WXTV0aYGQnEHY fHG6P4N3xB83pE07o203e67wLVdkg45z+1qXwPciz+ef7z//1RUhjDlmq/t4Jo1SwTOL dU1Rg/wUyTIYb1opdC39EtkVVvewNbuaHJwFuwgJbrUdxbVvmA2zZwd5Huba66vkXI3H m7dg== X-Gm-Message-State: AO0yUKUmdLdBdgulM91dOMUTsDID/tLwvFonoRNKLGGyh+hkXhVF/KKM IWIWoBvBTQtKyREgDOGxduEGLUJIgUGCNXfVgXo= X-Google-Smtp-Source: AK7set8jWqAwjPDuD5BpbCNLmtNB90guuSNyS1cojlJkCEDB48tMhzMeDQMd49cPydZ1N0HteE/xoordJJAl34W61Es= X-Received: by 2002:a05:6830:6111:b0:690:c81f:d459 with SMTP id ca17-20020a056830611100b00690c81fd459mr144109otb.3.1676473524203; Wed, 15 Feb 2023 07:05:24 -0800 (PST) MIME-Version: 1.0 References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> <83o7pvav46.fsf@gnu.org> In-Reply-To: <83o7pvav46.fsf@gnu.org> From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Wed, 15 Feb 2023 15:05:13 +0000 Message-ID: Content-Type: multipart/alternative; boundary="000000000000e2b6a705f4be68c6" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000e2b6a705f4be68c6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 15, 2023 at 1:58 PM Eli Zaretskii wrote: > > From: Chinmay Dalal > > Date: Mon, 13 Feb 2023 21:05:12 +0530 > > > > > > From the discussion on github > > https://github.com/joaotavora/eglot/discussions/963 > > > > > The default version would be a hoverable symbol that shows something > in the echo area when you mouse hover over it. > > > > > > > Let's continue in the bug tracker discussion initiated by your bug > report. > > > As far as I understand, inlay hints will show the type of many visibl= e > expressions at once, so it's different from the "hover" scenario. > > > > Yes, so it is impossible to use mouse hover for this as you can only > > hover on one thing at once, right? > Yes. I haven't looked at your code, but my expectation is for inlay hints to activate either on a timer after each change, or by the explicit request of the user via a keybinding. It simply doesn't make sense to use mouse hover for this because the hover mechanic is for a single text and inlay hints are about overlaying multiple pieces of information in multiple locations of the buffer. Jo=C3=A3o, could you please look into this? > Hi Eli, this is about the "inlay hints" feature. It's on the radar, but I don't have time in the very near future to handle this. I seem to recall that recently you voiced some opinion in another bug report that this feature could be handled by a separate library instead of a custom Eglot-only implementation. This could be quite reasonable -- or it could be overkill/overengeering. Only a look at the pros and cons of this implementation can tell that, and I haven't had time, sorry. Anyway, if there is indeed a separate discussion for this, then the two discussions should be merged. Be sure to keep me in the loop if you can as I am overwhelmed with other activies in the moment and am not scanning the bug-tracker, or even emacs-devel, for Eglot-related emails at the moment. Jo=C3=A3o --000000000000e2b6a705f4be68c6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Feb 15, 2023 at 1:58 PM Eli Zaret= skii <eliz@gnu.org> wrote:
> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
> Date: Mon, 13 Feb 2023 21:05:12 +0530
>
>
> From the discussion on github
> https://github.com/joaotavora/eglot/discussi= ons/963
>
> > The default version would be a hoverable symbol that shows someth= ing in the echo area when you mouse hover over it.
>
>
> > Let's continue in the bug tracker discussion initiated by you= r bug report.
> > As far as I understand, inlay hints will show the type of many vi= sible expressions at once, so it's different from the "hover"= scenario.
>
> Yes, so it is impossible to use mouse hover for this as you can only > hover on one thing at once, right?

Yes.=C2=A0 I haven't=C2=A0 looked at your code, but my expectation is = for inlay hints to
activate either on a timer after each change, = or by the explicit request of
the user via a keybinding.

It simply doesn't make sense to use mouse hover for th= is because the
hover mechanic is for a single text and inlay hint= s are about overlaying
multiple pieces of information in multiple= locations of the buffer.

Jo=C3=A3o, could you please look into this?

Hi Eli, this is about the "i= nlay hints" feature.=C2=A0

It's on th= e radar, but I don't have time in the very near future
to han= dle this.

I seem to recall that recently you voice= d some opinion in another
bug report that this feature could be h= andled by a separate library
instead of a custom Eglot-only imple= mentation.=C2=A0 This could be=C2=A0
quite reasonable -- or it co= uld=C2=A0 be overkill/overengeering.=C2=A0 Only a look=C2=A0
at t= he pros and cons of this implementation can tell that, and I haven't
had time, sorry.

Anyway, if there is indee= d a separate discussion for this, then the=C2=A0
two discussions = should be merged.=C2=A0 Be sure to keep me in the loop
if you can= as I am overwhelmed with other activies=C2=A0in the moment=C2=A0
and am not scanning the bug-tracker, or even emacs-devel, for=C2=A0
<= div>Eglot-related emails at the moment.

Jo=C3=A3o<= /div>
--000000000000e2b6a705f4be68c6-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Hover github discussion Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 15:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: dalal.chinmay.0101@gmail.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167647556629501 (code B ref 61412); Wed, 15 Feb 2023 15:40:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 15:39:26 +0000 Received: from localhost ([127.0.0.1]:33657 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSJsT-0007fj-Hn for submit@debbugs.gnu.org; Wed, 15 Feb 2023 10:39:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39084) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSJsN-0007er-HJ for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 10:39:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSJsI-00033a-7S; Wed, 15 Feb 2023 10:39:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=y/Ke9etgjRTYnnt/O3XwAXH1RvKi32kMbPH4kg7GrtQ=; b=Vi3ZggrAolWj8U6tZzrF GBbz3Gv7gg/IoBZ2vjoHBvVxFdEPQV2T1riq61qznoAmlAmpKIEdKToMZXXAK4cYb5lvNclLa783A a8fpUbRbIjPEWoBLQLH3AiFvcEc/JzjZTDswhzMUUck41YK82cvlssVMfNhakoasiuumyDIfucPXZ SEOEE8zwUcdCnoR/36C5NqBNztn3v7m7Fh7zmIbKUkR7U+Q82LUYL7k6f6wGFtP4lyU99W4C/PigS C4UDW0L/Oh2FbVPVw6Jryp2SHm26abqjtzg3WkavHWSDWT5PffZkWvkw9bclhrwvH46W7HnJ36VQp SiVZK2PUhs4ZXg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSJsH-0004QN-IF; Wed, 15 Feb 2023 10:39:13 -0500 Date: Wed, 15 Feb 2023 17:38:54 +0200 Message-Id: <837cwjaqgh.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= on Wed, 15 Feb 2023 15:05:13 +0000) References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> <83o7pvav46.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: João TÔvora > Date: Wed, 15 Feb 2023 15:05:13 +0000 > Cc: Chinmay Dalal , 61412@debbugs.gnu.org > > Yes. I haven't looked at your code, but my expectation is for inlay hints to > activate either on a timer after each change, or by the explicit request of > the user via a keybinding. > > It simply doesn't make sense to use mouse hover for this because the > hover mechanic is for a single text and inlay hints are about overlaying > multiple pieces of information in multiple locations of the buffer. > > João, could you please look into this? > > Hi Eli, this is about the "inlay hints" feature. > > It's on the radar, but I don't have time in the very near future > to handle this. That's okay, as long as this is not forgotten. > I seem to recall that recently you voiced some opinion in another > bug report that this feature could be handled by a separate library > instead of a custom Eglot-only implementation. This could be > quite reasonable -- or it could be overkill/overengeering. Only a look > at the pros and cons of this implementation can tell that, and I haven't > had time, sorry. AFAIR, you and others considered my proposal (to use this via ElDoc) as not the best idea, for various technical reasons. So I no longer insist on my proposal. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 17:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Cc: joaotavora@gmail.com Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167648346812943 (code B ref 61412); Wed, 15 Feb 2023 17:52:01 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 17:51:08 +0000 Received: from localhost ([127.0.0.1]:33872 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSLvr-0003Ma-19 for submit@debbugs.gnu.org; Wed, 15 Feb 2023 12:51:07 -0500 Received: from mail-pl1-f178.google.com ([209.85.214.178]:37702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSKjd-0001D3-2v for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 11:34:21 -0500 Received: by mail-pl1-f178.google.com with SMTP id m2so20763455plg.4 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 08:34:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:subject:cc:to:from:in-reply-to:message-id:from:to:cc:subject :date:message-id:reply-to; bh=5D7zCOb+Nu0nMUQfRJxabpEc67BPdJ9c+/Hrs3293vQ=; b=CkAmYVS5ZRd5D9w/pov6cvPZc3ooWzgn2n1dELA53HYsqFmLc+p6uQO/7TduyLuEf/ /NOpWBWdKkA+AR+NKnOV5sV9Sks6ZVaelQ456ArieBaa6IVv0CZtjjckDK1nEP/ByHOs J/ny60iCEymArj7Ho3B1RfR3FurkbMMcw1VD8KMIfEkRrVCDajI3/NJ/4cWVVedNSMmY phRgsL1gIXRNSEpUPrcBeJEAe8EtDKyVJ4VLJygcMPMXbsSowdRzXBDiK0K1YcIxnocV dNEFJPsE2Cg4xwwi5Xi0GmwhoyVO48TmoDEYoqAVno15J4a1qqN5c6dJamkC8VxwPVOA aaOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=date:subject:cc:to:from:in-reply-to:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=5D7zCOb+Nu0nMUQfRJxabpEc67BPdJ9c+/Hrs3293vQ=; b=n1WtAj32CnMJtz2Tdm9+oqthxfFpOf04iz6+rjuLzoxo3qQL4No6KnOHfTaOr7HfHt ds0+2EikyONf6auUrKfIqubvaunl6c16rbqGv5cXaTA9u/mya6sW8HLxUHxQeXf/W3j9 or99iDJ40n2KnJgeVHZDrmmKuFKQBHS0U5QChi28ok0Pc++XMBVoAq+HtHF7jlxFmtfx 7t1aBSAI5uCvG63m5bst8zcWn/9XI3joqPh69HWLqhJkqRlCyoRqX+pXHtHJrWcjgrrp B8fIgYO1dp95nUMyMfCIiJataDsHhUgwB+Z5HmUTnz9M4NPShBE4Meosvza3PU6gCAyW 3JJg== X-Gm-Message-State: AO0yUKWKYtCr1ruqiXO10gTs9HKbFis5AhZXykYR0zBVlY6G8YVVv/Wd gY5fmXAOXUAKw5oY5i5NUWM= X-Google-Smtp-Source: AK7set+kqSdH7pgvOxKgNPvjdIQqsrAFWydajv3GBhPZIbFXAb8+PQ6rmjrCWc7bfwBpX18+DMwDww== X-Received: by 2002:a17:90b:1b11:b0:233:e0d8:9b81 with SMTP id nu17-20020a17090b1b1100b00233e0d89b81mr3503914pjb.20.1676478855157; Wed, 15 Feb 2023 08:34:15 -0800 (PST) Received: from ganymede ([115.244.45.193]) by smtp.gmail.com with ESMTPSA id gx11-20020a17090b124b00b002309279baf8sm1660042pjb.43.2023.02.15.08.34.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Feb 2023 08:34:14 -0800 (PST) Message-Id: In-Reply-To: CALDnm50kZFT_rRUss9ZR4vU6P_xTm7hAfKQJw8PSQi8SOdkGDw@mail.gmail.com From: Chinmay Dalal Date: Wed, 15 Feb 2023 21:54:57 +0530 X-Spam-Score: 0.3 (/) X-Mailman-Approved-At: Wed, 15 Feb 2023 12:51:02 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) > Yes. I haven't looked at your code, but my expectation is for inlay hints to > activate either on a timer after each change, or by the explicit request of > the user via a keybinding. My code updates inlay hints on every save (`after-save-hook`). Regarding keybinding, on the github discussion someone suggested that vscode shows them while a key combination is held and hides them when they are released, but I was told emacs can't do this. Regarding timer, personally I find it annoying when lsp-mode starts showing overlays when I'm not done typing a line, which is why I chose after-save-hook. For me it would be best if they were updated every time I pressed enter, but I don't know how to implement that. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 18:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal Cc: joaotavora@gmail.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167648459314836 (code B ref 61412); Wed, 15 Feb 2023 18:10:01 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 18:09:53 +0000 Received: from localhost ([127.0.0.1]:33909 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSME5-0003rE-G2 for submit@debbugs.gnu.org; Wed, 15 Feb 2023 13:09:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56678) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSME4-0003qu-7N for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 13:09:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSMDx-0007w6-C7; Wed, 15 Feb 2023 13:09:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=hdK9bkzHpiftjwXO8ckbVSRYdppEH0x1u0odgRas2D4=; b=hQQC/M3iC0+w ZWlnFGkLqgQYfufZFPZkA0DBVpup/Qo18yKqslz8SiPj4JJ9WkCMsHMGjh3t0F1/nw2/2HgXzeIFs IGJGrAZkCU3VIc49WL+Y9zXOFmKIE8ns4DadBhWI+6FC0+3xFdWEmyYeoUt+RffpmHJc0pZ/NDfLR MNkBvZrc7PcbkrLpCrdKsmRxVtkLVqFqFmuDFfN3yp4XlXXC57GycCUHTHWJyxxo1yyPD0ir9/Pve wcxiaHolNURHQOjT3heXQiQxH0SbnZ589lIf+yrP5yq5yWVdMuQiqVmwXDC2eKQtHqRJaOUj2CkKE YgnoMoEMlAfBMWv2qwSYXw==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSMDw-0005tR-3e; Wed, 15 Feb 2023 13:09:45 -0500 Date: Wed, 15 Feb 2023 20:09:27 +0200 Message-Id: <83sff6ajhk.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Chinmay Dalal on Wed, 15 Feb 2023 21:54:57 +0530) References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: joaotavora@gmail.com > From: Chinmay Dalal > Date: Wed, 15 Feb 2023 21:54:57 +0530 > > Regarding keybinding, on the github discussion someone suggested that > vscode shows them while a key combination is held and hides them when > they are released, but I was told emacs can't do this. Not only can we not do this, it is also not our style. If we want to show hints, we either show tooltips, or display a message in the echo area. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 19:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal Cc: Eli Zaretskii , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.16764877176110 (code B ref 61412); Wed, 15 Feb 2023 19:02:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 19:01:57 +0000 Received: from localhost ([127.0.0.1]:34031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSN2S-0001aU-KU for submit@debbugs.gnu.org; Wed, 15 Feb 2023 14:01:56 -0500 Received: from mail-oa1-f48.google.com ([209.85.160.48]:35421) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSN2P-0001aF-N5 for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 14:01:55 -0500 Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-169ba826189so24153921fac.2 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 11:01:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=W+NJ+tmsVnPxnPTepalVdUcz2T9GfE0k/yhGNBjxNlE=; b=k1W/KxyEa+nwCkHPWf/pNXw5vDtGoeocZtOUIxndCK9ZogO2XzNz5+0bPet/tSFVmL zI7+GwX9030mYUbgIjXTp/XPPzNKtA3i0hTCg91/XMDPnjVsANP5ype3RcdkclcVHr1b CDm8ZSf1tUXwALiXt++6m4QlUr87WuiH3ExmUKMTJe6zdmMYXTj03ZGCRscOEhsB+j9U RHxuwzN2YZ0h4/I2z7wMjLRXv0qNyUGNROT/xdmZr/GS9PNfvcDGAXxpKOGmsXGuv55i kWTbAPBbAg/4i/gM8yqIJxOhHKe0ClK5DbSHiuUIJnbTav6x+gO5QI5Zd27v/DvF6XzQ U//A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=W+NJ+tmsVnPxnPTepalVdUcz2T9GfE0k/yhGNBjxNlE=; b=6TwHddL7suBkKSU/xQs1BRlSjDiLZlseoezuoOJY0My6rAvCu3W/BZvWYMueFWb0Wc dkdCSWFGxOWU1+DbDNuT1/lqOpKuFORhiMFmQsO0zhUTH4f0Xm/5S60UgB1QgaHC2K+w bK5oQJiLrzHDUvIjTMjtJ9H4KN9SEG44UcjxCQ33ojeS19PSdaweN4UJGmNu0AarF7PV y9Wa9WK9e/xDwpTlDfGNuHWVn6fCUWV4TatyuRmkOHhq8rwGCmWUU3/9XQL3PtjizUD9 y0Yeukfx3V8LwBNsS3cZ/XVn47VpI5uu7679Fou/exEh+GJlRnT4juUjkw3EBkgRKZYu zjOA== X-Gm-Message-State: AO0yUKVI4GfsRmX5Mh4G4szy9xTCascpmht0hzn9C11Tl5CGxspwjZzI G5qo7vi6jq7CGH8rflAocI6C2hzWPq0VByRHsWk= X-Google-Smtp-Source: AK7set9o8hdwQUdgdqsZoceoNqYzDEsYuPbBjrvgoLCG15kKpkXKO8LFjZg9lYcLs4ggCrRyjmmfyMTVWYdz36tahqY= X-Received: by 2002:a05:6870:4608:b0:163:cd38:813e with SMTP id z8-20020a056870460800b00163cd38813emr300294oao.215.1676487707901; Wed, 15 Feb 2023 11:01:47 -0800 (PST) MIME-Version: 1.0 References: <83sff6ajhk.fsf@gnu.org> In-Reply-To: From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Wed, 15 Feb 2023 19:01:37 +0000 Message-ID: Content-Type: multipart/alternative; boundary="0000000000004cc1a605f4c1b650" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000004cc1a605f4c1b650 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 15, 2023 at 6:56 PM Chinmay Dalal wrote: > > Eli Zaretskii writes: > > >> Cc: joaotavora@gmail.com > >> From: Chinmay Dalal > >> Date: Wed, 15 Feb 2023 21:54:57 +0530 > >> > >> Regarding keybinding, on the github discussion someone suggested that > >> vscode shows them while a key combination is held and hides them when > >> they are released, but I was told emacs can't do this. > > > > Not only can we not do this, it is also not our style. If we want to > > show hints, we either show tooltips, or display a message in the echo > > area. > > Tooltips and echo area can't be used as inlay hints are for showing > types of multiple variables/expressions and names of parameters at once. > > See the attached screenshots for an example (this is from my > implementation in this patch) > Yes, I was going to state the same thing. Hopefully your screenshots illustrate why ElDoc, at least using its its display methods available at the moment, is not the best fit for this. This is a very useful feature if done correctly, and I'm leaning towards your approach of doing this completely in eglot.el, so your code is an excellent start. But the activation and other details have to be carefully considered. I will try to look into this soon. Do you have a FSF copyright assignment, Chinmay? Jo=C3=A3o --0000000000004cc1a605f4c1b650 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Feb 15, 2023 at 6:56 PM Chinmay D= alal <dalal.chinmay.0101= @gmail.com> wrote:

Eli Zaretskii <eliz@gn= u.org> writes:

>> Cc: joao= tavora@gmail.com
>> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
>> Date: Wed, 15 Feb 2023 21:54:57 +0530
>>
>> Regarding keybinding, on the github discussion someone suggested t= hat
>> vscode shows them while a key combination is held and hides them w= hen
>> they are released, but I was told emacs can't do this.
>
> Not only can we not do this, it is also not our style.=C2=A0 If we wan= t to
> show hints, we either show tooltips, or display a message in the echo<= br> > area.

Tooltips and echo area can't be used as inlay hints are for showing
types of multiple variables/expressions and names of parameters at once.
See the attached screenshots for an example (this is from my
implementation in this patch)

Yes, I was goi= ng to state the same thing. Hopefully your
= screenshots illustrate why ElDoc, at least using its=C2=A0
its display methods available at the moment, is not
<= div class=3D"gmail_quote">the best fit for this.

Thi= s is a very useful feature if done correctly, and I'm
leaning= towards your approach of doing this completely=C2=A0
in eglot.el= , so your code is an excellent start.

But the= activation and other details have to be carefully=C2=A0
consider= ed.=C2=A0 I will try to look into this soon.

Do you have a FSF copyright assignment, Chinmay?

= Jo=C3=A3o
--0000000000004cc1a605f4c1b650-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 19:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal Cc: joaotavora@gmail.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.16764901089857 (code B ref 61412); Wed, 15 Feb 2023 19:42:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 19:41:48 +0000 Received: from localhost ([127.0.0.1]:34079 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSNf2-0002Yu-Gf for submit@debbugs.gnu.org; Wed, 15 Feb 2023 14:41:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58094) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSNf0-0002Yh-Ko for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 14:41:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSNev-0001JB-7X; Wed, 15 Feb 2023 14:41:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=fZaVIcayNfqWtSMIWPGPfZTZ3g/sqGUHhEClixle5Qk=; b=kgFQSHPKVYnu GZ4JZpwf0ACfLekcYmUv0CuELAETdlq6hV8sIula2NzRxzwrAwCHKq29J6rIg2kyDbKHZqEuDojWg kOgZrKjinAAVn8n+HnfQtouGXlg1QqqqI7Q5xCWbrbz8QdNPLZYuV3D9t4C2KEU44OL0Pqg5mCYlW PBVk7Rhve8ZgaIQp62+vozTs7N9CyHa44yBbADkE85WAoBh/L8mHEzCv3ujjlNjod8fhNz15xYpfJ pjR5coB2eE4QVp92RHNpW3bo2bK/NNRDFJhwkaCad8yYBzOlj7eNKREqT/5K+mK2LH1rqrka94vUI +wOdD001RFlgBfAp9kVZAg==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSNeu-0007Tm-GT; Wed, 15 Feb 2023 14:41:40 -0500 Date: Wed, 15 Feb 2023 21:41:23 +0200 Message-Id: <83edqqaf8c.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Chinmay Dalal on Thu, 16 Feb 2023 00:18:41 +0530) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Chinmay Dalal > Cc: 61412@debbugs.gnu.org, joaotavora@gmail.com > Date: Thu, 16 Feb 2023 00:18:41 +0530 > > > Not only can we not do this, it is also not our style. If we want to > > show hints, we either show tooltips, or display a message in the echo > > area. > > Tooltips and echo area can't be used as inlay hints are for showing > types of multiple variables/expressions and names of parameters at once. > > See the attached screenshots for an example (this is from my > implementation in this patch) I'm not surer I understand what you are showing here (so feel free to say a few more words), but if I should guess, I'd say use overlay strings. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 23:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: joaotavora@gmail.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167650531015589 (code B ref 61412); Wed, 15 Feb 2023 23:56:02 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 23:55:10 +0000 Received: from localhost ([127.0.0.1]:34459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSRcD-00043M-U7 for submit@debbugs.gnu.org; Wed, 15 Feb 2023 18:55:10 -0500 Received: from mail-pf1-f178.google.com ([209.85.210.178]:41867) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSMxH-0001QI-9r for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 13:56:35 -0500 Received: by mail-pf1-f178.google.com with SMTP id 16so13369757pfo.8 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 10:56:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:in-reply-to:date:subject:cc:to:from:message-id:from:to :cc:subject:date:message-id:reply-to; bh=Xhq1qvc9e6IhKzQM3qB/nX1/IjyXSxWucfhyIELEBE8=; b=n2P3N7xd/Pn7HJjU5vYzanXAQkCO/EzOlQy6EGwdpQIAewtEQOOU6/vUAikt29l7yk Ud+TaKTQcjUKTwthiT2y4uu8WIDtdkXifFari9afs9XLdHKKxDHx0FQ9pcyWBLKf9WD8 iu3Y6NGzmN6IRkRK3NzJzTU3FnEepj1k/u8Y26CsuQXG914YwrSuiGZIRfbQU5FUVIFd 6v68vxd3nfK7tD/R7p7srP0ZPs8UyT6dGjQOz9//vAY4BHpB5KcTpBNp8c3DMpnPsrY5 s/rI0/4kSyfMdp/J4Z2bZ9n8hyP4vUtTlJozYyddacPjgAu7GTFCdrXuO1i89Maim4+I Sifw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:in-reply-to:date:subject:cc:to:from:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Xhq1qvc9e6IhKzQM3qB/nX1/IjyXSxWucfhyIELEBE8=; b=RyR9tBRJvkuQLruEl3kqfbuvpfEJAFmfmPLcksJCOXlZAP5aJbYOyL8jkV4yg+bDR8 ZyAAZNUkx75blojCroVpOVHqoCMDbofW3qq0s6EKa9rq9jyvGZIHHMRCBRlgYfG02m4O xNaGSU435dp+0DMkcQ2hW2tFC0qidrOnVYdLV2uW+d/TFF/j1B6g+ZqlCgn7eKeM4I/x Jyc0R3PKyZkn++OSPQ9FV3M68Svc4dzkkx4uexRFFuFw114tLc77Vzx3AyfSLWMTdNlO CxyNOKtSbSpFqS8roVrm3xc4PnqD9KTXRtUEs5j49fseU0R7BEpp9YWNhLRoZq5iFaaM wuKA== X-Gm-Message-State: AO0yUKXJuZQD9Vb8orFPHXBxEH/L42YKPFrwHIAS3wyrKEeXlpNDI5G6 1WHpVoNFFCZSw0/y1WBY2RI= X-Google-Smtp-Source: AK7set8t9SjQoIiPtvY4rO9z5qYuoZe9ySzZrJRgnoFPuUIw1V48xWHrGYb/LU40AF+ER/LhJ+f3xQ== X-Received: by 2002:a62:1c05:0:b0:5a8:b2bc:768a with SMTP id c5-20020a621c05000000b005a8b2bc768amr2598935pfc.4.1676487388760; Wed, 15 Feb 2023 10:56:28 -0800 (PST) Received: from ganymede ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id x7-20020aa79187000000b005a84ef49c63sm11976803pfa.214.2023.02.15.10.56.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Feb 2023 10:56:28 -0800 (PST) Message-Id: From: Chinmay Dalal Date: Thu, 16 Feb 2023 00:18:41 +0530 In-reply-to: <83sff6ajhk.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Mailman-Approved-At: Wed, 15 Feb 2023 18:55:09 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> Cc: joaotavora@gmail.com >> From: Chinmay Dalal >> Date: Wed, 15 Feb 2023 21:54:57 +0530 >> >> Regarding keybinding, on the github discussion someone suggested that >> vscode shows them while a key combination is held and hides them when >> they are released, but I was told emacs can't do this. > > Not only can we not do this, it is also not our style. If we want to > show hints, we either show tooltips, or display a message in the echo > area. Tooltips and echo area can't be used as inlay hints are for showing types of multiple variables/expressions and names of parameters at once. See the attached screenshots for an example (this is from my implementation in this patch) C++ (clangd): --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=clangd_inlay.png Content-Transfer-Encoding: base64 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 2VWP3dcSYsNb1YMEOTk5HA5HyEgiNzf33r17wgtnMpnVHUniIvYnIk7i1iYEanUpWSzWqlWrqFRq 1YU+Go02adIkVVXV79+/BwcHV7V1paSkiJWcmzdvnj17ls8DhMiIvZX4YDAY48aNo9FoL168uHWr 0lw40UoCjVvippDBx7dv344dO1ZcXOzm5kalUoXvSBEvw4cPr41H7+vXr9ffOgKQlZRyouc056Cp hBNXCo1KmEmO88e9CL30YM3+8kLxrbE3eV6kJbefPWTruHmEgzIalUoM1lcP/yv42qn5R7YWlIih X5UUhGnE4XCm7V1Vo3uDy08iI+KjBjm4LfWdatHcWEVecfkQ/5l9R2w8d2jLxTCxt4NEWl5OWubI jNV0Gg3AjP1r331OrzGLyDiaWS338+/etiLMaxmzfO+N06tO7cnM4t+7W1hYyGQy6XS6mpqaWKrm liPEAQ9JnSCtoyZASgquXBOW4El9A0aRSB7R3vLHT5g+Ay1M0asnPNxhaAgADAb8hsDaGuMmoB7H hMROeHh4y5YtmzVrtmzZsrS0tBcvXjx79uz9+/cirx4Q9g93GxUXDodDrJ/UV+KaEPsTEcZJ1Seq U8qqiyEEvXr1UlZWLi0t/ffffwW6as3JyUlLS9PX13dzc+vQocOVK1fu3btXfxtJ7K3Ex8CBA3V0 dPLz80NCQvjKJFqpZcuWvKebeL+qzoRmMBhdunTp0aOHsrIygLS0tN97VFGQ8eXS2KVqZoYtvV1N e3dRMWkOgMqgtx3jpduh9dnBc0vz/iDfvqnfPvX/Z0YbfVO/Lj0HObib6RkCkKIzpvUc4tTKuvvS CWL0ZN3IlLOYDBqdQqFsHz+/35q/ajSQOBzOf9HXTj244dfZc5HPJDM9Q1V5pSC/aTP6jNhwLmTb paN12hlYI43f8mtH/k3Ucjrm5v6b1cQ/5CEpM+W/aGGaOuqVAE1t37LtUt8p3AC+TBZr/80zq07t Sa0mLCyHw8nKytLS0uLb+isy3HKIKNsk9afBhhfVTetyOBCyfCzGTW41KmZuXZJa7ufW++59Q8Ud ImnMX5TwXPV5y2+TsXU7tm6HoQFcXODni2bNYNEKc2fzR3+SKN++fVu9evXgwYPbtWunr6+vr6/v 6emZkZFx/PjxpCTBu+SbOL/WExED/Vu3blVnPuXm5q5atapdu3a9e/fW19cfPHhwjx496m8jNWgr tW3blgjufvjwYSGLUbU/3VTVLrp48eLTp0/FZcvVBr6Ap41GVlJKzO1pGgIAACAASURBVD8HY/45 qGzczNjDwXKUl5KBjoZlC6elk27+vaHBq29iG/JfpCUvDNu+MGx7S10Drw4uUz19jbWa2Ri32jh6 9tgdDd6vChwF1f9HuP3ysV62nc31jHrbdVniO3nJMf5ZA4GwOewj9y4dv39luHPvBQMnmOroqysq rxo2/W+vkf+c3r/zygleD28cCBvF1WZzYKO1fE+bzlN7DAbwOef75N1BQlJyW/5VxvsaI1nxYmfS etmQqUTMXwAsNjvk9rmVJ/fU6GciNTVVS0vL2NiYQqHU/72bmJhwi61nUSQEIlpHrNIKVcqQkxGY oLr7zJIyAFQGncqgs8v5p0UZ8oJzceH82CtCoVb6D9RoY2rg0h7A+6vR2W9SATBLy2qQUFb6h0gS 2qbJ3R7aAKfthcH1WUSpPJ5oZQ5is8etW+J09dagcF0dVLd/RkybegGe91Vdme3t4OEBAOHhePWa P5dY3nJKKkIOIfw0jodBXx99+2DdBojJJahYyMrK2rVrl5qamp2dnZWVFXEsfsaMGcHBwfHxv+Th ul/oibKzs1VVVV1dXR89elSdgcThcOLj458+fWptbd2nT59mzZoNHjzY09PzypUrd+/eFdlGaqBW UlJSGjlyJIB79+49e1ZtDLekpKSNG2sOacBgMJydnXv06EHEXEpPT79w4UIj20VNhNz3GfG7TyUe vTLo8nZlQ13zgW5Ry4NLcwRM29de54o8KpA4bz6mbjh3aN+N04/+CTPV0R/RtU9AyAaBjq3ZP34q fNa4tZG5p40TgLOPbhE+4kp/HO4nHCRURU7Q/ZLyUuG5ura2G9TJA8C+6+F8wUwJ8ooKvP+ZGbMm VFFWftGgiU/eJdbSMQMAJot18Na5I3cvjXLxmj9wvJGWnoaiyrqRf9uZth66aR43WXFpKQApOkOK zihj8vcY8jJ10Lm1b3kRUFdU3ue/lLgeu2PJ1zxh+5m5La9UF18RFs2NH60NI67ZHHbo3Ysr/gt+ +ymtNnlfv37dvn17eXn5li1b1n8WycbGhltsPYsiIRDRmxCbySzJygWgZm4ocEJItaWBwIzF3yp+ oGrmRlW/VRd0k5fywooJDD6vO80crRwCxzoEjlUxbU7c4bDYRHiH6iTkClDwUQznkvnhqltq9fMo bDaII9FmLSFw4tPYGDP/wsy/YGsjTtm4h1X4AuZ0aI8Z0zFjOmpxXLipwGQiOwcATE0FT0yaGIut Lja7IvRQi2rq6tIZfr7w84WiYqVcor1li1awtYFVWwFZ8vNx9jwAUKkwNRXtaRqUrKysa9eubdiw Yc6cOXFxcVQq1c/Pr7rZfd65RiqVqq6urq6uTiQmhq1Vd9BRKBRxufqpJY3/RMSpIYG7B/X19Q0N DWVk+MeaERERycnJ0tLSU6dOrc5HOQGHw3ny5MmKFSuCg4MzMzOVlJR8fHxWrlzJVbFE7TQajW8m WHjL16mVaoRCoYwcOVJRUfHz58/VhQQl5KzNkSEbG5uVK1f6+PgoKSllZGTs3r175cqV8fHxv71p pGHZQrejpbZNq6pfleYVvP7vGgAKjapmbigwe+11rsijgqr4+Pjs2LFj1apVLVq0qDExlUodNWrU v//+u2zZsubNmwtPbGPcqnMrG/uWAvrVnML8Q7fPA6BRqW30Bfer3IMxfP7WXCzbrxo2fdWw6eZ6 RsSdchaTcJDdRt9U4HKKRXMBuonFZhPhgCwNBOfytO3s7+nr7+krxL/cq4z3wzYHEj/sQ9NXCqxI COUs5t4b4eb/85qye0Xat08A1p+t5AD6c27F3i2BrWSpL/iV1bPlRSB48hIdFQ0AO6+cuPwkUnhi Fpv9KecbACvDljRBXVarZsarh/+1evhfnVv91NSJ6e/PPbrN4XCORl5u89eA0dsW1dI0AsA99Uq4 D60nRCG5ubnJyclCklEoFD8/v+3bty9fvpy73EQiENF9rX5JeANATkvNqHtHvq9k1ZX1u9oJzPXt RcWbMx/Qje8rOU3V5s62wist+PiVzWQC0LYx572vadWSuMj78NPp0Ke4xOokpFApFn6exPXnuGoD e4kOd9O/jo6wZM8SAEBZGb16Cvi2b2+MHYOxYyCmc3sVfP4M4jBDW8tK91u3rrhIa8Bji+KH8Oil qQHnLvxfqarCqZM46yJmwTUE1UWjoZsrALDZeF15Hki0tzx3NkIO4NBBKAhyv6v5I0hXcX2PscrJ yRFuu7jx6USDwWBoampqaFSKHlZQUHDo0CE2m62srMwb/5SACNHAO8pXV1dfuXLlypUrCXfVxOGZ qudWVVVVhe/fUFVV7dKlS/v27YWcTaLT6e3bt+/SpYsqETKriT0REXiqako6nR4YGBgYGKirq8v3 FYvF2r17d3Z2trq6+sSJE2s0SzgcTlxcXFBQ0J49ewgbiXtaiXBpQKFQ+ARQV1fnk1OEVqolXbt2 tbS0ZLFY+/btq84RE9FK2traVW22bt269evXj7sdv6CgQElJKTMzMzg4eMWKFU+ePPnt7SKCzssm e4dv8D69UUpRwD84ERUQPFYQH3XSuaKNCviYPXv2iRMnpk6dGhgYGBsbS/j0F8LGjRsPHjw4ZcqU xYsXx8TE8EYlrsqmMbPvrjhwb8VBJVkB/aqOasXPuDr3AOnfP5ezmAA6tqikPW1NKrRn8qef2jM2 +SUAXVWN3rb8+kJTSZV7RoWP+6/jAeioCMhFp9H6d3QFwGKzn34QttpwIfbushO7ACjIyJ2es1kE 39nlLObuaydbTuvbZ9U0vuCnT3+sWQ1z7s2XS1tF3b2d4LF+PVu+roxx7edt3w1AUmbKnEObapPl QVICADUFZb/OAjT18K695/YfM7f/GC3lSl3inMOb2s4cOGxz4OvMD3WSkOs3qGdPQQODumBhYUH4 wLx3757wbm3FihVhYWH+/v6LFi16/PhxVSVCwkV06+jdxQpb3GXtDN6FIJq0VLdNAZwfPtf5ogm9 v/qAuLAa5034zyFgyMu67whkldWwr4Ndzsx8kABAzdzI8Ef/q2LS3LR3FwBFX7Ozkj5wE786cU2g hBQatdPiSVrtzAB8e/72e2ID7CJL+hE+ZdRIwSsGBP/9mBANnMtvqzjYY+QIACgqQvQDccpWXg5i 0qJFi5+jfENDuLsBwLdvEDr30OS4fr3iYsli8E40yspi7Rqw6uWimp/w0xUXixeCV2fT6Vi4oGLN 7c5d8J2OEO0tP44FABoNgfPAYFT6yqkTBngDQE4u3tbrZVGp1ICAgFGjRo0aNSogIKA+oWl0dXWD goKWL1/OF6tbVlaWKLbqri3CnbSqqipxAgQA0cUXFRUVFxfjxxZqFRUVIqIOF3t7eyGSKCgoLFy4 cNiwYePHjx83blx1ycaNGzd+/Phhw4YtXLhQYHxxyT4RMQVYNWW7du2oVCqLxRIY5jwvL2/nzp3l 5eVmZmY+Pj7VPTsvHA4nNjY2KCho48aN3LhP2dnZhIHEN6/p4ODAl12EVqoNurq6AwcOBHD+/Hkh O+mJVpKVleWTU01NbdCgQT179uSax2/evNm4cWNQUFBcXNwfYhcRZEY/A0Cl07oE+VMZlSYLDLq2 b+3nCaAkOy/r9QeB2eukc6sbFTDkZNy3B3Jq1xtPmjSJe02sagpJTKFQeP/H9fT0evfmH7Lzcudl LAA6jbZ1/DwpeqV+tYd1p3HdvQF8z899kSa4Xy1jlt99GQvA0qBFb7sK7WmmZzjI0Q3Ap5xvvBnD H1Topt2TF1sa/NRNMgzpA9OCmD/GSLJSlRaB992o0DI7Jy0k3AkQMGj0HRMWEGtTF2PvZhfW4BAy 6GTw2Ue3CfEO/7WKShGlby9jll+K4191OffoNnHxV+9hhPc5AgUZubAZa0qriRdUz5avEybazTeP nQOAyWIN3xJYS8cSwdcqNPWWcXP5rF83K/u/+44AUFBSdO1ZJU2dlJlCxHGqK3FxcZ8+fQLg5eVF 7PUVmeHDhxMXly5dEp6S959FVVW1b9++9an390Z0rwyvT163nearZKArp6U2+MqOlBuPcpLTpJTk DV07SKsoPlizv0uQP4BOCyeotjR48u8JIlfu+4w3Z2+37OdCoVF77V+adif2e+J7KUU5I3cHuqz0 y7AI60kDhdcbv/tU8842ADz3LH5z5hazqKRlf1eatBSAhP1neQOBf7ganXLjoWH3jrwSMuRl9bva KRvpAWAzmXcX7hC5BYRx/QZmzYSaGrp3w8njiH4A4nTTsWMVu7MIIqNw9Ro83KGkhNBDiLqPt8mQ YqB1a9hYV6TZsRPVBGMRnYOHQYzGNm3A5QgUFaOXZ0Xc0rBjqF/QG2GMHY2CH8+Sn4+D4gjYfO4C xo1F8+bQ1MB/x3AvEu/fQ0kZLs6Qk8Op0xgxTGwSRkbh1m24ukBLC6dO4M5dpKdDWRmdOkFXBwCK i7FpC3+Zor3lsGPw9YWKMrz6wqkTHsTg0yfIyMDC4ucevD17UT+HY1paWnp6FeHS9fT0tLS0iP5a BNLT07OystTU1KZMmRIeHk6MaA0NDYcMGQIgMzOzqi8dbhYfH5+wsDAFBQViZJOQkEAk+PTpU0pK iqGh4ZgxY44cOfL8+XMajdahQwcHBwcWi1XdFq8WLVpwR+rW1tZEeB++NFQqlYjyBIDY+V31eEzj PBGVSrW1tbW3ty8pKZGRkdHW1k5JSQGQnZ395MkTGxub0aNHh4aGvnjxgk6nW1lZ+fr6Anj48GF1 yympqakhISHjx493dXVNS0urGhBWIBwOh3fvO4fDefTokYuLS8+ePfPy8h4+fAigY8eO7du352t5 EVqpRuh0+rhx44ioTVeuXBGSMjs7Oy4uztbW1tfXlzDzWCyWsbGxr68vlUpNS0vjtayaoCONRiDh 4DnLUX1lVJXMB7npd7VLj3xSkPmVLiutadlCt2PFEDB227Gqx4C51F7nChwVSKsoGrk7MORkXh6N aDfeu0aBFRUVhXzkg0ql8pnlwgeaOy4fm9rDV11ReWTXvj3adbqeEJP27ZOctIytiQV3x9Tq8L1V j9Nw2XjuMOGy+WTAhqOREYWlxX6dPYlYotsvHeP1EXfozoW53mNNtJvrqmrErjt2KS7yVcZ7FXnF njad1RSU5h/ZunXcPABrR860aG689sxBIlfEk6hzj257dXBppqYVv+HEhcd3kz+nqysqe7TrZKCh A6CwtHheaBUtUwUOhzNy64IHq0Mtmhv3sXNe5DORWE2qP28+ph6Lihji5EmjUs/M3Xz1afSzlCQl WYW+7bvKScvsvR4+y2tk1Vz1b3leZvcbzQ3KlFuYv/5cJU29ftQsRVl5AG8/pfbr2K1fR/6dSgQH b51N5tkIF/Ek6r/oaz6O7qrySvdXH4p4cv9FWrI0g2Fn0tqpVYWyWHp8Z76YgkGx2ezQ0NCAgABZ Wdnx48fX5uSkQIjsAEpLS0+cOCE8Md9/k7q6umiV/gnUy4eMZtsWXkfXSKtUam4Oi33Vf3XK9Zgh N4OVDHQA5Kd/OewwgptAVkNlwOmNysaV/BiymcyICUFqZoYOgWMBnPObl36vWjfWnZdPsRrLHwsy Mybh3JB5fF08Q162R/BCg67tqxZSXlRyffo/7yNqNXQQBUcHbNsCvnj2Pr4/z+sTSEtj7ZqKTVlV CTmEDZuEeUu7chl6unidhEGD6ybevDkYNpT/ZmwsJkyu54BbAMuWVKx18JL5ET0qLygfOggba5SV wY5/VwYAjBuLGdMBYMIkPIip9JWFBfbswo/Z+grYbMyeC339anOJICEABXls3giBaxf5+ZgZgBhB tYj2ltu0xvatqLxn6SeHj2Dd+np6XFRUVFy7di2xV4rD4cyZMye/Hi7CW7ZsOW3aNGm+3zxQXFy8 ZcuWDx8+VM1ibW09adIk3s1aRUVFq1at4kYpNTIymjVrFoNn9YzD4ezcuXPixIl0On316tWELcFL ixYtAgICiOuCggLuNR/r16/nHs5Zv369wMAyjflEjo6OxLGfCxcuXLhwAYCiomJAQEDVnWnp6ekb N24s4ol2NXv2bFNT09DQ0MjIioneAQMGeHh4MJnMDRs2VA0aWxuUlJQWLFigzPNvxeFwduzYMXny ZL6WF6GVlJSU1q5dix8HhwDk5eXNm1dx8tvQ0DAwMJCoUeA6z5o1a7hmj4KCwt9//8018rkUFhZu 3LixOu8UfxRaVma9QpbLaQreQfp07+moZbuF9yS117lCRgXKhrq10e/h4eHe3j974549e0ZERAiR 7cGDB7xLr9bW1kJiQANob9r6XOBW4kRKVTZfODIrZL3w1cXNY+dM78WvPe++jPVYPplvcG9rYnF1 8S41hUq6icVmD90090Ls3eebw421mgFI+frReMpPXaMkK39qzkZu2BxecgrzfdYH3Ejg1zLtTVs/ /CcMwLITu3itIDM9w5g1R5TlFDgcjvfamdxln3qipax2b8XBlrqVDpKVs5iD1s1qo2+6ath0AB7L J11/VknO+rf8nilLiFUmXvhaD8C9FQe59owQqkooKyV9ZMYaYvtiVTacOzTn8CYxrjwbGRm9efOG Tqd//frVzMxMtKAC8+fPX7lyJYA9e/ZMnDhReOIbN2506/bTVpw2bdqOHQ2zQvDrU6+TzUVfst6c uUWTlpJVU5ZSkCvLK8iIenpz1oa024/ZTNa7iPtyWmry2mrssvJn+05zczGLSpJO36RJMeQ0VBjy cmX5RemRT27O3JARFa/b0bJ5FxsAr09dz0utdg479XZswcev8trq0soKoCD3febzkPO3525hV9mY xy5nJp2+lf0mhS4rI6UoR5eVYZWUZb9NSwq/eeOvtV+eNKRzj/R03LgJBQUoKUFOruKU6n8n8a3y TCqLhYgrSE6GvDzk5CAjAyYTn7/gXiSWr0B4Te75RwyHoiK+f8eJ/+omXtR9fPoMTU0QM22pqTh2 HMtX/PQCJ0ZcXWBhwX8zvwChRyrd8e4PXR2wWAjeI6AQWxs42APA+QtIrzzi+fYNlyIgLQU1VcjL Iy8PDx9h0RJE3ReWSwQJAZSV48IlpKVBTg7ycpCWRkkJ3ibjzBkELsSPjUn8iPaWv35F+GkUF0NB AbJyYDBQXo70dNy+g+UrcLrm0A01UlZWVlZWZmRkVF5efv78+cTEep3By8rKio2NlZGRkZeXl5aW ZrPZ379/f/z48f79+z9+/Cgwy6dPn9LS0rS0tBQUFMrKyl69erV3717eOKc5OTkJCQkqKirEMD0l JeXIkSMJCQm9evWiUqmRkZG5VVz2ZWdnKyoqNmvWrLCwMCwsrLrVMEIhEYVUFzq2MZ/o9evXampq ampq7969I1Y5ysrKHjx4AEBRUVFWVpbNZmdkZNy+ffvIkSMlJZVOiTg5OampqT179oxrM7x+/drQ 0FBHR6dt27aPHz/mS18bSktL4+PjVVVVVVRUKBRKSkrK4cOHX7x4UbXlRWglaWlpd3d3AJQflJWV XbtWsRdaRUWlS5cuvN/ywVs70UosFktBQYGI/Zqdnf3w4cN9+/Z9/cofhPHPpPDz98SjEcyiEilF eYacLE2Kzipn5qV8/HD1we15W14dE7Y6R1B7nStkVFBL/R4VFWVtbd2sWbOcnJx169bt3btXuGyR kZEdOnTQ0dH5/PnzggULzp07Jzx9ZvbXfTdOF5YWK8kpKMjIEY7X3n1OP/f4zpTdK2oTEudK/P30 7591VTVV5ZVAwdtPqf9GHJ+8e0Upk197fsz+djQyQoYhpamkqigrn1OYdzPh0bh/l1yJv89ksc7E 3NRR1dBV1SwtL9ty8aeuKWWWH7l7KflzmoKMnKKsnIyUdHFZyYu05AO3zozctjAhVYCW0VPTnOA+ EMCdF4/vvHjMvf89P/dF6tshnT0pFEpvuy5nHt4ifEXUk8LS4rB7l6ToUlrKaoqy8rnFBTcSYsZu X3zz+cPOFjbdrewBHL5z4d3nSjq3/i3v1cHF1oRfU+cWFfC2HoCx3foT62zCqSohk8U6HnXlZVqy oqy8gqycrJQMk8VM//7lUlzklOBaSVgncnJytLS0OnbsKC8vb2RkdOrUqbqW0K5du9DQUDqdXlxc 7OPjU2MA7rt377Zt21ZfX59Y/9+2bZtY4k3/ljSt+AMkTY5BA6DLPykrgDNnkVZbVy0kJCQkJCQk JH84SkpKCQkJBgYGAFauXLlw4cLa5zU2Nr579y7hp3HGjBlbttS835LA3d396tWrbDZbXV39946C TULSYBw6iIT4mv8chJ2SJyEhISEhISEh4cPBwaG4uJjYRRwcHFxL57HOzs6ZmZlErlOnTtUmCC+X sLAwDodz9+5dUUX+IxDdRRUJCQkJCQkJCQkJiWg8ePBg0KBBhJedCRMmvHjxYsSIEUJiuLVs2fLA gQO3b98m/HFfu3Zt+PDhtT8N1apVq8GDBwM4cqTKwQESEhISEhISEhISEhKJY29v/+HDB84PsrKy +vXrVzXZzZs3OTxs3bqVwRfwQyg0Go2IifT9+3eBcSxISEhISEhISEhISEgkj6Ki4j///FNYWEhY PoRnGj641hERcaGuVSxYsIDIPmfOHDFITEJCQkJCQkJCQkJC0nCoqqpOnjz59OnT3IATvPj7+2/a tKlTp04ilNytWzcWi8XhcF6/fl01AAMJCQkJCQkJCQkJCcmfgry8fFhYGIvFcnJykrQsvwCkR28S EhISkgaBAtgCfYGOQB12x0uOxUC0pGUgISEhaSDat2//+PHjmtP98ZDWEQkJCQmJMNQBlzp6OGUA zkAfoFkDydQw9ANqCCZKQkJCQvK7Q5e0ACQkJCQkTRQGsBkYC8hIWhISEhISEpLGgbSOSEhISP4I PIG/ATdyzwAJifhot+SACLmeLhsjdklISEjEBWkdkZD86fQFlkhaBpKGhgLYkHYRCQkJCQlJTZDW EQnJH01f4CRQbVxuEpL6UQbcBs4DryQtSW14KmkBSEhISEgkDmkd1RlTU9Pk5GRJS0FCIgZcSdOI pHZwgHNAWV2yZAHXgStAfkMJ9ZtQnU7R1dXNzc0tKipqfJF+G5pCGxprKrfW1dBWkkv+mnPndZoE JSEhIaklpHVUW1RUVPz9/UePHt2iRQtjY+MPHz5IWiISkvriQJpGJDXBAW4CG4DLkpbkN6NGnbJm zRpfX99Lly5t3br19u3bEhDx10eCbUijUgfamQ13aG2grkTcOfn4NWkdkZD8EtTJR+ufy4QJE96/ f79ixYoWLVoAsLe3l7REJCRi4D1wHciUtBgkjUYWsAZgAJRa/1EBN9I0Eje10SkdO3aUlpb29va+ devW5cuX9fX1G13MXx5JtaGijNS+0Z7zeztwTSMSEpJfCPKMbg1ISUkdOnTI19eX+JiSkrJv376Q kJDU1FTJCkZCIi72AWOBy8AiSUtC0tC8BIolLcMfTu11ire39/Dhw/v370+lUgFkZ2d7e3vfuXOn sSX+lWmENqzqs45CQfBIzw7GOgAKS8tPPn5981Xqu685BaVlHE5FGtJnHQlJU4a0joRBp9PDw8P7 9u0LoKioaMGCBTt27CgvL5e0XCQk4mQf0AzoD5RIWhISkt8bEXSKhYXFrl27nJ2dAZSUlHh6epIG Ul1p0Dasah11MWu+bagbgPTs/IkhVzJzCqrmIq0jEpKmjNh21lEo1H7u07cvf3Jub+m5vaXbg+IH 955Hp//ahxrWrFlDqLHMzExHR8fNmzc3NdOISqd13xQwKfn88PsHmzlaSVoc8UGjYUUQHsfg8gV0 aC9pacQBhYquPlhxHic+4hoLFwsR/BQT10LLQNKSYTnQ74dpRKfTDx48WFxcnJyc7OLiIlnBSCTO 6NGjOYJo3ry5pEUTD9bW1sQTrV+/vsbEkZGRHA6npET0aQQRdEpiYmK3bt22bNkCQEZG5vTp0wYG ku80+GnaPXYjt6Frq4rCl56NEmgakZCQNHHEZh39Pf7ApGFbTAys6XQpOl3KRL/daJ/VS/46S6H8 qkebXFxcZs2aBSA7O9vV1fXZs2eSlkgAht07mvu406SllAx0u6ycJmlxxIdzF/TrC2lpNG+O+YGS lqbeyCtj/Q0sOgGHPlDTAYUKaTmYWGHwbBx4BdchkpUuBSj9cd27d+9Ro0bJyMiYmJhs375dkmKR kPxeiKxTWCzWjBkzduzYAUBVVfXgwYMNJ6SINPkeuzHb0EBNCUBJOTM25VPD1UJCQtJwiMdnXXur nt2dRgIoZ5bejDrMYrNcHPzkZJXs2nq6Og69eT9ULLU0JlQqlZhnAjB+/PikpCTJylMdsuoq3Gs5 DRUhKX8x1NV4rtUlJ4c4oFCw5CTauQAAsxwPLyE9CTLysPNAsxaQlkVgKLI+4eltyYpJoKWlxb3W 1taWoCQkTYFnz56tXLmS+7FPnz7t2rWToDy/LvXXKTNnznR0dLS1tXV1dR04cOCpU6fELWM9+EV6 7MZpQzaHA4BOpdKp1HIWuyGqICEhaVDEYx25OY0iLtb8OyQ67gyAG1EhGxbeB+BsP+RXtI769u1r ZWUF4MqVK+Hh4ZIWp1oyHySwy5lUBh1Ayq3HkhZHfDyKRXk5GAwAiIyUtDT1w9kHtm4A8C0Dcz2Q 8rLiPpWG8WswOABUGqbvwHhLcE/sSo47d+6UlZVJSUkBuHyZdFT2pxMXFxcXF8f9qKOjQ1pHolF/ nVJeXu7v7x8dHQ1gwYIFTcs6+kV67MZpw5TveR2Ndek0qrOZ/o3ElIaogoSEpEERj3Vk2KwNgLyC 7w+enCXuJL6Nzsn7oqKkpafdQixVNDJTpkwhLoKCgiQriXBy3qWf7DPdwKV9cVZu0qkbkhZHfKSk YOhwODkhOxsXLkpamvrhMbLiYv3Yn6YRADYLe+agjSPaOMGwNVraIUny9m1SUpK9vb2np+fXr19D Q3+9eQ0SkqaJWHTKgwcPrl+/7ubmZmNj4+Dg8ODBAzFJV29+wrX1swAAIABJREFUnR67EdrwZmKK T3tzAEPtLUjriITkV0Q81pGMjAKArJxMDs/k99jZJhQKhc3+9ZaVVVVV3dzcACQmJkZFRUlanBr4 9iL52wsBcdZ/eV69xqvXkhZCHLSyB4CvaXh8lf8rDgeX96ONEwBY2DcF6whAfHx8fHy8pKUgIfl9 EKNO2bNnD1GUj49PE7KO8Cv12A3dhjHvPiZ/yTHVUrEz0mmhpfr2S7bYqyAhIWlQxOMygUKhAGBz KhlCJaWFxSUFpWVFYqmiMenWrRuNRgPQtLYukPyK0BlQ1gCAlETBCVJ/3FfXaySRmjA0Gm306NG3 b9+WkZGRtCwkJGJDjDrl4sWLpaWlANzd3cUg2R9JQ7chm8MJuf+cuO5u0fQcDJKQkNSEZBzKUSiU Tnbei6efCd2cefEA63Rw4fblT0b7rFZXETZAnDfl2KWDnEsHOfJyFe4HjPWtpo7Yvj0o/tSuvEsH OZsWiWcSiBu2/Pbt27XM4n1649T0K5PeXRD4ra2/79T0K1PTrzTvYlP1Wyqd1srXo8+RlWPij09J jZj07sLQu/u6rp6u2lJwr9pqsAdRGt+fgq5GjRLW+CdQQlAoJp5OPfctHR13dEpqxMQ353yv7XJc MF6hmZaAxCLTzwsJ8QL+fmnfAAzpiouyaoJwlhbzp6yCkZHRrVu3SkpKPn78OHPmTPEKiKbhtZlG ow0bNuzly5cHDhzo2rUrdxtS/Tl27BjxOCoqFf2GlZXV9u3b4+Pj8/LyOByOwMljCoXi7e195syZ zMxMFotVWFj49OnTtWvXCncETKFQvLy8Tp8+TeQqKSl5//79+fPnZ86cKcTFRZ3qotPpiYmJxBMN GDCA71sqlRofH098O2zYsJpbpyGpaxvy+suWlpZesGDB8+fPy8rK8vLyrl+/7unpKbyuOrX8+vXr iVZ68uQJcWfWrFl8v/8LFwT35wR1klAEnVIdhYWFjx49AmBpaamgoCAkZUP3G2Lssbld0PDhw4Wn fPv2LYfD+fDhg4gyA6hLG4pM1NsM4qKFlmpDlE9CQtKgiGdnXZ2QkZZfMO2kXdufikRaSs7EwNrE wLpv92nrgoc/iDtbYyEUCnX0oFWDes0hlq3EC3F2FsDjxw2+00laRbHPoSBtWwvuHZoUQ8WkuYpJ cws/z+gVe57uPd3QMgiHISfTI3iRgcvPEBZ0WWl1C2N1C+O2o71uztrw9hwZmrAedOhRY5Lg4GAi 9JCOjs7GjRtjYmLu37/f4II1FlQq1cfHZ8mSJRYWFf8F2dnZDRRYjEqlrlq1as6cGvoNeXn5kydP 8g525eTkrKysrKys/P39x44de/z4cYG5Tpw40atXL+4daWlpIyMjIyOjPn36/PPPP9u2bVu0aFFR URFfrjrVxWQyZ82adfHiRQCrV68+d+4ck8nkfjts2DDCa8LDhw/DwsJq2SwNgWhtSCAtLX358mVX V1fiI4PB6N69e/fu3adOnbpz506BdYnQ8vWhrhKKV6c8evSoc+fOFArF0tJSyMaw37vfqCe1bEOR KS6r+K+kUX/VoCYkJH8yoltH6xdEtm7pxHvHRL/dpYOVnG5durV7e8hkvoxzJocRphGLxYxNiEj7 +EpWRtHW0l1H00RWRmG+/3+zV3V5nRwjvPYpw7f26e4P4Mv3lMS30Y42/aSkZEV+Fj5MTU0BZGRk 5ObmiqvM6ui+KYAwjVilZSm3HuW+y6DLSut2tNRoY0ql05yWTs5+k5Z6p5JC/Z74LnbrUe5HQzd7 jdYmNVb0+r9rmdGCw2vIqiu3HlYxsCjJyuP71n37PMI0YjOZKTce5bxLZ8jJ6He1UzbSo8tKu2+b V/Q5KzMmoS4PXQ1JbxC89+fHrs4wNxNDsYKIjIx0cnKqMZm7u/v169cbSAZIy2LGLriPrDEhn6hO Tk7iHeVIymszhULp37//8uXLLS0tiTu5ubkbNmzYsmVLXh7/71AsbN261d/fH0BKSkp0dHS/fv1k ZQX0G2FhYcSwvry8/NKlS0lJSfLy8h4eHi1atJCTkzty5MjHjx/v3r1bNRcxQGcymREREYmJiTQa TU9Pz97e3tjYmMFg/P3335cvX+b7RYlQ16VLl65everh4WFmZjZ+/Phdu3YR96WlpVesWEFcz5w5 kyNRF4iitSHBwoULXV1db9y48eTJE2VlZS8vL2L9Z+vWrXfv3n3x4kXVuura8tevXycWqbS1tceP Hw8gJiaG79W8fl3tKZq6SihenfLyZYVzFxMTEyEj+4buNxqzxxY7tWxDkWmnr0lcpHxv8FEECQmJ 2GnstaOO1n0cbLwA5OR9Xriux7u0p8R9Go0+0W9TX7dpdBpj6vDtfy3rIKyQdr37dPd/mxK39+is hNd3OBxO2NZPYrSOCD2XktLgrmbULYyN3B0A5KV+PDt4Tn76F+5Xbcf06xI0FYDt9CF81tHXhLdf E95yP8ppqtbGOnoZVq135p57lxAXzw+e43PwYORmb+ThCKAg8+v5oYHZb9OI+xQa1X7OaFt/XwqN 6rxq2rHuk2oUoGYSE5HIczhHQ/0X0rV1RtcES8NhWisjpKCgQE5OjvejeGVpfK/NFAqlb9++y5Yt s7a2Ju7k5uZu3rx58+bNOTk5DVRp7969/f394+LiZs2adefOHQ6H8+nTp6rWUZ8+fby8vACkpaV5 eHi8evWKuE+j0VasWDFv3jwajbZjx462bdsKzPX58+cePXo8ffqU99t169YFBARUFUm0ugD8/fff T58+pdFoS5cuDQ0NJX4S06dPJzatHT16VLKrBCI/FwA6nT5t2rT+/fufPVuxiWDWrFlnz551dXWl 0+kBAQFjxowRWFedWj4iIiIiIgKAtbU1YR1FRkYuXLiwNk9XVwkhbp3CLUdHR0dIsobuN37pHruW bSgaijJSMz0qxjBXX3wQe/kkJCQNjejW0e0HR18lV8y49HSZKCujmJv/9UbUId40iW+j+XK5dx5N XGzZP4FrGgFgsZi7jvzVytShpXH7lsbtDZtbpqQ/r67qYf2XRMWG/7PTj8ksE1n+6pCSklJUVATw 5cuXGhPXE92OFVPmD9cf5jWNACQcOGsxpIdGG1MdOwsKlcJhN9Q0cGu/nsaenQBkv027v3Iv37fm gz2Iixsz1nFNIwAcFvvBmgM67Vvr2bdVMzfSbNuC12Br+oSEhNTmAMD79+8bpHr7XpgXCkVVAIg6 A6f+wpMfOHBg7ty5xHV2djZ3TPaL4unpuXz58g4dKkYP+fn5W7du3bhxY1ZWVoPWu2TJkvDwcD8/ v7IyYf3G6NGjiYtRo0Zxh/UAWCzW/PnzO3Xq5OzsbGlpaWtry2tScnNNmDCBb4AO4Pv372KsC8CL Fy+Cg4OnTJmira0dEBCwdOlSVVXV+fPnAygpKQkMDBTygI2AyM8FgEajHThwgPdHnp+fP3To0Pfv 38vIyPTr149KpfK6QhWt5etDXSUUu07hlqMuNO7qb9ZviJdatmGdkKLT9FQUnFo0G+HYRkdZHsCR By8TP4r/F0hCQtLQiG4dXbixg3vducMgWRnF7zmZe48JmKXjxaJFJwDZuZ8ePuU/8MrhsK/c3dfS uD2A1i06CbGO6HSp9btH8JpGizf2ptMYxaVimBvjTrY1wrY6hnzFvHXRFwHjwogJy6UU5RtUACUD XadlkwGwmazr0/9hFpfyJdBt3xpAXuqnjPv8ww5wOIlHI/Ts2wLQtmv9a1lHe/bskUzFFCpGLMKI JaBQUFyA9WOR/qZG62j+/PmJiYkdOnTIyckJCQnJzMxsHGEbgtDQUK63gMLCwm3btq1bt66h7SIC KSmpESNG8JpGvXv3ZjAYfHPqnTp1AvD+/ftbt27xlcDhcPbt2+fs7AzA0dGRd2RP5Pr06ZPwo/x8 iFYXwZIlS4YNG6akpBQQELBz586AgADC7cSmTZsaYd1bOPV5LgCHDx/mu/Pp06erV696eXmpqqoa GRm9e/eOr666tnw9qZOEYtcp3HLk5YUpiKbZb0yYMMHQ0JDvJnex2sfHp1WrVtz7MjIyxAZILoQx o6qqyt1EysuBAweSk2sV36KWbVh7NBRkrwf4cj+WlDN33Y7neq4jISH5tWjUnXVUKk1NRRfAh/Tn AvfEf0ivOL6ioSbMWdb569v5HIW//RArLiGlpKSIC+ETzGLh+8sKDdp2tFfG/Xi+BaK81E8NWjuF RnXbOochJwPg0YbDX5+9qZpATksNQM77dIEl5LyrcMsjr63WkJL+LiiqITAUHXsCQGoilg5EaiJM rWvMx2azQ0JCQv7P3n3HNXWucQB/AmEPAQuCE3FUCoLruqtoHThRW/VatdorVFu8VtQqilattljF hVhRqWJdvbVA1Qqo1IriXuAoikVwIQ5AkDCTnPvHq6cxhBAyCOjv+/GP4znnPe9zTl6SvHnXjh06 j1D3nJ2d2caWLVuCgoKePXtWY1mHhYXJjcu/dEn+fcPQ0NDJyYmI0tLSFF6E39+wYcOKqa5fV/zO ppB6efGePn26bNmyVatWWVhYbN68mQ3yyc7ODg4OVjEAHdHwvkhmTIisGzdusB50jo6OfN1DvSev OdUjJB18pvDX4a+sUO1835g0aZKSMZ/Dhw9nz1A5a2vroKCgivuPHz+uYu1IxWeott9T0qMvp+l1 6B8AqK9GZ1MxNnq5hklpqUjhCXydx9hI2SCilL+OaTcwWRKJhG2w5Sl06v7Jy3lp94iouXd3n32r Wgx5X9eNRbI6/necY6f3iCj74l+Xf1Awf5TQ5OXHhqRE8QRiktKXHzCGuvmAeaM4NqcfLrysGp34 laZ3+Welo7fS2LFjp0+fzs+yXQOOHav6fYNfZ0nuF2sev9/E5J8Z2PlUIpHidzYt5iUrNDSUfRf0 8fFh5wQFBb148UL1GHRBw/sqKytja9HI4e9LdqiYek9eQ9WKkHTwmcJfh78yVJfWn2FRmXjHqetH bmTmiUqI6KNO7/76+YjWDTCdN0CdVKNtR1XOvs3/+Kf8zGd5ipsytIL/2FM4mZV2cRLp4WnLR/y6 ytSuXsMubRt2actJpI8u3siIP50Wc6z4ma6GpxORvUerTjPHE1G5qDhhxkpOIlVw0qtXofnAbl88 OKy7YGretGnT+EYMJSIiIv7+W0s9Bl08iIikEoqYT/tC6G39UfHbb78NDg729PSsV6/e4sWLv/zy y9WrV4eGhupokjpZDx5U/b7Bv/P4+Pio3hah3roC6uUlq6ysbO7cufwCoykpKZGRkWpcR7s0vK/K kij8dNDFig5VqlaEpIPPFP46CitptVzPnj0r7pw8efL27duJaOLEibt27VKS/O+//27RosXdu3dV eQNXQuvPsKisfO3Ri0QkNDQY19k1YEAnB2vz0I/7jdwYw8/uDQB1hR7WO9JcuQ4mY+CJRCKxWCwU Cu3saqK3WG7a3V8GTe+17As2NZzA0IBVk7otmHJjV+zZFdvKRZWsIqoBoZlJ/7BAA6EhESUt3lRw 75HWs6jlJkyYoMqM3gkJCVqrHRFR/lP6ZgylHNfaBeuguLi4+Pj4jz76aOnSpa6urjY2NsuWLZs1 axabyFv702rJqIG+sjUvOjr64cOHjRo1IqKwsDDZyQCgltD6Zwp/Hd1N8PjG090zFEukO8/csDYz 9uvl6VjPYpC7S/RlxV1MAaDWqpO1I53iOC43N9fBwYF94agBhQ+fxP5niV3rZq1G9mkx5H0bl8ZE ZGAkbPvpcKd/vbd/zLzSAi1/Zey+0I/lcif+VOrPVTcKPb/zIP33k0pOeHQeY0+r8vBvmtOHnuqw 2bOu4Dhu3759UVFR48aN+/rrr1u3bs3GWAcEBISEhGzYsKEme0lVJi0tbd++fUpOSEpKqg15jRo1 in+nmj59+rZt22pPBakmn2FtpvXPFP46upiR7y2h62cYc/m2Xy9PImrf1AG1I4A6p0ZrR1X2suA7 JOh3HcN79+45ODg0b95cIBCoGgnHkZJuHip0/8hNu3vu+8hz30fWa96o+YCu7pOGWzd1fMe9ZY8l U4/NWl2N6KvStM+/3CcNI6Kip3mJ89YrO/XVvT//+/65lZFajEHvFPbu0K27N1A1kiWVSnfv3v2/ //1vwoQJCxcubNGiRf369YODg2fPnr1ixYpNmzbJzaBQM/i/95s3b6q4+o0qFL4zaJ6XsbHxypUr +f96enpOnjx527Zt6gWpLTp6hurRS9e7itT5TKmci4sLf1mNQ3tL6foZ5rzq9GFlpnjQIADUZjU6 K0NZOT8YV/HcAybG5q/O1H53MtWxJdItLCxatWqlYhJxSRkRGRgJDYwUVDiNLExVzz0/42Hy5qh9 3v75dx8R0bsf9jOxsVI9uXKmttZ918xm28dmrS5Wuoy3+NWkC0Y1OFfEm6b8Vaf2ylYrNjGTP/Nt IhaLIyMjXV1d/fz8MjMzieidd94JCQn58ccf9RIPP2GAtbW16qn4oQuVzQ6scL96ecmaMWNGixYt iGj//v0shuXLl7OldfRI8/tSnXpPXhbf1GZg8NqnYbt27QIDAwMDA11dXTUOU53PFCXat28ve1lQ g66fYQv7l/Mx5BTq88sMAKinRmtHUqkk9/kjImrWyE3hT3rOjV+ujvosV5+/svPz/Hbr1k3FJMXP 8tiG3bvOFY/WV7STiN5xb+nU2b1B+zYVD5UWFN7ad5SIBIYGdu/Krw6hNq9VM83tbYno+k+/3/vz gvKTOYm06GkeEb3j2lxgqKCo2LZs0m3BlG4LpvDL2oI8cTnlPyMialbJd6ymr/bnVLoaiUAgGDdu XFhY2DfffMP/5PkmKS8vj4iIaN269bRp0+7fv09Eq1at0kskEokkOzubiDw8PBTOMNamTZsVK1as WLFCtvmxvLycTU3u5qb4nU3hN2z18uLZ29svWrSIiEQi0dSpUzds2EBETk5OqiwFK1uiqjW6nW/3 kKtLyNLwvqpFvScvix/qVq9ePdn9Xl5ewcHBwcHB7777roZBklqfKUqwi+Tn5yufvboOvW8UFRU9 fPjw4cOHVbYYZ2dnP3z4kBUwTaj4DNX2YcfWbONipm5X5gAAXajR2hER3Uw/S0R2Nk7/8hwid0gg MBjQa4rsafpy8uTLMTaDBg1SMcmzGy/fYd8d1VfukLm9beNeHRSm6rl02sjo1SNj1hhbmVc8ytYa IqJykeKJcaurzdgBLt49iOj5nQdnlqu0HOrjS6lEZGJj1cqnT8WjrT/8oP0XY9p/Mcasfr2KR+Gl WxeIiOybUId+8ocEAvL+9LXTFFm+fPmePXv8/f0XLVp08eJFtsDLm6e8vHzz5s0tW7YcMmSIwkVC a8bZs2eJyM7Obty4cRWPTpw4cd68efPmzXNwcJDdz77+Ojk5DRki/85mb28/cOBALebFLF26lDXO hISEPH78+LvvvmPjywMCAiqutilHtkRdunSpQYMGys/n8WtoNmnSRMlpmtxXdan35HkPHjwoLy8n os6dO8vu79ixI9vQyrdnNT5TKuPq6soqtCdPnlTeSa8OvW/88ssvjRs3bty4cXR0tPIze/bs2bhx 465du2qSnerPUD3vWJr5tGtJRC9Kyv68id6PAHVPTdeOEpIi2caMyVuaNf6nwcHAwNBv3OrWzf9F ROl3r2Tcv1rDgcm6fPky+2lq+PDhKnYOyTjysjrnMWUkm32OMbIw679xvqRM8XpBWWeuEpGB0PD9 Zf5yXfKa9u703jhvIirJK8i9lanObbzOuqnT+0u/ICKpWJIw/fvyIpVqXDd2HWIb7y/7wqHda7+h Nn6/fbvPPiSiclHx/ZN6+y5bBxx5tRrjV9uoicwzFBjQlO/IvScR0b1UJbWjKVOm8Nu2trbDhg3T TaC1QllZWWxsrB4D2Lx5M9sIDQ2V+8bcr1+/WbNmEVFhYeHRo0dlD/HTam/ZssXd/Z93NlNT08jI yMrWVFEvLyJyc3P77LPPiOjx48chISFElJeX991337Ecq1wQVrZE2dnZjRw5Uvn5vKtXX74zz549 W8nqPWrflxrUe/K8srKyEydOEJG7uztfv2rduvVHH31ERNnZ2Tdu3NA8SDU+UyozYcIEtlHln8lb 9b5RLao/Q/UM8WghNDQgon0Xb5WUYzpvgLqnpuesO3vlwPmUQ509h9jZOG1YevliSuz9RzfNTK06 uA9o2KAlEYkl5T/snF7DUcmRSqW7du2aM2eOmZmZr6/vmjVrqkySn/Hw9v7jrXy8BIYGg7ctuZ94 KSc1w9jK3Ll/V6GZyV974ttN/bBiqmuRB9wnDTO1tX73o35Nend8kHSlMOup0MzE3r0l31ft0oaf paq9vbb/YkzZi5fdEkoLCpPDf5U92uPrz4wszYgoPzOruXf35t7dFV7k5v8Os/FOzL3jF9N/P9Fi aC+TepYfHlh/7/iF3Ft3DU2M7Nu2cvqXGzvn/Oqd5TrtWv2fyVT4ahKzFy8osnYt/V61xH00dCq1 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 TkSuQmCC --=-=-= Content-Type: text/plain Rust (rust-analyzer): --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=ra_inlay.png Content-Transfer-Encoding: base64 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 Ula9mUymtLQ0S11ZsW3btp49e3p5eQ0bNmzFihUFx1esWOHt7e3j4/PII4888sgjheNZtmxZ8dUr eXl5J0+e7Nixo4icOnXK7DLJ77//fsaMGXXr1n366acLH4+NjV29enXhIz/88IO3t3eDBg2mTJlS +Pjly5d/+OGHwkdWrlz5wgsvODs7P/7448oRk8n02WefFXxZ7jsqt+eee05ZUvrdd9/VjG3sZ//x S++A4Hubtr636S3TVb75+8+vI/+s1KH/r/PNWnvRSdcsnrfacPbIx3s3T+sy0N5GN7HtzQJ2O6NP lzLWyauxw4PzK2dnG3OjrpW4I6fCIs+xsmp1Y3LQH2WoAe/vKXKjuFWBwzGy7pgMDZX6LvJ4D/nw j6K90rPllV9l/gip5yxOdjLglrm3kpYl72+VP86UOOi1NMk25hecys2TX4/cPk4Ribp1zeaxstXL L5I7u3gnv4/aG2uNy5JWs5A7enpERET0739zmWpycnIpJwMA6wQB65WbmWU498+xZb+u7Dul9I/T uZlZGya/Gf7k2/rtB9KvJpqMeXk5uSn/XDnzyx9rRjy3e+6XZmesZKek/zbu5a3P/ufSzsiMBIPJ mJeTnplw7OzBT1au7DNZqXJdXE5axrrxr2166u3orfvSryaa8ky5GVnXTl449MXqlX0nX9hoPiFy 9ejZH+956th361IuXTYZ87IMKdFb9/088oVz63Za/L7KN1ZJTq3adOVwlIgEDOjs37ejRSIsELv3 qPHGPnf6bXewk+C0adO2bduWnZ197dq1N99887YLuyZOnLh3797c3Ny4uLhp06YdPny47GMVcXz5 7xkJBhFp+/gDRXYJLOU7n5uZ9cuoF8+s3Z6ZmFzke5J8KT4vJ1dE0q9cV64sIgX1zstY3KqAVb1f Fy9e/Pzzz0Wkfv36n3322R3dSGFRUVHjx49XEkDLly9v3rx5kRMyMjLuv//+hx56aOPGjfHx8Uaj MTs7Ozo6esWKFT169JgxY0bpeY2dO3cWTBey7E6CKSkpa9asSU9PT09PX7NmTSlzvsonNzf3p59+ EpFevXoVrvGUmpo6f/78devWxcbG5ubm5uXlXb9+fceOHXPnzo2JMb94SpkYVbhRRGJi4ttvv715 8+bLly8bjcbc3NzY2Nh169bNnz+/yH0lJye/++6769evV0ZXzly/fv27775b5LPZxYsX58+ff+TI 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 --=-=-=-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 23:56:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: Eli Zaretskii , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167650531015595 (code B ref 61412); Wed, 15 Feb 2023 23:56:03 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 23:55:10 +0000 Received: from localhost ([127.0.0.1]:34460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSRcE-00043P-2C for submit@debbugs.gnu.org; Wed, 15 Feb 2023 18:55:10 -0500 Received: from mail-pf1-f175.google.com ([209.85.210.175]:46865) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSNL7-00022X-NJ for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 14:21:17 -0500 Received: by mail-pf1-f175.google.com with SMTP id bt14so6582360pfb.13 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 11:21:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:in-reply-to:date:subject:cc :to:from:message-id:from:to:cc:subject:date:message-id:reply-to; bh=ymmhoXvqy+LIRKMzb1h087wCg654OdLtJbDoK/tHYkA=; b=pCyuULhW1hwmL7KvqTzq7/PtYkJTrvS6IRpPEHs5X3hC6l4hhgV5QBJ3QQrPw+U+Hg tezvyWTT75vTL8w4oeb9om8DC0Kr8+6nsnXvwm6Lbemzlk8B/fppMx11OtS5yG936tH+ jGNeqr2unxHUHhLm9seFC2nOSeujqM1WiLi/aiBtaADDN3mf9gejGYgfkAh3Ni/bF35s T08lTK9hx2y7ctKDNe9r+GcltlIBBsEcJuqodjx2GjLXDCiPnVtG2EslXGZwPhrp4OPQ rgIwzhoRu7DWnUL0cQgdRNm+NDM/3ifkffpS285fTeysynq+ABlRH7iXsmqaduXJecVl ieuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:in-reply-to:date:subject:cc :to:from:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ymmhoXvqy+LIRKMzb1h087wCg654OdLtJbDoK/tHYkA=; b=kIBGi5H8LdnH3lOtKog4vXUOGPf6t4230jPVmFV52eJEKHMnYjMNkCTzo7+CWGCVBu Pv5Ggky02p/3xJpCWQyqwOro/TPZhHC6Musr1D6zlb5OcfcDTKnKxI7z2ET4MszyuCqu ezHjaoPkiVR7kTt3Q8HzydXlsOIKAje7tgSWKQdVMK70Qq0NV6zbHYw/OuOKaP29TVc8 8H4fGW4fSrxNt+EbTEIv5kxRmDItlYHHWqYYaR4E/tT2OmcJwmPj4pqP9uwRmzSzRLqZ Nix2RkgGuLYnOnHGr1a7n/AFvZM3GsbIQhggMR2iNnw29c93XGnMfOCNkSLZuKZsy8he 1DaQ== X-Gm-Message-State: AO0yUKXraFD3nF0BBF0pxFz+eovT7GyWfBXTe9tusVkDLvdkf7BNE2B2 z4hM8luq496I3EUN5N0fJvnUxUadYAUpjA== X-Google-Smtp-Source: AK7set8qd/8ddiHEmN+bJy9drgehphz4u+503OFSocGCrRIYtwS8HTx+NBXhDK28ODX7QmD7EC5rLw== X-Received: by 2002:aa7:989a:0:b0:5a8:4883:4213 with SMTP id r26-20020aa7989a000000b005a848834213mr2402458pfl.20.1676488867637; Wed, 15 Feb 2023 11:21:07 -0800 (PST) Received: from ganymede ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id u8-20020aa78388000000b005a852875590sm7359537pfm.113.2023.02.15.11.21.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Feb 2023 11:21:07 -0800 (PST) Message-Id: From: Chinmay Dalal Date: Thu, 16 Feb 2023 00:47:08 +0530 In-reply-to: MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= writes: > But the activation and other details have to be carefully > considered. I will try to look into this soon. I agree, can you also look into https://mail.gnu.org/archive/html/bug-gnu-emacs/2023-02/msg00782.html Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.175 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.175 listed in list.dnswl.org] X-Mailman-Approved-At: Wed, 15 Feb 2023 18:55:09 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= writes: > But the activation and other details have to be carefully > considered. I will try to look into this soon. I agree, can you also look into https://mail.gnu.org/archive/html/bug-gnu-emacs/2023-02/msg00782.html Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.175 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.175 listed in wl.mailspike.net] -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager João TÔvora writes: > But the activation and other details have to be carefully > considered. I will try to look into this soon. I agree, can you also look into https://mail.gnu.org/archive/html/bug-gnu-emacs/2023-02/msg00782.html > Do you have a FSF copyright assignment, Chinmay? I do not have one. Chinmay From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay activation Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 15 Feb 2023 23:56:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: joaotavora@gmail.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167650531015603 (code B ref 61412); Wed, 15 Feb 2023 23:56:03 +0000 Received: (at 61412) by debbugs.gnu.org; 15 Feb 2023 23:55:10 +0000 Received: from localhost ([127.0.0.1]:34462 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSRcE-00043Z-CY for submit@debbugs.gnu.org; Wed, 15 Feb 2023 18:55:10 -0500 Received: from mail-pg1-f177.google.com ([209.85.215.177]:36385) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pSODh-0003rs-AY for 61412@debbugs.gnu.org; Wed, 15 Feb 2023 15:17:38 -0500 Received: by mail-pg1-f177.google.com with SMTP id b22so8099283pgw.3 for <61412@debbugs.gnu.org>; Wed, 15 Feb 2023 12:17:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=autocrypt:content-transfer-encoding:mime-version:message-id :references:in-reply-to:user-agent:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=1dvg4JGRAJsfZdYhenLA3OB87KiM/DAMzd16suT7XVM=; b=OnInzKsFoewspmJ+2ZwekQh8G3W4xOxbIWQmVvM8gsosV80B9OqKbJZbJThfaZjkgo EwZ2xOYuEL8QLkXjpuwzqPD8Lp7zKhU59YpBY5t0d4t6leGsOxk1dJuBuxti+7hBax6n GJTe6EPPTGnqKIYmmLfaW7eDj9HkeWJ8zmErHkvO7xPoL7CPeYuCVRDA8KXAc3zI0yTL C1X0fis8xGFzJN7NkqFezW7jcqz/cQRZicPkTYZOvGmOGLksTV8Sds7zfSkfEM1/N+OZ n7LxSOL/uyef6N4UwU/TtvQ8foqqLz0f9Kz16lw2rNpK46yRDkDYWaX/Egrf6QN6wYAw E0TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=autocrypt:content-transfer-encoding:mime-version:message-id :references:in-reply-to:user-agent:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1dvg4JGRAJsfZdYhenLA3OB87KiM/DAMzd16suT7XVM=; b=XXhI5xhe1DbS/JgAnFe7Hc/V/2CdENp6b71UbGbZn4z4qwx9bgRf93rseEqL551vNh SlF/cjZcNGF1c8SWBcGgDMMxbGefdKoKdaX3upGT7AJwL8C4A7T9bBjtCGTvw1ene1ud JVieTX9f9efFcxxFM0QogfKrzzCupx32erwHZ6CyBgkA+KUqHVNtpSncNJa5rS+Xd2ps +cd40WiBe2KEddyNmAmc9xdgmZU9yhl25qYGBudF2DC2br9E1gSp7oIHdWdsHRT6gk5Q uPN8v/TF8rHXkHEgs6ykJWsh+8SX0yqz4F97PjQyEKjGZ7CDCA+cdbsfWSoKX3h5Wvv2 varA== X-Gm-Message-State: AO0yUKWntztopFL0GVnDDdAp6In0wHY6ZYtXLrYZk2R7ODdPWSOiD5/i vPPUecpmJ5vFcYCugqrTOdw= X-Google-Smtp-Source: AK7set8CvVxeCYsFtlVvIuRmNnrjbbqaaZUxeD1hBCRNYumU0Kwhz3RIDTgAwfW94Z7fzYXQgWUs7A== X-Received: by 2002:aa7:9851:0:b0:5a8:bbe4:1cfa with SMTP id n17-20020aa79851000000b005a8bbe41cfamr2627620pfq.27.1676492251261; Wed, 15 Feb 2023 12:17:31 -0800 (PST) Received: from [127.0.0.1] ([42.106.32.120]) by smtp.gmail.com with ESMTPSA id v9-20020aa78089000000b005906dbf5f80sm11982478pff.163.2023.02.15.12.17.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 Feb 2023 12:17:30 -0800 (PST) Date: Thu, 16 Feb 2023 01:47:24 +0530 From: Chinmay Dalal User-Agent: K-9 Mail for Android In-Reply-To: <83edqqaf8c.fsf@gnu.org> References: <83edqqaf8c.fsf@gnu.org> Message-ID: <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Autocrypt: addr=dalal.chinmay.0101@gmail.com; keydata= mQINBGGNI5kBEADMvlh/Nv52eqtcAUBG0v8Kq9hqJyEFbAAQPi4RhDa7PGxR5ELCRrrSipwiQrbL 0IqNULjOnG+Z9KDlYZYf+YaIPl7zDQsvyek8HUtBZ+Fmd2O/Pbm9JEsq21i8rr7C8NcLiX6tOjIN AZV6/ymFa6Lt4sDDzWSqJF9K978gDnFH59jAhu/H4AcpyPZtSKubvVr0LEYogCi18ZjTDocum6FB 9qjHittX2VriowTBBSRVDqjaxSDW4pDoomTOmIrqxYiHIvsrQn28C6WEAEYGVLB1Nbd80boz1R/X x3i7sh+y5Ln37IT3eBk+JxoSmcUTCVZLxz13PpEmrIgPHVY48mL5zLVp1WU/+DZnfKduq+47jkZd kfz70JsB3z01brRwNUhcOJyKqaJk7v6yARO7IqN6eyvq7dAYQIyV/3nmt9nwnfKLRzjv+GuVWLjr d3Fk6HFmGK50S4mX5N4Shrxk3RI6g+Y7s9/j7ebX0Vq/PKLt2cFo3AicjQ7iv4Ucz01eZMUzalUH 7K18fJY+OdDA1vG5kFtOsPRvcQ+BsX15YSxE6P5KIZpBNFFwqpqljAuKJGrD9s+0/eeOj/oQhBnl voPD2tOjYUY/iHDPnkDupSbXxeB5vBKJTpOCasep+/bKW+9EG6pHrr7ZX877JY3RemMvMAgPoprN IGKEo7LE8z1OkQARAQABtDdDaGlubWF5IERhbGFsICh0aGlua3BhZCkgPGRhbGFsLmNoaW5tYXku MDEwMUBnbWFpbC5jb20+iQJOBBMBCAA4FiEE97lGzYC/05CEFC7D8Vvw0yEjTYgFAmGNI5kCGy8F CwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8Vvw0yEjTYg7bA/9H1xHVK2uZFRvkkwviFUMz9Pd 7V6teJxOHykc83RVAkTTUGYrthwtC2E6wBu5QbxiKWCIePozv7dflNgKLXQY+tmibxjCojO9uCY8 lhZt0pi0XJN92LAO6VyvbbzmJwuy3Gi+hGeM+XvS1qLsTPnuFXZtOMnPZCvxEOKf1paauaMgnH0w yvQ8OmQ1T4n0MDJXcyWJIlNI35hGZsZ84xTR78U2/rgugxGKivK6VMXVee9Y2qnuF02QW8uEz7Un /EtaPrYi2g4Ev2iZ8ZIGdRgSAM7sx+p/ndgxdMD8ftuBBFpRqNTrDw0ZnCagmxBuiT9+hUKmQm7B 7bJcbVudJ4Y+V2/LVM5yLlzHZjpNry6DbqH1J9/jpEOM1K6f8lXlpyUqQQFjvcV+BWKkEALZuRD1 U1TLkXIXtaGG50QDKiXscv6YIml8d9xJDE9vvDC1NIbMZ4PIJgmv7LpQKuHbWMHbO7/T7pp8WT5n ZyK4GTGB44J8WevmGnsDuZxz7ASRPtmMVr0bGj9Jt9Km35U58W6JtArztfA7Qv7IIHQmMJy4DMpl 8WGCs8Y/sLNyYzjNVU0kVL8BGo1Aa09WqtLWQQTni7rFkN4D27sm4BEa/IiNrGZ4OByxnScJzOxM ESqn+2OkRa6vDUgjEPjJQBVP2OTbK80f7OAInKj/eIa33T3PuKg= X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 16 February 2023 1:11:23 am IST, Eli Zaretskii wrote: >> From: Chinmay Dalal >> Cc: 61412@debbugs.gnu.org, joaotavora@gmail.com >> Date: Thu, 16 Feb 2023 00:18:41 +0530 >> >> > Not only can we [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.215.177 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.215.177 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 1.0 FREEMAIL_REPLY From and body contain different freemails X-Mailman-Approved-At: Wed, 15 Feb 2023 18:55:09 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On 16 February 2023 1:11:23 am IST, Eli Zaretskii wrote: >> From: Chinmay Dalal >> Cc: 61412@debbugs=2Egnu=2Eorg, joaotavora@gmail=2Ecom >> Date: Thu, 16 Feb 2023 00:18:41 +0530 >>=20 >> > Not only can we not do this, it is also not our style=2E If we want = to >> > show hints, we either show tooltips, or display a message in the echo >> > area=2E >>=20 >> Tooltips and echo area can't be used as inlay hints are for showing >> types of multiple variables/expressions and names of parameters at once= =2E >>=20 >> See the attached screenshots for an example (this is from my >> implementation in this patch) > >I'm not surer I understand what you are showing here (so feel free to >say a few more words), but if I should guess, I'd say use overlay >strings=2E Yes, I am using overlay strings Apologies if the formatting is messed up, I sent this from my phone From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 15:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal , Dimitri Belopopsky , Po Lu Cc: Eli Zaretskii , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167699240410423 (code B ref 61412); Tue, 21 Feb 2023 15:14:02 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 15:13:24 +0000 Received: from localhost ([127.0.0.1]:57018 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUKZ-0002i3-QT for submit@debbugs.gnu.org; Tue, 21 Feb 2023 10:13:24 -0500 Received: from mail-oa1-f51.google.com ([209.85.160.51]:43997) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUKW-0002hq-L6 for 61412@debbugs.gnu.org; Tue, 21 Feb 2023 10:13:22 -0500 Received: by mail-oa1-f51.google.com with SMTP id 586e51a60fabf-172094e10e3so5696179fac.10 for <61412@debbugs.gnu.org>; Tue, 21 Feb 2023 07:13:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=XaegYlL1kSHTh31PG9ER2oe0eS1DO2ti57Nl36Vffl4=; b=nCdM2rll775qNOPhaAuVmzYz3dz6hbUVm5Xbsq+JwCY87d/TJecUGj6qWJu21ZokKx CojEfazlX8feRiF7VnMSKJMQ98NxGGhehyb137ckBuOSm9R2KS1PbCZehyGHt5WVn+mZ lJ5vrZ0TCFepfiEWKVYUd/65ABTELjW6ExaGVuGCmiiWG33n9jO7iCmOMAam6GjAZ6Tt xyvcheDv1o0WPnAfc2nEBazhw9Un0XKboUU447j95/2884oE16690DSmiD2iTn1vGm00 9GAgEizUbjmdc6Z+GPDZfy76xkgtemQzAVKcK6vNKN0Y5L5FaaTN2SHA9tRN+bDMfes1 L0bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XaegYlL1kSHTh31PG9ER2oe0eS1DO2ti57Nl36Vffl4=; b=gnMdBHjrAbC8XkaXYWFnQwgWb5zhKeZ/JRIbSEccCraPRZA96t5AiZS4M4PFCk60d7 R8hMPxjmq667ucxeEjUj4miX1G0OKMh4b3D5I1T1CoUbGID36Ay2n8ei66OK+8gr1ulv XRQFj633nbb+CHHESU/+gREn8ZKFAdrUfYfVPprxgQapG+TXr2cQudJhzkdrUhT4er64 nBfmq1fwAqhibinZlKMrpaRLMm7fmbqNtRjx2pICgyGoQNj8/7jtVGmtFAWMaYBeAp4n O+4SMzPMwMuQkNrFCDwhAHNOBupKRucdxiGNLdIAFyOaD8ZoMj4L4QDVclNSus/rTIKI G8OQ== X-Gm-Message-State: AO0yUKX/jJu9WjCDrWKmRTdCGfQBOk5hE7lFUmh5ADYIxK/Ngrts6aa5 6Cd1ogCLl/gcw+zIkckjQhBLkuywfBL9LPK8ti0= X-Google-Smtp-Source: AK7set//0lKVMEYgMRyJhyWAcCvLhx+jhQSzMQy0ToaDPuwDh85yOWo9g8QU0iSsG2E9tp874iwbpKif7tgHYbd7uoo= X-Received: by 2002:a05:6870:d148:b0:16d:dc93:691d with SMTP id f8-20020a056870d14800b0016ddc93691dmr736824oac.6.1676992394978; Tue, 21 Feb 2023 07:13:14 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> In-Reply-To: <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Tue, 21 Feb 2023 15:13:03 +0000 Message-ID: Content-Type: multipart/mixed; boundary="000000000000febd5005f537377c" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000febd5005f537377c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable [Eli, I just noticed that this bug should be merged with 61066, but I don't know how to do that] Hello, Attached is my implementation of inlay hints for Eglot. Two patches are provided, where the first just lays some basic groundwork to make the actual inlay hint implementation simpler. Regarding copyright stuff, I did look at Chinmay's patch, but I re-started from scratch. While it was a very good effort, there were too many idiomatic Elisp and Eglot things to change. I did take Chinmay's face definitions, though. Not sure how to proceed here and if this counts as "derived work" and if we should wait for Chinmay's copyright assignment. I gave it some light testing and I kind of like it. Quite helpful for C++ with clangd (the only server I tested it with). You can bind `eglot-inlay-hint-mode` to some keybinding probably. Documentation in the manual is still missing, but shouldn't be very hard to do. Anyway, this is likely not the end of the inlay hint story because, as the second patch documents, this is likely a very naive implementation that always requests inlay hints for the entire buffer even if just a fraction of it is visible. A better implementation would probably leverage window-scroll-functions along with the Eglot-specific idle timer. That is probably much, much more tricky to get right, but is also more than likely the way to go. In the meantime, I'd like your opinion on this patch and the above topics first. Jo=C3=A3o I hope gmail doesn't mess up my attachments... --000000000000febd5005f537377c Content-Type: application/octet-stream; name="0001-Eglot-simplify-capability-checking-code.patch" Content-Disposition: attachment; filename="0001-Eglot-simplify-capability-checking-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leedwtou0 RnJvbSBjYWNlZGQ2Nzg3M2JmYjA5NGQxMmMwOGZjMjNlMDE3ZmE0ZGU1ZGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwVD1DMz1BMXZvcmE/PSA8 am9hb3Rhdm9yYUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjEgRmViIDIwMjMgMTM6NTk6MDQgKzAw MDAKU3ViamVjdDogW1BBVENIIDEvMl0gRWdsb3Q6IHNpbXBsaWZ5IGNhcGFiaWxpdHktY2hlY2tp bmcgY29kZQoKKiBsaXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbCAoZWdsb3QtLXNlcnZlci1jYXBhYmxl LW9yLWxvc2UpOiBOZXcgaGVscGVyLgooZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvd2lsbFNh dmUpCihlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRTYXZlKTogVHdlYWsgZG9jc3RyaW5n LgooZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLCB4cmVmLWJhY2tlbmQtaWRlbnRpZmllci1hdC1w b2ludCkKKGVnbG90LWZvcm1hdCwgZWdsb3QtY29tcGxldGlvbi1hdC1wb2ludCwgZWdsb3QtcmVu YW1lKQooZWdsb3QtY29kZS1hY3Rpb25zKTogVXNlIG5ldyBlZ2xvdC0tc2VydmVyLWNhcGFibGUt b3ItbG9zZS4KLS0tCiBsaXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbCB8IDM3ICsrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCsp LCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbCBi L2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsCmluZGV4IDgyNDAxYjY4NWNlLi40NWYwMGRhY2ExZiAx MDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMv ZWdsb3QuZWwKQEAgLTE2NDEsNiArMTY0MSwxMyBAQCBlZ2xvdC0tc2VydmVyLWNhcGFibGUKICAg ICAgICAgICAgICBpZiAobm90IChsaXN0cCAoY2FkciBwcm9iZSkpKSBkbyAoY2wtcmV0dXJuIChp ZiBtb3JlIG5pbCAoY2FkciBwcm9iZSkpKQogICAgICAgICAgICAgIGZpbmFsbHkgKGNsLXJldHVy biAob3IgKGNhZHIgcHJvYmUpIHQpKSkpKQogCisoZGVmdW4gZWdsb3QtLXNlcnZlci1jYXBhYmxl LW9yLWxvc2UgKCZyZXN0IGZlYXRzKQorICAiTGlrZSBgZWdsb3QtLXNlcnZlci1jYXBhYmxlJywg YnV0IG1heWJlIGVycm9yIG91dC4iCisgIChsZXQgKChyZXR2YWwgKGFwcGx5ICMnZWdsb3QtLXNl cnZlci1jYXBhYmxlIGZlYXRzKSkpCisgICAgKHVubGVzcyByZXR2YWwKKyAgICAgIChlZ2xvdC0t ZXJyb3IgIlRoaXMgTFNQIHNlcnZlciBpc24ndCBjYXBhYmxlIG9mICVzIiBmZWF0cykpCisgICAg cmV0dmFsKSkKKwogKGRlZnVuIGVnbG90LS1yYW5nZS1yZWdpb24gKHJhbmdlICZvcHRpb25hbCBt YXJrZXJzKQogICAiUmV0dXJuIHJlZ2lvbiAoQkVHIC4gRU5EKSB0aGF0IHJlcHJlc2VudHMgTFNQ IFJBTkdFLgogSWYgb3B0aW9uYWwgTUFSS0VSUywgbWFrZSBtYXJrZXJzLiIKQEAgLTI0ODIsNyAr MjQ4OSw3IEBAIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlCiAgICAgIDp0ZXh0 RG9jdW1lbnQvZGlkQ2xvc2UgYCg6dGV4dERvY3VtZW50ICwoZWdsb3QtLVRleHREb2N1bWVudElk ZW50aWZpZXIpKSkpKQogCiAoZGVmdW4gZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvd2lsbFNh dmUgKCkKLSAgIlNlbmQgdGV4dERvY3VtZW50L3dpbGxTYXZlIHRvIHNlcnZlci4iCisgICJNYXli ZSBzZW5kIHRleHREb2N1bWVudC93aWxsU2F2ZSB0byBzZXJ2ZXIuIgogICAobGV0ICgoc2VydmVy IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkpCiAgICAgICAgIChwYXJhbXMgYCg6cmVh c29uIDEgOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKSkpKQog ICAgICh3aGVuIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnRleHREb2N1bWVudFN5bmMgOndpbGxT YXZlKQpAQCAtMjQ5NCw3ICsyNTAxLDcgQEAgZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvd2ls bFNhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRpbWVvdXQgMC41KSkpKSkpCiAKIChk ZWZ1biBlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRTYXZlICgpCi0gICJTZW5kIHRleHRE b2N1bWVudC9kaWRTYXZlIHRvIHNlcnZlci4iCisgICJNYXliZSBzZW5kIHRleHREb2N1bWVudC9k aWRTYXZlIHRvIHNlcnZlci4iCiAgIChlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRDaGFu Z2UpCiAgICh3aGVuIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnRleHREb2N1bWVudFN5bmMgOnNh dmUpCiAgICAgKGpzb25ycGMtbm90aWZ5CkBAIC0yNTkxLDggKzI1OTgsNyBAQCBlZ2xvdC0td29y a3NwYWNlLXN5bWJvbHMKICAgIkFzayBmb3IgOndvcmtzcGFjZS9zeW1ib2wgb24gUEFULCByZXR1 cm4gbGlzdCBvZiBmb3JtYXR0ZWQgc3RyaW5ncy4KIElmIEJVRkZFUiwgc3dpdGNoIHRvIGl0IGJl Zm9yZS4iCiAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChvciBidWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkKLSAgICAodW5sZXNzIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOndvcmtzcGFjZVN5bWJvbFBy b3ZpZGVyKQotICAgICAgKGVnbG90LS1lcnJvciAiVGhpcyBMU1Agc2VydmVyIGlzbid0IGEgOndv cmtzcGFjZVN5bWJvbFByb3ZpZGVyIikpCisgICAgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZS1vci1s b3NlIDp3b3Jrc3BhY2VTeW1ib2xQcm92aWRlcikKICAgICAobWFwY2FyCiAgICAgIChsYW1iZGEg KHdzcykKICAgICAgICAoZWdsb3QtLWRiaW5kICgoV29ya3NwYWNlU3ltYm9sKSBuYW1lIGNvbnRh aW5lck5hbWUga2luZCkgd3NzCkBAIC0yNjU0LDEzICsyNjYwLDEyIEBAIGVnbG90LS1sc3AteHJl Zi1yZWZzCiAKIChjbC1kZWZ1biBlZ2xvdC0tbHNwLXhyZWZzLWZvci1tZXRob2QgKG1ldGhvZCAm a2V5IGV4dHJhLXBhcmFtcyBjYXBhYmlsaXR5KQogICAiTWFrZSBgeHJlZicncyBmb3IgTUVUSE9E LCBFWFRSQS1QQVJBTVMsIGNoZWNrIENBUEFCSUxJVFkuIgotICAodW5sZXNzIChlZ2xvdC0tc2Vy dmVyLWNhcGFibGUKLSAgICAgICAgICAgKG9yIGNhcGFiaWxpdHkKLSAgICAgICAgICAgICAgIChp bnRlcm4KLSAgICAgICAgICAgICAgICAoZm9ybWF0ICI6JXNQcm92aWRlciIKLSAgICAgICAgICAg ICAgICAgICAgICAgIChjYWRyIChzcGxpdC1zdHJpbmcgKHN5bWJvbC1uYW1lIG1ldGhvZCkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iKSkpKSkpCi0gICAg KGVnbG90LS1lcnJvciAiU29ycnksIHRoaXMgc2VydmVyIGRvZXNuJ3QgZG8gJXMiIG1ldGhvZCkp CisgIChlZ2xvdC0tc2VydmVyLWNhcGFibGUtb3ItbG9zZQorICAgKG9yIGNhcGFiaWxpdHkKKyAg ICAgICAoaW50ZXJuCisgICAgICAgIChmb3JtYXQgIjolc1Byb3ZpZGVyIgorICAgICAgICAgICAg ICAgIChjYWRyIChzcGxpdC1zdHJpbmcgKHN5bWJvbC1uYW1lIG1ldGhvZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIvIikpKSkpKQogICAobGV0ICgocmVzcG9uc2UKICAg ICAgICAgIChqc29ucnBjLXJlcXVlc3QKICAgICAgICAgICAoZWdsb3QtLWN1cnJlbnQtc2VydmVy LW9yLWxvc2UpCkBAIC0yNzU3LDggKzI3NjIsNyBAQCBlZ2xvdC1mb3JtYXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ZW5kIChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBl bmQpKSkpKQogICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICcoOnRleHREb2N1 bWVudC9mb3JtYXR0aW5nIDpkb2N1bWVudEZvcm1hdHRpbmdQcm92aWRlciBuaWwpKSkpKQotICAg ICh1bmxlc3MgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSBjYXApCi0gICAgICAoZWdsb3QtLWVycm9y ICJTZXJ2ZXIgY2FuJ3QgZm9ybWF0ISIpKQorICAgIChlZ2xvdC0tc2VydmVyLWNhcGFibGUtb3It bG9zZSBjYXApCiAgICAgKGVnbG90LS1hcHBseS10ZXh0LWVkaXRzCiAgICAgIChqc29ucnBjLXJl cXVlc3QKICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKQEAgLTMyMDIsOCAr MzIwNiw3IEBAIGVnbG90LXJlbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAidW5rbm93biBzeW1ib2wiKSkKICAgICAgICAgICBuaWwgbmlsIG5pbCBuaWwKICAg ICAgICAgICAoc3ltYm9sLW5hbWUgKHN5bWJvbC1hdC1wb2ludCkpKSkpCi0gICh1bmxlc3MgKGVn bG90LS1zZXJ2ZXItY2FwYWJsZSA6cmVuYW1lUHJvdmlkZXIpCi0gICAgKGVnbG90LS1lcnJvciAi U2VydmVyIGNhbid0IHJlbmFtZSEiKSkKKyAgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZS1vci1sb3Nl IDpyZW5hbWVQcm92aWRlcikKICAgKGVnbG90LS1hcHBseS13b3Jrc3BhY2UtZWRpdAogICAgKGpz b25ycGMtcmVxdWVzdCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCiAgICAgICAgICAg ICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvcmVuYW1lIGAoLEAoZWdsb3QtLVRleHREb2N1bWVudFBv c2l0aW9uUGFyYW1zKQpAQCAtMzIzMCw5ICszMjMzLDcgQEAgZWdsb3QtY29kZS1hY3Rpb25zCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJygicXVpY2tmaXgiICJyZWZhY3Rvci5leHRyYWN0 IiAicmVmYWN0b3IuaW5saW5lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmFj dG9yLnJld3JpdGUiICJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIikpKQogICAgICB0KSkKLSAgKHVu bGVzcyAob3IgKG5vdCBpbnRlcmFjdGl2ZSkKLSAgICAgICAgICAgICAgKGVnbG90LS1zZXJ2ZXIt Y2FwYWJsZSA6Y29kZUFjdGlvblByb3ZpZGVyKSkKLSAgICAoZWdsb3QtLWVycm9yICJTZXJ2ZXIg Y2FuJ3QgZXhlY3V0ZSBjb2RlIGFjdGlvbnMhIikpCisgIChlZ2xvdC0tc2VydmVyLWNhcGFibGUt b3ItbG9zZSA6Y29kZUFjdGlvblByb3ZpZGVyKQogICAobGV0KiAoKHNlcnZlciAoZWdsb3QtLWN1 cnJlbnQtc2VydmVyLW9yLWxvc2UpKQogICAgICAgICAgKGFjdGlvbnMKICAgICAgICAgICAoanNv bnJwYy1yZXF1ZXN0Ci0tIAoyLjM2LjEud2luZG93cy4xCgo= --000000000000febd5005f537377c Content-Type: application/octet-stream; name="0002-Eglot-implement-inlay-hints-bug-61412.patch" Content-Disposition: attachment; filename="0002-Eglot-implement-inlay-hints-bug-61412.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leedwtp91 RnJvbSBmZWM1MDhkNmE4Y2FiNzc4NjQ5NjIzZDNiYmIyOTU0MTYyYjRjNjI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwVD1DMz1BMXZvcmE/PSA8 am9hb3Rhdm9yYUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjEgRmViIDIwMjMgMTQ6MTQ6MDUgKzAw MDAKU3ViamVjdDogW1BBVENIIDIvMl0gRWdsb3Q6IGltcGxlbWVudCBpbmxheSBoaW50cyAoYnVn IzYxNDEyKQoKVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBwcm9iYWJseSB0b28gc2xvdyBmb3IgY29t cGxleCBzaXR1YXRpb25zIGFuZApiaWcgZmlsZXMgc2luY2UgaXQgcmVxdWVzdHMgaW5sYXkgaGlu dHMgZm9yIHRoZSB3aG9sZSBidWZmZXIgYXMgd2hpY2gKY2FuIHBvc3NpYmx5IG1lYW4gYSBsYXJn ZSBhbW91bnQgb2YgZGF0YS4KCkEgYmV0dGVyIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgc21hcnQg ZW5vdWdoIHRvIG9ubHkgcmVxdWVzdCBpbmxheQpoaW50cyBmb3IgdGhlIHZpc2libGUgcGFydHMg b2YgdGhlIGJ1ZmZlci4KCiogbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwgKGVnbG90LS1sc3AtaW50 ZXJmYWNlLWFsaXN0KTogRGVmaW5lCklubGF5SGludC4KKGVnbG90LWNsaWVudC1jYXBhYmlsaXRp ZXMpOiBBbm5vdW5jZSAnaW5sYXlIaW50JyBjYXBhYmlsaXR5LgooZWdsb3QtaWdub3JlZC1zZXJ2 ZXItY2FwYWJpbGl0aWVzKTogQWRkIDppbmxheUhpbnRQcm92aWRlci4KKGVnbG90LS1kb2N1bWVu dC1jaGFuZ2VkLWhvb2spOiBOZXcgaGVscGVyIGhvb2suCihlZ2xvdC0tYWZ0ZXItY2hhbmdlKTog VXNlIGl0LgooZWdsb3QtaW5sYXktaGludC1mYWNlLCBlZ2xvdC10eXBlLWhpbnQtZmFjZSkKKGVn bG90LXBhcmFtZXRlci1oaW50LWZhY2UpOiBOZXcgZmFjZXMuCihlZ2xvdC0tdXBkYXRlLWhpbnRz LCBlZ2xvdC0tcGFpbnQtaGludCk6IE5ldyBoZWxwZXJzLgooZWdsb3QtaW5sYXktaGludHMtbW9k ZSk6IE5ldyBtaW5vciBtb2RlLgotLS0KIGxpc3AvcHJvZ21vZGVzL2VnbG90LmVsIHwgNzEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA2 OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21v ZGVzL2VnbG90LmVsIGIvbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwKaW5kZXggNDVmMDBkYWNhMWYu LmMwYzVkZWEyOWJlIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbAorKysgYi9s aXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbApAQCAtNDgzLDcgKzQ4Myw5IEBAIGVnbG90LS1leGVjdXRh YmxlLWZpbmQKICAgICAgIChWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyICg6dXJpIDp2 ZXJzaW9uKSAoKSkKICAgICAgIChXb3JrRG9uZVByb2dyZXNzICg6a2luZCkgKDp0aXRsZSA6bWVz c2FnZSA6cGVyY2VudGFnZSA6Y2FuY2VsbGFibGUpKQogICAgICAgKFdvcmtzcGFjZUVkaXQgKCkg KDpjaGFuZ2VzIDpkb2N1bWVudENoYW5nZXMpKQotICAgICAgKFdvcmtzcGFjZVN5bWJvbCAoOm5h bWUgOmtpbmQpICg6Y29udGFpbmVyTmFtZSA6bG9jYXRpb24gOmRhdGEpKSkKKyAgICAgIChXb3Jr c3BhY2VTeW1ib2wgKDpuYW1lIDpraW5kKSAoOmNvbnRhaW5lck5hbWUgOmxvY2F0aW9uIDpkYXRh KSkKKyAgICAgIChJbmxheUhpbnQgKDpwb3NpdGlvbiA6bGFiZWwpICg6a2luZCA6dGV4dEVkaXRz IDp0b29sdGlwIDpwYWRkaW5nTGVmdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpwYWRkaW5nUmlnaHQgOmRhdGEpKSkKICAgICAiQWxpc3QgKElOVEVSRkFDRS1O QU1FIC4gSU5URVJGQUNFKSBvZiBrbm93biBleHRlcm5hbCBMU1AgaW50ZXJmYWNlcy4KIAogSU5U RVJGQUNFLU5BTUUgaXMgYSBzeW1ib2wgZGVzaWduYXRlZCBieSB0aGUgc3BlYyBhcwpAQCAtODAz LDYgKzgwNSw3IEBAIGVnbG90LWNsaWVudC1jYXBhYmlsaXRpZXMKICAgICAgICAgICAgICA6Zm9y bWF0dGluZyAgICAgICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAg ICAgICAgICAgOnJhbmdlRm9ybWF0dGluZyAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u LWZhbHNlKQogICAgICAgICAgICAgIDpyZW5hbWUgICAgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lz dHJhdGlvbiA6anNvbi1mYWxzZSkKKyAgICAgICAgICAgICA6aW5sYXlIaW50ICAgICAgICAgIGAo OmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAgICAgOnB1Ymxpc2hE aWFnbm9zdGljcyAobGlzdCA6cmVsYXRlZEluZm9ybWF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBXZSBjYW4gc3VwcG9ydCA6 Y29kZURlc2NyaXB0aW9uIGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBhZGRpbmcgYW4gYXBwcm9wcmlhdGUgVUkgdG8KQEAgLTE2MjUsNyArMTYyOCw4IEBA IGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllcwogICAgICAgICAgIChjb25zdCA6dGFn ICJIaWdobGlnaHQgbGlua3MgaW4gZG9jdW1lbnQiIDpkb2N1bWVudExpbmtQcm92aWRlcikKICAg ICAgICAgICAoY29uc3QgOnRhZyAiRGVjb3JhdGUgY29sb3IgcmVmZXJlbmNlcyIgOmNvbG9yUHJv dmlkZXIpCiAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgcmVnaW9ucyBvZiBidWZmZXIiIDpm b2xkaW5nUmFuZ2VQcm92aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAiRXhlY3V0ZSBjdXN0 b20gY29tbWFuZHMiIDpleGVjdXRlQ29tbWFuZFByb3ZpZGVyKSkpCisgICAgICAgICAgKGNvbnN0 IDp0YWcgIkV4ZWN1dGUgY3VzdG9tIGNvbW1hbmRzIiA6ZXhlY3V0ZUNvbW1hbmRQcm92aWRlcikK KyAgICAgICAgICAoY29uc3QgOnRhZyAiSW5sYXkgaGludHMiIDppbmxheUhpbnRQcm92aWRlcikp KQogCiAoZGVmdW4gZWdsb3QtLXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAgIkRldGVy bWluZSBpZiBjdXJyZW50IHNlcnZlciBpcyBjYXBhYmxlIG9mIEZFQVRTLiIKQEAgLTIyOTEsNiAr MjI5NSw5IEBAIGVnbG90LS1iZWZvcmUtY2hhbmdlCiAgICAgICAgICAgICAoLGVuZCAuICwoY29w eS1tYXJrZXIgZW5kIHQpKSkKICAgICAgICAgICBlZ2xvdC0tcmVjZW50LWNoYW5nZXMpKSkKIAor KGRlZnZhciBlZ2xvdC0tZG9jdW1lbnQtY2hhbmdlZC1ob29rICcoZWdsb3QtLXNpZ25hbC10ZXh0 RG9jdW1lbnQvZGlkQ2hhbmdlKQorICAiSW50ZXJuYWwgaG9vayBmb3IgZG9pbmcgdGhpbmdzIHdo ZW4gdGhlIGRvY3VtZW50IGNoYW5nZXMuIikKKwogKGRlZnVuIGVnbG90LS1hZnRlci1jaGFuZ2Ug KGJlZyBlbmQgcHJlLWNoYW5nZS1sZW5ndGgpCiAgICJIb29rIG9udG8gYGFmdGVyLWNoYW5nZS1m dW5jdGlvbnMnLgogUmVjb3JkcyBCRUcsIEVORCBhbmQgUFJFLUNIQU5HRS1MRU5HVEggbG9jYWxs eS4iCkBAIC0yMzMxLDcgKzIzMzgsNyBAQCBlZ2xvdC0tYWZ0ZXItY2hhbmdlCiAgICAgICAgICAg IGVnbG90LXNlbmQtY2hhbmdlcy1pZGxlLXRpbWUKICAgICAgICAgICAgbmlsIChsYW1iZGEgKCkg KGVnbG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh3aGVuIGVnbG90LS1tYW5hZ2VkLW1vZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRDaGFuZ2UpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAocnVuLWhvb2tzICdlZ2xvdC0tZG9jdW1lbnQtY2hhbmdlZC1ob29rKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZWdsb3QtLWNoYW5nZS1pZGxlLXRp bWVyIG5pbCkpKSkpKSkpCiAKIDs7IEhBQ0shIExhdW5jaGluZyBhIGRlZmVycmVkIHN5bmMgcmVx dWVzdCB3aXRoIG91dHN0YW5kaW5nIGNoYW5nZXMgaXMgYQpAQCAtMzQ1OSw2ICszNDY2LDY0IEBA IGVnbG90LWxpc3QtY29ubmVjdGlvbnMKICAgICAgIChyZXZlcnQtYnVmZmVyKQogICAgICAgKHBv cC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpKSkKIAorDAorOzs7IElubGF5IGhpbnRzCiso ZGVmZmFjZSBlZ2xvdC1pbmxheS1oaW50LWZhY2UgJygodCAoOmhlaWdodCAwLjggOmluaGVyaXQg c2hhZG93KSkpCisgICJGYWNlIHVzZWQgZm9yIGlubGF5IGhpbnQgb3ZlcmxheXMuIikKKworKGRl ZmZhY2UgZWdsb3QtdHlwZS1oaW50LWZhY2UgJygodCAoOmluaGVyaXQgZWdsb3QtaW5sYXktaGlu dC1mYWNlKSkpCisgICJGYWNlIHVzZWQgZm9yIHR5cGUgaW5sYXkgaGludCBvdmVybGF5cy4iKQor CisoZGVmZmFjZSBlZ2xvdC1wYXJhbWV0ZXItaGludC1mYWNlICcoKHQgKDppbmhlcml0IGVnbG90 LWlubGF5LWhpbnQtZmFjZSkpKQorICAiRmFjZSB1c2VkIGZvciBwYXJhbWV0ZXIgaW5sYXkgaGlu dCBvdmVybGF5cy4iKQorCisoZGVmdW4gZWdsb3QtLXBhaW50LWhpbnQgKGhpbnQpCisgICJQYWlu dCBpbmxheSBoaW50IEhJTlQgaW4gY3VycmVudCBidWZmZXIuIgorICAoZWdsb3QtLWRiaW5kICgo SW5sYXlIaW50KSBwb3NpdGlvbiBraW5kIGxhYmVsIHBhZGRpbmdMZWZ0IHBhZGRpbmdSaWdodCkg aGludAorICAgIChnb3RvLWNoYXIgKGVnbG90LS1sc3AtcG9zaXRpb24tdG8tcG9pbnQgcG9zaXRp b24pKQorICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5IChwb2ludCkgKHBvaW50KSkpKQorICAg ICAgKG92ZXJsYXktcHV0IG92ICdiZWZvcmUtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgKHBy b3BlcnRpemUKKyAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoYW5kIHBhZGRpbmdMZWZ0ICIg IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZ3AgbGFiZWwpIGxhYmVs IChwbGlzdC1nZXQgbGFiZWwgOnZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIHBhZGRpbmdSaWdodCAiICIpKQorICAgICAgICAgICAgICAgICAgICAnZmFjZSAocGNhc2Ug a2luZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxICdlZ2xvdC10eXBlLWhpbnQtZmFj ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMiAnZWdsb3QtcGFyYW1ldGVyLWhpbnQt ZmFjZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXyAnZWdsb3QtaW5sYXktaGludC1m YWNlKSkpKQorICAgICAgKG92ZXJsYXktcHV0IG92ICdlZ2xvdC0taW5sYXktaGludCB0KSkpKQor CisoZGVmdW4gZWdsb3QtLXVwZGF0ZS1oaW50cyAoKQorICAiUmVxdWVzdCBpbmxheSBoaW50cyBm b3IgY3VycmVudCBidWZmZXIgYW5kIHBhaW50IHRoZW0uIgorICAoaW50ZXJhY3RpdmUpCisgIChl Z2xvdC0tc2VydmVyLWNhcGFibGUtb3ItbG9zZSA6aW5sYXlIaW50UHJvdmlkZXIpCisgIChsZXQg KChidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCisgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAor ICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQorICAgICAgOnRleHREb2N1bWVu dC9pbmxheUhpbnQKKyAgICAgIChsaXN0IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1l bnRJZGVudGlmaWVyKQorICAgICAgICAgICAgOnJhbmdlIChsaXN0IDpzdGFydCAoZWdsb3QtLXBv cy10by1sc3AtcG9zaXRpb24gKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICAgICAgICAg OmVuZCAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gKHBvaW50LW1heCkpKSkKKyAgICAgIDpz dWNjZXNzLWZuIChsYW1iZGEgKGhpbnRzKQorICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdpZGVuaW5n CisgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUtb3ZlcmxheXMgbmlsIG5pbCAnZWdsb3Qt LWlubGF5LWhpbnQgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgKG1hcGMgIydlZ2xvdC0tcGFp bnQtaGludCBoaW50cykpKSkKKyAgICAgIDpkZWZlcnJlZCB0KSkpCisKKyhkZWZpbmUtbWlub3It bW9kZSBlZ2xvdC1pbmxheS1oaW50cy1tb2RlCisgICJNaW5vciBtb2RlIGFubm90YXRpbmcgYnVm ZmVyIHdpdGggTFNQIGlubGF5IGhpbnRzLiIKKyAgOmdsb2JhbCBuaWwKKyAgKGlmIGVnbG90LWlu bGF5LWhpbnRzLW1vZGUKKyAgICAgIChpZiAobm90IGVnbG90LS1tYW5hZ2VkLW1vZGUpCisgICAg ICAgICAgKGVnbG90LS1lcnJvciAiQ2FuJ3QgdHVybiBvbiBgZWdsb3QtaW5sYXktaGludHMnIG1v ZGUuIikKKyAgICAgICAgKGFkZC1ob29rICdlZ2xvdC0tZG9jdW1lbnQtY2hhbmdlZC1ob29rCisg ICAgICAgICAgICAgICAgICAnZWdsb3QtLXVwZGF0ZS1oaW50cyBuaWwgdCkKKyAgICAgICAgKGVn bG90LS11cGRhdGUtaGludHMpKQorICAgIChyZW1vdmUtaG9vayAnZWdsb3QtLWRvY3VtZW50LWNo YW5nZWQtaG9vaworICAgICAgICAgICAgICAgICAnZWdsb3QtLXVwZGF0ZS1oaW50cyB0KQorICAg IChyZW1vdmUtb3ZlcmxheXMgbmlsIG5pbCAnZWdsb3QtLWlubGF5LWhpbnQgdCkpKQorCiAMCiA7 OzsgSGFja3MKIDs7OwotLSAKMi4zNi4xLndpbmRvd3MuMQoK --000000000000febd5005f537377c-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 15:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: luangruo@yahoo.com, dalal.chinmay.0101@gmail.com, dimitri@belopopsky.com, 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167699288411263 (code B ref 61412); Tue, 21 Feb 2023 15:22:02 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 15:21:24 +0000 Received: from localhost ([127.0.0.1]:57048 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUSJ-0002va-IS for submit@debbugs.gnu.org; Tue, 21 Feb 2023 10:21:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49744) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUSI-0002vL-2W; Tue, 21 Feb 2023 10:21:22 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pUUSC-00074e-Kp; Tue, 21 Feb 2023 10:21:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=kKJucFYxetSFdIOWXQogFUHx2fMPLbvLO2rEy1XlGZY=; b=a0choOXRIoaJB+8hFDLL 0L7jekeYUWUvq54GpO+R/dkJcz7YDMgyJkuvhne6cC8anBcVjAWHIDKm6oIf86bC/2r+zzgsss48X aL4vLz51dEhJnoQBMWOGHNmoQKefaYeWZIih8+qmbRe7wdPZE4IF4Dgnb4tDpasWNSFcO3Zg1b2cl AR8Ms+A3oki25JECcB4vr4HQqiJk4vjeeCmt2e5UQKJ4KYU4WIbYBeH8X0ezBabryf302ncWnH7AU jan40t9c5EEj6AjfknuN6A+QeJwA5O0pRDiXmCa65HkbcmM3WCV8OtdeRUrWo9yzQmBTNxh8QckTl GdRAdndY9VpFoA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pUUS4-0003Pc-C6; Tue, 21 Feb 2023 10:21:16 -0500 Date: Tue, 21 Feb 2023 17:21:16 +0200 Message-Id: <831qmjt577.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= on Tue, 21 Feb 2023 15:13:03 +0000) References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) merge 61412 61066 thanks > From: João TÔvora > Date: Tue, 21 Feb 2023 15:13:03 +0000 > Cc: Eli Zaretskii , 61412@debbugs.gnu.org > > > [Eli, I just noticed that this bug should be merged with 61066, > but I don't know how to do that] Done. From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> In-Reply-To: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 15:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbgugs.gnu.org Cc: joaotavora@gmail.com Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167699447222956 (code B ref 61412); Tue, 21 Feb 2023 15:48:02 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 15:47:52 +0000 Received: from localhost ([127.0.0.1]:57086 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUrv-0005yA-To for submit@debbugs.gnu.org; Tue, 21 Feb 2023 10:47:52 -0500 Received: from mail-yw1-f172.google.com ([209.85.128.172]:37433) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUUrs-0005xR-V1 for 61412@debbugs.gnu.org; Tue, 21 Feb 2023 10:47:50 -0500 Received: by mail-yw1-f172.google.com with SMTP id 00721157ae682-536c02eea4dso57713667b3.4 for <61412@debbugs.gnu.org>; Tue, 21 Feb 2023 07:47:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:maildir:flags:date:cc:to:subject:from :resent-message-id:resent-date:resent-from:resent-to:message-id:from :to:cc:subject:date:message-id:reply-to; bh=txnPgXarch7numJyX5DNof4As0sxWKDDlowPxNSbIRY=; b=JuKB7DnQ0UMVY5IUqAKKkF+yyZGl0yNuBnWRf+WTxTXLvTxNMlrIqx5mByKoSyefYs F9H5AodICifLzHIStjntp24shb6noKuAbnXD4TqrnMOHVocSlIgvzrk58m8XVMzpQvt3 1WqXp6FxfILXoUIeaAzwhl1o2a49KXsPEN1QibHGtpN8BN/knKwDK+keqy2bP1yfQFB7 iF5x/Mrw0SrkKFZuEUwi2UFy83bFoMZXPNLisHL7bUjpe1i0hoW7CLtBDaIR2rkFHMBs XcXK2Ji8wplldc2NAarbRtaE5RtQ5rL2wyVnsRe85BPFWDALaQURwlMWij4Qd8TPR1wA oi9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:maildir:flags:date:cc:to:subject:from :resent-message-id:resent-date:resent-from:resent-to:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=txnPgXarch7numJyX5DNof4As0sxWKDDlowPxNSbIRY=; b=07OHySUAWdSAyg8OA5879ik019cKbIrkSVfzH/eqT4VgGxv8waRykmxAfP8cHiUFP1 Sq+nE69VQwMvjvrFhUagOCAP/mdBJ5iIZELj0incxCn4sJqIdMv2/IquRprminUMLCsb yIInpoN+3ky9rmX3OAjKbFXxifICYxZsW8ooHLX6LNf3Xyk+Nd8Q4h5tMLhV2XOjj03T O+dk1Xkq2qNUgi2aRaE2uFS3dngKJo9i7727mbwhvCcDCH53T5/YabSqDnN3LbxennhX pxnwtmRGTt4a4z7FFuE7VgTGNoWCtiR1nPDkSuwAAhp0DFktqPZD52S9vZBaluy5yTyk B+7A== X-Gm-Message-State: AO0yUKUjW375TubDD+alIVNCYaGw8mU0GnstXf5OL8mlTYZiEVtJR5hS F6ZT+8Vnr5lnFE2nmXwyE6e/Rbj0n30= X-Google-Smtp-Source: AK7set+/+0rXavNsMLgNsDk5ZYU3htXvSWl8l4S5Tbo4K9GU5LhXm3ORnBDrOh1/s/y5PA7HAQ6TJg== X-Received: by 2002:a05:6a21:32aa:b0:cb:7958:707c with SMTP id yt42-20020a056a2132aa00b000cb7958707cmr3198607pzb.56.1676994118606; Tue, 21 Feb 2023 07:41:58 -0800 (PST) Received: from ganymede ([182.75.45.1]) by smtp.gmail.com with ESMTPSA id d2-20020aa78682000000b005810a54fdefsm690566pfo.114.2023.02.21.07.41.57 for <61412@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Feb 2023 07:41:58 -0800 (PST) Message-Id: Resent-To: 61412@debbugs.gnu.org Resent-From: Chinmay Dalal Resent-Date: Tue, 21 Feb 2023 21:11:56 +0530 Resent-Message-ID: From: Chinmay Dalal Date: Tue, 21 Feb 2023 21:03:27 +0530 (7 minutes, 52 seconds ago) Flags: seen, personal Maildir: /Personal/[Gmail]/Sent Mail MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took the face definitions from the patch in bug 61066 Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.128.172 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.128.172 listed in list.dnswl.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took the face definitions from the patch in bug 61066 Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.128.172 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [182.75.45.1 listed in zen.spamhaus.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.128.172 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took the face definitions from the patch in bug 61066 From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 15:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 61412@debbugs.gnu.org Cc: joaotavora@gmail.com Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167699503624080 (code B ref 61412); Tue, 21 Feb 2023 15:58:02 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 15:57:16 +0000 Received: from localhost ([127.0.0.1]:57108 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUV12-0006GK-9C for submit@debbugs.gnu.org; Tue, 21 Feb 2023 10:57:16 -0500 Received: from mail-pf1-f176.google.com ([209.85.210.176]:44912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUV0w-0006G1-1W for 61412@debbugs.gnu.org; Tue, 21 Feb 2023 10:57:14 -0500 Received: by mail-pf1-f176.google.com with SMTP id n5so2950563pfv.11 for <61412@debbugs.gnu.org>; Tue, 21 Feb 2023 07:57:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=FQzc94Ip4GE5SzxhDqXsZiMjC+kgOg2bNpfS125C4/0=; b=M3TLF6ScWWuPSGvoRPyqmEDC83JGeSDW97PeB7WrVpWe4/yDVlLUV1JRFM6kglcFMo 2ORQ2Q21I6j+P674VotsAbBEai4Lr8HlE8oUiU23/GBaKBlwfmY2XU6AKoIOoqBLvtHW 4NnNtq1ZjxMfFJyIyAfZ0HD0+F/vzCVlsjMCZVoW+kKioU1dKwtxrOmAeunUbhDC6adK hriVWSEXy01kS72ZIkrPzodv8a6iQPofRT8aSjd//IzqVDQEh0KLBzPheMFw7nDovs4S kXavW1S5vUwjpykrfvGgHxU7Cs2bRoTYeY+uSCRF+OV40nnXc9V1fTi/poofI9Wmyamx z7SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FQzc94Ip4GE5SzxhDqXsZiMjC+kgOg2bNpfS125C4/0=; b=MNus3gBhTGlH1UbNuh89XBiy29x95Luoi+vIBirpEBzBGYwhijKLcxYIeKwbVPOAr4 jf6AA9+hYMBen98KcnGSmYfvVZtNbqs+iGju4dunBdS7800hXqvB74OwfHQbLi4pr7qf ARBAg+JMQS+wlYTi7F1Y/k419dDyuh4Zym34jxhw5pev2mhy+cXvNcIpM+rhDsGqYuyg P84FxnrLJhDGFiDhZRKXWGG7M+mMA+kcVKkCjl9zUfzbfkeZtwDVxNA+Sq0wujWH6MsM LUqeispZkAnenxDXrDrbXANlXrAt8vw4RnDs1LCdSnu8y9iDlDS92gb9LyJDIfL/3O8Q piBw== X-Gm-Message-State: AO0yUKVOByknLNhfgjzL7Sm36kvTZVq3+i7PD0o8ukatu5Gji6dBDH7v pBFOJtdJiAYA7r0sB0zW9yU= X-Google-Smtp-Source: AK7set/mv0I0UkoIm0vcr49rRQ04LGtPbxZ1KjpYZ8aDoa3nrmHyvM39Jx3MZUK9U1gi1aaKCCSxFQ== X-Received: by 2002:a62:1ad1:0:b0:5a9:c772:85ab with SMTP id a200-20020a621ad1000000b005a9c77285abmr5571495pfa.22.1676995024285; Tue, 21 Feb 2023 07:57:04 -0800 (PST) Received: from ganymede ([14.98.244.193]) by smtp.gmail.com with ESMTPSA id j25-20020aa78d19000000b00593225b379dsm9692968pfe.106.2023.02.21.07.57.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Feb 2023 07:57:03 -0800 (PST) From: Chinmay Dalal In-Reply-To: CALDnm53otfeDQGr0dWWUhxGLTSuiWTstLXJz1HXQgWLiAgsk=A@mail.gmail.com Date: Tue, 21 Feb 2023 21:27:00 +0530 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > I did take Chinmay's face definitions, though. > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took `:inherit shadow` and `:height 0.8` from Dmitry's patch in bug #61066 and only added two new faces for the two kinds which inherit from it Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.176 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.176 listed in list.dnswl.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > I did take Chinmay's face definitions, though. > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took `:inherit shadow` and `:height 0.8` from Dmitry's patch in bug #61066 and only added two new faces for the two kinds which inherit from it Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.210.176 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.176 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager > I did take Chinmay's face definitions, though. > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. I myself took `:inherit shadow` and `:height 0.8` from Dmitry's patch in bug #61066 and only added two new faces for the two kinds which inherit from it Chinmay From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: Dimitri Belopopsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 18:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: Po Lu , Chinmay Dalal , Eli Zaretskii , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.16770049587404 (code B ref 61412); Tue, 21 Feb 2023 18:43:02 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 18:42:38 +0000 Received: from localhost ([127.0.0.1]:57254 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUXb4-0001vL-DQ for submit@debbugs.gnu.org; Tue, 21 Feb 2023 13:42:38 -0500 Received: from mail-qk1-f178.google.com ([209.85.222.178]:44841) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUXb2-0001v9-9j for 61412@debbugs.gnu.org; Tue, 21 Feb 2023 13:42:36 -0500 Received: by mail-qk1-f178.google.com with SMTP id h17so872400qka.11 for <61412@debbugs.gnu.org>; Tue, 21 Feb 2023 10:42:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=WMp/NOcwm/K11BvLez8+WKIOSOgxM1RYcw1f18bYO6Y=; b=aB4hCdAS3dJUV8z6f7wh/2ECw8cwznIeczrl3i9lS7wYWEJlulaU7A4yAtvHbYNle4 89MP4RP5er/eDqByTr3UmlDJOOoS2YGlMf46nBw/4G6rVVZBijP8xzJmR92a4V6IHOmf 1JAmAkBAa5SqPdPVyR0bJjmWzhUCuOtRRkqZyGkxtAbJR543UzFYcPDrz42J7qytWZzK wWu1m3KObkN/w0PwABTxpetE6Wi4CPv9tJlcCB1cUJ4AGDLETl+9taFEF/hjfA61RNuW BlFh9NzstC3w2ca/P+VHIKQ0QntvDqO9VXAC3yeDtfc3OTek6pb1yCQx277/oQ+miwZQ MIhQ== X-Gm-Message-State: AO0yUKUdCXYJPRyf3E24a+aBBWkFJBxtR+iO87X/5+dX2WmdLA5bYo+v XbfRdK3b6Yh3wmQwPZu3Beh4zJJdZoeSNtFsgx0= X-Google-Smtp-Source: AK7set9gZp1FFlNoywAJoCkPcQ5UZNIrwMKkzbXG3wbA5cd4NA35tn0ash6vE5fhITP/akCYrfuEUOcwaGrd+VPexHY= X-Received: by 2002:a05:620a:19a6:b0:73b:7f8c:5571 with SMTP id bm38-20020a05620a19a600b0073b7f8c5571mr853907qkb.6.1677004950613; Tue, 21 Feb 2023 10:42:30 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> In-Reply-To: From: Dimitri Belopopsky Date: Tue, 21 Feb 2023 19:42:19 +0100 Message-ID: Content-Type: multipart/mixed; boundary="0000000000005e698c05f53a24f5" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --0000000000005e698c05f53a24f5 Content-Type: multipart/alternative; boundary="0000000000005e698a05f53a24f3" --0000000000005e698a05f53a24f3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, I thought the point was not to create overlays directly? I'm sharing what I currently have, using the flymake diagnostics directly. Maybe something can be salvaged? In the meantime I'll try out your patches. On Tue, 21 Feb 2023 at 16:14, Jo=C3=A3o T=C3=A1vora = wrote: > [Eli, I just noticed that this bug should be merged with 61066, > but I don't know how to do that] > > Hello, > > Attached is my implementation of inlay hints for Eglot. > Two patches are provided, where the first just lays some > basic groundwork to make the actual inlay hint implementation > simpler. > > Regarding copyright stuff, I did look at Chinmay's patch, > but I re-started from scratch. While it was a very good > effort, there were too many idiomatic Elisp and Eglot things > to change. I did take Chinmay's face definitions, though. > Not sure how to proceed here and if this counts as "derived > work" and if we should wait for Chinmay's copyright assignment. > > I gave it some light testing and I kind of like it. Quite > helpful for C++ with clangd (the only server I tested it with). > You can bind `eglot-inlay-hint-mode` to some keybinding probably. It's even more helpful in languages like Rust, that rely on type deduction a lot more. Clangd has an extension for designator hints that looks interesting too. > Documentation in the manual is still missing, but shouldn't > be very hard to do. > > Anyway, this is likely not the end of the inlay hint story > because, as the second patch documents, this is likely a > very naive implementation that always requests inlay hints > for the entire buffer even if just a fraction of it is visible. > > A better implementation would probably leverage > window-scroll-functions along with the Eglot-specific > idle timer. That is probably much, much more tricky to get > right, but is also more than likely the way to go. > > In the meantime, I'd like your opinion on this patch and > the above topics first. > > Jo=C3=A3o > > I hope gmail doesn't mess up my attachments... > --0000000000005e698a05f53a24f3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I thou= ght the point was not to create overlays directly?
I'm sharing= what I currently have, using the flymake diagnostics directly.
Ma= ybe something can be salvaged?

In the mean= time I'll try out your patches.

On Tue, 21 Feb 202= 3 at 16:14, Jo=C3=A3o T=C3=A1vora <joaotavora@gmail.com> wrote:
[Eli, I just noticed that this bug should be merged = with 61066,
but I don't know how to do that]

Hello,

Attached is my implementation of inlay hints for Eglot.
Two patches are provided, where the first just lays some
basic groundwork to make the actual inlay hint implementation
simpler.

Regarding copyright stuff, I did look at Chinmay's patch,
but I re-started from scratch.=C2=A0 While it was a very good
effort, there were too many idiomatic Elisp and Eglot things
to change.=C2=A0 I did take Chinmay's face definitions, though.
Not sure how to proceed here and if this counts as "derived
work" and if we should wait for Chinmay's copyright assignment.
I gave it some light testing and I kind of like it.=C2=A0 Quite
helpful for C++ with clangd (the only server I tested it with).
You can bind `eglot-inlay-hint-mode` to some keybinding probably.

It's even more helpful in languages like Rust, t= hat rely on type deduction a lot more.
Clangd has an extension fo= r designator hints that looks interesting too.
=C2=A0
Documentation in the manual is still missing, but shouldn't
be very hard to do.

Anyway, this is likely not the end of the inlay hint story
because, as the second patch documents, this is likely a
very naive implementation that always requests inlay hints
for the entire buffer even if just a fraction of it is visible.
=C2=A0
A better implementation would probably leverage
window-scroll-functions along with the Eglot-specific
idle timer.=C2=A0 That is probably much, much more tricky to get
right, but is also more than likely the way to go.

In the meantime, I'd like your opinion on this patch and
the above topics first.

Jo=C3=A3o

I hope gmail doesn't mess up my attachments...
--0000000000005e698a05f53a24f3-- --0000000000005e698c05f53a24f5 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Add-inlay-hint-functionality.patch" Content-Disposition: attachment; filename="0001-Add-inlay-hint-functionality.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_leelbb940 RnJvbSBlY2IwODkxMWRjZjViMmVhZTEzMzhlZjgzMjY0MDYwM2VhZjQ0MWIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaW1pdHJpIEJlbG9wb3Bza3kgPGRpbWl0cmlAYmVsb3BvcHNr eS5jb20+CkRhdGU6IE1vbiwgMiBKYW4gMjAyMyAyMjowNjowNyArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIEFkZCBpbmxheSBoaW50IGZ1bmN0aW9uYWxpdHkKCi0tLQogZWdsb3QuZWwgfCAzNzMxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDE5ODUgaW5zZXJ0aW9ucygrKSwgMTc0NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9lZ2xvdC5lbCBiL2VnbG90LmVsCmluZGV4IDkwMWJmMzAuLjllNWE5ZGQgMTAwNjQ0 Ci0tLSBhL2VnbG90LmVsCisrKyBiL2VnbG90LmVsCkBAIC0xMTQsMTMgKzExNCwxMyBAQAogOzsg dXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gR05VIEVscGEgd2hlbiB3ZSBsb2FkIGVnbG90 LmVsLiAgVXNlIGFuCiA7OyBoZXVyaXN0aWMgdG8gc2VlIGlmIHdlIG5lZWQgdG8gYGxvYWQnIGl0 IGluIEVtYWNzIDwgMjguCiAoaWYgKGFuZCAoPCBlbWFjcy1tYWpvci12ZXJzaW9uIDI4KQotICAg ICAgICAgKG5vdCAoYm91bmRwICdlbGRvYy1kb2N1bWVudGF0aW9uLXN0cmF0ZWd5KSkpCi0gICAg KGxvYWQgImVsZG9jIikKKyAgICAgIChub3QgKGJvdW5kcCAnZWxkb2MtZG9jdW1lbnRhdGlvbi1z dHJhdGVneSkpKQorICAobG9hZCAiZWxkb2MiKQogICAocmVxdWlyZSAnZWxkb2MpKQogCiA7OyBT aW1pbGFyIGlzc3VlIGFzIGFib3ZlIGZvciBFbWFjcyAyNi4zIGFuZCBzZXEuZWwuCiAoaWYgKDwg ZW1hY3MtbWFqb3ItdmVyc2lvbiAyNykKLSAgICAobG9hZCAic2VxIikKKyAgKGxvYWQgInNlcSIp CiAgIChyZXF1aXJlICdzZXEpKQogCiA7OyBmb3J3YXJkLWRlY2xhcmUsIGJ1dCBkb24ndCByZXF1 aXJlIChFbWFjcyAyOCBkb2Vzbid0IHNlZW0gdG8gY2FyZSkKQEAgLTE1MCw5MCArMTUwLDkwIEBA IGNob3NlbiAoaW50ZXJhY3RpdmVseSBvciBhdXRvbWF0aWNhbGx5KS4iCiAgICAgOzsgYGVnbG90 LS1leGVjdXRhYmxlLWZpbmQnIG1heSB0YWtlIG11Y2ggbG9uZ2VyIHRvIGV4ZWN1dGUgb24KICAg ICA7OyByZW1vdGUgZmlsZXMuCiAgICAgKGxldCogKChsaXN0aWZpZWQgKGNsLWxvb3AgZm9yIGEg aW4gYWx0ZXJuYXRpdmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAo aWYgKGxpc3RwIGEpIGEgKGxpc3QgYSkpKSkKLSAgICAgICAgICAgKGVyciAobGFtYmRhICgpCi0g ICAgICAgICAgICAgICAgICAoZXJyb3IgIk5vbmUgb2YgJyVzJyBhcmUgdmFsaWQgZXhlY3V0YWJs ZXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2NhciBsaXN0aWZpZWQg IiwgIikpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IChpZiAobGlzdHAgYSkg YSAobGlzdCBhKSkpKQorICAgICAgICAgICAgKGVyciAobGFtYmRhICgpCisgICAgICAgICAgICAg ICAgICAgKGVycm9yICJOb25lIG9mICclcycgYXJlIHZhbGlkIGV4ZWN1dGFibGVzIgorICAgICAg ICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2NhciBsaXN0aWZpZWQgIiwgIikpKSkpCiAgICAg ICAoY29uZCAoaW50ZXJhY3RpdmUKLSAgICAgICAgICAgICAobGV0KiAoKGF1Z21lbnRlZCAobWFw Y2FyIChsYW1iZGEgKGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZXQgKChmb3VuZCAoZWdsb3QtLWV4ZWN1dGFibGUtZmluZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgYSkgdCkpKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZm91bmQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIChjYXIgYSkgKGNv bnMgZm91bmQgKGNkciBhKSkpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaXN0aWZpZWQpKQotICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmxlIChyZW1vdmUg bmlsIGF1Z21lbnRlZCkpKQotICAgICAgICAgICAgICAgKGNvbmQgKChjZHIgYXZhaWxhYmxlKQot ICAgICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc29jCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNvbXBsZXRpbmctcmVhZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW2Vn bG90XSBNb3JlIHRoYW4gb25lIHNlcnZlciBleGVjdXRhYmxlIGF2YWlsYWJsZToiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydjYXIgYXZhaWxhYmxlKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuaWwgdCBuaWwgbmlsIChjYXIgKGNhciBhdmFpbGFibGUpKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgIydlcXVhbCkpKQotICAgICAg ICAgICAgICAgICAgICAgKChjZHIgKGNhciBhdmFpbGFibGUpKSkKLSAgICAgICAgICAgICAgICAg ICAgICh0Ci0gICAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgZXJyb3Igd2hlbiB1c2VkIGlu dGVyYWN0aXZlbHksIGxldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICA7OyBFZ2xvdCBwcm9t cHQgdGhlIHVzZXIgZm9yIGFsdGVybmF0aXZlIChnaXRodWIjNzE5KQotICAgICAgICAgICAgICAg ICAgICAgIG5pbCkpKSkKLSAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAgKGNsLWxvb3AgZm9y IChwIC4gYXJncykgaW4gbGlzdGlmaWVkCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIHByb2Jl ID0gKGVnbG90LS1leGVjdXRhYmxlLWZpbmQgcCB0KQotICAgICAgICAgICAgICAgICAgICAgIHdo ZW4gcHJvYmUgcmV0dXJuIChjb25zIHByb2JlIGFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAg ZmluYWxseSAoZnVuY2FsbCBlcnIpKSkpKSkpCisgICAgICAgICAgICAgIChsZXQqICgoYXVnbWVu dGVkIChtYXBjYXIgKGxhbWJkYSAoYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsZXQgKChmb3VuZCAoZWdsb3QtLWV4ZWN1dGFibGUtZmluZAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBhKSB0 KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZm91 bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAo Y2FyIGEpIChjb25zIGZvdW5kIChjZHIgYSkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3RpZmllZCkpCisgICAgICAgICAgICAgICAgICAgICAgKGF2YWlsYWJsZSAo cmVtb3ZlIG5pbCBhdWdtZW50ZWQpKSkKKyAgICAgICAgICAgICAgICAoY29uZCAoKGNkciBhdmFp bGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJbZWdsb3RdIE1vcmUgdGhhbiBvbmUgc2VydmVyIGV4ZWN1dGFibGUgYXZh aWxhYmxlOiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydjYXIg YXZhaWxhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsIHQgbmlsIG5p bCAoY2FyIChjYXIgYXZhaWxhYmxlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXZhaWxhYmxlICMnZXF1YWwpKSkKKyAgICAgICAgICAgICAgICAgICgoY2RyIChjYXIgYXZhaWxh YmxlKSkpCisgICAgICAgICAgICAgICAgICAodAorICAgICAgICAgICAgICAgICAgICA7OyBEb24n dCBlcnJvciB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseSwgbGV0IHRoZQorICAgICAgICAgICAgICAg ICAgICA7OyBFZ2xvdCBwcm9tcHQgdGhlIHVzZXIgZm9yIGFsdGVybmF0aXZlIChnaXRodWIjNzE5 KQorICAgICAgICAgICAgICAgICAgICBuaWwpKSkpCisgICAgICAgICh0CisgICAgICAgICAgKGNs LWxvb3AgZm9yIChwIC4gYXJncykgaW4gbGlzdGlmaWVkCisgICAgICAgICAgICBmb3IgcHJvYmUg PSAoZWdsb3QtLWV4ZWN1dGFibGUtZmluZCBwIHQpCisgICAgICAgICAgICB3aGVuIHByb2JlIHJl dHVybiAoY29ucyBwcm9iZSBhcmdzKQorICAgICAgICAgICAgZmluYWxseSAoZnVuY2FsbCBlcnIp KSkpKSkpCiAKIChkZWZ2YXIgZWdsb3Qtc2VydmVyLXByb2dyYW1zIGAoKHJ1c3QtbW9kZSAuICwo ZWdsb3QtYWx0ZXJuYXRpdmVzICcoInJ1c3QtYW5hbHl6ZXIiICJybHMiKSkpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjbWFrZS1tb2RlIC4gKCJjbWFrZS1sYW5ndWFnZS1zZXJ2 ZXIiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpbXJjLW1vZGUgLiAoInZp bS1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChweXRob24tbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAs KGVnbG90LWFsdGVybmF0aXZlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcoInB5bHNwIiAicHlscyIgKCJweXJpZ2h0LWxhbmdzZXJ2ZXIiICItLXN0ZGlvIikgImplZGkt bGFuZ3VhZ2Utc2VydmVyIikpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGpz LW1vZGUgdHlwZXNjcmlwdC1tb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LiAoInR5cGVzY3JpcHQtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIpKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2gtbW9kZSAuICgiYmFzaC1sYW5ndWFnZS1zZXJ2ZXIiICJz dGFydCIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHBocC1tb2RlIHBocHMt bW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJwaHAiICJ2ZW5kb3Iv ZmVsaXhmYmVja2VyL1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbWFrZS1t b2RlIC4gKCJjbWFrZS1sYW5ndWFnZS1zZXJ2ZXIiKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh2aW1yYy1tb2RlIC4gKCJ2aW0tbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB5dGhvbi1tb2RlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLChlZ2xvdC1hbHRlcm5hdGl2ZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJweWxzcCIgInB5bHMiICgicHly aWdodC1sYW5nc2VydmVyIiAiLS1zdGRpbyIpICJqZWRpLWxhbmd1YWdlLXNlcnZlciIpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoanMtbW9kZSB0eXBlc2NyaXB0LW1vZGUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJ0eXBlc2NyaXB0LWxhbmd1 YWdlLXNlcnZlciIgIi0tc3RkaW8iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzaC1tb2RlIC4gKCJiYXNoLWxhbmd1YWdlLXNlcnZlciIgInN0YXJ0IikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKHBocC1tb2RlIHBocHMtbW9kZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLiAoInBocCIgInZlbmRvci9mZWxpeGZiZWNrZXIvXAog bGFuZ3VhZ2Utc2VydmVyL2Jpbi9waHAtbGFuZ3VhZ2Utc2VydmVyLnBocCIpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGMrKy1tb2RlIGMtbW9kZSkgLiAsKGVnbG90LWFsdGVy bmF0aXZlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICcoImNsYW5nZCIgImNjbHMiKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgoKGNhbWwtbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1sIikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodHVhcmVnLW1vZGUgOmxhbmd1YWdlLWlkICJvY2FtbCIpIHJlYXNv bi1tb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoIm9jYW1sbHNwIikp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydWJ5LW1vZGUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC4gKCJzb2xhcmdyYXBoIiAic29ja2V0IiAiLS1wb3J0IiA6 YXV0b3BvcnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFza2VsbC1tb2Rl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgiaGFza2VsbC1sYW5ndWFnZS1z ZXJ2ZXItd3JhcHBlciIgIi0tbHNwIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlbG0tbW9kZSAuICgiZWxtLWxhbmd1YWdlLXNlcnZlciIpKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobWludC1tb2RlIC4gKCJtaW50IiAibHMiKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGtvdGxpbi1tb2RlIC4gKCJrb3RsaW4tbGFuZ3VhZ2Utc2VydmVy IikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnby1tb2RlIC4gKCJnb3BscyIp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFItbW9kZSBlc3Mtci1tb2RlKSAu ICgiUiIgIi0tc2xhdmUiICItZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlc2VydmVyOjpydW4oKSIpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoamF2YS1tb2RlIC4gKCJqZHRscyIpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZGFydC1tb2RlIC4gKCJkYXJ0IiAibGFuZ3VhZ2Utc2Vy dmVyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNs aWVudC1pZCIgImVtYWNzLmVnbG90LWRhcnQiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGVsaXhpci1tb2RlIC4gKCJsYW5ndWFnZV9zZXJ2ZXIuc2giKSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGFkYS1tb2RlIC4gKCJhZGFfbGFuZ3VhZ2Vfc2VydmVyIikp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY2FsYS1tb2RlIC4gKCJtZXRhbHMt ZW1hY3MiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhY2tldC1tb2RlIC4g KCJyYWNrZXQiICItbCIgInJhY2tldC1sYW5nc2VydmVyIikpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgodGV4LW1vZGUgY29udGV4dC1tb2RlIHRleGluZm8tbW9kZSBiaWJ0ZXgt bW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJkaWdlc3RpZiIpKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJsYW5nLW1vZGUgLiAoImVybGFuZ19s cyIgIi0tdHJhbnNwb3J0IiAic3RkaW8iKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHlhbWwtbW9kZSAuICgieWFtbC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuaXgtbW9kZSAuICgicm5peC1sc3AiKSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkc2NyaXB0LW1vZGUgLiAoImxvY2FsaG9z dCIgNjAwOCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZm9ydHJhbi1tb2Rl IGY5MC1tb2RlKSAuICgiZm9ydGxzIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdXRoYXJrLW1vZGUgLiAoImZ1dGhhcmsiICJsc3AiKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGx1YS1tb2RlIC4gKCJsdWEtbHNwIikpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh6aWctbW9kZSAuICgiemxzIikpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjc3MtbW9kZSAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzICcoKCJ2c2NvZGUtY3Nz LWxhbmd1YWdlLXNlcnZlciIgIi0tc3RkaW8iKSAoImNzcy1sYW5ndWFnZXNlcnZlciIgIi0tc3Rk aW8iKSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHRtbC1tb2RlIC4gLChl Z2xvdC1hbHRlcm5hdGl2ZXMgJygoInZzY29kZS1odG1sLWxhbmd1YWdlLXNlcnZlciIgIi0tc3Rk aW8iKSAoImh0bWwtbGFuZ3VhZ2VzZXJ2ZXIiICItLXN0ZGlvIikpKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGpzb24tbW9kZSAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzICcoKCJ2 c2NvZGUtanNvbi1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikgKCJqc29uLWxhbmd1YWdlc2Vy dmVyIiAiLS1zdGRpbyIpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Nr ZXJmaWxlLW1vZGUgLiAoImRvY2tlci1sYW5nc2VydmVyIiAiLS1zdGRpbyIpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGNsb2p1cmUtbW9kZSBjbG9qdXJlc2NyaXB0LW1vZGUg Y2xvanVyZWMtbW9kZSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgiY2xv anVyZS1sc3AiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNzaGFycC1tb2Rl IC4gKCJvbW5pc2hhcnAiICItbHNwIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwdXJlc2NyaXB0LW1vZGUgLiAoInB1cmVzY3JpcHQtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRp byIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGVybC1tb2RlIC4gKCJwZXJs IiAiLU1QZXJsOjpMYW5ndWFnZVNlcnZlciIgIi1lIiAiUGVybDo6TGFuZ3VhZ2VTZXJ2ZXI6OnJ1 biIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tbW9kZSAuICgi bWFya3NtYW4iICJzZXJ2ZXIiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KGMrKy1tb2RlIGMtbW9kZSkgLiAsKGVnbG90LWFsdGVybmF0aXZlcworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiY2xhbmdkIiAiY2Ns cyIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGNhbWwtbW9kZSA6bGFu Z3VhZ2UtaWQgIm9jYW1sIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 dWFyZWctbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1sIikgcmVhc29uLW1vZGUpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJvY2FtbGxzcCIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHJ1YnktbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAuICgic29sYXJncmFwaCIgInNvY2tldCIgIi0tcG9ydCIgOmF1dG9wb3J0KSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNrZWxsLW1vZGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLiAoImhhc2tlbGwtbGFuZ3VhZ2Utc2VydmVyLXdyYXBw ZXIiICItLWxzcCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsbS1tb2Rl IC4gKCJlbG0tbGFuZ3VhZ2Utc2VydmVyIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobWludC1tb2RlIC4gKCJtaW50IiAibHMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChrb3RsaW4tbW9kZSAuICgia290bGluLWxhbmd1YWdlLXNlcnZlciIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvLW1vZGUgLiAoImdvcGxzIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFItbW9kZSBlc3Mtci1tb2RlKSAuICgiUiIg Ii0tc2xhdmUiICItZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibGFuZ3VhZ2VzZXJ2ZXI6OnJ1bigpIikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoamF2YS1tb2RlIC4gKCJqZHRscyIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGRhcnQtbW9kZSAuICgiZGFydCIgImxhbmd1YWdlLXNlcnZl ciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNs aWVudC1pZCIgImVtYWNzLmVnbG90LWRhcnQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlbGl4aXItbW9kZSAuICgibGFuZ3VhZ2Vfc2VydmVyLnNoIikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYWRhLW1vZGUgLiAoImFkYV9sYW5ndWFnZV9zZXJ2ZXIi KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzY2FsYS1tb2RlIC4gKCJtZXRh bHMtZW1hY3MiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWNrZXQtbW9k ZSAuICgicmFja2V0IiAiLWwiICJyYWNrZXQtbGFuZ3NlcnZlciIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCh0ZXgtbW9kZSBjb250ZXh0LW1vZGUgdGV4aW5mby1tb2RlIGJp YnRleC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgiZGlnZXN0 aWYiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcmxhbmctbW9kZSAuICgi ZXJsYW5nX2xzIiAiLS10cmFuc3BvcnQiICJzdGRpbyIpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHlhbWwtbW9kZSAuICgieWFtbC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlv IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobml4LW1vZGUgLiAoInJuaXgt bHNwIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RzY3JpcHQtbW9kZSAu ICgibG9jYWxob3N0IiA2MDA4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo Zm9ydHJhbi1tb2RlIGY5MC1tb2RlKSAuICgiZm9ydGxzIikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnV0aGFyay1tb2RlIC4gKCJmdXRoYXJrIiAibHNwIikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobHVhLW1vZGUgLiAoImx1YS1sc3AiKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh6aWctbW9kZSAuICgiemxzIikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY3NzLW1vZGUgLiAsKGVnbG90LWFsdGVybmF0aXZl cyAnKCgidnNjb2RlLWNzcy1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikgKCJjc3MtbGFuZ3Vh Z2VzZXJ2ZXIiICItLXN0ZGlvIikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChodG1sLW1vZGUgLiAsKGVnbG90LWFsdGVybmF0aXZlcyAnKCgidnNjb2RlLWh0bWwtbGFuZ3Vh Z2Utc2VydmVyIiAiLS1zdGRpbyIpICgiaHRtbC1sYW5ndWFnZXNlcnZlciIgIi0tc3RkaW8iKSkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tbW9kZSAuICwoZWdsb3Qt YWx0ZXJuYXRpdmVzICcoKCJ2c2NvZGUtanNvbi1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikg KCJqc29uLWxhbmd1YWdlc2VydmVyIiAiLS1zdGRpbyIpKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZG9ja2VyZmlsZS1tb2RlIC4gKCJkb2NrZXItbGFuZ3NlcnZlciIgIi0t c3RkaW8iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2xvanVyZS1tb2Rl IGNsb2p1cmVzY3JpcHQtbW9kZSBjbG9qdXJlYy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuICgiY2xvanVyZS1sc3AiKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjc2hhcnAtbW9kZSAuICgib21uaXNoYXJwIiAiLWxzcCIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1cmVzY3JpcHQtbW9kZSAuICgicHVyZXNjcmlwdC1s YW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocGVybC1tb2RlIC4gKCJwZXJsIiAiLU1QZXJsOjpMYW5ndWFnZVNlcnZlciIgIi1lIiAi UGVybDo6TGFuZ3VhZ2VTZXJ2ZXI6OnJ1biIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1hcmtkb3duLW1vZGUgLiAoIm1hcmtzbWFuIiAic2VydmVyIikpKQogICAiSG93IHRo ZSBjb21tYW5kIGBlZ2xvdCcgZ3Vlc3NlcyB0aGUgc2VydmVyIHRvIHN0YXJ0LgogQW4gYXNzb2Np YXRpb24gbGlzdCBvZiAoTUFKT1ItTU9ERSAuIENPTlRBQ1QpIHBhaXJzLiAgTUFKT1ItTU9ERQog aWRlbnRpZmllcyB0aGUgYnVmZmVycyB0aGF0IGFyZSB0byBiZSBtYW5hZ2VkIGJ5IGEgc3BlY2lm aWMKQEAgLTMxNCw2ICszMTQsMTAgQEAgQ09OVEFDVCBjYW4gYmU6CiAgICcoKHQgLiAoOmluaGVy aXQgc2hhZG93IDpzdHJpa2UtdGhyb3VnaCB0KSkpCiAgICJGYWNlIHVzZWQgdG8gcmVuZGVyIGRl cHJlY2F0ZWQgb3Igb2Jzb2xldGUgY29kZS4iKQogCisoZGVmZmFjZSBlZ2xvdC1mbHltYWtlLWlu bGF5LWhpbnQKKyAgJygodCAoOmluaGVyaXQgc2hhZG93IDpoZWlnaHQgMC44KSkpCisgICJGYWNl IHVzZWQgZm9yIGlubGF5IGhpbnQgb3ZlcmxheXMgaW4gZmx5bWFrZS4iKQorCiAoZGVmY3VzdG9t IGVnbG90LWF1dG9yZWNvbm5lY3QgMwogICAiQ29udHJvbCBhYmlsaXR5IHRvIHJlY29ubmVjdCBh dXRvbWF0aWNhbGx5IHRvIHRoZSBMU1Agc2VydmVyLgogSWYgdCwgYWx3YXlzIHJlY29ubmVjdCBh dXRvbWF0aWNhbGx5IChub3QgcmVjb21tZW5kZWQpLiAgSWYgbmlsLApAQCAtMzIyLDcgKzMyNiw3 IEBAIGNyYXNoZXMgb3IgbmV0d29yayBmYWlsdXJlcy4gIEEgcG9zaXRpdmUgaW50ZWdlciBudW1i ZXIgc2F5cyB0bwogb25seSBhdXRvcmVjb25uZWN0IGlmIHRoZSBwcmV2aW91cyBzdWNjZXNzZnVs IGNvbm5lY3Rpb24gYXR0ZW1wdAogbGFzdGVkIG1vcmUgdGhhbiB0aGF0IG1hbnkgc2Vjb25kcy4i CiAgIDp0eXBlICcoY2hvaWNlIChib29sZWFuIDp0YWcgIldoZXRoZXIgdG8gaW5oaWJpdCBhdXRv cmVjb25uZWN0aW9uIikKLSAgICAgICAgICAgICAgICAgKGludGVnZXIgOnRhZyAiTnVtYmVyIG9m IHNlY29uZHMiKSkpCisgICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIk51bWJlciBvZiBzZWNvbmRz IikpKQogCiAoZGVmY3VzdG9tIGVnbG90LWNvbm5lY3QtdGltZW91dCAzMAogICAiTnVtYmVyIG9m IHNlY29uZHMgYmVmb3JlIHRpbWluZyBvdXQgTFNQIGNvbm5lY3Rpb24gYXR0ZW1wdHMuCkBAIC0z MzYsNyArMzQwLDcgQEAgaW50ZWdlciBudW1iZXIgbWVhbnMgYmxvY2sgZm9yIHRoYXQgbWFueSBz ZWNvbmRzLCBhbmQgdGhlbiB3YWl0CiBmb3IgdGhlIGNvbm5lY3Rpb24gaW4gdGhlIGJhY2tncm91 bmQuICBuaWwgaGFzIHRoZSBzYW1lIG1lYW5pbmcKIGFzIDAsIGkuZS4gZG9uJ3QgYmxvY2sgYXQg YWxsLiIKICAgOnR5cGUgJyhjaG9pY2UgKGJvb2xlYW4gOnRhZyAiV2hldGhlciB0byBpbmhpYml0 IGF1dG9yZWNvbm5lY3Rpb24iKQotICAgICAgICAgICAgICAgICAoaW50ZWdlciA6dGFnICJOdW1i ZXIgb2Ygc2Vjb25kcyIpKSkKKyAgICAgICAgICAgKGludGVnZXIgOnRhZyAiTnVtYmVyIG9mIHNl Y29uZHMiKSkpCiAKIChkZWZjdXN0b20gZWdsb3QtYXV0b3NodXRkb3duIG5pbAogICAiSWYgbm9u LW5pbCwgc2h1dCBkb3duIHNlcnZlciBhZnRlciBraWxsaW5nIGxhc3QgbWFuYWdlZCBidWZmZXIu IgpAQCAtMzU2LDEyICszNjAsMTIgQEAgRm9yIGNoYW5nZXMgb24gdGhpcyB2YXJpYWJsZSB0byB0 YWtlIGVmZmVjdCBvbiBhIGNvbm5lY3Rpb24KIGFscmVhZHkgc3RhcnRlZCwgeW91IG5lZWQgdG8g cmVzdGFydCB0aGUgY29ubmVjdGlvbi4gIFRoYXQgY2FuIGJlCiBkb25lIGJ5IGBlZ2xvdC1yZWNv bm5lY3QnLiIKICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIk5vIGxpbWl0IiBuaWwpCi0g ICAgICAgICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIk51bWJlciBvZiBjaGFyYWN0ZXJzIikpKQor ICAgICAgICAgICAoaW50ZWdlciA6dGFnICJOdW1iZXIgb2YgY2hhcmFjdGVycyIpKSkKIAogKGRl ZmN1c3RvbSBlZ2xvdC1jb25maXJtLXNlcnZlci1pbml0aWF0ZWQtZWRpdHMgJ2NvbmZpcm0KICAg Ik5vbi1uaWwgaWYgc2VydmVyLWluaXRpYXRlZCBlZGl0cyBzaG91bGQgYmUgY29uZmlybWVkIHdp dGggdXNlci4iCiAgIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJEb24ndCBzaG93IGNvbmZp cm1hdGlvbiBwcm9tcHQiIG5pbCkKLSAgICAgICAgICAgICAgICAgKHN5bWJvbCA6dGFnICJTaG93 IGNvbmZpcm1hdGlvbiBwcm9tcHQiICdjb25maXJtKSkpCisgICAgICAgICAgIChzeW1ib2wgOnRh ZyAiU2hvdyBjb25maXJtYXRpb24gcHJvbXB0IiAnY29uZmlybSkpKQogCiAoZGVmY3VzdG9tIGVn bG90LWV4dGVuZC10by14cmVmIG5pbAogICAiSWYgbm9uLW5pbCwgYWN0aXZhdGUgRWdsb3QgaW4g Y3Jvc3MtcmVmZXJlbmNlZCBub24tcHJvamVjdCBmaWxlcy4iCkBAIC0zODQsMjcgKzM4OCwyNyBA QCBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyBkb2NrZXIgdG8gcnVuIGEgbGFuZ3VhZ2Ug c2VydmVyLiIpCiA7OzsKIChkZWZjb25zdCBlZ2xvdC0tc3ltYm9sLWtpbmQtbmFtZXMKICAgYCgo MSAuICJGaWxlIikgKDIgLiAiTW9kdWxlIikKLSAgICAoMyAuICJOYW1lc3BhY2UiKSAoNCAuICJQ YWNrYWdlIikgKDUgLiAiQ2xhc3MiKQotICAgICg2IC4gIk1ldGhvZCIpICg3IC4gIlByb3BlcnR5 IikgKDggLiAiRmllbGQiKQotICAgICg5IC4gIkNvbnN0cnVjdG9yIikgKDEwIC4gIkVudW0iKSAo MTEgLiAiSW50ZXJmYWNlIikKLSAgICAoMTIgLiAiRnVuY3Rpb24iKSAoMTMgLiAiVmFyaWFibGUi KSAoMTQgLiAiQ29uc3RhbnQiKQotICAgICgxNSAuICJTdHJpbmciKSAoMTYgLiAiTnVtYmVyIikg KDE3IC4gIkJvb2xlYW4iKQotICAgICgxOCAuICJBcnJheSIpICgxOSAuICJPYmplY3QiKSAoMjAg LiAiS2V5IikKLSAgICAoMjEgLiAiTnVsbCIpICgyMiAuICJFbnVtTWVtYmVyIikgKDIzIC4gIlN0 cnVjdCIpCi0gICAgKDI0IC4gIkV2ZW50IikgKDI1IC4gIk9wZXJhdG9yIikgKDI2IC4gIlR5cGVQ YXJhbWV0ZXIiKSkpCisgICAgICgzIC4gIk5hbWVzcGFjZSIpICg0IC4gIlBhY2thZ2UiKSAoNSAu ICJDbGFzcyIpCisgICAgICg2IC4gIk1ldGhvZCIpICg3IC4gIlByb3BlcnR5IikgKDggLiAiRmll bGQiKQorICAgICAoOSAuICJDb25zdHJ1Y3RvciIpICgxMCAuICJFbnVtIikgKDExIC4gIkludGVy ZmFjZSIpCisgICAgICgxMiAuICJGdW5jdGlvbiIpICgxMyAuICJWYXJpYWJsZSIpICgxNCAuICJD b25zdGFudCIpCisgICAgICgxNSAuICJTdHJpbmciKSAoMTYgLiAiTnVtYmVyIikgKDE3IC4gIkJv b2xlYW4iKQorICAgICAoMTggLiAiQXJyYXkiKSAoMTkgLiAiT2JqZWN0IikgKDIwIC4gIktleSIp CisgICAgICgyMSAuICJOdWxsIikgKDIyIC4gIkVudW1NZW1iZXIiKSAoMjMgLiAiU3RydWN0IikK KyAgICAgKDI0IC4gIkV2ZW50IikgKDI1IC4gIk9wZXJhdG9yIikgKDI2IC4gIlR5cGVQYXJhbWV0 ZXIiKSkpCiAKIChkZWZjb25zdCBlZ2xvdC0ta2luZC1uYW1lcwogICBgKCgxIC4gIlRleHQiKSAo MiAuICJNZXRob2QiKSAoMyAuICJGdW5jdGlvbiIpICg0IC4gIkNvbnN0cnVjdG9yIikKLSAgICAo NSAuICJGaWVsZCIpICg2IC4gIlZhcmlhYmxlIikgKDcgLiAiQ2xhc3MiKSAoOCAuICJJbnRlcmZh Y2UiKQotICAgICg5IC4gIk1vZHVsZSIpICgxMCAuICJQcm9wZXJ0eSIpICgxMSAuICJVbml0Iikg KDEyIC4gIlZhbHVlIikKLSAgICAoMTMgLiAiRW51bSIpICgxNCAuICJLZXl3b3JkIikgKDE1IC4g IlNuaXBwZXQiKSAoMTYgLiAiQ29sb3IiKQotICAgICgxNyAuICJGaWxlIikgKDE4IC4gIlJlZmVy ZW5jZSIpICgxOSAuICJGb2xkZXIiKSAoMjAgLiAiRW51bU1lbWJlciIpCi0gICAgKDIxIC4gIkNv bnN0YW50IikgKDIyIC4gIlN0cnVjdCIpICgyMyAuICJFdmVudCIpICgyNCAuICJPcGVyYXRvciIp Ci0gICAgKDI1IC4gIlR5cGVQYXJhbWV0ZXIiKSkpCisgICAgICg1IC4gIkZpZWxkIikgKDYgLiAi VmFyaWFibGUiKSAoNyAuICJDbGFzcyIpICg4IC4gIkludGVyZmFjZSIpCisgICAgICg5IC4gIk1v ZHVsZSIpICgxMCAuICJQcm9wZXJ0eSIpICgxMSAuICJVbml0IikgKDEyIC4gIlZhbHVlIikKKyAg ICAgKDEzIC4gIkVudW0iKSAoMTQgLiAiS2V5d29yZCIpICgxNSAuICJTbmlwcGV0IikgKDE2IC4g IkNvbG9yIikKKyAgICAgKDE3IC4gIkZpbGUiKSAoMTggLiAiUmVmZXJlbmNlIikgKDE5IC4gIkZv bGRlciIpICgyMCAuICJFbnVtTWVtYmVyIikKKyAgICAgKDIxIC4gIkNvbnN0YW50IikgKDIyIC4g IlN0cnVjdCIpICgyMyAuICJFdmVudCIpICgyNCAuICJPcGVyYXRvciIpCisgICAgICgyNSAuICJU eXBlUGFyYW1ldGVyIikpKQogCiAoZGVmY29uc3QgZWdsb3QtLXRhZy1mYWNlcwogICBgKCgxIC4g ZWdsb3QtZGlhZ25vc3RpYy10YWctdW5uZWNlc3NhcnktZmFjZSkKLSAgICAoMiAuIGVnbG90LWRp YWdub3N0aWMtdGFnLWRlcHJlY2F0ZWQtZmFjZSkpKQorICAgICAoMiAuIGVnbG90LWRpYWdub3N0 aWMtdGFnLWRlcHJlY2F0ZWQtZmFjZSkpKQogCiAoZGVmY29uc3QgZWdsb3QtLXt9IChtYWtlLWhh c2gtdGFibGUgOnNpemUgMSkgIlRoZSBlbXB0eSBKU09OIG9iamVjdC4iKQogKGRlZnZhcmFsaWFz ICdlZ2xvdC17fSAnZWdsb3QtLXt9KQpAQCAtNDIwLDQzICs0MjQsNDMgQEAgVGhpcyBjYW4gYmUg dXNlZnVsIHdoZW4gdXNpbmcgZG9ja2VyIHRvIHJ1biBhIGxhbmd1YWdlIHNlcnZlci4iKQogKGV2 YWwtYW5kLWNvbXBpbGUKICAgKGRlZnZhciBlZ2xvdC0tbHNwLWludGVyZmFjZS1hbGlzdAogICAg IGAoCi0gICAgICAoQ29kZUFjdGlvbiAoOnRpdGxlKSAoOmtpbmQgOmRpYWdub3N0aWNzIDplZGl0 IDpjb21tYW5kIDppc1ByZWZlcnJlZCkpCi0gICAgICAoQ29uZmlndXJhdGlvbkl0ZW0gKCkgKDpz Y29wZVVyaSA6c2VjdGlvbikpCi0gICAgICAoQ29tbWFuZCAoKDp0aXRsZSAuIHN0cmluZykgKDpj b21tYW5kIC4gc3RyaW5nKSkgKDphcmd1bWVudHMpKQotICAgICAgKENvbXBsZXRpb25JdGVtICg6 bGFiZWwpCi0gICAgICAgICAgICAgICAgICAgICAgKDpraW5kIDpkZXRhaWwgOmRvY3VtZW50YXRp b24gOmRlcHJlY2F0ZWQgOnByZXNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 c29ydFRleHQgOmZpbHRlclRleHQgOmluc2VydFRleHQgOmluc2VydFRleHRGb3JtYXQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnRleHRFZGl0IDphZGRpdGlvbmFsVGV4dEVkaXRzIDpj b21taXRDaGFyYWN0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb21tYW5kIDpk YXRhIDp0YWdzKSkKLSAgICAgIChEaWFnbm9zdGljICg6cmFuZ2UgOm1lc3NhZ2UpICg6c2V2ZXJp dHkgOmNvZGUgOnNvdXJjZSA6cmVsYXRlZEluZm9ybWF0aW9uIDpjb2RlRGVzY3JpcHRpb24gOnRh Z3MpKQotICAgICAgKERvY3VtZW50SGlnaGxpZ2h0ICg6cmFuZ2UpICg6a2luZCkpCi0gICAgICAo RmlsZVN5c3RlbVdhdGNoZXIgKDpnbG9iUGF0dGVybikgKDpraW5kKSkKLSAgICAgIChIb3ZlciAo OmNvbnRlbnRzKSAoOnJhbmdlKSkKLSAgICAgIChJbml0aWFsaXplUmVzdWx0ICg6Y2FwYWJpbGl0 aWVzKSAoOnNlcnZlckluZm8pKQotICAgICAgKExvY2F0aW9uICg6dXJpIDpyYW5nZSkpCi0gICAg ICAoTG9jYXRpb25MaW5rICg6dGFyZ2V0VXJpIDp0YXJnZXRSYW5nZSA6dGFyZ2V0U2VsZWN0aW9u UmFuZ2UpICg6b3JpZ2luU2VsZWN0aW9uUmFuZ2UpKQotICAgICAgKExvZ01lc3NhZ2VQYXJhbXMg KDp0eXBlIDptZXNzYWdlKSkKLSAgICAgIChNYXJrdXBDb250ZW50ICg6a2luZCA6dmFsdWUpKQot ICAgICAgKFBhcmFtZXRlckluZm9ybWF0aW9uICg6bGFiZWwpICg6ZG9jdW1lbnRhdGlvbikpCi0g ICAgICAoUG9zaXRpb24gKDpsaW5lIDpjaGFyYWN0ZXIpKQotICAgICAgKFJhbmdlICg6c3RhcnQg OmVuZCkpCi0gICAgICAoUmVnaXN0cmF0aW9uICg6aWQgOm1ldGhvZCkgKDpyZWdpc3Rlck9wdGlv bnMpKQotICAgICAgKFJlc3BvbnNlRXJyb3IgKDpjb2RlIDptZXNzYWdlKSAoOmRhdGEpKQotICAg ICAgKFNob3dNZXNzYWdlUGFyYW1zICg6dHlwZSA6bWVzc2FnZSkpCi0gICAgICAoU2hvd01lc3Nh Z2VSZXF1ZXN0UGFyYW1zICg6dHlwZSA6bWVzc2FnZSkgKDphY3Rpb25zKSkKLSAgICAgIChTaWdu YXR1cmVIZWxwICg6c2lnbmF0dXJlcykgKDphY3RpdmVTaWduYXR1cmUgOmFjdGl2ZVBhcmFtZXRl cikpCi0gICAgICAoU2lnbmF0dXJlSW5mb3JtYXRpb24gKDpsYWJlbCkgKDpkb2N1bWVudGF0aW9u IDpwYXJhbWV0ZXJzIDphY3RpdmVQYXJhbWV0ZXIpKQotICAgICAgKFN5bWJvbEluZm9ybWF0aW9u ICg6bmFtZSA6a2luZCA6bG9jYXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgKDpkZXBy ZWNhdGVkIDpjb250YWluZXJOYW1lKSkKLSAgICAgIChEb2N1bWVudFN5bWJvbCAoOm5hbWUgOnJh bmdlIDpzZWxlY3Rpb25SYW5nZSA6a2luZCkKLSAgICAgICAgICAgICAgICAgICAgICA7OyBgOmNv bnRhaW5lck5hbWUnIGlzbid0IHJlYWxseSBhbGxvd2VkICwgYnV0Ci0gICAgICAgICAgICAgICAg ICAgICAgOzsgaXQgc2ltcGxpZmllcyB0aGUgaW1wbCBvZiBgZWdsb3QtaW1lbnUnLgotICAgICAg ICAgICAgICAgICAgICAgICg6ZGV0YWlsIDpkZXByZWNhdGVkIDpjaGlsZHJlbiA6Y29udGFpbmVy TmFtZSkpCi0gICAgICAoVGV4dERvY3VtZW50RWRpdCAoOnRleHREb2N1bWVudCA6ZWRpdHMpICgp KQotICAgICAgKFRleHRFZGl0ICg6cmFuZ2UgOm5ld1RleHQpKQotICAgICAgKFZlcnNpb25lZFRl eHREb2N1bWVudElkZW50aWZpZXIgKDp1cmkgOnZlcnNpb24pICgpKQotICAgICAgKFdvcmtzcGFj ZUVkaXQgKCkgKDpjaGFuZ2VzIDpkb2N1bWVudENoYW5nZXMpKQotICAgICAgKFdvcmtzcGFjZVN5 bWJvbCAoOm5hbWUgOmtpbmQpICg6Y29udGFpbmVyTmFtZSA6bG9jYXRpb24gOmRhdGEpKSkKKyAg ICAgICAoQ29kZUFjdGlvbiAoOnRpdGxlKSAoOmtpbmQgOmRpYWdub3N0aWNzIDplZGl0IDpjb21t YW5kIDppc1ByZWZlcnJlZCkpCisgICAgICAgKENvbmZpZ3VyYXRpb25JdGVtICgpICg6c2NvcGVV cmkgOnNlY3Rpb24pKQorICAgICAgIChDb21tYW5kICgoOnRpdGxlIC4gc3RyaW5nKSAoOmNvbW1h bmQgLiBzdHJpbmcpKSAoOmFyZ3VtZW50cykpCisgICAgICAgKENvbXBsZXRpb25JdGVtICg6bGFi ZWwpCisgICAgICAgICAoOmtpbmQgOmRldGFpbCA6ZG9jdW1lbnRhdGlvbiA6ZGVwcmVjYXRlZCA6 cHJlc2VsZWN0CisgICAgICAgICAgIDpzb3J0VGV4dCA6ZmlsdGVyVGV4dCA6aW5zZXJ0VGV4dCA6 aW5zZXJ0VGV4dEZvcm1hdAorICAgICAgICAgICA6dGV4dEVkaXQgOmFkZGl0aW9uYWxUZXh0RWRp dHMgOmNvbW1pdENoYXJhY3RlcnMKKyAgICAgICAgICAgOmNvbW1hbmQgOmRhdGEgOnRhZ3MpKQor ICAgICAgIChEaWFnbm9zdGljICg6cmFuZ2UgOm1lc3NhZ2UpICg6c2V2ZXJpdHkgOmNvZGUgOnNv dXJjZSA6cmVsYXRlZEluZm9ybWF0aW9uIDpjb2RlRGVzY3JpcHRpb24gOnRhZ3MpKQorICAgICAg IChEb2N1bWVudEhpZ2hsaWdodCAoOnJhbmdlKSAoOmtpbmQpKQorICAgICAgIChGaWxlU3lzdGVt V2F0Y2hlciAoOmdsb2JQYXR0ZXJuKSAoOmtpbmQpKQorICAgICAgIChIb3ZlciAoOmNvbnRlbnRz KSAoOnJhbmdlKSkKKyAgICAgICAoSW5pdGlhbGl6ZVJlc3VsdCAoOmNhcGFiaWxpdGllcykgKDpz ZXJ2ZXJJbmZvKSkKKyAgICAgICAoTG9jYXRpb24gKDp1cmkgOnJhbmdlKSkKKyAgICAgICAoTG9j YXRpb25MaW5rICg6dGFyZ2V0VXJpIDp0YXJnZXRSYW5nZSA6dGFyZ2V0U2VsZWN0aW9uUmFuZ2Up ICg6b3JpZ2luU2VsZWN0aW9uUmFuZ2UpKQorICAgICAgIChMb2dNZXNzYWdlUGFyYW1zICg6dHlw ZSA6bWVzc2FnZSkpCisgICAgICAgKE1hcmt1cENvbnRlbnQgKDpraW5kIDp2YWx1ZSkpCisgICAg ICAgKFBhcmFtZXRlckluZm9ybWF0aW9uICg6bGFiZWwpICg6ZG9jdW1lbnRhdGlvbikpCisgICAg ICAgKFBvc2l0aW9uICg6bGluZSA6Y2hhcmFjdGVyKSkKKyAgICAgICAoUmFuZ2UgKDpzdGFydCA6 ZW5kKSkKKyAgICAgICAoUmVnaXN0cmF0aW9uICg6aWQgOm1ldGhvZCkgKDpyZWdpc3Rlck9wdGlv bnMpKQorICAgICAgIChSZXNwb25zZUVycm9yICg6Y29kZSA6bWVzc2FnZSkgKDpkYXRhKSkKKyAg ICAgICAoU2hvd01lc3NhZ2VQYXJhbXMgKDp0eXBlIDptZXNzYWdlKSkKKyAgICAgICAoU2hvd01l c3NhZ2VSZXF1ZXN0UGFyYW1zICg6dHlwZSA6bWVzc2FnZSkgKDphY3Rpb25zKSkKKyAgICAgICAo U2lnbmF0dXJlSGVscCAoOnNpZ25hdHVyZXMpICg6YWN0aXZlU2lnbmF0dXJlIDphY3RpdmVQYXJh bWV0ZXIpKQorICAgICAgIChTaWduYXR1cmVJbmZvcm1hdGlvbiAoOmxhYmVsKSAoOmRvY3VtZW50 YXRpb24gOnBhcmFtZXRlcnMgOmFjdGl2ZVBhcmFtZXRlcikpCisgICAgICAgKFN5bWJvbEluZm9y bWF0aW9uICg6bmFtZSA6a2luZCA6bG9jYXRpb24pCisgICAgICAgICAoOmRlcHJlY2F0ZWQgOmNv bnRhaW5lck5hbWUpKQorICAgICAgIChEb2N1bWVudFN5bWJvbCAoOm5hbWUgOnJhbmdlIDpzZWxl Y3Rpb25SYW5nZSA6a2luZCkKKyAgICAgICAgIDs7IGA6Y29udGFpbmVyTmFtZScgaXNuJ3QgcmVh bGx5IGFsbG93ZWQgLCBidXQKKyAgICAgICAgIDs7IGl0IHNpbXBsaWZpZXMgdGhlIGltcGwgb2Yg YGVnbG90LWltZW51Jy4KKyAgICAgICAgICg6ZGV0YWlsIDpkZXByZWNhdGVkIDpjaGlsZHJlbiA6 Y29udGFpbmVyTmFtZSkpCisgICAgICAgKFRleHREb2N1bWVudEVkaXQgKDp0ZXh0RG9jdW1lbnQg OmVkaXRzKSAoKSkKKyAgICAgICAoVGV4dEVkaXQgKDpyYW5nZSA6bmV3VGV4dCkpCisgICAgICAg KFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgKDp1cmkgOnZlcnNpb24pICgpKQorICAg ICAgIChXb3Jrc3BhY2VFZGl0ICgpICg6Y2hhbmdlcyA6ZG9jdW1lbnRDaGFuZ2VzKSkKKyAgICAg ICAoV29ya3NwYWNlU3ltYm9sICg6bmFtZSA6a2luZCkgKDpjb250YWluZXJOYW1lIDpsb2NhdGlv biA6ZGF0YSkpKQogICAgICJBbGlzdCAoSU5URVJGQUNFLU5BTUUgLiBJTlRFUkZBQ0UpIG9mIGtu b3duIGV4dGVybmFsIExTUCBpbnRlcmZhY2VzLgogCiBJTlRFUkZBQ0UtTkFNRSBpcyBhIHN5bWJv bCBkZXNpZ25hdGVkIGJ5IHRoZSBzcGVjIGFzCkBAIC00NzQsMTAgKzQ3OCwxMCBAQCBIZXJlJ3Mg d2hhdCBhbiBlbGVtZW50IG9mIHRoaXMgYWxpc3QgbWlnaHQgbG9vayBsaWtlOgogKGV2YWwtYW5k LWNvbXBpbGUKICAgKGRlZnZhciBlZ2xvdC1zdHJpY3QtbW9kZQogICAgICcoOzsgVW5jb21tZW50 IG5leHQgbGluZXMgZm9yIGZ1biBhbmQgZGVidWdnaW5nCi0gICAgICA7OyBkaXNhbGxvdy1ub24t c3RhbmRhcmQta2V5cwotICAgICAgOzsgZW5mb3JjZS1yZXF1aXJlZC1rZXlzCi0gICAgICA7OyBl bmZvcmNlLW9wdGlvbmFsLWtleXMKLSAgICAgICkKKyAgICAgICA7OyBkaXNhbGxvdy1ub24tc3Rh bmRhcmQta2V5cworICAgICAgIDs7IGVuZm9yY2UtcmVxdWlyZWQta2V5cworICAgICAgIDs7IGVu Zm9yY2Utb3B0aW9uYWwta2V5cworICAgICAgICkKICAgICAiSG93IHN0cmljdGx5IHRvIGNoZWNr IExTUCBpbnRlcmZhY2VzIGF0IGNvbXBpbGUtIGFuZCBydW4tdGltZS4KIAogVmFsdWUgaXMgYSBs aXN0IG9mIHN5bWJvbHMgKGlmIHRoZSBsaXN0IGlzIGVtcHR5LCBubyBjaGVja3MgYXJlCkBAIC01 MDEsMzEgKzUwNSwzMSBAQCBJZiB0aGUgc3ltYm9sIGBkaXNhbGxvdy11bmtub3duLW1ldGhvZHMn IGlzIHByZXNlbnQsIEVnbG90IHdhcm5zCiBvbiB1bmtub3duIG5vdGlmaWNhdGlvbnMgYW5kIGVy cm9ycyBvbiB1bmtub3duIHJlcXVlc3RzLiIpKQogCiAoY2wtZGVmdW4gZWdsb3QtLWNoZWNrLW9i amVjdCAoaW50ZXJmYWNlLW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl Y3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZW5mb3JjZS1yZXF1aXJlZCB0KQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChkaXNhbGxvdy1ub24tc3RhbmRhcmQgdCkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2hlY2stdHlwZXMgdCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9iamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9u YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZm9yY2UtcmVxdWlyZWQgdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpc2FsbG93LW5vbi1zdGFuZGFyZCB0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2stdHlwZXMgdCkpCiAgICJD aGVjayB0aGF0IE9CSkVDVCBjb25mb3JtcyB0byBJTlRFUkZBQ0UuICBFcnJvciBvdGhlcndpc2Uu IgogICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kCi0gICAgICAoJmtleSB0eXBlcyByZXF1aXJlZC1r ZXlzIG9wdGlvbmFsLWtleXMgJmFsbG93LW90aGVyLWtleXMpCi0gICAgICAoZWdsb3QtLWludGVy ZmFjZSBpbnRlcmZhY2UtbmFtZSkKKyAgICAoJmtleSB0eXBlcyByZXF1aXJlZC1rZXlzIG9wdGlv bmFsLWtleXMgJmFsbG93LW90aGVyLWtleXMpCisgICAgKGVnbG90LS1pbnRlcmZhY2UgaW50ZXJm YWNlLW5hbWUpCiAgICAgKHdoZW4tbGV0ICgobWlzc2luZyAoYW5kIGVuZm9yY2UtcmVxdWlyZWQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlIHJlcXVpcmVk LWtleXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl Z2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo Y2wtc2V0LWRpZmZlcmVuY2UgcmVxdWlyZWQta2V5cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpKSkpKQogICAgICAgKGVnbG90LS1lcnJvciAi QSBgJXMnIG11c3QgaGF2ZSAlcyIgaW50ZXJmYWNlLW5hbWUgbWlzc2luZykpCiAgICAgKHdoZW4t bGV0ICgoZXhjZXNzIChhbmQgZGlzYWxsb3ctbm9uLXN0YW5kYXJkCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChhcHBlbmQgcmVxdWlyZWQta2V5cyBvcHRpb25hbC1rZXlzKSkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoY2wtc2V0LWRpZmZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXBwZW5kIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cykpKSkpCiAgICAgICAoZWdsb3Qt LWVycm9yICJBIGAlcycgbXVzdG4ndCBoYXZlICVzIiBpbnRlcmZhY2UtbmFtZSBleGNlc3MpKQog ICAgICh3aGVuIGNoZWNrLXR5cGVzCiAgICAgICAoY2wtbG9vcAotICAgICAgIGZvciAoayB2KSBv biBvYmplY3QgYnkgIydjZGRyCi0gICAgICAgZm9yIHR5cGUgPSAob3IgKGNkciAoYXNzb2MgayB0 eXBlcykpIHQpIDs7IEZJWE1FOiBlbmZvcmNlIG5pbCB0eXBlPwotICAgICAgIHVubGVzcyAoY2wt dHlwZXAgdiB0eXBlKQotICAgICAgIGRvIChlZ2xvdC0tZXJyb3IgIkEgYCVzJyBtdXN0IGhhdmUg YSAlcyBhcyAlcywgYnV0IGhhcyAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFj ZS1uYW1lICkpKQorICAgICAgICBmb3IgKGsgdikgb24gb2JqZWN0IGJ5ICMnY2RkcgorICAgICAg ICBmb3IgdHlwZSA9IChvciAoY2RyIChhc3NvYyBrIHR5cGVzKSkgdCkgOzsgRklYTUU6IGVuZm9y Y2UgbmlsIHR5cGU/CisgICAgICAgIHVubGVzcyAoY2wtdHlwZXAgdiB0eXBlKQorICAgICAgICBk byAoZWdsb3QtLWVycm9yICJBIGAlcycgbXVzdCBoYXZlIGEgJXMgYXMgJXMsIGJ1dCBoYXMgJXMi CisgICAgICAgICAgICAgaW50ZXJmYWNlLW5hbWUgKSkpCiAgICAgdCkpCiAKIChldmFsLWFuZC1j b21waWxlCkBAIC01MzYsNDQgKzU0MCw0NCBAQCBvbiB1bmtub3duIG5vdGlmaWNhdGlvbnMgYW5k IGVycm9ycyBvbiB1bmtub3duIHJlcXVlc3RzLiIpKQogCiAgIChkZWZ1biBlZ2xvdC0taW50ZXJm YWNlIChpbnRlcmZhY2UtbmFtZSkKICAgICAobGV0KiAoKGludGVyZmFjZSAoYXNzb2MgaW50ZXJm YWNlLW5hbWUgZWdsb3QtLWxzcC1pbnRlcmZhY2UtYWxpc3QpKQotICAgICAgICAgICAocmVxdWly ZWQgKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtdHlwZSAoY2FyIChjZHIgaW50ZXJmYWNlKSkpKQot ICAgICAgICAgICAob3B0aW9uYWwgKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtdHlwZSAoY2FkciAo Y2RyIGludGVyZmFjZSkpKSkpCisgICAgICAgICAgICAocmVxdWlyZWQgKG1hcGNhciAjJ2VnbG90 LS1lbnN1cmUtdHlwZSAoY2FyIChjZHIgaW50ZXJmYWNlKSkpKQorICAgICAgICAgICAgKG9wdGlv bmFsIChtYXBjYXIgIydlZ2xvdC0tZW5zdXJlLXR5cGUgKGNhZHIgKGNkciBpbnRlcmZhY2UpKSkp KQogICAgICAgKGxpc3QgOnR5cGVzIChhcHBlbmQgcmVxdWlyZWQgb3B0aW9uYWwpCi0gICAgICAg ICAgICA6cmVxdWlyZWQta2V5cyAobWFwY2FyICMnY2FyIHJlcXVpcmVkKQotICAgICAgICAgICAg Om9wdGlvbmFsLWtleXMgKG1hcGNhciAjJ2NhciBvcHRpb25hbCkpKSkKKyAgICAgICAgOnJlcXVp cmVkLWtleXMgKG1hcGNhciAjJ2NhciByZXF1aXJlZCkKKyAgICAgICAgOm9wdGlvbmFsLWtleXMg KG1hcGNhciAjJ2NhciBvcHRpb25hbCkpKSkKIAogICAoZGVmdW4gZWdsb3QtLWNoZWNrLWRzcGVj IChpbnRlcmZhY2UtbmFtZSBkc3BlYykKICAgICAiQ2hlY2sgZGVzdHJ1Y3R1cmluZyBzcGVjIERT UEVDIGFnYWluc3QgSU5URVJGQUNFLU5BTUUuIgogICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQg KCZrZXkgcmVxdWlyZWQta2V5cyBvcHRpb25hbC1rZXlzICZhbGxvdy1vdGhlci1rZXlzKQotICAg ICAgICAoZWdsb3QtLWludGVyZmFjZSBpbnRlcmZhY2UtbmFtZSkKKyAgICAgIChlZ2xvdC0taW50 ZXJmYWNlIGludGVyZmFjZS1uYW1lKQogICAgICAgKGNvbmQgKChvciByZXF1aXJlZC1rZXlzIG9w dGlvbmFsLWtleXMpCi0gICAgICAgICAgICAgKGxldCAoKHRvby1tYW55Ci0gICAgICAgICAgICAg ICAgICAgIChhbmQKLSAgICAgICAgICAgICAgICAgICAgIChtZW1xICdkaXNhbGxvdy1ub24tc3Rh bmRhcmQta2V5cyBlZ2xvdC1zdHJpY3QtbW9kZSkKLSAgICAgICAgICAgICAgICAgICAgIChjbC1z ZXQtZGlmZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0ta2V5d29yZGl6ZS12 YXJzIGRzcGVjKQotICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgcmVxdWlyZWQta2V5cyBv cHRpb25hbC1rZXlzKSkpKQotICAgICAgICAgICAgICAgICAgIChpZ25vcmVkLXJlcXVpcmVkCi0g ICAgICAgICAgICAgICAgICAgIChhbmQKLSAgICAgICAgICAgICAgICAgICAgIChtZW1xICdlbmZv cmNlLXJlcXVpcmVkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCi0gICAgICAgICAgICAgICAgICAg ICAoY2wtc2V0LWRpZmZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZC1rZXlz IChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVjKSkpKQotICAgICAgICAgICAgICAgICAgICht aXNzaW5nLW91dAotICAgICAgICAgICAgICAgICAgICAoYW5kCi0gICAgICAgICAgICAgICAgICAg ICAobWVtcSAnZW5mb3JjZS1vcHRpb25hbC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQotICAgICAg ICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAg b3B0aW9uYWwta2V5cyAoZWdsb3QtLWtleXdvcmRpemUtdmFycyBkc3BlYykpKSkpCi0gICAgICAg ICAgICAgICAod2hlbiB0b28tbWFueSAoYnl0ZS1jb21waWxlLXdhcm4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiRGVzdHJ1Y3R1cmluZyBmb3IgJXMgaGFzIGV4dHJhbmVvdXMgJXMi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLW5hbWUgdG9vLW1hbnkp KQotICAgICAgICAgICAgICAgKHdoZW4gaWdub3JlZC1yZXF1aXJlZCAoYnl0ZS1jb21waWxlLXdh cm4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN0cnVjdHVyaW5n IGZvciAlcyBpZ25vcmVzIHJlcXVpcmVkICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ZXJmYWNlLW5hbWUgaWdub3JlZC1yZXF1aXJlZCkpCi0gICAgICAgICAg ICAgICAod2hlbiBtaXNzaW5nLW91dCAoYnl0ZS1jb21waWxlLXdhcm4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiRGVzdHJ1Y3R1cmluZyBmb3IgJXMgaXMgbWlzc2luZyBvdXQg b24gJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLW5hbWUg bWlzc2luZy1vdXQpKSkpCi0gICAgICAgICAgICAodAotICAgICAgICAgICAgIChieXRlLWNvbXBp bGUtd2FybiAiVW5rbm93biBMU1AgaW50ZXJmYWNlICVzIiBpbnRlcmZhY2UtbmFtZSkpKSkpKQor ICAgICAgICAgICAgICAobGV0ICgodG9vLW1hbnkKKyAgICAgICAgICAgICAgICAgICAgICAoYW5k CisgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnZGlzYWxsb3ctbm9uLXN0YW5kYXJkLWtl eXMgZWdsb3Qtc3RyaWN0LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAoY2wtc2V0LWRp ZmZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1rZXl3b3JkaXplLXZh cnMgZHNwZWMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgcmVxdWlyZWQta2V5 cyBvcHRpb25hbC1rZXlzKSkpKQorICAgICAgICAgICAgICAgICAgICAgKGlnbm9yZWQtcmVxdWly ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgKGFuZAorICAgICAgICAgICAgICAgICAgICAgICAg IChtZW1xICdlbmZvcmNlLXJlcXVpcmVkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXF1aXJlZC1rZXlzIChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVjKSkpKQor ICAgICAgICAgICAgICAgICAgICAgKG1pc3Npbmctb3V0CisgICAgICAgICAgICAgICAgICAgICAg IChhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnZW5mb3JjZS1vcHRpb25hbC1r ZXlzIGVnbG90LXN0cmljdC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1zZXQt ZGlmZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwta2V5cyAoZWds b3QtLWtleXdvcmRpemUtdmFycyBkc3BlYykpKSkpCisgICAgICAgICAgICAgICAgKHdoZW4gdG9v LW1hbnkgKGJ5dGUtY29tcGlsZS13YXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiRGVzdHJ1Y3R1cmluZyBmb3IgJXMgaGFzIGV4dHJhbmVvdXMgJXMiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtbmFtZSB0b28tbWFueSkpCisgICAgICAgICAg ICAgICAgKHdoZW4gaWdub3JlZC1yZXF1aXJlZCAoYnl0ZS1jb21waWxlLXdhcm4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc3RydWN0dXJpbmcgZm9yICVzIGln bm9yZXMgcmVxdWlyZWQgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludGVyZmFjZS1uYW1lIGlnbm9yZWQtcmVxdWlyZWQpKQorICAgICAgICAgICAgICAgICh3 aGVuIG1pc3Npbmctb3V0IChieXRlLWNvbXBpbGUtd2FybgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkRlc3RydWN0dXJpbmcgZm9yICVzIGlzIG1pc3Npbmcgb3V0IG9uICVz IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLW5hbWUgbWlz c2luZy1vdXQpKSkpCisgICAgICAgICh0CisgICAgICAgICAgKGJ5dGUtY29tcGlsZS13YXJuICJV bmtub3duIExTUCBpbnRlcmZhY2UgJXMiIGludGVyZmFjZS1uYW1lKSkpKSkpCiAKIChjbC1kZWZt YWNybyBlZ2xvdC0tZGJpbmQgKHZhcnMgb2JqZWN0ICZib2R5IGJvZHkpCiAgICJEZXN0cnVjdHVy ZSBPQkpFQ1QsIGJpbmRpbmcgVkFSUyBpbiBCT0RZLgpAQCAtNTgxLDI2ICs1ODUsMjYgQEAgVkFS UyBpcyAoWyhJTlRFUkZBQ0UpXSBTWU1TLi4uKQogSG9ub3VyIGBlZ2xvdC1zdHJpY3QtbW9kZScu IgogICAoZGVjbGFyZSAoaW5kZW50IDIpIChkZWJ1ZyAoc2V4cCBzZXhwICZyZXN0IGZvcm0pKSkK ICAgKGxldCAoKGludGVyZmFjZS1uYW1lIChpZiAoY29uc3AgKGNhciB2YXJzKSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIChwb3AgdmFycykpKSkKLSAgICAgICAgKG9iamVjdC1v bmNlIChtYWtlLXN5bWJvbCAib2JqZWN0LW9uY2UiKSkKLSAgICAgICAgKGZuLW9uY2UgKG1ha2Ut c3ltYm9sICJmbi1vbmNlIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIChwb3Ag dmFycykpKSkKKyAgICAgICAgIChvYmplY3Qtb25jZSAobWFrZS1zeW1ib2wgIm9iamVjdC1vbmNl IikpCisgICAgICAgICAoZm4tb25jZSAobWFrZS1zeW1ib2wgImZuLW9uY2UiKSkpCiAgICAgKGNv bmQgKGludGVyZmFjZS1uYW1lCi0gICAgICAgICAgIChlZ2xvdC0tY2hlY2stZHNwZWMgaW50ZXJm YWNlLW5hbWUgdmFycykKLSAgICAgICAgICAgYChsZXQgKCgsb2JqZWN0LW9uY2UgLG9iamVjdCkp Ci0gICAgICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgLEB2YXJzICZhbGxv dy1vdGhlci1rZXlzKSAsb2JqZWN0LW9uY2UKLSAgICAgICAgICAgICAgICAoZWdsb3QtLWNoZWNr LW9iamVjdCAnLGludGVyZmFjZS1uYW1lICxvYmplY3Qtb25jZQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1xICdlbmZvcmNlLXJlcXVpcmVkLWtleXMgZWdsb3Qtc3Ry aWN0LW1vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEgJ2Rp c2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1xICdjaGVjay10eXBlcyBlZ2xvdC1zdHJpY3Qt bW9kZSkpCi0gICAgICAgICAgICAgICAgLEBib2R5KSkpCi0gICAgICAgICAgKHQKLSAgICAgICAg ICAgYChsZXQgKCgsb2JqZWN0LW9uY2UgLG9iamVjdCkKLSAgICAgICAgICAgICAgICAgICgsZm4t b25jZSAobGFtYmRhICgsQHZhcnMpICxAYm9keSkpKQotICAgICAgICAgICAgICAoaWYgKG1lbXEg J2Rpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQotICAgICAgICAg ICAgICAgICAgKGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMpICxvYmplY3Qtb25j ZQotICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKQotICAgICAg ICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgLEB2YXJzICZhbGxvdy1vdGhl ci1rZXlzKSAsb2JqZWN0LW9uY2UKLSAgICAgICAgICAgICAgICAgIChmdW5jYWxsICxmbi1vbmNl ICxAdmFycykpKSkpKSkpCisgICAgICAgICAgICAoZWdsb3QtLWNoZWNrLWRzcGVjIGludGVyZmFj ZS1uYW1lIHZhcnMpCisgICAgICAgICAgICBgKGxldCAoKCxvYmplY3Qtb25jZSAsb2JqZWN0KSkK KyAgICAgICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgLEB2YXJzICZhbGxv dy1vdGhlci1rZXlzKSAsb2JqZWN0LW9uY2UKKyAgICAgICAgICAgICAgICAgKGVnbG90LS1jaGVj ay1vYmplY3QgJyxpbnRlcmZhY2UtbmFtZSAsb2JqZWN0LW9uY2UKKyAgICAgICAgICAgICAgICAg ICAobWVtcSAnZW5mb3JjZS1yZXF1aXJlZC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQorICAgICAg ICAgICAgICAgICAgIChtZW1xICdkaXNhbGxvdy1ub24tc3RhbmRhcmQta2V5cyBlZ2xvdC1zdHJp Y3QtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAobWVtcSAnY2hlY2stdHlwZXMgZWdsb3Qtc3Ry aWN0LW1vZGUpKQorICAgICAgICAgICAgICAgICAsQGJvZHkpKSkKKyAgICAgICh0CisgICAgICAg IGAobGV0ICgoLG9iamVjdC1vbmNlICxvYmplY3QpCisgICAgICAgICAgICAgICAgKCxmbi1vbmNl IChsYW1iZGEgKCxAdmFycykgLEBib2R5KSkpCisgICAgICAgICAgIChpZiAobWVtcSAnZGlzYWxs b3ctbm9uLXN0YW5kYXJkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCisgICAgICAgICAgICAgKGNs LWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMpICxvYmplY3Qtb25jZQorICAgICAgICAg ICAgICAgKGZ1bmNhbGwgLGZuLW9uY2UgLEB2YXJzKSkKKyAgICAgICAgICAgICAoY2wtZGVzdHJ1 Y3R1cmluZy1iaW5kICgma2V5ICxAdmFycyAmYWxsb3ctb3RoZXIta2V5cykgLG9iamVjdC1vbmNl CisgICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKSkpKSkpKQogCiAKIChj bC1kZWZtYWNybyBlZ2xvdC0tbGFtYmRhIChjbC1sYW1iZGEtbGlzdCAmYm9keSBib2R5KQpAQCAt NjE4LDM4ICs2MjIsMzggQEAgdHJlYXRlZCBhcyBpbiBgZWdsb3QtZGJpbmQnLiIKICAgKGxldCAo KG9iai1vbmNlIChtYWtlLXN5bWJvbCAib2JqLW9uY2UiKSkpCiAgICAgYChsZXQgKCgsb2JqLW9u Y2UgLG9iaikpCiAgICAgICAgKGNvbmQKLSAgICAgICAgLEAoY2wtbG9vcAotICAgICAgICAgICBm b3IgKHZhcnMgLiBib2R5KSBpbiBjbGF1c2VzCi0gICAgICAgICAgIGZvciB2YXJzLWFzLWtleXdv cmRzID0gKGVnbG90LS1rZXl3b3JkaXplLXZhcnMgdmFycykKLSAgICAgICAgICAgZm9yIGludGVy ZmFjZS1uYW1lID0gKGlmIChjb25zcCAoY2FyIHZhcnMpKQorICAgICAgICAgLEAoY2wtbG9vcAor ICAgICAgICAgICAgIGZvciAodmFycyAuIGJvZHkpIGluIGNsYXVzZXMKKyAgICAgICAgICAgICBm b3IgdmFycy1hcy1rZXl3b3JkcyA9IChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIHZhcnMpCisgICAg ICAgICAgICAgZm9yIGludGVyZmFjZS1uYW1lID0gKGlmIChjb25zcCAoY2FyIHZhcnMpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciAocG9wIHZhcnMpKSkKLSAgICAg ICAgICAgZm9yIGNvbmRpdGlvbiA9Ci0gICAgICAgICAgIChjb25kIChpbnRlcmZhY2UtbmFtZQot ICAgICAgICAgICAgICAgICAgKGVnbG90LS1jaGVjay1kc3BlYyBpbnRlcmZhY2UtbmFtZSB2YXJz KQotICAgICAgICAgICAgICAgICAgOzsgSW4gdGhpcyBtb2RlLCBpbiBydW50aW1lLCB3ZSBhc3N1 bWUKLSAgICAgICAgICAgICAgICAgIDs7IGBlZ2xvdC1zdHJpY3QtbW9kZScgaXMgcGFydGlhbGx5 IG9uLCBvdGhlcndpc2Ugd2UKLSAgICAgICAgICAgICAgICAgIDs7IGNhbid0IGRpc2FtYmlndWF0 ZSBiZXR3ZWVuIGNlcnRhaW4gdHlwZXMuCi0gICAgICAgICAgICAgICAgICBgKGlnbm9yZS1lcnJv cnMKLSAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tY2hlY2stb2JqZWN0Ci0gICAgICAgICAg ICAgICAgICAgICAgJyxpbnRlcmZhY2UtbmFtZSAsb2JqLW9uY2UKLSAgICAgICAgICAgICAgICAg ICAgICB0Ci0gICAgICAgICAgICAgICAgICAgICAgKG1lbXEgJ2Rpc2FsbG93LW5vbi1zdGFuZGFy ZC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQotICAgICAgICAgICAgICAgICAgICAgIHQpKSkKLSAg ICAgICAgICAgICAgICAgKHQKLSAgICAgICAgICAgICAgICAgIDs7IEluIHRoaXMgaW50ZXJmYWNl LWxlc3MgbW9kZSB3ZSBkb24ndCBjaGVjawotICAgICAgICAgICAgICAgICAgOzsgYGVnbG90LXN0 cmljdC1tb2RlJyBhdCBhbGw6IGp1c3QgY2hlY2sgdGhhdCB0aGUgb2JqZWN0Ci0gICAgICAgICAg ICAgICAgICA7OyBoYXMgYWxsIHRoZSBrZXlzIHRoZSB1c2VyIHdhbnRzIHRvIGRlc3RydWN0dXJl LgotICAgICAgICAgICAgICAgICAgYChudWxsIChjbC1zZXQtZGlmZmVyZW5jZQorICAgICAgICAg ICAgIGZvciBjb25kaXRpb24gPQorICAgICAgICAgICAgIChjb25kIChpbnRlcmZhY2UtbmFtZQor ICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1jaGVjay1kc3BlYyBpbnRlcmZhY2UtbmFtZSB2 YXJzKQorICAgICAgICAgICAgICAgICAgICAgOzsgSW4gdGhpcyBtb2RlLCBpbiBydW50aW1lLCB3 ZSBhc3N1bWUKKyAgICAgICAgICAgICAgICAgICAgIDs7IGBlZ2xvdC1zdHJpY3QtbW9kZScgaXMg cGFydGlhbGx5IG9uLCBvdGhlcndpc2Ugd2UKKyAgICAgICAgICAgICAgICAgICAgIDs7IGNhbid0 IGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGNlcnRhaW4gdHlwZXMuCisgICAgICAgICAgICAgICAgICAg ICBgKGlnbm9yZS1lcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tY2hlY2st b2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICcsaW50ZXJmYWNlLW5hbWUgLG9iai1v bmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1lbXEgJ2Rpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzIGVnbG90LXN0cmljdC1tb2RlKQor ICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkpCisgICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgICA7OyBJbiB0aGlzIGludGVyZmFjZS1sZXNzIG1vZGUgd2UgZG9uJ3QgY2hlY2sK KyAgICAgICAgICAgICAgICAgOzsgYGVnbG90LXN0cmljdC1tb2RlJyBhdCBhbGw6IGp1c3QgY2hl Y2sgdGhhdCB0aGUgb2JqZWN0CisgICAgICAgICAgICAgICAgIDs7IGhhcyBhbGwgdGhlIGtleXMg dGhlIHVzZXIgd2FudHMgdG8gZGVzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgIGAobnVsbCAo Y2wtc2V0LWRpZmZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgJyx2YXJzLWFzLWtl eXdvcmRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tcGxpc3Qta2V5cyAsb2Jq LW9uY2UpKSkpKQotICAgICAgICAgICBjb2xsZWN0IGAoLGNvbmRpdGlvbgotICAgICAgICAgICAg ICAgICAgICAgKGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMgJmFsbG93LW90aGVy LWtleXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgLG9iai1vbmNlCi0gICAgICAgICAgICAg ICAgICAgICAgICxAYm9keSkpKQotICAgICAgICAodAotICAgICAgICAgKGVnbG90LS1lcnJvciAi JVMgZGlkbid0IG1hdGNoIGFueSBvZiAlUyIKLSAgICAgICAgICAgICAgICAgICAgICAgLG9iai1v bmNlCi0gICAgICAgICAgICAgICAgICAgICAgICcsKG1hcGNhciAjJ2NhciBjbGF1c2VzKSkpKSkp KQorICAgICAgICAgICAgIGNvbGxlY3QgYCgsY29uZGl0aW9uCisgICAgICAgICAgICAgICAgICAg ICAgICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kICgma2V5ICxAdmFycyAmYWxsb3ctb3RoZXIta2V5 cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLG9iai1vbmNlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICxAYm9keSkpKQorICAgICAgICAgKHQKKyAgICAgICAgICAgKGVnbG90LS1lcnJv ciAiJVMgZGlkbid0IG1hdGNoIGFueSBvZiAlUyIKKyAgICAgICAgICAgICAsb2JqLW9uY2UKKyAg ICAgICAgICAgICAnLChtYXBjYXIgIydjYXIgY2xhdXNlcykpKSkpKSkKIAogDAogOzs7IEFQSSAo V09SSy1JTi1QUk9HUkVTUyEpCkBAIC02ODMsMTU0ICs2ODcsMTU0IEBAIHRyZWF0ZWQgYXMgaW4g YGVnbG90LWRiaW5kJy4iCiAoY2wtZGVmZ2VuZXJpYyBlZ2xvdC1pbml0aWFsaXphdGlvbi1vcHRp b25zIChzZXJ2ZXIpCiAgICJKU09OIG9iamVjdCB0byBzZW5kIHVuZGVyIGBpbml0aWFsaXphdGlv bk9wdGlvbnMnLiIKICAgKDptZXRob2QgKHMpCi0gICAobGV0ICgocHJvYmUgKHBsaXN0LWdldCAo ZWdsb3QtLXNhdmVkLWluaXRhcmdzIHMpIDppbml0aWFsaXphdGlvbk9wdGlvbnMpKSkKLSAgICAg KGNvbmQgKChmdW5jdGlvbnAgcHJvYmUpIChmdW5jYWxsIHByb2JlIHMpKQotICAgICAgICAgICAo cHJvYmUpCi0gICAgICAgICAgICh0IGVnbG90LS17fSkpKSkpCisgICAgKGxldCAoKHByb2JlIChw bGlzdC1nZXQgKGVnbG90LS1zYXZlZC1pbml0YXJncyBzKSA6aW5pdGlhbGl6YXRpb25PcHRpb25z KSkpCisgICAgICAoY29uZCAoKGZ1bmN0aW9ucCBwcm9iZSkgKGZ1bmNhbGwgcHJvYmUgcykpCisg ICAgICAgIChwcm9iZSkKKyAgICAgICAgKHQgZWdsb3QtLXt9KSkpKSkKIAogKGNsLWRlZmdlbmVy aWMgZWdsb3QtcmVnaXN0ZXItY2FwYWJpbGl0eSAoc2VydmVyIG1ldGhvZCBpZCAmcmVzdCBwYXJh bXMpCiAgICJBc2sgU0VSVkVSIHRvIHJlZ2lzdGVyIGNhcGFiaWxpdHkgTUVUSE9EIG1hcmtlZCB3 aXRoIElELiIKICAgKDptZXRob2QKLSAgIChfcyBtZXRob2QgX2lkICZyZXN0IF9wYXJhbXMpCi0g ICAoZWdsb3QtLXdhcm4gIlNlcnZlciB0cmllZCB0byByZWdpc3RlciB1bnN1cHBvcnRlZCBjYXBh YmlsaXR5IGAlcyciCi0gICAgICAgICAgICAgICAgbWV0aG9kKSkpCisgICAgKF9zIG1ldGhvZCBf aWQgJnJlc3QgX3BhcmFtcykKKyAgICAoZWdsb3QtLXdhcm4gIlNlcnZlciB0cmllZCB0byByZWdp c3RlciB1bnN1cHBvcnRlZCBjYXBhYmlsaXR5IGAlcyciCisgICAgICBtZXRob2QpKSkKIAogKGNs LWRlZmdlbmVyaWMgZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5IChzZXJ2ZXIgbWV0aG9kIGlk ICZyZXN0IHBhcmFtcykKICAgIkFzayBTRVJWRVIgdG8gcmVnaXN0ZXIgY2FwYWJpbGl0eSBNRVRI T0QgbWFya2VkIHdpdGggSUQuIgogICAoOm1ldGhvZAotICAgKF9zIG1ldGhvZCBfaWQgJnJlc3Qg X3BhcmFtcykKLSAgIChlZ2xvdC0td2FybiAiU2VydmVyIHRyaWVkIHRvIHVucmVnaXN0ZXIgdW5z dXBwb3J0ZWQgY2FwYWJpbGl0eSBgJXMnIgotICAgICAgICAgICAgICAgIG1ldGhvZCkpKQorICAg IChfcyBtZXRob2QgX2lkICZyZXN0IF9wYXJhbXMpCisgICAgKGVnbG90LS13YXJuICJTZXJ2ZXIg dHJpZWQgdG8gdW5yZWdpc3RlciB1bnN1cHBvcnRlZCBjYXBhYmlsaXR5IGAlcyciCisgICAgICBt ZXRob2QpKSkKIAogKGNsLWRlZmdlbmVyaWMgZWdsb3QtY2xpZW50LWNhcGFiaWxpdGllcyAoc2Vy dmVyKQogICAiV2hhdCB0aGUgRWdsb3QgTFNQIGNsaWVudCBzdXBwb3J0cyBmb3IgU0VSVkVSLiIK ICAgKDptZXRob2QgKHMpCi0gICAgICAgICAgIChsaXN0Ci0gICAgICAgICAgICA6d29ya3NwYWNl IChsaXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICA6YXBwbHlFZGl0IHQKLSAgICAgICAgICAg ICAgICAgICAgICAgIDpleGVjdXRlQ29tbWFuZCBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u LWZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFjZUVkaXQgYCg6ZG9jdW1l bnRDaGFuZ2VzIHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6ZGlkQ2hhbmdlV2F0Y2hlZEZp bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICwoaWYgKGVnbG90LS10cmFtcGlzaC1wIHMpIDpqc29uLWZh bHNlIHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgOnN5bWJvbCBgKDpkeW5hbWljUmVnaXN0 cmF0aW9uIDpqc29uLWZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgOmNvbmZpZ3VyYXRp b24gdAotICAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFjZUZvbGRlcnMgdCkKLSAgICAg ICAgICAgIDp0ZXh0RG9jdW1lbnQKLSAgICAgICAgICAgIChsaXN0Ci0gICAgICAgICAgICAgOnN5 bmNocm9uaXphdGlvbiAobGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkeW5h bWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOndpbGxTYXZlIHQgOndpbGxTYXZlV2FpdFVudGlsIHQgOmRpZFNhdmUgdCkKLSAgICAgICAg ICAgICA6Y29tcGxldGlvbiAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZh bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29tcGxldGlvbkl0ZW0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOnNuaXBwZXRTdXBwb3J0Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoaWYgKGVnbG90LS1zbmlwcGV0 LWV4cGFuc2lvbi1mbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpqc29uLWZhbHNl KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGVwcmVjYXRlZFN1cHBv cnQgdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGFnU3VwcG9ydCAo OnZhbHVlU2V0IFsxXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29u dGV4dFN1cHBvcnQgdCkKLSAgICAgICAgICAgICA6aG92ZXIgICAgICAgICAgICAgIChsaXN0IDpk eW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6Y29udGVudEZvcm1hdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChmYm91bmRwICdnZm0tdmlldy1tb2RlKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibWFya2Rvd24iICJwbGFpbnRleHQiXQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbInBsYWludGV4dCJdKSkKLSAg ICAgICAgICAgICA6c2lnbmF0dXJlSGVscCAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9u IDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2ln bmF0dXJlSW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGAoOnBhcmFtZXRlckluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg6bGFiZWxPZmZzZXRTdXBwb3J0IHQpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDphY3RpdmVQYXJhbWV0ZXJTdXBwb3J0IHQpKQotICAgICAgICAg ICAgIDpyZWZlcmVuY2VzICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxz ZSkKLSAgICAgICAgICAgICA6ZGVmaW5pdGlvbiAgICAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0 cmF0aW9uIDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6bGlua1N1cHBvcnQgdCkKLSAgICAgICAgICAgICA6ZGVjbGFyYXRpb24gICAgICAgIChsaXN0 IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6bGlua1N1cHBvcnQgdCkKLSAgICAgICAgICAgICA6aW1wbGVtZW50 YXRpb24gICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlua1N1cHBvcnQgdCkKLSAgICAgICAg ICAgICA6dHlwZURlZmluaXRpb24gICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u LWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlua1N1cHBv cnQgdCkKLSAgICAgICAgICAgICA6ZG9jdW1lbnRTeW1ib2wgICAgIChsaXN0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aGllcmFyY2hpY2FsRG9jdW1lbnRT eW1ib2xTdXBwb3J0IHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3ltYm9s S2luZCBgKDp2YWx1ZVNldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWyxAKG1hcGNhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMnY2FyIGVnbG90LS1zeW1ib2wta2luZC1uYW1lcyldKSkKLSAgICAg ICAgICAgICA6ZG9jdW1lbnRIaWdobGlnaHQgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24t ZmFsc2UpCi0gICAgICAgICAgICAgOmNvZGVBY3Rpb24gICAgICAgICAobGlzdAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNvZGVBY3Rpb25MaXRlcmFsU3Vw cG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvZGVBY3Rpb25LaW5k Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOnZhbHVlU2V0Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJxdWlja2ZpeCIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInJlZmFjdG9yIiAicmVmYWN0b3IuZXh0cmFjdCIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZmFjdG9yLmlubGluZSIgInJl ZmFjdG9yLnJld3JpdGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz b3VyY2UiICJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIl0pKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDppc1ByZWZlcnJlZFN1cHBvcnQgdCkKLSAgICAgICAgICAgICA6Zm9ybWF0 dGluZyAgICAgICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCi0gICAgICAg ICAgICAgOnJhbmdlRm9ybWF0dGluZyAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZh bHNlKQotICAgICAgICAgICAgIDpyZW5hbWUgICAgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJh dGlvbiA6anNvbi1mYWxzZSkKLSAgICAgICAgICAgICA6cHVibGlzaERpYWdub3N0aWNzIChsaXN0 IDpyZWxhdGVkSW5mb3JtYXRpb24gOmpzb24tZmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IFRPRE86IFdlIGNhbiBzdXBwb3J0IDpjb2RlRGVzY3JpcHRpb24g YWZ0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFkZGluZyBh biBhcHByb3ByaWF0ZSBVSSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgRmx5bWFrZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpj b2RlRGVzY3JpcHRpb25TdXBwb3J0IDpqc29uLWZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6dGFnU3VwcG9ydAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYCg6dmFsdWVTZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWyxAKG1hcGNhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIydjYXIgZWdsb3QtLXRhZy1mYWNlcyldKSkpCi0gICAgICAgICAgICA6ZXhwZXJp bWVudGFsIGVnbG90LS17fSkpKQorICAgIChsaXN0CisgICAgICA6d29ya3NwYWNlIChsaXN0Cisg ICAgICAgICAgICAgICAgICAgOmFwcGx5RWRpdCB0CisgICAgICAgICAgICAgICAgICAgOmV4ZWN1 dGVDb21tYW5kIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAgICAg ICAgICAgICAgOndvcmtzcGFjZUVkaXQgYCg6ZG9jdW1lbnRDaGFuZ2VzIHQpCisgICAgICAgICAg ICAgICAgICAgOmRpZENoYW5nZVdhdGNoZWRGaWxlcworICAgICAgICAgICAgICAgICAgIGAoOmR5 bmFtaWNSZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAsKGlmIChlZ2xvdC0tdHJh bXBpc2gtcCBzKSA6anNvbi1mYWxzZSB0KSkKKyAgICAgICAgICAgICAgICAgICA6c3ltYm9sIGAo OmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAgICAgICAgICAgICAgOmNv bmZpZ3VyYXRpb24gdAorICAgICAgICAgICAgICAgICAgIDp3b3Jrc3BhY2VGb2xkZXJzIHQpCisg ICAgICA6dGV4dERvY3VtZW50CisgICAgICAobGlzdAorICAgICAgICA6c3luY2hyb25pemF0aW9u IChsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6 anNvbi1mYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOndpbGxTYXZlIHQgOndpbGxT YXZlV2FpdFVudGlsIHQgOmRpZFNhdmUgdCkKKyAgICAgICAgOmNvbXBsZXRpb24gICAgICAobGlz dCA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgOmNvbXBsZXRpb25JdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICBgKDpzbmlw cGV0U3VwcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChpZiAoZWdsb3QtLXNu aXBwZXQtZXhwYW5zaW9uLWZuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmpzb24tZmFsc2UpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ZGVwcmVjYXRlZFN1cHBvcnQgdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnRhZ1N1cHBvcnQgKDp2YWx1ZVNldCBbMV0pKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmNvbnRleHRTdXBwb3J0IHQpCisgICAgICAgIDpob3ZlciAgICAgICAg ICAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDpjb250ZW50Rm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKGZib3VuZHAgJ2dmbS12aWV3LW1vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFsibWFya2Rvd24iICJwbGFpbnRleHQiXQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbInBsYWludGV4dCJdKSkKKyAgICAgICAgOnNpZ25hdHVyZUhlbHAgICAg ICAobGlzdCA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnNpZ25hdHVyZUluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBgKDpwYXJhbWV0ZXJJbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDpsYWJlbE9mZnNldFN1cHBvcnQgdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDphY3RpdmVQYXJhbWV0ZXJTdXBwb3J0IHQpKQorICAgICAgICA6cmVmZXJl bmNlcyAgICAgICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAg IDpkZWZpbml0aW9uICAgICAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFs c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsaW5rU3VwcG9ydCB0KQorICAgICAg ICA6ZGVjbGFyYXRpb24gICAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZh bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlua1N1cHBvcnQgdCkKKyAgICAg ICAgOmltcGxlbWVudGF0aW9uICAgICAobGlzdCA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1m YWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxpbmtTdXBwb3J0IHQpCisgICAg ICAgIDp0eXBlRGVmaW5pdGlvbiAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24t ZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsaW5rU3VwcG9ydCB0KQorICAg ICAgICA6ZG9jdW1lbnRTeW1ib2wgICAgIChsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOmhpZXJhcmNoaWNhbERvY3VtZW50U3ltYm9sU3VwcG9ydCB0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6c3ltYm9sS2luZCBgKDp2YWx1ZVNldAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyxAKG1hcGNhcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ2NhciBlZ2xvdC0tc3lt Ym9sLWtpbmQtbmFtZXMpXSkpCisgICAgICAgIDpkb2N1bWVudEhpZ2hsaWdodCAgYCg6ZHluYW1p Y1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKKyAgICAgICAgOmNvZGVBY3Rpb24gICAgICAgICAo bGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmR5bmFtaWNSZWdpc3RyYXRpb24g Ompzb24tZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2RlQWN0aW9uTGl0 ZXJhbFN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvZGVBY3Rpb25L aW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOnZhbHVlU2V0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsicXVpY2tmaXgiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInJlZmFjdG9yIiAicmVmYWN0b3IuZXh0cmFjdCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmYWN0b3IuaW5saW5lIiAicmVmYWN0 b3IucmV3cml0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNl IiAic291cmNlLm9yZ2FuaXplSW1wb3J0cyJdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDppc1ByZWZlcnJlZFN1cHBvcnQgdCkKKyAgICAgICAgOmZvcm1hdHRpbmcgICAgICAgICBg KDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQorICAgICAgICA6cmFuZ2VGb3JtYXR0 aW5nICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAgIDpyZW5h bWUgICAgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKKyAgICAg ICAgOnB1Ymxpc2hEaWFnbm9zdGljcyAobGlzdCA6cmVsYXRlZEluZm9ybWF0aW9uIDpqc29uLWZh bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUT0RPOiBXZSBjYW4gc3VwcG9y dCA6Y29kZURlc2NyaXB0aW9uIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBhZGRpbmcgYW4gYXBwcm9wcmlhdGUgVUkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IEZseW1ha2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29kZURlc2Ny aXB0aW9uU3VwcG9ydCA6anNvbi1mYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OnRhZ1N1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOnZhbHVlU2V0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLEAobWFwY2FyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMnY2FyIGVnbG90LS10YWctZmFjZXMpXSkpKQorICAg ICAgOmV4cGVyaW1lbnRhbCBlZ2xvdC0te30pKSkKIAogKGNsLWRlZmdlbmVyaWMgZWdsb3Qtd29y a3NwYWNlLWZvbGRlcnMgKHNlcnZlcikKICAgIlJldHVybiB3b3Jrc3BhY2VGb2xkZXJzIGZvciBT RVJWRVIuIgogICAobGV0ICgocHJvamVjdCAoZWdsb3QtLXByb2plY3Qgc2VydmVyKSkpCiAgICAg KHZjb25jYXQKLSAgICAgKG1hcGNhciAobGFtYmRhIChkaXIpCi0gICAgICAgICAgICAgICAobGlz dCA6dXJpIChlZ2xvdC0tcGF0aC10by11cmkgZGlyKQotICAgICAgICAgICAgICAgICAgICAgOm5h bWUgKGFiYnJldmlhdGUtZmlsZS1uYW1lIGRpcikpKQotICAgICAgICAgICAgIGAoLChwcm9qZWN0 LXJvb3QgcHJvamVjdCkgLEAocHJvamVjdC1leHRlcm5hbC1yb290cyBwcm9qZWN0KSkpKSkpCisg ICAgICAobWFwY2FyIChsYW1iZGEgKGRpcikKKyAgICAgICAgICAgICAgICAobGlzdCA6dXJpIChl Z2xvdC0tcGF0aC10by11cmkgZGlyKQorICAgICAgICAgICAgICAgICAgOm5hbWUgKGFiYnJldmlh dGUtZmlsZS1uYW1lIGRpcikpKQorICAgICAgICBgKCwocHJvamVjdC1yb290IHByb2plY3QpICxA KHByb2plY3QtZXh0ZXJuYWwtcm9vdHMgcHJvamVjdCkpKSkpKQogCiAoZGVmY2xhc3MgZWdsb3Qt bHNwLXNlcnZlciAoanNvbnJwYy1wcm9jZXNzLWNvbm5lY3Rpb24pCiAgICgocHJvamVjdC1uaWNr bmFtZQotICAgIDpkb2N1bWVudGF0aW9uICJTaG9ydCBuaWNrbmFtZSBmb3IgdGhlIGFzc29jaWF0 ZWQgcHJvamVjdC4iCi0gICAgOmFjY2Vzc29yIGVnbG90LS1wcm9qZWN0LW5pY2tuYW1lCi0gICAg OnJlYWRlciBlZ2xvdC1wcm9qZWN0LW5pY2tuYW1lKQotICAgKG1ham9yLW1vZGVzCi0gICAgOmRv Y3VtZW50YXRpb24gIk1ham9yIG1vZGVzIHNlcnZlciBpcyByZXNwb25zaWJsZSBmb3IgaW4gYSBn aXZlbiBwcm9qZWN0LiIKLSAgICA6YWNjZXNzb3IgZWdsb3QtLW1ham9yLW1vZGVzKQotICAgKGxh bmd1YWdlLWlkCi0gICAgOmRvY3VtZW50YXRpb24gIkxhbmd1YWdlIElEIHN0cmluZyBmb3IgdGhl IG1vZGUuIgotICAgIDphY2Nlc3NvciBlZ2xvdC0tbGFuZ3VhZ2UtaWQpCi0gICAoY2FwYWJpbGl0 aWVzCi0gICAgOmRvY3VtZW50YXRpb24gIkpTT04gb2JqZWN0IGNvbnRhaW5pbmcgc2VydmVyIGNh cGFiaWxpdGllcy4iCi0gICAgOmFjY2Vzc29yIGVnbG90LS1jYXBhYmlsaXRpZXMpCi0gICAoc2Vy dmVyLWluZm8KLSAgICA6ZG9jdW1lbnRhdGlvbiAiSlNPTiBvYmplY3QgY29udGFpbmluZyBzZXJ2 ZXIgaW5mby4iCi0gICAgOmFjY2Vzc29yIGVnbG90LS1zZXJ2ZXItaW5mbykKLSAgIChzaHV0ZG93 bi1yZXF1ZXN0ZWQKLSAgICA6ZG9jdW1lbnRhdGlvbiAiRmxhZyBzZXQgd2hlbiBzZXJ2ZXIgaXMg c2h1dHRpbmcgZG93bi4iCi0gICAgOmFjY2Vzc29yIGVnbG90LS1zaHV0ZG93bi1yZXF1ZXN0ZWQp Ci0gICAocHJvamVjdAotICAgIDpkb2N1bWVudGF0aW9uICJQcm9qZWN0IGFzc29jaWF0ZWQgd2l0 aCBzZXJ2ZXIuIgotICAgIDphY2Nlc3NvciBlZ2xvdC0tcHJvamVjdCkKLSAgIChzcGlubmVyCi0g ICAgOmRvY3VtZW50YXRpb24gIkxpc3QgKElEIERPSU5HLVdIQVQgRE9ORS1QKSByZXByZXNlbnRp bmcgc2VydmVyIHByb2dyZXNzLiIKLSAgICA6aW5pdGZvcm0gYChuaWwgbmlsIHQpIDphY2Nlc3Nv ciBlZ2xvdC0tc3Bpbm5lcikKLSAgIChpbmhpYml0LWF1dG9yZWNvbm5lY3QKLSAgICA6aW5pdGZv cm0gdAotICAgIDpkb2N1bWVudGF0aW9uICJHZW5lcmFsaXplZCBib29sZWFuIGluaGliaXRpbmcg YXV0by1yZWNvbm5lY3Rpb24gaWYgdHJ1ZS4iCi0gICAgOmFjY2Vzc29yIGVnbG90LS1pbmhpYml0 LWF1dG9yZWNvbm5lY3QpCi0gICAoZmlsZS13YXRjaGVzCi0gICAgOmRvY3VtZW50YXRpb24gIk1h cCBJRCB0byBsaXN0IG9mIFdBVENIRVMgZm9yIGBkaWRDaGFuZ2VXYXRjaGVkRmlsZXMnLiIKLSAg ICA6aW5pdGZvcm0gKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKSA6YWNjZXNzb3IgZWds b3QtLWZpbGUtd2F0Y2hlcykKLSAgIChtYW5hZ2VkLWJ1ZmZlcnMKLSAgICA6ZG9jdW1lbnRhdGlv biAiTGlzdCBvZiBidWZmZXJzIG1hbmFnZWQgYnkgc2VydmVyLiIKLSAgICA6YWNjZXNzb3IgZWds b3QtLW1hbmFnZWQtYnVmZmVycykKLSAgIChzYXZlZC1pbml0YXJncwotICAgIDpkb2N1bWVudGF0 aW9uICJTYXZlZCBpbml0YXJncyBmb3IgcmVjb25uZWN0aW9uIHB1cnBvc2VzLiIKLSAgICA6YWNj ZXNzb3IgZWdsb3QtLXNhdmVkLWluaXRhcmdzKQotICAgKGluZmVyaW9yLXByb2Nlc3MKLSAgICA6 ZG9jdW1lbnRhdGlvbiAiU2VydmVyIHN1YnByb2Nlc3Mgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LiIK LSAgICA6YWNjZXNzb3IgZWdsb3QtLWluZmVyaW9yLXByb2Nlc3MpKQorICAgICA6ZG9jdW1lbnRh dGlvbiAiU2hvcnQgbmlja25hbWUgZm9yIHRoZSBhc3NvY2lhdGVkIHByb2plY3QuIgorICAgICA6 YWNjZXNzb3IgZWdsb3QtLXByb2plY3Qtbmlja25hbWUKKyAgICAgOnJlYWRlciBlZ2xvdC1wcm9q ZWN0LW5pY2tuYW1lKQorICAgIChtYWpvci1tb2RlcworICAgICAgOmRvY3VtZW50YXRpb24gIk1h am9yIG1vZGVzIHNlcnZlciBpcyByZXNwb25zaWJsZSBmb3IgaW4gYSBnaXZlbiBwcm9qZWN0LiIK KyAgICAgIDphY2Nlc3NvciBlZ2xvdC0tbWFqb3ItbW9kZXMpCisgICAgKGxhbmd1YWdlLWlkCisg ICAgICA6ZG9jdW1lbnRhdGlvbiAiTGFuZ3VhZ2UgSUQgc3RyaW5nIGZvciB0aGUgbW9kZS4iCisg ICAgICA6YWNjZXNzb3IgZWdsb3QtLWxhbmd1YWdlLWlkKQorICAgIChjYXBhYmlsaXRpZXMKKyAg ICAgIDpkb2N1bWVudGF0aW9uICJKU09OIG9iamVjdCBjb250YWluaW5nIHNlcnZlciBjYXBhYmls aXRpZXMuIgorICAgICAgOmFjY2Vzc29yIGVnbG90LS1jYXBhYmlsaXRpZXMpCisgICAgKHNlcnZl ci1pbmZvCisgICAgICA6ZG9jdW1lbnRhdGlvbiAiSlNPTiBvYmplY3QgY29udGFpbmluZyBzZXJ2 ZXIgaW5mby4iCisgICAgICA6YWNjZXNzb3IgZWdsb3QtLXNlcnZlci1pbmZvKQorICAgIChzaHV0 ZG93bi1yZXF1ZXN0ZWQKKyAgICAgIDpkb2N1bWVudGF0aW9uICJGbGFnIHNldCB3aGVuIHNlcnZl ciBpcyBzaHV0dGluZyBkb3duLiIKKyAgICAgIDphY2Nlc3NvciBlZ2xvdC0tc2h1dGRvd24tcmVx dWVzdGVkKQorICAgIChwcm9qZWN0CisgICAgICA6ZG9jdW1lbnRhdGlvbiAiUHJvamVjdCBhc3Nv Y2lhdGVkIHdpdGggc2VydmVyLiIKKyAgICAgIDphY2Nlc3NvciBlZ2xvdC0tcHJvamVjdCkKKyAg ICAoc3Bpbm5lcgorICAgICAgOmRvY3VtZW50YXRpb24gIkxpc3QgKElEIERPSU5HLVdIQVQgRE9O RS1QKSByZXByZXNlbnRpbmcgc2VydmVyIHByb2dyZXNzLiIKKyAgICAgIDppbml0Zm9ybSBgKG5p bCBuaWwgdCkgOmFjY2Vzc29yIGVnbG90LS1zcGlubmVyKQorICAgIChpbmhpYml0LWF1dG9yZWNv bm5lY3QKKyAgICAgIDppbml0Zm9ybSB0CisgICAgICA6ZG9jdW1lbnRhdGlvbiAiR2VuZXJhbGl6 ZWQgYm9vbGVhbiBpbmhpYml0aW5nIGF1dG8tcmVjb25uZWN0aW9uIGlmIHRydWUuIgorICAgICAg OmFjY2Vzc29yIGVnbG90LS1pbmhpYml0LWF1dG9yZWNvbm5lY3QpCisgICAgKGZpbGUtd2F0Y2hl cworICAgICAgOmRvY3VtZW50YXRpb24gIk1hcCBJRCB0byBsaXN0IG9mIFdBVENIRVMgZm9yIGBk aWRDaGFuZ2VXYXRjaGVkRmlsZXMnLiIKKyAgICAgIDppbml0Zm9ybSAobWFrZS1oYXNoLXRhYmxl IDp0ZXN0ICMnZXF1YWwpIDphY2Nlc3NvciBlZ2xvdC0tZmlsZS13YXRjaGVzKQorICAgIChtYW5h Z2VkLWJ1ZmZlcnMKKyAgICAgIDpkb2N1bWVudGF0aW9uICJMaXN0IG9mIGJ1ZmZlcnMgbWFuYWdl ZCBieSBzZXJ2ZXIuIgorICAgICAgOmFjY2Vzc29yIGVnbG90LS1tYW5hZ2VkLWJ1ZmZlcnMpCisg ICAgKHNhdmVkLWluaXRhcmdzCisgICAgICA6ZG9jdW1lbnRhdGlvbiAiU2F2ZWQgaW5pdGFyZ3Mg Zm9yIHJlY29ubmVjdGlvbiBwdXJwb3Nlcy4iCisgICAgICA6YWNjZXNzb3IgZWdsb3QtLXNhdmVk LWluaXRhcmdzKQorICAgIChpbmZlcmlvci1wcm9jZXNzCisgICAgICA6ZG9jdW1lbnRhdGlvbiAi U2VydmVyIHN1YnByb2Nlc3Mgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LiIKKyAgICAgIDphY2Nlc3Nv ciBlZ2xvdC0taW5mZXJpb3ItcHJvY2VzcykpCiAgIDpkb2N1bWVudGF0aW9uCiAgICJSZXByZXNl bnRzIGEgc2VydmVyLiBXcmFwcyBhIHByb2Nlc3MgZm9yIExTUCBjb21tdW5pY2F0aW9uLiIpCiAK QEAgLTg1NSwxNCArODU5LDE0IEBAIElmIFBSRVNFUlZFLUJVRkZFUlMgaXMgbm9uLW5pbCAoaW50 ZXJhY3RpdmVseSwgd2hlbiBjYWxsZWQgd2l0aCBhCiBwcmVmaXggYXJndW1lbnQpLCBkbyBub3Qg a2lsbCBldmVudHMgYW5kIG91dHB1dCBidWZmZXJzIG9mCiBTRVJWRVIuIgogICAoaW50ZXJhY3Rp dmUgKGxpc3QgKGVnbG90LS1yZWFkLXNlcnZlciAiU2h1dGRvd24gd2hpY2ggc2VydmVyIgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtY3VycmVudC1zZXJ2 ZXIpKQotICAgICAgICAgICAgICAgICAgICAgdCBuaWwgY3VycmVudC1wcmVmaXgtYXJnKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgKGVnbG90LWN1cnJlbnQtc2VydmVyKSkKKyAgICAgICAgICAg ICAgICAgdCBuaWwgY3VycmVudC1wcmVmaXgtYXJnKSkKICAgKGVnbG90LS1tZXNzYWdlICJBc2tp bmcgJXMgcG9saXRlbHkgdG8gdGVybWluYXRlIiAoanNvbnJwYy1uYW1lIHNlcnZlcikpCiAgICh1 bndpbmQtcHJvdGVjdAotICAgICAgKHByb2duCi0gICAgICAgIChzZXRmIChlZ2xvdC0tc2h1dGRv d24tcmVxdWVzdGVkIHNlcnZlcikgdCkKLSAgICAgICAgKGpzb25ycGMtcmVxdWVzdCBzZXJ2ZXIg OnNodXRkb3duIG5pbCA6dGltZW91dCAob3IgdGltZW91dCAxLjUpKQotICAgICAgICAoanNvbnJw Yy1ub3RpZnkgc2VydmVyIDpleGl0IG5pbCkpCisgICAgKHByb2duCisgICAgICAoc2V0ZiAoZWds b3QtLXNodXRkb3duLXJlcXVlc3RlZCBzZXJ2ZXIpIHQpCisgICAgICAoanNvbnJwYy1yZXF1ZXN0 IHNlcnZlciA6c2h1dGRvd24gbmlsIDp0aW1lb3V0IChvciB0aW1lb3V0IDEuNSkpCisgICAgICAo anNvbnJwYy1ub3RpZnkgc2VydmVyIDpleGl0IG5pbCkpCiAgICAgOzsgTm93IGFzayBqc29ucnBj LmVsIHRvIHNodXQgZG93biB0aGUgc2VydmVyLgogICAgIChqc29ucnBjLXNodXRkb3duIHNlcnZl ciAobm90IHByZXNlcnZlLWJ1ZmZlcnMpKQogICAgICh1bmxlc3MgcHJlc2VydmUtYnVmZmVycyAo a2lsbC1idWZmZXIgKGpzb25ycGMtZXZlbnRzLWJ1ZmZlciBzZXJ2ZXIpKSkpKQpAQCAtODcyLDMz ICs4NzYsMzMgQEAgU0VSVkVSLiIKIFBSRVNFUlZFLUJVRkZFUlMgYXMgaW4gYGVnbG90LXNodXRk b3duJywgd2hpY2ggc2VlLiIKICAgKGludGVyYWN0aXZlIChsaXN0IGN1cnJlbnQtcHJlZml4LWFy ZykpCiAgIChjbC1sb29wIGZvciBzcyBiZWluZyB0aGUgaGFzaC12YWx1ZXMgb2YgZWdsb3QtLXNl cnZlcnMtYnktcHJvamVjdAotICAgICAgICAgICBkbyAoY2wtbG9vcCBmb3IgcyBpbiBzcyBkbyAo ZWdsb3Qtc2h1dGRvd24gcyBuaWwgcHJlc2VydmUtYnVmZmVycykpKSkKKyAgICBkbyAoY2wtbG9v cCBmb3IgcyBpbiBzcyBkbyAoZWdsb3Qtc2h1dGRvd24gcyBuaWwgcHJlc2VydmUtYnVmZmVycykp KSkKIAogKGRlZnVuIGVnbG90LS1vbi1zaHV0ZG93biAoc2VydmVyKQogICAiQ2FsbGVkIGJ5IGpz b25ycGMuZWwgd2hlbiBTRVJWRVIgaXMgYWxyZWFkeSBkZWFkLiIKICAgOzsgVHVybiBvZmYgYGVn bG90LS1tYW5hZ2VkLW1vZGUnIHdoZXJlIGFwcHJvcHJpYXRlLgogICAoZG9saXN0IChidWZmZXIg KGVnbG90LS1tYW5hZ2VkLWJ1ZmZlcnMgc2VydmVyKSkKICAgICAobGV0ICg7OyBBdm9pZCBkdXBs aWNhdGUgc2h1dGRvd25zIChnaXRodWIjMzg5KQotICAgICAgICAgIChlZ2xvdC1hdXRvc2h1dGRv d24gbmlsKSkKKyAgICAgICAgICAgKGVnbG90LWF1dG9zaHV0ZG93biBuaWwpKQogICAgICAgKGVn bG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZmZlciAoZWdsb3QtLW1hbmFnZWQtbW9kZS1vZmYpKSkp CiAgIDs7IEtpbGwgYW55IGV4cGVuc2l2ZSB3YXRjaGVzCiAgIChtYXBoYXNoIChsYW1iZGEgKF9p ZCB3YXRjaGVzKQogICAgICAgICAgICAgIChtYXBjYXIgIydmaWxlLW5vdGlmeS1ybS13YXRjaCB3 YXRjaGVzKSkKLSAgICAgICAgICAgKGVnbG90LS1maWxlLXdhdGNoZXMgc2VydmVyKSkKKyAgICAo ZWdsb3QtLWZpbGUtd2F0Y2hlcyBzZXJ2ZXIpKQogICA7OyBLaWxsIGFueSBhdXRvc3RhcnRlZCBp bmZlcmlvciBwcm9jZXNzZXMKICAgKHdoZW4tbGV0IChwcm9jIChlZ2xvdC0taW5mZXJpb3ItcHJv Y2VzcyBzZXJ2ZXIpKQogICAgIChkZWxldGUtcHJvY2VzcyBwcm9jKSkKICAgOzsgU2V2ZXIgdGhl IHByb2plY3Qvc2VydmVyIHJlbGF0aW9uc2hpcCBmb3IgYHNlcnZlcicKICAgKHNldGYgKGdldGhh c2ggKGVnbG90LS1wcm9qZWN0IHNlcnZlcikgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdCkKLSAg ICAgICAgKGRlbHEgc2VydmVyCi0gICAgICAgICAgICAgIChnZXRoYXNoIChlZ2xvdC0tcHJvamVj dCBzZXJ2ZXIpIGVnbG90LS1zZXJ2ZXJzLWJ5LXByb2plY3QpKSkKKyAgICAoZGVscSBzZXJ2ZXIK KyAgICAgIChnZXRoYXNoIChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpIGVnbG90LS1zZXJ2ZXJzLWJ5 LXByb2plY3QpKSkKICAgKGNvbmQgKChlZ2xvdC0tc2h1dGRvd24tcmVxdWVzdGVkIHNlcnZlcikK LSAgICAgICAgIHQpCi0gICAgICAgICgobm90IChlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0 IHNlcnZlcikpCi0gICAgICAgICAoZWdsb3QtLXdhcm4gIlJlY29ubmVjdGluZyBhZnRlciB1bmV4 cGVjdGVkIHNlcnZlciBleGl0LiIpCi0gICAgICAgICAoZWdsb3QtcmVjb25uZWN0IHNlcnZlcikp Ci0gICAgICAgICgodGltZXJwIChlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0IHNlcnZlcikp Ci0gICAgICAgICAoZWdsb3QtLXdhcm4gIk5vdCBhdXRvLXJlY29ubmVjdGluZywgbGFzdCBvbmUg ZGlkbid0IGxhc3QgbG9uZy4iKSkpKQorICAgICAgICAgIHQpCisgICAgKChub3QgKGVnbG90LS1p bmhpYml0LWF1dG9yZWNvbm5lY3Qgc2VydmVyKSkKKyAgICAgIChlZ2xvdC0td2FybiAiUmVjb25u ZWN0aW5nIGFmdGVyIHVuZXhwZWN0ZWQgc2VydmVyIGV4aXQuIikKKyAgICAgIChlZ2xvdC1yZWNv bm5lY3Qgc2VydmVyKSkKKyAgICAoKHRpbWVycCAoZWdsb3QtLWluaGliaXQtYXV0b3JlY29ubmVj dCBzZXJ2ZXIpKQorICAgICAgKGVnbG90LS13YXJuICJOb3QgYXV0by1yZWNvbm5lY3RpbmcsIGxh c3Qgb25lIGRpZG4ndCBsYXN0IGxvbmcuIikpKSkKIAogKGRlZnVuIGVnbG90LS1hbGwtbWFqb3It bW9kZXMgKCkKICAgIlJldHVybiBhbGwga25vd24gbWFqb3IgbW9kZXMuIgpAQCAtOTI1LDI1ICs5 MjksMjUgQEAgTEFOR1VBR0UtSUQgaXMgZGV0ZXJtaW5lZCBmcm9tIE1PREUncyBuYW1lLgogQ09O VEFDVC1QUk9YWSBpcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcKIGBlZ2xvdC1zZXJ2 ZXItcHJvZ3JhbXMnIGVudHJ5LiIKICAgKGNsLWxvb3AKLSAgIGZvciAobW9kZXMgLiBjb250YWN0 KSBpbiBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMKLSAgIGZvciBtb2RlLXN5bWJvbHMgPSAoY29ucyBt b2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZSBtb2RlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnY2FyCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydlZ2xvdC0tZW5zdXJlLWxpc3QK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWds b3QtLWVuc3VyZS1saXN0IG1vZGVzKSkpKSkKLSAgIHRoZXJlaXMgKGNsLXNvbWUKLSAgICAgICAg ICAgIChsYW1iZGEgKHNwZWMpCi0gICAgICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQg KHByb2JlICZrZXkgbGFuZ3VhZ2UtaWQgJmFsbG93LW90aGVyLWtleXMpCisgICAgZm9yIChtb2Rl cyAuIGNvbnRhY3QpIGluIGVnbG90LXNlcnZlci1wcm9ncmFtcworICAgIGZvciBtb2RlLXN5bWJv bHMgPSAoY29ucyBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZSBtb2RlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyICMnY2FyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChtYXBjYXIgIydlZ2xvdC0tZW5zdXJlLWxpc3QKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLWVuc3VyZS1saXN0IG1vZGVzKSkpKSkKKyAgICB0aGVy ZWlzIChjbC1zb21lCisgICAgICAgICAgICAgIChsYW1iZGEgKHNwZWMpCisgICAgICAgICAgICAg ICAgKGNsLWRlc3RydWN0dXJpbmctYmluZCAocHJvYmUgJmtleSBsYW5ndWFnZS1pZCAmYWxsb3ct b3RoZXIta2V5cykKICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZW5zdXJlLWxpc3Qgc3BlYykK LSAgICAgICAgICAgICAgICAoYW5kIChwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBtb2RlIHByb2Jl KQotICAgICAgICAgICAgICAgICAgICAgKGxpc3QKKyAgICAgICAgICAgICAgICAgIChhbmQgKHBy b3ZpZGVkLW1vZGUtZGVyaXZlZC1wIG1vZGUgcHJvYmUpCisgICAgICAgICAgICAgICAgICAgIChs aXN0CiAgICAgICAgICAgICAgICAgICAgICAgbW9kZS1zeW1ib2xzCiAgICAgICAgICAgICAgICAg ICAgICAgKG9yIGxhbmd1YWdlLWlkCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoZ2V0 IG1vZGUgJ2VnbG90LWxhbmd1YWdlLWlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdldCBzcGVjICdlZ2xvdC1sYW5ndWFnZS1pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctcmVtb3ZlLXN1ZmZpeCAiLW1vZGUiIChzeW1ib2wtbmFtZSBtb2RlKSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChnZXQgbW9kZSAnZWdsb3QtbGFuZ3VhZ2UtaWQp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQgc3BlYyAnZWdsb3QtbGFuZ3VhZ2UtaWQp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctcmVtb3ZlLXN1ZmZpeCAiLW1vZGUi IChzeW1ib2wtbmFtZSBtb2RlKSkpKQogICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3QpKSkp Ci0gICAgICAgICAgICAoaWYgKG9yIChzeW1ib2xwIG1vZGVzKSAoa2V5d29yZHAgKGNhZHIgbW9k ZXMpKSkKKyAgICAgICAgICAgICAgKGlmIChvciAoc3ltYm9scCBtb2RlcykgKGtleXdvcmRwIChj YWRyIG1vZGVzKSkpCiAgICAgICAgICAgICAgICAgKGxpc3QgbW9kZXMpIG1vZGVzKSkpKQogCiAo ZGVmdW4gZWdsb3QtLWd1ZXNzLWNvbnRhY3QgKCZvcHRpb25hbCBpbnRlcmFjdGl2ZSkKQEAgLTk1 Miw3NiArOTU2LDc2IEBAIFJldHVybiAoTUFOQUdFRC1NT0RFIFBST0pFQ1QgQ0xBU1MgQ09OVEFD VCBMQU5HLUlEKS4gIElmIElOVEVSQUNUSVZFIGlzCiBub24tbmlsLCBtYXliZSBwcm9tcHQgdXNl ciwgZWxzZSBlcnJvciBhcyBzb29uIGFzIHNvbWV0aGluZyBjYW4ndAogYmUgZ3Vlc3NlZC4iCiAg IChsZXQqICgoZ3Vlc3NlZC1tb2RlIChpZiBidWZmZXItZmlsZS1uYW1lIG1ham9yLW1vZGUpKQot ICAgICAgICAgKG1haW4tbW9kZQotICAgICAgICAgIChjb25kCi0gICAgICAgICAgICgoYW5kIGlu dGVyYWN0aXZlCisgICAgICAgICAgKG1haW4tbW9kZQorICAgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgICAgKChhbmQgaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgICAgKG9yICg+PSAocHJl Zml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAxNikKLSAgICAgICAgICAgICAg ICAgICAgIChub3QgZ3Vlc3NlZC1tb2RlKSkpCi0gICAgICAgICAgICAoaW50ZXJuCi0gICAgICAg ICAgICAgKGNvbXBsZXRpbmctcmVhZAotICAgICAgICAgICAgICAiW2VnbG90XSBTdGFydCBhIHNl cnZlciB0byBtYW5hZ2UgYnVmZmVycyBvZiB3aGF0IG1ham9yIG1vZGU/ICIKLSAgICAgICAgICAg ICAgKG1hcGNhciAjJ3N5bWJvbC1uYW1lIChlZ2xvdC0tYWxsLW1ham9yLW1vZGVzKSkgbmlsIHQK LSAgICAgICAgICAgICAgKHN5bWJvbC1uYW1lIGd1ZXNzZWQtbW9kZSkgbmlsIChzeW1ib2wtbmFt ZSBndWVzc2VkLW1vZGUpIG5pbCkpKQotICAgICAgICAgICAoKG5vdCBndWVzc2VkLW1vZGUpCi0g ICAgICAgICAgICAoZWdsb3QtLWVycm9yICJDYW4ndCBndWVzcyBtb2RlIHRvIG1hbmFnZSBmb3Ig YCVzJyIgKGN1cnJlbnQtYnVmZmVyKSkpCi0gICAgICAgICAgICh0IGd1ZXNzZWQtbW9kZSkpKQot ICAgICAgICAgKHRyaXBsZXQgKGVnbG90LS1sb29rdXAtbW9kZSBtYWluLW1vZGUpKQotICAgICAg ICAgKG1hbmFnZWQtbW9kZXMgKGNhciB0cmlwbGV0KSkKLSAgICAgICAgIChsYW5ndWFnZS1pZCAo b3IgKGNhZHIgdHJpcGxldCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1yZW1v dmUtc3VmZml4ICItbW9kZSIgKHN5bWJvbC1uYW1lIGd1ZXNzZWQtbW9kZSkpKSkKLSAgICAgICAg IChndWVzcyAoY2FkZHIgdHJpcGxldCkpCi0gICAgICAgICAoZ3Vlc3MgKGlmIChmdW5jdGlvbnAg Z3Vlc3MpCi0gICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGd1ZXNzIGludGVyYWN0aXZlKQot ICAgICAgICAgICAgICAgICAgZ3Vlc3MpKQotICAgICAgICAgKGNsYXNzIChvciAoYW5kIChjb25z cCBndWVzcykgKHN5bWJvbHAgKGNhciBndWVzcykpCi0gICAgICAgICAgICAgICAgICAgICAgICAg KHByb2cxICh1bmxlc3MgY3VycmVudC1wcmVmaXgtYXJnIChjYXIgZ3Vlc3MpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgZ3Vlc3MgKGNkciBndWVzcykpKSkKLSAgICAgICAgICAg ICAgICAgICAgJ2VnbG90LWxzcC1zZXJ2ZXIpKQotICAgICAgICAgKHByb2dyYW0gKGFuZCAobGlz dHAgZ3Vlc3MpCi0gICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdwIChjYXIgZ3Vlc3MpKQot ICAgICAgICAgICAgICAgICAgICAgICA7OyBBIHNlY29uZCBlbGVtZW50IG1pZ2h0IGJlIHRoZSBw b3J0IG9mIGEgKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICAgICAgICAgICAgIDs7IHBhaXIsIGJ1 dCBpbiB0aGF0IGNhc2UgaXQgaXMgbm90IGEgc3RyaW5nLgotICAgICAgICAgICAgICAgICAgICAg ICAob3IgKG51bGwgKGNkciBndWVzcykpIChzdHJpbmdwIChjYWRyIGd1ZXNzKSkpCi0gICAgICAg ICAgICAgICAgICAgICAgIChjYXIgZ3Vlc3MpKSkKLSAgICAgICAgIChiYXNlLXByb21wdAotICAg ICAgICAgIChhbmQgaW50ZXJhY3RpdmUKLSAgICAgICAgICAgICAgICJFbnRlciBwcm9ncmFtIHRv IGV4ZWN1dGUgKG9yIDxob3N0Pjo8cG9ydD4pOiAiKSkKLSAgICAgICAgIChmdWxsLXByb2dyYW0t aW52b2NhdGlvbgotICAgICAgICAgIChhbmQgcHJvZ3JhbQotICAgICAgICAgICAgICAgKGNsLWV2 ZXJ5ICMnc3RyaW5ncCBndWVzcykKLSAgICAgICAgICAgICAgIChjb21iaW5lLWFuZC1xdW90ZS1z dHJpbmdzIGd1ZXNzKSkpCi0gICAgICAgICAocHJvbXB0Ci0gICAgICAgICAgKGFuZCBiYXNlLXBy b21wdAotICAgICAgICAgICAgICAgKGNvbmQgKGN1cnJlbnQtcHJlZml4LWFyZyBiYXNlLXByb21w dCkKLSAgICAgICAgICAgICAgICAgICAgICgobnVsbCBndWVzcykKLSAgICAgICAgICAgICAgICAg ICAgICAoZm9ybWF0ICJbZWdsb3RdIFNvcnJ5LCBjb3VsZG4ndCBndWVzcyBmb3IgYCVzJyFcbiVz IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbi1tb2RlIGJhc2UtcHJvbXB0KSkK LSAgICAgICAgICAgICAgICAgICAgICgoYW5kIHByb2dyYW0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChub3QgKGZpbGUtbmFtZS1hYnNvbHV0ZS1wIHByb2dyYW0pKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5vdCAoZWdsb3QtLWV4ZWN1dGFibGUtZmluZCBwcm9ncmFtIHQpKSkK LSAgICAgICAgICAgICAgICAgICAgICAoaWYgZnVsbC1wcm9ncmFtLWludm9jYXRpb24KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoZm9ybWF0ICJbZWdsb3RdIEkgZ3Vlc3MgeW91 IHdhbnQgdG8gcnVuIGAlcyciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmdWxsLXByb2dyYW0taW52b2NhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICIsIGJ1dCBJIGNhbid0IGZpbmQgYCVzJyBpbiBQQVRIISIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0pCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiBiYXNlLXByb21wdCkKLSAgICAgICAgICAgICAg ICAgICAgICAgIChlZ2xvdC0tZXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0 ICJgJXMnIG5vdCBmb3VuZCBpbiBQQVRILCBidXQgY2FuJ3QgZm9ybSIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgYW4gaW50ZXJhY3RpdmUgcHJvbXB0IGZvciB0byBmaXggJXMh IikKLSAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGd1ZXNzKSkpKSkpCi0gICAgICAg ICAoY29udGFjdAotICAgICAgICAgIChvciAoYW5kIHByb21wdAotICAgICAgICAgICAgICAgICAg IChzcGxpdC1zdHJpbmctYW5kLXVucXVvdGUKKyAgICAgICAgICAgICAgICAgICAobm90IGd1ZXNz ZWQtbW9kZSkpKQorICAgICAgICAgICAgICAgIChpbnRlcm4KKyAgICAgICAgICAgICAgICAgIChj b21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAgICAgIltlZ2xvdF0gU3RhcnQgYSBzZXJ2 ZXIgdG8gbWFuYWdlIGJ1ZmZlcnMgb2Ygd2hhdCBtYWpvciBtb2RlPyAiCisgICAgICAgICAgICAg ICAgICAgIChtYXBjYXIgIydzeW1ib2wtbmFtZSAoZWdsb3QtLWFsbC1tYWpvci1tb2RlcykpIG5p bCB0CisgICAgICAgICAgICAgICAgICAgIChzeW1ib2wtbmFtZSBndWVzc2VkLW1vZGUpIG5pbCAo c3ltYm9sLW5hbWUgZ3Vlc3NlZC1tb2RlKSBuaWwpKSkKKyAgICAgICAgICAgICAgKChub3QgZ3Vl c3NlZC1tb2RlKQorICAgICAgICAgICAgICAgIChlZ2xvdC0tZXJyb3IgIkNhbid0IGd1ZXNzIG1v ZGUgdG8gbWFuYWdlIGZvciBgJXMnIiAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICAg KHQgZ3Vlc3NlZC1tb2RlKSkpCisgICAgICAgICAgKHRyaXBsZXQgKGVnbG90LS1sb29rdXAtbW9k ZSBtYWluLW1vZGUpKQorICAgICAgICAgIChtYW5hZ2VkLW1vZGVzIChjYXIgdHJpcGxldCkpCisg ICAgICAgICAgKGxhbmd1YWdlLWlkIChvciAoY2FkciB0cmlwbGV0KQorICAgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctcmVtb3ZlLXN1ZmZpeCAiLW1vZGUiIChzeW1ib2wtbmFtZSBndWVz c2VkLW1vZGUpKSkpCisgICAgICAgICAgKGd1ZXNzIChjYWRkciB0cmlwbGV0KSkKKyAgICAgICAg ICAoZ3Vlc3MgKGlmIChmdW5jdGlvbnAgZ3Vlc3MpCisgICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgZ3Vlc3MgaW50ZXJhY3RpdmUpCisgICAgICAgICAgICAgICAgICAgZ3Vlc3MpKQorICAgICAg ICAgIChjbGFzcyAob3IgKGFuZCAoY29uc3AgZ3Vlc3MpIChzeW1ib2xwIChjYXIgZ3Vlc3MpKQor ICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEgKHVubGVzcyBjdXJyZW50LXByZWZpeC1hcmcg KGNhciBndWVzcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZ3Vlc3MgKGNkciBn dWVzcykpKSkKKyAgICAgICAgICAgICAgICAgICAnZWdsb3QtbHNwLXNlcnZlcikpCisgICAgICAg ICAgKHByb2dyYW0gKGFuZCAobGlzdHAgZ3Vlc3MpCisgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5ncCAoY2FyIGd1ZXNzKSkKKyAgICAgICAgICAgICAgICAgICAgIDs7IEEgc2Vjb25kIGVsZW1l bnQgbWlnaHQgYmUgdGhlIHBvcnQgb2YgYSAoaG9zdCwgcG9ydCkKKyAgICAgICAgICAgICAgICAg ICAgIDs7IHBhaXIsIGJ1dCBpbiB0aGF0IGNhc2UgaXQgaXMgbm90IGEgc3RyaW5nLgorICAgICAg ICAgICAgICAgICAgICAgKG9yIChudWxsIChjZHIgZ3Vlc3MpKSAoc3RyaW5ncCAoY2FkciBndWVz cykpKQorICAgICAgICAgICAgICAgICAgICAgKGNhciBndWVzcykpKQorICAgICAgICAgIChiYXNl LXByb21wdAorICAgICAgICAgICAgKGFuZCBpbnRlcmFjdGl2ZQorICAgICAgICAgICAgICAiRW50 ZXIgcHJvZ3JhbSB0byBleGVjdXRlIChvciA8aG9zdD46PHBvcnQ+KTogIikpCisgICAgICAgICAg KGZ1bGwtcHJvZ3JhbS1pbnZvY2F0aW9uCisgICAgICAgICAgICAoYW5kIHByb2dyYW0KKyAgICAg ICAgICAgICAgKGNsLWV2ZXJ5ICMnc3RyaW5ncCBndWVzcykKKyAgICAgICAgICAgICAgKGNvbWJp bmUtYW5kLXF1b3RlLXN0cmluZ3MgZ3Vlc3MpKSkKKyAgICAgICAgICAocHJvbXB0CisgICAgICAg ICAgICAoYW5kIGJhc2UtcHJvbXB0CisgICAgICAgICAgICAgIChjb25kIChjdXJyZW50LXByZWZp eC1hcmcgYmFzZS1wcm9tcHQpCisgICAgICAgICAgICAgICAgKChudWxsIGd1ZXNzKQorICAgICAg ICAgICAgICAgICAgKGZvcm1hdCAiW2VnbG90XSBTb3JyeSwgY291bGRuJ3QgZ3Vlc3MgZm9yIGAl cychXG4lcyIKKyAgICAgICAgICAgICAgICAgICAgbWFpbi1tb2RlIGJhc2UtcHJvbXB0KSkKKyAg ICAgICAgICAgICAgICAoKGFuZCBwcm9ncmFtCisgICAgICAgICAgICAgICAgICAgKG5vdCAoZmls ZS1uYW1lLWFic29sdXRlLXAgcHJvZ3JhbSkpCisgICAgICAgICAgICAgICAgICAgKG5vdCAoZWds b3QtLWV4ZWN1dGFibGUtZmluZCBwcm9ncmFtIHQpKSkKKyAgICAgICAgICAgICAgICAgIChpZiBm dWxsLXByb2dyYW0taW52b2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAoY29uY2F0IChmb3Jt YXQgIltlZ2xvdF0gSSBndWVzcyB5b3Ugd2FudCB0byBydW4gYCVzJyIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZ1bGwtcHJvZ3JhbS1pbnZvY2F0aW9uKQorICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgIiwgYnV0IEkgY2FuJ3QgZmluZCBgJXMnIGluIFBBVEghIgorICAgICAg ICAgICAgICAgICAgICAgICAgcHJvZ3JhbSkKKyAgICAgICAgICAgICAgICAgICAgICAiXG4iIGJh c2UtcHJvbXB0KQorICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWVycm9yCisgICAgICAgICAg ICAgICAgICAgICAgKGNvbmNhdCAiYCVzJyBub3QgZm91bmQgaW4gUEFUSCwgYnV0IGNhbid0IGZv cm0iCisgICAgICAgICAgICAgICAgICAgICAgICAiIGFuIGludGVyYWN0aXZlIHByb21wdCBmb3Ig dG8gZml4ICVzISIpCisgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSBndWVzcykpKSkpKQor ICAgICAgICAgIChjb250YWN0CisgICAgICAgICAgICAob3IgKGFuZCBwcm9tcHQKKyAgICAgICAg ICAgICAgICAgIChzcGxpdC1zdHJpbmctYW5kLXVucXVvdGUKICAgICAgICAgICAgICAgICAgICAg KHJlYWQtc2hlbGwtY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgcHJvbXB0Ci0gICAgICAg ICAgICAgICAgICAgICBmdWxsLXByb2dyYW0taW52b2NhdGlvbgotICAgICAgICAgICAgICAgICAg ICAgJ2VnbG90LWNvbW1hbmQtaGlzdG9yeSkpKQorICAgICAgICAgICAgICAgICAgICAgIHByb21w dAorICAgICAgICAgICAgICAgICAgICAgIGZ1bGwtcHJvZ3JhbS1pbnZvY2F0aW9uCisgICAgICAg ICAgICAgICAgICAgICAgJ2VnbG90LWNvbW1hbmQtaGlzdG9yeSkpKQogICAgICAgICAgICAgICBn dWVzcykpKQogICAgIChsaXN0IG1hbmFnZWQtbW9kZXMgKGVnbG90LS1jdXJyZW50LXByb2plY3Qp IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWQpKSkKIAogKGRlZnZhciBlZ2xvdC1sc3AtY29udGV4 dCkKIChwdXQgJ2VnbG90LWxzcC1jb250ZXh0ICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uCi0gICAg ICJEeW5hbWljYWxseSBub24tbmlsIHdoZW4gc2VhcmNoaW5nIGZvciBwcm9qZWN0cyBpbiBMU1Ag Y29udGV4dC4iKQorICAiRHluYW1pY2FsbHkgbm9uLW5pbCB3aGVuIHNlYXJjaGluZyBmb3IgcHJv amVjdHMgaW4gTFNQIGNvbnRleHQuIikKIAogKGRlZnZhciBlZ2xvdC0tc2VydmVycy1ieS14cmVm ZWQtZmlsZQogICAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCA6d2Vha25lc3MgJ3ZhbHVl KSkKQEAgLTEwMzgsNyArMTA0Miw3IEBAIHN1aXRhYmxlIHJvb3QgZGlyZWN0b3J5IGZvciBhIGdp dmVuIExTUCBzZXJ2ZXIncyBwdXJwb3Nlcy4iCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gZWds b3QgKG1hbmFnZWQtbWFqb3ItbW9kZSBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBpbnRlcmFjdGl2ZSkK KyAgICAgICAgICAgICAgICZvcHRpb25hbCBpbnRlcmFjdGl2ZSkKICAgIk1hbmFnZSBhIHByb2pl Y3Qgd2l0aCBhIExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCAoTFNQKSBzZXJ2ZXIuCiAKIFRoZSBM U1Agc2VydmVyIG9mIENMQVNTIGlzIHN0YXJ0ZWQgKG9yIGNvbnRhY3RlZCkgdmlhIENPTlRBQ1Qu CkBAIC0xMDc0LDExICsxMDc4LDExIEBAIE1BTkFHRUQtTUFKT1ItTU9ERSwgd2hpY2ggbWF0dGVy cyB0byBhIG1pbm9yaXR5IG9mIHNlcnZlcnMuCiBJTlRFUkFDVElWRSBpcyB0IGlmIGNhbGxlZCBp bnRlcmFjdGl2ZWx5LiIKICAgKGludGVyYWN0aXZlIChhcHBlbmQgKGVnbG90LS1ndWVzcy1jb250 YWN0IHQpICcodCkpKQogICAobGV0KiAoKGN1cnJlbnQtc2VydmVyIChlZ2xvdC1jdXJyZW50LXNl cnZlcikpCi0gICAgICAgICAobGl2ZS1wIChhbmQgY3VycmVudC1zZXJ2ZXIgKGpzb25ycGMtcnVu bmluZy1wIGN1cnJlbnQtc2VydmVyKSkpKQorICAgICAgICAgIChsaXZlLXAgKGFuZCBjdXJyZW50 LXNlcnZlciAoanNvbnJwYy1ydW5uaW5nLXAgY3VycmVudC1zZXJ2ZXIpKSkpCiAgICAgKGlmIChh bmQgbGl2ZS1wCi0gICAgICAgICAgICAgaW50ZXJhY3RpdmUKLSAgICAgICAgICAgICAoeS1vci1u LXAgIltlZ2xvdF0gTGl2ZSBwcm9jZXNzIGZvdW5kLCByZWNvbm5lY3QgaW5zdGVhZD8gIikpCi0g ICAgICAgIChlZ2xvdC1yZWNvbm5lY3QgY3VycmVudC1zZXJ2ZXIgaW50ZXJhY3RpdmUpCisgICAg ICAgICAgaW50ZXJhY3RpdmUKKyAgICAgICAgICAoeS1vci1uLXAgIltlZ2xvdF0gTGl2ZSBwcm9j ZXNzIGZvdW5kLCByZWNvbm5lY3QgaW5zdGVhZD8gIikpCisgICAgICAoZWdsb3QtcmVjb25uZWN0 IGN1cnJlbnQtc2VydmVyIGludGVyYWN0aXZlKQogICAgICAgKHdoZW4gbGl2ZS1wIChpZ25vcmUt ZXJyb3JzIChlZ2xvdC1zaHV0ZG93biBjdXJyZW50LXNlcnZlcikpKQogICAgICAgKGVnbG90LS1j b25uZWN0IG1hbmFnZWQtbWFqb3ItbW9kZSBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2Ut aWQpKSkpCiAKQEAgLTEwODksMTAgKzEwOTMsMTAgQEAgSU5URVJBQ1RJVkUgaXMgdCBpZiBjYWxs ZWQgaW50ZXJhY3RpdmVseS4iCiAgICh3aGVuIChqc29ucnBjLXJ1bm5pbmctcCBzZXJ2ZXIpCiAg ICAgKGlnbm9yZS1lcnJvcnMgKGVnbG90LXNodXRkb3duIHNlcnZlciBpbnRlcmFjdGl2ZSBuaWwg J3ByZXNlcnZlLWJ1ZmZlcnMpKSkKICAgKGVnbG90LS1jb25uZWN0IChlZ2xvdC0tbWFqb3ItbW9k ZXMgc2VydmVyKQotICAgICAgICAgICAgICAgICAgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikKLSAg ICAgICAgICAgICAgICAgIChlaWVpby1vYmplY3QtY2xhc3MtbmFtZSBzZXJ2ZXIpCi0gICAgICAg ICAgICAgICAgICAoZWdsb3QtLXNhdmVkLWluaXRhcmdzIHNlcnZlcikKLSAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tbGFuZ3VhZ2UtaWQgc2VydmVyKSkKKyAgICAoZWdsb3QtLXByb2plY3Qgc2Vy dmVyKQorICAgIChlaWVpby1vYmplY3QtY2xhc3MtbmFtZSBzZXJ2ZXIpCisgICAgKGVnbG90LS1z YXZlZC1pbml0YXJncyBzZXJ2ZXIpCisgICAgKGVnbG90LS1sYW5ndWFnZS1pZCBzZXJ2ZXIpKQog ICAoZWdsb3QtLW1lc3NhZ2UgIlJlY29ubmVjdGVkISIpKQogCiAoZGVmdmFyIGVnbG90LS1tYW5h Z2VkLW1vZGUpIDsgZm9yd2FyZCBkZWNsCkBAIC0xMTAyLDEyICsxMTA2LDEyIEBAIElOVEVSQUNU SVZFIGlzIHQgaWYgY2FsbGVkIGludGVyYWN0aXZlbHkuIgogICAiU3RhcnQgRWdsb3Qgc2Vzc2lv biBmb3IgY3VycmVudCBidWZmZXIgaWYgdGhlcmUgaXNuJ3Qgb25lLiIKICAgKGxldCAoKGJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkKICAgICAoY2wtbGFiZWxzCi0gICAgICAgICgobWF5YmUtY29u bmVjdAotICAgICAgICAgICgpCi0gICAgICAgICAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1hbmQt aG9vayAjJ21heWJlLWNvbm5lY3QgbmlsKQotICAgICAgICAgIChlZ2xvdC0td2hlbi1saXZlLWJ1 ZmZlciBidWZmZXIKLSAgICAgICAgICAgICh1bmxlc3MgZWdsb3QtLW1hbmFnZWQtbW9kZQotICAg ICAgICAgICAgICAoYXBwbHkgIydlZ2xvdC0tY29ubmVjdCAoZWdsb3QtLWd1ZXNzLWNvbnRhY3Qp KSkpKSkKKyAgICAgICgobWF5YmUtY29ubmVjdAorICAgICAgICAgKCkKKyAgICAgICAgIChyZW1v dmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgIydtYXliZS1jb25uZWN0IG5pbCkKKyAgICAgICAg IChlZ2xvdC0td2hlbi1saXZlLWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgKHVubGVzcyBlZ2xv dC0tbWFuYWdlZC1tb2RlCisgICAgICAgICAgICAgKGFwcGx5ICMnZWdsb3QtLWNvbm5lY3QgKGVn bG90LS1ndWVzcy1jb250YWN0KSkpKSkpCiAgICAgICAod2hlbiBidWZmZXItZmlsZS1uYW1lCiAg ICAgICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgIydtYXliZS1jb25uZWN0ICdhcHBl bmQgbmlsKSkpKSkKIApAQCAtMTExNyw4ICsxMTIxLDggQEAgVXNlIGN1cnJlbnQgc2VydmVyJ3Mg b3IgZmlyc3QgYXZhaWxhYmxlIEVnbG90IGV2ZW50cyBidWZmZXIuIgogICAoaW50ZXJhY3RpdmUg KGxpc3QgKGVnbG90LWN1cnJlbnQtc2VydmVyKSkpCiAgIChsZXQgKChidWZmZXIgKGlmIHNlcnZl ciAoanNvbnJwYy1ldmVudHMtYnVmZmVyIHNlcnZlcikKICAgICAgICAgICAgICAgICAgIChjbC1m aW5kICJcXCpFR0xPVC4qZXZlbnRzXFwqIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1 ZmZlci1saXN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAjJ2J1ZmZlci1uYW1l IDp0ZXN0ICMnc3RyaW5nLW1hdGNoKSkpKQorICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLWxp c3QpCisgICAgICAgICAgICAgICAgICAgIDprZXkgIydidWZmZXItbmFtZSA6dGVzdCAjJ3N0cmlu Zy1tYXRjaCkpKSkKICAgICAoaWYgYnVmZmVyIChkaXNwbGF5LWJ1ZmZlciBidWZmZXIpCiAgICAg ICAoZWdsb3QtLWVycm9yICJDYW4ndCBmaW5kIGFuIEVnbG90IGV2ZW50cyBidWZmZXIhIikpKSkK IApAQCAtMTE1MCwxNiArMTE1NCwxNiBAQCBFYWNoIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgc2Vy dmVyIGFzIGFuIGFyZ3VtZW50IikKIChkZWZ1biBlZ2xvdC0tY21kIChjb250YWN0KQogICAiSGVs cGVyIGZvciBgZWdsb3QtLWNvbm5lY3QnLiIKICAgKGlmIChmaWxlLXJlbW90ZS1wIGRlZmF1bHQt ZGlyZWN0b3J5KQotICAgICAgOzsgVE9ETzogdGhpcyBzZWVtcyBsaWtlIGEgYnVnLCBhbHRob3Vn aCBpdOKAmXMgZXZlcnl3aGVyZS4gRm9yCi0gICAgICA7OyBzb21lIHJlYXNvbiwgZm9yIHJlbW90 ZSBjb25uZWN0aW9ucyBvbmx5LCBvdmVyIGEgcGlwZSwgd2UKLSAgICAgIDs7IG5lZWQgdG8gdHVy biBvZmYgbGluZSBidWZmZXJpbmcgb24gdGhlIHR0eS4KLSAgICAgIDs7Ci0gICAgICA7OyBOb3Qg b25seSBkb2VzIHRoaXMgc2VlbSBsaWtlIHRoZXJlIHNob3VsZCBiZSBhIGJldHRlciB3YXksCi0g ICAgICA7OyBidXQgaXQgYWxtb3N0IGNlcnRhaW5seSBkb2VzbuKAmXQgd29yayBvbiBub24tdW5p eCBzeXN0ZW1zLgotICAgICAgKGxpc3QgInNoIiAiLWMiCi0gICAgICAgICAgICAoc3RyaW5nLWpv aW4gKGNvbnMgInN0dHkgcmF3ID4gL2Rldi9udWxsOyIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWFwY2FyICMnc2hlbGwtcXVvdGUtYXJndW1lbnQgY29udGFjdCkpCi0gICAgICAg ICAgICAgIiAiKSkKKyAgICA7OyBUT0RPOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcsIGFsdGhvdWdo IGl04oCZcyBldmVyeXdoZXJlLiBGb3IKKyAgICA7OyBzb21lIHJlYXNvbiwgZm9yIHJlbW90ZSBj b25uZWN0aW9ucyBvbmx5LCBvdmVyIGEgcGlwZSwgd2UKKyAgICA7OyBuZWVkIHRvIHR1cm4gb2Zm IGxpbmUgYnVmZmVyaW5nIG9uIHRoZSB0dHkuCisgICAgOzsKKyAgICA7OyBOb3Qgb25seSBkb2Vz IHRoaXMgc2VlbSBsaWtlIHRoZXJlIHNob3VsZCBiZSBhIGJldHRlciB3YXksCisgICAgOzsgYnV0 IGl0IGFsbW9zdCBjZXJ0YWlubHkgZG9lc27igJl0IHdvcmsgb24gbm9uLXVuaXggc3lzdGVtcy4K KyAgICAobGlzdCAic2giICItYyIKKyAgICAgIChzdHJpbmctam9pbiAoY29ucyAic3R0eSByYXcg PiAvZGV2L251bGw7IgorICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ3NoZWxsLXF1b3Rl LWFyZ3VtZW50IGNvbnRhY3QpKQorICAgICAgICAiICIpKQogICAgIGNvbnRhY3QpKQogCiAoZGVm dmFyLWxvY2FsIGVnbG90LS1jYWNoZWQtc2VydmVyIG5pbApAQCAtMTE2OSw2NCArMTE3Myw2NCBA QCBFYWNoIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgc2VydmVyIGFzIGFuIGFyZ3VtZW50IikKICAg IkNvbm5lY3QgdG8gTUFOQUdFRC1NT0RFUywgTEFOR1VBR0UtSUQsIFBST0pFQ1QsIENMQVNTIGFu ZCBDT05UQUNULgogVGhpcyBkb2NzdHJpbmcgYXBwZWFzZXMgY2hlY2tkb2MsIHRoYXQncyBhbGwu IgogICAobGV0KiAoKGRlZmF1bHQtZGlyZWN0b3J5IChwcm9qZWN0LXJvb3QgcHJvamVjdCkpCi0g ICAgICAgICAobmlja25hbWUgKGZpbGUtbmFtZS1iYXNlIChkaXJlY3RvcnktZmlsZS1uYW1lIGRl ZmF1bHQtZGlyZWN0b3J5KSkpCi0gICAgICAgICAocmVhZGFibGUtbmFtZSAoZm9ybWF0ICJFR0xP VCAoJXMvJXMpIiBuaWNrbmFtZSBtYW5hZ2VkLW1vZGVzKSkKLSAgICAgICAgIGF1dG9zdGFydC1p bmZlcmlvci1wcm9jZXNzCi0gICAgICAgICBzZXJ2ZXItaW5mbwotICAgICAgICAgKGNvbnRhY3Qg KGlmIChmdW5jdGlvbnAgY29udGFjdCkgKGZ1bmNhbGwgY29udGFjdCkgY29udGFjdCkpCi0gICAg ICAgICAoaW5pdGFyZ3MKLSAgICAgICAgICAoY29uZCAoKGtleXdvcmRwIChjYXIgY29udGFjdCkp IGNvbnRhY3QpCi0gICAgICAgICAgICAgICAgKChpbnRlZ2VycCAoY2FkciBjb250YWN0KSkKLSAg ICAgICAgICAgICAgICAgKHNldHEgc2VydmVyLWluZm8gKGxpc3QgKGZvcm1hdCAiJXM6JXMiIChj YXIgY29udGFjdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FkciBjb250YWN0KSkpKQotICAgICAgICAgICAgICAgICBgKDpwcm9jZXNzICwobGFt YmRhICgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5ICMnb3Blbi1uZXR3 b3JrLXN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkYWJs ZS1uYW1lIG5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGNv bnRhY3QpIChjYWRyIGNvbnRhY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjZGRyIGNvbnRhY3QpKSkpKQotICAgICAgICAgICAgICAgICgoYW5kIChzdHJpbmdwIChj YXIgY29udGFjdCkpIChtZW1xIDphdXRvcG9ydCBjb250YWN0KSkKLSAgICAgICAgICAgICAgICAg KHNldHEgc2VydmVyLWluZm8gKGxpc3QgIjxpbmZlcmlvciBwcm9jZXNzPiIpKQotICAgICAgICAg ICAgICAgICBgKDpwcm9jZXNzICwobGFtYmRhICgpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBjYXNlLWxldCAoKGAoLGNvbm5lY3Rpb24gLiAsaW5mZXJpb3IpCisgICAgICAgICAg KG5pY2tuYW1lIChmaWxlLW5hbWUtYmFzZSAoZGlyZWN0b3J5LWZpbGUtbmFtZSBkZWZhdWx0LWRp cmVjdG9yeSkpKQorICAgICAgICAgIChyZWFkYWJsZS1uYW1lIChmb3JtYXQgIkVHTE9UICglcy8l cykiIG5pY2tuYW1lIG1hbmFnZWQtbW9kZXMpKQorICAgICAgICAgIGF1dG9zdGFydC1pbmZlcmlv ci1wcm9jZXNzCisgICAgICAgICAgc2VydmVyLWluZm8KKyAgICAgICAgICAoY29udGFjdCAoaWYg KGZ1bmN0aW9ucCBjb250YWN0KSAoZnVuY2FsbCBjb250YWN0KSBjb250YWN0KSkKKyAgICAgICAg ICAoaW5pdGFyZ3MKKyAgICAgICAgICAgIChjb25kICgoa2V5d29yZHAgKGNhciBjb250YWN0KSkg Y29udGFjdCkKKyAgICAgICAgICAgICAgKChpbnRlZ2VycCAoY2FkciBjb250YWN0KSkKKyAgICAg ICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAobGlzdCAoZm9ybWF0ICIlczolcyIgKGNhciBj b250YWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIg Y29udGFjdCkpKSkKKyAgICAgICAgICAgICAgICBgKDpwcm9jZXNzICwobGFtYmRhICgpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydvcGVuLW5ldHdvcmstc3RyZWFtCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRhYmxlLW5hbWUgbmlsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgY29udGFjdCkgKGNhZHIgY29udGFjdCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkZHIgY29udGFjdCkpKSkpCisgICAgICAg ICAgICAgICgoYW5kIChzdHJpbmdwIChjYXIgY29udGFjdCkpIChtZW1xIDphdXRvcG9ydCBjb250 YWN0KSkKKyAgICAgICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAobGlzdCAiPGluZmVyaW9y IHByb2Nlc3M+IikpCisgICAgICAgICAgICAgICAgYCg6cHJvY2VzcyAsKGxhbWJkYSAoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGNvbm5lY3Rpb24gLiAs aW5mZXJpb3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl Z2xvdC0taW5mZXJpb3ItYm9vdHN0cmFwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWFkYWJsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250YWN0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBhdXRvc3RhcnQtaW5mZXJpb3ItcHJvY2VzcyBpbmZlcmlvcikKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pKSkpCi0gICAgICAgICAgICAgICAg KChzdHJpbmdwIChjYXIgY29udGFjdCkpCi0gICAgICAgICAgICAgICAgIChsZXQqICgocHJvYmUg KGNsLXBvc2l0aW9uLWlmICMna2V5d29yZHAgY29udGFjdCkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGFibGUtbmFtZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3QpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgYXV0b3N0YXJ0LWluZmVyaW9yLXByb2Nlc3MgaW5mZXJp b3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pKSkpCisgICAg ICAgICAgICAgICgoc3RyaW5ncCAoY2FyIGNvbnRhY3QpKQorICAgICAgICAgICAgICAgIChsZXQq ICgocHJvYmUgKGNsLXBvc2l0aW9uLWlmICMna2V5d29yZHAgY29udGFjdCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAobW9yZS1pbml0YXJncyAoYW5kIHByb2JlIChjbC1zdWJzZXEgY29udGFj dCBwcm9iZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhY3QgKGNsLXN1YnNlcSBj b250YWN0IDAgcHJvYmUpKSkKLSAgICAgICAgICAgICAgICAgICBgKDpwcm9jZXNzCisgICAgICAg ICAgICAgICAgICBgKDpwcm9jZXNzCiAgICAgICAgICAgICAgICAgICAgICAsKGxhbWJkYSAoKQog ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQtZGlyZWN0b3J5IGRlZmF1bHQt ZGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtcHJvY2VzcwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgOm5hbWUgcmVhZGFibGUtbmFtZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmNvbW1hbmQgKHNldHEgc2VydmVyLWluZm8gKGVnbG90LS1jbWQgY29u dGFjdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29ubmVjdGlvbi10eXBlICdwaXBl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29kaW5nICd1dGYtOC1lbWFjcy11bml4Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICA6bm9xdWVyeSB0Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICA6c3RkZXJyIChnZXQtYnVmZmVyLWNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiKiVzIHN0ZGVycioiIHJlYWRhYmxlLW5hbWUpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgOmZpbGUtaGFuZGxlciB0KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOm5hbWUgcmVhZGFibGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpjb21tYW5kIChzZXRxIHNlcnZlci1pbmZvIChlZ2xvdC0tY21kIGNvbnRhY3QpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb25uZWN0aW9uLXR5cGUgJ3BpcGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6Y29kaW5nICd1dGYtOC1lbWFjcy11bml4CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOm5vcXVlcnkgdAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpzdGRlcnIgKGdldC1idWZmZXItY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIiolcyBzdGRlcnIqIiByZWFkYWJsZS1uYW1lKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ZmlsZS1oYW5kbGVyIHQpKSkKICAgICAgICAgICAgICAg ICAgICAgICxAbW9yZS1pbml0YXJncykpKSkpCi0gICAgICAgICAoc3ByZWFkIChsYW1iZGEgKGZu KSAobGFtYmRhIChzZXJ2ZXIgbWV0aG9kIHBhcmFtcykKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldCAoKGVnbG90LS1jYWNoZWQtc2VydmVyIHNlcnZlcikpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgZm4gc2VydmVyIG1ldGhvZCAoYXBwZW5kIHBh cmFtcyBuaWwpKSkpKSkKLSAgICAgICAgIChzZXJ2ZXIKLSAgICAgICAgICAoYXBwbHkKLSAgICAg ICAgICAgIydtYWtlLWluc3RhbmNlIGNsYXNzCi0gICAgICAgICAgIDpuYW1lIHJlYWRhYmxlLW5h bWUKLSAgICAgICAgICAgOmV2ZW50cy1idWZmZXItc2Nyb2xsYmFjay1zaXplIGVnbG90LWV2ZW50 cy1idWZmZXItc2l6ZQotICAgICAgICAgICA6bm90aWZpY2F0aW9uLWRpc3BhdGNoZXIgKGZ1bmNh bGwgc3ByZWFkICMnZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbikKLSAgICAgICAgICAgOnJlcXVl c3QtZGlzcGF0Y2hlciAoZnVuY2FsbCBzcHJlYWQgIydlZ2xvdC1oYW5kbGUtcmVxdWVzdCkKLSAg ICAgICAgICAgOm9uLXNodXRkb3duICMnZWdsb3QtLW9uLXNodXRkb3duCi0gICAgICAgICAgIGlu aXRhcmdzKSkKLSAgICAgICAgIChjYW5jZWxsZWQgbmlsKQotICAgICAgICAgKHRhZyAobWFrZS1z eW1ib2wgImNvbm5lY3RlZC1jYXRjaC10YWciKSkpCisgICAgICAgICAgKHNwcmVhZCAobGFtYmRh IChmbikgKGxhbWJkYSAoc2VydmVyIG1ldGhvZCBwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGV0ICgoZWdsb3QtLWNhY2hlZC1zZXJ2ZXIgc2VydmVyKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGZuIHNlcnZlciBtZXRob2QgKGFw cGVuZCBwYXJhbXMgbmlsKSkpKSkpCisgICAgICAgICAgKHNlcnZlcgorICAgICAgICAgICAgKGFw cGx5CisgICAgICAgICAgICAgICMnbWFrZS1pbnN0YW5jZSBjbGFzcworICAgICAgICAgICAgICA6 bmFtZSByZWFkYWJsZS1uYW1lCisgICAgICAgICAgICAgIDpldmVudHMtYnVmZmVyLXNjcm9sbGJh Y2stc2l6ZSBlZ2xvdC1ldmVudHMtYnVmZmVyLXNpemUKKyAgICAgICAgICAgICAgOm5vdGlmaWNh dGlvbi1kaXNwYXRjaGVyIChmdW5jYWxsIHNwcmVhZCAjJ2VnbG90LWhhbmRsZS1ub3RpZmljYXRp b24pCisgICAgICAgICAgICAgIDpyZXF1ZXN0LWRpc3BhdGNoZXIgKGZ1bmNhbGwgc3ByZWFkICMn ZWdsb3QtaGFuZGxlLXJlcXVlc3QpCisgICAgICAgICAgICAgIDpvbi1zaHV0ZG93biAjJ2VnbG90 LS1vbi1zaHV0ZG93bgorICAgICAgICAgICAgICBpbml0YXJncykpCisgICAgICAgICAgKGNhbmNl bGxlZCBuaWwpCisgICAgICAgICAgKHRhZyAobWFrZS1zeW1ib2wgImNvbm5lY3RlZC1jYXRjaC10 YWciKSkpCiAgICAgKHdoZW4gc2VydmVyLWluZm8KICAgICAgIChqc29ucnBjLS1kZWJ1ZyBzZXJ2 ZXIgIlJ1bm5pbmcgbGFuZ3VhZ2Ugc2VydmVyOiAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWpvaW4gc2VydmVyLWluZm8gIiAiKSkpCisgICAgICAgIChzdHJpbmctam9pbiBzZXJ2 ZXItaW5mbyAiICIpKSkKICAgICAoc2V0ZiAoZWdsb3QtLXNhdmVkLWluaXRhcmdzIHNlcnZlcikg aW5pdGFyZ3MpCiAgICAgKHNldGYgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikgcHJvamVjdCkKICAg ICAoc2V0ZiAoZWdsb3QtLXByb2plY3Qtbmlja25hbWUgc2VydmVyKSBuaWNrbmFtZSkKQEAgLTEy MzgsOTEgKzEyNDIsOTEgQEAgVGhpcyBkb2NzdHJpbmcgYXBwZWFzZXMgY2hlY2tkb2MsIHRoYXQn cyBhbGwuIgogICAgIDs7IG1heWJlLXN5bmMtbWF5YmUtYXN5bmMgc2VtYW50aWNzIHdlIHVzZSBg anNvbnJwYy1hc3luYy1yZXF1ZXN0JwogICAgIDs7IGFuZCBtaW1pYyBtb3N0IG9mIGBqc29ucnBj LXJlcXVlc3QnLgogICAgICh1bndpbmQtcHJvdGVjdAotICAgICAgICAoY29uZGl0aW9uLWNhc2Ug X3F1aXQKLSAgICAgICAgICAgIChsZXQgKChyZXR2YWwKLSAgICAgICAgICAgICAgICAgICAoY2F0 Y2ggdGFnCi0gICAgICAgICAgICAgICAgICAgICAoanNvbnJwYy1hc3luYy1yZXF1ZXN0Ci0gICAg ICAgICAgICAgICAgICAgICAgc2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgOmluaXRpYWxp emUKLSAgICAgICAgICAgICAgICAgICAgICAobGlzdCA6cHJvY2Vzc0lkCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHVubGVzcyAob3IgZWdsb3Qtd2l0aGhvbGQtcHJvY2Vzcy1pZAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLXJlbW90ZS1wIGRlZmF1 bHQtZGlyZWN0b3J5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl cSAoanNvbnJwYy1wcm9jZXNzLXR5cGUgc2VydmVyKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnbmV0d29yaykpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZW1hY3MtcGlkKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBNYXliZSB0 dXJuIHRyYW1weSBgL3NzaDpmb29AYmFyOi9wYXRoL3RvL2Jhei5weScKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBpbnRvIGAvcGF0aC90by9iYXoucHknLCBzbyBMU1AgZ3Jva3MgaXQu Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJvb3RQYXRoIChmaWxlLWxvY2FsLW5hbWUK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1l IGRlZmF1bHQtZGlyZWN0b3J5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cm9vdFVy aSAoZWdsb3QtLXBhdGgtdG8tdXJpIGRlZmF1bHQtZGlyZWN0b3J5KQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDppbml0aWFsaXphdGlvbk9wdGlvbnMgKGVnbG90LWluaXRpYWxpemF0aW9u LW9wdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNhcGFiaWxpdGllcyAo ZWdsb3QtY2xpZW50LWNhcGFiaWxpdGllcyBzZXJ2ZXIpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgOndvcmtzcGFjZUZvbGRlcnMgKGVnbG90LXdvcmtzcGFjZS1mb2xkZXJzIHNlcnZlcikp Ci0gICAgICAgICAgICAgICAgICAgICAgOnN1Y2Nlc3MtZm4KLSAgICAgICAgICAgICAgICAgICAg ICAoZWdsb3QtLWxhbWJkYSAoKEluaXRpYWxpemVSZXN1bHQpIGNhcGFiaWxpdGllcyBzZXJ2ZXJJ bmZvKQotICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyBjYW5jZWxsZWQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgKHB1c2ggc2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnZXRoYXNoIHByb2plY3QgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdCkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0tY2FwYWJpbGl0aWVzIHNlcnZlcikg Y2FwYWJpbGl0aWVzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ZiAoZWdsb3QtLXNl cnZlci1pbmZvIHNlcnZlcikgc2VydmVySW5mbykKLSAgICAgICAgICAgICAgICAgICAgICAgICAg KGpzb25ycGMtbm90aWZ5IHNlcnZlciA6aW5pdGlhbGl6ZWQgZWdsb3QtLXt9KQotICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9saXN0IChidWZmZXIgKGJ1ZmZlci1saXN0KSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IE5vIG5lZWQgdG8gcGFzcyBTRVJWRVIgYXMgYW4gYXJn dW1lbnQ6IGl0IGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYmVlbiByZWdp c3RlcmVkIGluIGBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0JywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kIChhbmQgY2FjaGVkKSBmcm9t Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBgZWdsb3QtLW1heWJlLWFjdGl2YXRl LWVkaXRpbmctbW9kZScgaW4gYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBt YW5hZ2VkIGJ1ZmZlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbWF5 YmUtYWN0aXZhdGUtZWRpdGluZy1tb2RlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRmIChlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0IHNlcnZlcikKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoYm9vbGVhbnAgZWdsb3QtYXV0b3JlY29ubmVjdCkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobm90IGVnbG90LWF1dG9yZWNvbm5lY3QpKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChjbC1wbHVzcCBlZ2xvdC1hdXRvcmVjb25uZWN0KQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChydW4td2l0aC10aW1lcgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlZ2xvdC1hdXRvcmVjb25uZWN0IG5pbAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldGYgKGVnbG90LS1pbmhpYml0LWF1dG9yZWNvbm5lY3Qgc2VydmVy KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsIGVnbG90 LWF1dG9yZWNvbm5lY3QpKSkpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChk ZWZhdWx0LWRpcmVjdG9yeSAocHJvamVjdC1yb290IHByb2plY3QpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWFqb3ItbW9kZSAoY2FyIG1hbmFnZWQtbW9kZXMpKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxl LWJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdz ICdlZ2xvdC1jb25uZWN0LWhvb2sgc2VydmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg KGVnbG90LS1tZXNzYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGVkISBT ZXJ2ZXIgYCVzJyBub3cgbWFuYWdpbmcgYCVzJyBidWZmZXJzIFwKKyAgICAgIChjb25kaXRpb24t Y2FzZSBfcXVpdAorICAgICAgICAobGV0ICgocmV0dmFsCisgICAgICAgICAgICAgICAgKGNhdGNo IHRhZworICAgICAgICAgICAgICAgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAorICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgOmluaXRpYWxpemUKKyAgICAg ICAgICAgICAgICAgICAgKGxpc3QgOnByb2Nlc3NJZAorICAgICAgICAgICAgICAgICAgICAgICh1 bmxlc3MgKG9yIGVnbG90LXdpdGhob2xkLXByb2Nlc3MtaWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZpbGUtcmVtb3RlLXAgZGVmYXVsdC1kaXJlY3RvcnkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcSAoanNvbnJwYy1wcm9jZXNzLXR5cGUgc2VydmVyKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIChlbWFjcy1waWQpKQorICAgICAgICAgICAgICAgICAgICAgIDs7IE1heWJl IHR1cm4gdHJhbXB5IGAvc3NoOmZvb0BiYXI6L3BhdGgvdG8vYmF6LnB5JworICAgICAgICAgICAg ICAgICAgICAgIDs7IGludG8gYC9wYXRoL3RvL2Jhei5weScsIHNvIExTUCBncm9rcyBpdC4KKyAg ICAgICAgICAgICAgICAgICAgICA6cm9vdFBhdGggKGZpbGUtbG9jYWwtbmFtZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0 b3J5KSkKKyAgICAgICAgICAgICAgICAgICAgICA6cm9vdFVyaSAoZWdsb3QtLXBhdGgtdG8tdXJp IGRlZmF1bHQtZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgICAgICAgIDppbml0aWFsaXphdGlv bk9wdGlvbnMgKGVnbG90LWluaXRpYWxpemF0aW9uLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyKQorICAgICAgICAgICAgICAgICAg ICAgIDpjYXBhYmlsaXRpZXMgKGVnbG90LWNsaWVudC1jYXBhYmlsaXRpZXMgc2VydmVyKQorICAg ICAgICAgICAgICAgICAgICAgIDp3b3Jrc3BhY2VGb2xkZXJzIChlZ2xvdC13b3Jrc3BhY2UtZm9s ZGVycyBzZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICA6c3VjY2Vzcy1mbgorICAgICAgICAg ICAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKEluaXRpYWxpemVSZXN1bHQpIGNhcGFiaWxpdGll cyBzZXJ2ZXJJbmZvKQorICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgY2FuY2VsbGVkCisg ICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGdldGhhc2ggcHJvamVjdCBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0KSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0tY2FwYWJpbGl0aWVzIHNlcnZlcikgY2Fw YWJpbGl0aWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGVnbG90LS1zZXJ2ZXIt aW5mbyBzZXJ2ZXIpIHNlcnZlckluZm8pCisgICAgICAgICAgICAgICAgICAgICAgICAoanNvbnJw Yy1ub3RpZnkgc2VydmVyIDppbml0aWFsaXplZCBlZ2xvdC0te30pCisgICAgICAgICAgICAgICAg ICAgICAgICAoZG9saXN0IChidWZmZXIgKGJ1ZmZlci1saXN0KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgTm8gbmVlZCB0byBwYXNzIFNFUlZFUiBhcyBhbiBhcmd1bWVudDogaXQgaGFz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYmVlbiByZWdpc3RlcmVkIGluIGBlZ2xv dC0tc2VydmVycy1ieS1wcm9qZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBz byB0aGF0IGl0IGNhbiBiZSBmb3VuZCAoYW5kIGNhY2hlZCkgZnJvbQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGBlZ2xvdC0tbWF5YmUtYWN0aXZhdGUtZWRpdGluZy1tb2RlJyBpbiBh bnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBtYW5hZ2VkIGJ1ZmZlci4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9k ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGVnbG90LS1pbmhpYml0LWF1dG9y ZWNvbm5lY3Qgc2VydmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoYm9vbGVhbnAgZWdsb3QtYXV0b3JlY29ubmVjdCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgZWdsb3QtYXV0b3JlY29ubmVjdCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjbC1wbHVzcCBlZ2xvdC1hdXRvcmVjb25uZWN0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bi13aXRoLXRpbWVyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LWF1dG9yZWNvbm5lY3QgbmlsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2V0ZiAoZWdsb3QtLWluaGliaXQtYXV0b3JlY29ubmVjdCBzZXJ2ZXIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCBlZ2xvdC1hdXRvcmVj b25uZWN0KSkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQtZGly ZWN0b3J5IChwcm9qZWN0LXJvb3QgcHJvamVjdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1ham9yLW1vZGUgKGNhciBtYW5hZ2VkLW1vZGVzKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdzICdlZ2xvdC1jb25uZWN0 LWhvb2sgc2VydmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbWVzc2FnZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGVkISBTZXJ2ZXIgYCVzJyBub3cgbWFu YWdpbmcgYCVzJyBidWZmZXJzIFwKIGluIHByb2plY3QgYCVzJy4iCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAob3IgKHBsaXN0LWdldCBzZXJ2ZXJJbmZvIDpuYW1lKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChqc29ucnBjLW5hbWUgc2VydmVyKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1hbmFnZWQtbW9kZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChl Z2xvdC1wcm9qZWN0LW5pY2tuYW1lIHNlcnZlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICh3aGVuIHRhZyAodGhyb3cgdGFnIHQpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgOnRpbWVv dXQgZWdsb3QtY29ubmVjdC10aW1lb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgOmVycm9yLWZu IChlZ2xvdC0tbGFtYmRhICgoUmVzcG9uc2VFcnJvcikgY29kZSBtZXNzYWdlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAob3IgKHBsaXN0LWdldCBzZXJ2ZXJJbmZvIDpuYW1lKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLW5hbWUgc2VydmVyKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFuYWdlZC1tb2RlcworICAgICAgICAgICAgICAgICAgICAgICAgICAo ZWdsb3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAg KHdoZW4gdGFnICh0aHJvdyB0YWcgdCkpKSkKKyAgICAgICAgICAgICAgICAgICAgOnRpbWVvdXQg ZWdsb3QtY29ubmVjdC10aW1lb3V0CisgICAgICAgICAgICAgICAgICAgIDplcnJvci1mbiAoZWds b3QtLWxhbWJkYSAoKFJlc3BvbnNlRXJyb3IpIGNvZGUgbWVzc2FnZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVubGVzcyBjYW5jZWxsZWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKG1zZyAoZm9ybWF0ICIlczogJXMiIGNvZGUgbWVzc2Fn ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHRhZyAodGhyb3cg dGFnIGAoZXJyb3IgLiAsbXNnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVnbG90LS1lcnJvciBtc2cpKSkpKQorICAgICAgICAgICAgICAgICAgICA6dGltZW91dC1m biAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyBj YW5jZWxsZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLXNo dXRkb3duIHNlcnZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChtc2cgKGZvcm1hdCAiJXM6ICVzIiBjb2RlIG1lc3NhZ2UpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChtc2cgKGZvcm1hdCAiVGltZWQgb3V0IGFmdGVyICVz IHNlY29uZHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWdsb3QtY29ubmVjdC10aW1lb3V0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiB0YWcgKHRocm93IHRhZyBgKGVycm9yIC4gLG1zZykpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1lcnJvciBtc2cpKSkpKQotICAg ICAgICAgICAgICAgICAgICAgIDp0aW1lb3V0LWZuIChsYW1iZGEgKCkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgY2FuY2VsbGVkCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLXNodXRkb3duIHNlcnZlcikKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG1zZyAoZm9ybWF0ICJUaW1lZCBv dXQgYWZ0ZXIgJXMgc2Vjb25kcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVnbG90LWNvbm5lY3QtdGltZW91dCkpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB0YWcgKHRocm93IHRhZyBgKGVycm9y IC4gLG1zZykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWds b3QtLWVycm9yIG1zZykpKSkpKQotICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChudW1iZXJw IGVnbG90LXN5bmMtY29ubmVjdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjZXB0 LXByb2Nlc3Mtb3V0cHV0IG5pbCBlZ2xvdC1zeW5jLWNvbm5lY3QpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVnbG90LXN5bmMtY29ubmVjdAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aGlsZSB0IChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsIGVnbG90LWNvbm5lY3QtdGltZW91dCkpKSkpKSkKLSAgICAg ICAgICAgICAgKHBjYXNlIHJldHZhbAotICAgICAgICAgICAgICAgIChgKGVycm9yIC4gLG1zZykg KGVnbG90LS1lcnJvciBtc2cpKQotICAgICAgICAgICAgICAgIChgbmlsIChlZ2xvdC0tbWVzc2Fn ZSAiV2FpdGluZyBpbiBiYWNrZ3JvdW5kIGZvciBzZXJ2ZXIgYCVzJyIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQotICAgICAgICAg ICAgICAgICAgICAgIG5pbCkKLSAgICAgICAgICAgICAgICAoXyBzZXJ2ZXIpKSkKLSAgICAgICAg ICAocXVpdCAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIpIChzZXRxIGNhbmNlbGxlZCAncXVpdCkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZXJyb3Ig bXNnKSkpKSkpCisgICAgICAgICAgICAgICAgICAoY29uZCAoKG51bWJlcnAgZWdsb3Qtc3luYy1j b25uZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0 IG5pbCBlZ2xvdC1zeW5jLWNvbm5lY3QpKQorICAgICAgICAgICAgICAgICAgICAoZWdsb3Qtc3lu Yy1jb25uZWN0CisgICAgICAgICAgICAgICAgICAgICAgKHdoaWxlIHQgKGFjY2VwdC1wcm9jZXNz LW91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsIGVnbG90LWNvbm5l Y3QtdGltZW91dCkpKSkpKSkKKyAgICAgICAgICAocGNhc2UgcmV0dmFsCisgICAgICAgICAgICAo YChlcnJvciAuICxtc2cpIChlZ2xvdC0tZXJyb3IgbXNnKSkKKyAgICAgICAgICAgIChgbmlsIChl Z2xvdC0tbWVzc2FnZSAiV2FpdGluZyBpbiBiYWNrZ3JvdW5kIGZvciBzZXJ2ZXIgYCVzJyIKKyAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQorICAgICAgICAgICAgICBu aWwpCisgICAgICAgICAgICAoXyBzZXJ2ZXIpKSkKKyAgICAgICAgKHF1aXQgKGpzb25ycGMtc2h1 dGRvd24gc2VydmVyKSAoc2V0cSBjYW5jZWxsZWQgJ3F1aXQpKSkKICAgICAgIChzZXRxIHRhZyBu aWwpKSkpCiAKIChkZWZ1biBlZ2xvdC0taW5mZXJpb3ItYm9vdHN0cmFwIChuYW1lIGNvbnRhY3Qg Jm9wdGlvbmFsIGNvbm5lY3QtYXJncykKQEAgLTEzMzIsNDcgKzEzMzYsNDcgQEAgTmFtZSBib3Ro IGJhc2VkIG9uIE5BTUUuCiBDT05ORUNULUFSR1MgYXJlIHBhc3NlZCBhcyBhZGRpdGlvbmFsIGFy Z3VtZW50cyB0bwogYG9wZW4tbmV0d29yay1zdHJlYW0nLiIKICAgKGxldCogKChwb3J0LXByb2Jl IChtYWtlLW5ldHdvcmstcHJvY2VzcyA6bmFtZSAiZWdsb3QtcG9ydC1wcm9iZS1kdW1teSIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VydmVyIHQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAibG9jYWxob3N0Igot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZXJ2aWNlIDApKQot ICAgICAgICAgKHBvcnQtbnVtYmVyICh1bndpbmQtcHJvdGVjdAotICAgICAgICAgICAgICAgICAg ICAgICAgICAocHJvY2Vzcy1jb250YWN0IHBvcnQtcHJvYmUgOnNlcnZpY2UpCi0gICAgICAgICAg ICAgICAgICAgICAgICAoZGVsZXRlLXByb2Nlc3MgcG9ydC1wcm9iZSkpKQotICAgICAgICAgaW5m ZXJpb3IgY29ubmVjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgOnNlcnZlciB0CisgICAg ICAgICAgICAgICAgICAgICAgIDpob3N0ICJsb2NhbGhvc3QiCisgICAgICAgICAgICAgICAgICAg ICAgIDpzZXJ2aWNlIDApKQorICAgICAgICAgIChwb3J0LW51bWJlciAodW53aW5kLXByb3RlY3QK KyAgICAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzcy1jb250YWN0IHBvcnQtcHJvYmUgOnNl cnZpY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1wcm9jZXNzIHBvcnQtcHJv YmUpKSkKKyAgICAgICAgICBpbmZlcmlvciBjb25uZWN0aW9uKQogICAgICh1bndpbmQtcHJvdGVj dAotICAgICAgICAocHJvZ24KLSAgICAgICAgICAoc2V0cSBpbmZlcmlvcgotICAgICAgICAgICAg ICAgIChtYWtlLXByb2Nlc3MKLSAgICAgICAgICAgICAgICAgOm5hbWUgKGZvcm1hdCAiYXV0b3N0 YXJ0LWluZmVyaW9yLSVzIiBuYW1lKQotICAgICAgICAgICAgICAgICA6c3RkZXJyIChmb3JtYXQg IiolcyBzdGRlcnIqIiBuYW1lKQotICAgICAgICAgICAgICAgICA6bm9xdWVyeSB0Ci0gICAgICAg ICAgICAgICAgIDpjb21tYW5kIChjbC1zdWJzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZvcm1hdCAiJXMiIHBvcnQtbnVtYmVyKSA6YXV0b3BvcnQgY29udGFjdCkpKQotICAgICAgICAg IChzZXRxIGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAoY2wtbG9vcAotICAgICAgICAgICAg ICAgICByZXBlYXQgMTAgZm9yIGkgZnJvbSAxCi0gICAgICAgICAgICAgICAgIGRvIChhY2NlcHQt cHJvY2Vzcy1vdXRwdXQgbmlsIDAuNSkKLSAgICAgICAgICAgICAgICAgd2hpbGUgKHByb2Nlc3Mt bGl2ZS1wIGluZmVyaW9yKQotICAgICAgICAgICAgICAgICBkbyAoZWdsb3QtLW1lc3NhZ2UKLSAg ICAgICAgICAgICAgICAgICAgICJUcnlpbmcgdG8gY29ubmVjdCB0byBsb2NhbGhvc3QgYW5kIHBv cnQgJXMgKGF0dGVtcHQgJXMpIgotICAgICAgICAgICAgICAgICAgICAgcG9ydC1udW1iZXIgaSkK LSAgICAgICAgICAgICAgICAgdGhlcmVpcyAoaWdub3JlLWVycm9ycwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFwcGx5ICMnb3Blbi1uZXR3b3JrLXN0cmVhbQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChmb3JtYXQgImF1dG9jb25uZWN0LSVzIiBuYW1lKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJsb2NhbGhvc3QiIHBvcnQtbnVtYmVyIGNvbm5lY3QtYXJncykpKSkKLSAgICAg ICAgICAoY29ucyBjb25uZWN0aW9uIGluZmVyaW9yKSkKKyAgICAgIChwcm9nbgorICAgICAgICAo c2V0cSBpbmZlcmlvcgorICAgICAgICAgIChtYWtlLXByb2Nlc3MKKyAgICAgICAgICAgIDpuYW1l IChmb3JtYXQgImF1dG9zdGFydC1pbmZlcmlvci0lcyIgbmFtZSkKKyAgICAgICAgICAgIDpzdGRl cnIgKGZvcm1hdCAiKiVzIHN0ZGVycioiIG5hbWUpCisgICAgICAgICAgICA6bm9xdWVyeSB0Cisg ICAgICAgICAgICA6Y29tbWFuZCAoY2wtc3Vic3QKKyAgICAgICAgICAgICAgICAgICAgICAgKGZv cm1hdCAiJXMiIHBvcnQtbnVtYmVyKSA6YXV0b3BvcnQgY29udGFjdCkpKQorICAgICAgICAoc2V0 cSBjb25uZWN0aW9uCisgICAgICAgICAgKGNsLWxvb3AKKyAgICAgICAgICAgIHJlcGVhdCAxMCBm b3IgaSBmcm9tIDEKKyAgICAgICAgICAgIGRvIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQgbmlsIDAu NSkKKyAgICAgICAgICAgIHdoaWxlIChwcm9jZXNzLWxpdmUtcCBpbmZlcmlvcikKKyAgICAgICAg ICAgIGRvIChlZ2xvdC0tbWVzc2FnZQorICAgICAgICAgICAgICAgICAiVHJ5aW5nIHRvIGNvbm5l Y3QgdG8gbG9jYWxob3N0IGFuZCBwb3J0ICVzIChhdHRlbXB0ICVzKSIKKyAgICAgICAgICAgICAg ICAgcG9ydC1udW1iZXIgaSkKKyAgICAgICAgICAgIHRoZXJlaXMgKGlnbm9yZS1lcnJvcnMKKyAg ICAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydvcGVuLW5ldHdvcmstc3RyZWFtCisgICAgICAg ICAgICAgICAgICAgICAgICAoZm9ybWF0ICJhdXRvY29ubmVjdC0lcyIgbmFtZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIg cG9ydC1udW1iZXIgY29ubmVjdC1hcmdzKSkpKQorICAgICAgICAoY29ucyBjb25uZWN0aW9uIGlu ZmVyaW9yKSkKICAgICAgIChjb25kICgoYW5kIChwcm9jZXNzLWxpdmUtcCBjb25uZWN0aW9uKQot ICAgICAgICAgICAgICAgICAgKHByb2Nlc3MtbGl2ZS1wIGluZmVyaW9yKSkKLSAgICAgICAgICAg ICAoZWdsb3QtLW1lc3NhZ2UgIkRvbmUsIGNvbm5lY3RlZCB0byAlcyEiIHBvcnQtbnVtYmVyKSkK LSAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAgKHdoZW4gaW5mZXJpb3IgKGRlbGV0ZS1wcm9j ZXNzIGluZmVyaW9yKSkKLSAgICAgICAgICAgICAod2hlbiBjb25uZWN0aW9uIChkZWxldGUtcHJv Y2VzcyBjb25uZWN0aW9uKSkKLSAgICAgICAgICAgICAoZWdsb3QtLWVycm9yICJDb3VsZCBub3Qg c3RhcnQgYW5kIGNvbm5lY3QgdG8gc2VydmVyJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgaW5mZXJpb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIg c3RhcnRlZCB3aXRoICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHByb2Nlc3MtY29tbWFuZCBpbmZlcmlvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIhIikpKSkpKSkKKyAgICAgICAgICAgICAgIChwcm9jZXNzLWxpdmUtcCBpbmZlcmlvcikpCisg ICAgICAgICAgICAgIChlZ2xvdC0tbWVzc2FnZSAiRG9uZSwgY29ubmVjdGVkIHRvICVzISIgcG9y dC1udW1iZXIpKQorICAgICAgICAodAorICAgICAgICAgICh3aGVuIGluZmVyaW9yIChkZWxldGUt cHJvY2VzcyBpbmZlcmlvcikpCisgICAgICAgICAgKHdoZW4gY29ubmVjdGlvbiAoZGVsZXRlLXBy b2Nlc3MgY29ubmVjdGlvbikpCisgICAgICAgICAgKGVnbG90LS1lcnJvciAiQ291bGQgbm90IHN0 YXJ0IGFuZCBjb25uZWN0IHRvIHNlcnZlciVzIgorICAgICAgICAgICAgKGlmIGluZmVyaW9yCisg ICAgICAgICAgICAgIChmb3JtYXQgIiBzdGFydGVkIHdpdGggJXMiCisgICAgICAgICAgICAgICAg KHByb2Nlc3MtY29tbWFuZCBpbmZlcmlvcikpCisgICAgICAgICAgICAgICIhIikpKSkpKSkKIAog DAogOzs7IEhlbHBlcnMgKG1vdmUgdGhlc2UgdG8gQVBJPykKQEAgLTE0MDcsMTcgKzE0MTEsMTcg QEAgZnVsbHkgTFNQLWNvbXBsaWFudCBzZXJ2ZXJzLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8KICAg IkNhbGN1bGF0ZSBjdXJyZW50IENPTFVNTiBhcyBkZWZpbmVkIGJ5IHRoZSBMU1Agc3BlYy4KIExC UCBkZWZhdWx0cyB0byBgbGluZS1iZWdpbm5pbmctcG9zaXRpb24nLiIKICAgKC8gKC0gKGxlbmd0 aCAoZW5jb2RlLWNvZGluZy1yZWdpb24gKG9yIGxicCAobGluZS1iZWdpbm5pbmctcG9zaXRpb24p KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBGaXggZ2l0aHViIzg2 MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWluIChwb2ludCkgKHBv aW50LW1heCkpICd1dGYtMTYgdCkpCi0gICAgICAgIDIpCi0gICAgIDIpKQorICAgICAgICAgICAg ICAgICAgOzsgRml4IGdpdGh1YiM4NjAKKyAgICAgICAgICAgICAgICAgIChtaW4gKHBvaW50KSAo cG9pbnQtbWF4KSkgJ3V0Zi0xNiB0KSkKKyAgICAgICAyKQorICAgIDIpKQogCiAoZGVmdW4gZWds b3QtLXBvcy10by1sc3AtcG9zaXRpb24gKCZvcHRpb25hbCBwb3MpCiAgICJDb252ZXJ0IHBvaW50 IFBPUyB0byBMU1AgcG9zaXRpb24uIgogICAoZWdsb3QtLXdpZGVuaW5nCi0gICAobGlzdCA6bGlu ZSAoMS0gKGxpbmUtbnVtYmVyLWF0LXBvcyBwb3MgdCkpIDsgRiFAJiMkQ0tJTkcgT0ZGLUJZLU9O RQotICAgICAgICAgOmNoYXJhY3RlciAocHJvZ24gKHdoZW4gcG9zIChnb3RvLWNoYXIgcG9zKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGVnbG90LWN1cnJlbnQtY29sdW1u LWZ1bmN0aW9uKSkpKSkKKyAgICAobGlzdCA6bGluZSAoMS0gKGxpbmUtbnVtYmVyLWF0LXBvcyBw b3MgdCkpIDsgRiFAJiMkQ0tJTkcgT0ZGLUJZLU9ORQorICAgICAgOmNoYXJhY3RlciAocHJvZ24g KHdoZW4gcG9zIChnb3RvLWNoYXIgcG9zKSkKKyAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBl Z2xvdC1jdXJyZW50LWNvbHVtbi1mdW5jdGlvbikpKSkpCiAKIChkZWZ2YXIgZWdsb3QtbW92ZS10 by1jb2x1bW4tZnVuY3Rpb24gIydlZ2xvdC1tb3ZlLXRvLWxzcC1hYmlkaW5nLWNvbHVtbgogICAi RnVuY3Rpb24gdG8gbW92ZSB0byBhIGNvbHVtbiByZXBvcnRlZCBieSB0aGUgTFNQIHNlcnZlci4K QEAgLTE0MzksMjIgKzE0NDMsMjIgQEAgYmUgc2V0IHRvIGBlZ2xvdC1tb3ZlLXRvLWxzcC1hYmlk aW5nLWNvbHVtbicgKHRoZSBkZWZhdWx0KSwgYW5kCiAgIDs7IGB3aGl0ZXNwYWNlLW1vZGUnLCBg cHJldHRpZnktc3ltYm9scy1tb2RlJywgZXRjLiAgKGdpdGh1YiMyOTYsCiAgIDs7IGdpdGh1YiMy OTcpCiAgIChnb3RvLWNoYXIgKG1pbiAoKyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIGNvbHVt bikKLSAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKKyAgICAgICAgICAg ICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKIAogKGRlZnVuIGVnbG90LW1vdmUtdG8tbHNwLWFi aWRpbmctY29sdW1uIChjb2x1bW4pCiAgICJNb3ZlIHRvIENPTFVNTiBhYmlkaW5nIGJ5IHRoZSBM U1Agc3BlYy4iCiAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgKGNsLWxvb3AKLSAgICAgd2l0aCBs YnAgPSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pCi0gICAgIGluaXRpYWxseQotICAgICAobmFy cm93LXRvLXJlZ2lvbiBsYnAgKGxpbmUtZW5kLXBvc2l0aW9uKSkKLSAgICAgKG1vdmUtdG8tY29s dW1uIGNvbHVtbikKLSAgICAgZm9yIGRpZmYgPSAoLSBjb2x1bW4KKyAgICAgIHdpdGggbGJwID0g KGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKQorICAgICAgaW5pdGlhbGx5CisgICAgICAobmFycm93 LXRvLXJlZ2lvbiBsYnAgKGxpbmUtZW5kLXBvc2l0aW9uKSkKKyAgICAgIChtb3ZlLXRvLWNvbHVt biBjb2x1bW4pCisgICAgICBmb3IgZGlmZiA9ICgtIGNvbHVtbgogICAgICAgICAgICAgICAgICAg IChlZ2xvdC1sc3AtYWJpZGluZy1jb2x1bW4gbGJwKSkKLSAgICAgdW50aWwgKHplcm9wIGRpZmYp Ci0gICAgIGRvIChjb25kaXRpb24tY2FzZSBlb2ItZXJyCi0gICAgICAgICAgICAoZm9yd2FyZC1j aGFyICgvIChpZiAoPiBkaWZmIDApICgxKyBkaWZmKSAoMS0gZGlmZikpIDIpKQotICAgICAgICAg IChlbmQtb2YtYnVmZmVyIChjbC1yZXR1cm4gZW9iLWVycikpKSkpKQorICAgICAgdW50aWwgKHpl cm9wIGRpZmYpCisgICAgICBkbyAoY29uZGl0aW9uLWNhc2UgZW9iLWVycgorICAgICAgICAgICAo Zm9yd2FyZC1jaGFyICgvIChpZiAoPiBkaWZmIDApICgxKyBkaWZmKSAoMS0gZGlmZikpIDIpKQor ICAgICAgICAgICAoZW5kLW9mLWJ1ZmZlciAoY2wtcmV0dXJuIGVvYi1lcnIpKSkpKSkKIAogKGRl ZnVuIGVnbG90LS1sc3AtcG9zaXRpb24tdG8tcG9pbnQgKHBvcy1wbGlzdCAmb3B0aW9uYWwgbWFy a2VyKQogICAiQ29udmVydCBMU1AgcG9zaXRpb24gUE9TLVBMSVNUIHRvIEVtYWNzIHBvaW50LgpA QCAtMTQ2NCwxNCArMTQ2OCwxNCBAQCBJZiBvcHRpb25hbCBNQVJLRVIsIHJldHVybiBhIG1hcmtl ciBpbnN0ZWFkIgogICAgICAgKHdpZGVuKQogICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK ICAgICAgIChmb3J3YXJkLWxpbmUgKG1pbiBtb3N0LXBvc2l0aXZlLWZpeG51bQotICAgICAgICAg ICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgcG9zLXBsaXN0IDpsaW5lKSkpCisgICAgICAgICAg ICAgICAgICAgICAgKHBsaXN0LWdldCBwb3MtcGxpc3QgOmxpbmUpKSkKICAgICAgICh1bmxlc3Mg KGVvYnApIDs7IGlmIGxpbmUgd2FzIGV4Y2Vzc2l2ZSBsZWF2ZSBwb2ludCBhdCBlb2IKICAgICAg ICAgKGxldCAoKHRhYi13aWR0aCAxKQotICAgICAgICAgICAgICAoY29sIChwbGlzdC1nZXQgcG9z LXBsaXN0IDpjaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgIChjb2wgKHBsaXN0LWdldCBwb3Mt cGxpc3QgOmNoYXJhY3RlcikpKQogICAgICAgICAgICh1bmxlc3MgKHdob2xlbnVtcCBjb2wpCiAg ICAgICAgICAgICAoZWdsb3QtLXdhcm4KLSAgICAgICAgICAgICAiQ2F1dGlvbjogTFNQIHNlcnZl ciBzZW50IGludmFsaWQgY2hhcmFjdGVyIHBvc2l0aW9uICVzLiBVc2luZyAwIGluc3RlYWQuIgot ICAgICAgICAgICAgIGNvbCkKKyAgICAgICAgICAgICAgIkNhdXRpb246IExTUCBzZXJ2ZXIgc2Vu dCBpbnZhbGlkIGNoYXJhY3RlciBwb3NpdGlvbiAlcy4gVXNpbmcgMCBpbnN0ZWFkLiIKKyAgICAg ICAgICAgICAgY29sKQogICAgICAgICAgICAgKHNldHEgY29sIDApKQogICAgICAgICAgIChmdW5j YWxsIGVnbG90LW1vdmUtdG8tY29sdW1uLWZ1bmN0aW9uIGNvbCkpKQogICAgICAgKGlmIG1hcmtl ciAoY29weS1tYXJrZXIgKHBvaW50LW1hcmtlcikpIChwb2ludCkpKSkpCkBAIC0xNDg2LDUwICsx NDkwLDUwIEBAIElmIG9wdGlvbmFsIE1BUktFUiwgcmV0dXJuIGEgbWFya2VyIGluc3RlYWQiCiAg ICJVUklmeSBQQVRILiIKICAgKGxldCAoKHRydWVwYXRoIChmaWxlLXRydWVuYW1lIHBhdGgpKSkK ICAgICAoY29uY2F0ICJmaWxlOi8vIgotICAgICAgICAgICAgOzsgQWRkIGEgbGVhZGluZyAiLyIg Zm9yIGxvY2FsIE1TIFdpbmRvd3Mtc3R5bGUgcGF0aHMuCi0gICAgICAgICAgICAoaWYgKGFuZCAo ZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCi0gICAgICAgICAgICAgICAgICAgICAobm90IChm aWxlLXJlbW90ZS1wIHRydWVwYXRoKSkpCi0gICAgICAgICAgICAgICAgIi8iKQotICAgICAgICAg ICAgKHVybC1oZXhpZnktc3RyaW5nCi0gICAgICAgICAgICAgOzsgQWdhaW4gd2F0Y2ggb3V0IGZv ciB0cmFtcHkgcGF0aHMuCi0gICAgICAgICAgICAgKGRpcmVjdG9yeS1maWxlLW5hbWUgKGZpbGUt bG9jYWwtbmFtZSB0cnVlcGF0aCkpCi0gICAgICAgICAgICAgZWdsb3QtLXVyaS1wYXRoLWFsbG93 ZWQtY2hhcnMpKSkpCisgICAgICA7OyBBZGQgYSBsZWFkaW5nICIvIiBmb3IgbG9jYWwgTVMgV2lu ZG93cy1zdHlsZSBwYXRocy4KKyAgICAgIChpZiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93 cy1udCkKKyAgICAgICAgICAgIChub3QgKGZpbGUtcmVtb3RlLXAgdHJ1ZXBhdGgpKSkKKyAgICAg ICAgIi8iKQorICAgICAgKHVybC1oZXhpZnktc3RyaW5nCisgICAgICAgIDs7IEFnYWluIHdhdGNo IG91dCBmb3IgdHJhbXB5IHBhdGhzLgorICAgICAgICAoZGlyZWN0b3J5LWZpbGUtbmFtZSAoZmls ZS1sb2NhbC1uYW1lIHRydWVwYXRoKSkKKyAgICAgICAgZWdsb3QtLXVyaS1wYXRoLWFsbG93ZWQt Y2hhcnMpKSkpCiAKIChkZWZ1biBlZ2xvdC0tdXJpLXRvLXBhdGggKHVyaSkKICAgIkNvbnZlcnQg VVJJIHRvIGZpbGUgcGF0aCwgaGVscGVkIGJ5IGBlZ2xvdC0tY3VycmVudC1zZXJ2ZXInLiIKICAg KHdoZW4gKGtleXdvcmRwIHVyaSkgKHNldHEgdXJpIChzdWJzdHJpbmcgKHN5bWJvbC1uYW1lIHVy aSkgMSkpKQogICAobGV0KiAoKHNlcnZlciAoZWdsb3QtY3VycmVudC1zZXJ2ZXIpKQotICAgICAg ICAgKHJlbW90ZS1wcmVmaXggKGFuZCBzZXJ2ZXIgKGVnbG90LS10cmFtcGlzaC1wIHNlcnZlcikp KQotICAgICAgICAgKHJldHZhbCAodXJsLXVuaGV4LXN0cmluZyAodXJsLWZpbGVuYW1lICh1cmwt Z2VuZXJpYy1wYXJzZS11cmwgdXJpKSkpKQotICAgICAgICAgOzsgUmVtb3ZlIHRoZSBsZWFkaW5n ICIvIiBmb3IgbG9jYWwgTVMgV2luZG93cy1zdHlsZSBwYXRocy4KLSAgICAgICAgIChub3JtYWxp emVkIChpZiAoYW5kIChub3QgcmVtb3RlLXByZWZpeCkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjbC1wbHVzcCAobGVuZ3RoIHJldHZhbCkpKQotICAgICAgICAgICAgICAgICAg ICAgICAgIChzdWJzdHJpbmcgcmV0dmFsIDEpCi0gICAgICAgICAgICAgICAgICAgICAgIHJldHZh bCkpKQorICAgICAgICAgIChyZW1vdGUtcHJlZml4IChhbmQgc2VydmVyIChlZ2xvdC0tdHJhbXBp c2gtcCBzZXJ2ZXIpKSkKKyAgICAgICAgICAocmV0dmFsICh1cmwtdW5oZXgtc3RyaW5nICh1cmwt ZmlsZW5hbWUgKHVybC1nZW5lcmljLXBhcnNlLXVybCB1cmkpKSkpCisgICAgICAgICAgOzsgUmVt b3ZlIHRoZSBsZWFkaW5nICIvIiBmb3IgbG9jYWwgTVMgV2luZG93cy1zdHlsZSBwYXRocy4KKyAg ICAgICAgICAobm9ybWFsaXplZCAoaWYgKGFuZCAobm90IHJlbW90ZS1wcmVmaXgpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjbC1wbHVzcCAobGVuZ3RoIHJldHZhbCkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyByZXR2YWwgMSkKKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHZhbCkpKQogICAgIChjb25jYXQgcmVtb3RlLXByZWZpeCBub3JtYWxpemVkKSkp CiAKIChkZWZ1biBlZ2xvdC0tc25pcHBldC1leHBhbnNpb24tZm4gKCkKICAgIkNvbXB1dGUgYSBm dW5jdGlvbiB0byBleHBhbmQgc25pcHBldHMuCiBEb3VibGVzIGFzIGFuIGluZGljYXRvciBvZiBz bmlwcGV0IHN1cHBvcnQuIgogICAoYW5kIChib3VuZHAgJ3lhcy1taW5vci1tb2RlKQotICAgICAg IChzeW1ib2wtdmFsdWUgJ3lhcy1taW5vci1tb2RlKQotICAgICAgICd5YXMtZXhwYW5kLXNuaXBw ZXQpKQorICAgIChzeW1ib2wtdmFsdWUgJ3lhcy1taW5vci1tb2RlKQorICAgICd5YXMtZXhwYW5k LXNuaXBwZXQpKQogCiAoZGVmdW4gZWdsb3QtLWZvcm1hdC1tYXJrdXAgKG1hcmt1cCkKICAgIkZv cm1hdCBNQVJLVVAgYWNjb3JkaW5nIHRvIExTUCdzIHNwZWMuIgogICAocGNhc2UtbGV0ICgoYCgs c3RyaW5nICxtb2RlKQotICAgICAgICAgICAgICAgKGlmIChzdHJpbmdwIG1hcmt1cCkgKGxpc3Qg bWFya3VwICdnZm0tdmlldy1tb2RlKQotICAgICAgICAgICAgICAgICAobGlzdCAocGxpc3QtZ2V0 IG1hcmt1cCA6dmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgIChwY2FzZSAocGxpc3QtZ2V0 IG1hcmt1cCA6a2luZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAoIm1hcmtkb3duIiAnZ2Zt LXZpZXctbW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAoInBsYWludGV4dCIgJ3RleHQt bW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAoXyBtYWpvci1tb2RlKSkpKSkpCisgICAg ICAgICAgICAgICAgKGlmIChzdHJpbmdwIG1hcmt1cCkgKGxpc3QgbWFya3VwICdnZm0tdmlldy1t b2RlKQorICAgICAgICAgICAgICAgICAgKGxpc3QgKHBsaXN0LWdldCBtYXJrdXAgOnZhbHVlKQor ICAgICAgICAgICAgICAgICAgICAocGNhc2UgKHBsaXN0LWdldCBtYXJrdXAgOmtpbmQpCisgICAg ICAgICAgICAgICAgICAgICAgKCJtYXJrZG93biIgJ2dmbS12aWV3LW1vZGUpCisgICAgICAgICAg ICAgICAgICAgICAgKCJwbGFpbnRleHQiICd0ZXh0LW1vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgKF8gbWFqb3ItbW9kZSkpKSkpKQogICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAoc2V0 cS1sb2NhbCBtYXJrZG93bi1mb250aWZ5LWNvZGUtYmxvY2tzLW5hdGl2ZWx5IHQpCiAgICAgICAo aW5zZXJ0IHN0cmluZykKICAgICAgIChsZXQgKChpbmhpYml0LW1lc3NhZ2UgdCkKLQkgICAgKG1l c3NhZ2UtbG9nLW1heCBuaWwpKQorCSAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQog ICAgICAgICAoaWdub3JlLWVycm9ycyAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkp KQogICAgICAgKGZvbnQtbG9jay1lbnN1cmUpCiAgICAgICAoc3RyaW5nLXRyaW0gKGJ1ZmZlci1z dHJpbmcpKSkpKQpAQCAtMTU0Myw0OSArMTU0Nyw1MCBAQCBZb3UgY291bGQgYWRkLCBmb3IgaW5z dGFuY2UsIHRoZSBzeW1ib2wKIGA6ZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlcicgdG8gcHJldmVu dCBhdXRvbWF0aWMgaGlnaGxpZ2h0aW5nCiB1bmRlciBjdXJzb3IuIgogICA6dHlwZSAnKHNldAot ICAgICAgICAgIDp0YWcgIlRpY2sgdGhlIG9uZXMgeW91J3JlIG5vdCBpbnRlcmVzdGVkIGluIgot ICAgICAgICAgIChjb25zdCA6dGFnICJEb2N1bWVudGF0aW9uIG9uIGhvdmVyIiA6aG92ZXJQcm92 aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAiQ29kZSBjb21wbGV0aW9uIiA6Y29tcGxldGlv blByb3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6dGFnICJGdW5jdGlvbiBzaWduYXR1cmUgaGVs cCIgOnNpZ25hdHVyZUhlbHBQcm92aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8g ZGVmaW5pdGlvbiIgOmRlZmluaXRpb25Qcm92aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAi R28gdG8gdHlwZSBkZWZpbml0aW9uIiA6dHlwZURlZmluaXRpb25Qcm92aWRlcikKLSAgICAgICAg ICAoY29uc3QgOnRhZyAiR28gdG8gaW1wbGVtZW50YXRpb24iIDppbXBsZW1lbnRhdGlvblByb3Zp ZGVyKQotICAgICAgICAgIChjb25zdCA6dGFnICJHbyB0byBkZWNsYXJhdGlvbiIgOmltcGxlbWVu dGF0aW9uUHJvdmlkZXIpCi0gICAgICAgICAgKGNvbnN0IDp0YWcgIkZpbmQgcmVmZXJlbmNlcyIg OnJlZmVyZW5jZXNQcm92aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAiSGlnaGxpZ2h0IHN5 bWJvbHMgYXV0b21hdGljYWxseSIgOmRvY3VtZW50SGlnaGxpZ2h0UHJvdmlkZXIpCi0gICAgICAg ICAgKGNvbnN0IDp0YWcgIkxpc3Qgc3ltYm9scyBpbiBidWZmZXIiIDpkb2N1bWVudFN5bWJvbFBy b3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6dGFnICJMaXN0IHN5bWJvbHMgaW4gd29ya3NwYWNl IiA6d29ya3NwYWNlU3ltYm9sUHJvdmlkZXIpCi0gICAgICAgICAgKGNvbnN0IDp0YWcgIkV4ZWN1 dGUgY29kZSBhY3Rpb25zIiA6Y29kZUFjdGlvblByb3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6 dGFnICJDb2RlIGxlbnMiIDpjb2RlTGVuc1Byb3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6dGFn ICJGb3JtYXQgYnVmZmVyIiA6ZG9jdW1lbnRGb3JtYXR0aW5nUHJvdmlkZXIpCi0gICAgICAgICAg KGNvbnN0IDp0YWcgIkZvcm1hdCBwb3J0aW9uIG9mIGJ1ZmZlciIgOmRvY3VtZW50UmFuZ2VGb3Jt YXR0aW5nUHJvdmlkZXIpCi0gICAgICAgICAgKGNvbnN0IDp0YWcgIk9uLXR5cGUgZm9ybWF0dGlu ZyIgOmRvY3VtZW50T25UeXBlRm9ybWF0dGluZ1Byb3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6 dGFnICJSZW5hbWUgc3ltYm9sIiA6cmVuYW1lUHJvdmlkZXIpCi0gICAgICAgICAgKGNvbnN0IDp0 YWcgIkhpZ2hsaWdodCBsaW5rcyBpbiBkb2N1bWVudCIgOmRvY3VtZW50TGlua1Byb3ZpZGVyKQot ICAgICAgICAgIChjb25zdCA6dGFnICJEZWNvcmF0ZSBjb2xvciByZWZlcmVuY2VzIiA6Y29sb3JQ cm92aWRlcikKLSAgICAgICAgICAoY29uc3QgOnRhZyAiRm9sZCByZWdpb25zIG9mIGJ1ZmZlciIg OmZvbGRpbmdSYW5nZVByb3ZpZGVyKQotICAgICAgICAgIChjb25zdCA6dGFnICJFeGVjdXRlIGN1 c3RvbSBjb21tYW5kcyIgOmV4ZWN1dGVDb21tYW5kUHJvdmlkZXIpKSkKKyAgICAgICAgICAgOnRh ZyAiVGljayB0aGUgb25lcyB5b3UncmUgbm90IGludGVyZXN0ZWQgaW4iCisgICAgICAgICAgIChj b25zdCA6dGFnICJEb2N1bWVudGF0aW9uIG9uIGhvdmVyIiA6aG92ZXJQcm92aWRlcikKKyAgICAg ICAgICAgKGNvbnN0IDp0YWcgIkNvZGUgY29tcGxldGlvbiIgOmNvbXBsZXRpb25Qcm92aWRlcikK KyAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZ1bmN0aW9uIHNpZ25hdHVyZSBoZWxwIiA6c2lnbmF0 dXJlSGVscFByb3ZpZGVyKQorICAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8gZGVmaW5pdGlv biIgOmRlZmluaXRpb25Qcm92aWRlcikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIkdvIHRvIHR5 cGUgZGVmaW5pdGlvbiIgOnR5cGVEZWZpbml0aW9uUHJvdmlkZXIpCisgICAgICAgICAgIChjb25z dCA6dGFnICJHbyB0byBpbXBsZW1lbnRhdGlvbiIgOmltcGxlbWVudGF0aW9uUHJvdmlkZXIpCisg ICAgICAgICAgIChjb25zdCA6dGFnICJHbyB0byBkZWNsYXJhdGlvbiIgOmltcGxlbWVudGF0aW9u UHJvdmlkZXIpCisgICAgICAgICAgIChjb25zdCA6dGFnICJGaW5kIHJlZmVyZW5jZXMiIDpyZWZl cmVuY2VzUHJvdmlkZXIpCisgICAgICAgICAgIChjb25zdCA6dGFnICJIaWdobGlnaHQgc3ltYm9s cyBhdXRvbWF0aWNhbGx5IiA6ZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlcikKKyAgICAgICAgICAg KGNvbnN0IDp0YWcgIkxpc3Qgc3ltYm9scyBpbiBidWZmZXIiIDpkb2N1bWVudFN5bWJvbFByb3Zp ZGVyKQorICAgICAgICAgICAoY29uc3QgOnRhZyAiTGlzdCBzeW1ib2xzIGluIHdvcmtzcGFjZSIg OndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKQorICAgICAgICAgICAoY29uc3QgOnRhZyAiRXhlY3V0 ZSBjb2RlIGFjdGlvbnMiIDpjb2RlQWN0aW9uUHJvdmlkZXIpCisgICAgICAgICAgIChjb25zdCA6 dGFnICJDb2RlIGxlbnMiIDpjb2RlTGVuc1Byb3ZpZGVyKQorICAgICAgICAgICAoY29uc3QgOnRh ZyAiSW5sYXkgSGludCIgOmlubGF5SGludFByb3ZpZGVyKQorICAgICAgICAgICAoY29uc3QgOnRh ZyAiRm9ybWF0IGJ1ZmZlciIgOmRvY3VtZW50Rm9ybWF0dGluZ1Byb3ZpZGVyKQorICAgICAgICAg ICAoY29uc3QgOnRhZyAiRm9ybWF0IHBvcnRpb24gb2YgYnVmZmVyIiA6ZG9jdW1lbnRSYW5nZUZv cm1hdHRpbmdQcm92aWRlcikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIk9uLXR5cGUgZm9ybWF0 dGluZyIgOmRvY3VtZW50T25UeXBlRm9ybWF0dGluZ1Byb3ZpZGVyKQorICAgICAgICAgICAoY29u c3QgOnRhZyAiUmVuYW1lIHN5bWJvbCIgOnJlbmFtZVByb3ZpZGVyKQorICAgICAgICAgICAoY29u c3QgOnRhZyAiSGlnaGxpZ2h0IGxpbmtzIGluIGRvY3VtZW50IiA6ZG9jdW1lbnRMaW5rUHJvdmlk ZXIpCisgICAgICAgICAgIChjb25zdCA6dGFnICJEZWNvcmF0ZSBjb2xvciByZWZlcmVuY2VzIiA6 Y29sb3JQcm92aWRlcikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgcmVnaW9ucyBvZiBi dWZmZXIiIDpmb2xkaW5nUmFuZ2VQcm92aWRlcikKKyAgICAgICAgICAgKGNvbnN0IDp0YWcgIkV4 ZWN1dGUgY3VzdG9tIGNvbW1hbmRzIiA6ZXhlY3V0ZUNvbW1hbmRQcm92aWRlcikpKQogCiAoZGVm dW4gZWdsb3QtLXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAgIkRldGVybWluZSBpZiBj dXJyZW50IHNlcnZlciBpcyBjYXBhYmxlIG9mIEZFQVRTLiIKICAgKHVubGVzcyAoY2wtc29tZSAo bGFtYmRhIChmZWF0KQogICAgICAgICAgICAgICAgICAgICAgKG1lbXEgZmVhdCBlZ2xvdC1pZ25v cmVkLXNlcnZlci1jYXBhYmlsaXRpZXMpKQotICAgICAgICAgICAgICAgICAgIGZlYXRzKQorICAg ICAgICAgICAgZmVhdHMpCiAgICAgKGNsLWxvb3AgZm9yIGNhcHMgPSAoZWdsb3QtLWNhcGFiaWxp dGllcyAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQotICAgICAgICAgICAgIHRoZW4g KGNhZHIgcHJvYmUpCi0gICAgICAgICAgICAgZm9yIChmZWF0IC4gbW9yZSkgb24gZmVhdHMKLSAg ICAgICAgICAgICBmb3IgcHJvYmUgPSAocGxpc3QtbWVtYmVyIGNhcHMgZmVhdCkKLSAgICAgICAg ICAgICBpZiAobm90IHByb2JlKSBkbyAoY2wtcmV0dXJuIG5pbCkKLSAgICAgICAgICAgICBpZiAo ZXEgKGNhZHIgcHJvYmUpIDpqc29uLWZhbHNlKSBkbyAoY2wtcmV0dXJuIG5pbCkKLSAgICAgICAg ICAgICBpZiAobm90IChsaXN0cCAoY2FkciBwcm9iZSkpKSBkbyAoY2wtcmV0dXJuIChpZiBtb3Jl IG5pbCAoY2FkciBwcm9iZSkpKQotICAgICAgICAgICAgIGZpbmFsbHkgKGNsLXJldHVybiAob3Ig KGNhZHIgcHJvYmUpIHQpKSkpKQorICAgICAgdGhlbiAoY2FkciBwcm9iZSkKKyAgICAgIGZvciAo ZmVhdCAuIG1vcmUpIG9uIGZlYXRzCisgICAgICBmb3IgcHJvYmUgPSAocGxpc3QtbWVtYmVyIGNh cHMgZmVhdCkKKyAgICAgIGlmIChub3QgcHJvYmUpIGRvIChjbC1yZXR1cm4gbmlsKQorICAgICAg aWYgKGVxIChjYWRyIHByb2JlKSA6anNvbi1mYWxzZSkgZG8gKGNsLXJldHVybiBuaWwpCisgICAg ICBpZiAobm90IChsaXN0cCAoY2FkciBwcm9iZSkpKSBkbyAoY2wtcmV0dXJuIChpZiBtb3JlIG5p bCAoY2FkciBwcm9iZSkpKQorICAgICAgZmluYWxseSAoY2wtcmV0dXJuIChvciAoY2FkciBwcm9i ZSkgdCkpKSkpCiAKIChkZWZ1biBlZ2xvdC0tcmFuZ2UtcmVnaW9uIChyYW5nZSAmb3B0aW9uYWwg bWFya2VycykKICAgIlJldHVybiByZWdpb24gKEJFRyAuIEVORCkgdGhhdCByZXByZXNlbnRzIExT UCBSQU5HRS4KIElmIG9wdGlvbmFsIE1BUktFUlMsIG1ha2UgbWFya2Vycy4iCiAgIChsZXQqICgo c3QgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQpKQotICAgICAgICAgKGJlZyAoZWdsb3QtLWxzcC1w b3NpdGlvbi10by1wb2ludCBzdCBtYXJrZXJzKSkKLSAgICAgICAgIChlbmQgKGVnbG90LS1sc3At cG9zaXRpb24tdG8tcG9pbnQgKHBsaXN0LWdldCByYW5nZSA6ZW5kKSBtYXJrZXJzKSkpCisgICAg ICAgICAgKGJlZyAoZWdsb3QtLWxzcC1wb3NpdGlvbi10by1wb2ludCBzdCBtYXJrZXJzKSkKKyAg ICAgICAgICAoZW5kIChlZ2xvdC0tbHNwLXBvc2l0aW9uLXRvLXBvaW50IChwbGlzdC1nZXQgcmFu Z2UgOmVuZCkgbWFya2VycykpKQogICAgIChjb25zIGJlZyBlbmQpKSkKIAogKGRlZnVuIGVnbG90 LS1yZWFkLXNlcnZlciAocHJvbXB0ICZvcHRpb25hbCBkb250LWlmLWp1c3QtdGhlLW9uZSkKQEAg LTE1OTMsMjYgKzE1OTgsMjYgQEAgSWYgb3B0aW9uYWwgTUFSS0VSUywgbWFrZSBtYXJrZXJzLiIK IElmIERPTlQtSUYtSlVTVC1USEUtT05FIGFuZCB0aGVyZSdzIG9ubHkgb25lIHNlcnZlciwgZG9u J3QgcHJvbXB0CiBhbmQganVzdCByZXR1cm4gaXQuICBQUk9NUFQgc2hvdWxkbid0IGVuZCB3aXRo IGEgcXVlc3Rpb24gbWFyay4iCiAgIChsZXQgKChzZXJ2ZXJzIChjbC1sb29wIGZvciBzZXJ2ZXJz Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGhhc2gtdmFsdWVzIG9mIGVnbG90LS1z ZXJ2ZXJzLWJ5LXByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHNlcnZl cnMpKQotICAgICAgICAobmFtZSAobGFtYmRhIChzcnYpCi0gICAgICAgICAgICAgICAgKGZvcm1h dCAiJXMgJXMiIChlZ2xvdC1wcm9qZWN0LW5pY2tuYW1lIHNydikKLSAgICAgICAgICAgICAgICAg ICAgICAgIChlZ2xvdC0tbWFqb3ItbW9kZXMgc3J2KSkpKSkKKyAgICAgICAgICAgICAgICAgICBi ZWluZyBoYXNoLXZhbHVlcyBvZiBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0CisgICAgICAgICAg ICAgICAgICAgYXBwZW5kIHNlcnZlcnMpKQorICAgICAgICAgKG5hbWUgKGxhbWJkYSAoc3J2KQor ICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcyAlcyIgKGVnbG90LXByb2plY3Qtbmlja25hbWUg c3J2KQorICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbWFqb3ItbW9kZXMgc3J2KSkpKSkKICAg ICAoY29uZCAoKG51bGwgc2VydmVycykKLSAgICAgICAgICAgKGVnbG90LS1lcnJvciAiTm8gc2Vy dmVycyEiKSkKLSAgICAgICAgICAoKG9yIChjZHIgc2VydmVycykgKG5vdCBkb250LWlmLWp1c3Qt dGhlLW9uZSkpCi0gICAgICAgICAgIChsZXQqICgoZGVmYXVsdCAod2hlbi1sZXQgKChjdXJyZW50 IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBuYW1lIGN1cnJlbnQpKSkKLSAgICAgICAgICAgICAgICAgIChyZWFkIChjb21wbGV0 aW5nLXJlYWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgZGVmYXVsdAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcyAoZGVmYXVsdCAlcyk/ICIgcHJvbXB0IGRl ZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IHByb21wdCAiPyAiKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIG5hbWUgc2VydmVycykKLSAgICAgICAg ICAgICAgICAgICAgICAgICBuaWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBuaWwK LSAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0KSkpCi0gICAgICAgICAgICAgKGNsLWZp bmQgcmVhZCBzZXJ2ZXJzIDprZXkgbmFtZSA6dGVzdCAjJ2VxdWFsKSkpCi0gICAgICAgICAgKHQg KGNhciBzZXJ2ZXJzKSkpKSkKKyAgICAgICAgICAgIChlZ2xvdC0tZXJyb3IgIk5vIHNlcnZlcnMh IikpCisgICAgICAoKG9yIChjZHIgc2VydmVycykgKG5vdCBkb250LWlmLWp1c3QtdGhlLW9uZSkp CisgICAgICAgIChsZXQqICgoZGVmYXVsdCAod2hlbi1sZXQgKChjdXJyZW50IChlZ2xvdC1jdXJy ZW50LXNlcnZlcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBuYW1lIGN1 cnJlbnQpKSkKKyAgICAgICAgICAgICAgICAocmVhZCAoY29tcGxldGluZy1yZWFkCisgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAo Zm9ybWF0ICIlcyAoZGVmYXVsdCAlcyk/ICIgcHJvbXB0IGRlZmF1bHQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25jYXQgcHJvbXB0ICI/ICIpKQorICAgICAgICAgICAgICAgICAgICAg ICAgKG1hcGNhciBuYW1lIHNlcnZlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBuaWwgdAor ICAgICAgICAgICAgICAgICAgICAgICAgbmlsIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAg ZGVmYXVsdCkpKQorICAgICAgICAgIChjbC1maW5kIHJlYWQgc2VydmVycyA6a2V5IG5hbWUgOnRl c3QgIydlcXVhbCkpKQorICAgICAgKHQgKGNhciBzZXJ2ZXJzKSkpKSkKIAogKGRlZnVuIGVnbG90 LS10cmFtcGlzaC1wIChzZXJ2ZXIpCiAgICJUZWxsIGlmIFNFUlZFUidzIHByb2plY3Qgcm9vdCBp cyBgZmlsZS1yZW1vdGUtcCcuIgpAQCAtMTY2MCw5ICsxNjY1LDkgQEAgRm9yIGV4YW1wbGUsIHRv IGtlZXAgeW91ciBDb21wYW55IGN1c3RvbWl6YXRpb24sIGFkZCB0aGUgc3ltYm9sCiAoZGVmdW4g ZWdsb3QtLXN0YXktb3V0LW9mLXAgKHN5bWJvbCkKICAgIlRlbGwgaWYgRWdsb3Qgc2hvdWxkIHN0 YXkgb2Ygb2YgU1lNQk9MLiIKICAgKGNsLWZpbmQgKHN5bWJvbC1uYW1lIHN5bWJvbCkgZWdsb3Qt c3RheS1vdXQtb2YKLSAgICAgICAgICAgOnRlc3QgKGxhbWJkYSAocyB0aGluZykKLSAgICAgICAg ICAgICAgICAgICAobGV0ICgocmUgKGlmIChzeW1ib2xwIHRoaW5nKSAoc3ltYm9sLW5hbWUgdGhp bmcpIHRoaW5nKSkpCi0gICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIHJlIHMpKSkp KQorICAgIDp0ZXN0IChsYW1iZGEgKHMgdGhpbmcpCisgICAgICAgICAgICAobGV0ICgocmUgKGlm IChzeW1ib2xwIHRoaW5nKSAoc3ltYm9sLW5hbWUgdGhpbmcpIHRoaW5nKSkpCisgICAgICAgICAg ICAgIChzdHJpbmctbWF0Y2ggcmUgcykpKSkpCiAKIChkZWZtYWNybyBlZ2xvdC0tc2V0cS1zYXZp bmcgKHN5bWJvbCBiaW5kaW5nKQogICBgKHVubGVzcyAob3IgKG5vdCAoYm91bmRwICcsc3ltYm9s KSkgKGVnbG90LS1zdGF5LW91dC1vZi1wICcsc3ltYm9sKSkKQEAgLTE2ODEsNjUgKzE2ODYsNjUg QEAgVXNlIGBlZ2xvdC1tYW5hZ2VkLXAnIHRvIGRldGVybWluZSBpZiBjdXJyZW50IGJ1ZmZlciBp cyBtYW5hZ2VkLiIpCiAgICJNb2RlIGZvciBzb3VyY2UgYnVmZmVycyBtYW5hZ2VkIGJ5IHNvbWUg RWdsb3QgcHJvamVjdC4iCiAgIDppbml0LXZhbHVlIG5pbCA6bGlnaHRlciBuaWwgOmtleW1hcCBl Z2xvdC1tb2RlLW1hcAogICAoY29uZAotICAgKGVnbG90LS1tYW5hZ2VkLW1vZGUKLSAgICAoYWRk LWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgJ2VnbG90LS1hZnRlci1jaGFuZ2UgbmlsIHQp Ci0gICAgKGFkZC1ob29rICdiZWZvcmUtY2hhbmdlLWZ1bmN0aW9ucyAnZWdsb3QtLWJlZm9yZS1j aGFuZ2UgbmlsIHQpCi0gICAgKGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rICMnZWdsb3QtLW1h bmFnZWQtbW9kZS1vZmYgbmlsIHQpCi0gICAgOzsgUHJlcGVuZCAiZGlkQ2xvc2UiIHRvIHRoZSBo b29rIGFmdGVyIHRoZSAibm9ub2ZmIiwgc28gaXQgd2lsbCBydW4gZmlyc3QKLSAgICAoYWRkLWhv b2sgJ2tpbGwtYnVmZmVyLWhvb2sgJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3Nl IG5pbCB0KQotICAgIChhZGQtaG9vayAnYmVmb3JlLXJldmVydC1ob29rICdlZ2xvdC0tc2lnbmFs LXRleHREb2N1bWVudC9kaWRDbG9zZSBuaWwgdCkKLSAgICAoYWRkLWhvb2sgJ2FmdGVyLXJldmVy dC1ob29rICdlZ2xvdC0tYWZ0ZXItcmV2ZXJ0LWhvb2sgbmlsIHQpCi0gICAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICdlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC93aWxsU2F2ZSBuaWwg dCkKLSAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAnZWdsb3QtLXNpZ25hbC10ZXh0RG9j dW1lbnQvZGlkU2F2ZSBuaWwgdCkKLSAgICAodW5sZXNzIChlZ2xvdC0tc3RheS1vdXQtb2YtcCAn eHJlZikKLSAgICAgIChhZGQtaG9vayAneHJlZi1iYWNrZW5kLWZ1bmN0aW9ucyAnZWdsb3QteHJl Zi1iYWNrZW5kIG5pbCB0KSkKLSAgICAoYWRkLWhvb2sgJ2NvbXBsZXRpb24tYXQtcG9pbnQtZnVu Y3Rpb25zICMnZWdsb3QtY29tcGxldGlvbi1hdC1wb2ludCBuaWwgdCkKLSAgICAoYWRkLWhvb2sg J2NoYW5nZS1tYWpvci1tb2RlLWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiBuaWwgdCkK LSAgICAoYWRkLWhvb2sgJ3Bvc3Qtc2VsZi1pbnNlcnQtaG9vayAnZWdsb3QtLXBvc3Qtc2VsZi1p bnNlcnQtaG9vayBuaWwgdCkKLSAgICAoYWRkLWhvb2sgJ3ByZS1jb21tYW5kLWhvb2sgJ2VnbG90 LS1wcmUtY29tbWFuZC1ob29rIG5pbCB0KQotICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgZWxkb2Mt ZG9jdW1lbnRhdGlvbi1mdW5jdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICcoZWdsb3Qt c2lnbmF0dXJlLWVsZG9jLWZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90 LWhvdmVyLWVsZG9jLWZ1bmN0aW9uKSkKLSAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGVsZG9jLWRv Y3VtZW50YXRpb24tc3RyYXRlZ3kKLSAgICAgICAgICAgICAgICAgICAgICAgICMnZWxkb2MtZG9j dW1lbnRhdGlvbi1lbnRodXNpYXN0KQotICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgeHJlZi1wcm9t cHQtZm9yLWlkZW50aWZpZXIgbmlsKQotICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgZmx5bWFrZS1k aWFnbm9zdGljLWZ1bmN0aW9ucyAnKGVnbG90LWZseW1ha2UtYmFja2VuZCkpCi0gICAgKGVnbG90 LS1zZXRxLXNhdmluZyBjb21wYW55LWJhY2tlbmRzICcoY29tcGFueS1jYXBmKSkKLSAgICAoZWds b3QtLXNldHEtc2F2aW5nIGNvbXBhbnktdG9vbHRpcC1hbGlnbi1hbm5vdGF0aW9ucyB0KQotICAg ICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICdpbWVudSkKLSAgICAgIChhZGQtZnVuY3Rp b24gOmJlZm9yZS11bnRpbCAobG9jYWwgJ2ltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbikKLSAg ICAgICAgICAgICAgICAgICAgIydlZ2xvdC1pbWVudSkpCi0gICAgKHVubGVzcyAoZWdsb3QtLXN0 YXktb3V0LW9mLXAgJ2ZseW1ha2UpIChmbHltYWtlLW1vZGUgMSkpCi0gICAgKHVubGVzcyAoZWds b3QtLXN0YXktb3V0LW9mLXAgJ2VsZG9jKSAoZWxkb2MtbW9kZSAxKSkKLSAgICAoY2wtcHVzaG5l dyAoY3VycmVudC1idWZmZXIpIChlZ2xvdC0tbWFuYWdlZC1idWZmZXJzIChlZ2xvdC1jdXJyZW50 LXNlcnZlcikpKSkKLSAgICh0Ci0gICAgKHJlbW92ZS1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rp b25zICdlZ2xvdC0tYWZ0ZXItY2hhbmdlIHQpCi0gICAgKHJlbW92ZS1ob29rICdiZWZvcmUtY2hh bmdlLWZ1bmN0aW9ucyAnZWdsb3QtLWJlZm9yZS1jaGFuZ2UgdCkKLSAgICAocmVtb3ZlLWhvb2sg J2tpbGwtYnVmZmVyLWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiB0KQotICAgIChyZW1v dmUtaG9vayAna2lsbC1idWZmZXItaG9vayAnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlk Q2xvc2UgdCkKLSAgICAocmVtb3ZlLWhvb2sgJ2JlZm9yZS1yZXZlcnQtaG9vayAnZWdsb3QtLXNp Z25hbC10ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgdCkKLSAgICAocmVtb3ZlLWhvb2sgJ2FmdGVyLXJl dmVydC1ob29rICdlZ2xvdC0tYWZ0ZXItcmV2ZXJ0LWhvb2sgdCkKLSAgICAocmVtb3ZlLWhvb2sg J2JlZm9yZS1zYXZlLWhvb2sgJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L3dpbGxTYXZlIHQp Ci0gICAgKHJlbW92ZS1ob29rICdhZnRlci1zYXZlLWhvb2sgJ2VnbG90LS1zaWduYWwtdGV4dERv Y3VtZW50L2RpZFNhdmUgdCkKLSAgICAocmVtb3ZlLWhvb2sgJ3hyZWYtYmFja2VuZC1mdW5jdGlv bnMgJ2VnbG90LXhyZWYtYmFja2VuZCB0KQotICAgIChyZW1vdmUtaG9vayAnY29tcGxldGlvbi1h dC1wb2ludC1mdW5jdGlvbnMgIydlZ2xvdC1jb21wbGV0aW9uLWF0LXBvaW50IHQpCi0gICAgKHJl bW92ZS1ob29rICdjaGFuZ2UtbWFqb3ItbW9kZS1ob29rICMnZWdsb3QtLW1hbmFnZWQtbW9kZS1v ZmYgdCkKLSAgICAocmVtb3ZlLWhvb2sgJ3Bvc3Qtc2VsZi1pbnNlcnQtaG9vayAnZWdsb3QtLXBv c3Qtc2VsZi1pbnNlcnQtaG9vayB0KQotICAgIChyZW1vdmUtaG9vayAncHJlLWNvbW1hbmQtaG9v ayAnZWdsb3QtLXByZS1jb21tYW5kLWhvb2sgdCkKLSAgICAoY2wtbG9vcCBmb3IgKHZhciAuIHNh dmVkLWJpbmRpbmcpIGluIGVnbG90LS1zYXZlZC1iaW5kaW5ncwotICAgICAgICAgICAgIGRvIChz ZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgdmFyKSBzYXZlZC1iaW5kaW5nKSkKLSAgICAocmVtb3Zl LWZ1bmN0aW9uIChsb2NhbCAnaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uKSAjJ2VnbG90LWlt ZW51KQotICAgICh3aGVuIGVnbG90LS1jdXJyZW50LWZseW1ha2UtcmVwb3J0LWZuCi0gICAgICAo ZWdsb3QtLXJlcG9ydC10by1mbHltYWtlIG5pbCkKLSAgICAgIChzZXRxIGVnbG90LS1jdXJyZW50 LWZseW1ha2UtcmVwb3J0LWZuIG5pbCkpCi0gICAgKGxldCAoKHNlcnZlciBlZ2xvdC0tY2FjaGVk LXNlcnZlcikpCi0gICAgICAoc2V0cSBlZ2xvdC0tY2FjaGVkLXNlcnZlciBuaWwpCi0gICAgICAo d2hlbiBzZXJ2ZXIKLSAgICAgICAgKHNldGYgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZlcnMgc2VydmVy KQotICAgICAgICAgICAgICAoZGVscSAoY3VycmVudC1idWZmZXIpIChlZ2xvdC0tbWFuYWdlZC1i dWZmZXJzIHNlcnZlcikpKQotICAgICAgICAod2hlbiAoYW5kIGVnbG90LWF1dG9zaHV0ZG93bgot ICAgICAgICAgICAgICAgICAgIChudWxsIChlZ2xvdC0tbWFuYWdlZC1idWZmZXJzIHNlcnZlcikp KQotICAgICAgICAgIChlZ2xvdC1zaHV0ZG93biBzZXJ2ZXIpKSkpKSkKKyAgICAoZWdsb3QtLW1h bmFnZWQtbW9kZQorICAgICAgKGFkZC1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zICdlZ2xv dC0tYWZ0ZXItY2hhbmdlIG5pbCB0KQorICAgICAgKGFkZC1ob29rICdiZWZvcmUtY2hhbmdlLWZ1 bmN0aW9ucyAnZWdsb3QtLWJlZm9yZS1jaGFuZ2UgbmlsIHQpCisgICAgICAoYWRkLWhvb2sgJ2tp bGwtYnVmZmVyLWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiBuaWwgdCkKKyAgICAgIDs7 IFByZXBlbmQgImRpZENsb3NlIiB0byB0aGUgaG9vayBhZnRlciB0aGUgIm5vbm9mZiIsIHNvIGl0 IHdpbGwgcnVuIGZpcnN0CisgICAgICAoYWRkLWhvb2sgJ2tpbGwtYnVmZmVyLWhvb2sgJ2VnbG90 LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlIG5pbCB0KQorICAgICAgKGFkZC1ob29rICdi ZWZvcmUtcmV2ZXJ0LWhvb2sgJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlIG5p bCB0KQorICAgICAgKGFkZC1ob29rICdhZnRlci1yZXZlcnQtaG9vayAnZWdsb3QtLWFmdGVyLXJl dmVydC1ob29rIG5pbCB0KQorICAgICAgKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICdlZ2xv dC0tc2lnbmFsLXRleHREb2N1bWVudC93aWxsU2F2ZSBuaWwgdCkKKyAgICAgIChhZGQtaG9vayAn YWZ0ZXItc2F2ZS1ob29rICdlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRTYXZlIG5pbCB0 KQorICAgICAgKHVubGVzcyAoZWdsb3QtLXN0YXktb3V0LW9mLXAgJ3hyZWYpCisgICAgICAgIChh ZGQtaG9vayAneHJlZi1iYWNrZW5kLWZ1bmN0aW9ucyAnZWdsb3QteHJlZi1iYWNrZW5kIG5pbCB0 KSkKKyAgICAgIChhZGQtaG9vayAnY29tcGxldGlvbi1hdC1wb2ludC1mdW5jdGlvbnMgIydlZ2xv dC1jb21wbGV0aW9uLWF0LXBvaW50IG5pbCB0KQorICAgICAgKGFkZC1ob29rICdjaGFuZ2UtbWFq b3ItbW9kZS1ob29rICMnZWdsb3QtLW1hbmFnZWQtbW9kZS1vZmYgbmlsIHQpCisgICAgICAoYWRk LWhvb2sgJ3Bvc3Qtc2VsZi1pbnNlcnQtaG9vayAnZWdsb3QtLXBvc3Qtc2VsZi1pbnNlcnQtaG9v ayBuaWwgdCkKKyAgICAgIChhZGQtaG9vayAncHJlLWNvbW1hbmQtaG9vayAnZWdsb3QtLXByZS1j b21tYW5kLWhvb2sgbmlsIHQpCisgICAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGVsZG9jLWRvY3Vt ZW50YXRpb24tZnVuY3Rpb25zCisgICAgICAgICcoZWdsb3Qtc2lnbmF0dXJlLWVsZG9jLWZ1bmN0 aW9uCisgICAgICAgICAgIGVnbG90LWhvdmVyLWVsZG9jLWZ1bmN0aW9uKSkKKyAgICAgIChlZ2xv dC0tc2V0cS1zYXZpbmcgZWxkb2MtZG9jdW1lbnRhdGlvbi1zdHJhdGVneQorICAgICAgICAjJ2Vs ZG9jLWRvY3VtZW50YXRpb24tZW50aHVzaWFzdCkKKyAgICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcg eHJlZi1wcm9tcHQtZm9yLWlkZW50aWZpZXIgbmlsKQorICAgICAgKGVnbG90LS1zZXRxLXNhdmlu ZyBmbHltYWtlLWRpYWdub3N0aWMtZnVuY3Rpb25zICcoZWdsb3QtZmx5bWFrZS1iYWNrZW5kKSkK KyAgICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgY29tcGFueS1iYWNrZW5kcyAnKGNvbXBhbnktY2Fw ZikpCisgICAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGNvbXBhbnktdG9vbHRpcC1hbGlnbi1hbm5v dGF0aW9ucyB0KQorICAgICAgKHVubGVzcyAoZWdsb3QtLXN0YXktb3V0LW9mLXAgJ2ltZW51KQor ICAgICAgICAoYWRkLWZ1bmN0aW9uIDpiZWZvcmUtdW50aWwgKGxvY2FsICdpbWVudS1jcmVhdGUt aW5kZXgtZnVuY3Rpb24pCisgICAgICAgICAgIydlZ2xvdC1pbWVudSkpCisgICAgICAodW5sZXNz IChlZ2xvdC0tc3RheS1vdXQtb2YtcCAnZmx5bWFrZSkgKGZseW1ha2UtbW9kZSAxKSkKKyAgICAg ICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICdlbGRvYykgKGVsZG9jLW1vZGUgMSkpCisg ICAgICAoY2wtcHVzaG5ldyAoY3VycmVudC1idWZmZXIpIChlZ2xvdC0tbWFuYWdlZC1idWZmZXJz IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKSkKKyAgICAodAorICAgICAgKHJlbW92ZS1ob29rICdh ZnRlci1jaGFuZ2UtZnVuY3Rpb25zICdlZ2xvdC0tYWZ0ZXItY2hhbmdlIHQpCisgICAgICAocmVt b3ZlLWhvb2sgJ2JlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zICdlZ2xvdC0tYmVmb3JlLWNoYW5nZSB0 KQorICAgICAgKHJlbW92ZS1ob29rICdraWxsLWJ1ZmZlci1ob29rICMnZWdsb3QtLW1hbmFnZWQt bW9kZS1vZmYgdCkKKyAgICAgIChyZW1vdmUtaG9vayAna2lsbC1idWZmZXItaG9vayAnZWdsb3Qt LXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgdCkKKyAgICAgIChyZW1vdmUtaG9vayAnYmVm b3JlLXJldmVydC1ob29rICdlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRDbG9zZSB0KQor ICAgICAgKHJlbW92ZS1ob29rICdhZnRlci1yZXZlcnQtaG9vayAnZWdsb3QtLWFmdGVyLXJldmVy dC1ob29rIHQpCisgICAgICAocmVtb3ZlLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ2VnbG90LS1z aWduYWwtdGV4dERvY3VtZW50L3dpbGxTYXZlIHQpCisgICAgICAocmVtb3ZlLWhvb2sgJ2FmdGVy LXNhdmUtaG9vayAnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkU2F2ZSB0KQorICAgICAg KHJlbW92ZS1ob29rICd4cmVmLWJhY2tlbmQtZnVuY3Rpb25zICdlZ2xvdC14cmVmLWJhY2tlbmQg dCkKKyAgICAgIChyZW1vdmUtaG9vayAnY29tcGxldGlvbi1hdC1wb2ludC1mdW5jdGlvbnMgIydl Z2xvdC1jb21wbGV0aW9uLWF0LXBvaW50IHQpCisgICAgICAocmVtb3ZlLWhvb2sgJ2NoYW5nZS1t YWpvci1tb2RlLWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiB0KQorICAgICAgKHJlbW92 ZS1ob29rICdwb3N0LXNlbGYtaW5zZXJ0LWhvb2sgJ2VnbG90LS1wb3N0LXNlbGYtaW5zZXJ0LWhv b2sgdCkKKyAgICAgIChyZW1vdmUtaG9vayAncHJlLWNvbW1hbmQtaG9vayAnZWdsb3QtLXByZS1j b21tYW5kLWhvb2sgdCkKKyAgICAgIChjbC1sb29wIGZvciAodmFyIC4gc2F2ZWQtYmluZGluZykg aW4gZWdsb3QtLXNhdmVkLWJpbmRpbmdzCisgICAgICAgIGRvIChzZXQgKG1ha2UtbG9jYWwtdmFy aWFibGUgdmFyKSBzYXZlZC1iaW5kaW5nKSkKKyAgICAgIChyZW1vdmUtZnVuY3Rpb24gKGxvY2Fs ICdpbWVudS1jcmVhdGUtaW5kZXgtZnVuY3Rpb24pICMnZWdsb3QtaW1lbnUpCisgICAgICAod2hl biBlZ2xvdC0tY3VycmVudC1mbHltYWtlLXJlcG9ydC1mbgorICAgICAgICAoZWdsb3QtLXJlcG9y dC10by1mbHltYWtlIG5pbCkKKyAgICAgICAgKHNldHEgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1y ZXBvcnQtZm4gbmlsKSkKKyAgICAgIChsZXQgKChzZXJ2ZXIgZWdsb3QtLWNhY2hlZC1zZXJ2ZXIp KQorICAgICAgICAoc2V0cSBlZ2xvdC0tY2FjaGVkLXNlcnZlciBuaWwpCisgICAgICAgICh3aGVu IHNlcnZlcgorICAgICAgICAgIChzZXRmIChlZ2xvdC0tbWFuYWdlZC1idWZmZXJzIHNlcnZlcikK KyAgICAgICAgICAgIChkZWxxIChjdXJyZW50LWJ1ZmZlcikgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZl cnMgc2VydmVyKSkpCisgICAgICAgICAgKHdoZW4gKGFuZCBlZ2xvdC1hdXRvc2h1dGRvd24KKyAg ICAgICAgICAgICAgICAgIChudWxsIChlZ2xvdC0tbWFuYWdlZC1idWZmZXJzIHNlcnZlcikpKQor ICAgICAgICAgICAgKGVnbG90LXNodXRkb3duIHNlcnZlcikpKSkpKQogICA7OyBOb3RlOiB0aGUg cHVibGljIGhvb2sgcnVucyBiZWZvcmUgdGhlIGludGVybmFsIGVnbG90LS1tYW5hZ2VkLW1vZGUt aG9vay4KICAgKHJ1bi1ob29rcyAnZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2spKQogCkBAIC0xNzUw LDIwICsxNzU1LDIwIEBAIFVzZSBgZWdsb3QtbWFuYWdlZC1wJyB0byBkZXRlcm1pbmUgaWYgY3Vy cmVudCBidWZmZXIgaXMgbWFuYWdlZC4iKQogKGRlZnVuIGVnbG90LWN1cnJlbnQtc2VydmVyICgp CiAgICJSZXR1cm4gbG9naWNhbCBFZ2xvdCBzZXJ2ZXIgZm9yIGN1cnJlbnQgYnVmZmVyLCBuaWwg aWYgbm9uZS4iCiAgIChzZXRxIGVnbG90LS1jYWNoZWQtc2VydmVyCi0gICAgICAgIChvciBlZ2xv dC0tY2FjaGVkLXNlcnZlcgotICAgICAgICAgICAgKGNsLWZpbmQgbWFqb3ItbW9kZQotICAgICAg ICAgICAgICAgICAgICAgKGdldGhhc2ggKGVnbG90LS1jdXJyZW50LXByb2plY3QpIGVnbG90LS1z ZXJ2ZXJzLWJ5LXByb2plY3QpCi0gICAgICAgICAgICAgICAgICAgICA6a2V5ICMnZWdsb3QtLW1h am9yLW1vZGVzCi0gICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ21lbXEpCi0gICAgICAgICAg ICAoYW5kIGVnbG90LWV4dGVuZC10by14cmVmCi0gICAgICAgICAgICAgICAgIGJ1ZmZlci1maWxl LW5hbWUKLSAgICAgICAgICAgICAgICAgKGdldGhhc2ggKGV4cGFuZC1maWxlLW5hbWUgYnVmZmVy LWZpbGUtbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsb3QtLXNlcnZlcnMtYnkt eHJlZmVkLWZpbGUpKSkpKQorICAgIChvciBlZ2xvdC0tY2FjaGVkLXNlcnZlcgorICAgICAgKGNs LWZpbmQgbWFqb3ItbW9kZQorICAgICAgICAoZ2V0aGFzaCAoZWdsb3QtLWN1cnJlbnQtcHJvamVj dCkgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdCkKKyAgICAgICAgOmtleSAjJ2VnbG90LS1tYWpv ci1tb2RlcworICAgICAgICA6dGVzdCAjJ21lbXEpCisgICAgICAoYW5kIGVnbG90LWV4dGVuZC10 by14cmVmCisgICAgICAgIGJ1ZmZlci1maWxlLW5hbWUKKyAgICAgICAgKGdldGhhc2ggKGV4cGFu ZC1maWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkKKyAgICAgICAgICBlZ2xvdC0tc2VydmVycy1i eS14cmVmZWQtZmlsZSkpKSkpCiAKIChkZWZ1biBlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSAoKQogICAiUmV0dXJuIGN1cnJlbnQgbG9naWNhbCBFZ2xvdCBzZXJ2ZXIgY29ubmVjdGlvbiBv ciBlcnJvci4iCiAgIChvciAoZWdsb3QtY3VycmVudC1zZXJ2ZXIpCi0gICAgICAoanNvbnJwYy1l cnJvciAiTm8gY3VycmVudCBKU09OLVJQQyBjb25uZWN0aW9uIikpKQorICAgIChqc29ucnBjLWVy cm9yICJObyBjdXJyZW50IEpTT04tUlBDIGNvbm5lY3Rpb24iKSkpCiAKIChkZWZ2YXItbG9jYWwg ZWdsb3QtLWRpYWdub3N0aWNzIG5pbAogICAiRmx5bWFrZSBkaWFnbm9zdGljcyBmb3IgdGhpcyBi dWZmZXIuIikKQEAgLTE4MDcsNyArMTgxMiw3IEBAIElmIGl0IGlzIGFjdGl2YXRlZCwgYWxzbyBz aWduYWwgdGV4dERvY3VtZW50L2RpZE9wZW4uIgogICAgIChsZXQgKChzdGFydCAoZXZlbnQtc3Rh cnQgZXZlbnQpKSkgKHdpdGgtc2VsZWN0ZWQtd2luZG93IChwb3NuLXdpbmRvdyBzdGFydCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAob3Ig KHBvc24tcG9pbnQgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgd2hhdCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yY2UtbW9kZS1saW5l LXVwZGF0ZSB0KSkpKSkpCiAKQEAgLTE4MTYsMTMxICsxODIxLDEzOCBAQCBJZiBpdCBpcyBhY3Rp dmF0ZWQsIGFsc28gc2lnbmFsIHRleHREb2N1bWVudC9kaWRPcGVuLiIKIAogKGVhc3ktbWVudS1k ZWZpbmUgZWdsb3QtbWVudSBuaWwgIkVnbG90IgogICBgKCJFZ2xvdCIKLSAgICA7OyBDb21tYW5k cyBmb3IgZ2V0dGluZyBpbmZvcm1hdGlvbiBhbmQgY3VzdG9taXphdGlvbi4KLSAgICBbIlJlYWQg bWFudWFsIiBlZ2xvdC1tYW51YWxdCi0gICAgWyJDdXN0b21pemUgRWdsb3QiIChsYW1iZGEgKCkg KGludGVyYWN0aXZlKSAoY3VzdG9taXplLWdyb3VwICJlZ2xvdCIpKV0KLSAgICAiLS0iCi0gICAg OzsgeHJlZiBsaWtlIGNvbW1hbmRzLgotICAgIFsiRmluZCBkZWZpbml0aW9ucyIgeHJlZi1maW5k LWRlZmluaXRpb25zCi0gICAgIDpoZWxwICJGaW5kIGRlZmluaXRpb25zIG9mIGlkZW50aWZpZXIg YXQgcG9pbnQiCi0gICAgIDphY3RpdmUgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZGVmaW5pdGlv blByb3ZpZGVyKV0KLSAgICBbIkZpbmQgcmVmZXJlbmNlcyIgeHJlZi1maW5kLXJlZmVyZW5jZXMK LSAgICAgOmhlbHAgIkZpbmQgcmVmZXJlbmNlcyB0byBpZGVudGlmaWVyIGF0IHBvaW50IgotICAg ICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnJlZmVyZW5jZXNQcm92aWRlcildCi0g ICAgWyJGaW5kIHN5bWJvbHMgaW4gd29ya3NwYWNlIChhcHJvcG9zKSIgeHJlZi1maW5kLWFwcm9w b3MKLSAgICAgOmhlbHAgIkZpbmQgc3ltYm9scyBtYXRjaGluZyBhIHF1ZXJ5IgotICAgICA6YWN0 aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKV0KLSAg ICBbIkZpbmQgZGVjbGFyYXRpb24iIGVnbG90LWZpbmQtZGVjbGFyYXRpb24KLSAgICAgOmhlbHAg IkZpbmQgZGVjbGFyYXRpb24gZm9yIGlkZW50aWZpZXIgYXQgcG9pbnQiCi0gICAgIDphY3RpdmUg KGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZGVjbGFyYXRpb25Qcm92aWRlcildCi0gICAgWyJGaW5k IGltcGxlbWVudGF0aW9uIiBlZ2xvdC1maW5kLWltcGxlbWVudGF0aW9uCi0gICAgIDpoZWxwICJG aW5kIGltcGxlbWVudGF0aW9uIGZvciBpZGVudGlmaWVyIGF0IHBvaW50IgotICAgICA6YWN0aXZl IChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmltcGxlbWVudGF0aW9uUHJvdmlkZXIpXQotICAgIFsi RmluZCB0eXBlIGRlZmluaXRpb24iIGVnbG90LWZpbmQtdHlwZURlZmluaXRpb24KLSAgICAgOmhl bHAgIkZpbmQgdHlwZSBkZWZpbml0aW9uIGZvciBpZGVudGlmaWVyIGF0IHBvaW50IgotICAgICA6 YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnR5cGVEZWZpbml0aW9uUHJvdmlkZXIpXQot ICAgICItLSIKLSAgICA7OyBMU1AtcmVsYXRlZCBjb21tYW5kcyAobW9zdGx5IEVnbG90J3Mgb3du IGNvbW1hbmRzKS4KLSAgICBbIlJlbmFtZSBzeW1ib2wiIGVnbG90LXJlbmFtZQotICAgICA6YWN0 aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnJlbmFtZVByb3ZpZGVyKV0KLSAgICBbIkZvcm1h dCBidWZmZXIiIGVnbG90LWZvcm1hdC1idWZmZXIKLSAgICAgOmFjdGl2ZSAoZWdsb3QtLXNlcnZl ci1jYXBhYmxlIDpkb2N1bWVudEZvcm1hdHRpbmdQcm92aWRlcildCi0gICAgWyJGb3JtYXQgYWN0 aXZlIHJlZ2lvbiIgZWdsb3QtZm9ybWF0Ci0gICAgIDphY3RpdmUgKGFuZCAocmVnaW9uLWFjdGl2 ZS1wKQotICAgICAgICAgICAgICAgICAgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRS YW5nZUZvcm1hdHRpbmdQcm92aWRlcikpXQotICAgIFsiU2hvdyBGbHltYWtlIGRpYWdub3N0aWNz IGZvciBidWZmZXIiIGZseW1ha2Utc2hvdy1idWZmZXItZGlhZ25vc3RpY3NdCi0gICAgWyJTaG93 IEZseW1ha2UgZGlhZ25vc3RpY3MgZm9yIHByb2plY3QiIGZseW1ha2Utc2hvdy1wcm9qZWN0LWRp YWdub3N0aWNzXQotICAgIFsiU2hvdyBFbGRvYyBkb2N1bWVudGF0aW9uIGF0IHBvaW50IiBlbGRv Yy1kb2MtYnVmZmVyXQotICAgICItLSIKLSAgICBbIkFsbCBwb3NzaWJsZSBjb2RlIGFjdGlvbnMi IGVnbG90LWNvZGUtYWN0aW9ucwotICAgICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUg OmNvZGVBY3Rpb25Qcm92aWRlcildCi0gICAgWyJPcmdhbml6ZSBpbXBvcnRzIiBlZ2xvdC1jb2Rl LWFjdGlvbi1vcmdhbml6ZS1pbXBvcnRzCi0gICAgIDp2aXNpYmxlIChlZ2xvdC0tc2VydmVyLWNh cGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildCi0gICAgWyJFeHRyYWN0IiBlZ2xvdC1jb2RlLWFj dGlvbi1leHRyYWN0Ci0gICAgIDp2aXNpYmxlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmNvZGVB Y3Rpb25Qcm92aWRlcildCi0gICAgWyJJbmxpbmUiIGVnbG90LWNvZGUtYWN0aW9uLWlubGluZQot ICAgICA6dmlzaWJsZSAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0aW9uUHJvdmlkZXIp XQotICAgIFsiUmV3cml0ZSIgZWdsb3QtY29kZS1hY3Rpb24tcmV3cml0ZQotICAgICA6dmlzaWJs ZSAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0aW9uUHJvdmlkZXIpXQotICAgIFsiUXVp Y2tmaXgiIGVnbG90LWNvZGUtYWN0aW9uLXF1aWNrZml4Ci0gICAgIDp2aXNpYmxlIChlZ2xvdC0t c2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildKSkKKyAgICAgOzsgQ29tbWFuZHMg Zm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYW5kIGN1c3RvbWl6YXRpb24uCisgICAgIFsiUmVhZCBt YW51YWwiIGVnbG90LW1hbnVhbF0KKyAgICAgWyJDdXN0b21pemUgRWdsb3QiIChsYW1iZGEgKCkg KGludGVyYWN0aXZlKSAoY3VzdG9taXplLWdyb3VwICJlZ2xvdCIpKV0KKyAgICAgIi0tIgorICAg ICA7OyB4cmVmIGxpa2UgY29tbWFuZHMuCisgICAgIFsiRmluZCBkZWZpbml0aW9ucyIgeHJlZi1m aW5kLWRlZmluaXRpb25zCisgICAgICAgOmhlbHAgIkZpbmQgZGVmaW5pdGlvbnMgb2YgaWRlbnRp ZmllciBhdCBwb2ludCIKKyAgICAgICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmRl ZmluaXRpb25Qcm92aWRlcildCisgICAgIFsiRmluZCByZWZlcmVuY2VzIiB4cmVmLWZpbmQtcmVm ZXJlbmNlcworICAgICAgIDpoZWxwICJGaW5kIHJlZmVyZW5jZXMgdG8gaWRlbnRpZmllciBhdCBw b2ludCIKKyAgICAgICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOnJlZmVyZW5jZXNQ cm92aWRlcildCisgICAgIFsiRmluZCBzeW1ib2xzIGluIHdvcmtzcGFjZSAoYXByb3BvcykiIHhy ZWYtZmluZC1hcHJvcG9zCisgICAgICAgOmhlbHAgIkZpbmQgc3ltYm9scyBtYXRjaGluZyBhIHF1 ZXJ5IgorICAgICAgIDphY3RpdmUgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6d29ya3NwYWNlU3lt Ym9sUHJvdmlkZXIpXQorICAgICBbIkZpbmQgZGVjbGFyYXRpb24iIGVnbG90LWZpbmQtZGVjbGFy YXRpb24KKyAgICAgICA6aGVscCAiRmluZCBkZWNsYXJhdGlvbiBmb3IgaWRlbnRpZmllciBhdCBw b2ludCIKKyAgICAgICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmRlY2xhcmF0aW9u UHJvdmlkZXIpXQorICAgICBbIkZpbmQgaW1wbGVtZW50YXRpb24iIGVnbG90LWZpbmQtaW1wbGVt ZW50YXRpb24KKyAgICAgICA6aGVscCAiRmluZCBpbXBsZW1lbnRhdGlvbiBmb3IgaWRlbnRpZmll ciBhdCBwb2ludCIKKyAgICAgICA6YWN0aXZlIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmltcGxl bWVudGF0aW9uUHJvdmlkZXIpXQorICAgICBbIkZpbmQgdHlwZSBkZWZpbml0aW9uIiBlZ2xvdC1m aW5kLXR5cGVEZWZpbml0aW9uCisgICAgICAgOmhlbHAgIkZpbmQgdHlwZSBkZWZpbml0aW9uIGZv ciBpZGVudGlmaWVyIGF0IHBvaW50IgorICAgICAgIDphY3RpdmUgKGVnbG90LS1zZXJ2ZXItY2Fw YWJsZSA6dHlwZURlZmluaXRpb25Qcm92aWRlcildCisgICAgICItLSIKKyAgICAgOzsgTFNQLXJl bGF0ZWQgY29tbWFuZHMgKG1vc3RseSBFZ2xvdCdzIG93biBjb21tYW5kcykuCisgICAgIFsiUmVu YW1lIHN5bWJvbCIgZWdsb3QtcmVuYW1lCisgICAgICAgOmFjdGl2ZSAoZWdsb3QtLXNlcnZlci1j YXBhYmxlIDpyZW5hbWVQcm92aWRlcildCisgICAgIFsiRm9ybWF0IGJ1ZmZlciIgZWdsb3QtZm9y bWF0LWJ1ZmZlcgorICAgICAgIDphY3RpdmUgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1l bnRGb3JtYXR0aW5nUHJvdmlkZXIpXQorICAgICBbIkZvcm1hdCBhY3RpdmUgcmVnaW9uIiBlZ2xv dC1mb3JtYXQKKyAgICAgICA6YWN0aXZlIChhbmQgKHJlZ2lvbi1hY3RpdmUtcCkKKyAgICAgICAg ICAgICAgICAgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQ cm92aWRlcikpXQorICAgICBbIlNob3cgRmx5bWFrZSBkaWFnbm9zdGljcyBmb3IgYnVmZmVyIiBm bHltYWtlLXNob3ctYnVmZmVyLWRpYWdub3N0aWNzXQorICAgICBbIlNob3cgRmx5bWFrZSBkaWFn bm9zdGljcyBmb3IgcHJvamVjdCIgZmx5bWFrZS1zaG93LXByb2plY3QtZGlhZ25vc3RpY3NdCisg ICAgIFsiU2hvdyBFbGRvYyBkb2N1bWVudGF0aW9uIGF0IHBvaW50IiBlbGRvYy1kb2MtYnVmZmVy XQorICAgICAiLS0iCisgICAgIFsiQWxsIHBvc3NpYmxlIGNvZGUgYWN0aW9ucyIgZWdsb3QtY29k ZS1hY3Rpb25zCisgICAgICAgOmFjdGl2ZSAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0 aW9uUHJvdmlkZXIpXQorICAgICBbIk9yZ2FuaXplIGltcG9ydHMiIGVnbG90LWNvZGUtYWN0aW9u LW9yZ2FuaXplLWltcG9ydHMKKyAgICAgICA6dmlzaWJsZSAoZWdsb3QtLXNlcnZlci1jYXBhYmxl IDpjb2RlQWN0aW9uUHJvdmlkZXIpXQorICAgICBbIkV4dHJhY3QiIGVnbG90LWNvZGUtYWN0aW9u LWV4dHJhY3QKKyAgICAgICA6dmlzaWJsZSAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0 aW9uUHJvdmlkZXIpXQorICAgICBbIklubGluZSIgZWdsb3QtY29kZS1hY3Rpb24taW5saW5lCisg ICAgICAgOnZpc2libGUgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6Y29kZUFjdGlvblByb3ZpZGVy KV0KKyAgICAgWyJSZXdyaXRlIiBlZ2xvdC1jb2RlLWFjdGlvbi1yZXdyaXRlCisgICAgICAgOnZp c2libGUgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0KKyAgICAg WyJRdWlja2ZpeCIgZWdsb3QtY29kZS1hY3Rpb24tcXVpY2tmaXgKKyAgICAgICA6dmlzaWJsZSAo ZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0aW9uUHJvdmlkZXIpXSkpCiAKIChlYXN5LW1l bnUtZGVmaW5lIGVnbG90LXNlcnZlci1tZW51IG5pbCAiTW9uaXRvciBzZXJ2ZXIgY29tbXVuaWNh dGlvbiIKICAgJygiRGVidWdnaW5nIHRoZSBzZXJ2ZXIgY29tbXVuaWNhdGlvbiIKLSAgICBbIlJl Y29ubmVjdCB0byBzZXJ2ZXIiIGVnbG90LXJlY29ubmVjdF0KLSAgICBbIlF1aXQgc2VydmVyIiBl Z2xvdC1zaHV0ZG93bl0KLSAgICAiLS0iCi0gICAgWyJMU1AgZXZlbnRzIGJ1ZmZlciIgZWdsb3Qt ZXZlbnRzLWJ1ZmZlcl0KLSAgICBbIlNlcnZlciBzdGRlcnIgYnVmZmVyIiBlZ2xvdC1zdGRlcnIt YnVmZmVyXQotICAgIFsiQ3VzdG9taXplIGV2ZW50IGJ1ZmZlciBzaXplIgotICAgICAobGFtYmRh ICgpCi0gICAgICAgKGludGVyYWN0aXZlKQotICAgICAgIChjdXN0b21pemUtdmFyaWFibGUgJ2Vn bG90LWV2ZW50cy1idWZmZXItc2l6ZSkpXSkpCisgICAgIFsiUmVjb25uZWN0IHRvIHNlcnZlciIg ZWdsb3QtcmVjb25uZWN0XQorICAgICBbIlF1aXQgc2VydmVyIiBlZ2xvdC1zaHV0ZG93bl0KKyAg ICAgIi0tIgorICAgICBbIkxTUCBldmVudHMgYnVmZmVyIiBlZ2xvdC1ldmVudHMtYnVmZmVyXQor ICAgICBbIlNlcnZlciBzdGRlcnIgYnVmZmVyIiBlZ2xvdC1zdGRlcnItYnVmZmVyXQorICAgICBb IkN1c3RvbWl6ZSBldmVudCBidWZmZXIgc2l6ZSIKKyAgICAgICAobGFtYmRhICgpCisgICAgICAg ICAoaW50ZXJhY3RpdmUpCisgICAgICAgICAoY3VzdG9taXplLXZhcmlhYmxlICdlZ2xvdC1ldmVu dHMtYnVmZmVyLXNpemUpKV0pKQogCiAoZGVmdW4gZWdsb3QtLW1vZGUtbGluZS1wcm9wcyAodGhp bmcgZmFjZSBkZWZzICZvcHRpb25hbCBwcmVwZW5kKQogICAiSGVscGVyIGZvciBmdW5jdGlvbiBg ZWdsb3QtLW1vZGUtbGluZS1mb3JtYXQnLgogVXNlcyBUSElORywgRkFDRSwgREVGUyBhbmQgUFJF UEVORC4iCiAgIChjbC1sb29wIHdpdGggbWFwID0gKG1ha2Utc3BhcnNlLWtleW1hcCkKLSAgICAg ICAgICAgZm9yIChlbGVtIC4gcmVzdCkgb24gZGVmcwotICAgICAgICAgICBmb3IgKGtleSBkZWYg aGVscCkgPSBlbGVtCi0gICAgICAgICAgIGRvIChkZWZpbmUta2V5IG1hcCBgW21vZGUtbGluZSAs a2V5XSAoZWdsb3QtLW1vdXNlLWNhbGwgZGVmKSkKLSAgICAgICAgICAgY29uY2F0IChmb3JtYXQg IiVzOiAlcyIga2V5IGhlbHApIGludG8gYmx1cmIKLSAgICAgICAgICAgd2hlbiByZXN0IGNvbmNh dCAiXG4iIGludG8gYmx1cmIKLSAgICAgICAgICAgZmluYWxseSAocmV0dXJuIGAoOnByb3BlcnRp emUgLHRoaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Ug LGZhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5bWFwICxt YXAgaGVscC1lY2hvICwoY29uY2F0IHByZXBlbmQgYmx1cmIpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vdXNlLWZhY2UgbW9kZS1saW5lLWhpZ2hsaWdodCkpKSkK KyAgICBmb3IgKGVsZW0gLiByZXN0KSBvbiBkZWZzCisgICAgZm9yIChrZXkgZGVmIGhlbHApID0g ZWxlbQorICAgIGRvIChkZWZpbmUta2V5IG1hcCBgW21vZGUtbGluZSAsa2V5XSAoZWdsb3QtLW1v dXNlLWNhbGwgZGVmKSkKKyAgICBjb25jYXQgKGZvcm1hdCAiJXM6ICVzIiBrZXkgaGVscCkgaW50 byBibHVyYgorICAgIHdoZW4gcmVzdCBjb25jYXQgIlxuIiBpbnRvIGJsdXJiCisgICAgZmluYWxs eSAocmV0dXJuIGAoOnByb3BlcnRpemUgLHRoaW5nCisgICAgICAgICAgICAgICAgICAgICAgIGZh Y2UgLGZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAga2V5bWFwICxtYXAgaGVscC1lY2hvICwo Y29uY2F0IHByZXBlbmQgYmx1cmIpCisgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlLWZhY2Ug bW9kZS1saW5lLWhpZ2hsaWdodCkpKSkKIAogKGRlZnVuIGVnbG90LS1tb2RlLWxpbmUtZm9ybWF0 ICgpCiAgICJDb21wb3NlIHRoZSBFZ2xvdCdzIG1vZGUtbGluZS4iCiAgIChwY2FzZS1sZXQqICgo c2VydmVyIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpCi0gICAgICAgICAgICAgICAobmljayAoYW5k IHNlcnZlciAoZWdsb3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpKSkKLSAgICAgICAgICAgICAg IChwZW5kaW5nIChhbmQgc2VydmVyIChoYXNoLXRhYmxlLWNvdW50Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtLXJlcXVlc3QtY29udGludWF0aW9ucyBzZXJ2 ZXIpKSkpCi0gICAgICAgICAgICAgICAoYCgsX2lkICxkb2luZyAsZG9uZS1wICxfZGV0YWlsKSAo YW5kIHNlcnZlciAoZWdsb3QtLXNwaW5uZXIgc2VydmVyKSkpCi0gICAgICAgICAgICAgICAobGFz dC1lcnJvciAoYW5kIHNlcnZlciAoanNvbnJwYy1sYXN0LWVycm9yIHNlcnZlcikpKSkKKyAgICAg ICAgICAgICAgICAobmljayAoYW5kIHNlcnZlciAoZWdsb3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2 ZXIpKSkKKyAgICAgICAgICAgICAgICAocGVuZGluZyAoYW5kIHNlcnZlciAoaGFzaC10YWJsZS1j b3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtLXJl cXVlc3QtY29udGludWF0aW9ucyBzZXJ2ZXIpKSkpCisgICAgICAgICAgICAgICAgKGAoLF9pZCAs ZG9pbmcgLGRvbmUtcCAsX2RldGFpbCkgKGFuZCBzZXJ2ZXIgKGVnbG90LS1zcGlubmVyIHNlcnZl cikpKQorICAgICAgICAgICAgICAgIChsYXN0LWVycm9yIChhbmQgc2VydmVyIChqc29ucnBjLWxh c3QtZXJyb3Igc2VydmVyKSkpKQogICAgIChhcHBlbmQKLSAgICAgYCgsKHByb3BlcnRpemUKLSAg ICAgICAgIGVnbG90LW1lbnUtc3RyaW5nCi0gICAgICAgICAnZmFjZSAnZWdsb3QtbW9kZS1saW5l Ci0gICAgICAgICAnbW91c2UtZmFjZSAnbW9kZS1saW5lLWhpZ2hsaWdodAotICAgICAgICAgJ2hl bHAtZWNobyAiRWdsb3Q6IEVtYWNzIExTUCBjbGllbnRcbm1vdXNlLTE6IERpc3BsYXkgbWlub3Ig bW9kZSBtZW51IgotICAgICAgICAgJ2tleW1hcCAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXlt YXApKSkKLSAgICAgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW21vZGUtbGluZSBkb3du LW1vdXNlLTFdIGVnbG90LW1lbnUpCi0gICAgICAgICAgICAgICAgICAgbWFwKSkpCi0gICAgICh3 aGVuIG5pY2sKLSAgICAgICBgKCI6IgotICAgICAgICAgLChwcm9wZXJ0aXplCi0gICAgICAgICAg IG5pY2sKKyAgICAgIGAoLChwcm9wZXJ0aXplCisgICAgICAgICAgIGVnbG90LW1lbnUtc3RyaW5n CiAgICAgICAgICAgICdmYWNlICdlZ2xvdC1tb2RlLWxpbmUKICAgICAgICAgICAgJ21vdXNlLWZh Y2UgJ21vZGUtbGluZS1oaWdobGlnaHQKLSAgICAgICAgICAgJ2hlbHAtZWNobyAoZm9ybWF0ICJQ cm9qZWN0ICclcydcbm1vdXNlLTE6IExTUCBzZXJ2ZXIgY29udHJvbCBtZW51IiBuaWNrKQorICAg ICAgICAgICAnaGVscC1lY2hvICJFZ2xvdDogRW1hY3MgTFNQIGNsaWVudFxubW91c2UtMTogRGlz cGxheSBtaW5vciBtb2RlIG1lbnUiCiAgICAgICAgICAgICdrZXltYXAgKGxldCAoKG1hcCAobWFr ZS1zcGFyc2Uta2V5bWFwKSkpCi0gICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAg W21vZGUtbGluZSBkb3duLW1vdXNlLTFdIGVnbG90LXNlcnZlci1tZW51KQotICAgICAgICAgICAg ICAgICAgICAgbWFwKSkKLSAgICAgICAsQCh3aGVuIGxhc3QtZXJyb3IKLSAgICAgICAgICAgICBg KCIvIiAsKGVnbG90LS1tb2RlLWxpbmUtcHJvcHMKLSAgICAgICAgICAgICAgICAgICAgICJlcnJv ciIgJ2NvbXBpbGF0aW9uLW1vZGUtbGluZS1mYWlsCi0gICAgICAgICAgICAgICAgICAgICAnKCht b3VzZS0zIGVnbG90LWNsZWFyLXN0YXR1cyAgIkNsZWFyIHRoaXMgc3RhdHVzIikpCi0gICAgICAg ICAgICAgICAgICAgICAoZm9ybWF0ICJBbiBlcnJvciBvY2N1cnJlZDogJXNcbiIgKHBsaXN0LWdl dCBsYXN0LWVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDptZXNzYWdlKSkpKSkKLSAgICAgICAgICxAKHdoZW4gKGFu ZCBkb2luZyAobm90IGRvbmUtcCkpCi0gICAgICAgICAgICAgYCgiLyIgLChlZ2xvdC0tbW9kZS1s aW5lLXByb3BzIGRvaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdjb21waWxhdGlvbi1tb2RlLWxpbmUtcnVuICcoKSkpKQotICAgICAgICAgLEAod2hlbiAo Y2wtcGx1c3AgcGVuZGluZykKLSAgICAgICAgICAgICBgKCIvIiAsKGVnbG90LS1tb2RlLWxpbmUt cHJvcHMKLSAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVkIiBwZW5kaW5nKSAnd2Fybmlu ZwotICAgICAgICAgICAgICAgICAgICAgJygobW91c2UtMyBlZ2xvdC1mb3JnZXQtcGVuZGluZy1j b250aW51YXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGb3JnZXQgcGVu ZGluZyBjb250aW51YXRpb25zIikpCi0gICAgICAgICAgICAgICAgICAgICAiTnVtYmVyIG9mIG91 dGdvaW5nLCBcCisgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW21vZGUtbGlu ZSBkb3duLW1vdXNlLTFdIGVnbG90LW1lbnUpCisgICAgICAgICAgICAgICAgICAgICBtYXApKSkK KyAgICAgICh3aGVuIG5pY2sKKyAgICAgICAgYCgiOiIKKyAgICAgICAgICAgLChwcm9wZXJ0aXpl CisgICAgICAgICAgICAgIG5pY2sKKyAgICAgICAgICAgICAgJ2ZhY2UgJ2VnbG90LW1vZGUtbGlu ZQorICAgICAgICAgICAgICAnbW91c2UtZmFjZSAnbW9kZS1saW5lLWhpZ2hsaWdodAorICAgICAg ICAgICAgICAnaGVscC1lY2hvIChmb3JtYXQgIlByb2plY3QgJyVzJ1xubW91c2UtMTogTFNQIHNl cnZlciBjb250cm9sIG1lbnUiIG5pY2spCisgICAgICAgICAgICAgICdrZXltYXAgKGxldCAoKG1h cCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoZGVmaW5l LWtleSBtYXAgW21vZGUtbGluZSBkb3duLW1vdXNlLTFdIGVnbG90LXNlcnZlci1tZW51KQorICAg ICAgICAgICAgICAgICAgICAgICAgbWFwKSkKKyAgICAgICAgICAgLEAod2hlbiBsYXN0LWVycm9y CisgICAgICAgICAgICAgICBgKCIvIiAsKGVnbG90LS1tb2RlLWxpbmUtcHJvcHMKKyAgICAgICAg ICAgICAgICAgICAgICAgICJlcnJvciIgJ2NvbXBpbGF0aW9uLW1vZGUtbGluZS1mYWlsCisgICAg ICAgICAgICAgICAgICAgICAgICAnKChtb3VzZS0zIGVnbG90LWNsZWFyLXN0YXR1cyAgIkNsZWFy IHRoaXMgc3RhdHVzIikpCisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJBbiBlcnJv ciBvY2N1cnJlZDogJXNcbiIgKHBsaXN0LWdldCBsYXN0LWVycm9yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWVzc2FnZSkpKSkp CisgICAgICAgICAgICxAKHdoZW4gKGFuZCBkb2luZyAobm90IGRvbmUtcCkpCisgICAgICAgICAg ICAgICBgKCIvIiAsKGVnbG90LS1tb2RlLWxpbmUtcHJvcHMgZG9pbmcKKyAgICAgICAgICAgICAg ICAgICAgICAgICdjb21waWxhdGlvbi1tb2RlLWxpbmUtcnVuICcoKSkpKQorICAgICAgICAgICAs QCh3aGVuIChjbC1wbHVzcCBwZW5kaW5nKQorICAgICAgICAgICAgICAgYCgiLyIgLChlZ2xvdC0t bW9kZS1saW5lLXByb3BzCisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlZCIgcGVu ZGluZykgJ3dhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICcoKG1vdXNlLTMgZWdsb3Qt Zm9yZ2V0LXBlbmRpbmctY29udGludWF0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJGb3JnZXQgcGVuZGluZyBjb250aW51YXRpb25zIikpCisgICAgICAgICAgICAgICAgICAgICAg ICAiTnVtYmVyIG9mIG91dGdvaW5nLCBcCiBzdGlsbCB1bmFuc3dlcmVkIExTUCByZXF1ZXN0cyB0 byB0aGUgc2VydmVyXG4iKSkpKSkpKSkKIAogKGFkZC10by1saXN0ICdtb2RlLWxpbmUtbWlzYy1p bmZvCi0gICAgICAgICAgICAgYChlZ2xvdC0tbWFuYWdlZC1tb2RlICgiIFsiIGVnbG90LS1tb2Rl LWxpbmUtZm9ybWF0ICJdICIpKSkKKyAgYChlZ2xvdC0tbWFuYWdlZC1tb2RlICgiIFsiIGVnbG90 LS1tb2RlLWxpbmUtZm9ybWF0ICJdICIpKSkKIAogDAogOzs7IEZseW1ha2UgY3VzdG9taXphdGlv bgogOzs7Cis7OyBUT0RPOiB0eXBlIGhpbnQgYW5kIGRpZmZlcmVudCBzaWduYXR1cmUgaGludD8g KGFuZCBmdXR1cmUgcHJvb2YgZ2VuZXJpYyBoaW50PykKKzs7KHB1dCAnZWdsb3QtaGludCAnZmx5 bWFrZS1iaXRtYXAgbmlsKQorOzsocHV0ICdlZ2xvdC1oaW50ICdzZXZlcml0eSAod2FybmluZy1u dW1lcmljLWxldmVsIDpkZWJ1ZykpCis7OyhwdXQgJ2VnbG90LWhpbnQgJ2ZseW1ha2UtdHlwZS1u YW1lICJoaW50IikKKzs7KHB1dCAnZWdsb3QtaGludCAnZmFjZSBuaWwpCisocHV0ICdlZ2xvdC1o aW50ICdmbHltYWtlLWNhdGVnb3J5ICdmbHltYWtlLW5vdGUpCisKIChwdXQgJ2VnbG90LW5vdGUg J2ZseW1ha2UtY2F0ZWdvcnkgJ2ZseW1ha2Utbm90ZSkKIChwdXQgJ2VnbG90LXdhcm5pbmcgJ2Zs eW1ha2UtY2F0ZWdvcnkgJ2ZseW1ha2Utd2FybmluZykKIChwdXQgJ2VnbG90LWVycm9yICdmbHlt YWtlLWNhdGVnb3J5ICdmbHltYWtlLWVycm9yKQpAQCAtMTk0OSwxNCArMTk2MSwxNCBAQCBzdGls bCB1bmFuc3dlcmVkIExTUCByZXF1ZXN0cyB0byB0aGUgc2VydmVyXG4iKSkpKSkpKSkKIChkZWZh bGlhcyAnZWdsb3QtLWRpYWctZGF0YSAnZmx5bWFrZS1kaWFnbm9zdGljLWRhdGEpCiAKIChjbC1s b29wIGZvciBpIGZyb20gMQotICAgICAgICAgZm9yIHR5cGUgaW4gJyhlZ2xvdC1ub3RlIGVnbG90 LXdhcm5pbmcgZWdsb3QtZXJyb3IgKQotICAgICAgICAgZG8gKHB1dCB0eXBlICdmbHltYWtlLW92 ZXJsYXktY29udHJvbAotICAgICAgICAgICAgICAgICBgKChtb3VzZS1mYWNlIC4gaGlnaGxpZ2h0 KQotICAgICAgICAgICAgICAgICAgIChwcmlvcml0eSAuICwoKyA1MCBpKSkKLSAgICAgICAgICAg ICAgICAgICAoa2V5bWFwIC4gLChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW21vdXNlLTFdCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1tb3VzZS1jYWxsICdlZ2xv dC1jb2RlLWFjdGlvbnMpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApKSkp KQorICBmb3IgdHlwZSBpbiAnKGVnbG90LW5vdGUgZWdsb3Qtd2FybmluZyBlZ2xvdC1lcnJvciAp CisgIGRvIChwdXQgdHlwZSAnZmx5bWFrZS1vdmVybGF5LWNvbnRyb2wKKyAgICAgICBgKChtb3Vz ZS1mYWNlIC4gaGlnaGxpZ2h0KQorICAgICAgICAgIChwcmlvcml0eSAuICwoKyA1MCBpKSkKKyAg ICAgICAgICAoa2V5bWFwIC4gLChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQorICAg ICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW21vdXNlLTFdCisgICAgICAgICAg ICAgICAgICAgICAgICAgKGVnbG90LS1tb3VzZS1jYWxsICdlZ2xvdC1jb2RlLWFjdGlvbnMpKQor ICAgICAgICAgICAgICAgICAgICAgICBtYXApKSkpKQogCiAMCiA7OzsgUHJvdG9jb2wgaW1wbGVt ZW50YXRpb24gKFJlcXVlc3RzLCBub3RpZmljYXRpb25zLCBldGMpCkBAIC0xOTY1LDcgKzE5Nzcs NyBAQCBzdGlsbCB1bmFuc3dlcmVkIExTUCByZXF1ZXN0cyB0byB0aGUgc2VydmVyXG4iKSkpKSkp KSkKICAgKF9zZXJ2ZXIgbWV0aG9kICZrZXkgJmFsbG93LW90aGVyLWtleXMpCiAgICJIYW5kbGUg dW5rbm93biBub3RpZmljYXRpb24uIgogICAodW5sZXNzIChvciAoc3RyaW5nLXByZWZpeC1wICIk IiAoZm9ybWF0ICIlcyIgbWV0aG9kKSkKLSAgICAgICAgICAgICAgKG5vdCAobWVtcSAnZGlzYWxs b3ctdW5rbm93bi1tZXRob2RzIGVnbG90LXN0cmljdC1tb2RlKSkpCisgICAgICAgICAgICAobm90 IChtZW1xICdkaXNhbGxvdy11bmtub3duLW1ldGhvZHMgZWdsb3Qtc3RyaWN0LW1vZGUpKSkKICAg ICAoZWdsb3QtLXdhcm4gIlNlcnZlciBzZW50IHVua25vd24gbm90aWZpY2F0aW9uIG1ldGhvZCBg JXMnIiBtZXRob2QpKSkKIAogKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtcmVxdWVzdApAQCAt MTk3OSwyOCArMTk5MSwyOCBAQCBzdGlsbCB1bmFuc3dlcmVkIExTUCByZXF1ZXN0cyB0byB0aGUg c2VydmVyXG4iKSkpKSkpKSkKICAgIkV4ZWN1dGUgQ09NTUFORCBvbiBTRVJWRVIgd2l0aCBgOndv cmtzcGFjZS9leGVjdXRlQ29tbWFuZCcuCiBDT01NQU5EIGlzIGEgc3ltYm9sIG5hbWluZyB0aGUg Y29tbWFuZC4iCiAgIChqc29ucnBjLXJlcXVlc3Qgc2VydmVyIDp3b3Jrc3BhY2UvZXhlY3V0ZUNv bW1hbmQKLSAgICAgICAgICAgICAgICAgICBgKDpjb21tYW5kICwoZm9ybWF0ICIlcyIgY29tbWFu ZCkgOmFyZ3VtZW50cyAsYXJndW1lbnRzKSkpCisgICAgYCg6Y29tbWFuZCAsKGZvcm1hdCAiJXMi IGNvbW1hbmQpIDphcmd1bWVudHMgLGFyZ3VtZW50cykpKQogCiAoY2wtZGVmbWV0aG9kIGVnbG90 LWhhbmRsZS1ub3RpZmljYXRpb24KICAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB3aW5kb3cvc2hv d01lc3NhZ2UpKSAma2V5IHR5cGUgbWVzc2FnZSkKICAgIkhhbmRsZSBub3RpZmljYXRpb24gd2lu ZG93L3Nob3dNZXNzYWdlLiIKICAgKGVnbG90LS1tZXNzYWdlIChwcm9wZXJ0aXplICJTZXJ2ZXIg cmVwb3J0cyAodHlwZT0lcyk6ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zh Y2UgKGlmICg8PSB0eXBlIDEpICdlcnJvcikpCi0gICAgICAgICAgICAgICAgICB0eXBlIG1lc3Nh Z2UpKQorICAgICAgICAgICAgICAgICAgICAnZmFjZSAoaWYgKDw9IHR5cGUgMSkgJ2Vycm9yKSkK KyAgICB0eXBlIG1lc3NhZ2UpKQogCiAoY2wtZGVmbWV0aG9kIGVnbG90LWhhbmRsZS1yZXF1ZXN0 CiAgIChfc2VydmVyIChfbWV0aG9kIChlcWwgd2luZG93L3Nob3dNZXNzYWdlUmVxdWVzdCkpICZr ZXkgdHlwZSBtZXNzYWdlIGFjdGlvbnMpCiAgICJIYW5kbGUgc2VydmVyIHJlcXVlc3Qgd2luZG93 L3Nob3dNZXNzYWdlUmVxdWVzdC4iCiAgIChsZXQqICgoYWN0aW9ucyAoYXBwZW5kIGFjdGlvbnMg bmlsKSkgOzsgZ2gjNjI3Ci0gICAgICAgICAobGFiZWwgKGNvbXBsZXRpbmctcmVhZAotICAgICAg ICAgICAgICAgICAoY29uY2F0Ci0gICAgICAgICAgICAgICAgICAoZm9ybWF0IChwcm9wZXJ0aXpl ICJbZWdsb3RdIFNlcnZlciByZXBvcnRzICh0eXBlPSVzKTogJXMiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdmYWNlIChpZiAoPD0gdHlwZSAxKSAnZXJyb3IpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAi XG5DaG9vc2UgYW4gb3B0aW9uOiAiKQotICAgICAgICAgICAgICAgICAob3IgKG1hcGNhciAobGFt YmRhIChvYmopIChwbGlzdC1nZXQgb2JqIDp0aXRsZSkpIGFjdGlvbnMpCisgICAgICAgICAgKGxh YmVsIChjb21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAgICAoY29uY2F0CisgICAgICAg ICAgICAgICAgICAgICAoZm9ybWF0IChwcm9wZXJ0aXplICJbZWdsb3RdIFNlcnZlciByZXBvcnRz ICh0eXBlPSVzKTogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgKGlm ICg8PSB0eXBlIDEpICdlcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgbWVzc2Fn ZSkKKyAgICAgICAgICAgICAgICAgICAgICJcbkNob29zZSBhbiBvcHRpb246ICIpCisgICAgICAg ICAgICAgICAgICAgKG9yIChtYXBjYXIgKGxhbWJkYSAob2JqKSAocGxpc3QtZ2V0IG9iaiA6dGl0 bGUpKSBhY3Rpb25zKQogICAgICAgICAgICAgICAgICAgICAgJygiT0siKSkKLSAgICAgICAgICAg ICAgICAgbmlsIHQgKHBsaXN0LWdldCAoZWx0IGFjdGlvbnMgMCkgOnRpdGxlKSkpKQorICAgICAg ICAgICAgICAgICAgIG5pbCB0IChwbGlzdC1nZXQgKGVsdCBhY3Rpb25zIDApIDp0aXRsZSkpKSkK ICAgICAoaWYgbGFiZWwgYCg6dGl0bGUgLGxhYmVsKSA6bnVsbCkpKQogCiAoY2wtZGVmbWV0aG9k IGVnbG90LWhhbmRsZS1ub3RpZmljYXRpb24KQEAgLTIwMTMsODUgKzIwMjUsODUgQEAgQ09NTUFO RCBpcyBhIHN5bWJvbCBuYW1pbmcgdGhlIGNvbW1hbmQuIgogCiAoY2wtZGVmbWV0aG9kIGVnbG90 LWhhbmRsZS1ub3RpZmljYXRpb24KICAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB0ZXh0RG9jdW1l bnQvcHVibGlzaERpYWdub3N0aWNzKSkgJmtleSB1cmkgZGlhZ25vc3RpY3MKLSAgICAgICAgICAg JmFsbG93LW90aGVyLWtleXMpIDsgRklYTUU6IGRvZXNuJ3QgcmVzcGVjdCBgZWdsb3Qtc3RyaWN0 LW1vZGUnCisgICAgJmFsbG93LW90aGVyLWtleXMpIDsgRklYTUU6IGRvZXNuJ3QgcmVzcGVjdCBg ZWdsb3Qtc3RyaWN0LW1vZGUnCiAgICJIYW5kbGUgbm90aWZpY2F0aW9uIHB1Ymxpc2hEaWFnbm9z dGljcy4iCiAgIChjbC1mbGV0ICgoZWdsb3QtLWRpYWctdHlwZSAoc2V2KQogICAgICAgICAgICAg ICAoY29uZCAoKG51bGwgc2V2KSAnZWdsb3QtZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgICgo PD0gc2V2IDEpICdlZ2xvdC1lcnJvcikKLSAgICAgICAgICAgICAgICAgICAgKCg9IHNldiAyKSAg J2VnbG90LXdhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICh0ICAgICAgICAgICdlZ2xvdC1u b3RlKSkpCi0gICAgICAgICAgICAobWVzcyAoc291cmNlIGNvZGUgbWVzc2FnZSkKLSAgICAgICAg ICAgICAgKGNvbmNhdCBzb3VyY2UgKGFuZCBjb2RlIChmb3JtYXQgIiBbJXNdIiBjb2RlKSkgIjog IiBtZXNzYWdlKSkpCisgICAgICAgICAgICAgICAgKCg8PSBzZXYgMSkgJ2VnbG90LWVycm9yKQor ICAgICAgICAgICAgICAgICgoPSBzZXYgMikgICdlZ2xvdC13YXJuaW5nKQorICAgICAgICAgICAg ICAgICh0ICAgICAgICAgICdlZ2xvdC1ub3RlKSkpCisgICAgICAgICAgICAgKG1lc3MgKHNvdXJj ZSBjb2RlIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAoY29uY2F0IHNvdXJjZSAoYW5kIGNvZGUg KGZvcm1hdCAiIFslc10iIGNvZGUpKSAiOiAiIG1lc3NhZ2UpKSkKICAgICAoaWYtbGV0ICgoYnVm ZmVyIChmaW5kLWJ1ZmZlci12aXNpdGluZyAoZWdsb3QtLXVyaS10by1wYXRoIHVyaSkpKSkKLSAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCi0gICAgICAgICAgKGNsLWxvb3AKLSAg ICAgICAgICAgZm9yIGRpYWctc3BlYyBhY3Jvc3MgZGlhZ25vc3RpY3MKLSAgICAgICAgICAgY29s bGVjdCAoZWdsb3QtLWRiaW5kICgoRGlhZ25vc3RpYykgcmFuZ2UgY29kZSBtZXNzYWdlIHNldmVy aXR5IHNvdXJjZSB0YWdzKQotICAgICAgICAgICAgICAgICAgICAgICBkaWFnLXNwZWMKLSAgICAg ICAgICAgICAgICAgICAgIChzZXRxIG1lc3NhZ2UgKG1lc3Mgc291cmNlIGNvZGUgbWVzc2FnZSkp Ci0gICAgICAgICAgICAgICAgICAgICAocGNhc2UtbGV0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgKChgKCxiZWcgLiAsZW5kKSAoZWdsb3QtLXJhbmdlLXJlZ2lvbiByYW5nZSkpKQotICAgICAg ICAgICAgICAgICAgICAgICA7OyBGYWxsYmFjayB0byBgZmx5bWFrZS1kaWFnLXJlZ2lvbicgaWYg c2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgIDs7IGJvdGNoZWQgdGhlIHJhbmdlCi0gICAg ICAgICAgICAgICAgICAgICAgICh3aGVuICg9IGJlZyBlbmQpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgKGlmLWxldCogKChzdCAocGxpc3QtZ2V0IHJhbmdlIDpzdGFydCkpCisgICAgICAod2l0 aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgKGNsLWxvb3AKKyAgICAgICAgICBmb3Ig ZGlhZy1zcGVjIGFjcm9zcyBkaWFnbm9zdGljcworICAgICAgICAgIGNvbGxlY3QgKGVnbG90LS1k YmluZCAoKERpYWdub3N0aWMpIHJhbmdlIGNvZGUgbWVzc2FnZSBzZXZlcml0eSBzb3VyY2UgdGFn cykKKyAgICAgICAgICAgICAgICAgICAgZGlhZy1zcGVjCisgICAgICAgICAgICAgICAgICAgIChz ZXRxIG1lc3NhZ2UgKG1lc3Mgc291cmNlIGNvZGUgbWVzc2FnZSkpCisgICAgICAgICAgICAgICAg ICAgIChwY2FzZS1sZXQKKyAgICAgICAgICAgICAgICAgICAgICAoKGAoLGJlZyAuICxlbmQpIChl Z2xvdC0tcmFuZ2UtcmVnaW9uIHJhbmdlKSkpCisgICAgICAgICAgICAgICAgICAgICAgOzsgRmFs bGJhY2sgdG8gYGZseW1ha2UtZGlhZy1yZWdpb24nIGlmIHNlcnZlcgorICAgICAgICAgICAgICAg ICAgICAgIDs7IGJvdGNoZWQgdGhlIHJhbmdlCisgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g KD0gYmVnIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpZi1sZXQqICgoc3QgKHBsaXN0 LWdldCByYW5nZSA6c3RhcnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGlhZy1yZWdpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbHltYWtl LWRpYWctcmVnaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSAoMSsgKHBsaXN0LWdldCBzdCA6bGluZSkpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBzdCA6Y2hhcmFjdGVyKSkpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBiZWcgKGNhciBkaWFnLXJlZ2lvbikgZW5kIChjZHIg ZGlhZy1yZWdpb24pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS13aWRlbmlu ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbHltYWtlLWRpYWctcmVn aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZm ZXIpICgxKyAocGxpc3QtZ2V0IHN0IDpsaW5lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwbGlzdC1nZXQgc3QgOmNoYXJhY3RlcikpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNldHEgYmVnIChjYXIgZGlhZy1yZWdpb24pIGVuZCAoY2RyIGRpYWctcmVn aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS13aWRlbmluZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgYmVnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgxKyAocGxpc3QtZ2V0IChwbGlzdC1nZXQgcmFuZ2UgOnN0YXJ0KSA6bGluZSkp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlv bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgKHBsaXN0LWdldCAocGxpc3Qt Z2V0IHJhbmdlIDpzdGFydCkgOmxpbmUpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtZW5kLXBv c2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKyAocGxpc3QtZ2V0 IChwbGlzdC1nZXQgcmFuZ2UgOmVuZCkgOmxpbmUpKSkpKSkpCi0gICAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tbWFrZS1kaWFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlu ZS1lbmQtcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDErIChwbGlz dC1nZXQgKHBsaXN0LWdldCByYW5nZSA6ZW5kKSA6bGluZSkpKSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtLW1ha2UtZGlhZwogICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSBiZWcgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWRpYWct dHlwZSBzZXZlcml0eSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgYCgoZWdsb3Qt bHNwLWRpYWcgLiAsZGlhZy1zcGVjKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuLWxl dCAoKGZhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtbG9vcCBm b3IgdGFnIGFjcm9zcyB0YWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3aGVuIChhbGlzdC1nZXQgdGFnIGVnbG90LS10YWctZmFjZXMpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGl0KSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWxvb3AgZm9yIHRhZyBhY3Jvc3MgdGFn cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAoYWxpc3QtZ2V0 IHRhZyBlZ2xvdC0tdGFnLWZhY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29sbGVjdCBpdCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBgKChmYWNlIC4g LGZhY2VzKSkpKSkpCi0gICAgICAgICAgIGludG8gZGlhZ3MKLSAgICAgICAgICAgZmluYWxseSAo Y29uZCAoKGFuZAorICAgICAgICAgIGludG8gZGlhZ3MKKyAgICAgICAgICBmaW5hbGx5IChjb25k ICgoYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBvbmx5IGFkZCB0byBjdXJyZW50 IHJlcG9ydCBpZiBGbHltYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzdGFydHMg b24gaWRsZS10aW1lciAoZ2l0aHViIzk1OCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChu b3QgKG51bGwgZmx5bWFrZS1uby1jaGFuZ2VzLXRpbWVvdXQpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1yZXBvcnQtZm4pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tcmVwb3J0LXRvLWZseW1ha2UgZGlhZ3MpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVnbG90 LS1kaWFnbm9zdGljcyBkaWFncykpKSkpCisgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgZWdsb3QtLWRpYWdub3N0aWNzIGRpYWdzKSkpKSkKICAgICAg IChjbC1sb29wCi0gICAgICAgd2l0aCBwYXRoID0gKGV4cGFuZC1maWxlLW5hbWUgKGVnbG90LS11 cmktdG8tcGF0aCB1cmkpKQotICAgICAgIGZvciBkaWFnLXNwZWMgYWNyb3NzIGRpYWdub3N0aWNz Ci0gICAgICAgY29sbGVjdCAoZWdsb3QtLWRiaW5kICgoRGlhZ25vc3RpYykgY29kZSByYW5nZSBt ZXNzYWdlIHNldmVyaXR5IHNvdXJjZSkgZGlhZy1zcGVjCi0gICAgICAgICAgICAgICAgIChzZXRx IG1lc3NhZ2UgKG1lc3Mgc291cmNlIGNvZGUgbWVzc2FnZSkpCi0gICAgICAgICAgICAgICAgIChs ZXQqICgoc3RhcnQgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQpKQotICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUgKDErIChwbGlzdC1nZXQgc3RhcnQgOmxpbmUpKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgIChjaGFyICgxKyAocGxpc3QtZ2V0IHN0YXJ0IDpjaGFyYWN0ZXIpKSkpCi0gICAg ICAgICAgICAgICAgICAgKGVnbG90LS1tYWtlLWRpYWcKLSAgICAgICAgICAgICAgICAgICAgcGF0 aCAoY29ucyBsaW5lIGNoYXIpIG5pbCAoZWdsb3QtLWRpYWctdHlwZSBzZXZlcml0eSkgbWVzc2Fn ZSkpKQotICAgICAgIGludG8gZGlhZ3MKLSAgICAgICBmaW5hbGx5Ci0gICAgICAgKHNldHEgZmx5 bWFrZS1saXN0LW9ubHktZGlhZ25vc3RpY3MKLSAgICAgICAgICAgICAoYXNzb2MtZGVsZXRlLWFs bCBwYXRoIGZseW1ha2UtbGlzdC1vbmx5LWRpYWdub3N0aWNzICMnc3RyaW5nPSkpCi0gICAgICAg KHB1c2ggKGNvbnMgcGF0aCBkaWFncykgZmx5bWFrZS1saXN0LW9ubHktZGlhZ25vc3RpY3MpKSkp KQorICAgICAgICB3aXRoIHBhdGggPSAoZXhwYW5kLWZpbGUtbmFtZSAoZWdsb3QtLXVyaS10by1w YXRoIHVyaSkpCisgICAgICAgIGZvciBkaWFnLXNwZWMgYWNyb3NzIGRpYWdub3N0aWNzCisgICAg ICAgIGNvbGxlY3QgKGVnbG90LS1kYmluZCAoKERpYWdub3N0aWMpIGNvZGUgcmFuZ2UgbWVzc2Fn ZSBzZXZlcml0eSBzb3VyY2UpIGRpYWctc3BlYworICAgICAgICAgICAgICAgICAgKHNldHEgbWVz c2FnZSAobWVzcyBzb3VyY2UgY29kZSBtZXNzYWdlKSkKKyAgICAgICAgICAgICAgICAgIChsZXQq ICgoc3RhcnQgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobGluZSAoMSsgKHBsaXN0LWdldCBzdGFydCA6bGluZSkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2hhciAoMSsgKHBsaXN0LWdldCBzdGFydCA6Y2hhcmFjdGVyKSkpKQorICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLW1ha2UtZGlhZworICAgICAgICAgICAgICAgICAgICAg IHBhdGggKGNvbnMgbGluZSBjaGFyKSBuaWwgKGVnbG90LS1kaWFnLXR5cGUgc2V2ZXJpdHkpIG1l c3NhZ2UpKSkKKyAgICAgICAgaW50byBkaWFncworICAgICAgICBmaW5hbGx5CisgICAgICAgIChz ZXRxIGZseW1ha2UtbGlzdC1vbmx5LWRpYWdub3N0aWNzCisgICAgICAgICAgKGFzc29jLWRlbGV0 ZS1hbGwgcGF0aCBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcyAjJ3N0cmluZz0pKQorICAg ICAgICAocHVzaCAoY29ucyBwYXRoIGRpYWdzKSBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGlj cykpKSkpCiAKIChjbC1kZWZ1biBlZ2xvdC0tcmVnaXN0ZXItdW5yZWdpc3RlciAoc2VydmVyIHRo aW5ncyBob3cpCiAgICJIZWxwZXIgZm9yIGByZWdpc3RlckNhcGFiaWxpdHknLgogVEhJTkdTIGFy ZSBlaXRoZXIgcmVnaXN0cmF0aW9ucyBvciB1bnJlZ2lzdGVyYXRpb25zIChzaWMpLiIKICAgKGNs LWxvb3AKLSAgIGZvciB0aGluZyBpbiAoY2wtY29lcmNlIHRoaW5ncyAnbGlzdCkKLSAgIGRvIChl Z2xvdC0tZGJpbmQgKChSZWdpc3RyYXRpb24pIGlkIG1ldGhvZCByZWdpc3Rlck9wdGlvbnMpIHRo aW5nCi0gICAgICAgIChhcHBseSAoY2wtZWNhc2UgaG93Ci0gICAgICAgICAgICAgICAgIChyZWdp c3RlciAnZWdsb3QtcmVnaXN0ZXItY2FwYWJpbGl0eSkKLSAgICAgICAgICAgICAgICAgKHVucmVn aXN0ZXIgJ2VnbG90LXVucmVnaXN0ZXItY2FwYWJpbGl0eSkpCi0gICAgICAgICAgICAgICBzZXJ2 ZXIgKGludGVybiBtZXRob2QpIGlkIHJlZ2lzdGVyT3B0aW9ucykpKSkKKyAgICBmb3IgdGhpbmcg aW4gKGNsLWNvZXJjZSB0aGluZ3MgJ2xpc3QpCisgICAgZG8gKGVnbG90LS1kYmluZCAoKFJlZ2lz dHJhdGlvbikgaWQgbWV0aG9kIHJlZ2lzdGVyT3B0aW9ucykgdGhpbmcKKyAgICAgICAgIChhcHBs eSAoY2wtZWNhc2UgaG93CisgICAgICAgICAgICAgICAgICAocmVnaXN0ZXIgJ2VnbG90LXJlZ2lz dGVyLWNhcGFiaWxpdHkpCisgICAgICAgICAgICAgICAgICAodW5yZWdpc3RlciAnZWdsb3QtdW5y ZWdpc3Rlci1jYXBhYmlsaXR5KSkKKyAgICAgICAgICAgc2VydmVyIChpbnRlcm4gbWV0aG9kKSBp ZCByZWdpc3Rlck9wdGlvbnMpKSkpCiAKIChjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVl c3QKICAgKHNlcnZlciAoX21ldGhvZCAoZXFsIGNsaWVudC9yZWdpc3RlckNhcGFiaWxpdHkpKSAm a2V5IHJlZ2lzdHJhdGlvbnMpCkBAIC0yMTAwLDcgKzIxMTIsNyBAQCBUSElOR1MgYXJlIGVpdGhl ciByZWdpc3RyYXRpb25zIG9yIHVucmVnaXN0ZXJhdGlvbnMgKHNpYykuIgogCiAoY2wtZGVmbWV0 aG9kIGVnbG90LWhhbmRsZS1yZXF1ZXN0CiAgIChzZXJ2ZXIgKF9tZXRob2QgKGVxbCBjbGllbnQv dW5yZWdpc3RlckNhcGFiaWxpdHkpKQotICAgICAgICAgICZrZXkgdW5yZWdpc3RlcmF0aW9ucykg OzsgWFhYOiAidW5yZWdpc3RlcmF0aW9ucyIgKHNpYykKKyAgICAma2V5IHVucmVnaXN0ZXJhdGlv bnMpIDs7IFhYWDogInVucmVnaXN0ZXJhdGlvbnMiIChzaWMpCiAgICJIYW5kbGUgc2VydmVyIHJl cXVlc3QgY2xpZW50L3VucmVnaXN0ZXJDYXBhYmlsaXR5LiIKICAgKGVnbG90LS1yZWdpc3Rlci11 bnJlZ2lzdGVyIHNlcnZlciB1bnJlZ2lzdGVyYXRpb25zICd1bnJlZ2lzdGVyKSkKIApAQCAtMjEx OCwzMSArMjEzMCwzMSBAQCBUSElOR1MgYXJlIGVpdGhlciByZWdpc3RyYXRpb25zIG9yIHVucmVn aXN0ZXJhdGlvbnMgKHNpYykuIgogKGRlZnVuIGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVy ICgpCiAgICJDb21wdXRlIFRleHREb2N1bWVudElkZW50aWZpZXIgb2JqZWN0IGZvciBjdXJyZW50 IGJ1ZmZlci4iCiAgIGAoOnVyaSAsKGVnbG90LS1wYXRoLXRvLXVyaSAob3IgYnVmZmVyLWZpbGUt bmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLWZpbGUtbmFtZQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItYmFzZS1idWZmZXIpKSkp KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZ25vcmUtZXJyb3JzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItYmFzZS1idWZmZXIpKSkpKSkpCiAK IChkZWZ2YXItbG9jYWwgZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyIDApCiAKIChkZWZ1biBl Z2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllciAoKQogICAiQ29tcHV0ZSBWZXJz aW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyIG9iamVjdCBmb3IgY3VycmVudCBidWZmZXIuIgog ICAoYXBwZW5kIChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcikKLSAgICAgICAgICBgKDp2 ZXJzaW9uICxlZ2xvdC0tdmVyc2lvbmVkLWlkZW50aWZpZXIpKSkKKyAgICBgKDp2ZXJzaW9uICxl Z2xvdC0tdmVyc2lvbmVkLWlkZW50aWZpZXIpKSkKIAogKGRlZnVuIGVnbG90LS1UZXh0RG9jdW1l bnRJdGVtICgpCiAgICJDb21wdXRlIFRleHREb2N1bWVudEl0ZW0gb2JqZWN0IGZvciBjdXJyZW50 IGJ1ZmZlci4iCiAgIChhcHBlbmQKLSAgIChlZ2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50SWRl bnRpZmllcikKLSAgIChsaXN0IDpsYW5ndWFnZUlkCi0JIChlZ2xvdC0tbGFuZ3VhZ2UtaWQgKGVn bG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkKLSAgICAgICAgIDp0ZXh0Ci0gICAgICAgICAo ZWdsb3QtLXdpZGVuaW5nCi0gICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGll cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCisgICAgKGVnbG90LS1WZXJzaW9uZWRUZXh0 RG9jdW1lbnRJZGVudGlmaWVyKQorICAgIChsaXN0IDpsYW5ndWFnZUlkCisJICAgIChlZ2xvdC0t bGFuZ3VhZ2UtaWQgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkKKyAgICAgIDp0ZXh0 CisgICAgICAoZWdsb3QtLXdpZGVuaW5nCisgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKSkpKQogCiAoZGVmdW4gZWdsb3QtLVRl eHREb2N1bWVudFBvc2l0aW9uUGFyYW1zICgpCiAgICJDb21wdXRlIFRleHREb2N1bWVudFBvc2l0 aW9uUGFyYW1zLiIKICAgKGxpc3QgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHREb2N1bWVudElk ZW50aWZpZXIpCi0gICAgICAgIDpwb3NpdGlvbiAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24p KSkKKyAgICA6cG9zaXRpb24gKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uKSkpCiAKIChkZWZ2 YXItbG9jYWwgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBuaWwKICAgIklmIG5vbi1uaWwsIHZh bHVlIG9mIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBpbiBidWZmZXIuIikKQEAgLTIxNTIs MTIgKzIxNjQsMTIgQEAgVEhJTkdTIGFyZSBlaXRoZXIgcmVnaXN0cmF0aW9ucyBvciB1bnJlZ2lz dGVyYXRpb25zIChzaWMpLiIKICAgKHNldHEgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBsYXN0 LWlucHV0LWV2ZW50KQogICAobGV0ICgob3QtcHJvdmlkZXIgKGVnbG90LS1zZXJ2ZXItY2FwYWJs ZSA6ZG9jdW1lbnRPblR5cGVGb3JtYXR0aW5nUHJvdmlkZXIpKSkKICAgICAod2hlbiAoYW5kIG90 LXByb3ZpZGVyCi0gICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycyA7IGdpdGh1YiM5MDYsIHNv bWUgTFMncyBzZW5kIGVtcHR5IHN0cmluZ3MKLSAgICAgICAgICAgICAgICAgKG9yIChlcSBsYXN0 LWlucHV0LWV2ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKHNlcS1maXJzdCAocGxpc3Qt Z2V0IG90LXByb3ZpZGVyIDpmaXJzdFRyaWdnZXJDaGFyYWN0ZXIpKSkKLSAgICAgICAgICAgICAg ICAgICAgIChjbC1maW5kIGxhc3QtaW5wdXQtZXZlbnQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwbGlzdC1nZXQgb3QtcHJvdmlkZXIgOm1vcmVUcmlnZ2VyQ2hhcmFjdGVyKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAjJ3NlcS1maXJzdCkpKSkKKyAgICAgICAg ICAgIChpZ25vcmUtZXJyb3JzIDsgZ2l0aHViIzkwNiwgc29tZSBMUydzIHNlbmQgZW1wdHkgc3Ry aW5ncworICAgICAgICAgICAgICAob3IgKGVxIGxhc3QtaW5wdXQtZXZlbnQKKyAgICAgICAgICAg ICAgICAgICAgKHNlcS1maXJzdCAocGxpc3QtZ2V0IG90LXByb3ZpZGVyIDpmaXJzdFRyaWdnZXJD aGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgICAoY2wtZmluZCBsYXN0LWlucHV0LWV2ZW50Cisg ICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IG90LXByb3ZpZGVyIDptb3JlVHJpZ2dlckNoYXJh Y3RlcikKKyAgICAgICAgICAgICAgICAgIDprZXkgIydzZXEtZmlyc3QpKSkpCiAgICAgICAoZWds b3QtZm9ybWF0IChwb2ludCkgbmlsIGxhc3QtaW5wdXQtZXZlbnQpKSkpCiAKIChkZWZ2YXIgZWds b3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVh bCkKQEAgLTIxNzAsMTQgKzIxODIsMTQgQEAgVEhJTkdTIGFyZSBlaXRoZXIgcmVnaXN0cmF0aW9u cyBvciB1bnJlZ2lzdGVyYXRpb25zIChzaWMpLiIKIAogKGRlZnVuIGVnbG90LS1Db21wbGV0aW9u UGFyYW1zICgpCiAgIChhcHBlbmQKLSAgIChlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJh bXMpCi0gICBgKDpjb250ZXh0Ci0gICAgICwoaWYtbGV0ICh0cmlnZ2VyIChhbmQgKGNoYXJhY3Rl cnAgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2wtZmluZCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6Y29tcGxldGlvblByb3Zp ZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6dHJpZ2dlckNoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmtleSAobGFtYmRhIChzdHIpIChhcmVmIHN0ciAwKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ2NoYXItZXF1YWwpKSkKKyAgICAoZWdsb3Qt LVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQorICAgIGAoOmNvbnRleHQKKyAgICAgICAsKGlm LWxldCAodHJpZ2dlciAoYW5kIChjaGFyYWN0ZXJwIGVnbG90LS1sYXN0LWluc2VydGVkLWNoYXIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtZmluZCBlZ2xvdC0tbGFzdC1pbnNlcnRl ZC1jaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tc2VydmVyLWNhcGFi bGUgOmNvbXBsZXRpb25Qcm92aWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0 cmlnZ2VyQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAobGFt YmRhIChzdHIpIChhcmVmIHN0ciAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRl c3QgIydjaGFyLWVxdWFsKSkpCiAgICAgICAgICAgYCg6dHJpZ2dlcktpbmQgMiA6dHJpZ2dlckNo YXJhY3RlciAsdHJpZ2dlcikgYCg6dHJpZ2dlcktpbmQgMSkpKSkpCiAKIChkZWZ2YXItbG9jYWwg ZWdsb3QtLXJlY2VudC1jaGFuZ2VzIG5pbApAQCAtMjE5OCw2MyArMjIxMCw2MyBAQCBUSElOR1Mg YXJlIGVpdGhlciByZWdpc3RyYXRpb25zIG9yIHVucmVnaXN0ZXJhdGlvbnMgKHNpYykuIgogICAg IDs7IGRlbGV0ZWQvYWRkZWQpLiAgQWxzbyByZWNvcmQgbWFya2VycyBvZiBCRUcgYW5kIEVORAog ICAgIDs7IChnaXRodWIjMjU5KQogICAgIChwdXNoIGAoLChlZ2xvdC0tcG9zLXRvLWxzcC1wb3Np dGlvbiBiZWcpCi0gICAgICAgICAgICAsKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGVuZCkK LSAgICAgICAgICAgICgsYmVnIC4gLChjb3B5LW1hcmtlciBiZWcgbmlsKSkKLSAgICAgICAgICAg ICgsZW5kIC4gLChjb3B5LW1hcmtlciBlbmQgdCkpKQotICAgICAgICAgIGVnbG90LS1yZWNlbnQt Y2hhbmdlcykpKQorICAgICAgICAgICAgICwoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gZW5k KQorICAgICAgICAgICAgICgsYmVnIC4gLChjb3B5LW1hcmtlciBiZWcgbmlsKSkKKyAgICAgICAg ICAgICAoLGVuZCAuICwoY29weS1tYXJrZXIgZW5kIHQpKSkKKyAgICAgIGVnbG90LS1yZWNlbnQt Y2hhbmdlcykpKQogCiAoZGVmdW4gZWdsb3QtLWFmdGVyLWNoYW5nZSAoYmVnIGVuZCBwcmUtY2hh bmdlLWxlbmd0aCkKICAgIkhvb2sgb250byBgYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucycuCiBSZWNv cmRzIEJFRywgRU5EIGFuZCBQUkUtQ0hBTkdFLUxFTkdUSCBsb2NhbGx5LiIKICAgKGNsLWluY2Yg ZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyKQogICAocGNhc2UgKGFuZCAobGlzdHAgZWdsb3Qt LXJlY2VudC1jaGFuZ2VzKQotICAgICAgICAgICAgICAoY2FyIGVnbG90LS1yZWNlbnQtY2hhbmdl cykpCisgICAgICAgICAgIChjYXIgZWdsb3QtLXJlY2VudC1jaGFuZ2VzKSkKICAgICAoYCgsbHNw LWJlZyAsbHNwLWVuZAotICAgICAgICAgICAgICAgICgsYi1iZWcgLiAsYi1iZWctbWFya2VyKQot ICAgICAgICAgICAgICAgICgsYi1lbmQgLiAsYi1lbmQtbWFya2VyKSkKLSAgICAgOzsgZ2l0aHVi IzI1OSBhbmQgZ2l0aHViIzM2NzogV2l0aCBgY2FwaXRhbGl6ZS13b3JkJyBvciBzb21lc3VjaCwK LSAgICAgOzsgYGJlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zJyBhbHdheXMgcmVjb3JkcyB0aGUgd2hv bGUgd29yZCdzCi0gICAgIDs7IGBiLWJlZycgYW5kIGBiLWVuZCcuICBTaW1pbGFybHksIHdoZW4g Y29hbGVzY2luZyB0d28gbGluZXMKLSAgICAgOzsgaW50byBvbmUsIGBmaWxsLXBhcmFncmFwaCcg dGhleSBtYXJrIHRoZSBlbmQgb2YgdGhlIGZpcnN0IGxpbmUKLSAgICAgOzsgdXAgdG8gdGhlIGVu ZCBvZiB0aGUgc2Vjb25kIGxpbmUuICBJbiBib3RoIHNpdHVhdGlvbnMsIGFyZ3MKLSAgICAgOzsg cmVjZWl2ZWQgaGVyZSBjb250cmFkaWN0IHRoYXQgaW5mb3JtYXRpb246IGBiZWcnIGFuZCBgZW5k JwotICAgICA7OyB3aWxsIGRpZmZlciBieSAxIGFuZCB3aWxsIGxpa2VseSBvbmx5IGVuY29tcGFz cyB0aGUgbGV0dGVyCi0gICAgIDs7IHRoYXQgd2FzIGNhcGl0YWxpemVkIG9yLCBpbiB0aGUgc2Vu dGVuY2Utam9pbmluZyBzaXR1YXRpb24sCi0gICAgIDs7IHRoZSByZXBsYWNlbWVudCBvZiB0aGUg bmV3bGluZSB3aXRoIGEgc3BhY2UuICBUaGF0J3Mgd2Uga2VlcAotICAgICA7OyBtYXJrZXJzIF9h bmRfIHBvc2l0aW9ucyBzbyB3ZSdyZSBhYmxlIHRvIGRldGVjdCBhbmQgY29ycmVjdAotICAgICA7 OyB0aGlzLiAgV2UgaWdub3JlIGBiZWcnLCBgbGVuJyBhbmQgYHByZS1jaGFuZ2UtbGVuJyBhbmQg c2VuZAotICAgICA7OyAiZnVsbGVyIiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVnaW9uIGZyb20g dGhlIG1hcmtlcnMuICBJJ3ZlCi0gICAgIDs7IGFsc28gZXhwZXJpbWVudGVkIHdpdGggZG9pbmcg dGhpcyB1bmNvbmRpdGlvbmFsbHkgYnV0IGl0IHNlZW1zCi0gICAgIDs7IHRvIGJyZWFrIHdoZW4g bmV3bGluZXMgYXJlIGFkZGVkLgotICAgICAoaWYgKGFuZCAoPSBiLWVuZCBiLWVuZC1tYXJrZXIp ICg9IGItYmVnIGItYmVnLW1hcmtlcikKLSAgICAgICAgICAgICAgKG9yICgvPSBiZWcgYi1iZWcp ICgvPSBlbmQgYi1lbmQpKSkKLSAgICAgICAgIChzZXRjYXIgZWdsb3QtLXJlY2VudC1jaGFuZ2Vz Ci0gICAgICAgICAgICAgICAgIGAoLGxzcC1iZWcgLGxzcC1lbmQgLCgtIGItZW5kLW1hcmtlciBi LWJlZy1tYXJrZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgYi1iZWctbWFya2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi1lbmQtbWFya2VyKSkpCi0gICAg ICAgKHNldGNhciBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKLSAgICAgICAgICAgICAgIGAoLGxzcC1i ZWcgLGxzcC1lbmQgLHByZS1jaGFuZ2UtbGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICwoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGJlZyBlbmQpKSkpKQorICAgICAgICAo LGItYmVnIC4gLGItYmVnLW1hcmtlcikKKyAgICAgICAgKCxiLWVuZCAuICxiLWVuZC1tYXJrZXIp KQorICAgICAgOzsgZ2l0aHViIzI1OSBhbmQgZ2l0aHViIzM2NzogV2l0aCBgY2FwaXRhbGl6ZS13 b3JkJyBvciBzb21lc3VjaCwKKyAgICAgIDs7IGBiZWZvcmUtY2hhbmdlLWZ1bmN0aW9ucycgYWx3 YXlzIHJlY29yZHMgdGhlIHdob2xlIHdvcmQncworICAgICAgOzsgYGItYmVnJyBhbmQgYGItZW5k Jy4gIFNpbWlsYXJseSwgd2hlbiBjb2FsZXNjaW5nIHR3byBsaW5lcworICAgICAgOzsgaW50byBv bmUsIGBmaWxsLXBhcmFncmFwaCcgdGhleSBtYXJrIHRoZSBlbmQgb2YgdGhlIGZpcnN0IGxpbmUK KyAgICAgIDs7IHVwIHRvIHRoZSBlbmQgb2YgdGhlIHNlY29uZCBsaW5lLiAgSW4gYm90aCBzaXR1 YXRpb25zLCBhcmdzCisgICAgICA7OyByZWNlaXZlZCBoZXJlIGNvbnRyYWRpY3QgdGhhdCBpbmZv cm1hdGlvbjogYGJlZycgYW5kIGBlbmQnCisgICAgICA7OyB3aWxsIGRpZmZlciBieSAxIGFuZCB3 aWxsIGxpa2VseSBvbmx5IGVuY29tcGFzcyB0aGUgbGV0dGVyCisgICAgICA7OyB0aGF0IHdhcyBj YXBpdGFsaXplZCBvciwgaW4gdGhlIHNlbnRlbmNlLWpvaW5pbmcgc2l0dWF0aW9uLAorICAgICAg OzsgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBuZXdsaW5lIHdpdGggYSBzcGFjZS4gIFRoYXQncyB3 ZSBrZWVwCisgICAgICA7OyBtYXJrZXJzIF9hbmRfIHBvc2l0aW9ucyBzbyB3ZSdyZSBhYmxlIHRv IGRldGVjdCBhbmQgY29ycmVjdAorICAgICAgOzsgdGhpcy4gIFdlIGlnbm9yZSBgYmVnJywgYGxl bicgYW5kIGBwcmUtY2hhbmdlLWxlbicgYW5kIHNlbmQKKyAgICAgIDs7ICJmdWxsZXIiIGluZm9y bWF0aW9uIGFib3V0IHRoZSByZWdpb24gZnJvbSB0aGUgbWFya2Vycy4gIEkndmUKKyAgICAgIDs7 IGFsc28gZXhwZXJpbWVudGVkIHdpdGggZG9pbmcgdGhpcyB1bmNvbmRpdGlvbmFsbHkgYnV0IGl0 IHNlZW1zCisgICAgICA7OyB0byBicmVhayB3aGVuIG5ld2xpbmVzIGFyZSBhZGRlZC4KKyAgICAg IChpZiAoYW5kICg9IGItZW5kIGItZW5kLW1hcmtlcikgKD0gYi1iZWcgYi1iZWctbWFya2VyKQor ICAgICAgICAgICAgKG9yICgvPSBiZWcgYi1iZWcpICgvPSBlbmQgYi1lbmQpKSkKKyAgICAgICAg KHNldGNhciBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKKyAgICAgICAgICBgKCxsc3AtYmVnICxsc3At ZW5kICwoLSBiLWVuZC1tYXJrZXIgYi1iZWctbWFya2VyKQorICAgICAgICAgICAgICwoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGItYmVnLW1hcmtlcgorICAgICAgICAgICAgICAgIGIt ZW5kLW1hcmtlcikpKQorICAgICAgICAoc2V0Y2FyIGVnbG90LS1yZWNlbnQtY2hhbmdlcworICAg ICAgICAgIGAoLGxzcC1iZWcgLGxzcC1lbmQgLHByZS1jaGFuZ2UtbGVuZ3RoCisgICAgICAgICAg ICAgLChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpKSkpCiAgICAgKF8g KHNldGYgZWdsb3QtLXJlY2VudC1jaGFuZ2VzIDplbWFjcy1tZXNzdXApKSkKICAgKHdoZW4gZWds b3QtLWNoYW5nZS1pZGxlLXRpbWVyIChjYW5jZWwtdGltZXIgZWdsb3QtLWNoYW5nZS1pZGxlLXRp bWVyKSkKICAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIpKSkKICAgICAoc2V0cSBlZ2xvdC0t Y2hhbmdlLWlkbGUtdGltZXIKLSAgICAgICAgICAocnVuLXdpdGgtaWRsZS10aW1lcgotICAgICAg ICAgICBlZ2xvdC1zZW5kLWNoYW5nZXMtaWRsZS10aW1lCi0gICAgICAgICAgIG5pbCAobGFtYmRh ICgpIChlZ2xvdC0td2hlbi1saXZlLWJ1ZmZlciBidWYKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAod2hlbiBlZ2xvdC0tbWFuYWdlZC1tb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgZWdsb3QtLWNoYW5nZS1pZGxlLXRpbWVyIG5pbCkpKSkp KSkpCisgICAgICAocnVuLXdpdGgtaWRsZS10aW1lcgorICAgICAgICBlZ2xvdC1zZW5kLWNoYW5n ZXMtaWRsZS10aW1lCisgICAgICAgIG5pbCAobGFtYmRhICgpIChlZ2xvdC0td2hlbi1saXZlLWJ1 ZmZlciBidWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBlZ2xvdC0tbWFuYWdlZC1t b2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1l bnQvZGlkQ2hhbmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZWdsb3QtLWNo YW5nZS1pZGxlLXRpbWVyIG5pbCkpKSkpKSkpCiAKIDs7IEhBQ0shIExhdW5jaGluZyBhIGRlZmVy cmVkIHN5bmMgcmVxdWVzdCB3aXRoIG91dHN0YW5kaW5nIGNoYW5nZXMgaXMgYQogOzsgYmFkIGlk ZWEsIHNpbmNlIHRoYXQgbWlnaHQgbGVhZCB0byB0aGUgcmVxdWVzdCBuZXZlciBoYXZpbmcgYQog OzsgY2hhbmNlIHRvIHJ1biwgYmVjYXVzZSBganNvbnJwYy1jb25uZWN0aW9uLXJlYWR5LXAnLgog KGFkdmljZS1hZGQgIydqc29ucnBjLXJlcXVlc3QgOmJlZm9yZQotICAgICAgICAgICAgKGNsLWZ1 bmN0aW9uIChsYW1iZGEgKF9wcm9jIF9tZXRob2QgX3BhcmFtcyAma2V5Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQgJmFsbG93LW90aGVyLWtleXMpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIGVnbG90LS1tYW5hZ2VkLW1vZGUg ZGVmZXJyZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tc2lnbmFsLXRl eHREb2N1bWVudC9kaWRDaGFuZ2UpKSkpCi0gICAgICAgICAgICAnKChuYW1lIC4gZWdsb3QtLXNp Z25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlKSkpCisgIChjbC1mdW5jdGlvbiAobGFtYmRhIChf cHJvYyBfbWV0aG9kIF9wYXJhbXMgJmtleQorICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVy cmVkICZhbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIGVnbG90 LS1tYW5hZ2VkLW1vZGUgZGVmZXJyZWQpCisgICAgICAgICAgICAgICAgICAgKGVnbG90LS1zaWdu YWwtdGV4dERvY3VtZW50L2RpZENoYW5nZSkpKSkKKyAgJygobmFtZSAuIGVnbG90LS1zaWduYWwt dGV4dERvY3VtZW50L2RpZENoYW5nZSkpKQogCiAoZGVmdmFyLWxvY2FsIGVnbG90LXdvcmtzcGFj ZS1jb25maWd1cmF0aW9uICgpCiAgICJDb25maWd1cmUgTFNQIHNlcnZlcnMgc3BlY2lmaWNhbGx5 IGZvciBhIGdpdmVuIHByb2plY3QuCkBAIC0yMjkxLDggKzIzMDMsOCBAQCBmb3JtYXQgZGVzY3Jp YmVkIGFib3ZlLiIpCiAoZGVmdW4gZWdsb3Qtc2hvdy13b3Jrc3BhY2UtY29uZmlndXJhdGlvbiAo Jm9wdGlvbmFsIHNlcnZlcikKICAgIkR1bXAgYGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9u JyBhcyBKU09OIGZvciBkZWJ1Z2dpbmcuIgogICAoaW50ZXJhY3RpdmUgKGxpc3QgKGFuZCAoZWds b3QtY3VycmVudC1zZXJ2ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tcmVh ZC1zZXJ2ZXIgIlNlcnZlciBjb25maWd1cmF0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKSkpCisgICAgICAg ICAgICAgICAgICAgICAgIChlZ2xvdC0tcmVhZC1zZXJ2ZXIgIlNlcnZlciBjb25maWd1cmF0aW9u IgorICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKSkpCiAg IChsZXQgKChjb25mIChlZ2xvdC0td29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVy KSkpCiAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRUdMT1Qg d29ya3NwYWNlIGNvbmZpZ3VyYXRpb24qIikKICAgICAgIChlcmFzZS1idWZmZXIpCkBAIC0yMzA1 LDgzICsyMzE3LDgzIEBAIGZvcm1hdCBkZXNjcmliZWQgYWJvdmUuIikKIAogKGRlZnVuIGVnbG90 LS13b3Jrc3BhY2UtY29uZmlndXJhdGlvbiAoc2VydmVyKQogICAoaWYgKGZ1bmN0aW9ucCBlZ2xv dC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbikKLSAgICAgIChmdW5jYWxsIGVnbG90LXdvcmtzcGFj ZS1jb25maWd1cmF0aW9uIHNlcnZlcikKKyAgICAoZnVuY2FsbCBlZ2xvdC13b3Jrc3BhY2UtY29u ZmlndXJhdGlvbiBzZXJ2ZXIpCiAgICAgZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24pKQog CiAoZGVmdW4gZWdsb3QtLXdvcmtzcGFjZS1jb25maWd1cmF0aW9uLXBsaXN0IChzZXJ2ZXIpCiAg ICJSZXR1cm5zIGBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbicgc3VpdGFibGUgZm9yIHNl cmlhbGl6YXRpb24uIgogICAobGV0ICgodmFsIChlZ2xvdC0td29ya3NwYWNlLWNvbmZpZ3VyYXRp b24gc2VydmVyKSkpCiAgICAgKG9yIChhbmQgKGNvbnNwIChjYXIgdmFsKSkKLSAgICAgICAgICAg ICAoY2wtbG9vcCBmb3IgKHNlY3Rpb24gLiB2KSBpbiB2YWwKLSAgICAgICAgICAgICAgICAgICAg ICBjb2xsZWN0IChpZiAoa2V5d29yZHAgc2VjdGlvbikgc2VjdGlvbgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaW50ZXJuIChmb3JtYXQgIjolcyIgc2VjdGlvbikpKQotICAgICAg ICAgICAgICAgICAgICAgIGNvbGxlY3QgdikpCi0gICAgICAgIHZhbCkpKQorICAgICAgICAgIChj bC1sb29wIGZvciAoc2VjdGlvbiAuIHYpIGluIHZhbAorICAgICAgICAgICAgY29sbGVjdCAoaWYg KGtleXdvcmRwIHNlY3Rpb24pIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJu IChmb3JtYXQgIjolcyIgc2VjdGlvbikpKQorICAgICAgICAgICAgY29sbGVjdCB2KSkKKyAgICAg IHZhbCkpKQogCiAoZGVmdW4gZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3VyYXRpb24gKHNl cnZlcikKICAgIlNlbmQgYSBgOndvcmtzcGFjZS9kaWRDaGFuZ2VDb25maWd1cmF0aW9uJyBzaWdu YWwgdG8gU0VSVkVSLgogV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwgdXNlIHRoZSBjdXJyZW50 bHkgYWN0aXZlIHNlcnZlciIKICAgKGludGVyYWN0aXZlIChsaXN0IChlZ2xvdC0tY3VycmVudC1z ZXJ2ZXItb3ItbG9zZSkpKQogICAoanNvbnJwYy1ub3RpZnkKLSAgIHNlcnZlciA6d29ya3NwYWNl L2RpZENoYW5nZUNvbmZpZ3VyYXRpb24KLSAgIChsaXN0Ci0gICAgOnNldHRpbmdzCi0gICAgKG9y IChlZ2xvdC0td29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVyKQorICAgIHNlcnZl ciA6d29ya3NwYWNlL2RpZENoYW5nZUNvbmZpZ3VyYXRpb24KKyAgICAobGlzdAorICAgICAgOnNl dHRpbmdzCisgICAgICAob3IgKGVnbG90LS13b3Jrc3BhY2UtY29uZmlndXJhdGlvbi1wbGlzdCBz ZXJ2ZXIpCiAgICAgICAgIGVnbG90LS17fSkpKSkKIAogKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5k bGUtcmVxdWVzdAogICAoc2VydmVyIChfbWV0aG9kIChlcWwgd29ya3NwYWNlL2NvbmZpZ3VyYXRp b24pKSAma2V5IGl0ZW1zKQogICAiSGFuZGxlIHNlcnZlciByZXF1ZXN0IHdvcmtzcGFjZS9jb25m aWd1cmF0aW9uLiIKICAgKGFwcGx5ICMndmVjdG9yCi0gICAgICAgICAobWFwY2FyCi0gICAgICAg ICAgKGVnbG90LS1sYW1iZGEgKChDb25maWd1cmF0aW9uSXRlbSkgc2NvcGVVcmkgc2VjdGlvbikK LSAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAgICAgICAgIChsZXQqICgodXJp LXBhdGggKGVnbG90LS11cmktdG8tcGF0aCBzY29wZVVyaSkpCi0gICAgICAgICAgICAgICAgICAg ICAoZGVmYXVsdC1kaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKG5v dCAoc3RyaW5nLWVtcHR5LXAgdXJpLXBhdGgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZmlsZS1kaXJlY3RvcnktcCB1cmktcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSB1cmktcGF0aCkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAocHJvamVjdC1yb290IChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpKQotICAgICAg ICAgICAgICAgIChzZXRxLWxvY2FsIG1ham9yLW1vZGUgKGNhciAoZWdsb3QtLW1ham9yLW1vZGVz IHNlcnZlcikpKQotICAgICAgICAgICAgICAgIChoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9u LWZpbGUtYnVmZmVyKQotICAgICAgICAgICAgICAgIChjbC1sb29wIGZvciAod3NlY3Rpb24gbykK LSAgICAgICAgICAgICAgICAgICAgICAgICBvbiAoZWdsb3QtLXdvcmtzcGFjZS1jb25maWd1cmF0 aW9uLXBsaXN0IHNlcnZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICBieSAjJ2NkZHIKLSAg ICAgICAgICAgICAgICAgICAgICAgICB3aGVuIChzdHJpbmc9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChrZXl3b3JkcCB3c2VjdGlvbikKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN1YnN0cmluZyAoc3ltYm9sLW5hbWUgd3NlY3Rpb24pIDEpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3c2VjdGlvbikKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBv KSkpKQotICAgICAgICAgIGl0ZW1zKSkpCisgICAgKG1hcGNhcgorICAgICAgKGVnbG90LS1sYW1i ZGEgKChDb25maWd1cmF0aW9uSXRlbSkgc2NvcGVVcmkgc2VjdGlvbikKKyAgICAgICAgKHdpdGgt dGVtcC1idWZmZXIKKyAgICAgICAgICAobGV0KiAoKHVyaS1wYXRoIChlZ2xvdC0tdXJpLXRvLXBh dGggc2NvcGVVcmkpKQorICAgICAgICAgICAgICAgICAgKGRlZmF1bHQtZGlyZWN0b3J5CisgICAg ICAgICAgICAgICAgICAgIChpZiAoYW5kIChub3QgKHN0cmluZy1lbXB0eS1wIHVyaS1wYXRoKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtZGlyZWN0b3J5LXAgdXJpLXBhdGgpKQor ICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IHVyaS1wYXRoKQor ICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LXJvb3QgKGVnbG90LS1wcm9qZWN0IHNlcnZl cikpKSkpCisgICAgICAgICAgICAoc2V0cS1sb2NhbCBtYWpvci1tb2RlIChjYXIgKGVnbG90LS1t YWpvci1tb2RlcyBzZXJ2ZXIpKSkKKyAgICAgICAgICAgIChoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMtbm9uLWZpbGUtYnVmZmVyKQorICAgICAgICAgICAgKGNsLWxvb3AgZm9yICh3c2VjdGlvbiBv KQorICAgICAgICAgICAgICBvbiAoZWdsb3QtLXdvcmtzcGFjZS1jb25maWd1cmF0aW9uLXBsaXN0 IHNlcnZlcikKKyAgICAgICAgICAgICAgYnkgIydjZGRyCisgICAgICAgICAgICAgIHdoZW4gKHN0 cmluZz0KKyAgICAgICAgICAgICAgICAgICAgIChpZiAoa2V5d29yZHAgd3NlY3Rpb24pCisgICAg ICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgKHN5bWJvbC1uYW1lIHdzZWN0aW9uKSAxKQor ICAgICAgICAgICAgICAgICAgICAgICB3c2VjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgIHNl Y3Rpb24pCisgICAgICAgICAgICAgIHJldHVybiBvKSkpKQorICAgICAgaXRlbXMpKSkKIAogKGRl ZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENoYW5nZSAoKQogICAiU2VuZCB0ZXh0 RG9jdW1lbnQvZGlkQ2hhbmdlIHRvIHNlcnZlci4iCiAgICh3aGVuIGVnbG90LS1yZWNlbnQtY2hh bmdlcwogICAgIChsZXQqICgoc2VydmVyIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkp Ci0gICAgICAgICAgIChzeW5jLWNhcGFiaWxpdHkgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6dGV4 dERvY3VtZW50U3luYykpCi0gICAgICAgICAgIChzeW5jLWtpbmQgKGlmIChudW1iZXJwIHN5bmMt Y2FwYWJpbGl0eSkgc3luYy1jYXBhYmlsaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAocGxp c3QtZ2V0IHN5bmMtY2FwYWJpbGl0eSA6Y2hhbmdlKSkpCi0gICAgICAgICAgIChmdWxsLXN5bmMt cCAob3IgKGVxIHN5bmMta2luZCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSA6 ZW1hY3MtbWVzc3VwIGVnbG90LS1yZWNlbnQtY2hhbmdlcykpKSkKKyAgICAgICAgICAgIChzeW5j LWNhcGFiaWxpdHkgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6dGV4dERvY3VtZW50U3luYykpCisg ICAgICAgICAgICAoc3luYy1raW5kIChpZiAobnVtYmVycCBzeW5jLWNhcGFiaWxpdHkpIHN5bmMt Y2FwYWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgc3luYy1jYXBh YmlsaXR5IDpjaGFuZ2UpKSkKKyAgICAgICAgICAgIChmdWxsLXN5bmMtcCAob3IgKGVxIHN5bmMt a2luZCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIDplbWFjcy1tZXNzdXAgZWds b3QtLXJlY2VudC1jaGFuZ2VzKSkpKQogICAgICAgKGpzb25ycGMtbm90aWZ5Ci0gICAgICAgc2Vy dmVyIDp0ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlCi0gICAgICAgKGxpc3QKLSAgICAgICAgOnRleHRE b2N1bWVudCAoZWdsb3QtLVZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIpCi0gICAgICAg IDpjb250ZW50Q2hhbmdlcwotICAgICAgICAoaWYgZnVsbC1zeW5jLXAKKyAgICAgICAgc2VydmVy IDp0ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlCisgICAgICAgIChsaXN0CisgICAgICAgICAgOnRleHRE b2N1bWVudCAoZWdsb3QtLVZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIpCisgICAgICAg ICAgOmNvbnRlbnRDaGFuZ2VzCisgICAgICAgICAgKGlmIGZ1bGwtc3luYy1wCiAgICAgICAgICAg ICAodmVjdG9yIGAoOnRleHQgLChlZ2xvdC0td2lkZW5pbmcKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBvaW50LW1pbikKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50LW1heCkpKSkpCi0gICAgICAgICAgKGNsLWxvb3AgZm9yIChiZWcgZW5kIGxlbiB0 ZXh0KSBpbiAocmV2ZXJzZSBlZ2xvdC0tcmVjZW50LWNoYW5nZXMpCi0gICAgICAgICAgICAgICAg ICAgOzsgZ2l0aHViIzI1OTogYGNhcGl0YWxpemUtd29yZCcgYW5kIGNvbW1hbmRzIGJhc2VkCi0g ICAgICAgICAgICAgICAgICAgOzsgb24gYGNhc2lmeV9yZWdpb24nIHdpbGwgY2F1c2UgbXVsdGlw bGUgZHVwbGljYXRlCi0gICAgICAgICAgICAgICAgICAgOzsgZW1wdHkgZW50cmllcyBpbiBgZWds b3QtLWJlZm9yZS1jaGFuZ2UnIGNhbGxzCi0gICAgICAgICAgICAgICAgICAgOzsgd2l0aG91dCBh biBgZWdsb3QtLWFmdGVyLWNoYW5nZScgcmVjaXByb2NhbC4KLSAgICAgICAgICAgICAgICAgICA7 OyBXZWVkIHRoZW0gb3V0IGhlcmUuCi0gICAgICAgICAgICAgICAgICAgd2hlbiAobnVtYmVycCBs ZW4pCi0gICAgICAgICAgICAgICAgICAgdmNvbmNhdCBgWywobGlzdCA6cmFuZ2UgYCg6c3RhcnQg LGJlZyA6ZW5kICxlbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cmFu Z2VMZW5ndGggbGVuIDp0ZXh0IHRleHQpXSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQtbWF4KSkpKSkKKyAgICAgICAgICAgIChj bC1sb29wIGZvciAoYmVnIGVuZCBsZW4gdGV4dCkgaW4gKHJldmVyc2UgZWdsb3QtLXJlY2VudC1j aGFuZ2VzKQorICAgICAgICAgICAgICA7OyBnaXRodWIjMjU5OiBgY2FwaXRhbGl6ZS13b3JkJyBh bmQgY29tbWFuZHMgYmFzZWQKKyAgICAgICAgICAgICAgOzsgb24gYGNhc2lmeV9yZWdpb24nIHdp bGwgY2F1c2UgbXVsdGlwbGUgZHVwbGljYXRlCisgICAgICAgICAgICAgIDs7IGVtcHR5IGVudHJp ZXMgaW4gYGVnbG90LS1iZWZvcmUtY2hhbmdlJyBjYWxscworICAgICAgICAgICAgICA7OyB3aXRo b3V0IGFuIGBlZ2xvdC0tYWZ0ZXItY2hhbmdlJyByZWNpcHJvY2FsLgorICAgICAgICAgICAgICA7 OyBXZWVkIHRoZW0gb3V0IGhlcmUuCisgICAgICAgICAgICAgIHdoZW4gKG51bWJlcnAgbGVuKQor ICAgICAgICAgICAgICB2Y29uY2F0IGBbLChsaXN0IDpyYW5nZSBgKDpzdGFydCAsYmVnIDplbmQg LGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyYW5nZUxlbmd0aCBsZW4gOnRleHQg dGV4dCldKSkpKQogICAgICAgKHNldHEgZWdsb3QtLXJlY2VudC1jaGFuZ2VzIG5pbCkKICAgICAg IChzZXRmIChlZ2xvdC0tc3Bpbm5lciBzZXJ2ZXIpIChsaXN0IG5pbCA6dGV4dERvY3VtZW50L2Rp ZENoYW5nZSB0KSkKICAgICAgIChqc29ucnBjLS1jYWxsLWRlZmVycmVkIHNlcnZlcikpKSkKQEAg LTIzOTAsMzkgKzI0MDIsMTI5IEBAIFdoZW4gY2FsbGVkIGludGVyYWN0aXZlbHksIHVzZSB0aGUg Y3VycmVudGx5IGFjdGl2ZSBzZXJ2ZXIiCiAgICJTZW5kIHRleHREb2N1bWVudC9kaWRPcGVuIHRv IHNlcnZlci4iCiAgIChzZXRxIGVnbG90LS1yZWNlbnQtY2hhbmdlcyBuaWwgZWdsb3QtLXZlcnNp b25lZC1pZGVudGlmaWVyIDApCiAgIChqc29ucnBjLW5vdGlmeQotICAgKGVnbG90LS1jdXJyZW50 LXNlcnZlci1vci1sb3NlKQotICAgOnRleHREb2N1bWVudC9kaWRPcGVuIGAoOnRleHREb2N1bWVu dCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJdGVtKSkpKQorICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2 ZXItb3ItbG9zZSkKKyAgICA6dGV4dERvY3VtZW50L2RpZE9wZW4gYCg6dGV4dERvY3VtZW50ICwo ZWdsb3QtLVRleHREb2N1bWVudEl0ZW0pKSkpCiAKIChkZWZ1biBlZ2xvdC0tc2lnbmFsLXRleHRE b2N1bWVudC9kaWRDbG9zZSAoKQogICAiU2VuZCB0ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgdG8gc2Vy dmVyLiIKICAgKHdpdGgtZGVtb3RlZC1lcnJvcnMKLSAgICAgICJbZWdsb3RdIGVycm9yIHNlbmRp bmcgdGV4dERvY3VtZW50L2RpZENsb3NlOiAlcyIKKyAgICAiW2VnbG90XSBlcnJvciBzZW5kaW5n IHRleHREb2N1bWVudC9kaWRDbG9zZTogJXMiCiAgICAgKGpzb25ycGMtbm90aWZ5Ci0gICAgIChl Z2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKLSAgICAgOnRleHREb2N1bWVudC9kaWRDbG9z ZSBgKDp0ZXh0RG9jdW1lbnQgLChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcikpKSkpCisg ICAgICAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCisgICAgICA6dGV4dERvY3VtZW50 L2RpZENsb3NlIGAoOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVy KSkpKSkKIAogKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L3dpbGxTYXZlICgpCiAg ICJTZW5kIHRleHREb2N1bWVudC93aWxsU2F2ZSB0byBzZXJ2ZXIuIgogICAobGV0ICgoc2VydmVy IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkpCi0gICAgICAgIChwYXJhbXMgYCg6cmVh c29uIDEgOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKSkpKQor ICAgICAgICAgKHBhcmFtcyBgKDpyZWFzb24gMSA6dGV4dERvY3VtZW50ICwoZWdsb3QtLVRleHRE b2N1bWVudElkZW50aWZpZXIpKSkpCiAgICAgKHdoZW4gKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6 dGV4dERvY3VtZW50U3luYyA6d2lsbFNhdmUpCiAgICAgICAoanNvbnJwYy1ub3RpZnkgc2VydmVy IDp0ZXh0RG9jdW1lbnQvd2lsbFNhdmUgcGFyYW1zKSkKICAgICAod2hlbiAoZWdsb3QtLXNlcnZl ci1jYXBhYmxlIDp0ZXh0RG9jdW1lbnRTeW5jIDp3aWxsU2F2ZVdhaXRVbnRpbCkKICAgICAgIChp Z25vcmUtZXJyb3JzCiAgICAgICAgIChlZ2xvdC0tYXBwbHktdGV4dC1lZGl0cwotICAgICAgICAg KGpzb25ycGMtcmVxdWVzdCBzZXJ2ZXIgOnRleHREb2N1bWVudC93aWxsU2F2ZVdhaXRVbnRpbCBw YXJhbXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOnRpbWVvdXQgMC41KSkpKSkpCisgICAg ICAgICAgKGpzb25ycGMtcmVxdWVzdCBzZXJ2ZXIgOnRleHREb2N1bWVudC93aWxsU2F2ZVdhaXRV bnRpbCBwYXJhbXMKKyAgICAgICAgICAgIDp0aW1lb3V0IDAuNSkpKSkpKQogCiAoZGVmdW4gZWds b3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkU2F2ZSAoKQogICAiU2VuZCB0ZXh0RG9jdW1lbnQv ZGlkU2F2ZSB0byBzZXJ2ZXIuIgogICAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hh bmdlKQogICAoanNvbnJwYy1ub3RpZnkKLSAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSkKLSAgIDp0ZXh0RG9jdW1lbnQvZGlkU2F2ZQotICAgKGxpc3QKLSAgICA7OyBUT0RPOiBIYW5k bGUgVGV4dERvY3VtZW50U2F2ZVJlZ2lzdHJhdGlvbk9wdGlvbnMgdG8gY29udHJvbCB0aGlzLgot ICAgIDp0ZXh0IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBvaW50LW1pbikgKHBv aW50LW1heCkpCi0gICAgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHREb2N1bWVudElkZW50aWZp ZXIpKSkpCisgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQorICAgIDp0ZXh0RG9j dW1lbnQvZGlkU2F2ZQorICAgIChsaXN0CisgICAgICA7OyBUT0RPOiBIYW5kbGUgVGV4dERvY3Vt ZW50U2F2ZVJlZ2lzdHJhdGlvbk9wdGlvbnMgdG8gY29udHJvbCB0aGlzLgorICAgICAgOnRleHQg KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkK KyAgICAgIDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKSkpKQor CisoZGVmdW4gZWdsb3QtLWlubGF5LWhpbnQtaGFuZGxlciAoYnVmZmVyIGhpbnRzIHJlcG9ydC1m bikKKyAgKHByaW50IHJlcG9ydC1mbikKKyAgOzsgTWFrZSBvdmVybGF5cyBmb3IgdGhlbS4KKyAg KGxldCAoZGlhZ3MgbmlsKQorICAgIChzZXEtZG9zZXEgKHZhbHVlIGhpbnRzKQorICAgICAgKGNs LWxvb3AgZm9yIHZhbCBiZWluZyB0aGUgZWxlbWVudHMgb2YKKyAgICAgICAgKGlmIChzdHJpbmdw IChwbGlzdC1nZXQgdmFsdWUgOmxhYmVsKSkKKyAgICAgICAgICAobGlzdCAocGxpc3QtZ2V0IHZh bHVlIDpsYWJlbCkpCisgICAgICAgICAgKHBsaXN0LWdldCB2YWx1ZSA6bGFiZWwpKQorICAgICAg ICBkbworCSAgICAgIChlZ2xvdC0td2lkZW5pbmcKKwkgICAgICAgIChsZXQgKAorICAgICAgICAg ICAgICAgICAobGluZSAocGxpc3QtZ2V0IChwbGlzdC1nZXQgdmFsdWUgOnBvc2l0aW9uKSA6bGlu ZSkpCisgICAgICAgICAgICAgICAgIChjb2wgKHBsaXN0LWdldCAocGxpc3QtZ2V0IHZhbHVlIDpw b3NpdGlvbikgOmNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgIChzb3VyY2UgKGlmIChzdHJp bmdwIChwbGlzdC1nZXQgdmFsdWUgOmxhYmVsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgKHBsaXN0LWdldCAocGxpc3QtZ2V0IHZhbHVlIDpkYXRhKSA6dGV4dF9kb2N1 bWVudCkgOnVyaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgKHBsaXN0 LWdldCAocGxpc3QtZ2V0IChjYXIgdmFsdWUpIDpsYWJlbCkgOmxvY2F0aW9uKSA6dXJpKSkpCisg ICAgICAgICAgICAgICAgICh0ZXh0CisgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUKKyAg ICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g KHBsaXN0LWdldCB2YWx1ZSA6cGFkZGluZ0xlZnQpICIgIikKKyAgICAgICAgICAgICAgICAgICAg ICAgKGlmIChzdHJpbmdwIHZhbCkgdmFsIChwbGlzdC1nZXQgdmFsIDp2YWx1ZSkpCisgICAgICAg ICAgICAgICAgICAgICAgICh3aGVuIChwbGlzdC1nZXQgdmFsdWUgOnBhZGRpbmdSaWdodCkgIiAi KSkKKyAgICAgICAgICAgICAgICAgICAgICdmYWNlICdlZ2xvdC1pbmxheS1oaW50KQorICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKHByaW50ICJz b3VyY2UiKQorICAgICAgICAgICAgKHByaW50IHNvdXJjZSkKKyAgICAgICAgICAgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmludCAo cGxpc3QtZ2V0IHZhbHVlIDpwb3NpdGlvbikpCisgICAgICAgICAgICAocHJpbnQgKGVnbG90LS1s c3AtcG9zaXRpb24tdG8tcG9pbnQgKHBsaXN0LWdldCB2YWx1ZSA6cG9zaXRpb24pKSkKKyAgICAg ICAgICAgIChwcmludCAoZWdsb3QtLXVyaS10by1wYXRoIHNvdXJjZSkpCisgICAgICAgICAgICAg IChwdXNoIChlZ2xvdC0tbWFrZS1kaWFnCisgICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZC1m aWxlLW5hbWUgKGVnbG90LS11cmktdG8tcGF0aCBzb3VyY2UpKQorICAgICAgICAgICAgICAgICAg ICA7OyBGSVhNRTogd3JvbmcgY29vcmRpbmF0ZXM/CisgICAgICAgICAgICAgICAgICAgIDs7IFRP RE86IGNoZWNrIGRpYWcgY29ycmVjdGx5IHVwZGF0ZXMKKyAgICAgICAgICAgICAgICAgICAgKGNv bnMgKDErIGxpbmUpICgxKyBjb2wpKQorICAgICAgICAgICAgICAgICAgICA7OyhlZ2xvdC0tbHNw LXBvc2l0aW9uLXRvLXBvaW50IChwbGlzdC1nZXQgdmFsdWUgOnBvc2l0aW9uKSkKKyAgICAgICAg ICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgICAgICdlZ2xvdC1pbmxheS1oaW50Cisg ICAgICAgICAgICAgICAgICAgIHRleHQKKyAgICAgICAgICAgICAgICAgICAgbmlsCisgICAgICAg ICAgICAgICAgICAgIGAoKGJlZm9yZS1zdHJpbmcgLiAsdGV4dCkKKyAgICAgICAgICAgICAgICAg ICAgICAgKSkKKyAgICAgICAgICAgICAgZGlhZ3MpCisgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAgICAoZnVuY2FsbCByZXBv cnQtZm4gZGlhZ3MpCisgICAgKQorICApCisKKyhkZWZ1biBlZ2xvdC1nZXQtaW5sYXktaGludHMg KHJlcG9ydC1mbiBidWZmZXIpCisgIDs7IChsZXQgKChsZW5zLXRhYmxlIChtYWtlLWhhc2gtdGFi bGUpKSkKKwk7OyAgICAgICA7OyBHZXQgdGhlIGlubGF5IGhpbnQgb2JqZWN0cy4KKwk7OyAgICAg ICAobWFwYyAobGFtYmRhIChpbmxheUhpbnQpCisJOzsgCSAgICAgICAgICAgICh3aGVuIChhbmQg KGVnbG90LS1zZXJ2ZXItY2FwYWJsZQorCTs7IAkJICAgICAgICAgICAgICAgICAgICAgICA6aW5s YXlIaW50UHJvdmlkZXIgOnJlc29sdmVQcm92aWRlcikKKwk7OyAJCSAgICAgICAgICAgICAgICAg IChub3QgKHBsaXN0LW1lbWJlciBpbmxheUhpbnQgOmNvbW1hbmQpKSkKKwk7OyAJICAgICAgICAg ICAgICAoc2V0cSBpbmxheUhpbnQKKwk7OyAJCSAgICAgICAgICAgICAgKGpzb25ycGMtcmVxdWVz dCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCisJOzsgCQkJCSAgICAgICAgICAgIDpp bmxheUhpbnQvcmVzb2x2ZSBpbmxheUhpbnQpKSkKKwk7OyAJICAgICAgICAgICAgKGxldCAoKGxp bmUgKHRocmVhZC1maXJzdCBpbmxheUhpbnQKKwk7OyAJCQkJICAgICAgICAgICAgICAgICAgICAo cGxpc3QtZ2V0IDpwb3NpdGlvbikKKwk7OyAJCQkJICAgICAgICAgICAgICAgICAgICAocGxpc3Qt Z2V0IDpsaW5lKSkpKQorCTs7IAkgICAgICAgICAgICAgIChwdXRoYXNoIGxpbmUKKwk7OyAJCSAg ICAgICAgICAgICAgKGFwcGVuZCAoZ2V0aGFzaCBsaW5lIGxlbnMtdGFibGUpIChsaXN0IGlubGF5 SGludCkpCisJOzsgCQkgICAgICAgICAgICAgIGxlbnMtdGFibGUpKSkKKwk7OyAJICAgICAgKGpz b25ycGMtcmVxdWVzdAorCTs7IAkgICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSkKKwk7OyAJICAgICAgICA6dGV4dERvY3VtZW50L2lubGF5SGludAorCTs7IAkgICAgICAgIChs aXN0IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKSA6cmFuZ2Ug KGxpc3QgOnN0YXJ0IChsaXN0IDpsaW5lIDAgOmNoYXJhY3RlciAwKSA6ZW5kIChsaXN0IDpsaW5l IChjb3VudC1saW5lcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkgOmNoYXJhY3RlciAwKSkpCisJ OzsgCSAgICAgICAgOmRlZmVycmVkIDp0ZXh0RG9jdW1lbnQvaW5sYXlIaW50KSkKKyAgOzsgICBs ZW5zLXRhYmxlCisgIDs7ICAgKQorICAocHJpbnQgInRvdG8iKQorKHByaW50IChlZ2xvdC0tVGV4 dERvY3VtZW50SWRlbnRpZmllcikpCisJKGpzb25ycGMtYXN5bmMtcmVxdWVzdAorCQkoZWdsb3Qt LWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCisJCTp0ZXh0RG9jdW1lbnQvaW5sYXlIaW50CisJCShs aXN0CisgICAgICA6dGV4dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcikK KyAgICAgIDpyYW5nZSAobGlzdCA6c3RhcnQgKGxpc3QgOmxpbmUgMCA6Y2hhcmFjdGVyIDApIDpl bmQgKGxpc3QgOmxpbmUgKGNvdW50LWxpbmVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSA6Y2hh cmFjdGVyIDApKSkKKwkJOmRlZmVycmVkIHQKKyAgICA6c3VjY2Vzcy1mbiAobGFtYmRhIChoaW50 cykgKGVnbG90LS1pbmxheS1oaW50LWhhbmRsZXIgYnVmZmVyIGhpbnRzIHJlcG9ydC1mbikpCisg ICAgKQorICApCiAKIChkZWZ1biBlZ2xvdC1mbHltYWtlLWJhY2tlbmQgKHJlcG9ydC1mbiAmcmVz dCBfbW9yZSkKICAgIkEgRmx5bWFrZSBiYWNrZW5kIGZvciBFZ2xvdC4KQEAgLTI0MzEsMjIgKzI1 MzMsNzYgQEAgcHVibGlzaGVzIGRpYWdub3N0aWNzLiAgQmV0d2VlbiBjYWxscyB0byB0aGlzIGZ1 bmN0aW9uLCBSRVBPUlQtRk4KIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgKHJlc3BlY3Rp bmcgdGhlIHByb3RvY29sIG9mCiBgZmx5bWFrZS1iYWNrZW5kLWZ1bmN0aW9ucycpLiIKICAgKGNv bmQgKGVnbG90LS1tYW5hZ2VkLW1vZGUKLSAgICAgICAgIChzZXRxIGVnbG90LS1jdXJyZW50LWZs eW1ha2UtcmVwb3J0LWZuIHJlcG9ydC1mbikKLSAgICAgICAgIChlZ2xvdC0tcmVwb3J0LXRvLWZs eW1ha2UgZWdsb3QtLWRpYWdub3N0aWNzKSkKLSAgICAgICAgKHQKLSAgICAgICAgIChmdW5jYWxs IHJlcG9ydC1mbiBuaWwpKSkpCisgICAgICAgICAgKHNldHEgZWdsb3QtLWN1cnJlbnQtZmx5bWFr ZS1yZXBvcnQtZm4gcmVwb3J0LWZuKQorICAgICAgICAgIChwcmludCAibW9yZSIpCisgICAgICAg ICAgKHByaW50IF9tb3JlKQorICAgICAgICAgIChwcmludCAiYnVmZmVyIikKKyAgICAgICAgICAo cHJpbnQgKGN1cnJlbnQtYnVmZmVyKSkKKworICAgICAgICAgICh3aGVuIChlZ2xvdC0tc2VydmVy LWNhcGFibGUgOmlubGF5SGludFByb3ZpZGVyKQorICAgICAgICAgICAgKHByaW50IGVnbG90LS1j dXJyZW50LWZseW1ha2UtcmVwb3J0LWZuKQorICAgICAgICAgICAgKGVnbG90LWdldC1pbmxheS1o aW50cyBlZ2xvdC0tY3VycmVudC1mbHltYWtlLXJlcG9ydC1mbiAoY3VycmVudC1idWZmZXIpKQor ICAgICAgICAgICkKKyAgICAgICAgICA7OyAod2hlbiAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpp bmxheUhpbnRQcm92aWRlcikKKyAgICAgICAgICA7OyAgIChsZXQgKChzb3VyY2UgKGN1cnJlbnQt YnVmZmVyKSkKKyAgICAgICAgICA7OyAgICAgICAgICAoaGludHMgKGVnbG90LWdldC1pbmxheS1o aW50cykpKQorICAgICAgICAgIDs7ICAgICA7OyBNYWtlIG92ZXJsYXlzIGZvciB0aGVtLgorCSAg ICAgICAgOzsgICAgIChtYXBoYXNoCisJICAgICAgICA7OyAgICAgICAobGFtYmRhIChsaW5lIHZh bHVlcykKKyAgICAgICAgICA7OyAgICAgICAgIChjbC1sb29wIGZvciB2YWx1ZSBpbiB2YWx1ZXMK KyAgICAgICAgICA7OyAgICAgICAgICAgZG8KKyAgICAgICAgICA7OyAgICAgICAgICAgKHByaW50 IHZhbHVlKQorICAgICAgICAgIDs7ICAgICAgICAgICAoY2wtbG9vcCBmb3IgdmFsIGJlaW5nIHRo ZSBlbGVtZW50cyBvZgorICAgICAgICAgIDs7ICAgICAgICAgICAgIChpZiAoc3RyaW5ncCAocGxp c3QtZ2V0IHZhbHVlIDpsYWJlbCkpCisgICAgICAgICAgOzsgICAgICAgICAgICAgICAobGlzdCAo cGxpc3QtZ2V0IHZhbHVlIDpsYWJlbCkpCisgICAgICAgICAgOzsgICAgICAgICAgICAgICAocGxp c3QtZ2V0IHZhbHVlIDpsYWJlbCkpCisgICAgICAgICAgOzsgICAgICAgICAgICAgZG8KKyAgICAg ICAgICA7OyAgICAgICAgICAgICAocHJpbnQgdmFsKQorCSAgICAgICAgOzsgICAgICAgICAgICAg KGVnbG90LS13aWRlbmluZworCSAgICAgICAgOzsgICAgICAgICAgICAgICAobGV0ICgoY29sIChw bGlzdC1nZXQgKHBsaXN0LWdldCB2YWx1ZSA6cG9zaXRpb24pIDpjaGFyYWN0ZXIpKQorICAgICAg ICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICh0ZXh0CisgICAgICAgICAgOzsgICAgICAgICAg ICAgICAgICAgICAgICAocHJvcGVydGl6ZQorICAgICAgICAgIDs7ICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uY2F0CisgICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHdoZW4gKHBsaXN0LWdldCB2YWx1ZSA6cGFkZGluZ0xlZnQpICIgIikKKyAgICAgICAgICA7OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZ3AgdmFsKSB2YWwgKHBsaXN0LWdl dCB2YWwgOnZhbHVlKSkKKyAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiAocGxpc3QtZ2V0IHZhbHVlIDpwYWRkaW5nUmlnaHQpICIgIikpCisgICAgICAgICAgOzsg ICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdlZ2xvdC1pbmxheS1oaW50KQorICAgICAg ICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgIDs7ICAgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgKHByaW50IHRleHQpCisg ICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAgKHB1c2ggKGVnbG90LS1tYWtlLWRpYWcKKyAg ICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZQorICAgICAgICAgIDs7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKCsgbGluZSAxKSAoKyBjb2wgMSkpCisg ICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICA7OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICdlZ2xvdC1pbmxheS1oaW50CisgICAgICAgICAgOzsg ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0CisgICAgICAgICAgOzsgICAgICAgICAgICAg ICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAg IGAoKGJlZm9yZS1zdHJpbmcgLiAsdGV4dCkKKyAgICAgICAgICA7OyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkpCisgICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAgICBlZ2xvdC0t ZGlhZ25vc3RpY3MpCisgICAgICAgICAgOzsgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICA7 OyAgICAgICAgICAgICAgICkKKyAgICAgICAgICA7OyAgICAgICAgICAgICApCisgICAgICAgICAg OzsgICAgICAgICAgICkKKyAgICAgICAgICA7OyAgICAgICAgICkKKwkgICAgICAgIDs7ICAgICAg IGhpbnRzKQorICAgICAgICAgIDs7ICAgICApKQorICAgICAgICAgIChlZ2xvdC0tcmVwb3J0LXRv LWZseW1ha2UgZWdsb3QtLWRpYWdub3N0aWNzKSkKKyAgICAodAorICAgICAgKGZ1bmNhbGwgcmVw b3J0LWZuIGRpYWdzKQorICAgICAgKSkpCiAKIChkZWZ1biBlZ2xvdC0tcmVwb3J0LXRvLWZseW1h a2UgKGRpYWdzKQogICAiSW50ZXJuYWwgaGVscGVyIGZvciBgZWdsb3QtZmx5bWFrZS1iYWNrZW5k Jy4iCiAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgKHdpZGVuKQogICAgIChmdW5jYWxsIGVnbG90 LS1jdXJyZW50LWZseW1ha2UtcmVwb3J0LWZuIGRpYWdzCi0gICAgICAgICAgICAgOzsgSWYgdGhl IGJ1ZmZlciBoYXNuJ3QgY2hhbmdlZCBzaW5jZSBsYXN0Ci0gICAgICAgICAgICAgOzsgY2FsbCB0 byB0aGUgcmVwb3J0IGZ1bmN0aW9uLCBmbHltYWtlIHdvbid0Ci0gICAgICAgICAgICAgOzsgZGVs ZXRlIG9sZCBkaWFnbm9zdGljcy4gIFVzaW5nIDpyZWdpb24KLSAgICAgICAgICAgICA7OyBrZXl3 b3JkIGZvcmNlcyBmbHltYWtlIHRvIGRlbGV0ZQotICAgICAgICAgICAgIDs7IHRoZW0gKGdpdGh1 YiMxNTkpLgotICAgICAgICAgICAgIDpyZWdpb24gKGNvbnMgKHBvaW50LW1pbikgKHBvaW50LW1h eCkpKSkKKyAgICAgIDs7IElmIHRoZSBidWZmZXIgaGFzbid0IGNoYW5nZWQgc2luY2UgbGFzdAor ICAgICAgOzsgY2FsbCB0byB0aGUgcmVwb3J0IGZ1bmN0aW9uLCBmbHltYWtlIHdvbid0CisgICAg ICA7OyBkZWxldGUgb2xkIGRpYWdub3N0aWNzLiAgVXNpbmcgOnJlZ2lvbgorICAgICAgOzsga2V5 d29yZCBmb3JjZXMgZmx5bWFrZSB0byBkZWxldGUKKyAgICAgIDs7IHRoZW0gKGdpdGh1YiMxNTkp LgorICAgICAgOnJlZ2lvbiAoY29ucyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKQogICAoc2V0 cSBlZ2xvdC0tZGlhZ25vc3RpY3MgZGlhZ3MpKQogCiAoZGVmdW4gZWdsb3QteHJlZi1iYWNrZW5k ICgpICJFZ2xvdCB4cmVmIGJhY2tlbmQuIiAnZWdsb3QpCkBAIC0yNDYyLDExICsyNjE4LDExIEBA IG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgKHJlc3BlY3RpbmcgdGhlIHByb3RvY29sIG9m CiAgIChkZWNsYXJlIChpbmRlbnQgMSkgKGRlYnVnIChzZXhwICZyZXN0IGZvcm0pKSkKICAgKGxl dCAoKGNvbGxlY3RlZCAoY2wtZ2Vuc3ltICJjb2xsZWN0ZWQiKSkpCiAgICAgYCh1bndpbmQtcHJv dGVjdAotICAgICAgICAgKGxldCAoLGNvbGxlY3RlZCkKLSAgICAgICAgICAgKGNsLWZsZXQgKCgs Y29sbGVjdG9yICh4cmVmKSAocHVzaCB4cmVmICxjb2xsZWN0ZWQpKSkKLSAgICAgICAgICAgICAs QGJvZHkpCi0gICAgICAgICAgIChzZXRxICxjb2xsZWN0ZWQgKG5yZXZlcnNlICxjb2xsZWN0ZWQp KQotICAgICAgICAgICAoc29ydCAsY29sbGVjdGVkIGVnbG90LXhyZWYtbGVzc3AtZnVuY3Rpb24p KQorICAgICAgIChsZXQgKCxjb2xsZWN0ZWQpCisgICAgICAgICAoY2wtZmxldCAoKCxjb2xsZWN0 b3IgKHhyZWYpIChwdXNoIHhyZWYgLGNvbGxlY3RlZCkpKQorICAgICAgICAgICAsQGJvZHkpCisg ICAgICAgICAoc2V0cSAsY29sbGVjdGVkIChucmV2ZXJzZSAsY29sbGVjdGVkKSkKKyAgICAgICAg IChzb3J0ICxjb2xsZWN0ZWQgZWdsb3QteHJlZi1sZXNzcC1mdW5jdGlvbikpCiAgICAgICAgKG1h cGhhc2ggKGxhbWJkYSAoX3VyaSBidWYpIChraWxsLWJ1ZmZlciBidWYpKSBlZ2xvdC0tdGVtcC1s b2NhdGlvbi1idWZmZXJzKQogICAgICAgIChjbHJoYXNoIGVnbG90LS10ZW1wLWxvY2F0aW9uLWJ1 ZmZlcnMpKSkpCiAKQEAgLTI0NzQsMzYgKzI2MzAsMzYgQEAgbWF5IGJlIGNhbGxlZCBtdWx0aXBs ZSB0aW1lcyAocmVzcGVjdGluZyB0aGUgcHJvdG9jb2wgb2YKICAgIkxpa2UgYHhyZWYtbWFrZS1t YXRjaCcgYnV0IHdpdGggTFNQJ3MgTkFNRSwgVVJJIGFuZCBSQU5HRS4KIFRyeSB0byB2aXNpdCB0 aGUgdGFyZ2V0IGZpbGUgZm9yIGEgcmljaGVyIHN1bW1hcnkgbGluZS4iCiAgIChwY2FzZS1sZXQq Ci0gICAgICAoKGZpbGUgKGVnbG90LS11cmktdG8tcGF0aCB1cmkpKQotICAgICAgICh2aXNpdGlu ZyAob3IgKGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAo Z2V0aGFzaCB1cmkgZWdsb3QtLXRlbXAtbG9jYXRpb24tYnVmZmVycykpKQotICAgICAgIChjb2xs ZWN0IChsYW1iZGEgKCkKLSAgICAgICAgICAgICAgICAgIChlZ2xvdC0td2lkZW5pbmcKKyAgICAo KGZpbGUgKGVnbG90LS11cmktdG8tcGF0aCB1cmkpKQorICAgICAgKHZpc2l0aW5nIChvciAoZmlu ZC1idWZmZXItdmlzaXRpbmcgZmlsZSkKKyAgICAgICAgICAgICAgICAgIChnZXRoYXNoIHVyaSBl Z2xvdC0tdGVtcC1sb2NhdGlvbi1idWZmZXJzKSkpCisgICAgICAoY29sbGVjdCAobGFtYmRhICgp CisgICAgICAgICAgICAgICAgIChlZ2xvdC0td2lkZW5pbmcKICAgICAgICAgICAgICAgICAgICAo cGNhc2UtbGV0KiAoKGAoLGJlZyAuICxlbmQpIChlZ2xvdC0tcmFuZ2UtcmVnaW9uIHJhbmdlKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJvbCAocHJvZ24gKGdvdG8tY2hhciBi ZWcpIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc3Vic3RyaW5nIChidWZmZXItc3Vic3RyaW5nIGJvbCAobGluZS1lbmQtcG9zaXRp b24pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpLWJlZyAoLSBiZWcgYm9s KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpLWVuZCAoLSAobWluIChsaW5l LWVuZC1wb3NpdGlvbikgZW5kKSBib2wpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChib2wgKHByb2duIChnb3RvLWNoYXIgYmVnKSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24p KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgKGJ1ZmZlci1z dWJzdHJpbmcgYm9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGhpLWJlZyAoLSBiZWcgYm9sKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChoaS1lbmQgKC0gKG1pbiAobGluZS1lbmQtcG9zaXRpb24pIGVuZCkgYm9sKSkp CiAgICAgICAgICAgICAgICAgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSBoaS1iZWcgaGkt ZW5kICd4cmVmLW1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0IHN1YnN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgdCBzdWJzdHJpbmcpCiAg ICAgICAgICAgICAgICAgICAgICAobGlzdCBzdWJzdHJpbmcgKGxpbmUtbnVtYmVyLWF0LXBvcyAo cG9pbnQpIHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtY3VycmVudC1jb2x1 bW4pICgtIGVuZCBiZWcpKSkpKSkKLSAgICAgICAoYCgsc3VtbWFyeSAsbGluZSAsY29sdW1uICxs ZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1jdXJyZW50LWNvbHVtbikgKC0g ZW5kIGJlZykpKSkpKQorICAgICAgKGAoLHN1bW1hcnkgLGxpbmUgLGNvbHVtbiAsbGVuZ3RoKQog ICAgICAgICAoY29uZAotICAgICAgICAgKHZpc2l0aW5nICh3aXRoLWN1cnJlbnQtYnVmZmVyIHZp c2l0aW5nIChmdW5jYWxsIGNvbGxlY3QpKSkKLSAgICAgICAgICgoZmlsZS1yZWFkYWJsZS1wIGZp bGUpICh3aXRoLWN1cnJlbnQtYnVmZmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHB1dGhhc2ggdXJpIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKnRlbXAqIikKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2xvdC0tdGVtcC1sb2Nh dGlvbi1idWZmZXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0 LWZpbGUtY29udGVudHMgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZ1bmNhbGwgY29sbGVjdCkpKQotICAgICAgICAgKHQgOzsgZmFsbCBiYWNrIHRvIHRoZSAiZHVt YiBzdHJhdGVneSIKLSAgICAgICAgICAobGV0KiAoKHN0YXJ0IChjbC1nZXRmIHJhbmdlIDpzdGFy dCkpCi0gICAgICAgICAgICAgICAgIChsaW5lICgxKyAoY2wtZ2V0ZiBzdGFydCA6bGluZSkpKQot ICAgICAgICAgICAgICAgICAoc3RhcnQtcG9zIChjbC1nZXRmIHN0YXJ0IDpjaGFyYWN0ZXIpKQot ICAgICAgICAgICAgICAgICAoZW5kLXBvcyAoY2wtZ2V0ZiAoY2wtZ2V0ZiByYW5nZSA6ZW5kKSA6 Y2hhcmFjdGVyKSkpCi0gICAgICAgICAgICAobGlzdCBuYW1lIGxpbmUgc3RhcnQtcG9zICgtIGVu ZC1wb3Mgc3RhcnQtcG9zKSkpKSkpKQorICAgICAgICAgICh2aXNpdGluZyAod2l0aC1jdXJyZW50 LWJ1ZmZlciB2aXNpdGluZyAoZnVuY2FsbCBjb2xsZWN0KSkpCisgICAgICAgICAgKChmaWxlLXJl YWRhYmxlLXAgZmlsZSkgKHdpdGgtY3VycmVudC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwdXRoYXNoIHVyaSAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICp0ZW1w KiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS10ZW1wLWxv Y2F0aW9uLWJ1ZmZlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5z ZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGNvbGxlY3QpKSkKKyAgICAgICAgICAodCA7OyBmYWxsIGJhY2sgdG8gdGhl ICJkdW1iIHN0cmF0ZWd5IgorICAgICAgICAgICAgKGxldCogKChzdGFydCAoY2wtZ2V0ZiByYW5n ZSA6c3RhcnQpKQorICAgICAgICAgICAgICAgICAgICAobGluZSAoMSsgKGNsLWdldGYgc3RhcnQg OmxpbmUpKSkKKyAgICAgICAgICAgICAgICAgICAgKHN0YXJ0LXBvcyAoY2wtZ2V0ZiBzdGFydCA6 Y2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICAgICAgKGVuZC1wb3MgKGNsLWdldGYgKGNsLWdl dGYgcmFuZ2UgOmVuZCkgOmNoYXJhY3RlcikpKQorICAgICAgICAgICAgICAobGlzdCBuYW1lIGxp bmUgc3RhcnQtcG9zICgtIGVuZC1wb3Mgc3RhcnQtcG9zKSkpKSkpKQogICAgIChzZXRmIChnZXRo YXNoIChleHBhbmQtZmlsZS1uYW1lIGZpbGUpIGVnbG90LS1zZXJ2ZXJzLWJ5LXhyZWZlZC1maWxl KQotICAgICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkpCisgICAgICAoZWds b3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQogICAgICh4cmVmLW1ha2UtbWF0Y2ggc3VtbWFy eSAoeHJlZi1tYWtlLWZpbGUtbG9jYXRpb24gZmlsZSBsaW5lIGNvbHVtbikgbGVuZ3RoKSkpCiAK IChkZWZ1biBlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMgKHBhdCAmb3B0aW9uYWwgYnVmZmVyKQpA QCAtMjUxMyw0MiArMjY2OSw0MiBAQCBJZiBCVUZGRVIsIHN3aXRjaCB0byBpdCBiZWZvcmUuIgog ICAgICh1bmxlc3MgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6d29ya3NwYWNlU3ltYm9sUHJvdmlk ZXIpCiAgICAgICAoZWdsb3QtLWVycm9yICJUaGlzIExTUCBzZXJ2ZXIgaXNuJ3QgYSA6d29ya3Nw YWNlU3ltYm9sUHJvdmlkZXIiKSkKICAgICAobWFwY2FyCi0gICAgIChsYW1iZGEgKHdzcykKLSAg ICAgICAoZWdsb3QtLWRiaW5kICgoV29ya3NwYWNlU3ltYm9sKSBuYW1lIGNvbnRhaW5lck5hbWUg a2luZCkgd3NzCi0gICAgICAgICAocHJvcGVydGl6ZQotICAgICAgICAgIChmb3JtYXQgIiVzJXMg JXMiCi0gICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIChsZW5ndGggY29udGFpbmVyTmFtZSkp ICIiCi0gICAgICAgICAgICAgICAgICAgIChjb25jYXQgKHByb3BlcnRpemUgY29udGFpbmVyTmFt ZSAnZmFjZSAnc2hhZG93KSAiICIpKQotICAgICAgICAgICAgICAgICAgbmFtZQotICAgICAgICAg ICAgICAgICAgKHByb3BlcnRpemUgKGFsaXN0LWdldCBraW5kIGVnbG90LS1zeW1ib2wta2luZC1u YW1lcyAiVW5rbm93biIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZSAnc2hh ZG93KSkKLSAgICAgICAgICAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgd3NzKSkpCi0gICAg IChqc29ucnBjLXJlcXVlc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSA6d29ya3Nw YWNlL3N5bWJvbAotICAgICAgICAgICAgICAgICAgICAgIGAoOnF1ZXJ5ICxwYXQpKSkpKQorICAg ICAgKGxhbWJkYSAod3NzKQorICAgICAgICAoZWdsb3QtLWRiaW5kICgoV29ya3NwYWNlU3ltYm9s KSBuYW1lIGNvbnRhaW5lck5hbWUga2luZCkgd3NzCisgICAgICAgICAgKHByb3BlcnRpemUKKyAg ICAgICAgICAgIChmb3JtYXQgIiVzJXMgJXMiCisgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxl bmd0aCBjb250YWluZXJOYW1lKSkgIiIKKyAgICAgICAgICAgICAgICAoY29uY2F0IChwcm9wZXJ0 aXplIGNvbnRhaW5lck5hbWUgJ2ZhY2UgJ3NoYWRvdykgIiAiKSkKKyAgICAgICAgICAgICAgbmFt ZQorICAgICAgICAgICAgICAocHJvcGVydGl6ZSAoYWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJv bC1raW5kLW5hbWVzICJVbmtub3duIikKKyAgICAgICAgICAgICAgICAnZmFjZSAnc2hhZG93KSkK KyAgICAgICAgICAgICdlZ2xvdC0tbHNwLXdvcmtzcGFjZVN5bWJvbCB3c3MpKSkKKyAgICAgIChq c29ucnBjLXJlcXVlc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSA6d29ya3NwYWNl L3N5bWJvbAorICAgICAgICBgKDpxdWVyeSAscGF0KSkpKSkKIAogKGNsLWRlZm1ldGhvZCB4cmVm LWJhY2tlbmQtaWRlbnRpZmllci1jb21wbGV0aW9uLXRhYmxlICgoX2JhY2tlbmQgKGVxbCBlZ2xv dCkpKQogICAiWWV0IGFub3RoZXIgdHJpY2t5IGNvbm5lY3Rpb24gYmV0d2VlbiBMU1AgYW5kIEVs aXNwIGNvbXBsZXRpb24gc2VtYW50aWNzLiIKICAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIp KSAoY2FjaGUgZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkKICAgICAoY2wtbGFiZWxz ICgocmVmcmVzaCAocGF0KSAoZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzIHBhdCBidWYpKQotICAg ICAgICAgICAgICAgIChsb29rdXAtMSAocGF0KSA7OyBjaGVjayBjYWNoZSwgZWxzZSByZWZyZXNo Ci0gICAgICAgICAgICAgICAgICAobGV0ICgocHJvYmUgKGdldGhhc2ggcGF0IGNhY2hlIDptaXNz aW5nKSkpCi0gICAgICAgICAgICAgICAgICAgIChpZiAoZXEgcHJvYmUgOm1pc3NpbmcpIChwdXRo YXNoIHBhdCAocmVmcmVzaCBwYXQpIGNhY2hlKQotICAgICAgICAgICAgICAgICAgICAgIHByb2Jl KSkpCi0gICAgICAgICAgICAgICAgKGxvb2t1cCAocGF0KQotICAgICAgICAgICAgICAgICAgKGxl dCAoKHJlcyAobG9va3VwLTEgcGF0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIChkZWYgKGFu ZCAoc3RyaW5nPSBwYXQgIiIpIChnZXRoYXNoIDpkZWZhdWx0IGNhY2hlKSkpKQotICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIGRlZiByZXMgbmlsKSkpCi0gICAgICAgICAgICAgICAgKHNjb3Jl IChjKQotICAgICAgICAgICAgICAgICAgKGNsLWdldGYgKGdldC10ZXh0LXByb3BlcnR5Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgYykK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzY29yZSAwKSkpCisgICAgICAgICAgICAgICAg IChsb29rdXAtMSAocGF0KSA7OyBjaGVjayBjYWNoZSwgZWxzZSByZWZyZXNoCisgICAgICAgICAg ICAgICAgICAgKGxldCAoKHByb2JlIChnZXRoYXNoIHBhdCBjYWNoZSA6bWlzc2luZykpKQorICAg ICAgICAgICAgICAgICAgICAgKGlmIChlcSBwcm9iZSA6bWlzc2luZykgKHB1dGhhc2ggcGF0IChy ZWZyZXNoIHBhdCkgY2FjaGUpCisgICAgICAgICAgICAgICAgICAgICAgIHByb2JlKSkpCisgICAg ICAgICAgICAgICAgIChsb29rdXAgKHBhdCkKKyAgICAgICAgICAgICAgICAgICAobGV0ICgocmVz IChsb29rdXAtMSBwYXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmIChhbmQgKHN0 cmluZz0gcGF0ICIiKSAoZ2V0aGFzaCA6ZGVmYXVsdCBjYWNoZSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgIChhcHBlbmQgZGVmIHJlcyBuaWwpKSkKKyAgICAgICAgICAgICAgICAgKHNjb3JlIChj KQorICAgICAgICAgICAgICAgICAgIChjbC1nZXRmIChnZXQtdGV4dC1wcm9wZXJ0eQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgYykK KyAgICAgICAgICAgICAgICAgICAgIDpzY29yZSAwKSkpCiAgICAgICAobGFtYmRhIChzdHJpbmcg X3ByZWQgYWN0aW9uKQogICAgICAgICAocGNhc2UgYWN0aW9uCiAgICAgICAgICAgKGBtZXRhZGF0 YSBgKG1ldGFkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgIChjeWNsZS1zb3J0LWZ1bmN0aW9u Ci0gICAgICAgICAgICAgICAgICAgICAgICAuICwobGFtYmRhIChjb21wbGV0aW9ucykKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXNvcnQgY29tcGxldGlvbnMgIyc+IDprZXkgIydz Y29yZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAoY2F0ZWdvcnkgLiBlZ2xvdC1pbmRpcmVj dGlvbi1qb3kpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChjeWNsZS1zb3J0LWZ1bmN0aW9u CisgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLChsYW1iZGEgKGNvbXBsZXRpb25zKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1zb3J0IGNvbXBsZXRpb25zICMnPiA6a2V5 ICMnc2NvcmUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChjYXRlZ29yeSAuIGVnbG90LWlu ZGlyZWN0aW9uLWpveSkpKQogICAgICAgICAgIChgKGVnbG90LS1sc3AtdHJ5YyAuICxwb2ludCkg YChlZ2xvdC0tbHNwLXRyeWMgLiAoLHN0cmluZyAuICxwb2ludCkpKQogICAgICAgICAgIChgKGVn bG90LS1sc3AtYWxsYyAuICxfcG9pbnQpIGAoZWdsb3QtLWxzcC1hbGxjIC4gLChsb29rdXAgc3Ry aW5nKSkpCiAgICAgICAgICAgKF8gbmlsKSkpKSkpCkBAIC0yNTYxLDE4ICsyNzE3LDE4IEBAIElm IEJVRkZFUiwgc3dpdGNoIHRvIGl0IGJlZm9yZS4iCiAgICAgICAgICAgICAgICAgIDs7IExpa2Ug bWVzcz8gQXNrIG1pbmlidWZmZXIuZWwgYWJvdXQgaW1wcm9wZXIgbGlzdHMuCiAgICAgICAgICAg ICAgICAgICh3aGVuIChlcXVhbCAoY2FyIHYpIHN0cmluZykgKHRocm93ICdmb3VuZCAoY2FyIHYp KSkKICAgICAgICAgICAgICAgICAgKHNldHEgdiAoY2RyIHYpKSkpCi0gICAgICAgICAgICAgZWds b3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkpCisgICAgICBlZ2xvdC0td29ya3NwYWNlLXN5 bWJvbHMtY2FjaGUpKSkKIAogKGFkZC10by1saXN0ICdjb21wbGV0aW9uLWNhdGVnb3J5LW92ZXJy aWRlcwotICAgICAgICAgICAgICcoZWdsb3QtaW5kaXJlY3Rpb24tam95IChzdHlsZXMgLiAoZWds b3QtLWxzcC1iYWNrZW5kLXN0eWxlKSkpKQorICAnKGVnbG90LWluZGlyZWN0aW9uLWpveSAoc3R5 bGVzIC4gKGVnbG90LS1sc3AtYmFja2VuZC1zdHlsZSkpKSkKIAogKGNsLWRlZm1ldGhvZCB4cmVm LWJhY2tlbmQtaWRlbnRpZmllci1hdC1wb2ludCAoKF9iYWNrZW5kIChlcWwgZWdsb3QpKSkKICAg KGxldCAoKGF0dGVtcHQKLSAgICAgICAgIChhbmQgKHhyZWYtLXByb21wdC1wIHRoaXMtY29tbWFu ZCkKLSAgICAgICAgICAgICAgKHB1dGhhc2ggOmRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAg ICAgKGlnbm9yZS1lcnJvcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdvcmtz cGFjZS1zeW1ib2xzIChzeW1ib2wtbmFtZSAoc3ltYm9sLWF0LXBvaW50KSkpKQotICAgICAgICAg ICAgICAgICAgICAgICBlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMtY2FjaGUpKSkpCisgICAgICAg ICAgKGFuZCAoeHJlZi0tcHJvbXB0LXAgdGhpcy1jb21tYW5kKQorICAgICAgICAgICAgKHB1dGhh c2ggOmRlZmF1bHQKKyAgICAgICAgICAgICAgKGlnbm9yZS1lcnJvcnMKKyAgICAgICAgICAgICAg ICAoZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzIChzeW1ib2wtbmFtZSAoc3ltYm9sLWF0LXBvaW50 KSkpKQorICAgICAgICAgICAgICBlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMtY2FjaGUpKSkpCiAg ICAgKGlmIGF0dGVtcHQgKGNhciBhdHRlbXB0KSAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQiKSkp CiAKIChkZWZ2YXIgZWdsb3QtLWxzcC14cmVmLXJlZnMgbmlsCkBAIC0yNTgxLDM3ICsyNzM3LDM3 IEBAIElmIEJVRkZFUiwgc3dpdGNoIHRvIGl0IGJlZm9yZS4iCiAoY2wtZGVmdW4gZWdsb3QtLWxz cC14cmVmcy1mb3ItbWV0aG9kIChtZXRob2QgJmtleSBleHRyYS1wYXJhbXMgY2FwYWJpbGl0eSkK ICAgIk1ha2UgYHhyZWYnJ3MgZm9yIE1FVEhPRCwgRVhUUkEtUEFSQU1TLCBjaGVjayBDQVBBQklM SVRZLiIKICAgKHVubGVzcyAoZWdsb3QtLXNlcnZlci1jYXBhYmxlCi0gICAgICAgICAgIChvciBj YXBhYmlsaXR5Ci0gICAgICAgICAgICAgICAoaW50ZXJuCisgICAgICAgICAgICAob3IgY2FwYWJp bGl0eQorICAgICAgICAgICAgICAoaW50ZXJuCiAgICAgICAgICAgICAgICAgKGZvcm1hdCAiOiVz UHJvdmlkZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2FkciAoc3BsaXQtc3RyaW5nIChz eW1ib2wtbmFtZSBtZXRob2QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIvIikpKSkpKQorICAgICAgICAgICAgICAgICAgKGNhZHIgKHNwbGl0LXN0cmluZyAo c3ltYm9sLW5hbWUgbWV0aG9kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIpKSkpKSkK ICAgICAoZWdsb3QtLWVycm9yICJTb3JyeSwgdGhpcyBzZXJ2ZXIgZG9lc24ndCBkbyAlcyIgbWV0 aG9kKSkKICAgKGxldCAoKHJlc3BvbnNlCi0gICAgICAgICAoanNvbnJwYy1yZXF1ZXN0Ci0gICAg ICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQotICAgICAgICAgIG1ldGhvZCAo YXBwZW5kIChlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMpIGV4dHJhLXBhcmFtcykp KSkKKyAgICAgICAgICAoanNvbnJwYy1yZXF1ZXN0CisgICAgICAgICAgICAoZWdsb3QtLWN1cnJl bnQtc2VydmVyLW9yLWxvc2UpCisgICAgICAgICAgICBtZXRob2QgKGFwcGVuZCAoZWdsb3QtLVRl eHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKSBleHRyYS1wYXJhbXMpKSkpCiAgICAgKGVnbG90LS1j b2xsZWN0aW5nLXhyZWZzIChjb2xsZWN0KQogICAgICAgKG1hcGMKLSAgICAgICAobGFtYmRhIChs b2Mtb3ItbG9jLWxpbmspCi0gICAgICAgICAobGV0ICgoc3ltLW5hbWUgKHN5bWJvbC1uYW1lIChz eW1ib2wtYXQtcG9pbnQpKSkpCi0gICAgICAgICAgIChlZ2xvdC0tZGNhc2UgbG9jLW9yLWxvYy1s aW5rCi0gICAgICAgICAgICAgKCgoTG9jYXRpb25MaW5rKSB0YXJnZXRVcmkgdGFyZ2V0U2VsZWN0 aW9uUmFuZ2UpCi0gICAgICAgICAgICAgIChjb2xsZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNo IHN5bS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldFVyaSB0YXJnZXRTZWxlY3Rpb25SYW5nZSkpKQotICAgICAgICAgICAgICgoKExvY2F0 aW9uKSB1cmkgcmFuZ2UpCi0gICAgICAgICAgICAgIChjb2xsZWN0IChlZ2xvdC0teHJlZi1tYWtl LW1hdGNoIHN5bS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVyaSByYW5nZSkpKSkpKQotICAgICAgIChpZiAodmVjdG9ycCByZXNwb25zZSkgcmVz cG9uc2UgKGFuZCByZXNwb25zZSAobGlzdCByZXNwb25zZSkpKSkpKSkKKyAgICAgICAgKGxhbWJk YSAobG9jLW9yLWxvYy1saW5rKQorICAgICAgICAgIChsZXQgKChzeW0tbmFtZSAoc3ltYm9sLW5h bWUgKHN5bWJvbC1hdC1wb2ludCkpKSkKKyAgICAgICAgICAgIChlZ2xvdC0tZGNhc2UgbG9jLW9y LWxvYy1saW5rCisgICAgICAgICAgICAgICgoKExvY2F0aW9uTGluaykgdGFyZ2V0VXJpIHRhcmdl dFNlbGVjdGlvblJhbmdlKQorICAgICAgICAgICAgICAgIChjb2xsZWN0IChlZ2xvdC0teHJlZi1t YWtlLW1hdGNoIHN5bS1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRVcmkg dGFyZ2V0U2VsZWN0aW9uUmFuZ2UpKSkKKyAgICAgICAgICAgICAgKCgoTG9jYXRpb24pIHVyaSBy YW5nZSkKKyAgICAgICAgICAgICAgICAoY29sbGVjdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBz eW0tbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpIHJhbmdlKSkpKSkpCisgICAg ICAgIChpZiAodmVjdG9ycCByZXNwb25zZSkgcmVzcG9uc2UgKGFuZCByZXNwb25zZSAobGlzdCBy ZXNwb25zZSkpKSkpKSkKIAogKGNsLWRlZnVuIGVnbG90LS1sc3AteHJlZi1oZWxwZXIgKG1ldGhv ZCAma2V5IGV4dHJhLXBhcmFtcyBjYXBhYmlsaXR5ICkKICAgIkhlbHBlciBmb3IgYGVnbG90LWZp bmQtZGVjbGFyYXRpb24nICYgZnJpZW5kcy4iCiAgIChsZXQgKChlZ2xvdC0tbHNwLXhyZWYtcmVm cyAoZWdsb3QtLWxzcC14cmVmcy1mb3ItbWV0aG9kCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWV0aG9kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmV4dHJhLXBhcmFt cyBleHRyYS1wYXJhbXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2FwYWJpbGl0 eSBjYXBhYmlsaXR5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXh0cmEtcGFyYW1zIGV4dHJhLXBhcmFt cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2FwYWJpbGl0eSBjYXBhYmlsaXR5 KSkpCiAgICAgKGlmIGVnbG90LS1sc3AteHJlZi1yZWZzCi0gICAgICAgICh4cmVmLWZpbmQtcmVm ZXJlbmNlcyAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQuIikKKyAgICAgICh4cmVmLWZpbmQtcmVm ZXJlbmNlcyAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQuIikKICAgICAgIChlZ2xvdC0tbWVzc2Fn ZSAiJXMgcmV0dXJuZWQgbm8gcmVmZXJlbmNlcyIgbWV0aG9kKSkpKQogCiAoZGVmdW4gZWdsb3Qt ZmluZC1kZWNsYXJhdGlvbiAoKQpAQCAtMjYzMiwyOCArMjc4OCwyOCBAQCBJZiBCVUZGRVIsIHN3 aXRjaCB0byBpdCBiZWZvcmUuIgogKGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtZGVmaW5pdGlv bnMgKChfYmFja2VuZCAoZXFsIGVnbG90KSkgaWQpCiAgIChsZXQgKChwcm9iZSAoZWdsb3QtLXJl Y292ZXItd29ya3NwYWNlLXN5bWJvbC1tZXRhIGlkKSkpCiAgICAgKGlmIHByb2JlCi0gICAgICAg IChlZ2xvdC0tZGJpbmQgKChXb3Jrc3BhY2VTeW1ib2wpIG5hbWUgbG9jYXRpb24pCi0gICAgICAg ICAgICAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgcHJv YmUpCi0gICAgICAgICAgKGVnbG90LS1kYmluZCAoKExvY2F0aW9uKSB1cmkgcmFuZ2UpIGxvY2F0 aW9uCi0gICAgICAgICAgICAobGlzdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBuYW1lIHVyaSBy YW5nZSkpKSkKLSAgICAgICAgKGVnbG90LS1sc3AteHJlZnMtZm9yLW1ldGhvZCA6dGV4dERvY3Vt ZW50L2RlZmluaXRpb24pKSkpCisgICAgICAoZWdsb3QtLWRiaW5kICgoV29ya3NwYWNlU3ltYm9s KSBuYW1lIGxvY2F0aW9uKQorICAgICAgICAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxz cC13b3Jrc3BhY2VTeW1ib2wgcHJvYmUpCisgICAgICAgIChlZ2xvdC0tZGJpbmQgKChMb2NhdGlv bikgdXJpIHJhbmdlKSBsb2NhdGlvbgorICAgICAgICAgIChsaXN0IChlZ2xvdC0teHJlZi1tYWtl LW1hdGNoIG5hbWUgdXJpIHJhbmdlKSkpKQorICAgICAgKGVnbG90LS1sc3AteHJlZnMtZm9yLW1l dGhvZCA6dGV4dERvY3VtZW50L2RlZmluaXRpb24pKSkpCiAKIChjbC1kZWZtZXRob2QgeHJlZi1i YWNrZW5kLXJlZmVyZW5jZXMgKChfYmFja2VuZCAoZXFsIGVnbG90KSkgX2lkZW50aWZpZXIpCiAg IChvcgotICAgZWdsb3QtLWxzcC14cmVmLXJlZnMKLSAgIChlZ2xvdC0tbHNwLXhyZWZzLWZvci1t ZXRob2QKLSAgICA6dGV4dERvY3VtZW50L3JlZmVyZW5jZXMgOmV4dHJhLXBhcmFtcyBgKDpjb250 ZXh0ICg6aW5jbHVkZURlY2xhcmF0aW9uIHQpKSkpKQorICAgIGVnbG90LS1sc3AteHJlZi1yZWZz CisgICAgKGVnbG90LS1sc3AteHJlZnMtZm9yLW1ldGhvZAorICAgICAgOnRleHREb2N1bWVudC9y ZWZlcmVuY2VzIDpleHRyYS1wYXJhbXMgYCg6Y29udGV4dCAoOmluY2x1ZGVEZWNsYXJhdGlvbiB0 KSkpKSkKIAogKGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtYXByb3BvcyAoKF9iYWNrZW5kIChl cWwgZWdsb3QpKSBwYXR0ZXJuKQogICAod2hlbiAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDp3b3Jr c3BhY2VTeW1ib2xQcm92aWRlcikKICAgICAoZWdsb3QtLWNvbGxlY3RpbmcteHJlZnMgKGNvbGxl Y3QpCiAgICAgICAobWFwYwotICAgICAgIChlZ2xvdC0tbGFtYmRhICgoU3ltYm9sSW5mb3JtYXRp b24pIG5hbWUgbG9jYXRpb24pCi0gICAgICAgICAoZWdsb3QtLWRiaW5kICgoTG9jYXRpb24pIHVy aSByYW5nZSkgbG9jYXRpb24KLSAgICAgICAgICAgKGNvbGxlY3QgKGVnbG90LS14cmVmLW1ha2Ut bWF0Y2ggbmFtZSB1cmkgcmFuZ2UpKSkpCi0gICAgICAgKGpzb25ycGMtcmVxdWVzdCAoZWdsb3Qt LWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICA6d29ya3Nw YWNlL3N5bWJvbAotICAgICAgICAgICAgICAgICAgICAgICAgYCg6cXVlcnkgLHBhdHRlcm4pKSkp KSkKKyAgICAgICAgKGVnbG90LS1sYW1iZGEgKChTeW1ib2xJbmZvcm1hdGlvbikgbmFtZSBsb2Nh dGlvbikKKyAgICAgICAgICAoZWdsb3QtLWRiaW5kICgoTG9jYXRpb24pIHVyaSByYW5nZSkgbG9j YXRpb24KKyAgICAgICAgICAgIChjb2xsZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNoIG5hbWUg dXJpIHJhbmdlKSkpKQorICAgICAgICAoanNvbnJwYy1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1z ZXJ2ZXItb3ItbG9zZSkKKyAgICAgICAgICA6d29ya3NwYWNlL3N5bWJvbAorICAgICAgICAgIGAo OnF1ZXJ5ICxwYXR0ZXJuKSkpKSkpCiAKIChkZWZ1biBlZ2xvdC1mb3JtYXQtYnVmZmVyICgpCiAg ICJGb3JtYXQgY29udGVudHMgb2YgY3VycmVudCBidWZmZXIuIgpAQCAtMjY3MCwzMDQgKzI4MjYs MzA0IEBAIElmIG5vbi1uaWwsIE9OLVRZUEUtRk9STUFUIGlzIGEgY2hhcmFjdGVyIGp1c3QgaW5z ZXJ0ZWQgYXQgQkVHCiBmb3Igd2hpY2ggTFNQIG9uLXR5cGUtZm9ybWF0dGluZyBzaG91bGQgYmUg cmVxdWVzdGVkLiIKICAgKGludGVyYWN0aXZlIChhbmQgKHJlZ2lvbi1hY3RpdmUtcCkgKGxpc3Qg KHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkpKQogICAocGNhc2UtbGV0ICgoYCgsbWV0 aG9kICxjYXAgLGFyZ3MpCi0gICAgICAgICAgICAgICAoY29uZAotICAgICAgICAgICAgICAgICgo YW5kIGJlZyBvbi10eXBlLWZvcm1hdCkKLSAgICAgICAgICAgICAgICAgYCg6dGV4dERvY3VtZW50 L29uVHlwZUZvcm1hdHRpbmcKLSAgICAgICAgICAgICAgICAgICA6ZG9jdW1lbnRPblR5cGVGb3Jt YXR0aW5nUHJvdmlkZXIKLSAgICAgICAgICAgICAgICAgICAsYCg6cG9zaXRpb24gLChlZ2xvdC0t cG9zLXRvLWxzcC1wb3NpdGlvbiBiZWcpCi0gICAgICAgICAgICAgICAgICAgICAgOmNoICwoc3Ry aW5nIG9uLXR5cGUtZm9ybWF0KSkpKQotICAgICAgICAgICAgICAgICgoYW5kIGJlZyBlbmQpCi0g ICAgICAgICAgICAgICAgIGAoOnRleHREb2N1bWVudC9yYW5nZUZvcm1hdHRpbmcKLSAgICAgICAg ICAgICAgICAgICA6ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcgotICAgICAgICAgICAg ICAgICAgICg6cmFuZ2UgLChsaXN0IDpzdGFydCAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24g YmVnKQorICAgICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAoKGFuZCBiZWcg b24tdHlwZS1mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIGAoOnRleHREb2N1bWVudC9vblR5 cGVGb3JtYXR0aW5nCisgICAgICAgICAgICAgICAgICAgICAgIDpkb2N1bWVudE9uVHlwZUZvcm1h dHRpbmdQcm92aWRlcgorICAgICAgICAgICAgICAgICAgICAgICAsYCg6cG9zaXRpb24gLChlZ2xv dC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBiZWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y2ggLChzdHJpbmcgb24tdHlwZS1mb3JtYXQpKSkpCisgICAgICAgICAgICAgICAgICAoKGFuZCBi ZWcgZW5kKQorICAgICAgICAgICAgICAgICAgICBgKDp0ZXh0RG9jdW1lbnQvcmFuZ2VGb3JtYXR0 aW5nCisgICAgICAgICAgICAgICAgICAgICAgIDpkb2N1bWVudFJhbmdlRm9ybWF0dGluZ1Byb3Zp ZGVyCisgICAgICAgICAgICAgICAgICAgICAgICg6cmFuZ2UgLChsaXN0IDpzdGFydCAoZWdsb3Qt LXBvcy10by1sc3AtcG9zaXRpb24gYmVnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDplbmQgKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGVuZCkpKSkpCi0gICAgICAgICAg ICAgICAgKHQKLSAgICAgICAgICAgICAgICAgJyg6dGV4dERvY3VtZW50L2Zvcm1hdHRpbmcgOmRv Y3VtZW50Rm9ybWF0dGluZ1Byb3ZpZGVyIG5pbCkpKSkpCisgICAgICAgICAgICAgICAgICAodAor ICAgICAgICAgICAgICAgICAgICAnKDp0ZXh0RG9jdW1lbnQvZm9ybWF0dGluZyA6ZG9jdW1lbnRG b3JtYXR0aW5nUHJvdmlkZXIgbmlsKSkpKSkKICAgICAodW5sZXNzIChlZ2xvdC0tc2VydmVyLWNh cGFibGUgY2FwKQogICAgICAgKGVnbG90LS1lcnJvciAiU2VydmVyIGNhbid0IGZvcm1hdCEiKSkK ICAgICAoZWdsb3QtLWFwcGx5LXRleHQtZWRpdHMKLSAgICAgKGpzb25ycGMtcmVxdWVzdAotICAg ICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQotICAgICAgbWV0aG9kCi0gICAgICAo Y2wtbGlzdCoKLSAgICAgICA6dGV4dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRp ZmllcikKLSAgICAgICA6b3B0aW9ucyAobGlzdCA6dGFiU2l6ZSB0YWItd2lkdGgKLSAgICAgICAg ICAgICAgICAgICAgICA6aW5zZXJ0U3BhY2VzIChpZiBpbmRlbnQtdGFicy1tb2RlIDpqc29uLWZh bHNlIHQpCi0gICAgICAgICAgICAgICAgICAgICAgOmluc2VydEZpbmFsTmV3bGluZSAoaWYgcmVx dWlyZS1maW5hbC1uZXdsaW5lIHQgOmpzb24tZmFsc2UpCi0gICAgICAgICAgICAgICAgICAgICAg OnRyaW1GaW5hbE5ld2xpbmVzIChpZiBkZWxldGUtdHJhaWxpbmctbGluZXMgdCA6anNvbi1mYWxz ZSkpCi0gICAgICAgYXJncykKLSAgICAgIDpkZWZlcnJlZCBtZXRob2QpKSkpCisgICAgICAoanNv bnJwYy1yZXF1ZXN0CisgICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKKyAg ICAgICAgbWV0aG9kCisgICAgICAgIChjbC1saXN0KgorICAgICAgICAgIDp0ZXh0RG9jdW1lbnQg KGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKQorICAgICAgICAgIDpvcHRpb25zIChsaXN0 IDp0YWJTaXplIHRhYi13aWR0aAorICAgICAgICAgICAgICAgICAgICAgOmluc2VydFNwYWNlcyAo aWYgaW5kZW50LXRhYnMtbW9kZSA6anNvbi1mYWxzZSB0KQorICAgICAgICAgICAgICAgICAgICAg Omluc2VydEZpbmFsTmV3bGluZSAoaWYgcmVxdWlyZS1maW5hbC1uZXdsaW5lIHQgOmpzb24tZmFs c2UpCisgICAgICAgICAgICAgICAgICAgICA6dHJpbUZpbmFsTmV3bGluZXMgKGlmIGRlbGV0ZS10 cmFpbGluZy1saW5lcyB0IDpqc29uLWZhbHNlKSkKKyAgICAgICAgICBhcmdzKQorICAgICAgICA6 ZGVmZXJyZWQgbWV0aG9kKSkpKQogCiAoZGVmdW4gZWdsb3QtY29tcGxldGlvbi1hdC1wb2ludCAo KQogICAiRWdsb3QncyBgY29tcGxldGlvbi1hdC1wb2ludCcgZnVuY3Rpb24uIgogICA7OyBDb21t aXQgbG9ncyBmb3IgdGhpcyBmdW5jdGlvbiBoZWxwIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9u LgogICAod2hlbi1sZXQgKGNvbXBsZXRpb24tY2FwYWJpbGl0eSAoZWdsb3QtLXNlcnZlci1jYXBh YmxlIDpjb21wbGV0aW9uUHJvdmlkZXIpKQogICAgIChsZXQqICgoc2VydmVyIChlZ2xvdC0tY3Vy cmVudC1zZXJ2ZXItb3ItbG9zZSkpCi0gICAgICAgICAgIChzb3J0LWNvbXBsZXRpb25zCi0gICAg ICAgICAgICAobGFtYmRhIChjb21wbGV0aW9ucykKLSAgICAgICAgICAgICAgKGNsLXNvcnQgY29t cGxldGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgIydzdHJpbmctbGVzc3AKLSAgICAgICAg ICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChjKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChwbGlzdC1nZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBjKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6c29ydFRleHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiIpKSkpKQotICAgICAgICAgICAobWV0YWRhdGEgYChtZXRhZGF0YSAoY2F0ZWdv cnkgLiBlZ2xvdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktc29y dC1mdW5jdGlvbiAuICxzb3J0LWNvbXBsZXRpb25zKSkpCi0gICAgICAgICAgIHJlc3AgaXRlbXMg KGNhY2hlZC1wcm94aWVzIDpub25lKQotICAgICAgICAgICAocHJveGllcwotICAgICAgICAgICAg KGxhbWJkYSAoKQotICAgICAgICAgICAgICAoaWYgKGxpc3RwIGNhY2hlZC1wcm94aWVzKSBjYWNo ZWQtcHJveGllcwotICAgICAgICAgICAgICAgIChzZXRxIHJlc3AKLSAgICAgICAgICAgICAgICAg ICAgICAoanNvbnJwYy1yZXF1ZXN0IHNlcnZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOnRleHREb2N1bWVudC9jb21wbGV0aW9uCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLUNvbXBsZXRpb25QYXJhbXMpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGVmZXJyZWQgOnRleHREb2N1bWVudC9jb21w bGV0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2FuY2VsLW9u LWlucHV0IHQpKQotICAgICAgICAgICAgICAgIChzZXRxIGl0ZW1zIChhcHBlbmQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmICh2ZWN0b3JwIHJlc3ApIHJlc3AgKHBsaXN0LWdldCBy ZXNwIDppdGVtcykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCkpCi0gICAgICAg ICAgICAgICAgKHNldHEgY2FjaGVkLXByb3hpZXMKLSAgICAgICAgICAgICAgICAgICAgICAobWFw Y2FyCi0gICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLWxhbWJkYQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCZyZXN0IGl0ZW0gJmtleSBsYWJlbCBpbnNlcnRUZXh0IGluc2VydFRl eHRGb3JtYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWxsb3ctb3RoZXIt a2V5cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocHJveHkKKyAgICAgICAgICAg IChzb3J0LWNvbXBsZXRpb25zCisgICAgICAgICAgICAgIChsYW1iZGEgKGNvbXBsZXRpb25zKQor ICAgICAgICAgICAgICAgIChjbC1zb3J0IGNvbXBsZXRpb25zCisgICAgICAgICAgICAgICAgICAj J3N0cmluZy1sZXNzcAorICAgICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChjKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChvciAocGxpc3QtZ2V0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBjKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpzb3J0VGV4dCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICIiKSkpKSkKKyAgICAgICAgICAgIChtZXRhZGF0YSBgKG1ldGFkYXRhIChjYXRlZ29y eSAuIGVnbG90KQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5LXNvcnQtZnVuY3Rp b24gLiAsc29ydC1jb21wbGV0aW9ucykpKQorICAgICAgICAgICAgcmVzcCBpdGVtcyAoY2FjaGVk LXByb3hpZXMgOm5vbmUpCisgICAgICAgICAgICAocHJveGllcworICAgICAgICAgICAgICAobGFt YmRhICgpCisgICAgICAgICAgICAgICAgKGlmIChsaXN0cCBjYWNoZWQtcHJveGllcykgY2FjaGVk LXByb3hpZXMKKyAgICAgICAgICAgICAgICAgIChzZXRxIHJlc3AKKyAgICAgICAgICAgICAgICAg ICAgKGpzb25ycGMtcmVxdWVzdCBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgICA6dGV4dERv Y3VtZW50L2NvbXBsZXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLUNvbXBsZXRp b25QYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgOmRlZmVycmVkIDp0ZXh0RG9jdW1lbnQv Y29tcGxldGlvbgorICAgICAgICAgICAgICAgICAgICAgIDpjYW5jZWwtb24taW5wdXQgdCkpCisg ICAgICAgICAgICAgICAgICAoc2V0cSBpdGVtcyAoYXBwZW5kCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAodmVjdG9ycCByZXNwKSByZXNwIChwbGlzdC1nZXQgcmVzcCA6aXRl bXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpKQorICAgICAgICAgICAg ICAgICAgKHNldHEgY2FjaGVkLXByb3hpZXMKKyAgICAgICAgICAgICAgICAgICAgKG1hcGNhcgor ICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLWxhbWJkYQorICAgICAgICAgICAgICAgICAg ICAgICAgKCZyZXN0IGl0ZW0gJmtleSBsYWJlbCBpbnNlcnRUZXh0IGluc2VydFRleHRGb3JtYXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgJmFsbG93LW90aGVyLWtleXMpCisgICAgICAgICAg ICAgICAgICAgICAgICAobGV0ICgocHJveHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbmQgKChhbmQgKGVxbCBpbnNlcnRUZXh0Rm9ybWF0IDIpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tc25pcHBldC1leHBhbnNpb24tZm4p KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10cmltLWxl ZnQgbGFiZWwpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCBp bnNlcnRUZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChu b3QgKHN0cmluZy1lbXB0eS1wIGluc2VydFRleHQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGluc2VydFRleHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLXRyaW0tbGVmdCBsYWJlbCkpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAodW5s ZXNzICh6ZXJvcCAobGVuZ3RoIHByb3h5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHB1dC10ZXh0LXByb3BlcnR5IDAgMSAnZWdsb3QtLWxzcC1pdGVtIGl0ZW0gcHJveHkpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJveHkpKQotICAgICAgICAgICAgICAgICAgICAgICBp dGVtcykpKSkpCi0gICAgICAgICAgIChyZXNvbHZlZCAobWFrZS1oYXNoLXRhYmxlKSkKLSAgICAg ICAgICAgKHJlc29sdmUtbWF5YmUKLSAgICAgICAgICAgIDs7IE1heWJlIGNvbXBsZXRpb24vcmVz b2x2ZSBKU09OIG9iamVjdCBgbHNwLWNvbXAnIGludG8KLSAgICAgICAgICAgIDs7IGFub3RoZXIg SlNPTiBvYmplY3QsIGlmIGF0IGFsbCBwb3NzaWJsZS4gIE90aGVyd2lzZSwKLSAgICAgICAgICAg IDs7IGp1c3QgcmV0dXJuIGxzcC1jb21wLgotICAgICAgICAgICAgKGxhbWJkYSAobHNwLWNvbXAp Ci0gICAgICAgICAgICAgIChvciAoZ2V0aGFzaCBsc3AtY29tcCByZXNvbHZlZCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1zbmlwcGV0LWV4cGFuc2lv bi1mbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10 cmltLWxlZnQgbGFiZWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5k IGluc2VydFRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChz dHJpbmctZW1wdHktcCBpbnNlcnRUZXh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnNlcnRUZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0tbGVmdCBs YWJlbCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKHplcm9wIChsZW5n dGggcHJveHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0 eSAwIDEgJ2VnbG90LS1sc3AtaXRlbSBpdGVtIHByb3h5KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJveHkpKQorICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zKSkpKSkKKyAgICAgICAg ICAgIChyZXNvbHZlZCAobWFrZS1oYXNoLXRhYmxlKSkKKyAgICAgICAgICAgIChyZXNvbHZlLW1h eWJlCisgICAgICAgICAgICAgIDs7IE1heWJlIGNvbXBsZXRpb24vcmVzb2x2ZSBKU09OIG9iamVj dCBgbHNwLWNvbXAnIGludG8KKyAgICAgICAgICAgICAgOzsgYW5vdGhlciBKU09OIG9iamVjdCwg aWYgYXQgYWxsIHBvc3NpYmxlLiAgT3RoZXJ3aXNlLAorICAgICAgICAgICAgICA7OyBqdXN0IHJl dHVybiBsc3AtY29tcC4KKyAgICAgICAgICAgICAgKGxhbWJkYSAobHNwLWNvbXApCisgICAgICAg ICAgICAgICAgKG9yIChnZXRoYXNoIGxzcC1jb21wIHJlc29sdmVkKQogICAgICAgICAgICAgICAg ICAgKHNldGYgKGdldGhhc2ggbHNwLWNvbXAgcmVzb2x2ZWQpCi0gICAgICAgICAgICAgICAgICAg ICAgICAoaWYgKGFuZCAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb21wbGV0aW9uUHJvdmlkZXIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OnJlc29sdmVQcm92aWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlz dC1nZXQgbHNwLWNvbXAgOmRhdGEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29u cnBjLXJlcXVlc3Qgc2VydmVyIDpjb21wbGV0aW9uSXRlbS9yZXNvbHZlCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3AtY29tcCA6Y2FuY2VsLW9uLWlucHV0 IHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxzcC1jb21wKSkpKSkKLSAgICAgICAgICAg KGJvdW5kcyAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICdzeW1ib2wpKSkKKyAgICAgICAgICAg ICAgICAgICAgKGlmIChhbmQgKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6Y29tcGxldGlvblByb3Zp ZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnJlc29sdmVQcm92aWRlcikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBsc3AtY29tcCA6ZGF0YSkpCisgICAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtcmVxdWVzdCBzZXJ2ZXIgOmNvbXBsZXRpb25JdGVt L3Jlc29sdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzcC1jb21wIDpjYW5jZWwtb24taW5w dXQgdCkKKyAgICAgICAgICAgICAgICAgICAgICBsc3AtY29tcCkpKSkpCisgICAgICAgICAgICAo Ym91bmRzIChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQogICAgICAgKGxpc3QK LSAgICAgICAob3IgKGNhciBib3VuZHMpIChwb2ludCkpCi0gICAgICAgKG9yIChjZHIgYm91bmRz KSAocG9pbnQpKQotICAgICAgIChsYW1iZGEgKHByb2JlIHByZWQgYWN0aW9uKQotICAgICAgICAg KGNvbmQKLSAgICAgICAgICAoKGVxIGFjdGlvbiAnbWV0YWRhdGEpIG1ldGFkYXRhKSAgICAgICAg ICAgICAgIDsgbWV0YWRhdGEKLSAgICAgICAgICAoKGVxIGFjdGlvbiAnbGFtYmRhKSAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgdGVzdC1jb21wbGV0aW9uCi0gICAgICAgICAgICh0ZXN0LWNv bXBsZXRpb24gcHJvYmUgKGZ1bmNhbGwgcHJveGllcykpKQotICAgICAgICAgICgoZXEgKGNhci1z YWZlIGFjdGlvbikgJ2JvdW5kYXJpZXMpIG5pbCkgICAgICAgOyBib3VuZGFyaWVzCi0gICAgICAg ICAgKChudWxsIGFjdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHRyeS1j b21wbGV0aW9uCi0gICAgICAgICAgICh0cnktY29tcGxldGlvbiBwcm9iZSAoZnVuY2FsbCBwcm94 aWVzKSkpCi0gICAgICAgICAgKChlcSBhY3Rpb24gdCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7IGFsbC1jb21wbGV0aW9ucwotICAgICAgICAgICAoYWxsLWNvbXBsZXRpb25zCi0g ICAgICAgICAgICAiIgotICAgICAgICAgICAgKGZ1bmNhbGwgcHJveGllcykKLSAgICAgICAgICAg IChsYW1iZGEgKHByb3h5KQotICAgICAgICAgICAgICAobGV0KiAoKGl0ZW0gKGdldC10ZXh0LXBy b3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkpCi0gICAgICAgICAgICAgICAgICAgICAo ZmlsdGVyVGV4dCAocGxpc3QtZ2V0IGl0ZW0gOmZpbHRlclRleHQpKSkKLSAgICAgICAgICAgICAg ICAoYW5kIChvciAobnVsbCBwcmVkKSAoZnVuY2FsbCBwcmVkIHByb3h5KSkKLSAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctcHJlZml4LXAKLSAgICAgICAgICAgICAgICAgICAgICBwcm9iZSAo b3IgZmlsdGVyVGV4dCBwcm94eSkgY29tcGxldGlvbi1pZ25vcmUtY2FzZSkpKSkpKSkpCi0gICAg ICAgOmFubm90YXRpb24tZnVuY3Rpb24KLSAgICAgICAobGFtYmRhIChwcm94eSkKLSAgICAgICAg IChlZ2xvdC0tZGJpbmQgKChDb21wbGV0aW9uSXRlbSkgZGV0YWlsIGtpbmQpCi0gICAgICAgICAg ICAgKGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkKLSAgICAgICAg ICAgKGxldCogKChkZXRhaWwgKGFuZCAoc3RyaW5ncCBkZXRhaWwpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5vdCAoc3RyaW5nPSBkZXRhaWwgIiIpKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRldGFpbCkpCi0gICAgICAgICAgICAgICAgICAoYW5ub3RhdGlvbgot ICAgICAgICAgICAgICAgICAgIChvciBkZXRhaWwKLSAgICAgICAgICAgICAgICAgICAgICAgKGNk ciAoYXNzb2Mga2luZCBlZ2xvdC0ta2luZC1uYW1lcykpKSkpCi0gICAgICAgICAgICAgKHdoZW4g YW5ub3RhdGlvbgotICAgICAgICAgICAgICAgKGNvbmNhdCAiICIKLSAgICAgICAgICAgICAgICAg ICAgICAgKHByb3BlcnRpemUgYW5ub3RhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZmFjZSAnZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkpKSkpKQotICAgICAg IDpjb21wYW55LWtpbmQKLSAgICAgICA7OyBBc3NvY2lhdGUgZWFjaCBsc3AtaXRlbSB3aXRoIGEg bHNwLWtpbmQgc3ltYm9sLgotICAgICAgIChsYW1iZGEgKHByb3h5KQotICAgICAgICAgKHdoZW4t bGV0KiAoKGxzcC1pdGVtIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0ZW0gcHJv eHkpKQotICAgICAgICAgICAgICAgICAgICAgKGtpbmQgKGFsaXN0LWdldCAocGxpc3QtZ2V0IGxz cC1pdGVtIDpraW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2xv dC0ta2luZC1uYW1lcykpKQotICAgICAgICAgICAoaW50ZXJuIChkb3duY2FzZSBraW5kKSkpKQot ICAgICAgIDpjb21wYW55LWRlcHJlY2F0ZWQKLSAgICAgICAobGFtYmRhIChwcm94eSkKLSAgICAg ICAgICh3aGVuLWxldCAoKGxzcC1pdGVtIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNw LWl0ZW0gcHJveHkpKSkKLSAgICAgICAgICAgKG9yIChzZXEtY29udGFpbnMtcCAocGxpc3QtZ2V0 IGxzcC1pdGVtIDp0YWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpCi0gICAg ICAgICAgICAgICAoZXEgdCAocGxpc3QtZ2V0IGxzcC1pdGVtIDpkZXByZWNhdGVkKSkpKSkKLSAg ICAgICA6Y29tcGFueS1kb2NzaWcKLSAgICAgICA7OyBGSVhNRTogYXV0b0ltcG9ydFRleHQgaXMg c3BlY2lmaWMgdG8gdGhlIHB5cmlnaHQgbGFuZ3VhZ2Ugc2VydmVyCi0gICAgICAgKGxhbWJkYSAo cHJveHkpCi0gICAgICAgICAod2hlbi1sZXQqICgobHNwLWNvbXAgKGdldC10ZXh0LXByb3BlcnR5 IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkpCi0gICAgICAgICAgICAgICAgICAgICAoZGF0YSAo cGxpc3QtZ2V0IChmdW5jYWxsIHJlc29sdmUtbWF5YmUgbHNwLWNvbXApIDpkYXRhKSkKLSAgICAg ICAgICAgICAgICAgICAgIChpbXBvcnQtdGV4dCAocGxpc3QtZ2V0IGRhdGEgOmF1dG9JbXBvcnRU ZXh0KSkpCi0gICAgICAgICAgIGltcG9ydC10ZXh0KSkKLSAgICAgICA6Y29tcGFueS1kb2MtYnVm ZmVyCi0gICAgICAgKGxhbWJkYSAocHJveHkpCi0gICAgICAgICAobGV0KiAoKGRvY3VtZW50YXRp b24KLSAgICAgICAgICAgICAgICAgKGxldCAoKGxzcC1jb21wIChnZXQtdGV4dC1wcm9wZXJ0eSAw ICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkpKSkKLSAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IChmdW5jYWxsIHJlc29sdmUtbWF5YmUgbHNwLWNvbXApIDpkb2N1bWVudGF0aW9uKSkpCi0gICAg ICAgICAgICAgICAgKGZvcm1hdHRlZCAoYW5kIGRvY3VtZW50YXRpb24KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVnbG90LS1mb3JtYXQtbWFya3VwIGRvY3VtZW50YXRpb24pKSkp Ci0gICAgICAgICAgICh3aGVuIGZvcm1hdHRlZAotICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiICplZ2xvdCBkb2MqIikKLSAgICAgICAgICAgICAg IChlcmFzZS1idWZmZXIpCi0gICAgICAgICAgICAgICAoaW5zZXJ0IGZvcm1hdHRlZCkKLSAgICAg ICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpKSkpCi0gICAgICAgOmNvbXBhbnktcmVxdWlyZS1t YXRjaCAnbmV2ZXIKLSAgICAgICA6Y29tcGFueS1wcmVmaXgtbGVuZ3RoCi0gICAgICAgKHNhdmUt ZXhjdXJzaW9uCi0gICAgICAgICAod2hlbiAoY2FyIGJvdW5kcykgKGdvdG8tY2hhciAoY2FyIGJv dW5kcykpKQotICAgICAgICAgKHdoZW4gKGxpc3RwIGNvbXBsZXRpb24tY2FwYWJpbGl0eSkKLSAg ICAgICAgICAgKGxvb2tpbmctYmFjawotICAgICAgICAgICAgKHJlZ2V4cC1vcHQKLSAgICAgICAg ICAgICAoY2wtY29lcmNlIChjbC1nZXRmIGNvbXBsZXRpb24tY2FwYWJpbGl0eSA6dHJpZ2dlckNo YXJhY3RlcnMpICdsaXN0KSkKLSAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikp KSkKLSAgICAgICA6ZXhpdC1mdW5jdGlvbgotICAgICAgIChsYW1iZGEgKHByb3h5IHN0YXR1cykK LSAgICAgICAgICh3aGVuIChtZW1xIHN0YXR1cyAnKGZpbmlzaGVkIGV4YWN0KSkKLSAgICAgICAg ICAgOzsgVG8gYXNzaXN0IGluIHVzaW5nIHRoaXMgd2hvbGUgYGNvbXBsZXRpb24tYXQtcG9pbnQn Ci0gICAgICAgICAgIDs7IGZ1bmN0aW9uIGluc2lkZSBgY29tcGxldGlvbi1pbi1yZWdpb24nLCBl bnN1cmUgdGhlIGV4aXQKLSAgICAgICAgICAgOzsgZnVuY3Rpb24gcnVucyBpbiB0aGUgYnVmZmVy IHdoZXJlIHRoZSBjb21wbGV0aW9uIHdhcwotICAgICAgICAgICA7OyB0cmlnZ2VyZWQgZnJvbS4g IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGluIEVtYWNzIGl0c2VsZi4KLSAgICAgICAgICAgOzsg KGdpdGh1YiM1MDUpCi0gICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChpZiAobWluaWJ1 ZmZlcnApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2luZG93LWJ1ZmZl ciAobWluaWJ1ZmZlci1zZWxlY3RlZC13aW5kb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpCi0gICAgICAgICAgICAgKGVnbG90LS1kYmluZCAo KENvbXBsZXRpb25JdGVtKSBpbnNlcnRUZXh0Rm9ybWF0Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zZXJ0VGV4dCB0ZXh0RWRpdCBhZGRpdGlvbmFsVGV4dEVkaXRzIGxhYmVsKQotICAg ICAgICAgICAgICAgICAoZnVuY2FsbAorICAgICAgICAob3IgKGNhciBib3VuZHMpIChwb2ludCkp CisgICAgICAgIChvciAoY2RyIGJvdW5kcykgKHBvaW50KSkKKyAgICAgICAgKGxhbWJkYSAocHJv YmUgcHJlZCBhY3Rpb24pCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICgoZXEgYWN0aW9u ICdtZXRhZGF0YSkgbWV0YWRhdGEpICAgICAgICAgICAgICAgOyBtZXRhZGF0YQorICAgICAgICAg ICAgKChlcSBhY3Rpb24gJ2xhbWJkYSkgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHRlc3Qt Y29tcGxldGlvbgorICAgICAgICAgICAgICAodGVzdC1jb21wbGV0aW9uIHByb2JlIChmdW5jYWxs IHByb3hpZXMpKSkKKyAgICAgICAgICAgICgoZXEgKGNhci1zYWZlIGFjdGlvbikgJ2JvdW5kYXJp ZXMpIG5pbCkgICAgICAgOyBib3VuZGFyaWVzCisgICAgICAgICAgICAoKG51bGwgYWN0aW9uKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgdHJ5LWNvbXBsZXRpb24KKyAgICAgICAg ICAgICAgKHRyeS1jb21wbGV0aW9uIHByb2JlIChmdW5jYWxsIHByb3hpZXMpKSkKKyAgICAgICAg ICAgICgoZXEgYWN0aW9uIHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBhbGwt Y29tcGxldGlvbnMKKyAgICAgICAgICAgICAgKGFsbC1jb21wbGV0aW9ucworICAgICAgICAgICAg ICAgICIiCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgcHJveGllcykKKyAgICAgICAgICAgICAg ICAobGFtYmRhIChwcm94eSkKKyAgICAgICAgICAgICAgICAgIChsZXQqICgoaXRlbSAoZ2V0LXRl eHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZpbHRlclRleHQgKHBsaXN0LWdldCBpdGVtIDpmaWx0ZXJUZXh0KSkpCisgICAg ICAgICAgICAgICAgICAgIChhbmQgKG9yIChudWxsIHByZWQpIChmdW5jYWxsIHByZWQgcHJveHkp KQorICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctcHJlZml4LXAKKyAgICAgICAgICAgICAg ICAgICAgICAgIHByb2JlIChvciBmaWx0ZXJUZXh0IHByb3h5KSBjb21wbGV0aW9uLWlnbm9yZS1j YXNlKSkpKSkpKSkKKyAgICAgICAgOmFubm90YXRpb24tZnVuY3Rpb24KKyAgICAgICAgKGxhbWJk YSAocHJveHkpCisgICAgICAgICAgKGVnbG90LS1kYmluZCAoKENvbXBsZXRpb25JdGVtKSBkZXRh aWwga2luZCkKKyAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0 ZW0gcHJveHkpCisgICAgICAgICAgICAobGV0KiAoKGRldGFpbCAoYW5kIChzdHJpbmdwIGRldGFp bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoc3RyaW5nPSBkZXRhaWwgIiIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwpKQorICAgICAgICAgICAgICAg ICAgICAoYW5ub3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIChvciBkZXRhaWwKKyAgICAg ICAgICAgICAgICAgICAgICAgIChjZHIgKGFzc29jIGtpbmQgZWdsb3QtLWtpbmQtbmFtZXMpKSkp KQorICAgICAgICAgICAgICAod2hlbiBhbm5vdGF0aW9uCisgICAgICAgICAgICAgICAgKGNvbmNh dCAiICIKKyAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplIGFubm90YXRpb24KKyAgICAgICAg ICAgICAgICAgICAgJ2ZhY2UgJ2ZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpKSkpKSkKKyAg ICAgICAgOmNvbXBhbnkta2luZAorICAgICAgICA7OyBBc3NvY2lhdGUgZWFjaCBsc3AtaXRlbSB3 aXRoIGEgbHNwLWtpbmQgc3ltYm9sLgorICAgICAgICAobGFtYmRhIChwcm94eSkKKyAgICAgICAg ICAod2hlbi1sZXQqICgobHNwLWl0ZW0gKGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3At aXRlbSBwcm94eSkpCisgICAgICAgICAgICAgICAgICAgICAgIChraW5kIChhbGlzdC1nZXQgKHBs aXN0LWdldCBsc3AtaXRlbSA6a2luZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl Z2xvdC0ta2luZC1uYW1lcykpKQorICAgICAgICAgICAgKGludGVybiAoZG93bmNhc2Uga2luZCkp KSkKKyAgICAgICAgOmNvbXBhbnktZGVwcmVjYXRlZAorICAgICAgICAobGFtYmRhIChwcm94eSkK KyAgICAgICAgICAod2hlbi1sZXQgKChsc3AtaXRlbSAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWds b3QtLWxzcC1pdGVtIHByb3h5KSkpCisgICAgICAgICAgICAob3IgKHNlcS1jb250YWlucy1wIChw bGlzdC1nZXQgbHNwLWl0ZW0gOnRhZ3MpCisgICAgICAgICAgICAgICAgICAxKQorICAgICAgICAg ICAgICAoZXEgdCAocGxpc3QtZ2V0IGxzcC1pdGVtIDpkZXByZWNhdGVkKSkpKSkKKyAgICAgICAg OmNvbXBhbnktZG9jc2lnCisgICAgICAgIDs7IEZJWE1FOiBhdXRvSW1wb3J0VGV4dCBpcyBzcGVj aWZpYyB0byB0aGUgcHlyaWdodCBsYW5ndWFnZSBzZXJ2ZXIKKyAgICAgICAgKGxhbWJkYSAocHJv eHkpCisgICAgICAgICAgKHdoZW4tbGV0KiAoKGxzcC1jb21wIChnZXQtdGV4dC1wcm9wZXJ0eSAw ICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZGF0YSAo cGxpc3QtZ2V0IChmdW5jYWxsIHJlc29sdmUtbWF5YmUgbHNwLWNvbXApIDpkYXRhKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgKGltcG9ydC10ZXh0IChwbGlzdC1nZXQgZGF0YSA6YXV0b0ltcG9y dFRleHQpKSkKKyAgICAgICAgICAgIGltcG9ydC10ZXh0KSkKKyAgICAgICAgOmNvbXBhbnktZG9j LWJ1ZmZlcgorICAgICAgICAobGFtYmRhIChwcm94eSkKKyAgICAgICAgICAobGV0KiAoKGRvY3Vt ZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAobGV0ICgobHNwLWNvbXAgKGdldC10ZXh0LXBy b3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkpKQorICAgICAgICAgICAgICAgICAgICAg KHBsaXN0LWdldCAoZnVuY2FsbCByZXNvbHZlLW1heWJlIGxzcC1jb21wKSA6ZG9jdW1lbnRhdGlv bikpKQorICAgICAgICAgICAgICAgICAgKGZvcm1hdHRlZCAoYW5kIGRvY3VtZW50YXRpb24KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWZvcm1hdC1tYXJrdXAgZG9jdW1l bnRhdGlvbikpKSkKKyAgICAgICAgICAgICh3aGVuIGZvcm1hdHRlZAorICAgICAgICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiAqZWdsb3QgZG9jKiIpCisg ICAgICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IGZv cm1hdHRlZCkKKyAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpKQorICAgICAgICA6 Y29tcGFueS1yZXF1aXJlLW1hdGNoICduZXZlcgorICAgICAgICA6Y29tcGFueS1wcmVmaXgtbGVu Z3RoCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICh3aGVuIChjYXIgYm91bmRz KSAoZ290by1jaGFyIChjYXIgYm91bmRzKSkpCisgICAgICAgICAgKHdoZW4gKGxpc3RwIGNvbXBs ZXRpb24tY2FwYWJpbGl0eSkKKyAgICAgICAgICAgIChsb29raW5nLWJhY2sKKyAgICAgICAgICAg ICAgKHJlZ2V4cC1vcHQKKyAgICAgICAgICAgICAgICAoY2wtY29lcmNlIChjbC1nZXRmIGNvbXBs ZXRpb24tY2FwYWJpbGl0eSA6dHJpZ2dlckNoYXJhY3RlcnMpICdsaXN0KSkKKyAgICAgICAgICAg ICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpKQorICAgICAgICA6ZXhpdC1mdW5jdGlvbgor ICAgICAgICAobGFtYmRhIChwcm94eSBzdGF0dXMpCisgICAgICAgICAgKHdoZW4gKG1lbXEgc3Rh dHVzICcoZmluaXNoZWQgZXhhY3QpKQorICAgICAgICAgICAgOzsgVG8gYXNzaXN0IGluIHVzaW5n IHRoaXMgd2hvbGUgYGNvbXBsZXRpb24tYXQtcG9pbnQnCisgICAgICAgICAgICA7OyBmdW5jdGlv biBpbnNpZGUgYGNvbXBsZXRpb24taW4tcmVnaW9uJywgZW5zdXJlIHRoZSBleGl0CisgICAgICAg ICAgICA7OyBmdW5jdGlvbiBydW5zIGluIHRoZSBidWZmZXIgd2hlcmUgdGhlIGNvbXBsZXRpb24g d2FzCisgICAgICAgICAgICA7OyB0cmlnZ2VyZWQgZnJvbS4gIFRoaXMgc2hvdWxkIHByb2JhYmx5 IGJlIGluIEVtYWNzIGl0c2VsZi4KKyAgICAgICAgICAgIDs7IChnaXRodWIjNTA1KQorICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGlmIChtaW5pYnVmZmVycCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1idWZmZXIgKG1pbmlidWZmZXItc2VsZWN0 ZWQtd2luZG93KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQt YnVmZmVyKSkKKyAgICAgICAgICAgICAgKGVnbG90LS1kYmluZCAoKENvbXBsZXRpb25JdGVtKSBp bnNlcnRUZXh0Rm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0 IHRleHRFZGl0IGFkZGl0aW9uYWxUZXh0RWRpdHMgbGFiZWwpCisgICAgICAgICAgICAgICAgKGZ1 bmNhbGwKICAgICAgICAgICAgICAgICAgIHJlc29sdmUtbWF5YmUKICAgICAgICAgICAgICAgICAg IChvciAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KQotICAgICAg ICAgICAgICAgICAgICAgIDs7IFdoZW4gc2VsZWN0aW5nIGZyb20gdGhlICpDb21wbGV0aW9ucyoK LSAgICAgICAgICAgICAgICAgICAgICA7OyBidWZmZXIsIGBwcm94eScgd29uJ3QgaGF2ZSBhbnkg cHJvcGVydGllcy4KLSAgICAgICAgICAgICAgICAgICAgICA7OyBBIGxvb2t1cCBzaG91bGQgZml4 IHRoYXQgKGdpdGh1YiMxNDgpCi0gICAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3Bl cnR5Ci0gICAgICAgICAgICAgICAgICAgICAgIDAgJ2VnbG90LS1sc3AtaXRlbQotICAgICAgICAg ICAgICAgICAgICAgICAoY2wtZmluZCBwcm94eSAoZnVuY2FsbCBwcm94aWVzKSA6dGVzdCAjJ3N0 cmluZz0pKSkpCi0gICAgICAgICAgICAgICAobGV0ICgoc25pcHBldC1mbiAoYW5kIChlcWwgaW5z ZXJ0VGV4dEZvcm1hdCAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZWdsb3QtLXNuaXBwZXQtZXhwYW5zaW9uLWZuKSkpKQotICAgICAgICAgICAgICAgICAoY29uZCAo dGV4dEVkaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVuZG8gKHllcywgdW5kbykgdGhl IG5ld2x5IGluc2VydGVkIGNvbXBsZXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA7OyBJ ZiBiZWZvcmUgY29tcGxldGlvbiB0aGUgYnVmZmVyIHdhcyAiZm9vLmIiIGFuZAotICAgICAgICAg ICAgICAgICAgICAgICAgOzsgbm93IGlzICJmb28uYmFyIiwgYHByb3h5JyB3aWxsIGJlICJiYXIi LiAgV2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDs7IHdhbnQgdG8gZGVsZXRlIG9ubHkgImFy IiAoYHByb3h5JyBtaW51cyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDs7IHN5bWJvbCB3 aG9zZSBib3VuZHMgd2UndmUgY2FsY3VsYXRlZCBiZWZvcmUpCi0gICAgICAgICAgICAgICAgICAg ICAgICA7OyAoZ2l0aHViIzE2MCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJl Z2lvbiAoKyAoLSAocG9pbnQpIChsZW5ndGggcHJveHkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIGJvdW5kcwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgtIChjZHIgYm91bmRzKSAoY2FyIGJvdW5kcykpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkKLSAgICAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tZGJpbmQgKChUZXh0RWRpdCkgcmFuZ2UgbmV3VGV4dCkgdGV4dEVkaXQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGJlZyAuICxlbmQpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXJhbmdlLXJlZ2lvbiBy YW5nZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBl bmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKG9yIHNuaXBwZXQtZm4gIydpbnNlcnQpIG5l d1RleHQpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgIChzbmlwcGV0LWZuCi0gICAgICAgICAg ICAgICAgICAgICAgICA7OyBBIHNuaXBwZXQgc2hvdWxkIGJlIGluc2VydGVkLCBidXQgdXNpbmcg cGxhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDs7IGBpbnNlcnRUZXh0Jy4gIFRoaXMgcmVx dWlyZXMgdXMgdG8gZGVsZXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hvbGUg Y29tcGxldGlvbiwgc2luY2UgYGluc2VydFRleHQnIGlzIHRoZSBmdWxsCi0gICAgICAgICAgICAg ICAgICAgICAgICA7OyBjb21wbGV0aW9uJ3MgdGV4dC4KLSAgICAgICAgICAgICAgICAgICAgICAg IChkZWxldGUtcmVnaW9uICgtIChwb2ludCkgKGxlbmd0aCBwcm94eSkpIChwb2ludCkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBzbmlwcGV0LWZuIChvciBpbnNlcnRUZXh0IGxh YmVsKSkpKQotICAgICAgICAgICAgICAgICAod2hlbiAoY2wtcGx1c3AgKGxlbmd0aCBhZGRpdGlv bmFsVGV4dEVkaXRzKSkKLSAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWFwcGx5LXRleHQtZWRp dHMgYWRkaXRpb25hbFRleHRFZGl0cykpKQotICAgICAgICAgICAgICAgKGVnbG90LS1zaWduYWwt dGV4dERvY3VtZW50L2RpZENoYW5nZSkKLSAgICAgICAgICAgICAgIChlbGRvYykpKSkpKSkpKQor ICAgICAgICAgICAgICAgICAgICA7OyBXaGVuIHNlbGVjdGluZyBmcm9tIHRoZSAqQ29tcGxldGlv bnMqCisgICAgICAgICAgICAgICAgICAgIDs7IGJ1ZmZlciwgYHByb3h5JyB3b24ndCBoYXZlIGFu eSBwcm9wZXJ0aWVzLgorICAgICAgICAgICAgICAgICAgICA7OyBBIGxvb2t1cCBzaG91bGQgZml4 IHRoYXQgKGdpdGh1YiMxNDgpCisgICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0 eQorICAgICAgICAgICAgICAgICAgICAgIDAgJ2VnbG90LS1sc3AtaXRlbQorICAgICAgICAgICAg ICAgICAgICAgIChjbC1maW5kIHByb3h5IChmdW5jYWxsIHByb3hpZXMpIDp0ZXN0ICMnc3RyaW5n PSkpKSkKKyAgICAgICAgICAgICAgICAobGV0ICgoc25pcHBldC1mbiAoYW5kIChlcWwgaW5zZXJ0 VGV4dEZvcm1hdCAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90 LS1zbmlwcGV0LWV4cGFuc2lvbi1mbikpKSkKKyAgICAgICAgICAgICAgICAgIChjb25kICh0ZXh0 RWRpdAorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBVbmRvICh5ZXMsIHVuZG8pIHRoZSBu ZXdseSBpbnNlcnRlZCBjb21wbGV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBJ ZiBiZWZvcmUgY29tcGxldGlvbiB0aGUgYnVmZmVyIHdhcyAiZm9vLmIiIGFuZAorICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBub3cgaXMgImZvby5iYXIiLCBgcHJveHknIHdpbGwgYmUgImJh ciIuICBXZQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB3YW50IHRvIGRlbGV0ZSBvbmx5 ICJhciIgKGBwcm94eScgbWludXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHN5 bWJvbCB3aG9zZSBib3VuZHMgd2UndmUgY2FsY3VsYXRlZCBiZWZvcmUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IChnaXRodWIjMTYwKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg KGRlbGV0ZS1yZWdpb24gKCsgKC0gKHBvaW50KSAobGVuZ3RoIHByb3h5KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgYm91bmRzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoY2RyIGJvdW5kcykgKGNhciBib3Vu ZHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGVnbG90LS1kYmluZCAoKFRleHRFZGl0KSByYW5nZSBuZXdUZXh0KSB0ZXh0RWRpdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwY2FzZS1sZXQgKChgKCxiZWcgLiAsZW5kKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1yYW5nZS1y ZWdpb24gcmFuZ2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVn aW9uIGJlZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJl ZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIChvciBzbmlwcGV0LWZu ICMnaW5zZXJ0KSBuZXdUZXh0KSkpKQorICAgICAgICAgICAgICAgICAgICAoc25pcHBldC1mbgor ICAgICAgICAgICAgICAgICAgICAgIDs7IEEgc25pcHBldCBzaG91bGQgYmUgaW5zZXJ0ZWQsIGJ1 dCB1c2luZyBwbGFpbgorICAgICAgICAgICAgICAgICAgICAgIDs7IGBpbnNlcnRUZXh0Jy4gIFRo aXMgcmVxdWlyZXMgdXMgdG8gZGVsZXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgIDs7IHdo b2xlIGNvbXBsZXRpb24sIHNpbmNlIGBpbnNlcnRUZXh0JyBpcyB0aGUgZnVsbAorICAgICAgICAg ICAgICAgICAgICAgIDs7IGNvbXBsZXRpb24ncyB0ZXh0LgorICAgICAgICAgICAgICAgICAgICAg IChkZWxldGUtcmVnaW9uICgtIChwb2ludCkgKGxlbmd0aCBwcm94eSkpIChwb2ludCkpCisgICAg ICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc25pcHBldC1mbiAob3IgaW5zZXJ0VGV4dCBsYWJl bCkpKSkKKyAgICAgICAgICAgICAgICAgICh3aGVuIChjbC1wbHVzcCAobGVuZ3RoIGFkZGl0aW9u YWxUZXh0RWRpdHMpKQorICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWFwcGx5LXRleHQtZWRp dHMgYWRkaXRpb25hbFRleHRFZGl0cykpKQorICAgICAgICAgICAgICAgIChlZ2xvdC0tc2lnbmFs LXRleHREb2N1bWVudC9kaWRDaGFuZ2UpCisgICAgICAgICAgICAgICAgKGVsZG9jKSkpKSkpKSkp CiAKIChkZWZ1biBlZ2xvdC0taG92ZXItaW5mbyAoY29udGVudHMgJm9wdGlvbmFsIF9yYW5nZSkK ICAgKG1hcGNvbmNhdCAjJ2VnbG90LS1mb3JtYXQtbWFya3VwCi0gICAgICAgICAgICAgKGlmICh2 ZWN0b3JwIGNvbnRlbnRzKSBjb250ZW50cyAobGlzdCBjb250ZW50cykpICJcbiIpKQotIAorICAg IChpZiAodmVjdG9ycCBjb250ZW50cykgY29udGVudHMgKGxpc3QgY29udGVudHMpKSAiXG4iKSkK KwogKGRlZnVuIGVnbG90LS1zaWctaW5mbyAoc2lncyBhY3RpdmUtc2lnIHNpZy1oZWxwLWFjdGl2 ZS1wYXJhbSkKICAgKGNsLWxvb3AKLSAgIGZvciAoc2lnIC4gbW9yZXNpZ3MpIG9uIChhcHBlbmQg c2lncyBuaWwpIGZvciBpIGZyb20gMAotICAgY29uY2F0Ci0gICAoZWdsb3QtLWRiaW5kICgoU2ln bmF0dXJlSW5mb3JtYXRpb24pIGxhYmVsIGRvY3VtZW50YXRpb24gcGFyYW1ldGVycyBhY3RpdmVQ YXJhbWV0ZXIpIHNpZwotICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotICAgICAgIChzYXZlLWV4Y3Vy c2lvbiAoaW5zZXJ0IGxhYmVsKSkKLSAgICAgICAobGV0ICgoYWN0aXZlLXBhcmFtIChvciBhY3Rp dmVQYXJhbWV0ZXIgc2lnLWhlbHAtYWN0aXZlLXBhcmFtKSkKLSAgICAgICAgICAgICBwYXJhbXMt c3RhcnQgcGFyYW1zLWVuZCkKLSAgICAgICAgIDs7IEFkLWhvYyBhdHRlbXB0IHRvIHBhcnNlIGxh YmVsIGFzIDxuYW1lPig8cGFyYW1zPikKLSAgICAgICAgICh3aGVuIChsb29raW5nLWF0ICJcXChb XihdK1xcKShcXChbXildK1xcKSkiKQotICAgICAgICAgICAoc2V0cSBwYXJhbXMtc3RhcnQgKG1h dGNoLWJlZ2lubmluZyAyKSBwYXJhbXMtZW5kIChtYXRjaC1lbmQgMikpCi0gICAgICAgICAgIChh ZGQtZmFjZS10ZXh0LXByb3BlcnR5IChtYXRjaC1iZWdpbm5pbmcgMSkgKG1hdGNoLWVuZCAxKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1sb2NrLWZ1bmN0aW9uLW5h bWUtZmFjZSkpCi0gICAgICAgICAod2hlbiAoZXFsIGkgYWN0aXZlLXNpZykKLSAgICAgICAgICAg OzsgRGVjaWRlIHdoZXRoZXIgdG8gYWRkIG9uZS1saW5lLXN1bW1hcnkgdG8gc2lnbmF0dXJlIGxp bmUKLSAgICAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBkb2N1bWVudGF0aW9uKQotICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggIltbOnNwYWNlOl1dKlxcKFteLlxyXG5dK1su XT9cXCkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9u KSkKLSAgICAgICAgICAgICAoc2V0cSBkb2N1bWVudGF0aW9uIChtYXRjaC1zdHJpbmcgMSBkb2N1 bWVudGF0aW9uKSkKLSAgICAgICAgICAgICAodW5sZXNzIChzdHJpbmctcHJlZml4LXAgKHN0cmlu Zy10cmltIGRvY3VtZW50YXRpb24pIGxhYmVsKQotICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWF4KSkKLSAgICAgICAgICAgICAgIChpbnNlcnQgIjogIiAoZWdsb3QtLWZvcm1hdC1t YXJrdXAgZG9jdW1lbnRhdGlvbikpKSkKLSAgICAgICAgICAgOzsgRGVjaWRlIHdoYXQgdG8gZG8g d2l0aCB0aGUgYWN0aXZlIHBhcmFtZXRlci4uLgotICAgICAgICAgICAod2hlbiAoYW5kIChlcWwg aSBhY3RpdmUtc2lnKSBhY3RpdmUtcGFyYW0KLSAgICAgICAgICAgICAgICAgICAgICAoPCAtMSBh Y3RpdmUtcGFyYW0gKGxlbmd0aCBwYXJhbWV0ZXJzKSkpCi0gICAgICAgICAgICAgKGVnbG90LS1k YmluZCAoKFBhcmFtZXRlckluZm9ybWF0aW9uKSBsYWJlbCBkb2N1bWVudGF0aW9uKQotICAgICAg ICAgICAgICAgICAoYXJlZiBwYXJhbWV0ZXJzIGFjdGl2ZS1wYXJhbSkKLSAgICAgICAgICAgICAg IDs7IC4uLnBlcmhhcHMgaGlnaGxpZ2h0IGl0IGluIHRoZSBmb3JtYWxzIGxpc3QKLSAgICAgICAg ICAgICAgICh3aGVuIHBhcmFtcy1zdGFydAotICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBh cmFtcy1zdGFydCkKLSAgICAgICAgICAgICAgICAgKHBjYXNlLWxldAotICAgICAgICAgICAgICAg ICAgICAgKChgKCxiZWcgLGVuZCkKKyAgICBmb3IgKHNpZyAuIG1vcmVzaWdzKSBvbiAoYXBwZW5k IHNpZ3MgbmlsKSBmb3IgaSBmcm9tIDAKKyAgICBjb25jYXQKKyAgICAoZWdsb3QtLWRiaW5kICgo U2lnbmF0dXJlSW5mb3JtYXRpb24pIGxhYmVsIGRvY3VtZW50YXRpb24gcGFyYW1ldGVycyBhY3Rp dmVQYXJhbWV0ZXIpIHNpZworICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgKHNhdmUt ZXhjdXJzaW9uIChpbnNlcnQgbGFiZWwpKQorICAgICAgICAobGV0ICgoYWN0aXZlLXBhcmFtIChv ciBhY3RpdmVQYXJhbWV0ZXIgc2lnLWhlbHAtYWN0aXZlLXBhcmFtKSkKKyAgICAgICAgICAgICAg IHBhcmFtcy1zdGFydCBwYXJhbXMtZW5kKQorICAgICAgICAgIDs7IEFkLWhvYyBhdHRlbXB0IHRv IHBhcnNlIGxhYmVsIGFzIDxuYW1lPig8cGFyYW1zPikKKyAgICAgICAgICAod2hlbiAobG9va2lu Zy1hdCAiXFwoW14oXStcXCkoXFwoW14pXStcXCkpIikKKyAgICAgICAgICAgIChzZXRxIHBhcmFt cy1zdGFydCAobWF0Y2gtYmVnaW5uaW5nIDIpIHBhcmFtcy1lbmQgKG1hdGNoLWVuZCAyKSkKKyAg ICAgICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IChtYXRjaC1iZWdpbm5pbmcgMSkgKG1h dGNoLWVuZCAxKQorICAgICAgICAgICAgICAnZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkp CisgICAgICAgICAgKHdoZW4gKGVxbCBpIGFjdGl2ZS1zaWcpCisgICAgICAgICAgICA7OyBEZWNp ZGUgd2hldGhlciB0byBhZGQgb25lLWxpbmUtc3VtbWFyeSB0byBzaWduYXR1cmUgbGluZQorICAg ICAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBkb2N1bWVudGF0aW9uKQorICAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLW1hdGNoICJbWzpzcGFjZTpdXSpcXChbXi5cclxuXStbLl0/XFwpIgor ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24pKQorICAgICAgICAgICAgICAoc2V0 cSBkb2N1bWVudGF0aW9uIChtYXRjaC1zdHJpbmcgMSBkb2N1bWVudGF0aW9uKSkKKyAgICAgICAg ICAgICAgKHVubGVzcyAoc3RyaW5nLXByZWZpeC1wIChzdHJpbmctdHJpbSBkb2N1bWVudGF0aW9u KSBsYWJlbCkKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQorICAgICAg ICAgICAgICAgIChpbnNlcnQgIjogIiAoZWdsb3QtLWZvcm1hdC1tYXJrdXAgZG9jdW1lbnRhdGlv bikpKSkKKyAgICAgICAgICAgIDs7IERlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIGFjdGl2ZSBw YXJhbWV0ZXIuLi4KKyAgICAgICAgICAgICh3aGVuIChhbmQgKGVxbCBpIGFjdGl2ZS1zaWcpIGFj dGl2ZS1wYXJhbQorICAgICAgICAgICAgICAgICAgICAoPCAtMSBhY3RpdmUtcGFyYW0gKGxlbmd0 aCBwYXJhbWV0ZXJzKSkpCisgICAgICAgICAgICAgIChlZ2xvdC0tZGJpbmQgKChQYXJhbWV0ZXJJ bmZvcm1hdGlvbikgbGFiZWwgZG9jdW1lbnRhdGlvbikKKyAgICAgICAgICAgICAgICAoYXJlZiBw YXJhbWV0ZXJzIGFjdGl2ZS1wYXJhbSkKKyAgICAgICAgICAgICAgICA7OyAuLi5wZXJoYXBzIGhp Z2hsaWdodCBpdCBpbiB0aGUgZm9ybWFscyBsaXN0CisgICAgICAgICAgICAgICAgKHdoZW4gcGFy YW1zLXN0YXJ0CisgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBhcmFtcy1zdGFydCkKKyAg ICAgICAgICAgICAgICAgIChwY2FzZS1sZXQKKyAgICAgICAgICAgICAgICAgICAgKChgKCxiZWcg LGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmdwIGxhYmVsKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggbmlsKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiXFw8IiAocmVnZXhwLXF1b3RlIGxh YmVsKSAiXFw+IikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLWVu ZCB0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChtYXRjaC1iZWdp bm5pbmcgMCkgKG1hdGNoLWVuZCAwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5k IChyZS1zZWFyY2gtZm9yd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25jYXQgIlxcPCIgKHJlZ2V4cC1xdW90ZSBsYWJlbCkgIlxcPiIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFyYW1zLWVuZCB0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGlzdCAobWF0Y2gtYmVnaW5uaW5nIDApIChtYXRjaC1lbmQgMCkpKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAobWFwY2FyICMnMSsgKGFwcGVuZCBsYWJlbCBuaWwpKSkpKQotICAg ICAgICAgICAgICAgICAgIChpZiAoYW5kIGJlZyBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAg IChhZGQtZmFjZS10ZXh0LXByb3BlcnR5CisgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIGJl ZyBlbmQpCisgICAgICAgICAgICAgICAgICAgICAgKGFkZC1mYWNlLXRleHQtcHJvcGVydHkKICAg ICAgICAgICAgICAgICAgICAgICAgIGJlZyBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICdl bGRvYy1oaWdobGlnaHQtZnVuY3Rpb24tYXJndW1lbnQpKSkpCi0gICAgICAgICAgICAgICA7OyAu Li5hbmQvb3IgbWF5YmUgYWRkIGl0cyBkb2Mgb24gYSBsaW5lIGJ5IGl0cyBvd24uCi0gICAgICAg ICAgICAgICAod2hlbiBkb2N1bWVudGF0aW9uCi0gICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1heCkpCi0gICAgICAgICAgICAgICAgIChpbnNlcnQgIlxuIgotICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9wZXJ0aXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo c3RyaW5ncCBsYWJlbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5ICMnYnVmZmVyLXN1YnN0cmluZyAobWFwY2Fy ICMnMSsgbGFiZWwpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ2VsZG9jLWhp Z2hsaWdodC1mdW5jdGlvbi1hcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAiOiAi IChlZ2xvdC0tZm9ybWF0LW1hcmt1cCBkb2N1bWVudGF0aW9uKSkpKSkpCi0gICAgICAgICAoYnVm ZmVyLXN0cmluZykpKSkKLSAgIHdoZW4gbW9yZXNpZ3MgY29uY2F0ICJcbiIpKQorICAgICAgICAg ICAgICAgIDs7IC4uLmFuZC9vciBtYXliZSBhZGQgaXRzIGRvYyBvbiBhIGxpbmUgYnkgaXRzIG93 bi4KKyAgICAgICAgICAgICAgICAod2hlbiBkb2N1bWVudGF0aW9uCisgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAgICAgKGluc2VydCAiXG4i CisgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplCisgICAgICAgICAgICAgICAgICAgICAg KGlmIChzdHJpbmdwIGxhYmVsKQorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwKKyAgICAg ICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2J1ZmZlci1zdWJzdHJpbmcgKG1hcGNhciAjJzEr IGxhYmVsKSkpCisgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ2VsZG9jLWhpZ2hsaWdodC1m dW5jdGlvbi1hcmd1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgIjogIiAoZWdsb3QtLWZvcm1h dC1tYXJrdXAgZG9jdW1lbnRhdGlvbikpKSkpKQorICAgICAgICAgIChidWZmZXItc3RyaW5nKSkp KQorICAgIHdoZW4gbW9yZXNpZ3MgY29uY2F0ICJcbiIpKQogCiAoZGVmdW4gZWdsb3Qtc2lnbmF0 dXJlLWVsZG9jLWZ1bmN0aW9uIChjYikKICAgIkEgbWVtYmVyIG9mIGBlbGRvYy1kb2N1bWVudGF0 aW9uLWZ1bmN0aW9ucycsIGZvciBzaWduYXR1cmVzLiIKICAgKHdoZW4gKGVnbG90LS1zZXJ2ZXIt Y2FwYWJsZSA6c2lnbmF0dXJlSGVscFByb3ZpZGVyKQogICAgIChsZXQgKChidWYgKGN1cnJlbnQt YnVmZmVyKSkpCiAgICAgICAoanNvbnJwYy1hc3luYy1yZXF1ZXN0Ci0gICAgICAgKGVnbG90LS1j dXJyZW50LXNlcnZlci1vci1sb3NlKQotICAgICAgIDp0ZXh0RG9jdW1lbnQvc2lnbmF0dXJlSGVs cCAoZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQotICAgICAgIDpzdWNjZXNzLWZu Ci0gICAgICAgKGVnbG90LS1sYW1iZGEgKChTaWduYXR1cmVIZWxwKQotICAgICAgICAgICAgICAg ICAgICAgICBzaWduYXR1cmVzIGFjdGl2ZVNpZ25hdHVyZSBhY3RpdmVQYXJhbWV0ZXIpCi0gICAg ICAgICAoZWdsb3QtLXdoZW4tYnVmZmVyLXdpbmRvdyBidWYKLSAgICAgICAgICAgKGZ1bmNhbGwg Y2IKLSAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAoc2VxLWVtcHR5LXAgc2lnbmF0dXJlcykK LSAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXNpZy1pbmZvIHNpZ25hdHVyZXMKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVNpZ25hdHVyZQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlUGFyYW1ldGVyKSkpKSkKLSAg ICAgICA6ZGVmZXJyZWQgOnRleHREb2N1bWVudC9zaWduYXR1cmVIZWxwKSkKKyAgICAgICAgKGVn bG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQorICAgICAgICA6dGV4dERvY3VtZW50L3NpZ25h dHVyZUhlbHAgKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtcykKKyAgICAgICAgOnN1 Y2Nlc3MtZm4KKyAgICAgICAgKGVnbG90LS1sYW1iZGEgKChTaWduYXR1cmVIZWxwKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMgYWN0aXZlU2lnbmF0dXJlIGFjdGl2ZVBhcmFt ZXRlcikKKyAgICAgICAgICAoZWdsb3QtLXdoZW4tYnVmZmVyLXdpbmRvdyBidWYKKyAgICAgICAg ICAgIChmdW5jYWxsIGNiCisgICAgICAgICAgICAgICh1bmxlc3MgKHNlcS1lbXB0eS1wIHNpZ25h dHVyZXMpCisgICAgICAgICAgICAgICAgKGVnbG90LS1zaWctaW5mbyBzaWduYXR1cmVzCisgICAg ICAgICAgICAgICAgICBhY3RpdmVTaWduYXR1cmUKKyAgICAgICAgICAgICAgICAgIGFjdGl2ZVBh cmFtZXRlcikpKSkpCisgICAgICAgIDpkZWZlcnJlZCA6dGV4dERvY3VtZW50L3NpZ25hdHVyZUhl bHApKQogICAgIHQpKQogCiAoZGVmdW4gZWdsb3QtaG92ZXItZWxkb2MtZnVuY3Rpb24gKGNiKQpA QCAtMjk3NSwxNCArMzEzMSwxNCBAQCBmb3Igd2hpY2ggTFNQIG9uLXR5cGUtZm9ybWF0dGluZyBz aG91bGQgYmUgcmVxdWVzdGVkLiIKICAgKHdoZW4gKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6aG92 ZXJQcm92aWRlcikKICAgICAobGV0ICgoYnVmIChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgKGpz b25ycGMtYXN5bmMtcmVxdWVzdAotICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSkKLSAgICAgICA6dGV4dERvY3VtZW50L2hvdmVyIChlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRp b25QYXJhbXMpCi0gICAgICAgOnN1Y2Nlc3MtZm4gKGVnbG90LS1sYW1iZGEgKChIb3ZlcikgY29u dGVudHMgcmFuZ2UpCi0gICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdoZW4tYnVmZmVyLXdp bmRvdyBidWYKLSAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGluZm8gKHVubGVzcyAoc2Vx LWVtcHR5LXAgY29udGVudHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGVnbG90LS1ob3Zlci1pbmZvIGNvbnRlbnRzIHJhbmdlKSkpKQotICAgICAgICAgICAgICAgICAg ICAgICAgIChmdW5jYWxsIGNiIGluZm8gOmJ1ZmZlciB0KSkpKQotICAgICAgIDpkZWZlcnJlZCA6 dGV4dERvY3VtZW50L2hvdmVyKSkKKyAgICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1s b3NlKQorICAgICAgICA6dGV4dERvY3VtZW50L2hvdmVyIChlZ2xvdC0tVGV4dERvY3VtZW50UG9z aXRpb25QYXJhbXMpCisgICAgICAgIDpzdWNjZXNzLWZuIChlZ2xvdC0tbGFtYmRhICgoSG92ZXIp IGNvbnRlbnRzIHJhbmdlKQorICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0td2hlbi1idWZm ZXItd2luZG93IGJ1ZgorICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGluZm8gKHVubGVz cyAoc2VxLWVtcHR5LXAgY29udGVudHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlZ2xvdC0taG92ZXItaW5mbyBjb250ZW50cyByYW5nZSkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZ1bmNhbGwgY2IgaW5mbyA6YnVmZmVyIHQpKSkpCisgICAgICAgIDpk ZWZlcnJlZCA6dGV4dERvY3VtZW50L2hvdmVyKSkKICAgICAoZWdsb3QtLWhpZ2hsaWdodC1waWdn eWJhY2sgY2IpCiAgICAgdCkpCiAKQEAgLTI5OTUsODMgKzMxNTEsODMgQEAgZm9yIHdoaWNoIExT UCBvbi10eXBlLWZvcm1hdHRpbmcgc2hvdWxkIGJlIHJlcXVlc3RlZC4iCiAgIChsZXQgKChidWYg KGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgKHdoZW4gKGVnbG90LS1zZXJ2ZXItY2FwYWJsZSA6ZG9j dW1lbnRIaWdobGlnaHRQcm92aWRlcikKICAgICAgIChqc29ucnBjLWFzeW5jLXJlcXVlc3QKLSAg ICAgICAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCi0gICAgICAgOnRleHREb2N1bWVu dC9kb2N1bWVudEhpZ2hsaWdodCAoZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQot ICAgICAgIDpzdWNjZXNzLWZuCi0gICAgICAgKGxhbWJkYSAoaGlnaGxpZ2h0cykKLSAgICAgICAg IChtYXBjICMnZGVsZXRlLW92ZXJsYXkgZWdsb3QtLWhpZ2hsaWdodHMpCi0gICAgICAgICAoc2V0 cSBlZ2xvdC0taGlnaGxpZ2h0cwotICAgICAgICAgICAgICAgKGVnbG90LS13aGVuLWJ1ZmZlci13 aW5kb3cgYnVmCi0gICAgICAgICAgICAgICAgIChtYXBjYXIKLSAgICAgICAgICAgICAgICAgIChl Z2xvdC0tbGFtYmRhICgoRG9jdW1lbnRIaWdobGlnaHQpIHJhbmdlKQotICAgICAgICAgICAgICAg ICAgICAocGNhc2UtbGV0ICgoYCgsYmVnIC4gLGVuZCkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlZ2xvdC0tcmFuZ2UtcmVnaW9uIHJhbmdlKSkpCi0gICAgICAgICAgICAgICAg ICAgICAgKGxldCAoKG92IChtYWtlLW92ZXJsYXkgYmVnIGVuZCkpKQotICAgICAgICAgICAgICAg ICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlICdlZ2xvdC1oaWdobGlnaHQtc3ltYm9sLWZh Y2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21vZGlmaWNhdGlv bi1ob29rcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoLChsYW1iZGEg KG8gJnJlc3QgXykgKGRlbGV0ZS1vdmVybGF5IG8pKSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICBvdikpKQotICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0cykpKSkKLSAgICAgICA6ZGVmZXJy ZWQgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hsaWdodCkKKyAgICAgICAgKGVnbG90LS1jdXJy ZW50LXNlcnZlci1vci1sb3NlKQorICAgICAgICA6dGV4dERvY3VtZW50L2RvY3VtZW50SGlnaGxp Z2h0IChlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMpCisgICAgICAgIDpzdWNjZXNz LWZuCisgICAgICAgIChsYW1iZGEgKGhpZ2hsaWdodHMpCisgICAgICAgICAgKG1hcGMgIydkZWxl dGUtb3ZlcmxheSBlZ2xvdC0taGlnaGxpZ2h0cykKKyAgICAgICAgICAoc2V0cSBlZ2xvdC0taGln aGxpZ2h0cworICAgICAgICAgICAgKGVnbG90LS13aGVuLWJ1ZmZlci13aW5kb3cgYnVmCisgICAg ICAgICAgICAgIChtYXBjYXIKKyAgICAgICAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKERvY3Vt ZW50SGlnaGxpZ2h0KSByYW5nZSkKKyAgICAgICAgICAgICAgICAgIChwY2FzZS1sZXQgKChgKCxi ZWcgLiAsZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXJhbmdl LXJlZ2lvbiByYW5nZSkpKQorICAgICAgICAgICAgICAgICAgICAobGV0ICgob3YgKG1ha2Utb3Zl cmxheSBiZWcgZW5kKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdm YWNlICdlZ2xvdC1oaWdobGlnaHQtc3ltYm9sLWZhY2UpCisgICAgICAgICAgICAgICAgICAgICAg KG92ZXJsYXktcHV0IG92ICdtb2RpZmljYXRpb24taG9va3MKKyAgICAgICAgICAgICAgICAgICAg ICAgIGAoLChsYW1iZGEgKG8gJnJlc3QgXykgKGRlbGV0ZS1vdmVybGF5IG8pKSkpCisgICAgICAg ICAgICAgICAgICAgICAgb3YpKSkKKyAgICAgICAgICAgICAgICBoaWdobGlnaHRzKSkpKQorICAg ICAgICA6ZGVmZXJyZWQgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hsaWdodCkKICAgICAgIG5p bCkpKQogCiAoZGVmdW4gZWdsb3QtaW1lbnUgKCkKICAgIkVnbG90J3MgYGltZW51LWNyZWF0ZS1p bmRleC1mdW5jdGlvbicuCiBSZXR1cm5zIGEgbGlzdCBhcyBkZXNjcmliZWQgaW4gZG9jc3RyaW5n IG9mIGBpbWVudS0taW5kZXgtYWxpc3QnLiIKICAgKGNsLWxhYmVscwotICAgICAgKCh1bmZ1cmwg KG9iaikKLSAgICAgICAgIChlZ2xvdC0tZGNhc2Ugb2JqCi0gICAgICAgICAgICgoKFN5bWJvbElu Zm9ybWF0aW9uKSkgKGxpc3Qgb2JqKSkKLSAgICAgICAgICAgKCgoRG9jdW1lbnRTeW1ib2wpIG5h bWUgY2hpbGRyZW4pCi0gICAgICAgICAgICAoY29ucyBvYmoKLSAgICAgICAgICAgICAgICAgICht YXBjYXIKLSAgICAgICAgICAgICAgICAgICAobGFtYmRhIChjKQotICAgICAgICAgICAgICAgICAg ICAgKHBsaXN0LXB1dAotICAgICAgICAgICAgICAgICAgICAgIGMgOmNvbnRhaW5lck5hbWUKLSAg ICAgICAgICAgICAgICAgICAgICAobGV0ICgoZXhpc3RpbmcgKHBsaXN0LWdldCBjIDpjb250YWlu ZXJOYW1lKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAoaWYgZXhpc3RpbmcgKGZvcm1hdCAi JXM6OiVzIiBuYW1lIGV4aXN0aW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKSkp KQotICAgICAgICAgICAgICAgICAgIChtYXBjYW4gIyd1bmZ1cmwgY2hpbGRyZW4pKSkpKSkpCisg ICAgKCh1bmZ1cmwgKG9iaikKKyAgICAgICAoZWdsb3QtLWRjYXNlIG9iagorICAgICAgICAgKCgo U3ltYm9sSW5mb3JtYXRpb24pKSAobGlzdCBvYmopKQorICAgICAgICAgKCgoRG9jdW1lbnRTeW1i b2wpIG5hbWUgY2hpbGRyZW4pCisgICAgICAgICAgIChjb25zIG9iagorICAgICAgICAgICAgICht YXBjYXIKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGMpCisgICAgICAgICAgICAgICAgIChwbGlz dC1wdXQKKyAgICAgICAgICAgICAgICAgICBjIDpjb250YWluZXJOYW1lCisgICAgICAgICAgICAg ICAgICAgKGxldCAoKGV4aXN0aW5nIChwbGlzdC1nZXQgYyA6Y29udGFpbmVyTmFtZSkpKQorICAg ICAgICAgICAgICAgICAgICAgKGlmIGV4aXN0aW5nIChmb3JtYXQgIiVzOjolcyIgbmFtZSBleGlz dGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgbmFtZSkpKSkKKyAgICAgICAgICAgICAgICht YXBjYW4gIyd1bmZ1cmwgY2hpbGRyZW4pKSkpKSkpCiAgICAgKG1hcGNhcgotICAgICAocGNhc2Ut bGFtYmRhIChgKCxraW5kIC4gLG9ianMpKQotICAgICAgIChjb25zCi0gICAgICAgIChhbGlzdC1n ZXQga2luZCBlZ2xvdC0tc3ltYm9sLWtpbmQtbmFtZXMgIlVua25vd24iKQotICAgICAgICAobWFw Y2FuIChwY2FzZS1sYW1iZGEgKGAoLGNvbnRhaW5lciAuICxvYmpzKSkKLSAgICAgICAgICAgICAg ICAgIChsZXQgKChlbGVtcyAobWFwY2FyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsYW1iZGEgKG9iaikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAo cGxpc3QtZ2V0IG9iaiA6bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIChlZ2xvdC0tcmFuZ2UtcmVnaW9uCisgICAgICAocGNhc2UtbGFtYmRhIChgKCxr aW5kIC4gLG9ianMpKQorICAgICAgICAoY29ucworICAgICAgICAgIChhbGlzdC1nZXQga2luZCBl Z2xvdC0tc3ltYm9sLWtpbmQtbmFtZXMgIlVua25vd24iKQorICAgICAgICAgIChtYXBjYW4gKHBj YXNlLWxhbWJkYSAoYCgsY29udGFpbmVyIC4gLG9ianMpKQorICAgICAgICAgICAgICAgICAgICAo bGV0ICgoZWxlbXMgKG1hcGNhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGFtYmRhIChvYmopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMg KHBsaXN0LWdldCBvYmogOm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIChlZ2xvdC0tcmFuZ2UtcmVnaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1kY2FzZSBvYmoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKFN5bWJvbEluZm9ybWF0aW9uKSBsb2Nh dGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cGxpc3QtZ2V0IGxvY2F0aW9uIDpyYW5nZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgbG9jYXRpb24gOnJhbmdlKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKERvY3VtZW50U3lt Ym9sKSBzZWxlY3Rpb25SYW5nZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxlY3Rpb25SYW5nZSkpKSkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvYmpzKSkpCi0gICAgICAgICAgICAgICAgICAgIChpZiBjb250YWluZXIgKGxp c3QgKGNvbnMgY29udGFpbmVyIGVsZW1zKSkgZWxlbXMpKSkKLSAgICAgICAgICAgICAgICAoc2Vx LWdyb3VwLWJ5Ci0gICAgICAgICAgICAgICAgIChsYW1iZGEgKGUpIChwbGlzdC1nZXQgZSA6Y29u dGFpbmVyTmFtZSkpIG9ianMpKSkpCi0gICAgIChzZXEtZ3JvdXAtYnkKLSAgICAgIChsYW1iZGEg KG9iaikgKHBsaXN0LWdldCBvYmogOmtpbmQpKQotICAgICAgKG1hcGNhbiAjJ3VuZnVybAotICAg ICAgICAgICAgICAoanNvbnJwYy1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGV4dERvY3VtZW50L2RvY3VtZW50 U3ltYm9sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCg6dGV4dERvY3VtZW50Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVu dGlmaWVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2FuY2VsLW9uLWlucHV0 IG5vbi1lc3NlbnRpYWwpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2JqcykpKQorICAgICAgICAgICAgICAgICAgICAgIChpZiBjb250YWlu ZXIgKGxpc3QgKGNvbnMgY29udGFpbmVyIGVsZW1zKSkgZWxlbXMpKSkKKyAgICAgICAgICAgIChz ZXEtZ3JvdXAtYnkKKyAgICAgICAgICAgICAgKGxhbWJkYSAoZSkgKHBsaXN0LWdldCBlIDpjb250 YWluZXJOYW1lKSkgb2JqcykpKSkKKyAgICAgIChzZXEtZ3JvdXAtYnkKKyAgICAgICAgKGxhbWJk YSAob2JqKSAocGxpc3QtZ2V0IG9iaiA6a2luZCkpCisgICAgICAgIChtYXBjYW4gIyd1bmZ1cmwK KyAgICAgICAgICAoanNvbnJwYy1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9z ZSkKKyAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvZG9jdW1lbnRTeW1ib2wKKyAgICAgICAgICAg IGAoOnRleHREb2N1bWVudAorICAgICAgICAgICAgICAgLChlZ2xvdC0tVGV4dERvY3VtZW50SWRl bnRpZmllcikpCisgICAgICAgICAgICA6Y2FuY2VsLW9uLWlucHV0IG5vbi1lc3NlbnRpYWwpKSkp KSkKIAogKGRlZnVuIGVnbG90LS1hcHBseS10ZXh0LWVkaXRzIChlZGl0cyAmb3B0aW9uYWwgdmVy c2lvbikKICAgIkFwcGx5IEVESVRTIGZvciBjdXJyZW50IGJ1ZmZlciBpZiBhdCBWRVJTSU9OLCBv ciBpZiBpdCdzIG5pbC4iCiAgICh1bmxlc3MgKG9yIChub3QgdmVyc2lvbikgKGVxdWFsIHZlcnNp b24gZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyKSkKICAgICAoanNvbnJwYy1lcnJvciAiRWRp dHMgb24gYCVzJyByZXF1aXJlIHZlcnNpb24gJWQsIHlvdSBoYXZlICVkIgotICAgICAgICAgICAg ICAgICAgIChjdXJyZW50LWJ1ZmZlcikgdmVyc2lvbiBlZ2xvdC0tdmVyc2lvbmVkLWlkZW50aWZp ZXIpKQorICAgICAgKGN1cnJlbnQtYnVmZmVyKSB2ZXJzaW9uIGVnbG90LS12ZXJzaW9uZWQtaWRl bnRpZmllcikpCiAgIChhdG9taWMtY2hhbmdlLWdyb3VwCiAgICAgKGxldCogKChjaGFuZ2UtZ3Jv dXAgKHByZXBhcmUtY2hhbmdlLWdyb3VwKSkKLSAgICAgICAgICAgKGhvd21hbnkgKGxlbmd0aCBl ZGl0cykpCi0gICAgICAgICAgIChyZXBvcnRlciAobWFrZS1wcm9ncmVzcy1yZXBvcnRlcgotICAg ICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIltlZ2xvdF0gYXBwbHlpbmcgJXMgZWRpdHMgdG8g YCVzJy4uLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd21hbnkgKGN1cnJlbnQt YnVmZmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAwIGhvd21hbnkpKQotICAgICAgICAgICAo ZG9uZSAwKSkKKyAgICAgICAgICAgIChob3dtYW55IChsZW5ndGggZWRpdHMpKQorICAgICAgICAg ICAgKHJlcG9ydGVyIChtYWtlLXByb2dyZXNzLXJlcG9ydGVyCisgICAgICAgICAgICAgICAgICAg ICAgICAoZm9ybWF0ICJbZWdsb3RdIGFwcGx5aW5nICVzIGVkaXRzIHRvIGAlcycuLi4iCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGhvd21hbnkgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIDAgaG93bWFueSkpCisgICAgICAgICAgICAoZG9uZSAwKSkKICAgICAg IChtYXBjIChwY2FzZS1sYW1iZGEgKGAoLG5ld1RleHQgLGJlZyAuICxlbmQpKQogICAgICAgICAg ICAgICAobGV0ICgoc291cmNlIChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgICAgICAgICAgICh3 aXRoLXRlbXAtYnVmZmVyCkBAIC0zMDkxLDE5ICszMjQ3LDE5IEBAIFJldHVybnMgYSBsaXN0IGFz IGRlc2NyaWJlZCBpbiBkb2NzdHJpbmcgb2YgYGltZW51LS1pbmRleC1hbGlzdCcuIgogICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVw b3J0LmNnaT9idWc9MzIyMzcKICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgaHR0cHM6Ly9k ZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyMjc4CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcyB0KQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICgtIGVuZCBiZWcpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYmVnIChtYXJrZXItcG9zaXRpb24gYmVnKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZCAobWFya2VyLXBvc2l0aW9uIGVuZCkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCAoLSBlbmQgYmVnKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWcgKG1hcmtlci1wb3NpdGlvbiBiZWcp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZCAobWFya2VyLXBvc2l0aW9u IGVuZCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydW4taG9vay13aXRoLWFyZ3Mg J2JlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBiZWcgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmVnIGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZS1idWZmZXItY29u dGVudHMgdGVtcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLWhvb2std2l0aC1h cmdzICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiZWcgKCsgYmVnIChsZW5ndGggbmV3VGV4dCkpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZWcgKCsgYmVnIChsZW5ndGggbmV3VGV4dCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgKHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSByZXBvcnRlciAoY2wtaW5jZiBkb25lKSkp KSkpKQotICAgICAgICAgICAgKG1hcGNhciAoZWdsb3QtLWxhbWJkYSAoKFRleHRFZGl0KSByYW5n ZSBuZXdUZXh0KQotICAgICAgICAgICAgICAgICAgICAgIChjb25zIG5ld1RleHQgKGVnbG90LS1y YW5nZS1yZWdpb24gcmFuZ2UgJ21hcmtlcnMpKSkKLSAgICAgICAgICAgICAgICAgICAgKHJldmVy c2UgZWRpdHMpKSkKKyAgICAgICAgKG1hcGNhciAoZWdsb3QtLWxhbWJkYSAoKFRleHRFZGl0KSBy YW5nZSBuZXdUZXh0KQorICAgICAgICAgICAgICAgICAgKGNvbnMgbmV3VGV4dCAoZWdsb3QtLXJh bmdlLXJlZ2lvbiByYW5nZSAnbWFya2VycykpKQorICAgICAgICAgIChyZXZlcnNlIGVkaXRzKSkp CiAgICAgICAodW5kby1hbWFsZ2FtYXRlLWNoYW5nZS1ncm91cCBjaGFuZ2UtZ3JvdXApCiAgICAg ICAocHJvZ3Jlc3MtcmVwb3J0ZXItZG9uZSByZXBvcnRlcikpKSkKIApAQCAtMzExMSw0NSArMzI2 Nyw0NSBAQCBSZXR1cm5zIGEgbGlzdCBhcyBkZXNjcmliZWQgaW4gZG9jc3RyaW5nIG9mIGBpbWVu dS0taW5kZXgtYWxpc3QnLiIKICAgIkFwcGx5IHRoZSB3b3Jrc3BhY2UgZWRpdCBXRURJVC4gIElm IENPTkZJUk0sIGFzayB1c2VyIGZpcnN0LiIKICAgKGVnbG90LS1kYmluZCAoKFdvcmtzcGFjZUVk aXQpIGNoYW5nZXMgZG9jdW1lbnRDaGFuZ2VzKSB3ZWRpdAogICAgIChsZXQgKChwcmVwYXJlZAot ICAgICAgICAgICAobWFwY2FyIChlZ2xvdC0tbGFtYmRhICgoVGV4dERvY3VtZW50RWRpdCkgdGV4 dERvY3VtZW50IGVkaXRzKQotICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1kYmluZCAoKFZl cnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIpIHVyaSB2ZXJzaW9uKQotICAgICAgICAgICAg ICAgICAgICAgICAgIHRleHREb2N1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAo ZWdsb3QtLXVyaS10by1wYXRoIHVyaSkgZWRpdHMgdmVyc2lvbikpKQotICAgICAgICAgICAgICAg ICAgIGRvY3VtZW50Q2hhbmdlcykpKQorICAgICAgICAgICAgKG1hcGNhciAoZWdsb3QtLWxhbWJk YSAoKFRleHREb2N1bWVudEVkaXQpIHRleHREb2N1bWVudCBlZGl0cykKKyAgICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtLWRiaW5kICgoVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRpZmllcikg dXJpIHZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RG9jdW1lbnQKKyAgICAg ICAgICAgICAgICAgICAgICAgIChsaXN0IChlZ2xvdC0tdXJpLXRvLXBhdGggdXJpKSBlZGl0cyB2 ZXJzaW9uKSkpCisgICAgICAgICAgICAgIGRvY3VtZW50Q2hhbmdlcykpKQogICAgICAgKHVubGVz cyAoYW5kIGNoYW5nZXMgZG9jdW1lbnRDaGFuZ2VzKQogICAgICAgICA7OyBXZSBkb24ndCB3YW50 IGRvdWJsZSBlZGl0cywgYW5kIHNvbWUgc2VydmVycyBzZW5kIGJvdGgKICAgICAgICAgOzsgY2hh bmdlcyBhbmQgZG9jdW1lbnRDaGFuZ2VzLiAgVGhpcyB1bmxlc3MgZW5zdXJlcyB0aGF0IHdlCiAg ICAgICAgIDs7IHByZWZlciBkb2N1bWVudENoYW5nZXMgb3ZlciBjaGFuZ2VzLgogICAgICAgICAo Y2wtbG9vcCBmb3IgKHVyaSBlZGl0cykgb24gY2hhbmdlcyBieSAjJ2NkZHIKLSAgICAgICAgICAg ICAgICAgZG8gKHB1c2ggKGxpc3QgKGVnbG90LS11cmktdG8tcGF0aCB1cmkpIGVkaXRzKSBwcmVw YXJlZCkpKQorICAgICAgICAgIGRvIChwdXNoIChsaXN0IChlZ2xvdC0tdXJpLXRvLXBhdGggdXJp KSBlZGl0cykgcHJlcGFyZWQpKSkKICAgICAgIChpZiAob3IgY29uZmlybQotICAgICAgICAgICAg ICAoY2wtbm90ZXZlcnkgIydmaW5kLWJ1ZmZlci12aXNpdGluZwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hcGNhciAjJ2NhciBwcmVwYXJlZCkpKQotICAgICAgICAgICh1bmxlc3MgKHkt b3Itbi1wCi0gICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiW2VnbG90XSBTZXJ2ZXIgd2FudHMg dG8gZWRpdDpcbiAgJXNcbiBQcm9jZWVkPyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFwY29uY2F0ICMnaWRlbnRpdHkgKG1hcGNhciAjJ2NhciBwcmVwYXJlZCkgIlxuICAiKSkpCi0g ICAgICAgICAgICAoanNvbnJwYy1lcnJvciAiVXNlciBjYW5jZWxsZWQgc2VydmVyIGVkaXQiKSkp CisgICAgICAgICAgICAoY2wtbm90ZXZlcnkgIydmaW5kLWJ1ZmZlci12aXNpdGluZworICAgICAg ICAgICAgICAobWFwY2FyICMnY2FyIHByZXBhcmVkKSkpCisgICAgICAgICh1bmxlc3MgKHktb3It bi1wCisgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJbZWdsb3RdIFNlcnZlciB3YW50cyB0byBl ZGl0OlxuICAlc1xuIFByb2NlZWQ/ICIKKyAgICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAj J2lkZW50aXR5IChtYXBjYXIgIydjYXIgcHJlcGFyZWQpICJcbiAgIikpKQorICAgICAgICAgIChq c29ucnBjLWVycm9yICJVc2VyIGNhbmNlbGxlZCBzZXJ2ZXIgZWRpdCIpKSkKICAgICAgIChjbC1s b29wIGZvciBlZGl0IGluIHByZXBhcmVkCi0gICAgICAgICAgICAgICBmb3IgKHBhdGggZWRpdHMg dmVyc2lvbikgPSBlZGl0Ci0gICAgICAgICAgICAgICBkbyAod2l0aC1jdXJyZW50LWJ1ZmZlciAo ZmluZC1maWxlLW5vc2VsZWN0IHBhdGgpCi0gICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tYXBw bHktdGV4dC1lZGl0cyBlZGl0cyB2ZXJzaW9uKSkKLSAgICAgICAgICAgICAgIGZpbmFsbHkgKGVs ZG9jKSAoZWdsb3QtLW1lc3NhZ2UgIkVkaXQgc3VjY2Vzc2Z1bCEiKSkpKSkKKyAgICAgICAgZm9y IChwYXRoIGVkaXRzIHZlcnNpb24pID0gZWRpdAorICAgICAgICBkbyAod2l0aC1jdXJyZW50LWJ1 ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IHBhdGgpCisgICAgICAgICAgICAgKGVnbG90LS1hcHBs eS10ZXh0LWVkaXRzIGVkaXRzIHZlcnNpb24pKQorICAgICAgICBmaW5hbGx5IChlbGRvYykgKGVn bG90LS1tZXNzYWdlICJFZGl0IHN1Y2Nlc3NmdWwhIikpKSkpCiAKIChkZWZ1biBlZ2xvdC1yZW5h bWUgKG5ld25hbWUpCiAgICJSZW5hbWUgdGhlIGN1cnJlbnQgc3ltYm9sIHRvIE5FV05BTUUuIgog ICAoaW50ZXJhY3RpdmUKLSAgIChsaXN0IChyZWFkLWZyb20tbWluaWJ1ZmZlcgotICAgICAgICAg IChmb3JtYXQgIlJlbmFtZSBgJXMnIHRvOiAiIChvciAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCB0 KQorICAgIChsaXN0IChyZWFkLWZyb20tbWluaWJ1ZmZlcgorICAgICAgICAgICAgKGZvcm1hdCAi UmVuYW1lIGAlcycgdG86ICIgKG9yICh0aGluZy1hdC1wb2ludCAnc3ltYm9sIHQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN5bWJvbCIpKQotICAg ICAgICAgIG5pbCBuaWwgbmlsIG5pbAotICAgICAgICAgIChzeW1ib2wtbmFtZSAoc3ltYm9sLWF0 LXBvaW50KSkpKSkKKyAgICAgICAgICAgIG5pbCBuaWwgbmlsIG5pbAorICAgICAgICAgICAgKHN5 bWJvbC1uYW1lIChzeW1ib2wtYXQtcG9pbnQpKSkpKQogICAodW5sZXNzIChlZ2xvdC0tc2VydmVy LWNhcGFibGUgOnJlbmFtZVByb3ZpZGVyKQogICAgIChlZ2xvdC0tZXJyb3IgIlNlcnZlciBjYW4n dCByZW5hbWUhIikpCiAgIChlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVkaXQKLSAgIChqc29ucnBj LXJlcXVlc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQotICAgICAgICAgICAgICAg ICAgICA6dGV4dERvY3VtZW50L3JlbmFtZSBgKCxAKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlv blBhcmFtcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bmV3 TmFtZSAsbmV3bmFtZSkpCi0gICBjdXJyZW50LXByZWZpeC1hcmcpKQorICAgIChqc29ucnBjLXJl cXVlc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQorICAgICAgOnRleHREb2N1bWVu dC9yZW5hbWUgYCgsQChlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6bmV3TmFtZSAsbmV3bmFtZSkpCisgICAgY3VycmVudC1w cmVmaXgtYXJnKSkKIAogKGRlZnVuIGVnbG90LS1yZWdpb24tYm91bmRzICgpCiAgICJSZWdpb24g Ym91bmRzIGlmIGFjdGl2ZSwgZWxzZSBib3VuZHMgb2YgdGhpbmdzIGF0IHBvaW50LiIKQEAgLTMx NjUsNzEgKzMzMjEsNzEgQEAgSW50ZXJhY3RpdmVseSwgZGVmYXVsdCBCRUcgYW5kIEVORCB0byBy ZWdpb24ncyBib3VuZHMgZWxzZSBCRUcgaXMKIHBvaW50IGFuZCBFTkQgaXMgbmlsLCB3aGljaCBy ZXN1bHRzIGluIGEgcmVxdWVzdCBmb3IgY29kZSBhY3Rpb25zCiBhdCBwb2ludC4gIFdpdGggcHJl Zml4IGFyZ3VtZW50LCBwcm9tcHQgZm9yIEFDVElPTi1LSU5ELiIKICAgKGludGVyYWN0aXZlCi0g ICBgKCxAKGVnbG90LS1yZWdpb24tYm91bmRzKQotICAgICAsKGFuZCBjdXJyZW50LXByZWZpeC1h cmcKLSAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZCAiW2VnbG90XSBBY3Rpb24ga2luZDogIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoInF1aWNrZml4IiAicmVmYWN0b3IuZXh0cmFj dCIgInJlZmFjdG9yLmlubGluZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZh Y3Rvci5yZXdyaXRlIiAic291cmNlLm9yZ2FuaXplSW1wb3J0cyIpKSkKLSAgICAgdCkpCisgICAg YCgsQChlZ2xvdC0tcmVnaW9uLWJvdW5kcykKKyAgICAgICAsKGFuZCBjdXJyZW50LXByZWZpeC1h cmcKKyAgICAgICAgICAoY29tcGxldGluZy1yZWFkICJbZWdsb3RdIEFjdGlvbiBraW5kOiAiCisg ICAgICAgICAgICAnKCJxdWlja2ZpeCIgInJlZmFjdG9yLmV4dHJhY3QiICJyZWZhY3Rvci5pbmxp bmUiCisgICAgICAgICAgICAgICAicmVmYWN0b3IucmV3cml0ZSIgInNvdXJjZS5vcmdhbml6ZUlt cG9ydHMiKSkpCisgICAgICAgdCkpCiAgICh1bmxlc3MgKG9yIChub3QgaW50ZXJhY3RpdmUpCi0g ICAgICAgICAgICAgIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcikp CisgICAgICAgICAgICAoZWdsb3QtLXNlcnZlci1jYXBhYmxlIDpjb2RlQWN0aW9uUHJvdmlkZXIp KQogICAgIChlZ2xvdC0tZXJyb3IgIlNlcnZlciBjYW4ndCBleGVjdXRlIGNvZGUgYWN0aW9ucyEi KSkKICAgKGxldCogKChzZXJ2ZXIgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkKLSAg ICAgICAgIChhY3Rpb25zCi0gICAgICAgICAgKGpzb25ycGMtcmVxdWVzdAotICAgICAgICAgICBz ZXJ2ZXIKLSAgICAgICAgICAgOnRleHREb2N1bWVudC9jb2RlQWN0aW9uCi0gICAgICAgICAgIChs aXN0IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKQotICAgICAg ICAgICAgICAgICA6cmFuZ2UgKGxpc3QgOnN0YXJ0IChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlv biBiZWcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW5kIChlZ2xvdC0tcG9zLXRv LWxzcC1wb3NpdGlvbiBlbmQpKQotICAgICAgICAgICAgICAgICA6Y29udGV4dAotICAgICAgICAg ICAgICAgICBgKDpkaWFnbm9zdGljcworICAgICAgICAgIChhY3Rpb25zCisgICAgICAgICAgICAo anNvbnJwYy1yZXF1ZXN0CisgICAgICAgICAgICAgIHNlcnZlcgorICAgICAgICAgICAgICA6dGV4 dERvY3VtZW50L2NvZGVBY3Rpb24KKyAgICAgICAgICAgICAgKGxpc3QgOnRleHREb2N1bWVudCAo ZWdsb3QtLVRleHREb2N1bWVudElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgOnJhbmdlIChs aXN0IDpzdGFydCAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gYmVnKQorICAgICAgICAgICAg ICAgICAgICAgICAgIDplbmQgKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGVuZCkpCisgICAg ICAgICAgICAgICAgOmNvbnRleHQKKyAgICAgICAgICAgICAgICBgKDpkaWFnbm9zdGljcwogICAg ICAgICAgICAgICAgICAgIFssQChjbC1sb29wIGZvciBkaWFnIGluIChmbHltYWtlLWRpYWdub3N0 aWNzIGJlZyBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAoY2RyIChh c3NvYyAnZWdsb3QtbHNwLWRpYWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tZGlhZy1kYXRhIGRpYWcpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xsZWN0IGl0KV0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4g KGNkciAoYXNzb2MgJ2VnbG90LWxzcC1kaWFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtLWRpYWctZGF0YSBkaWFnKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICBjb2xsZWN0IGl0KV0KICAgICAgICAgICAgICAgICAgICAsQCh3aGVuIGFjdGlvbi1raW5kIGAo Om9ubHkgWyxhY3Rpb24ta2luZF0pKSkpCi0gICAgICAgICAgIDpkZWZlcnJlZCB0KSkKLSAgICAg ICAgIDs7IFJlZG8gZmlsdGVyaW5nLCBpbiBjYXNlIHRoZSBgOm9ubHknIGRpZG4ndCBnbyB0aHJv dWdoLgotICAgICAgICAgKGFjdGlvbnMgKGNsLWxvb3AgZm9yIGEgYWNyb3NzIGFjdGlvbnMKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gKG9yIChub3QgYWN0aW9uLWtpbmQpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgYWN0aW9uLWtpbmQgKHBsaXN0 LWdldCBhIDpraW5kKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGEpKSkK KyAgICAgICAgICAgICAgOmRlZmVycmVkIHQpKQorICAgICAgICAgIDs7IFJlZG8gZmlsdGVyaW5n LCBpbiBjYXNlIHRoZSBgOm9ubHknIGRpZG4ndCBnbyB0aHJvdWdoLgorICAgICAgICAgIChhY3Rp b25zIChjbC1sb29wIGZvciBhIGFjcm9zcyBhY3Rpb25zCisgICAgICAgICAgICAgICAgICAgICB3 aGVuIChvciAobm90IGFjdGlvbi1raW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl cXVhbCBhY3Rpb24ta2luZCAocGxpc3QtZ2V0IGEgOmtpbmQpKSkKKyAgICAgICAgICAgICAgICAg ICAgIGNvbGxlY3QgYSkpKQogICAgIChpZiBpbnRlcmFjdGl2ZQotICAgICAgICAoZWdsb3QtLXJl YWQtZXhlY3V0ZS1jb2RlLWFjdGlvbiBhY3Rpb25zIHNlcnZlciBhY3Rpb24ta2luZCkKKyAgICAg IChlZ2xvdC0tcmVhZC1leGVjdXRlLWNvZGUtYWN0aW9uIGFjdGlvbnMgc2VydmVyIGFjdGlvbi1r aW5kKQogICAgICAgYWN0aW9ucykpKQogCiAoZGVmdW4gZWdsb3QtLXJlYWQtZXhlY3V0ZS1jb2Rl LWFjdGlvbiAoYWN0aW9ucyBzZXJ2ZXIgJm9wdGlvbmFsIGFjdGlvbi1raW5kKQogICAiSGVscGVy IGZvciBpbnRlcmFjdGl2ZSBjYWxscyB0byBgZWdsb3QtY29kZS1hY3Rpb25zJyIKICAgKGxldCog KChtZW51LWl0ZW1zCi0gICAgICAgICAgKG9yIChjbC1sb29wIGZvciBhIGluIGFjdGlvbnMKLSAg ICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAoY29ucyAocGxpc3QtZ2V0IGEgOnRpdGxlKSBh KSkKLSAgICAgICAgICAgICAgKGFwcGx5ICMnZWdsb3QtLWVycm9yCi0gICAgICAgICAgICAgICAg ICAgICAoaWYgYWN0aW9uLWtpbmQgYCgiTm8gXCIlc1wiIGNvZGUgYWN0aW9ucyBoZXJlIiAsYWN0 aW9uLWtpbmQpCi0gICAgICAgICAgICAgICAgICAgICAgIGAoIk5vIGNvZGUgYWN0aW9ucyBoZXJl IikpKSkpCi0gICAgICAgICAocHJlZmVycmVkLWFjdGlvbiAoY2wtZmluZC1pZgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG1lbnUtaXRlbSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwbGlzdC1nZXQgKGNkciBtZW51LWl0ZW0pIDppc1ByZWZlcnJlZCkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudS1pdGVtcykpCi0gICAgICAgICAoZGVmYXVs dC1hY3Rpb24gKGNhciAob3IgcHJlZmVycmVkLWFjdGlvbiAoY2FyIG1lbnUtaXRlbXMpKSkpCi0g ICAgICAgICAoY2hvc2VuIChpZiAoYW5kIGFjdGlvbi1raW5kIChudWxsIChjYWRyIG1lbnUtaXRl bXMpKSkKLSAgICAgICAgICAgICAgICAgICAgIChjZHIgKGNhciBtZW51LWl0ZW1zKSkKLSAgICAg ICAgICAgICAgICAgICAoaWYgKGxpc3RwIGxhc3Qtbm9ubWVudS1ldmVudCkKLSAgICAgICAgICAg ICAgICAgICAgICAgKHgtcG9wdXAtbWVudSBsYXN0LW5vbm1lbnUtZXZlbnQgYCgiRWdsb3QgY29k ZSBhY3Rpb25zOiIKKyAgICAgICAgICAgKG9yIChjbC1sb29wIGZvciBhIGluIGFjdGlvbnMKKyAg ICAgICAgICAgICAgICAgY29sbGVjdCAoY29ucyAocGxpc3QtZ2V0IGEgOnRpdGxlKSBhKSkKKyAg ICAgICAgICAgICAoYXBwbHkgIydlZ2xvdC0tZXJyb3IKKyAgICAgICAgICAgICAgIChpZiBhY3Rp b24ta2luZCBgKCJObyBcIiVzXCIgY29kZSBhY3Rpb25zIGhlcmUiICxhY3Rpb24ta2luZCkKKyAg ICAgICAgICAgICAgICAgYCgiTm8gY29kZSBhY3Rpb25zIGhlcmUiKSkpKSkKKyAgICAgICAgICAo cHJlZmVycmVkLWFjdGlvbiAoY2wtZmluZC1pZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAobWVudS1pdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cGxpc3QtZ2V0IChjZHIgbWVudS1pdGVtKSA6aXNQcmVmZXJyZWQpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWVudS1pdGVtcykpCisgICAgICAgICAgKGRlZmF1bHQtYWN0aW9uIChj YXIgKG9yIHByZWZlcnJlZC1hY3Rpb24gKGNhciBtZW51LWl0ZW1zKSkpKQorICAgICAgICAgIChj aG9zZW4gKGlmIChhbmQgYWN0aW9uLWtpbmQgKG51bGwgKGNhZHIgbWVudS1pdGVtcykpKQorICAg ICAgICAgICAgICAgICAgICAoY2RyIChjYXIgbWVudS1pdGVtcykpCisgICAgICAgICAgICAgICAg ICAgIChpZiAobGlzdHAgbGFzdC1ub25tZW51LWV2ZW50KQorICAgICAgICAgICAgICAgICAgICAg ICh4LXBvcHVwLW1lbnUgbGFzdC1ub25tZW51LWV2ZW50IGAoIkVnbG90IGNvZGUgYWN0aW9uczoi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCJkdW1teSIgLEBtZW51LWl0ZW1zKSkpCi0gICAgICAgICAgICAgICAgICAgICAoY2RyIChh c3NvYyAoY29tcGxldGluZy1yZWFkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZvcm1hdCAiW2VnbG90XSBQaWNrIGFuIGFjdGlvbiAoZGVmYXVsdCAlcyk6ICIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtYWN0aW9uKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUtaXRlbXMgbmlsIHQgbmlsIG5pbCBkZWZh dWx0LWFjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUtaXRlbXMp KSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYyAoY29tcGxldGluZy1yZWFk CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJbZWdsb3RdIFBp Y2sgYW4gYWN0aW9uIChkZWZhdWx0ICVzKTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0LWFjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1lbnUtaXRlbXMgbmlsIHQgbmlsIG5pbCBkZWZhdWx0LWFjdGlvbikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWVudS1pdGVtcykpKSkpKQogICAgIChlZ2xvdC0tZGNhc2Ug Y2hvc2VuCiAgICAgICAoKChDb21tYW5kKSBjb21tYW5kIGFyZ3VtZW50cykKLSAgICAgICAoZWds b3QtZXhlY3V0ZS1jb21tYW5kIHNlcnZlciAoaW50ZXJuIGNvbW1hbmQpIGFyZ3VtZW50cykpCisg ICAgICAgIChlZ2xvdC1leGVjdXRlLWNvbW1hbmQgc2VydmVyIChpbnRlcm4gY29tbWFuZCkgYXJn dW1lbnRzKSkKICAgICAgICgoKENvZGVBY3Rpb24pIGVkaXQgY29tbWFuZCkKLSAgICAgICAod2hl biBlZGl0IChlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVkaXQgZWRpdCkpCi0gICAgICAgKHdoZW4g Y29tbWFuZAotICAgICAgICAgKGVnbG90LS1kYmluZCAoKENvbW1hbmQpIGNvbW1hbmQgYXJndW1l bnRzKSBjb21tYW5kCi0gICAgICAgICAgIChlZ2xvdC1leGVjdXRlLWNvbW1hbmQgc2VydmVyIChp bnRlcm4gY29tbWFuZCkgYXJndW1lbnRzKSkpKSkpKQorICAgICAgICAod2hlbiBlZGl0IChlZ2xv dC0tYXBwbHktd29ya3NwYWNlLWVkaXQgZWRpdCkpCisgICAgICAgICh3aGVuIGNvbW1hbmQKKyAg ICAgICAgICAoZWdsb3QtLWRiaW5kICgoQ29tbWFuZCkgY29tbWFuZCBhcmd1bWVudHMpIGNvbW1h bmQKKyAgICAgICAgICAgIChlZ2xvdC1leGVjdXRlLWNvbW1hbmQgc2VydmVyIChpbnRlcm4gY29t bWFuZCkgYXJndW1lbnRzKSkpKSkpKQogCiAoZGVmbWFjcm8gZWdsb3QtLWNvZGUtYWN0aW9uIChu YW1lIGtpbmQpCiAgICJEZWZpbmUgTkFNRSB0byBleGVjdXRlIEtJTkQgY29kZSBhY3Rpb24uIgpA QCAtMzI1Miw0MCArMzQwOCw0MCBAQCBhdCBwb2ludC4gIFdpdGggcHJlZml4IGFyZ3VtZW50LCBw cm9tcHQgZm9yIEFDVElPTi1LSU5ELiIKICAgIkhhbmRsZSBkeW5hbWljIHJlZ2lzdHJhdGlvbiBv ZiB3b3Jrc3BhY2UvZGlkQ2hhbmdlV2F0Y2hlZEZpbGVzLiIKICAgKGVnbG90LXVucmVnaXN0ZXIt Y2FwYWJpbGl0eSBzZXJ2ZXIgbWV0aG9kIGlkKQogICAobGV0KiAoc3VjY2VzcwotICAgICAgICAg KGdsb2JzIChtYXBjYXIKLSAgICAgICAgICAgICAgICAgKGVnbG90LS1sYW1iZGEgKChGaWxlU3lz dGVtV2F0Y2hlcikgZ2xvYlBhdHRlcm4pCi0gICAgICAgICAgICAgICAgICAgKGVnbG90LS1nbG9i LWNvbXBpbGUgZ2xvYlBhdHRlcm4gdCB0KSkKLSAgICAgICAgICAgICAgICAgd2F0Y2hlcnMpKQot ICAgICAgICAgKGRpcnMtdG8td2F0Y2gKLSAgICAgICAgICAoZGVsZXRlLWR1cHMgKG1hcGNhciAj J2ZpbGUtbmFtZS1kaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv amVjdC1maWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXByb2pl Y3Qgc2VydmVyKSkpKSkpCisgICAgICAgICAgKGdsb2JzIChtYXBjYXIKKyAgICAgICAgICAgICAg ICAgICAoZWdsb3QtLWxhbWJkYSAoKEZpbGVTeXN0ZW1XYXRjaGVyKSBnbG9iUGF0dGVybikKKyAg ICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZ2xvYi1jb21waWxlIGdsb2JQYXR0ZXJuIHQgdCkp CisgICAgICAgICAgICAgICAgICAgd2F0Y2hlcnMpKQorICAgICAgICAgIChkaXJzLXRvLXdhdGNo CisgICAgICAgICAgICAoZGVsZXRlLWR1cHMgKG1hcGNhciAjJ2ZpbGUtbmFtZS1kaXJlY3RvcnkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LWZpbGVzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpKSkKICAgICAoY2wtbGFi ZWxzCi0gICAgICAgICgoaGFuZGxlLWV2ZW50Ci0gICAgICAgICAgKGV2ZW50KQotICAgICAgICAg IChwY2FzZS1sZXQgKChgKCxkZXNjICxhY3Rpb24gLGZpbGUgLGZpbGUxKSBldmVudCkpCi0gICAg ICAgICAgICAoY29uZAorICAgICAgKChoYW5kbGUtZXZlbnQKKyAgICAgICAgIChldmVudCkKKyAg ICAgICAgIChwY2FzZS1sZXQgKChgKCxkZXNjICxhY3Rpb24gLGZpbGUgLGZpbGUxKSBldmVudCkp CisgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgKChhbmQgKG1lbXEgYWN0aW9uICcoY3Jl YXRlZCBjaGFuZ2VkIGRlbGV0ZWQpKQotICAgICAgICAgICAgICAgICAgIChjbC1maW5kIGZpbGUg Z2xvYnMgOnRlc3QgKGxhbWJkYSAoZiBnKSAoZnVuY2FsbCBnIGYpKSkpCi0gICAgICAgICAgICAg IChqc29ucnBjLW5vdGlmeQotICAgICAgICAgICAgICAgc2VydmVyIDp3b3Jrc3BhY2UvZGlkQ2hh bmdlV2F0Y2hlZEZpbGVzCi0gICAgICAgICAgICAgICBgKDpjaGFuZ2VzICwodmVjdG9yIGAoOnVy aSAsKGVnbG90LS1wYXRoLXRvLXVyaSBmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnR5cGUgLChjbC1jYXNlIGFjdGlvbgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZWQgMSkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkIDIpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlZCAz KSkpKSkpKQorICAgICAgICAgICAgICAgIChjbC1maW5kIGZpbGUgZ2xvYnMgOnRlc3QgKGxhbWJk YSAoZiBnKSAoZnVuY2FsbCBnIGYpKSkpCisgICAgICAgICAgICAgICAoanNvbnJwYy1ub3RpZnkK KyAgICAgICAgICAgICAgICAgc2VydmVyIDp3b3Jrc3BhY2UvZGlkQ2hhbmdlV2F0Y2hlZEZpbGVz CisgICAgICAgICAgICAgICAgIGAoOmNoYW5nZXMgLCh2ZWN0b3IgYCg6dXJpICwoZWdsb3QtLXBh dGgtdG8tdXJpIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OnR5cGUgLChjbC1jYXNlIGFjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjcmVhdGVkIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWQgMikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlZCAzKSkpKSkpKQogICAgICAgICAgICAg ICgoZXEgYWN0aW9uICdyZW5hbWVkKQotICAgICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRl c2MgJ2RlbGV0ZWQgLGZpbGUpKQotICAgICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRlc2Mg J2NyZWF0ZWQgLGZpbGUxKSkpKSkpKQorICAgICAgICAgICAgICAgKGhhbmRsZS1ldmVudCBgKCxk ZXNjICdkZWxldGVkICxmaWxlKSkKKyAgICAgICAgICAgICAgIChoYW5kbGUtZXZlbnQgYCgsZGVz YyAnY3JlYXRlZCAsZmlsZTEpKSkpKSkpCiAgICAgICAodW53aW5kLXByb3RlY3QKLSAgICAgICAg ICAocHJvZ24KLSAgICAgICAgICAgIChkb2xpc3QgKGRpciBkaXJzLXRvLXdhdGNoKQotICAgICAg ICAgICAgICAocHVzaCAoZmlsZS1ub3RpZnktYWRkLXdhdGNoIGRpciAnKGNoYW5nZSkgIydoYW5k bGUtZXZlbnQpCi0gICAgICAgICAgICAgICAgICAgIChnZXRoYXNoIGlkIChlZ2xvdC0tZmlsZS13 YXRjaGVzIHNlcnZlcikpKSkKLSAgICAgICAgICAgIChzZXRxCi0gICAgICAgICAgICAgc3VjY2Vz cwotICAgICAgICAgICAgIGAoOm1lc3NhZ2UgLChmb3JtYXQgIk9LLCB3YXRjaGluZyAlcyBkaXJl Y3RvcmllcyBpbiAlcyB3YXRjaGVycyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZW5ndGggZGlycy10by13YXRjaCkgKGxlbmd0aCB3YXRjaGVycykpKSkpCisgICAgICAgIChw cm9nbgorICAgICAgICAgIChkb2xpc3QgKGRpciBkaXJzLXRvLXdhdGNoKQorICAgICAgICAgICAg KHB1c2ggKGZpbGUtbm90aWZ5LWFkZC13YXRjaCBkaXIgJyhjaGFuZ2UpICMnaGFuZGxlLWV2ZW50 KQorICAgICAgICAgICAgICAoZ2V0aGFzaCBpZCAoZWdsb3QtLWZpbGUtd2F0Y2hlcyBzZXJ2ZXIp KSkpCisgICAgICAgICAgKHNldHEKKyAgICAgICAgICAgIHN1Y2Nlc3MKKyAgICAgICAgICAgIGAo Om1lc3NhZ2UgLChmb3JtYXQgIk9LLCB3YXRjaGluZyAlcyBkaXJlY3RvcmllcyBpbiAlcyB3YXRj aGVycyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBkaXJzLXRvLXdhdGNoKSAo bGVuZ3RoIHdhdGNoZXJzKSkpKSkKICAgICAgICAgKHVubGVzcyBzdWNjZXNzCiAgICAgICAgICAg KGVnbG90LXVucmVnaXN0ZXItY2FwYWJpbGl0eSBzZXJ2ZXIgbWV0aG9kIGlkKSkpKSkpCiAKQEAg LTMzMDQsMzQgKzM0NjAsMzQgQEAgYXQgcG9pbnQuICBXaXRoIHByZWZpeCBhcmd1bWVudCwgcHJv bXB0IGZvciBBQ1RJT04tS0lORC4iCiAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgKHNhdmUtZXhj dXJzaW9uIChpbnNlcnQgZ2xvYikpCiAgICAgKGNsLWxvb3AKLSAgICAgd2l0aCBncmFtbWFyID0g JygoOioqICAgICAgIlxcKlxcKi8/IiAgICAgICAgICAgICAgZWdsb3QtLWdsb2ItZW1pdC0qKikK LSAgICAgICAgICAgICAgICAgICAgICAoOiogICAgICAgIlxcKiIgICAgICAgICAgICAgICAgICAg ZWdsb3QtLWdsb2ItZW1pdC0qKQotICAgICAgICAgICAgICAgICAgICAgICg6PyAgICAgICAiXFw/ IiAgICAgICAgICAgICAgICAgICBlZ2xvdC0tZ2xvYi1lbWl0LT8pCi0gICAgICAgICAgICAgICAg ICAgICAgKDp7fSAgICAgICJ7W15dWyp7fV0rfSIgICAgICAgICAgIGVnbG90LS1nbG9iLWVtaXQt e30pCi0gICAgICAgICAgICAgICAgICAgICAgKDpyYW5nZSAgICJcXFtcXF4/W15dWy8sKnt9XStc XF0iIGVnbG90LS1nbG9iLWVtaXQtcmFuZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgKDpsaXRl cmFsICJbXl1bLCo/e31dKyIgICAgICAgICAgIGVnbG90LS1nbG9iLWVtaXQtc2VsZikpCi0gICAg IHVudGlsIChlb2JwKQotICAgICBjb2xsZWN0IChjbC1sb29wCi0gICAgICAgICAgICAgIGZvciAo X3Rva2VuIHJlZ2V4cCBlbWl0dGVyKSBpbiBncmFtbWFyCi0gICAgICAgICAgICAgIHRoZXJlaXMg KGFuZCAocmUtc2VhcmNoLWZvcndhcmQgKGNvbmNhdCAiXFw9IiByZWdleHApIG5pbCB0KQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGNsLWdlbnN5bSAic3RhdGUtIikgZW1pdHRl ciAobWF0Y2gtc3RyaW5nIDApKSkKLSAgICAgICAgICAgICAgZmluYWxseSAoZXJyb3IgIkdsb2Ig JyVzJyBpbnZhbGlkIGF0ICVzIiAoYnVmZmVyLXN0cmluZykgKHBvaW50KSkpKSkpCisgICAgICB3 aXRoIGdyYW1tYXIgPSAnKCg6KiogICAgICAiXFwqXFwqLz8iICAgICAgICAgICAgICBlZ2xvdC0t Z2xvYi1lbWl0LSoqKQorICAgICAgICAgICAgICAgICAgICAgICAgKDoqICAgICAgICJcXCoiICAg ICAgICAgICAgICAgICAgIGVnbG90LS1nbG9iLWVtaXQtKikKKyAgICAgICAgICAgICAgICAgICAg ICAgICg6PyAgICAgICAiXFw/IiAgICAgICAgICAgICAgICAgICBlZ2xvdC0tZ2xvYi1lbWl0LT8p CisgICAgICAgICAgICAgICAgICAgICAgICAoOnt9ICAgICAgIntbXl1bKnt9XSt9IiAgICAgICAg ICAgZWdsb3QtLWdsb2ItZW1pdC17fSkKKyAgICAgICAgICAgICAgICAgICAgICAgICg6cmFuZ2Ug ICAiXFxbXFxeP1teXVsvLCp7fV0rXFxdIiBlZ2xvdC0tZ2xvYi1lbWl0LXJhbmdlKQorICAgICAg ICAgICAgICAgICAgICAgICAgKDpsaXRlcmFsICJbXl1bLCo/e31dKyIgICAgICAgICAgIGVnbG90 LS1nbG9iLWVtaXQtc2VsZikpCisgICAgICB1bnRpbCAoZW9icCkKKyAgICAgIGNvbGxlY3QgKGNs LWxvb3AKKyAgICAgICAgICAgICAgICBmb3IgKF90b2tlbiByZWdleHAgZW1pdHRlcikgaW4gZ3Jh bW1hcgorICAgICAgICAgICAgICAgIHRoZXJlaXMgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgKGNv bmNhdCAiXFw9IiByZWdleHApIG5pbCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlz dCAoY2wtZ2Vuc3ltICJzdGF0ZS0iKSBlbWl0dGVyIChtYXRjaC1zdHJpbmcgMCkpKQorICAgICAg ICAgICAgICAgIGZpbmFsbHkgKGVycm9yICJHbG9iICclcycgaW52YWxpZCBhdCAlcyIgKGJ1ZmZl ci1zdHJpbmcpIChwb2ludCkpKSkpKQogCiAoZGVmdW4gZWdsb3QtLWdsb2ItY29tcGlsZSAoZ2xv YiAmb3B0aW9uYWwgYnl0ZS1jb21waWxlIG5vZXJyb3IpCiAgICJDb252ZXJ0IEdMT0IgaW50byBF bGlzcCBmdW5jdGlvbi4gIE1heWJlIEJZVEUtQ09NUElMRSBpdC4KIElmIE5PRVJST1IsIHJldHVy biBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogICAobGV0KiAoKHN0YXRlcyAo ZWdsb3QtLWdsb2ItcGFyc2UgZ2xvYikpCi0gICAgICAgICAoYm9keSBgKHdpdGgtY3VycmVudC1i dWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIgKmVnbG90LWdsb2ItbWF0Y2hlcioiKQotICAgICAg ICAgICAgICAgICAgKGVyYXNlLWJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vy c2lvbiAoaW5zZXJ0IHN0cmluZykpCi0gICAgICAgICAgICAgICAgICAoY2wtbGFiZWxzICwoY2wt bG9vcCBmb3IgKHRoaXMgdGhhdCkgb24gc3RhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgKHNlbGYgZW1pdCB0ZXh0KSA9IHRoaXMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuZXh0ID0gKG9yIChjYXIgdGhhdCkgJ2VvYnAp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IChmdW5jYWxs IGVtaXQgdGV4dCBzZWxmIG5leHQpKQotICAgICAgICAgICAgICAgICAgICAob3IgKCwoY2FhciBz dGF0ZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJHbG9iIGRvbmUgYnV0IG1v cmUgdW5tYXRjaGVkIHRleHQ6ICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1zdWJzdHJpbmcgKHBvaW50KSAocG9pbnQtbWF4KSkpKSkpKQotICAgICAgICAgKGZv cm0gYChsYW1iZGEgKHN0cmluZykgLChpZiBub2Vycm9yIGAoaWdub3JlLWVycm9ycyAsYm9keSkg Ym9keSkpKSkKKyAgICAgICAgICAoYm9keSBgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZm ZXItY3JlYXRlICIgKmVnbG90LWdsb2ItbWF0Y2hlcioiKQorICAgICAgICAgICAgICAgICAgIChl cmFzZS1idWZmZXIpCisgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQg c3RyaW5nKSkKKyAgICAgICAgICAgICAgICAgICAoY2wtbGFiZWxzICwoY2wtbG9vcCBmb3IgKHRo aXMgdGhhdCkgb24gc3RhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig KHNlbGYgZW1pdCB0ZXh0KSA9IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZvciBuZXh0ID0gKG9yIChjYXIgdGhhdCkgJ2VvYnApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb2xsZWN0IChmdW5jYWxsIGVtaXQgdGV4dCBzZWxmIG5leHQpKQorICAgICAg ICAgICAgICAgICAgICAgKG9yICgsKGNhYXIgc3RhdGVzKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgKGVycm9yICJHbG9iIGRvbmUgYnV0IG1vcmUgdW5tYXRjaGVkIHRleHQ6ICclcyciCisgICAg ICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKHBvaW50KSAocG9pbnQtbWF4 KSkpKSkpKQorICAgICAgICAgIChmb3JtIGAobGFtYmRhIChzdHJpbmcpICwoaWYgbm9lcnJvciBg KGlnbm9yZS1lcnJvcnMgLGJvZHkpIGJvZHkpKSkpCiAgICAgKGlmIGJ5dGUtY29tcGlsZSAoYnl0 ZS1jb21waWxlIGZvcm0pIGZvcm0pKSkKIAogKGRlZnVuIGVnbG90LS1nbG9iLWVtaXQtc2VsZiAo dGV4dCBzZWxmIG5leHQpCkBAIC0zMzM5LDExICszNDk1LDExIEBAIElmIE5PRVJST1IsIHJldHVy biBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogCiAoZGVmdW4gZWdsb3QtLWds b2ItZW1pdC0qKiAoXyBzZWxmIG5leHQpCiAgIGAoLHNlbGYgKCkgKG9yIChpZ25vcmUtZXJyb3Jz IChzYXZlLWV4Y3Vyc2lvbiAoLG5leHQpKSkKLSAgICAgICAgICAgICAgICAgKGFuZCAocmUtc2Vh cmNoLWZvcndhcmQgIlxcPS8/W14vXSsvPyIpICgsc2VsZikpKSkpCisgICAgICAgICAgICAgICAo YW5kIChyZS1zZWFyY2gtZm9yd2FyZCAiXFw9Lz9bXi9dKy8/IikgKCxzZWxmKSkpKSkKIAogKGRl ZnVuIGVnbG90LS1nbG9iLWVtaXQtKiAoXyBzZWxmIG5leHQpCiAgIGAoLHNlbGYgKCkgKHJlLXNl YXJjaC1mb3J3YXJkICJcXD1bXi9dIikKLSAgICAgICAgICAob3IgKGlnbm9yZS1lcnJvcnMgKHNh dmUtZXhjdXJzaW9uICgsbmV4dCkpKSAoLHNlbGYpKSkpCisgICAgIChvciAoaWdub3JlLWVycm9y cyAoc2F2ZS1leGN1cnNpb24gKCxuZXh0KSkpICgsc2VsZikpKSkKIAogKGRlZnVuIGVnbG90LS1n bG9iLWVtaXQtPyAoXyBzZWxmIG5leHQpCiAgIGAoLHNlbGYgKCkgKHJlLXNlYXJjaC1mb3J3YXJk ICJcXD1bXi9dIikgKCxuZXh0KSkpCkBAIC0zMzUxLDkgKzM1MDcsOSBAQCBJZiBOT0VSUk9SLCBy ZXR1cm4gcHJlZGljYXRlLCBlbHNlIGVycm9yaW5nIGZ1bmN0aW9uLiIKIChkZWZ1biBlZ2xvdC0t Z2xvYi1lbWl0LXt9IChhcmcgc2VsZiBuZXh0KQogICAobGV0ICgoYWx0ZXJuYXRpdmVzIChzcGxp dC1zdHJpbmcgKHN1YnN0cmluZyBhcmcgMSAoMS0gKGxlbmd0aCBhcmcpKSkgIiwiKSkpCiAgICAg YCgsc2VsZiAoKQotICAgICAgICAgICAgKG9yIChyZS1zZWFyY2gtZm9yd2FyZCAsKGNvbmNhdCAi XFw9IiAocmVnZXhwLW9wdCBhbHRlcm5hdGl2ZXMpKSBuaWwgdCkKLSAgICAgICAgICAgICAgICAo ZXJyb3IgIkZhaWxlZCBtYXRjaGluZyBhbnkgb2YgJXMiICcsYWx0ZXJuYXRpdmVzKSkKLSAgICAg ICAgICAgICgsbmV4dCkpKSkKKyAgICAgICAob3IgKHJlLXNlYXJjaC1mb3J3YXJkICwoY29uY2F0 ICJcXD0iIChyZWdleHAtb3B0IGFsdGVybmF0aXZlcykpIG5pbCB0KQorICAgICAgICAgKGVycm9y ICJGYWlsZWQgbWF0Y2hpbmcgYW55IG9mICVzIiAnLGFsdGVybmF0aXZlcykpCisgICAgICAgKCxu ZXh0KSkpKQogCiAoZGVmdW4gZWdsb3QtLWdsb2ItZW1pdC1yYW5nZSAoYXJnIHNlbGYgbmV4dCkK ICAgKHdoZW4gKGVxID8hIChhcmVmIGFyZyAxKSkgKGFzZXQgYXJnIDEgP14pKQpAQCAtMzM2Niwz MiArMzUyMiwxMTUgQEAgSWYgTk9FUlJPUiwgcmV0dXJuIHByZWRpY2F0ZSwgZWxzZSBlcnJvcmlu ZyBmdW5jdGlvbi4iCiAgICIiICJFZ2xvdCBtb2RlIGZvciBsaXN0aW5nIHNlcnZlciBjb25uZWN0 aW9ucwogXFx7ZWdsb3QtbGlzdC1jb25uZWN0aW9ucy1tb2RlLW1hcH0iCiAgIChzZXRxLWxvY2Fs IHRhYnVsYXRlZC1saXN0LWZvcm1hdAotICAgICAgICAgICAgICBgWygiTGFuZ3VhZ2Ugc2VydmVy IiAxNikgKCJQcm9qZWN0IG5hbWUiIDE2KSAoIk1vZGVzIGhhbmRsZWQiIDE2KV0pCisgICAgYFso Ikxhbmd1YWdlIHNlcnZlciIgMTYpICgiUHJvamVjdCBuYW1lIiAxNikgKCJNb2RlcyBoYW5kbGVk IiAxNildKQogICAodGFidWxhdGVkLWxpc3QtaW5pdC1oZWFkZXIpKQogCiAoZGVmdW4gZWdsb3Qt bGlzdC1jb25uZWN0aW9ucyAoKQogICAiTGlzdCBjdXJyZW50bHkgYWN0aXZlIEVnbG90IGNvbm5l Y3Rpb25zLiIKICAgKGludGVyYWN0aXZlKQogICAod2l0aC1jdXJyZW50LWJ1ZmZlcgotICAgICAg KGdldC1idWZmZXItY3JlYXRlICIqRUdMT1QgY29ubmVjdGlvbnMqIikKKyAgICAoZ2V0LWJ1ZmZl ci1jcmVhdGUgIipFR0xPVCBjb25uZWN0aW9ucyoiKQogICAgIChsZXQgKChpbmhpYml0LXJlYWQt b25seSB0KSkKICAgICAgIChlcmFzZS1idWZmZXIpCiAgICAgICAoZWdsb3QtbGlzdC1jb25uZWN0 aW9ucy1tb2RlKQogICAgICAgKHNldHEtbG9jYWwgdGFidWxhdGVkLWxpc3QtZW50cmllcwotICAg ICAgICAgICAgICAgICAgKG1hcGNhcgotICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHNlcnZl cikKLSAgICAgICAgICAgICAgICAgICAgIChsaXN0IHNlcnZlcgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgYFssKG9yIChwbGlzdC1nZXQgKGVnbG90LS1zZXJ2ZXItaW5mbyBzZXJ2ZXIpIDpu YW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29ucnBjLW5hbWUgc2Vy dmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChlZ2xvdC1wcm9qZWN0LW5pY2tu YW1lIHNlcnZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChtYXBjb25jYXQgIydz eW1ib2wtbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWds b3QtLW1ham9yLW1vZGVzIHNlcnZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiwgIildKSkKLSAgICAgICAgICAgICAgICAgICAoY2wtcmVkdWNlICMnYXBwZW5k Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS12YWx1ZXMgZWdsb3Qt LXNlcnZlcnMtYnktcHJvamVjdCkpKSkKKyAgICAgICAgKG1hcGNhcgorICAgICAgICAgIChsYW1i ZGEgKHNlcnZlcikKKyAgICAgICAgICAgIChsaXN0IHNlcnZlcgorICAgICAgICAgICAgICBgWywo b3IgKHBsaXN0LWdldCAoZWdsb3QtLXNlcnZlci1pbmZvIHNlcnZlcikgOm5hbWUpCisgICAgICAg ICAgICAgICAgICAgKGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAsKGVn bG90LXByb2plY3Qtbmlja25hbWUgc2VydmVyKQorICAgICAgICAgICAgICAgICAsKG1hcGNvbmNh dCAjJ3N5bWJvbC1uYW1lCisgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbWFqb3ItbW9kZXMg c2VydmVyKQorICAgICAgICAgICAgICAgICAgICAiLCAiKV0pKQorICAgICAgICAgIChjbC1yZWR1 Y2UgIydhcHBlbmQKKyAgICAgICAgICAgIChoYXNoLXRhYmxlLXZhbHVlcyBlZ2xvdC0tc2VydmVy cy1ieS1wcm9qZWN0KSkpKQogICAgICAgKHJldmVydC1idWZmZXIpCiAgICAgICAocG9wLXRvLWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKSkpKQogCisoZGVmZmFjZSBlZ2xvdC1pbmxheS1oaW50Cisg ICcoKHQgKDppbmhlcml0IHNoYWRvdyA6aGVpZ2h0IDAuOCkpKQorICAiRmFjZSB1c2VkIGZvciBp bmxheSBoaW50IG92ZXJsYXlzLiIpCisKKzs7IChkZWZpbmUtbWlub3ItbW9kZSBlZ2xvdC0taW5s YXktbW9kZQorOzsgICAiTW9kZSBmb3IgZGlzcGxheWluZyBpbmxheSBoaW50LiIKKzs7ICAgOmxp Z2h0ZXIgIiBpbmxheSIKKzs7ICAgKQorCis7OyAoZGVmdW4gZWdsb3QtLXVwZGF0ZS1oaW50cygp Cis7OyAgICJSZWZyZXNoIGlubGF5IGhpbnRzIGZyb20gTFNQIHNlcnZlci4iCis7OyAgIChtYXBj ICMnZGVsZXRlLW92ZXJsYXkgKG92ZXJsYXlzLWluIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkK Kzs7ICAgKGxldCAoKHJlYWQtb25seS1wIGJ1ZmZlci1yZWFkLW9ubHkpCis7OyAJICAgICAgIG92 ZXJsYXlzKQorOzsgICAgIChjb25kaXRpb24tY2FzZSBlcnIKKzs7IAkgICAgKGxldCAoKGxlbnMt dGFibGUgKG1ha2UtaGFzaC10YWJsZSkpKQorOzsgCSAgICAgIDs7IEdldCB0aGUgaW5sYXkgaGlu dCBvYmplY3RzLgorOzsgCSAgICAgIChtYXBjIChsYW1iZGEgKGlubGF5SGludCkKKzs7IAkJICAg ICAgICAgICAgKHdoZW4gKGFuZCAoZWdsb3QtLXNlcnZlci1jYXBhYmxlCis7OyAJCQkgICAgICAg ICAgICAgICAgICAgICAgIDppbmxheUhpbnRQcm92aWRlciA6cmVzb2x2ZVByb3ZpZGVyKQorOzsg CQkJICAgICAgICAgICAgICAgICAgKG5vdCAocGxpc3QtbWVtYmVyIGlubGF5SGludCA6Y29tbWFu ZCkpKQorOzsgCQkgICAgICAgICAgICAgIChzZXRxIGlubGF5SGludAorOzsgCQkJICAgICAgICAg ICAgICAoanNvbnJwYy1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKKzs7 IAkJCQkJICAgICAgICAgICAgOmlubGF5SGludC9yZXNvbHZlIGlubGF5SGludCkpKQorOzsgCQkg ICAgICAgICAgICAobGV0ICgobGluZSAodGhyZWFkLWZpcnN0IGlubGF5SGludAorOzsgCQkJCQkg ICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgOnBvc2l0aW9uKQorOzsgCQkJCQkgICAgICAg ICAgICAgICAgICAgIChwbGlzdC1nZXQgOmxpbmUpKSkpCis7OyAJCSAgICAgICAgICAgICAgKHB1 dGhhc2ggbGluZQorOzsgCQkJICAgICAgICAgICAgICAoYXBwZW5kIChnZXRoYXNoIGxpbmUgbGVu cy10YWJsZSkgKGxpc3QgaW5sYXlIaW50KSkKKzs7IAkJCSAgICAgICAgICAgICAgbGVucy10YWJs ZSkpKQorOzsgCQkgICAgICAoanNvbnJwYy1yZXF1ZXN0Cis7OyAJCSAgICAgICAgKGVnbG90LS1j dXJyZW50LXNlcnZlci1vci1sb3NlKQorOzsgCQkgICAgICAgIDp0ZXh0RG9jdW1lbnQvaW5sYXlI aW50Cis7OyAJCSAgICAgICAgKGxpc3QgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHREb2N1bWVu dElkZW50aWZpZXIpIDpyYW5nZSAobGlzdCA6c3RhcnQgKGxpc3QgOmxpbmUgMCA6Y2hhcmFjdGVy IDApIDplbmQgKGxpc3QgOmxpbmUgKGNvdW50LWxpbmVzIChwb2ludC1taW4pIChwb2ludC1tYXgp KSA6Y2hhcmFjdGVyIDApKSkKKzs7IAkJICAgICAgICA6ZGVmZXJyZWQgOnRleHREb2N1bWVudC9p bmxheUhpbnQpKQorCis7OyAJICAgICAgOzsgTWFrZSBvdmVybGF5cyBmb3IgdGhlbS4KKzs7IAkg ICAgICAobWFwaGFzaAorOzsgCSAgICAgICAgKGxhbWJkYSAobGluZSB2YWx1ZXMpCis7OyAgICAg ICAgICAgICA7OyBUT0RPOiBtYW5hZ2UgSW5sYXlIaW50TGFiZWxQYXJ0W10KKzs7IAkgICAgICAg ICAgKGVnbG90LS13aWRlbmluZworOzsgCSAgICAgICAgICAgIChsZXQgKChjIChwbGlzdC1nZXQg KHBsaXN0LWdldCAoY2FyIHZhbHVlcykgOnBvc2l0aW9uKSA6Y2hhcmFjdGVyKSkKKzs7ICAgICAg ICAgICAgICAgICAgICAgIChsYWJlbC10ZXh0IChwcm9wZXJ0aXplIChpZiAoYW5kIChwbGlzdC1t ZW1iZXIgKGNhciB2YWx1ZXMpIDpsYWJlbCkgKHN0cmluZ3AgKHBsaXN0LWdldCAoY2FyIHZhbHVl cykgOmxhYmVsKSkpIChwbGlzdC1nZXQgKGNhciB2YWx1ZXMpIDpsYWJlbCkgIiIpKSkKKzs7IAkJ ICAgICAgICAgICAgICAgICAodGV4dCBsYWJlbC10ZXh0ICdtb3VzZS1mYWNlICdoaWdobGlnaHQp Cis7OyAgICAgICAgICAgICAgICAgICAgICApCis7OyAJICAgICAgICAgICAgICAoZ290by1jaGFy IChwb2ludC1taW4pKQorOzsgCSAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSBsaW5lKQorOzsg CSAgICAgICAgICAgICAgKGVnbG90LW1vdmUtdG8tY29sdW1uIGMpCis7OyAJICAgICAgICAgICAg ICAobGV0ICgob3YgKG1ha2Utb3ZlcmxheSAocG9pbnQpIChwb2ludCkpKSkKKzs7IAkJICAgICAg ICAgICAgICAocHVzaCBvdiBvdmVybGF5cykKKzs7IAkJICAgICAgICAgICAgICAob3ZlcmxheS1w dXQgb3YgJ2VnbG90LWlubGF5LWhpbnQgdmFsdWVzKQorOzsgCQkgICAgICAgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnYmVmb3JlLXN0cmluZyAocHJvcGVydGl6ZSB0ZXh0ICdmYWNlICdlZ2xvdC1p bmxheS1oaW50KSkKKzs7ICAgICAgICAgICAgICAgICAgICkpKSkKKzs7IAkgICAgICAgIGxlbnMt dGFibGUpCis7OyAgICAgICAgICkKKzs7ICAgICAgIChlcnJvcgorOzsgICAgICAgIChtYXBjICMn ZGVsZXRlLW92ZXJsYXkgb3ZlcmxheXMpCis7OyAgICAgICAgKHNldHEgYnVmZmVyLXJlYWQtb25s eSByZWFkLW9ubHktcCkKKzs7ICAgICAgICAoZWdsb3QtLWlubGF5LW1vZGUgLTEpCis7OyAgICAg ICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpKSkKKworOzsgICAgICAgKGRlZnVuIGVn bG90LWlubGF5LWhpbnQgKCkKKzs7ICAgICAgICAgIkFzayB0aGUgc2VydmVyIGZvciBpbmxheSBo aW50IGFuZCBzaG93IHRoZW0gaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiIKKzs7ICAgICAgICAgKGlu dGVyYWN0aXZlKQorOzsgICAgICAgICAodW5sZXNzIChlZ2xvdC0tc2VydmVyLWNhcGFibGUgOmlu bGF5SGludFByb3ZpZGVyKQorOzsgICAgICAgICAgIChlcnJvciAiU2VydmVyIGRvZXMgbm90IHN1 cHBvcnQgaW5sYXkgaGludC4iKSkKKworOzsgICAgICAgICA7OyBTZXR1cCBtaW5vciBtb2RlIHdo aWNoIHdpbGwgY2xlYW4gdGhlbSB1cCBhbmQgcHJvdmlkZSBrZXliaW5kaW5ncy4KKzs7ICAgICAg ICAgKGVnbG90LS1pbmxheS1tb2RlIDEpCis7OyAgICAgICAgIChlZ2xvdC0tdXBkYXRlLWhpbnRz KQorOzsgICAgICAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2VnbG90LS11cGRhdGUt aGludHMgbmlsIHQpCisKKzs7ICAgICAgICAgKGNsLWxhYmVscworOzsgICAgICAgICAgICgoY2xl YW51cAorOzsgICAgICAgICAgICAgICgpCis7OyAgICAgICAgICAgICAgKHJlbW92ZS1ob29rICdl Z2xvdC0taW5sYXktbW9kZS1ob29rICMnY2xlYW51cCB0KQorOzsgICAgICAgICAgICAgIChyZW1v dmUtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdlZ2xvdC0tdXBkYXRlLWhpbnRzIHQpCis7OyAgICAg ICAgICAgICAgKHVubGVzcyBlZ2xvdC0taW5sYXktbW9kZQorOzsgICAgICAgICAgICAgICAgKG1h cGMgIydkZWxldGUtb3ZlcmxheSBvdmVybGF5cykKKzs7ICAgICAgICAgICAgICAgIChzZXRxIGJ1 ZmZlci1yZWFkLW9ubHkgcmVhZC1vbmx5LXApKSkpCis7OyAgICAgICAgICAgKGFkZC1ob29rICdl Z2xvdC0taW5sYXktbW9kZS1ob29rICMnY2xlYW51cCBuaWwgdCkpCis7OyAgICAgICAgICkKKwog DAogOzs7IEhhY2tzCiA7OzsKQEAgLTM0MDgsNyArMzY0Nyw3IEBAIElmIE5PRVJST1IsIHJldHVy biBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogOzs7CiAKIChtYWtlLW9ic29s ZXRlLXZhcmlhYmxlICdlZ2xvdC0tbWFuYWdlZC1tb2RlLWhvb2sKLSAgICAgICAgICAgICAgICAg ICAgICAgICdlZ2xvdC1tYW5hZ2VkLW1vZGUtaG9vayAiMS42IikKKyAgJ2VnbG90LW1hbmFnZWQt bW9kZS1ob29rICIxLjYiKQogKHByb3ZpZGUgJ2VnbG90KQogCiAMCkBAIC0zNDMwLDEwICszNjY5 LDEwIEBAIElmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rp b24uIgogOzsgYWNjb3JkaW5nbHkuICB0cnljL2FsbGMgbmFtZXMgbWFkZSBha3dhcmQvcmVjb2du aXphYmxlIG9uIHB1cnBvc2UuCiAKIChhZGQtdG8tbGlzdCAnY29tcGxldGlvbi1zdHlsZXMtYWxp c3QKLSAgICAgICAgICAgICAnKGVnbG90LS1sc3AtYmFja2VuZC1zdHlsZQotICAgICAgICAgICAg ICAgZWdsb3QtLWxzcC1iYWNrZW5kLXN0eWxlLXRyeS1jb21wbGV0aW9uCi0gICAgICAgICAgICAg ICBlZ2xvdC0tbHNwLWJhY2tlbmQtc3R5bGUtYWxsLWNvbXBsZXRpb25zCi0gICAgICAgICAgICAg ICAiQWQtaG9jIGNvbXBsZXRpb24gc3R5bGUgcHJvdmlkZWQgYnkgdGhlIGNvbXBsZXRpb24gdGFi bGUuIikpCisgICcoZWdsb3QtLWxzcC1iYWNrZW5kLXN0eWxlCisgICAgIGVnbG90LS1sc3AtYmFj a2VuZC1zdHlsZS10cnktY29tcGxldGlvbgorICAgICBlZ2xvdC0tbHNwLWJhY2tlbmQtc3R5bGUt YWxsLWNvbXBsZXRpb25zCisgICAgICJBZC1ob2MgY29tcGxldGlvbiBzdHlsZSBwcm92aWRlZCBi eSB0aGUgY29tcGxldGlvbiB0YWJsZS4iKSkKIAogKGRlZnVuIGVnbG90LS1sc3AtYmFja2VuZC1z dHlsZS1jYWxsIChvcCBzdHJpbmcgdGFibGUgcHJlZCBwb2ludCkKICAgKHdoZW4gKGZ1bmN0aW9u cCB0YWJsZSkKLS0gCjIuMzQuMQoK --0000000000005e698c05f53a24f5-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Feb 2023 21:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Dimitri Belopopsky Cc: Po Lu , Chinmay Dalal , Eli Zaretskii , 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167701480224035 (code B ref 61412); Tue, 21 Feb 2023 21:27:01 +0000 Received: (at 61412) by debbugs.gnu.org; 21 Feb 2023 21:26:42 +0000 Received: from localhost ([127.0.0.1]:57366 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUa9p-0006Fb-Ty for submit@debbugs.gnu.org; Tue, 21 Feb 2023 16:26:42 -0500 Received: from mail-oa1-f47.google.com ([209.85.160.47]:40959) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUa9m-0006FK-Aj for 61412@debbugs.gnu.org; Tue, 21 Feb 2023 16:26:40 -0500 Received: by mail-oa1-f47.google.com with SMTP id 586e51a60fabf-17235c8dab9so3349535fac.7 for <61412@debbugs.gnu.org>; Tue, 21 Feb 2023 13:26:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=BYQJ1NTTWQ1GF6+PvdbUBhrgg3N+54uSqA89DniMUBo=; b=fVdvEHtxyx/MsFiF333aUhhQlfBvbiw65vomJNldQDVByLN1pG/GfGg2+MN2UP1Zbq 6yrEGCL712oizkMlQ9HYIHkd2hVoDy8s3FwNq1sJncKrI1JXD4cJLm4Gh07j6fXjW7sI xgxTQC/wiCmPN/yWiyQqrtRgPKKe3ISZG8C+M3fPcKXcA6y2Dg+bigrfmd9h4MyTin8i kywwuYfNjZ/fzYvVU5LQ2l7e327Zogt2xc41dMrdtzLbLKjvIXw8q1q6c/vNhNgmSX01 qSpD8FQBdMUoURyAIMA0s5zw5Qh+4ASckJ3ZVjLMA8aXTi2Za2NXijEZaPXf91bbdSZn Qc1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BYQJ1NTTWQ1GF6+PvdbUBhrgg3N+54uSqA89DniMUBo=; b=PcLJwffcppknbbShJRxeBvJK9ysluGfBgeXW7AZx28YOYIhQ0BBe8ivx+3MTW0YIy7 z6QjfsZPagWVNVBQ8XlJtNs9tNy2Qs65PexnBsa7XPKm5AEsphvV1bCqrxSNB/ByJ1bx ExUp1/hdfqyM46svewNoQ5BfPkVprs68X5eAeVROog5nlo+ej8CmL0BJ66fQn2KQk/qt Zh7dnJBiZPQbqmCy4UCp0p2gK+ZOL76+lwd7SMk0KekHwEoeEgy25Ppee/zUotSy9oul 43CSS41/1AytdzbCuH/JjpGkenKVW77LVLl8Emu4Z/hdtjWppV88Wo5brBQigeXc1YIm mfqg== X-Gm-Message-State: AO0yUKUveSeWX6WGEObqz7xbWGqR1Wfto2a7s2Kya4jQseBfrAZpk6pk R3Pb65XQ99mrUzY0aCHTm6KpLWqcxWQufJ3n878= X-Google-Smtp-Source: AK7set9k7tUcINYEi3SOAFjTLSTdtxVQ0X7B4oOdAX4aSeBLhSLTpAHvB4119kndYduYLbv5dsec+KlbJhnZgV7ZdOE= X-Received: by 2002:a05:6870:7027:b0:163:cd38:813e with SMTP id u39-20020a056870702700b00163cd38813emr1566008oae.215.1677014792477; Tue, 21 Feb 2023 13:26:32 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> In-Reply-To: From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Tue, 21 Feb 2023 21:26:21 +0000 Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ok, thanks. While I'm sure Flymake can be used for this, I'm not sure it should. The reason is that inlay hints are, in principle, much more numerous than diagnostics. Collecting all of them could be wasteful when the user is only looking at a section of the file. Flymake doesn't have very good mechanisms to work with this scenario. Anyway, your patch has a very large number of unrelated whitespace changes, making it almost impossible to read. Please make one with only the essential changes. Jo=C3=A3o On Tue, Feb 21, 2023 at 6:42 PM Dimitri Belopopsky wrote: > > Hello, > > I thought the point was not to create overlays directly? > I'm sharing what I currently have, using the flymake diagnostics directly= . > Maybe something can be salvaged? > > In the meantime I'll try out your patches. > > On Tue, 21 Feb 2023 at 16:14, Jo=C3=A3o T=C3=A1vora wrote: >> >> [Eli, I just noticed that this bug should be merged with 61066, >> but I don't know how to do that] >> >> Hello, >> >> Attached is my implementation of inlay hints for Eglot. >> Two patches are provided, where the first just lays some >> basic groundwork to make the actual inlay hint implementation >> simpler. >> >> Regarding copyright stuff, I did look at Chinmay's patch, >> but I re-started from scratch. While it was a very good >> effort, there were too many idiomatic Elisp and Eglot things >> to change. I did take Chinmay's face definitions, though. >> Not sure how to proceed here and if this counts as "derived >> work" and if we should wait for Chinmay's copyright assignment. >> >> I gave it some light testing and I kind of like it. Quite >> helpful for C++ with clangd (the only server I tested it with). >> You can bind `eglot-inlay-hint-mode` to some keybinding probably. > > > It's even more helpful in languages like Rust, that rely on type deductio= n a lot more. > Clangd has an extension for designator hints that looks interesting too. > >> >> Documentation in the manual is still missing, but shouldn't >> be very hard to do. >> >> Anyway, this is likely not the end of the inlay hint story >> because, as the second patch documents, this is likely a >> very naive implementation that always requests inlay hints >> for the entire buffer even if just a fraction of it is visible. > > >> >> A better implementation would probably leverage >> window-scroll-functions along with the Eglot-specific >> idle timer. That is probably much, much more tricky to get >> right, but is also more than likely the way to go. >> >> In the meantime, I'd like your opinion on this patch and >> the above topics first. >> >> Jo=C3=A3o >> >> I hope gmail doesn't mess up my attachments... --=20 Jo=C3=A3o T=C3=A1vora From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Feb 2023 15:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: joaotavora@gmail.com Cc: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167707957423054 (code B ref 61412); Wed, 22 Feb 2023 15:27:02 +0000 Received: (at 61412) by debbugs.gnu.org; 22 Feb 2023 15:26:14 +0000 Received: from localhost ([127.0.0.1]:60085 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUr0Y-0005zm-9a for submit@debbugs.gnu.org; Wed, 22 Feb 2023 10:26:14 -0500 Received: from mail-pf1-f180.google.com ([209.85.210.180]:33722) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUr0W-0005zU-KD for 61412@debbugs.gnu.org; Wed, 22 Feb 2023 10:26:12 -0500 Received: by mail-pf1-f180.google.com with SMTP id g12so4672696pfi.0 for <61412@debbugs.gnu.org>; Wed, 22 Feb 2023 07:26:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=nj0TXoaLuxWpdwn37ywGGDGw5ZPZncHCi42Rd247GU4=; b=VaW79ddxKZ3bHjUPGkWlnsazcrlJGTrAo4QEcfOjxXhm+Bi+Z7Yrk+hh4LEXLQfMNp Ff0axahlroqLI+cNg0WjWcS7USmN94JTkgrZCldxILUociP/rqdfW8NUpODgdbmOG6Q2 RJXr43TALj9sdmS+ozImTS+YfYYI0yFHC244FeVkaWcCqyvplkNaU/D0HixMCYalntci lSxIaL/Al991KYSDUxpzzNi45YCiej7m2zfNv0+IBOzlZSNjwQwghzSLS96oDtql2G9p 3bvURGRoucOgQDYwOcLjJyyNP8b3RJ6p7miCJyrfMYq4hWC+d9nfRQPmFfWUyr79cq3u swpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:message-id:date:in-reply-to:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nj0TXoaLuxWpdwn37ywGGDGw5ZPZncHCi42Rd247GU4=; b=N/jHpPQ1TCixCj9KD+fBn88kiydYwPFnogQiiPb1M3KA46jBnG5519YCZ50WZedVxt 81cYbfMdW6IZResgeeN135KAKZovLz+dP9/5eFma1ABtU3iIzWFVNtw9MtfujJ7FB+I0 ASOPDSMqAj7w+xlE6Vz/6LiV0XJzgw7d58/ecWKa+mUhE0BjBX/W69Tx68rj+HX6O9s+ 1VyOi8xqV3EdmThZ08260SdD6WA2BLOqy+YMIGkHWTw79HVTELCbDFCV+vlf8scgHXwb hNunJqGw2ADjNRGvsL3Cm2puewbxMkBca59grXdHPMR/tr9lCBB1E+TfTJdEV65osSQl DEOQ== X-Gm-Message-State: AO0yUKUiUqkskAY+cYxHJFo6nrAzpGbsA0IFjjeR1WUA9v50wN96cgy4 0+bh8q9WnqU94e+ZYnGJg4Oh0z0D4V8= X-Google-Smtp-Source: AK7set/dhy85Lp4g3DOH0F0IlAic7FIBfbBWSkx/9SalDScgxX3ojRgAJ3j/KS08HRrUGajTvGOcGw== X-Received: by 2002:a62:1b4a:0:b0:5a8:acd9:765b with SMTP id b71-20020a621b4a000000b005a8acd9765bmr6771130pfb.16.1677079566400; Wed, 22 Feb 2023 07:26:06 -0800 (PST) Received: from ganymede ([14.98.244.193]) by smtp.gmail.com with ESMTPSA id f15-20020aa78b0f000000b005ac419804d3sm5215036pfd.186.2023.02.22.07.26.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Feb 2023 07:26:05 -0800 (PST) From: Chinmay Dalal In-Reply-To: CALDnm53otfeDQGr0dWWUhxGLTSuiWTstLXJz1HXQgWLiAgsk=A@mail.gmail.com Date: Wed, 22 Feb 2023 20:56:01 +0530 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: When I apply these patches and add a hook (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode) and try to delete a buffer, I get Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.180 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.210.180 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: When I apply these patches and add a hook (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode) and try to delete a buffer, I get Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.210.180 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [14.98.244.193 listed in zen.spamhaus.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.180 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dalal.chinmay.0101[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (dalal.chinmay.0101[at]gmail.com) 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager When I apply these patches and add a hook (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode) and try to delete a buffer, I get eglot--error: [eglot] Can't turn on `eglot-inlay-hints' mode. once, and then I am able to delete the buffer. Chinmay From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: Chinmay Dalal Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Feb 2023 16:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: joaotavora@gmail.com Cc: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.167708470232267 (code B ref 61412); Wed, 22 Feb 2023 16:52:02 +0000 Received: (at 61412) by debbugs.gnu.org; 22 Feb 2023 16:51:42 +0000 Received: from localhost ([127.0.0.1]:60215 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUsLB-0008OJ-Gk for submit@debbugs.gnu.org; Wed, 22 Feb 2023 11:51:42 -0500 Received: from mail-pf1-f177.google.com ([209.85.210.177]:36594) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUsL5-0008Nz-FE for 61412@debbugs.gnu.org; Wed, 22 Feb 2023 11:51:36 -0500 Received: by mail-pf1-f177.google.com with SMTP id s15so3314967pfg.3 for <61412@debbugs.gnu.org>; Wed, 22 Feb 2023 08:51:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=atEclMqC45mDe7pKJLaEFK8xpe6HHnqkkXN0YnR4T68=; b=V/kJfb5FSsk/X/hIFOVYm54wFduIyKpA9Sb1eFIkMXkYWtPfrkWl5y5OnnAOsULdke 81uh2DK3KrfygWrabBFhSSeMO/6ym6pp1T+K1dvW8leFrWn/bVjDerDdvikEJVQVNj0e FQddg9wqJC9THBRtWJYyZnv6xYa8QwnfviVLqEdXyqumU9hLJTPko1TNJw/uyLnHDP2S pALa4OYNAP8u/9vxFYyzTiHCXCrqw1wgNoOvSzsuKWYIIm4Qr89LJ/ir0Fm9tTgKF8SK 0JFsvHjDiaeC3VJ5WlNRF1sPJSFNjj6eUYI2a++ZrazeoHlCYHNdt/t+ejyN3c/YQItg dYfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=atEclMqC45mDe7pKJLaEFK8xpe6HHnqkkXN0YnR4T68=; b=IEKsm5jS/SAq6rjY33K1s86JMEO8FQ+paoNAnAWxrixXK1O1CEF0CaTM3RyDVhcRxq N66Y+twrXjDrV9grSfD4GPt+Zert++HSSGJdYR+xSU/6PGISFB5cjUblDk9SHrc8/UZ+ LW2HcIa4G032u43mY2OegRoupTALTcrRLXRxyO2yI7k8wDpFZFEQsxH9TjIQzPxvkuZF 4rjY8+CCMSUpsK6oVqfgBWzk+gLGXM+AQmtQDyufyd5aXg3LhCIW7PHehEuqsNTQUk9z xYCKCxw033dVjlOq9cb75kLFxtpkTVnpwOccohBFwaX3B0YWMN2ZO9+7+r0zDGF/zXMe Tm3A== X-Gm-Message-State: AO0yUKVtqtrO0BPiPamBwxjSgaNdhqRw5SxdpQZ5lF9AC8fupUZF9zgv +XKJS09jjKIgrX/+pgF29rmD0kbVBgMZScdhtj0= X-Google-Smtp-Source: AK7set8mpAyZx+rUnh1WllubpyvS25A28WclI6/XUe3hdN/cLc7i3v7AiK3wdGx9AnebvomncugXzOWg6Me6FHVBOkY= X-Received: by 2002:a05:6a00:2a5:b0:5a8:ab30:4f6 with SMTP id q5-20020a056a0002a500b005a8ab3004f6mr1326277pfs.3.1677084685399; Wed, 22 Feb 2023 08:51:25 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Chinmay Dalal Date: Wed, 22 Feb 2023 22:21:14 +0530 Message-ID: Content-Type: multipart/alternative; boundary="000000000000ee7cb005f54cb40c" X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --000000000000ee7cb005f54cb40c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable By "these patches" I mean Jo=C3=A3o's patches, I can't figure out how to re= ply properly On Wed, 22 Feb 2023 at 20:56, Chinmay Dalal wrote: > > When I apply these patches and add a hook > > (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode) > > and try to delete a buffer, I get > > eglot--error: [eglot] Can't turn on `eglot-inlay-hints' mode. > > once, and then I am able to delete the buffer. > > > Chinmay > --000000000000ee7cb005f54cb40c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
By "these patches" I mean Jo=C3=A3o's patche= s, I can't figure out how to reply properly

On Wed, 22 Feb 2023 at 20:56= , Chinmay Dalal <dalal.c= hinmay.0101@gmail.com> wrote:

When I apply these patches and add a hook

(add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode)

and try to delete a buffer, I get

eglot--error: [eglot] Can't turn on `eglot-inlay-hints' mode.

once, and then I am able to delete the buffer.


Chinmay
--000000000000ee7cb005f54cb40c-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Feb 2023 23:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Chinmay Dalal Cc: 61412@debbugs.gnu.org Received: via spool by 61412-submit@debbugs.gnu.org id=B61412.16771078457415 (code B ref 61412); Wed, 22 Feb 2023 23:18:02 +0000 Received: (at 61412) by debbugs.gnu.org; 22 Feb 2023 23:17:25 +0000 Received: from localhost ([127.0.0.1]:60633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUyMX-0001vW-3w for submit@debbugs.gnu.org; Wed, 22 Feb 2023 18:17:25 -0500 Received: from mail-oa1-f47.google.com ([209.85.160.47]:46764) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pUyMV-0001vG-NI for 61412@debbugs.gnu.org; Wed, 22 Feb 2023 18:17:24 -0500 Received: by mail-oa1-f47.google.com with SMTP id 586e51a60fabf-17211366c6aso11542368fac.13 for <61412@debbugs.gnu.org>; Wed, 22 Feb 2023 15:17:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=TMdQ4tgB84duJmuYYGz7QGbrEBcR0i42HVs9t/5Rw7c=; b=TqSP0p3mWAdLegjzRb9pCWRIGFSjkscEvpuOjuNvb/v7a6IrExzxDZs4R8CvGbQURw Hi3g8/KyXE3lJXaGdyWQAteVYLr3EgM9W2DQBUFMRtbFqvbLYdkeUZiCrZMD+EXAvViG kfnqW6eDcZTEEmV7Hy45XELVsDE7t+/hRkvBmJbtA1EPTgVrvADe0QG4mHc2c/msj/Cv 2qPgxaOYnyOhR6gK4uE9ZYLFOulQ8t6geMOpTuQLPnv4dOVwGH/OVu1ntlmIf5+QS+QY O2wg63QxcfIq/ayGNoMpTm+/hvMeLuO2P/2UomC8IZ47EpD++V2WsS5vcVsPp01+aY2a /x/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TMdQ4tgB84duJmuYYGz7QGbrEBcR0i42HVs9t/5Rw7c=; b=cvhetcIAefr6mPnH4KWCXsSti0pfhoSj9Nq1wrf0Y95wVk2gwl4rL6TAGz6JxlUuBe 7/8S/DwIgL0h8B8GavxN364QzAcbsu/DiFdAXYED7e+lqeJ8YB7QC0iivME4BIyL7eiJ rQVlN3gI5cerugf/MejmSJSXM2TnVpmwJq/gwefOfpsrQilhe0qka1DI0IRQ/nD2/GOC NQMkRIlsZbT2JyczsE1K/LORcXC2B2qj3bXiTu2iR9cH5prR7crYIV5azFPF5ZnblIPx dihwcpyD20AsTtEwmHB22qrt6NRtGjTrfuFagGKOLQ9xghGZCRYWj1Av8kjCF+cTtfbj Sb8g== X-Gm-Message-State: AO0yUKV4OpYHnB72wmg13iV3RxCLW/04Be2RkNx6s8T32ieYmiKY7xQP rSPbq7UTtc+Kyp6ze0s5i0uvaIf1W0LxNin7tJ0= X-Google-Smtp-Source: AK7set+bCN2UjsGlVDyGNdMjRX9HXXwb8alKakLdQPyGeDr368uczWX6f92tZ4+4aBVc4L0sqq8Ba02e3eYDXxKOgro= X-Received: by 2002:a05:6870:7027:b0:163:cd38:813e with SMTP id u39-20020a056870702700b00163cd38813emr1928512oae.215.1677107838039; Wed, 22 Feb 2023 15:17:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Wed, 22 Feb 2023 23:17:06 +0000 Message-ID: Content-Type: multipart/alternative; boundary="000000000000efba6005f552189e" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000efba6005f552189e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 22, 2023, 15:26 Chinmay Dalal wrote: > > When I apply these patches and add a hook > > (add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode) > > and try to delete a buffer, I get > > eglot--error: [eglot] Can't turn on `eglot-inlay-hints' mode. > > once, and then I am able to delete the buffer. > This is due to an unrelated bug that I've also fixed in the emacs-29 branch. Anyway, the "inlay hints" feature is now also installed. I hope you can test it and report any bugs. You sohuld be able to use that one-liner to enable eglot-inlay-hints-mode automatically. Jo=C3=A3o --000000000000efba6005f552189e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Wed, Feb 22, 20= 23, 15:26 Chinmay Dalal <dalal.chinmay.0101@gmail.com> wrote:

When I apply these patches and add a hook

(add-hook 'eglot-managed-mode-hook #'eglot-inlay-hints-mode)

and try to delete a buffer, I get

eglot--error: [eglot] Can't turn on `eglot-inlay-hints' mode.

once, and then I am able to delete the buffer.

This is due to an unrelated bug that I've also fixed
= in the emacs-29 branch.

Anyway, the "inlay hi= nts" feature is now also installed.
I hope you can test it a= nd report any bugs.=C2=A0 You sohuld
be able to use that one-line= r to enable eglot-inlay-hints-mode
automatically.

<= /div>
Jo=C3=A3o
--000000000000efba6005f552189e-- From unknown Sun Jun 15 08:54:23 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Chinmay Dalal Subject: bug#61412: closed (Re: bug#61412: Inlay hints implementation) Message-ID: References: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> X-Gnu-PR-Message: they-closed 61412 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 61412@debbugs.gnu.org Date: Sat, 25 Feb 2023 00:21:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1677284462-4359-1" This is a multi-part message in MIME format... ------------=_1677284462-4359-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #61412: [PATCH] Add inlay hints to eglot which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 61412@debbugs.gnu.org. --=20 61412: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D61412 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1677284462-4359-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 61412-done) by debbugs.gnu.org; 25 Feb 2023 00:20:05 +0000 Received: from localhost ([127.0.0.1]:38594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pViIH-00016o-Gn for submit@debbugs.gnu.org; Fri, 24 Feb 2023 19:20:05 -0500 Received: from mail-ot1-f49.google.com ([209.85.210.49]:46706) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pViIF-00016D-EO for 61412-done@debbugs.gnu.org; Fri, 24 Feb 2023 19:20:03 -0500 Received: by mail-ot1-f49.google.com with SMTP id e18-20020a0568301e5200b00690e6abbf3fso560968otj.13 for <61412-done@debbugs.gnu.org>; Fri, 24 Feb 2023 16:20:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677284397; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=XC8rUx8i8alevlhkgsBuY2/dX+SoEQhEvbClFueqsJA=; b=pxgOp+mV+XPHtPlZKGUiHBZ6TEb/F9toRFXMLfjvFisWfXjdC9+rDdlnC7dUvNGajr 5AVbCSLP5jslwt4MeFXZgH0Uz//PWSUpvtIpWDPPcHL0pFrJJnIpQZaEBn5HRg+mUy3K 1UXnpMzq/TphaDsS902BIUZApVFaetd70ZmVHDc8Brftw01knpO/U/tUjF0nAegYg9QQ Id4xyB2aFBG413HoYJ73PG2wqY0TU5yWs0ya2l/VSadCfFnvYMYB8EWVBEs7QFqDEmOi MLDnHfptT+5ZT68c/CP0jAmLpibsqZ5anGZp4JftDnE4GzdFnz+sD/U6obAWNwsWwe0K Lz4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677284397; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XC8rUx8i8alevlhkgsBuY2/dX+SoEQhEvbClFueqsJA=; b=RFZNXbnrIw/3XQ0RuEne49nE/iB41AuFHo+dMwPtYW702sgIMTtJkrjBk9nNXF/5U5 wDHzbmOY6QRsGGVjbYT9A4UzJBBxXvXuXZfQndPTC/D4noEZMgNiH4fgCYX+uuyGQraY VGACXMpBScRdW21Z89f0hqw6EU8H6bVlmq+xtK46LLx7itn1CRpJEMcO5SdKhdNZIwsb 5x4ZfhiQ9HplKFXduPOkdc6D78nJMizAa23vDwyMY3AmYv8ny0BW5Hamh/NjKNxVaJ3N aLYDWrdUIT21O1sq4tx5U0jAQ2I2lpG4biqIQ6cp+OUS9l+KD4FKmQQEWh0V0FIi1AuZ BHDQ== X-Gm-Message-State: AO0yUKUK9My0N3Eg6pRYWrEkeG8ipinwCU9taV1SrBqbxuGJ4Vj04VoF fy6vNg1uZy74o54zMSFfLm7B+pZBpz7WrMdsusQ= X-Google-Smtp-Source: AK7set/mFiCICcFCk9AevQWjqhAubRoEQdHAKWlpAaznIfZnJuHTexxBqiGs0uh7GSCEsY7EL79a9ZwY56WHNCctRZk= X-Received: by 2002:a05:6830:4091:b0:690:c81f:d459 with SMTP id x17-20020a056830409100b00690c81fd459mr2297064ott.3.1677284397817; Fri, 24 Feb 2023 16:19:57 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> In-Reply-To: From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Date: Sat, 25 Feb 2023 00:21:40 +0000 Message-ID: Subject: Re: bug#61412: Inlay hints implementation To: Dimitri Belopopsky , 61412-done@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61412-done Cc: Po Lu , Chinmay Dalal , Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Inlay hints are not implemented in Eglot as of a few days ago. I'm going to go ahead and close this bug. Please open new bugs for any missing features or problems with the new functionality. Thanks, Jo=C3=A3o ------------=_1677284462-4359-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 11 Feb 2023 08:40:14 +0000 Received: from localhost ([127.0.0.1]:38611 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQlQb-0001VF-Pk for submit@debbugs.gnu.org; Sat, 11 Feb 2023 03:40:14 -0500 Received: from lists.gnu.org ([209.51.188.17]:44834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pQl16-0000on-DR for submit@debbugs.gnu.org; Sat, 11 Feb 2023 03:13:52 -0500 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 1pQl15-0003s6-8u for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 03:13:51 -0500 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pQl13-00017N-8n for bug-gnu-emacs@gnu.org; Sat, 11 Feb 2023 03:13:50 -0500 Received: by mail-pj1-x1033.google.com with SMTP id mi9so7596548pjb.4 for ; Sat, 11 Feb 2023 00:13:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=MQbSkvswjrUJsb+zXwjOI5qstVE5xVc4Z66AcwxSS6U=; b=kTD5bvpFvwpeJjULI/rZf2JXUIpXpaW3ao5QOtUNJhKuz2XeRAOnkf/XFNHDqlGxJa f7ZXZ2DQvJOzLV0OcNuarEiBQZ37w226wGD/emcw8TSlMz133EHR9MmJQLA3v5Ns2Rab jfFfMXEzgLitE/NGjjY5VyBhD/3ppfpH/2q06iKuLSsmAGHxJwc68Tm8POMJr8pFFLmT PYIp8OAfL6d45cT/6MYm/WlYvEnR2oXVWyWxcwgboiWL84llaPjyIkvn/qETBtHJfokR lQSaHztohbTPIuwEjg1I1pzk8HSobGHyHpXJjGQjah2sS7y/Belv6B7ccnncVd/rqhQD U4yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MQbSkvswjrUJsb+zXwjOI5qstVE5xVc4Z66AcwxSS6U=; b=CE/+luTmlgrANnPcstzEJdeqGY1NctnSL4N9E+ItR3i2BbW4u7PJHq4Ke58GDPuw5+ 6MtQiF2oU5s8U+a0tCvHmOENsV6z816WcgWOGULuWii+M4AnIKg/cmhImL9ff/XqLk2G b+jqxHByc9zXXzwci9+a+nkmwURxbY4Pioziovq9Y5su+bCV2l0SNIA9uOXU9lC4mwZG jtrQ6rV3I18bxX7ykLw8cbraP/JM93WbSgCrq0/qnfyrIJI6HH9lAWFftCceB1c+BP+q NRIvRu8FogA1CWyqZdCmRit41/4fK1T/6DId63vOW2PRO2P2/Y+5J8C1P0fjxO/ONlS3 odJQ== X-Gm-Message-State: AO0yUKUUVrqMeECsOcQZbEvi0UNoiK42nkPSCMCU6zockXZuDoGWMCSI jizAUaoDHb/z4UOH7Ow18JAzmnRlTDY9xA== X-Google-Smtp-Source: AK7set8BE5xYcPQuQVdAJ3i2uHcsk4NbRLqY85ipLyAsMuys4BdMpLtqRYes49A3BK9/DUg/NyTFbA== X-Received: by 2002:a17:90a:1993:b0:230:7c78:6a7 with SMTP id 19-20020a17090a199300b002307c7806a7mr19589833pji.28.1676103227138; Sat, 11 Feb 2023 00:13:47 -0800 (PST) Received: from ganymede.bits-hyderabad.ac.in ([103.177.232.33]) by smtp.gmail.com with ESMTPSA id q93-20020a17090a756600b0023086d88781sm2023374pjk.3.2023.02.11.00.13.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Feb 2023 00:13:46 -0800 (PST) From: Chinmay Dalal To: bug-gnu-emacs@gnu.org Subject: [PATCH] Add inlay hints to eglot Date: Sat, 11 Feb 2023 13:43:36 +0530 Message-Id: <20230211081335.312224-1-dalal.chinmay.0101@gmail.com> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=dalal.chinmay.0101@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sat, 11 Feb 2023 03:40:13 -0500 Cc: Chinmay Dalal X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Hello all, I have improved upon the patch from bug#61066. >From the original email: > - I can't figure out a way to show the hints on a document without causing lags or timeouts from the lsp server This might have been because they were sending an asynchronous request, waiting for the response, collecting the hints and displaying them. I have instead used `jsonrpc-async-request` with a handler function which should remedy this issue. I have tried this with rust-analyzer and faced no lags. The original patch also checked the wrong condition (`cond (eglot--managed-mode`) in `eglot-inlay-mode` and had a superfluous `(run-hooks 'eglot-managed-mode-hook)` (presumably copy-pasted from `define-minor-mode eglot--managed-mode`), I have fixed that. >From a reply to the original email: > AFAIU, inlay hints provide information of the same kind as ElDoc and > in similar manner from the display and UX POV. So I think this > feature should work via ElDoc, not as a separate from-the-scratch > implementation. This can't be done via ElDoc because the purpose of inlay hints is to display variable types and parameter names without moving the cursor to the location. One can already see this information if they move their cursor to the variable or function and wait for the "hover" - inlay hints were added to the spec after this which (IMHO) clearly means something like overlays should be used. A couple of issues at present: 1. I have not implemented "complex" hints (whose `label` is an array of `InlayHintLabelPart` instead of a string) because I don't know what to do when there are multiple labels at the same location. rust-analyzer uses these hints to show a clickable link at the end of a function block, which points to the beginning of the function. 2. I need to save the buffer or disable and re-enable `eglot-inlay-mode` to get hints for the first time after opening a file, even though I call `eglot--update-hints` once in `eglot-inlay-mode`. Regards, Chinmay Dalal --- lisp/progmodes/eglot.el | 70 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 6caf589..0d5e63e 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -404,6 +404,10 @@ This can be useful when using docker to run a language server.") (when (assoc 'flex completion-styles-alist) (add-to-list 'completion-category-defaults '(eglot (styles flex basic)))) +(defcustom eglot-inlay-hints t + "If non-nil, enable inlay hints." + :type 'boolean) + ;;; Constants ;;; @@ -1624,7 +1628,8 @@ under cursor." (const :tag "Highlight links in document" :documentLinkProvider) (const :tag "Decorate color references" :colorProvider) (const :tag "Fold regions of buffer" :foldingRangeProvider) - (const :tag "Execute custom commands" :executeCommandProvider))) + (const :tag "Execute custom commands" :executeCommandProvider) + (const :tag "Inlay hints" :inlayHintProvider))) (defun eglot--server-capable (&rest feats) "Determine if current server is capable of FEATS." @@ -1845,6 +1850,8 @@ If it is activated, also signal textDocument/didOpen." (when (and buffer-file-name (eglot-current-server)) (setq eglot--diagnostics nil) (eglot--managed-mode) + (unless (not eglot-inlay-hints) + (eglot-inlay-mode)) (eglot--signal-textDocument/didOpen)))) (add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode) @@ -3456,6 +3463,67 @@ If NOERROR, return predicate, else erroring function." (revert-buffer) (pop-to-buffer (current-buffer))))) +(defface eglot-inlay-hint + '((t (:height 0.8 :inherit shadow))) + "Face used for inlay hint overlays.") + +(define-minor-mode eglot-inlay-mode + "Mode for displaying inlay hints." + :lighter " inlay" + (if eglot-inlay-mode + (progn + (add-hook 'after-save-hook 'eglot--update-hints 0 t) + (eglot--update-hints)) + (progn + (remove-hook 'after-save-hook 'eglot--update-hints t) + (eglot--remove-hints)))) + +(defun eglot--inlay-handler (buffer hints) + "Apply vector of inlay hints HINTS on buffer BUFFER." + (seq-doseq (hint hints) + (let* ((position (plist-get hint :position)) + (line (plist-get position :line)) + (character (plist-get position :character)) + (label (plist-get hint :label))) + (when (stringp label) + (with-current-buffer buffer + (eglot--widening + (goto-char (point-min)) + (forward-line line) + (eglot-move-to-column character) + (let ((overlay (make-overlay (point) (point)))) + (overlay-put overlay 'before-string (propertize + (concat (if (plist-get hint :paddingLeft) " " "") + label + (if (plist-get hint :paddingRight) " " "")) + 'face 'eglot-inlay-hint)) + (overlay-put overlay 'is-eglot-inlay-hint t)))))))) + +(defun eglot--remove-hints () + "Remove inlay hints from the buffer." + (remove-overlays nil nil 'is-eglot-inlay-hint t)) + +(defun eglot--update-hints () + "Request inlay hints for the current buffer and apply them." + (unless (eglot--server-capable :inlayHintProvider) + (eglot--error "This LSP server isn't an :inlayHintProvider")) + ;; Remove existing hints + (eglot--remove-hints) + (let ((buffer (current-buffer))) + (jsonrpc-async-request + (eglot--current-server-or-lose) + :textDocument/inlayHint + (list + :textDocument (eglot--TextDocumentIdentifier) + :range (list + :start (list :line 0 :character 0) + :end (list + :line (count-lines (point-min) (point-max)) + :character 0))) + :success-fn (lambda (hints) + (eglot--inlay-handler buffer hints)) + :deferred t))) + ;;; Hacks ;;; -- 2.39.1 ------------=_1677284462-4359-1-- From unknown Sun Jun 15 08:54:23 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Dimitri Belopopsky Subject: bug#61066: closed (Re: bug#61412: Inlay hints implementation) Message-ID: References: X-Gnu-PR-Message: they-closed 61066 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 61066@debbugs.gnu.org Date: Sat, 25 Feb 2023 00:21:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1677284462-4359-3" This is a multi-part message in MIME format... ------------=_1677284462-4359-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #61412: [PATCH] Add inlay hint support to eglot which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 61066@debbugs.gnu.org. --=20 61412: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D61412 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1677284462-4359-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 61412-done) by debbugs.gnu.org; 25 Feb 2023 00:20:05 +0000 Received: from localhost ([127.0.0.1]:38594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pViIH-00016o-Gn for submit@debbugs.gnu.org; Fri, 24 Feb 2023 19:20:05 -0500 Received: from mail-ot1-f49.google.com ([209.85.210.49]:46706) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pViIF-00016D-EO for 61412-done@debbugs.gnu.org; Fri, 24 Feb 2023 19:20:03 -0500 Received: by mail-ot1-f49.google.com with SMTP id e18-20020a0568301e5200b00690e6abbf3fso560968otj.13 for <61412-done@debbugs.gnu.org>; Fri, 24 Feb 2023 16:20:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677284397; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=XC8rUx8i8alevlhkgsBuY2/dX+SoEQhEvbClFueqsJA=; b=pxgOp+mV+XPHtPlZKGUiHBZ6TEb/F9toRFXMLfjvFisWfXjdC9+rDdlnC7dUvNGajr 5AVbCSLP5jslwt4MeFXZgH0Uz//PWSUpvtIpWDPPcHL0pFrJJnIpQZaEBn5HRg+mUy3K 1UXnpMzq/TphaDsS902BIUZApVFaetd70ZmVHDc8Brftw01knpO/U/tUjF0nAegYg9QQ Id4xyB2aFBG413HoYJ73PG2wqY0TU5yWs0ya2l/VSadCfFnvYMYB8EWVBEs7QFqDEmOi MLDnHfptT+5ZT68c/CP0jAmLpibsqZ5anGZp4JftDnE4GzdFnz+sD/U6obAWNwsWwe0K Lz4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677284397; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XC8rUx8i8alevlhkgsBuY2/dX+SoEQhEvbClFueqsJA=; b=RFZNXbnrIw/3XQ0RuEne49nE/iB41AuFHo+dMwPtYW702sgIMTtJkrjBk9nNXF/5U5 wDHzbmOY6QRsGGVjbYT9A4UzJBBxXvXuXZfQndPTC/D4noEZMgNiH4fgCYX+uuyGQraY VGACXMpBScRdW21Z89f0hqw6EU8H6bVlmq+xtK46LLx7itn1CRpJEMcO5SdKhdNZIwsb 5x4ZfhiQ9HplKFXduPOkdc6D78nJMizAa23vDwyMY3AmYv8ny0BW5Hamh/NjKNxVaJ3N aLYDWrdUIT21O1sq4tx5U0jAQ2I2lpG4biqIQ6cp+OUS9l+KD4FKmQQEWh0V0FIi1AuZ BHDQ== X-Gm-Message-State: AO0yUKUK9My0N3Eg6pRYWrEkeG8ipinwCU9taV1SrBqbxuGJ4Vj04VoF fy6vNg1uZy74o54zMSFfLm7B+pZBpz7WrMdsusQ= X-Google-Smtp-Source: AK7set/mFiCICcFCk9AevQWjqhAubRoEQdHAKWlpAaznIfZnJuHTexxBqiGs0uh7GSCEsY7EL79a9ZwY56WHNCctRZk= X-Received: by 2002:a05:6830:4091:b0:690:c81f:d459 with SMTP id x17-20020a056830409100b00690c81fd459mr2297064ott.3.1677284397817; Fri, 24 Feb 2023 16:19:57 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> In-Reply-To: From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Date: Sat, 25 Feb 2023 00:21:40 +0000 Message-ID: Subject: Re: bug#61412: Inlay hints implementation To: Dimitri Belopopsky , 61412-done@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 61412-done Cc: Po Lu , Chinmay Dalal , Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Inlay hints are not implemented in Eglot as of a few days ago. I'm going to go ahead and close this bug. Please open new bugs for any missing features or problems with the new functionality. Thanks, Jo=C3=A3o ------------=_1677284462-4359-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 25 Jan 2023 22:34:34 +0000 Received: from localhost ([127.0.0.1]:60160 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pKoLi-00080T-BS for submit@debbugs.gnu.org; Wed, 25 Jan 2023 17:34:34 -0500 Received: from lists.gnu.org ([209.51.188.17]:60080) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pKoLe-00080J-Da for submit@debbugs.gnu.org; Wed, 25 Jan 2023 17:34:32 -0500 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 1pKoLS-00021R-M5 for bug-gnu-emacs@gnu.org; Wed, 25 Jan 2023 17:34:25 -0500 Received: from mail-qk1-f171.google.com ([209.85.222.171]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pKoLO-0000gs-Tt for bug-gnu-emacs@gnu.org; Wed, 25 Jan 2023 17:34:16 -0500 Received: by mail-qk1-f171.google.com with SMTP id l1so74547qkg.11 for ; Wed, 25 Jan 2023 14:34:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=QNtLsymABkjYRq0aYCtV5R7pDJw8aez+nUUEqDYznyI=; b=McA565CuiixwHYJ8qcqWs2wR2jtEjl9sXgfRRkcklEQiyrgq0HjZuM+N8px5YxN/EB tTJEa2jtCGux+qBtoMQiAGxpeC7Uik3DXJ7kz4B0R454lN96P1KlZz8kov7XYBlFLX83 Pk/6SiyMScL6CXOflpNpca3DrLhZw+BnUif9mcCiiX6G0GDZp3cADKodHzobF75dqv15 3NoGnM/Ib5vU2SE3sOcxGv4m/ZtOIfDlzJjB1wvGcNmVvDuOO/nAFrKst+LSjy1Y0FW2 jJZ8NUa/dCUZOUua18Qo5EyUvhg3QMS0XlMlZ5msNZ2ANq1WJjE9+BeGvAkcq0n8l1R3 g9CA== X-Gm-Message-State: AO0yUKVatlkJlri+Yxd0qjuplrFxBbwcn8Mf8SfH8XCL6bBq2dNoGJ+5 ZugSYJCyBqMELb+7BnItqVqhmKTajJQS9va6rsf+RKDg X-Google-Smtp-Source: AK7set/K3dOBEnuUC+3D/Ux0/7Vl9jwQuAmN5Tsbbk7iS3dbTwcQnTcX9LjrmEm+lNDVJnFDY2AqWHGlKhQJLfZIm+Q= X-Received: by 2002:a05:620a:1332:b0:710:2b0c:9f68 with SMTP id p18-20020a05620a133200b007102b0c9f68mr335561qkj.520.1674686053172; Wed, 25 Jan 2023 14:34:13 -0800 (PST) MIME-Version: 1.0 From: Dimitri Belopopsky Date: Wed, 25 Jan 2023 23:34:02 +0100 Message-ID: Subject: [PATCH] Add inlay hint support to eglot To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary="0000000000004f94d105f31e3b0b" Received-SPF: pass client-ip=209.85.222.171; envelope-from=dimitribelo@gmail.com; helo=mail-qk1-f171.google.com X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.091, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) --0000000000004f94d105f31e3b0b Content-Type: multipart/alternative; boundary="0000000000004f94ce05f31e3b09" --0000000000004f94ce05f31e3b09 Content-Type: text/plain; charset="UTF-8" Hello, I've been working on adding support for inlay hints inside eglot using overlays. Here is a working patch, but I'm still missing a few things: - I can't figure out a way to show the hints on a document without causing lags or timeouts from the lsp server - I'm currently updating the hints by sending the whole file each time (to make sure all hints get updated correctly). I'm not sure on how to make this more efficient (or if it even necessary). On the implementation side: - implemented with overlays as a minor model, enabled by default - shows all hints supported by the protocol - there is a customisation to disable the minor mode if the user doesn't want the feature I'd love to get a few points to finish this patch, and of course any ideas and feedbacks are welcome! Kind regards, Dimitri Belopopsky --0000000000004f94ce05f31e3b09 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I've been working o= n adding support for inlay hints inside eglot using overlays.
Here= is a working patch, but I'm still missing a few things:

<= div>- I can't figure out a way to show the hints on a document without = causing lags or timeouts from the lsp server
- I'm currently = updating the hints by sending the whole file each time (to make sure all hi= nts get updated correctly). I'm not sure on how to make this more effic= ient (or if it even necessary).

On the implementation sid= e:
- implemented with overlays as a minor model, enabled by defau= lt
- shows all hints supported by the protocol
- th= ere is a customisation to disable the minor mode if the user doesn't wa= nt the feature

I'd love to get a few points to finish= this patch, and of course any ideas and feedbacks are welcome!

Kind regards,

Dimitri Belopopsky
--0000000000004f94ce05f31e3b09-- --0000000000004f94d105f31e3b0b Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-inlay-hints-to-eglot.patch" Content-Disposition: attachment; filename="0001-Add-inlay-hints-to-eglot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldc8nf7x0 RnJvbSA4NDhmYTE2ZWI2MjU3Y2U0NTRjMTgxMGY4MWJlOGVkOGVkMTQwMTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEaW1pdHJpIEJlbG9wb3Bza3kgPGRpbWl0cmlAYmVsb3BvcHNr eS5jb20+CkRhdGU6IFdlZCwgMjUgSmFuIDIwMjMgMjM6MjQ6MTMgKzAxMDAKU3ViamVjdDogW1BB VENIXSBBZGQgaW5sYXkgaGludHMgdG8gZWdsb3QKCi0tLQogbGlzcC9wcm9nbW9kZXMvZWdsb3Qu ZWwgfCA4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxl IGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9s aXNwL3Byb2dtb2Rlcy9lZ2xvdC5lbCBiL2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsCmluZGV4IDhj ZTFhOGI3YmFmLi4yZDk0N2MzNzdhNCAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9kZXMvZWdsb3Qu ZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwKQEAgLTQwNCw2ICs0MDQsMTEgQEAgZWds b3Qtd2l0aGhvbGQtcHJvY2Vzcy1pZAogKHdoZW4gKGFzc29jICdmbGV4IGNvbXBsZXRpb24tc3R5 bGVzLWFsaXN0KQogICAoYWRkLXRvLWxpc3QgJ2NvbXBsZXRpb24tY2F0ZWdvcnktZGVmYXVsdHMg JyhlZ2xvdCAoc3R5bGVzIGZsZXggYmFzaWMpKSkpCiAKKyhkZWZjdXN0b20gZWdsb3QtaW5sYXkt aGludHMgdAorICAiSWYgbm9uLW5pbCwgYWN0aXZhdGUgaW5sYXkgaGludHMgaW5zaWRlIHRoZSBi dWZmZXIuIgorICA6dHlwZSAnYm9vbGVhbikKKworCiAMCiA7OzsgQ29uc3RhbnRzCiA7OzsKQEAg LTE2MjQsNyArMTYyOSw4IEBAIGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllcwogICAg ICAgICAgIChjb25zdCA6dGFnICJIaWdobGlnaHQgbGlua3MgaW4gZG9jdW1lbnQiIDpkb2N1bWVu dExpbmtQcm92aWRlcikKICAgICAgICAgICAoY29uc3QgOnRhZyAiRGVjb3JhdGUgY29sb3IgcmVm ZXJlbmNlcyIgOmNvbG9yUHJvdmlkZXIpCiAgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgcmVn aW9ucyBvZiBidWZmZXIiIDpmb2xkaW5nUmFuZ2VQcm92aWRlcikKLSAgICAgICAgICAoY29uc3Qg OnRhZyAiRXhlY3V0ZSBjdXN0b20gY29tbWFuZHMiIDpleGVjdXRlQ29tbWFuZFByb3ZpZGVyKSkp CisgICAgICAgICAgIChjb25zdCA6dGFnICJFeGVjdXRlIGN1c3RvbSBjb21tYW5kcyIgOmV4ZWN1 dGVDb21tYW5kUHJvdmlkZXIpCisgICAgICAgICAgIChjb25zdCA6dGFnICJJbmxheSBIaW50IiA6 aW5sYXlIaW50UHJvdmlkZXIpKSkKIAogKGRlZnVuIGVnbG90LS1zZXJ2ZXItY2FwYWJsZSAoJnJl c3QgZmVhdHMpCiAgICJEZXRlcm1pbmUgaWYgY3VycmVudCBzZXJ2ZXIgaXMgY2FwYWJsZSBvZiBG RUFUUy4iCkBAIC0xODQ1LDYgKzE4NTEsOSBAQCBlZ2xvdC0tbWF5YmUtYWN0aXZhdGUtZWRpdGlu Zy1tb2RlCiAgICAgKHdoZW4gKGFuZCBidWZmZXItZmlsZS1uYW1lIChlZ2xvdC1jdXJyZW50LXNl cnZlcikpCiAgICAgICAoc2V0cSBlZ2xvdC0tZGlhZ25vc3RpY3MgbmlsKQogICAgICAgKGVnbG90 LS1tYW5hZ2VkLW1vZGUpCisgICAgICAodW5sZXNzIChub3QgZWdsb3QtaW5sYXktaGludHMpCisg ICAgICAgIChlZ2xvdC1pbmxheS1tb2RlKQorICAgICAgICApCiAgICAgICAoZWdsb3QtLXNpZ25h bC10ZXh0RG9jdW1lbnQvZGlkT3BlbikpKSkKIAogKGFkZC1ob29rICdmaW5kLWZpbGUtaG9vayAn ZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZSkKQEAgLTM0NTMsNiArMzQ2Miw4MyBA QCBlZ2xvdC1saXN0LWNvbm5lY3Rpb25zCiAgICAgICAocmV2ZXJ0LWJ1ZmZlcikKICAgICAgIChw b3AtdG8tYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkpCiAKKyhkZWZmYWNlIGVnbG90LWlubGF5 LWhpbnQKKyAgJygodCAoOmhlaWdodCAwLjggOmluaGVyaXQgc2hhZG93KSkpCisgICJGYWNlIHVz ZWQgZm9yIGlubGF5IGhpbnQgb3ZlcmxheXMuIikKKworKGRlZmluZS1taW5vci1tb2RlIGVnbG90 LWlubGF5LW1vZGUKKyAgIk1vZGUgZm9yIGRpc3BsYXlpbmcgaW5sYXkgaGludC4iCisgIDpsaWdo dGVyICIgaW5sYXkiCisgIChjb25kCisgICAgKGVnbG90LS1tYW5hZ2VkLW1vZGUKKyAgICAgIChh ZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdlZ2xvdC0tdXBkYXRlLWhpbnRzIG5pbCB0KSkKKyAg ICAodAorICAgICAgKHJlbW92ZS1ob29rICdhZnRlci1zYXZlLWhvb2sgJ2VnbG90LS11cGRhdGUt aGludHMgdCkpCisgICAgKQorICA7OyBOb3RlOiB0aGUgcHVibGljIGhvb2sgcnVucyBiZWZvcmUg dGhlIGludGVybmFsIGVnbG90LS1tYW5hZ2VkLW1vZGUtaG9vay4KKyAgKHJ1bi1ob29rcyAnZWds b3QtbWFuYWdlZC1tb2RlLWhvb2spCisgICkKKworKGRlZnVuIGVnbG90LS11cGRhdGUtaGludHMo KQorICAiUmVmcmVzaCBpbmxheSBoaW50cyBmcm9tIExTUCBzZXJ2ZXIuIgorICAodW5sZXNzIChl Z2xvdC0tc2VydmVyLWNhcGFibGUgOmlubGF5SGludFByb3ZpZGVyKQorICAgIChlcnJvciAiU2Vy dmVyIGRvZXMgbm90IHN1cHBvcnQgaW5sYXkgaGludC4iKSkKKyAgKG1hcGMgIydkZWxldGUtb3Zl cmxheSAob3ZlcmxheXMtaW4gKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAobGV0ICgocmVh ZC1vbmx5LXAgYnVmZmVyLXJlYWQtb25seSkKKwkgICAgICAgb3ZlcmxheXMpCisJICAgIChsZXQg KChsZW5zLXRhYmxlIChtYWtlLWhhc2gtdGFibGUpKSkKKwkgICAgICA7OyBHZXQgdGhlIGlubGF5 IGhpbnQgb2JqZWN0cy4KKwkgICAgICAobWFwYyAobGFtYmRhIChpbmxheUhpbnQpCisJCSAgICAg ICAgICAgICh3aGVuIChlZ2xvdC0tc2VydmVyLWNhcGFibGUKKwkJCSAgICAgICAgICAgICAgICAg ICAgICAgOmlubGF5SGludFByb3ZpZGVyIDpyZXNvbHZlUHJvdmlkZXIpCisJCSAgICAgICAgICAg ICAgKHNldHEgaW5sYXlIaW50CisJCQkgICAgICAgICAgICAgIChqc29ucnBjLXJlcXVlc3QgKGVn bG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQorCQkJCQkgICAgICAgICAgICA6aW5sYXlIaW50 L3Jlc29sdmUgaW5sYXlIaW50KSkpCisJCSAgICAgICAgICAgIChsZXQgKChsaW5lICh0aHJlYWQt Zmlyc3QgaW5sYXlIaW50CisJCQkJCSAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCA6cG9z aXRpb24pCisJCQkJCSAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCA6bGluZSkpKSkKKwkJ ICAgICAgICAgICAgICAocHV0aGFzaCBsaW5lCisJCQkgICAgICAgICAgICAgIChhcHBlbmQgKGdl dGhhc2ggbGluZSBsZW5zLXRhYmxlKSAobGlzdCBpbmxheUhpbnQpKQorCQkJICAgICAgICAgICAg ICBsZW5zLXRhYmxlKSkpCisJCSAgICAgIChqc29ucnBjLXJlcXVlc3QKKwkJICAgICAgICAoZWds b3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCisJCSAgICAgICAgOnRleHREb2N1bWVudC9pbmxh eUhpbnQKKyAgICAgICAgICAgIChsaXN0IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1l bnRJZGVudGlmaWVyKSA6cmFuZ2UgKGxpc3QgOnN0YXJ0IChsaXN0IDpsaW5lIDAgOmNoYXJhY3Rl ciAwKSA6ZW5kIChsaXN0IDpsaW5lIChjb3VudC1saW5lcyAocG9pbnQtbWluKSAocG9pbnQtbWF4 KSkgOmNoYXJhY3RlciAwKSkpCisJCSAgICAgICAgOmRlZmVycmVkIHQpKQorCisJICAgICAgOzsg TWFrZSBvdmVybGF5cyBmb3IgdGhlbS4KKwkgICAgICAobWFwaGFzaAorCSAgICAgICAgKGxhbWJk YSAobGluZSB2YWx1ZXMpCisgICAgICAgICAgICAoY2wtbG9vcCBmb3IgdmFsdWUgaW4gdmFsdWVz CisgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgIChjbC1sb29wIGZvciB2YWwgYmVpbmcg dGhlIGVsZW1lbnRzIG9mCisgICAgICAgICAgICAgICAgKGlmIChzdHJpbmdwIChwbGlzdC1nZXQg dmFsdWUgOmxhYmVsKSkKKyAgICAgICAgICAgICAgICAgIChsaXN0IChwbGlzdC1nZXQgdmFsdWUg OmxhYmVsKSkKKyAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgdmFsdWUgOmxhYmVsKSkKKyAg ICAgICAgICAgICAgICBkbworCSAgICAgICAgICAgICAgKGVnbG90LS13aWRlbmluZworCSAgICAg ICAgICAgICAgICAobGV0ICgoYyAocGxpc3QtZ2V0IChwbGlzdC1nZXQgdmFsdWUgOnBvc2l0aW9u KSA6Y2hhcmFjdGVyKSkKKwkJICAgICAgICAgICAgICAgICAgICAgKHRleHQgKHByb3BlcnRpemUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChwbGlzdC1nZXQgdmFsdWUgOnBhZGRpbmdMZWZ0KSAi ICIgIiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5ncCB2 YWwpIHZhbCAocGxpc3QtZ2V0IHZhbCA6dmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKHBsaXN0LWdldCB2YWx1ZSA6cGFkZGluZ1JpZ2h0KSAiICIgIiIpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vdXNlLWZhY2UgJ2hpZ2hsaWdodCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKQorCSAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKKwkgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgbGluZSkKKwkgICAgICAgICAgICAg IChlZ2xvdC1tb3ZlLXRvLWNvbHVtbiBjKQorCSAgICAgICAgICAgICAgKGxldCAoKG92IChtYWtl LW92ZXJsYXkgKHBvaW50KSAocG9pbnQpKSkpCisJCSAgICAgICAgICAgICAgKHB1c2ggb3Ygb3Zl cmxheXMpCisJCSAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdlZ2xvdC1pbmxheS1oaW50 IHZhbHVlcykKKwkJICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2JlZm9yZS1zdHJpbmcg KHByb3BlcnRpemUgdGV4dCAnZmFjZSAnZWdsb3QtaW5sYXktaGludCkpCisgICAgICAgICAgICAg ICAgICApKSkKKyAgICAgICAgICAgICAgICApKSkKKwkgICAgICAgIGxlbnMtdGFibGUpCisgICAg ICAgICkKKyAgICApKQorCisKIAwKIDs7OyBIYWNrcwogOzs7Ci0tIAoyLjM0LjEKCg== --0000000000004f94d105f31e3b0b-- ------------=_1677284462-4359-3-- From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Feb 2023 08:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Cc: luangruo@yahoo.com, 61412-done@debbugs.gnu.org, dalal.chinmay.0101@gmail.com, dimitri@belopopsky.com Received: via spool by 61412-done@debbugs.gnu.org id=D61412.167731195615113 (code D ref 61412); Sat, 25 Feb 2023 08:00:02 +0000 Received: (at 61412-done) by debbugs.gnu.org; 25 Feb 2023 07:59:16 +0000 Received: from localhost ([127.0.0.1]:38914 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVpSd-0003vh-QV for submit@debbugs.gnu.org; Sat, 25 Feb 2023 02:59:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60186) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVpSc-0003vV-Qt for 61412-done@debbugs.gnu.org; Sat, 25 Feb 2023 02:59:15 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVpSX-0007mf-GM; Sat, 25 Feb 2023 02:59:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=kuKTr81dK/RxXzEsccVcOdk/CepSaqQw+roqSz4LqWw=; b=KIXsQT35jWn1SPZVqiTC NsvJAhGvAg+vpCcT7Bc2WFldlbgcLzBIk25GJy5icdIXlHljDjZfMTN9q8ZJZYMizh9ejx54mgt66 eSXJMxDqfX2WvzCq2fM0/SnQR60pNVyQpkEJngDdYg1CeAaC1AxTWwAn7gAB5Hk3AhcyM4wVxLhVl O6W0ms9tpWBW2NEnfJDt/dh8CjEc1TGe8VCwuLnxnIC9sIiI2Q1ETWCXy24a0nHREIflET3+TXgXW RQUxMD/PFkknu3oOMatnDQjylcwnrOxajipl1a3hpy2+hvqotpFMHVQlqKx4Rcq0pt4ldB92CscBW wcgnL+TMJhG/3A==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pVpSV-0005bi-P7; Sat, 25 Feb 2023 02:59:08 -0500 Date: Sat, 25 Feb 2023 09:59:10 +0200 Message-Id: <83o7pikwfl.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= on Sat, 25 Feb 2023 00:21:40 +0000) References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: João TÔvora > Date: Sat, 25 Feb 2023 00:21:40 +0000 > Cc: Chinmay Dalal , Po Lu , > Eli Zaretskii > > Inlay hints are not implemented in Eglot as of a few days ago. ^^^ You meant "now" there, right? From unknown Sun Jun 15 08:54:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#61412: Inlay hints implementation Resent-From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 25 Feb 2023 10:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61412 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: Po Lu , 61412-done@debbugs.gnu.org, Chinmay Dalal , Dimitri Belopopsky Received: via spool by 61412-done@debbugs.gnu.org id=D61412.167732038330460 (code D ref 61412); Sat, 25 Feb 2023 10:20:02 +0000 Received: (at 61412-done) by debbugs.gnu.org; 25 Feb 2023 10:19:43 +0000 Received: from localhost ([127.0.0.1]:39165 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVreY-0007vE-L5 for submit@debbugs.gnu.org; Sat, 25 Feb 2023 05:19:42 -0500 Received: from mail-oi1-f180.google.com ([209.85.167.180]:35478) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pVreW-0007uv-Qp for 61412-done@debbugs.gnu.org; Sat, 25 Feb 2023 05:19:41 -0500 Received: by mail-oi1-f180.google.com with SMTP id c11so1464047oiw.2 for <61412-done@debbugs.gnu.org>; Sat, 25 Feb 2023 02:19:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677320375; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yII3PwW5eec5FvZEH88Dp6XacUmxydE9yBVkCmsjdeU=; b=YxieuJ8kQqtAMy6DUUIPQdAuZ+3IscckQg3IFscS90nR+DIBZO9gbFGWRi9o9GRHKG Dt6mLfKmKwuy7HnBmDtJyjoHiiV3eum1mV1rR99jW7CVMIdlSB+3INA1zZXWb+0HK2Kh 6TRKRm5MfrJSccWpymBqZS2M54obUhelVjSlMDtMFubOpg94yw5mYdTqro37w3v9jVsp qiy9ARQgjzlpchqqLb3bW1Yjso9uV1RglffBRTIZ+fU1ePRA0lTocAFRQ4WSZFBihgr3 1Hgpd4tCvlpsmDs6EpZJW+oYFSxRyV1vniijzuotSPwQ5TZHL2BXwo0g2UiNWVR3urFN LGbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677320375; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yII3PwW5eec5FvZEH88Dp6XacUmxydE9yBVkCmsjdeU=; b=TxyIAOYyT6fMtoyhNrQ2ZJJARCinlwS5oY0TMkbp4KCOYOlMDAKddFAVUgHGGJ1PzE sUcYQ8nWTWdvr0IWGK+Tb4Zs2q7SfAppItq52r8nvL94Gd4MSuykBo4f7sl5oNPYWX+F rAvQcpzI9NxXJQMQ4L6QrS64NmFGe4SGwQRS5bUKVwqPDiy9QEZ9CtvrZVt46S4ZFIBD 1qS2A2A6v7ZttrglkuNBNrGFm9+FeY0YLxihq87JmDtr4FQY7EOBADfEPJDu1DAbS9RW 7fyKLUVQWYdo2hqnlZ2Eprs8xbwUiJshI4rY2+EaFiSB17jzi4mZafPtkSFxfNUxHdPc o71g== X-Gm-Message-State: AO0yUKUGikg/sc+oowQNWRJtuNGFv1Z2dC3nEAn70/L3AiL8M7OcejnV 4RpeZGqAr64bX+R8oXj+HdD6OpFhyiw6LaBPCao= X-Google-Smtp-Source: AK7set/xdyXXBPmMISAK/gajlMAFMX+w7gBeHmjUiLwaLckyry5cyZg70hD9rcv3Imfzw5qJ6M3Fs9jxKnhj7uYKipg= X-Received: by 2002:aca:1a06:0:b0:383:e304:34cd with SMTP id a6-20020aca1a06000000b00383e30434cdmr2016640oia.8.1677320375178; Sat, 25 Feb 2023 02:19:35 -0800 (PST) MIME-Version: 1.0 References: <83edqqaf8c.fsf@gnu.org> <2B284D77-97DF-4B3E-89FB-13F0CA93D240@gmail.com> <83o7pikwfl.fsf@gnu.org> In-Reply-To: <83o7pikwfl.fsf@gnu.org> From: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Date: Sat, 25 Feb 2023 10:19:25 +0000 Message-ID: Content-Type: multipart/alternative; boundary="0000000000002319aa05f5839555" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000002319aa05f5839555 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 25, 2023, 07:59 Eli Zaretskii wrote: > > From: Jo=C3=A3o T=C3=A1vora > > Date: Sat, 25 Feb 2023 00:21:40 +0000 > > Cc: Chinmay Dalal , Po Lu < > luangruo@yahoo.com>, > > Eli Zaretskii > > > > Inlay hints are not implemented in Eglot as of a few days ago. > ^^^ > You meant "now" there, right? > Yes, of course, sorry. Jo=C3=A3o > --0000000000002319aa05f5839555 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Sat, Feb 25, 2023, 07:59 Eli Zaretskii <eliz@gnu.org> wrote:
> From: Jo=C3=A3o T=C3=A1vora <= joaotavora@gmail.com>
> Date: Sat, 25 Feb 2023 00:21:40 +0000
> Cc: Chinmay Dalal <dalal.chinmay.0101@gmail.com>, = Po Lu <luangruo@yahoo.com>,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0Eli Zaretskii <eliz@gnu.org>
>
> Inlay hints are not implemented in Eglot as of a few days ago.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^
You meant "now" there, right?

Yes, of course, sorry.

Jo=C3=A3o
--0000000000002319aa05f5839555--