Eli Zaretskii <eliz@HIDDEN>
to control <at> debbugs.gnu.org.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 20:06:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 16:06:48 2026
Received: from localhost ([127.0.0.1]:43116 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wAveK-0001sR-Dx
for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 16:06:48 -0400
Received: from mail-dy1-x1331.google.com ([2607:f8b0:4864:20::1331]:43410)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>)
id 1wAveH-0001sD-PD
for 80740 <at> debbugs.gnu.org; Thu, 09 Apr 2026 16:06:46 -0400
Received: by mail-dy1-x1331.google.com with SMTP id
5a478bee46e88-2d17b8fbedaso555448eec.1
for <80740 <at> debbugs.gnu.org>; Thu, 09 Apr 2026 13:06:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1775765204; x=1776370004; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=E3b4TmEmxRV04/Y4IXeiCtHWbYYoB5GZB5Dss8NHxmY=;
b=h7Hs0XAmm/KT5YIWD0H7CKU7YF0/4c1rXohEbpqMfCjL815aoxgfPn3E49QW76kxlK
hQ0kna+XUmkvVoR0CLtJMcPE8SLu6jvPo8279zgCXYroTf82Tray2DTC9aXnQ0Cv/UuB
s9K2BAHzzoviFE9E7/QZNeTAwCaKx/vXQEzpTe94eFORCiaAUubqKNhTl/Qw46ptMOiN
FqLgoJ72VdbpkbV6wXqpyqoy8nrl1lrNT7LhirHTcfjAU5x+dBCzvvU1sT1T8y61GxSZ
9KOvHU1OBNfA/Ij/mNeRE6GvCbVnG6Ai8Ve34VlrE4j3kOtYxwyhor+jLOq8cWvcreb9
sOxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1775765204; x=1776370004;
h=mime-version:user-agent:message-id:date:face:references:in-reply-to
:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
:date:message-id:reply-to;
bh=E3b4TmEmxRV04/Y4IXeiCtHWbYYoB5GZB5Dss8NHxmY=;
b=FJ2PuBVq7a7Lkekii3l5kBr9WoE2djHA50bklOfZy5cTQKMnBNR9GPXsm+oWKkMEfK
E2hLxaEFlMDMHWB8TTsTwIKqW7JouphQiwSpmEpms5oPPv+MXDpNPuz95UxWpkxicTRM
3q4eO9aeSg6kgdcXJTHnyf91tuiYR60FOQUYUu6j42rIjatI7HYy7n7+C0k5frje8WfQ
b7ce0TGxAAhFWrhEA8RTj+xxDT8cnk75xLZB/S4TWsJlLOlsvOmUwbDAtdTRQnZdx3zw
IETBEnMiidPls8UtLu3+JDxWtIYUON7V4bmR0yF72GxpDl92bQsSuU9g6T/BL1aoCV7h
SGmg==
X-Forwarded-Encrypted: i=1;
AJvYcCULoGFCWMc/7mZ+SUbVas/ymhZOGhNPB97vLckCr4fp+Z27p7oBHcuqKqLn5R3tZXqK04s+qg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw4fnH5n0EROVddKoORlYYuXHRt/cEnRL2+xMhVD1GsNyjdTbe9
koUYDrLyFVTyg/7Jei5ex0z9oTe2CQwdibwKIwp9veAe1EuEQClKeocypnGHOOYhTqORPg==
X-Gm-Gg: AeBDietGbmHXHkwgxcEahjy4L6f6dVJAR1qcZ4TDAP/f7KrN4UbueT9XfDOdicNDJ+J
jQRyvgS6KRUkmcLQhwRrbpcNnLqelc62hEivL64InuKujqFKEYLrsozPtqZJMeEqA8ktr6unpue
raqhkK/mQHRgq+aPsgeX+TFB+HzWMhNcP+dKjjM4IYPVUR+vEworTZml7VpM2ou6QAptnnrK+bB
/flwv202zEiMYp/ghOzKHv6QKDmaDZZCowfxwTDskZ4T1NFbiZmIF0E0Pqoj3bU8FFTwSan+uWP
7ehpPC0QkIQbULK+O80ByAUo4q0du/teCUc50zQNKJG1hF4HjRT9wuq/oUtwpNJ11pqA5PKITFV
zkgfn9ngncF7NQHpHJnXD0kn+ZFbvsLt4xNen+NS99NoETOLEBdnV4kSLDkNcx7DCzaBdk+Z4oH
Vs/r0k+FCRm2DGauG5CIp2Jpoq4Iv55XRIWFJLT8i7b5VRDumcWqjvKgc+B3wZLViO8Bobsanwr
CEM1/sKGF8z
X-Received: by 2002:a05:7300:4316:b0:2c1:82c2:bc31 with SMTP id
5a478bee46e88-2d40fce76c1mr2322082eec.10.1775765203925;
Thu, 09 Apr 2026 13:06:43 -0700 (PDT)
Received: from MacBook-Pro.local ([185.153.176.105])
by smtp.gmail.com with ESMTPSA id
5a478bee46e88-2d55faa586bsm1401116eec.11.2026.04.09.13.06.40
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 09 Apr 2026 13:06:42 -0700 (PDT)
From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
In-Reply-To: <86v7e0v8kj.fsf@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN> <86v7e0v8kj.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABhQTFRFDxIfFR9FMD+RM2CBkZPbZKPEn+Xt////lKVMgwAAAAFiS0dEAIgFHUgAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfqAhsDFwcfcr7WAAACY0lEQVRIx7VVWbLbMAwzBZG6/41LcJHXpl/Vm/G8OADBBWKOo44c//mM2yeoH7go/kqQG3zlucDxgwTzkwz9XVl+K8Z8igL5p4KYKbApCHDC5aGXn7EcD1KCkUl9154EtSJUJWwWIIJbZyLVIIgTguGdCobxQ4nLI3gRLECO9axcwgNYQi81yH5KhGXZ1oU7XSH3YUnQ488YsesOCWrwxYOAgAtW1ZCEZKxoNR4TCILXGnPbjJ65v8ZrbB4fbI02pUaelSjuDKboCS1LifMEg1HwaOpRvV/2Ylja5ekjafyFYU2AnGOTMagh5Qbrs6OngFxTkhFPxUYUZePl3iQnSB7Y+3gcvQocDSYeWOuDYorXZagzhioeqWVSH3ivfvS54/EcW8LvB2eTSJDtbtkJXeGTD/1FwCbMNI/pnC0CjYi3ej2HhDvOD121dGzGFyHgM+5DUnhLNc0lKm0OYptQsWPTJKPMMuil0rhU6+E51th4obJqinOMntOBM59pzlg0wmICoRc3ML5tgpzpODRdk02MQmaEL8YIhdEElJniQbvDRSh7DicV9qjmQFeFHA3mosS8EU6+8g2jV8dzc3jpTK0ZFwWObITvpXZv1MRJXDSOs6WskFcxVKqIlKPMJpzxp9I+udrjLx3tKfB9unHslNi/Wj9AZt8+mGEnnTmPIzMYM5ZENgp1XVghv+uN4/ZE7sf4gXJV9yvHJp1/7EvJlTlz
pUspOFJt723pVYz9c2cpgHYfKSMXVz72TvL/rJqxL92+D2cGuelri9Nkc5wX6Hjf6cqEsoPptle/Vtllqb3eEPkHU2QXL+sLC8kAAAAASUVORK5CYII=
X-PGP-Key: https://www.rahuljuliato.com/rahul_pub_key.asc
Date: Thu, 09 Apr 2026 17:06:39 -0300
Message-ID: <m2ldevgapc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Debbugs-Envelope-To: 80740
Cc: casouri@HIDDEN, Rahul Martim Juliato <rahuljuliato@HIDDEN>,
80740 <at> debbugs.gnu.org, shipmints@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Eli Zaretskii <eliz@HIDDEN> writes:
>> Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@gmai=
l.com>,
>> 80740 <at> debbugs.gnu.org
>> From: Rahul Martim Juliato <rahuljuliato@HIDDEN>
>> Date: Wed, 08 Apr 2026 21:01:50 -0300
>
> These non-ASCII characters should not be used without checking if they
> can be displayed (see char-displayable-p). This is especially
> important on TTY frames. Bonus points for designing ASCII
> replacements for when these non-ASCII symbols cannot be displayed.
>
Agreed.
I changed those to be cons cells in the form of (rich-form . ansi-form)
or nil. :safe is used to ensure both elements have the same type. If
nil, it means nothing will be rendered when markup is hidden.
I also added a resolver 'markdown-ts--resolve-display-value', to select
and check the symbols.
>> +(defcustom markdown-ts-hard-line-break-space
>> + (lambda (n) (make-string n ?=C2=B6))
>
> Why is ?=C2=B6 hard-coded, instead of using
> markdown-ts-hard-line-break-backslash?
>
It shouldn't be this way, you're right.
'markdown-ts-hard-line-break-space' now uses
'markdown-ts-hard-line-break-backslash' as the default character.
>> +(defface markdown-ts-emphasis '((t (:inherit italic)))
>> + "Face for Markdown emphasis (italic) text.")
>> +
>> +(defface markdown-ts-bold '((t (:inherit bold)))
>> + "Face for Markdown strong emphasis (bold) text.")
>> +
>> +(defface markdown-ts-strikethrough '((t (:strike-through t)))
>> + "Face for Markdown strikethrough text.")
>>=20=20
>> (defface markdown-ts-block-quote '((t (:inherit italic)))
>> "Face for Markdown block quotes.")
>>=20=20
>> +(defface markdown-ts-link '((t (:inherit link)))
>> + "Face for Markdown link text and image descriptions.")
>
> Is it justified to have separate faces here? Why would users want to
> have something other than 'bold' for showing the bold face in MD
> buffers?
>
> Also, faces can (and I think should in this case) have the :version
> tag.
>
Good question. About 'markdown-ts-strikethrough', there is no generic
strikethrough face (that I could find) in Emacs to inherit from, so it
has to exist.
For the others, the motivation is the same as in org-mode ('org-italic',
'org-bold', 'org-link') and rst-mode. The default inherits from the base
face so things look right out of the box, but users get a mode-specific
handle to customize without touching global faces. That alone is worth
it, but there is a second angle: it makes theming more controlled.
When 'markdown-ts-hide-markup' is enabled, all markup characters
disappear and what remains is just the rendered text. A theme that wants
to give a subtle visual hint about the underlying markup, such as a
faint background on emphasis or a different tint on links, can do so by
targeting 'markdown-ts-emphasis' or 'markdown-ts-link' specifically,
without affecting every italic or linked piece of text in every other
buffer.
Added :version tag to all faces.
>> +(defun markdown-ts--code-block-language-mode (lang)
>> + "Compute and cache a mode symbol from LANG, a symbol.
>> +Consult the `markdown-ts-code-block-map' cache, or probe mode names.
>> +Return a valid mode symbol or nil."
>> + (if-let* ((mapped-mode (alist-get lang markdown-ts-code-block-modes)))
>> + mapped-mode
>> + (let ((lang-string (symbol-name lang)))
>> + (catch :mode
>> + (dolist (mode
>> + (list
>> + ;; Try a treesit mode using the raw string.
>> + (concat lang-string "-ts-mode")
>> + ;; Try a conventional mode using the raw string.
>> + (concat lang-string "-mode")
>> + ;; Try a treesit mode using the downcased string.
>> + (concat (downcase lang-string) "-ts-mode")
>> + ;; Try a conventional mode using the downcased string.
>> + (concat (downcase lang-string) "-mode")))
>> + (setq mode (intern mode))
>> + (when (fboundp mode)
>> + (push (cons lang mode) markdown-ts-code-block-modes)
>> + (throw :mode mode)))))))
>
> I think this should use treesit-major-mode-remap-alist and
> major-mode-remap-alist, at least before falling back on the above
> hard-coded conventional modes, if not instead that. This will allow
> users to customize these remappings only once.
>
Done. It now also checks both 'treesit-major-mode-remap-alist' and
'major-mode-remap-alist'.
>> +(define-minor-mode markdown-ts-code-block-mode
>> + "Mode enabled if point is within a fenced code block."
>> + :interactive nil)
>
> Does this mean this mode is enabled automatically?
>
> Thanks.
Yes, it is enabled automatically. 'markdown-ts-mode' adds
'markdown-ts--enable-code-block-mode' to 'post-command-hook'
(buffer-local), which calls '(markdown-ts-code-block-mode 1)' when point
enters a fenced code block and '(markdown-ts-code-block-mode -1)' when
it leaves. The ':interactive nil' just keeps it out of 'M-x' completion,
it is not meant to be toggled by hand.
Its main purpose is to activate 'markdown-ts-code-block-mode-map', a
keymap that routes common editing commands (indentation, comment, etc.)
through the language mode of whichever code block point is currently in.
Please find attached an updated patch.
Thanks
--=20
Rahul Martim Juliato
--=-=-=
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment;
filename=0001-Improve-markdown-ts-mode.patch
Content-Transfer-Encoding: base64
RnJvbSAxNTM2MzQ3Mjc0YThjZTg3NDk0NTU5OGViYjQ0N2MyMzkwNmM3NTdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn
bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb
UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl
bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl
IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp
bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYW5kIGEgbW9kZSBt
ZW51LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwK
UGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRzIGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29t
bWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9yIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMs
IGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUt
c2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUgJ2dvdG8tYWRkciwgeHJlZik6IE5ldyByZXF1
aXJlbWVudHMuCihtYXJrZG93bi10cyk6IE5ldyBjdXN0b21pemF0aW9uIGdyb3VwIHdpdGggOnZl
cnNpb24gYW5kCjpwYWNrYWdlLXZlcnNpb24gdGFncy4KKG1hcmtkb3duLXRzLWhpZGUtbWFya3Vw
KTogQWRkIDp2ZXJzaW9uIGFuZCA6cGFja2FnZS12ZXJzaW9uLgoobWFya2Rvd24tdHMtZWxsaXBz
aXMpOiBOZXcgb3B0aW9uIGZvciBmb2xkZWQgaGVhZGluZyBlbGxpcHNpcy4KKG1hcmtkb3duLXRz
LW1lbnUtYmFyLXNob3cpOiBOZXcgb3B0aW9uIHRvIHRvZ2dsZSBtb2RlIG1lbnUuCihtYXJrZG93
bi10cy1kZWZhdWx0LWZvbGRpbmcpOiBOZXcgb3B0aW9uIGZvciBkZWZhdWx0IGZvbGQKbGV2ZWwu
CihtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzKTogTmV3IG9wdGlvbiB0byBkaXNwbGF5IGlubGlu
ZQppbWFnZXMuCihtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGgpOiBOZXcgb3B0aW9uIGZvciBp
bWFnZSBtYXggd2lkdGguCihtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxpbmUtaW1hZ2Vz
KTogTmV3IG9wdGlvbiBmb3IKcmVtb3RlIGltYWdlIGhhbmRsaW5nLgoobWFya2Rvd24tdHMtLXJl
c29sdmUtZGlzcGxheS12YWx1ZSk6IE5ldyBoZWxwZXIgdG8gcmVzb2x2ZQpkaXNwbGF5IHZhbHVl
cyB1c2luZyBjaGFyLWRpc3BsYXlhYmxlLXAuCihtYXJrZG93bi10cy1jaGVja2VkLWNoZWNrYm94
KTogTmV3IG9wdGlvbiBmb3IgY2hlY2tlZCBjaGVja2JveApkaXNwbGF5IHN0cmluZy4KKG1hcmtk
b3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIHVuY2hlY2tlZApjaGVj
a2JveCBkaXNwbGF5IHN0cmluZy4KKG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNoYXJhY3Rl
cik6IE5ldyBvcHRpb24gZm9yIHRoZW1hdGljCmJyZWFrIGRpc3BsYXkgY2hhcmFjdGVyLgoobWFy
a2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCk6IE5ldyBvcHRpb24gZm9yIHRoZQpn
bHlwaCBzaG93biBpbiBwbGFjZSBvZiBhIHRyYWlsaW5nLWJhY2tzbGFzaCBoYXJkIGxpbmUgYnJl
YWsKd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNw
YWNlKTogTmV3IG9wdGlvbiBmb3IgdGhlIGdseXBoCnNob3duIGluIHBsYWNlIG9mIGEgdHJhaWxp
bmctc3BhY2VzIGhhcmQgbGluZSBicmVhayB3aGVuIG1hcmt1cAppcyBoaWRkZW4uCihtYXJrZG93
bi10cy1lbXBoYXNpcywgbWFya2Rvd24tdHMtYm9sZCkKKG1hcmtkb3duLXRzLXN0cmlrZXRocm91
Z2gsIG1hcmtkb3duLXRzLWxpbmspCihtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uLCBtYXJr
ZG93bi10cy1jb2RlLXNwYW4pCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLCBtYXJrZG93bi10cy1j
b2RlLWJsb2NrLW1hcmt1cC1oaWRkZW4pCihtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2Nr
LCBtYXJrZG93bi10cy1odG1sLXRhZykKKG1hcmtkb3duLXRzLWh0bWwtYmxvY2ssIG1hcmtkb3du
LXRzLXRoZW1hdGljLWJyZWFrKQoobWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5jZSkKKG1hcmtk
b3duLXRzLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSwgbWFya2Rvd24tdHMtbGF0ZXgpCiht
YXJrZG93bi10cy10YWJsZS1oZWFkZXIsIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCihtYXJrZG93
bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCwgbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpCiht
YXJrZG93bi10cy10YXNrLWNoZWNrZWQpOiBOZXcgZmFjZXMuCihtYXJrZG93bi10cy1oYXJkLWxp
bmUtYnJlYWstYmFja3NsYXNoKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFz
aC1oaWRkZW4pCihtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UpCihtYXJrZG93bi10
cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UtaGlkZGVuKTogTmV3IGZhY2VzIGZvciB0aGUKdHdvIGhh
cmQtbGluZS1icmVhayB2YXJpYW50cywgd2l0aCBkaXN0aW5jdCBzaG93bi9oaWRkZW4KYXBwZWFy
YW5jZXMuCihtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZSk6IE5ldyB2YXJpYWJsZSBmb3IgbGln
aHR3ZWlnaHQgc2V0dXAKaW4gZW1iZWRkZWQgaW5saW5lIG1hcmtkb3duLXRzLW1vZGUgYnVmZmVy
cyB1c2VkIGJ5IGNvZGUgYmxvY2sKY29tbWFuZHMuCihtYXJrZG93bi10cy1kZWZhdWx0LWNvZGUt
YmxvY2stbW9kZSk6IE5ldyB2YXJpYWJsZSB0byBkZWZpbmUKZGVmYXVsdCBtb2RlIGZvciBhbm9u
eW1vdXMgY29kZSBibG9ja3MuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKTogTmV3IHZh
cmlhYmxlIHJlcGxhY2luZwptYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAgYW5k
Cm1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwIHdpdGggdW5pZmllZCBsYW5n
dWFnZSB0bwptb2RlIG1hcHBpbmcgaW5jbHVkaW5nIGhldXJpc3RpYyBsb29rdXAuCihtYXJrZG93
bi10cy1jb2RlLWJsb2NrLWZvcmNlLWNvbnZlbnRpb25hbC1tb2Rlcyk6IE5ldyB2YXJpYWJsZQps
aXN0aW5nIHRyZWUtc2l0dGVyIG1vZGVzIHdob3NlIGZvbnRpZmljYXRpb24gb2YgY29kZSBibG9j
awpjb250ZW50IHNob3VsZCBiZSBoYXJ2ZXN0ZWQgdmlhIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KKG1h
cmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uKTogTmV3IGZ1bmN0aW9uIHRvIGNyZWF0ZQpjbGlj
a2FibGUgbGluayBidXR0b25zIHdpdGggbWFpbHRvLCBicm93c2UtdXJsLCBhbmQgZmluZC1maWxl
CmRpc3BhdGNoLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1kZXN0aW5hdGlvbik6IE5ldyBm
b250aWZpZXIgdGhhdApoaWRlcyBsaW5rIGRlc3RpbmF0aW9ucyB3aGVuIG1hcmt1cCBpcyBoaWRk
ZW4uCihtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1j
YWNoZS10aWNrKQoobWFya2Rvd24tdHMtLWxpbmstcmVmLWRlZmluaXRpb25zKQoobWFya2Rvd24t
dHMtLXJlc29sdmUtbGluay1yZWYpOiBOZXcgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbgpjYWNo
ZSB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgcGVyIENvbW1vbk1hcmsgc3BlYy4KKG1h
cmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSk6IE5ldyBmb250aWZpZXIgZm9yIGlubGluZSwK
cmVmZXJlbmNlLCBzaG9ydGN1dCwgYW5kIGNvbGxhcHNlZCBsaW5rcyBhcyBjbGlja2FibGUgYnV0
dG9ucy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKTogTmV3IGZvbnRpZmllciBmb3Ig
VVJJIGFuZCBlbWFpbAphdXRvbGlua3Mgd2l0aCBhbmdsZSBicmFja2V0IGhpZGluZy4KKG1hcmtk
b3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQoobWFya2Rvd24tdHMtLWZvbnRpZnktbGlu
ay1yZWYtZGVzdGluYXRpb24pOiBOZXcgZm9udGlmaWVycyBmb3IKbGluayByZWZlcmVuY2UgZGVm
aW5pdGlvbnMuCihtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUsIG1hcmtkb3duLXRz
LS1zbHVnLWdpdGh1YikKKG1hcmtkb3duLXRzLS1zbHVnLXBhbmRvYywgbWFya2Rvd24tdHMtLWV4
cGxpY2l0LWlkLXJlKQoobWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQtaWQpOihtYXJrZG93
bi10cy0taGVhZGluZy1pZC1jYWNoZSwKbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUtdGlj
aykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24tdHMtLWhlYWRpbmct
aWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFnbWVudCBsaW5rIHN1
cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMuCihtYXJrZG93bi10
cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5LWxhdGV4LWJsb2Nr
KTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdyYXBoIHZhbGlkYXRp
b24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTogTmV3IGZvbnRpZmll
ciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNpZGUgTGFUZVggYmxv
Y2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRzLS1mb250aWZ5LWVu
dGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIgdXNpbmcgb3JnLWVu
dGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3BlcnR5IGZvciBkZWNv
ZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTogTmV3IGZvbnRpZmll
ciBzaG93aW5nIFVuaWNvZGUKY2hlY2tib3ggc3ltYm9scyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4u
CihtYXJrZG93bi10cy0tZm9udGlmeS1oYXJkLWxpbmUtYnJlYWspOiBOZXcgZm9udGlmaWVyIGZv
cgpgaGFyZF9saW5lX2JyZWFrJyBub2Rlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWhlYWRpbmcp
OiBOZXcgZm9udGlmaWVyIGZvciBBVFggYW5kIFNldGV4dApoZWFkaW5ncy4KKG1hcmtkb3duLXRz
LS1mb250aWZ5LXRoZW1hdGljLWJyZWFrKTogTmV3IGZvbnRpZmllciBzaG93aW5nCmhvcml6b250
YWwgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCihtYXJrZG93bi10cy0tZm9udGlmeS1jb2Rl
LWJsb2NrKTogTmV3IGZvbnRpZmllciBhcHBseWluZwpiYWNrZ3JvdW5kIG92ZXJsYXkgdG8gY29k
ZSBibG9ja3Mgd2l0aCBsYW5ndWFnZSBhbmQgbW9kZQpwcm9wZXJ0aWVzLgoobWFya2Rvd24tdHMt
Y29kZS1ibG9jay1hdC1wLCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlLWF0KQoobWFy
a2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vzc29ycyBmb3IgY29kZSBibG9j
awpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2Rl
LXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRldGVjdGlvbi4KKG1hcmtkb3du
LXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXAsIG1hcmtkb3duLXRzLS1mb250aWZ5LWltYWdlKToK
TmV3IGlubGluZSBpbWFnZSBkaXNwbGF5IHdpdGggc3RhbmRhbG9uZSBhbmQgaW5saW5lIHBvc2l0
aW9uaW5nLgoobWFya2Rvd24tdHMtLWJhcmUtdXJsLXJlZ2V4cCkKKG1hcmtkb3duLXRzLS1iYXJl
LWVtYWlsLXVyaS1yZWdleHApCihtYXJrZG93bi10cy0tZm9udGlmeS1iYXJlLXVyaSk6IE5ldyBi
YXJlIFVSTC9lbWFpbApmb250aWZpY2F0aW9uIHZpYSBqaXQtbG9jayB1c2luZyBnb3RvLWFkZHIg
cmVnZXhwcy4KKG1hcmtkb3duLXRzLS10cmVlc2l0LXNldHRpbmdzKTogUmV3cml0ZSB3aXRoIGRl
ZGljYXRlZCBmYWNlcywKY3VzdG9tIGZvbnRpZmllcnMsIGFuZCBuZXcgZm9udC1sb2NrIGZlYXR1
cmVzIGZvciBhbGwgaW5saW5lIGFuZApibG9jayBlbGVtZW50cy4KKG1hcmtkb3duLXRzLS1jb2Rl
LWJsb2NrLWxhbmd1YWdlcykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rlcyk6
IE5ldyBidWZmZXItbG9jYWwgYWxpc3RzCmZvciBjb2RlIGJsb2NrIGxhbmd1YWdlIHRyYWNraW5n
LgoobWFya2Rvd24tdHMtLWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24pOiBSZW5h
bWVkIGZyb20KbWFya2Rvd24tdHMtLWhhcnZlc3QtdHJlZXNpdC1jb25maWdzIHdpdGggZGVsYXkt
bW9kZS1ob29rcy4KKG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVudC1idWZmZXIpOiBSZW5h
bWVkIGZyb20KbWFya2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUuCihtYXJrZG93bi10cy0t
bGFuZ3VhZ2UtYXQtbm9kZSk6IE5ldyBoZWxwZXIgZXh0cmFjdGluZyBsYW5ndWFnZQpzeW1ib2wg
ZnJvbSBjb2RlX2ZlbmNlX2NvbnRlbnQgbm9kZS4KKG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlm
eS1jYWNoZSk6IE5ldyBidWZmZXItbG9jYWwgaGFzaCB0YWJsZQpjYWNoaW5nIGZvbnRpZmljYXRp
b24gcmVzdWx0cyBmb3Igbm9uLXRyZWUtc2l0dGVyIGNvZGUgYmxvY2tzLgoobWFya2Rvd24tdHMt
LWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMpOiBOZXcgZnVuY3Rpb24KaGFydmVzdGluZyBm
YWNlIHByb3BlcnRpZXMgZnJvbSBhIG1vZGUgaW4gYW4gaW5kaXJlY3Qgb3IKdGVtcG9yYXJ5IGJ1
ZmZlci4KKG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2RlLWJsb2NrKTogTmV3IGZvbnRp
ZmllciBmb3IKbm9uLXRyZWUtc2l0dGVyIG1vZGVzIHZpYSB0ZW1wb3JhcnkgYnVmZmVyIGZvbnQt
bG9jay4KKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUpOiBOZXcgZnVuY3Rp
b24gd2l0aApoZXVyaXN0aWMgbW9kZSBuYW1lIHByb2JpbmcuCihtYXJrZG93bi10cy0tY29kZS1i
bG9jay10cy1sYW5ndWFnZSk6IFJlbmFtZWQgZnJvbQptYXJrZG93bi10cy0tY29udmVydC1jb2Rl
LWJsb2NrLWxhbmd1YWdlIHdpdGggc3VwcG9ydCBmb3Igbm9uLXRzCm1vZGVzIGFuZCByZWN1cnNp
dmUgbWFya2Rvd24gaGFuZGxpbmcuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzKQoo
bWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNvZGUt
YmxvY2stcmVnaW9uLWNvbW1hbmRzKTogTmV3IGNvbW1hbmQgbGlzdHMgZm9yCmNvZGUtYmxvY2sg
Y29udGV4dCBleGVjdXRpb24uCihtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2stbW9kZSkK
KG1hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrKQoobWFya2Rvd24t
dHMtLWNvZGUtYmxvY2steHJlZi1maW5kLWRlZmluaXRpb25zKQoobWFya2Rvd24tdHMtLXJ1bi1j
b21tYW5kLWluLWNvZGUtYmxvY2spOiBOZXcgY29kZSBibG9jayBtaW5vcgptb2RlIHdpdGggaW5k
aXJlY3QgYnVmZmVyIGNvbW1hbmQgZGlzcGF0Y2guCihtYXJrZG93bi10cy0tY29kZS1ibG9jay1u
ZXdsaW5lKTogTmV3IGNvbW1hbmQgZm9yIG5ld2xpbmUKaW5zaWRlIGNvZGUgYmxvY2tzLCBkaXNw
YXRjaGluZyB0byB0aGUgYmxvY2sncyBtb2RlLgoobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdz
KTogVXBkYXRlIHJhbmdlIGNvbmZpZ3VyYXRpb247CnJlbW92ZSA6cmFuZ2UtZm4gdHJlZXNpdC1y
YW5nZS1mbi1leGNsdWRlLWNoaWxkcmVuLgoobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVy
bGF5cykKKG1hcmtkb3duLXRzLS1vdXRsaW5lLXZpZXctY2hhbmdlKTogTmV3IGhlbHBlcnMgZm9y
IGltYWdlCm92ZXJsYXkgbWFuYWdlbWVudCBkdXJpbmcgb3V0bGluZSBmb2xkL3VuZm9sZC4KKG1h
cmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1wKTogTmV3IGhlbHBlciB0ZXN0aW5nIHdoZXRo
ZXIgYQpwb3NpdGlvbiBpcyBpbnNpZGUgYW4gb3V0bGluZS1mb2xkZWQgcmVnaW9uLgoobWFya2Rv
d24tdHMtLXNldC1oaWRlLW1hcmt1cCk6IENsZWFyIGltYWdlIG92ZXJsYXlzIHdoZW4KdG9nZ2xp
bmcgbWFya3VwIHZpc2liaWxpdHkuCihtYXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFnZXMpCiht
YXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcyk6IE5ldyBmdW5jdGlvbnMgZm9yIHRvZ2ds
aW5nCmlubGluZSBpbWFnZSBkaXNwbGF5LgoobWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1h
eC1sZXZlbCk6IE5ldyBjb25zdGFudC4KKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50LCBt
YXJrZG93bi10cy0taGVhZGluZy1sZXZlbCkKKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50
KTogTmV3IGhlYWRpbmcgbmF2aWdhdGlvbiBoZWxwZXJzLgoobWFya2Rvd24tdHMtcHJvbW90ZSwg
bWFya2Rvd24tdHMtZGVtb3RlKTogTmV3IGNvbW1hbmRzIGZvcgpoZWFkaW5nIGFuZCBsaXN0IGl0
ZW0gcHJvbW90aW9uL2RlbW90aW9uIHdpdGggcmVnaW9uIHN1cHBvcnQuCihtYXJrZG93bi10cy0t
cHJvbW90ZS1vci1kZW1vdGUpCihtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9u
KTogTmV3IGhlYWRpbmcgbGV2ZWwKYWRqdXN0bWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1t
b3ZlLXN1YnRyZWUtdXAsIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duKToKTmV3IGNvbW1h
bmRzIGZvciBtb3Zpbmcgc2VjdGlvbnMgYW5kIGxpc3QgaXRlbXMuCihtYXJrZG93bi10cy0tc2Vj
dGlvbi1mb2xkZWQtcCkKKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93bik6IE5l
dyBzdWJ0cmVlIG1vdmUgd2l0aApmb2xkaW5nIHN0YXRlIHByZXNlcnZhdGlvbi4KKG1hcmtkb3du
LXRzLXRvZ2dsZS1jaGVja2JveCk6IE5ldyBjb21tYW5kIHRvIHRvZ2dsZSB0YXNrIGxpc3QKY2hl
Y2tib3hlcy4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpOiBOZXcgaGVscGVyIHdp
dGggYmxvY2sgcXVvdGUKbWFya2VyIGhhbmRsaW5nLgoobWFya2Rvd24tdHMtLWxpc3QtbWFya2Vy
LXdpZHRoLCBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXJlZ2lvbikKKG1hcmtkb3duLXRzLS1saXN0
LW9yZGVyZWQtaXRlbS1wKTogTmV3IGxpc3QgaXRlbSBoZWxwZXJzLgoobWFya2Rvd24tdHMtLWxp
c3QtcHJvbW90ZS1vci1kZW1vdGUpOiBOZXcgZnVuY3Rpb24gd2l0aCBvcmRlcmVkCmxpc3QgbmVz
dGluZyBndWFyZC4KKG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sLCBtYXJrZG93bi10cy0tbGlz
dC1tb3ZlKTogTmV3IGxpc3QKaXRlbSBtb3ZlbWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1y
ZW51bWJlci1saXN0KTogTmV3IGNvbW1hbmQgZm9yIHNlcXVlbnRpYWwgbGlzdApyZW51bWJlcmlu
ZyB3aXRoIHByZWZpeCBhcmd1bWVudCBzdXBwb3J0LgoobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1u
ZXctbWFya2VyKQoobWFya2Rvd24tdHMtLW5ldy1tYXJrZXItZm9yLWxpbmUpOiBOZXcgbWFya2Vy
IHN0cmluZyBnZW5lcmF0b3JzCmZvciBsaXN0IGl0ZW0gaW5zZXJ0aW9uLgoobWFya2Rvd24tdHMt
LWxpbmUtYmxvY2stcXVvdGUtZGVwdGgpOiBOZXcgaGVscGVyIGNvdW50aW5nIGJsb2NrCnF1b3Rl
IGRlcHRoLgoobWFya2Rvd24tdHMtbmV3bGluZSk6IE5ldyBSRVQgY29tbWFuZCBmb3IgY29udGV4
dC1hd2FyZQpuZXdsaW5lLgoobWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbSk6IE5ldyBNLVJF
VCBjb21tYW5kIHRoYXQgY3JlYXRlcyBhCm5ldyBsaXN0IGl0ZW0uCihtYXJrZG93bi10cy0tZmls
bC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5KTogTmV3IHRyZWUtc2l0dGVyCnF1ZXJ5IGZvciB1bmZp
bGxhYmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4pOiBOZXcg
aGVscGVyIGZvciBsaXN0IGl0ZW0KdGV4dCBhbGlnbm1lbnQuCihtYXJrZG93bi10cy0tZmlsbC1s
aXN0LWl0ZW0pOiBOZXcgZnVuY3Rpb24gZmlsbGluZyB3aXRoaW4gbGlzdAppdGVtcyB3aXRob3V0
IG1lcmdpbmcgYWRqYWNlbnQgaXRlbXMuCihtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCk6IE5l
dyBhZGFwdGl2ZSBmaWxsIGZ1bmN0aW9uIGZvcgpsaXN0IGl0ZW0gY29udGludWF0aW9uLgoobWFy
a2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgpOiBOZXcgcGFyYWdyYXBoIG1vdGlvbgpy
ZXNwZWN0aW5nIGxpc3QgaXRlbXMgYW5kIHVuZmlsbGFibGUgYmxvY2tzLgoobWFya2Rvd24tdHMt
ZmlsbC1wYXJhZ3JhcGgpOiBOZXcgZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gd2l0aApjb25kKiBk
aXNwYXRjaCBmb3IgbGlzdHMsIGJsb2NrIHF1b3RlcywgSFRNTCBjb21tZW50cywgYW5kCnVuZmls
bGFibGUgYmxvY2tzLgoobWFya2Rvd24tdHMtLWZpbGwtaHRtbC1jb21tZW50KTogTmV3IEhUTUwg
Y29tbWVudCBmaWxsZXIgd2l0aApjb250aW51YXRpb24gYWxpZ25tZW50LgoobWFya2Rvd24tdHMt
LWJsb2NrLXF1b3RlLXByZWZpeCk6IE5ldyBoZWxwZXIgcHJlc2VydmluZwpleGlzdGluZyBibG9j
ayBxdW90ZSBtYXJrZXIgc3R5bGUuCihtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSk6IE5l
dyBibG9jayBxdW90ZSBmaWxsZXIgd2l0aApsaXN0IGl0ZW0gdGV4dCBjb2x1bW4gYWxpZ25tZW50
LgoobWFya2Rvd24tdHMtZW1waGFzaXMtYWxpc3QpOiBOZXcgYWxpc3Qgb2YgZW1waGFzaXMgbWFy
a2Vycy4KKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KTogTmV3IHRyZWUtc2l0
dGVyIGJhc2VkCmVtcGhhc2lzIGRldGVjdGlvbi4KKG1hcmtkb3duLXRzLXJlbW92ZS1lbXBoYXNp
cyk6IE5ldyBjb21tYW5kIHJlbW92aW5nIGVtcGhhc2lzIGF0CnBvaW50IG9yIHJlZ2lvbi4KKG1h
cmtkb3duLXRzLWVtcGhhc2l6ZSk6IE5ldyBpbnRlcmFjdGl2ZSBlbXBoYXNpcyBpbnNlcnRpb24g
d2l0aApyZWdpb24gd3JhcHBpbmcgYW5kIHdvcmQtYXQtcG9pbnQgc3VwcG9ydC4KKG1hcmtkb3du
LXRzLWluc2VydC1zdHJ1Y3R1cmUpOiBOZXcgY29tbWFuZCBmb3IgaW5zZXJ0aW5nIGNvZGUKYmxv
Y2tzLCBibG9jayBxdW90ZXMsIGFuZCBkaXZpZGVycy4KKG1hcmtkb3duLXRzLS1pbnNlcnQtY29k
ZS1ibG9jayk6IE5ldyBmdW5jdGlvbiB3aXRoIGxhbmd1YWdlCmNvbXBsZXRpb24gZnJvbSBrbm93
biBtb2Rlcy4KKG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUpOiBOZXcgZnVuY3Rpb24g
d2l0aCByZWdpb24Kd3JhcHBpbmcuCihtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpOiBOZXcg
ZnVuY3Rpb24gZm9yIGhvcml6b250YWwKcnVsZXMuCihtYXJrZG93bi10cy0tYXBwbHktZWxsaXBz
aXMpOiBOZXcgZnVuY3Rpb24gYXBwbHlpbmcgY3VzdG9tCmVsbGlwc2lzIHZpYSBkaXNwbGF5IHRh
YmxlLgoobWFya2Rvd24tdHMtLXNldC11cCk6IFJlbmFtZWQgZnJvbSBtYXJrZG93bi10cy1zZXR1
cC4KKG1hcmtkb3duLXRzLW91dGxpbmUtY3ljbGUpOiBOZXcgVEFCIGNvbW1hbmQgY3ljbGluZyBv
dXRsaW5lCnZpc2liaWxpdHkgb24gaGVhZGluZ3MuCihtYXJrZG93bi10cy1tb2RlLW1hcCk6IE5l
dyBrZXltYXAgZm9yIGNvZGUgYmxvY2sgbmF2aWdhdGlvbiwKYmluZGluZ3MgZm9yIGhlYWRpbmcg
bmF2aWdhdGlvbiwgc3RydWN0dXJlIGVkaXRpbmcsIGVtcGhhc2lzLAphbmQgbGlzdCBvcGVyYXRp
b25zLgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLW1hcCk6IE5ldyBrZXltYXAgZm9yIGNv
ZGUgYmxvY2sKY29udGV4dC4KKG1hcmtkb3duLXRzLW1vZGUtbWVudSk6IE5ldyBtZW51IGJhciB3
aXRoIFNob3cvSGlkZSwgTmF2aWdhdGUKSGVhZGluZ3MsIEVkaXQgU3RydWN0dXJlLCBhbmQgRWRp
dGluZyBzZWN0aW9ucy4KKG1hcmtkb3duLXRzLW1vZGUpOiBBZGQgb3V0bGluZS1taW5vci1tb2Rl
LCBlbGxpcHNpcywgZm9sZGluZywKZmlsbC1wYXJhZ3JhcGggaW50ZWdyYXRpb24sIGNvZGUtYmxv
Y2stbW9kZSBob29rcywgY29tbWVudApzZXR0aW5ncywgYW5kIG91dGxpbmUtdmlldy1jaGFuZ2Ut
aG9vay4gIFVzZSBtYXJrZG93bi10cy1tb2RlCmRpcmVjdGx5IGluIGF1dG8tbW9kZS1hbGlzdCBp
bnN0ZWFkIG9mIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUuCihtYXJrZG93bi10cy1tb2RlLWluc3Rh
bGwtcGFyc2Vycyk6IE5ldyBjb21tYW5kIGZvciBpbnN0YWxsaW5nCnJlcXVpcmVkIGFuZCBvcHRp
b25hbCB0cmVlLXNpdHRlciBsYW5ndWFnZSBncmFtbWFycy4KKG1hcmtkb3duLXRzLWNvZGUtYmxv
Y2stbW9kZSk6IE5ldyBtaW5vciBtb2RlIGZvciBjb2RlIGJsb2NrCmNvbnRleHQuCihtYXJrZG93
bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlcikKKG1hcmtkb3duLXRzLS1maW5kLW5leHQt
Y29kZS1ibG9jay1kZWxpbWl0ZXIpOiBOZXcgaGVscGVycyBmb3IKbG9jYXRpbmcgZmVuY2VkIGNv
ZGUgYmxvY2sgZGVsaW1pdGVyIG5vZGVzLgoobWFya2Rvd24tdHMtbW92ZS10by1uZXh0LWNvZGUt
YmxvY2spCihtYXJrZG93bi10cy1tb3ZlLXRvLXByZXZpb3VzLWNvZGUtYmxvY2spOiBOZXcgY29t
bWFuZHMgZm9yCm5hdmlnYXRpbmcgYmV0d2VlbiBmZW5jZWQgY29kZSBibG9ja3MuCihtYXJrZG93
bi10cy1tb2RlLW1heWJlKTogUmVtb3ZlOyBhdXRvLW1vZGUtYWxpc3Qgbm93IHVzZXMKbWFya2Rv
d24tdHMtbW9kZSBkaXJlY3RseS4KQXV0by1tb2RlLWFsaXN0OiBBZGQgLm1hcmtkb3duIGFuZCAu
bWR4IGV4dGVuc2lvbnMuCkluY2x1ZGVzIGZpeGVzIGZvcjogKGJ1ZyM4MDYxMykgKGJ1ZyM4MDYy
NSkgKGJ1ZyM4MDY5MCkKCkNvLWF1dGhvcmVkLWJ5OiBTdMOpcGhhbmUgTWFya3MgPHNoaXBtaW50
c0BnbWFpbC5jb20+Ci0tLQogbGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbCB8IDM0
NDggKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMxNjYgaW5z
ZXJ0aW9ucygrKSwgMjgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvdGV4dG1vZGVz
L21hcmtkb3duLXRzLW1vZGUuZWwgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVs
CmluZGV4IDY1N2Q2YmM0NjZkLi40N2MxOTcwMTY1NyAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9k
ZXMvbWFya2Rvd24tdHMtbW9kZS5lbAorKysgYi9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1t
b2RlLmVsCkBAIC0xLDExICsxLDEzIEBACi07OzsgbWFya2Rvd24tdHMtbW9kZS5lbCAtLS0gdHJl
ZSBzaXR0ZXIgc3VwcG9ydCBmb3IgTWFya2Rvd24gIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0q
LQorOzs7IG1hcmtkb3duLXRzLW1vZGUuZWwgLS0tIHRyZWUgc2l0dGVyIHN1cHBvcnQgZm9yIE1h
cmtkb3duIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQ7IC0qLQogCiA7OyBDb3B5cmlnaHQgKEMpIDIw
MjQtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotOzsgQXV0aG9yICAgICA6
IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KLTs7IE1haW50
YWluZXIgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Ci07
OyBDcmVhdGVkICAgIDogQXByaWwgMjAyNAotOzsgS2V5d29yZHMgICA6IG1hcmtkb3duIG1kIGxh
bmd1YWdlcyB0cmVlLXNpdHRlcgorOzsgQXV0aG9yICAgICAgICAgICA6IFJhaHVsIE1hcnRpbSBK
dWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXIgICAgICAgOiBS
YWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBDcmVhdGVk
ICAgICAgICAgIDogQXByaWwgMjAyNAorOzsgVmVyc2lvbiAgICAgICAgICA6ICAxLjAKKzs7IFBh
Y2thZ2UtUmVxdWlyZXMgOiAoKGVtYWNzICIzMS4xIikpCis7OyBLZXl3b3JkcyAgICAgICAgIDog
bWFya2Rvd24gbWQgdGV4dCBlZGl0IGxhbmd1YWdlcyB0cmVlLXNpdHRlcgogCiA7OyBUaGlzIGZp
bGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCiAKQEAgLTIyLDEzOCArMjQsNDgzIEBACiA7OyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQogOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy8+LgogCi07OzsgVHJlZS1zaXR0ZXIgbGFuZ3VhZ2UgdmVyc2lvbnMK
Kzs7OyBDb21tZW50YXJ5OgorCis7OyBUcmVlLXNpdHRlciBMYW5ndWFnZSBWZXJzaW9ucwogOzsK
IDs7IG1hcmtkb3duLXRzLW1vZGUgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGhlIGZvbGxvd2luZyBn
cmFtbWFycyBhbmQgdmVyc2lvbjoKIDs7IC0gdHJlZS1zaXR0ZXItbWFya2Rvd246IHYwLjQuMQog
OzsgLSB0cmVlLXNpdHRlci1tYXJrZG93bi1pbmxpbmU6IHYwLjQuMQogOzsKLTs7IFdlIHRyeSBv
dXIgYmVzdCB0byBtYWtlIGJ1aWx0aW4gbW9kZXMgd29yayB3aXRoIGxhdGVzdCBncmFtbWFyCi07
OyB2ZXJzaW9ucywgc28gYSBtb3JlIHJlY2VudCBncmFtbWFyIGhhcyBhIGdvb2QgY2hhbmNlIHRv
IHdvcmsgdG9vLgotOzsgU2VuZCB1cyBhIGJ1ZyByZXBvcnQgaWYgaXQgZG9lc24ndC4KLQotOzs7
IENvbW1lbnRhcnk6Cis7OyBXZSB0cnkgb3VyIGJlc3QgdG8gbWFrZSBidWlsdC1pbiBtb2RlcyB3
b3JrIHdpdGggbGF0ZXN0IGdyYW1tYXIKKzs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdy
YW1tYXIgaGFzIGEgZ29vZCBjaGFuY2UgdG8gd29yay4gIFNlbmQKKzs7IHVzIGEgYnVnIHJlcG9y
dCBpZiBpdCBkb2Vzbid0LgorOzsKKzs7IEJpZGlyZWN0aW9uYWwgVGV4dCBDb25zaWRlcmF0aW9u
cworOzsKKzs7IFRleHQgd2l0aCBtYXJrdXAgbWF5IG5lZWQgYW4gZXh0cmEgbmV3bGluZSBiZWZv
cmUgYmlkaXJlY3Rpb25hbCB0ZXh0Cis7OyBmb3IgaXQgdG8gc2hvdyBjb3JyZWN0bHkuICBUaGlz
IGlzIGEgbGltaXRhdGlvbiBpbiB0aGUgRW1hY3MgZGlzcGxheQorOzsgZW5naW5lLgorOzsKKzs7
IENvZGUgQmxvY2sgTGFuZ3VhZ2UgTW9kZSBDb25zaWRlcmF0aW9ucworOzsKKzs7IEZlbmNlZCBj
b2RlIGJsb2NrIGxhbmd1YWdlIG1vZGVzIGFyZSBkZXJpdmVkIGZyb20gdGhlIHRhYmxlCis7OyBg
bWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycgYW5kIGhldXJpc3RpY3MgYWRkaW5nICItdHMt
bW9kZSIgYW5kCis7OyAiLW1vZGUiIHRvIHRoZSBsYW5ndWFnZSBuYW1lLiAgSWYgeW91ciBsYW5n
dWFnZSdzIG1vZGUgaXMgbm90Cis7OyBwcm9wZXJseSByZWNvZ25pemVkLCBhZGQgaXQgdG8gYG1h
cmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMnLCB3aGljaAorOzsgc2VlLgorOzsKKzs7IEVhY2gg
bGFuZ3VhZ2UncyBtYWpvciBtb2RlIGlzIGVuYWJsZWQgb25jZSBwZXIgYG1hcmtkb3duLXRzLW1v
ZGUnCis7OyBidWZmZXIgaW4gYSB0ZW1wb3JhcnkgYnVmZmVyIHRvIGV4dHJhY3QgaXRzIGRlZmF1
bHQgZm9udC1sb2NrIGFuZAorOzsgdHJlZS1zaXR0ZXIgc2V0dGluZ3MuICBJbiBjb252ZW50aW9u
YWwgbm9uLXRyZWVzaXQgY29kZSBibG9ja3MsIHRoZQorOzsgbWFqb3IgbW9kZSBpcyBlbmFibGVk
IGVhY2ggdGltZSB0aGUgYmxvY2sgaXMgZm9udGlmaWVkLgorOzsKKzs7IE5PVEU6IE1ham9yIG1v
ZGUgaG9va3MgYXJlIG5vdCBydW4gYW5kIGZvbnQtbG9jaywgdHJlZXNpdCwgaW5kZW50LAorOzsg
Y29tbWVudCByZWNvZ25pdGlvbiwgZXRjLiBjdXN0b21pemF0aW9ucyB5b3UgbWlnaHQgaGF2ZSBp
biB5b3VyIGhvb2tzCis7OyBhcmUgbm90IGFwcGxpZWQuICBBcyBhIHJlc3VsdCwgeW91ciBjb2Rl
IGJsb2NrcyBtaWdodCBhcHBlYXIKKzs7IGRpZmZlcmVudCBpbiBgbWFya2Rvd24tdHMtbW9kZScg
bW9kZSB0aGFuIGluIG5hdGl2ZSBsYW5ndWFnZSBtYWpvcgorOzsgbW9kZSBidWZmZXJzLiAgTm90
IHJ1bm5pbmcgaG9va3MgYXZvaWRzIHRoZSBjb3N0IG9mIGVhY2ggbW9kZSBob29rCis7OyBhbmQg
YXZvaWRzIGNlcnRhaW4gcmVjdXJzaXZlIHRyZWVzaXQgY2FsbGJhY2sgaXNzdWVzLgogOzsKKzs7
IENvZGUgQmxvY2sgQ29tbWFuZHMKKzs7Cis7OyBTb21lIGNvbW1vbiBjb21tYW5kcyB3aWxsIG9w
ZXJhdGUgd2l0aGluIGEgY29kZSBibG9jayBhbmQgaW4gaXRzCis7OyBtb2RlLiAgVGhpcyBpcyBp
bXBsZW1lbnRlZCB1c2luZyBhbiBpbmRpcmVjdCBidWZmZXIgYW5kIHNvbWUgY29tbWFuZHMKKzs7
IG1heSBvcGVyYXRlIHNsaWdodGx5IGRpZmZlcmVudGx5IHRvIHRoZSBzYW1lIGNvbW1hbmRzIGlu
dm9rZWQgaW4gYQorOzsgbmF0aXZlIG1vZGUgYnVmZmVyLgorOzsKKzs7IFRyZWUgU2l0dGVyIEJ1
Z3MKKzs7Cis7OyBgbWFya2Rvd24tdHMtbW9kZScgcmVsaWVzIG9uIHRoZSB1bmRlcmx5aW5nIHRy
ZWUtc2l0dGVyIGxpYnJhcnkgaW4KKzs7IEVtYWNzIChjaG9zZW4gYXQgaXRzIGJ1aWxkIHRpbWUp
LCBhbmQgbGFuZ3VhZ2UgZ3JhbW1hcnMgeW91IGhhdmUKKzs7IGluc3RhbGxlZC4gIFRoZXJlIGFy
ZSBrbm93biBhbmQgcmVwb3J0ZWQgYnVncyB3aGljaCBuZWdhdGl2ZWx5IGFmZmVjdAorOzsgY2Vy
dGFpbiBmZWF0dXJlcy4gIFRoaXMgbW9kZSBzaG91bGQgYmVuZWZpdCBhcyB0aGVzZSBidWdzIGFy
ZSBmaXhlZAorOzsgb3Igd29ya2VkIGFyb3VuZC4KKzs7Cis7OyAtIFRoZSBNYXJrZG93biBncmFt
bWFyIGluc2VydHMgYmxvY2tfY29udGludWF0aW9uIG5vZGVzIGFzIGNoaWxkcmVuCis7OyAgIG9m
IGNvZGVfZmVuY2VfY29udGVudCwgd2hpY2ggY29uZnVzZXMgYm90aCB0aGUgaW5zcGVjdG9yIGFu
ZCB0aGUKKzs7ICAgZW1iZWRkZWQgcGFyc2VyLiAgVGhpcyBhZmZlY3RzIGNvZGUgYmxvY2tzIGlu
c2lkZSBibG9jayBxdW90ZXMuCis7OworOzsgLSBIVE1MIGJsb2NrIHR5cGUgNCAoYDwhJyBmb2xs
b3dlZCBieSBhbiB1cHBlcmNhc2UgbGV0dGVyLCBlLmcuLAorOzsgICBgPCFET0NUWVBFIGh0bWw+
JykgY2F1c2VzIHRoZSBwYXJzZXIgdG8gY29uc3VtZSBhbGwgc3Vic2VxdWVudAorOzsgICBjb250
ZW50LiAgTG93ZXJjYXNlIGA8IWRvY3R5cGUgaHRtbD4nIHdvcmtzIGFzIGEgd29ya2Fyb3VuZC4K
Kzs7ICAgU2VlIDxodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1z
aXR0ZXItbWFya2Rvd24vaXNzdWVzLzIzMz4uCis7OworOzsgLSBTdXBlcnNjcmlwdCAoYF50ZXh0
XicpIGFuZCBzdWJzY3JpcHQgKGB+dGV4dH4nKSBzeW50YXggaXMgbm90Cis7OyAgIHN1cHBvcnRl
ZCBieSB0aGUgZ3JhbW1hci4gIE5vIEVYVEVOU0lPTl8gYnVpbGQgZmxhZyBleGlzdHMgZm9yCis7
OyAgIHRoaXMuICBUaGlzIGlzIFBhbmRvYyAvIFBIUCBNYXJrZG93biBFeHRyYSBzeW50YXgsIG5v
dCBDb21tb25NYXJrCis7OyAgIG9yIEdGTS4KKzs7Cis7OyAtIE9yZGVyZWQgKG51bWJlcmVkKSBs
aXN0cyBkbyBub3QgbmVzdCBieSBpbmRlbnRhdGlvbi4gIEluZGVudGluZworOzsgICBhIGAxLicg
aXRlbSB1bmRlciBhbm90aGVyIG9yZGVyZWQgaXRlbSBkb2VzIG5vdCBwcm9kdWNlIGEgbmVzdGVk
Cis7OyAgIGxpc3Qgbm9kZTsgdGhlIHBhcnNlciBlaXRoZXIgdHJlYXRzIGl0IGFzIGEgZmxhdCBz
aWJsaW5nIG9yCis7OyAgIGFic29yYnMgaXQgaW50byB0aGUgcGFyZW50IGl0ZW0ncyBwYXJhZ3Jh
cGggYXMgYQorOzsgICBibG9ja19jb250aW51YXRpb24uICBVbm9yZGVyZWQgKGAtJywgYConLCBg
KycpIGxpc3RzIG5lc3QKKzs7ICAgY29ycmVjdGx5LiAgRGVtb3RlL3Byb21vdGUgb2Ygb3JkZXJl
ZCBsaXN0IGl0ZW1zIGlzIHRoZXJlZm9yZQorOzsgICBkaXNhYmxlZC4KKzs7Cis7OyAtIFJlbnVt
YmVyaW5nIG9yZGVyZWQgbGlzdHMgKGBtYXJrZG93bi10cy1yZW51bWJlci1saXN0JykgbWF5IG9u
bHkKKzs7ICAgYWZmZWN0IGl0ZW1zIGZyb20gcG9pbnQgZG93bndhcmQgaWYgdGhlIHBhcnNlciBz
cGxpdHMgYSBzaW5nbGUKKzs7ICAgbGlzdCBpbnRvIHNlcGFyYXRlIGBsaXN0JyBub2Rlcywgb3Ig
bWF5IGNvbnRpbnVlIG51bWJlcmluZyBhY3Jvc3MKKzs7ICAgdHdvIHNlcGFyYXRlIGxpc3RzIGlm
IHRoZSBwYXJzZXIgbWVyZ2VzIHRoZW0gaW50byBvbmUgbm9kZS4KKzs7Cis7OyAtIEVtcHR5IGxp
bmVzIGZvbGxvd2luZyBhbiBgaW5kZW50ZWRfY29kZV9ibG9jaycgbWF5IGJlIGNsYWltZWQgYnkK
Kzs7ICAgdGhlIHBhcnNlciBhcyBjb250aW51YXRpb24gbGluZXMgb2YgdGhhdCBibG9jaywgcmF0
aGVyIHRoYW4gYmVpbmcKKzs7ICAgdHJlYXRlZCBhcyBibGFuayBzZXBhcmF0b3JzLgogCiA7Ozsg
Q29kZToKIAogKHJlcXVpcmUgJ3RyZWVzaXQpCiAocmVxdWlyZSAnc3Vici14KQotKHJlcXVpcmUg
J291dGxpbmUpCiAocmVxdWlyZSAnc2VxKQorKHJlcXVpcmUgJ291dGxpbmUpCisocmVxdWlyZSAn
Z290by1hZGRyKQorKHJlcXVpcmUgJ3hyZWYpCiAKLSh0cmVlc2l0LWRlY2xhcmUtdW5hdmFpbGFi
bGUtZnVuY3Rpb25zKQotCi0oYWRkLXRvLWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3VyY2Ut
YWxpc3QKLSAnKG1hcmtkb3duCi0gICAiaHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdy
YW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duIgotICAgOmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4
YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIKLSAgIDpzb3VyY2UtZGlyICJ0cmVlLXNpdHRlci1t
YXJrZG93bi9zcmMiKQotIHQpCi0oYWRkLXRvLWxpc3QKLSAndHJlZXNpdC1sYW5ndWFnZS1zb3Vy
Y2UtYWxpc3QKLSAnKG1hcmtkb3duLWlubGluZQotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVl
LXNpdHRlci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4
NTIzMWNlOGZhOGIxMWU3MDc0YmJlMjY1YjQ4YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJl
ZS1zaXR0ZXItbWFya2Rvd24taW5saW5lL3NyYyIpCi0gdCkKLQotOzs7IEhlbHBlciBmdW5jdGlv
bnMKLQotKGRlZnZhciBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgJygo
ImMrKyIgLiBjcHApCi0gICAgKCJjIyIgLiBjLXNoYXJwKQotICAgICgic2giIC4gYmFzaCkpCi0g
ICJBbGlzdCBtYXBwaW5nIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbmFtZXMgdG8gdHJlZS1zaXR0ZXIg
bGFuZ3VhZ2VzLgotCi1LZXlzIHNob3VsZCBiZSBzdHJpbmdzLCBhbmQgdmFsdWVzIHNob3VsZCBi
ZSBsYW5ndWFnZSBzeW1ib2xzLgotCi1Gb3IgZXhhbXBsZSwgXCJjKytcIiBpbgotCi0gICAgYGBg
YysrCi0gICAgaW50IG1haW4oKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBgYGAK
LQotbWFwcyB0byB0cmVlLXNpdHRlciBsYW5ndWFnZSBgY3BwJy4iKQorOzs7IEN1c3RvbWl6YXRp
b25zOgogCi0oZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stc291cmNlLW1vZGUtbWFwCi0g
ICcoKGJhc2ggLiBiYXNoLXRzLW1vZGUpCi0gICAgKGMgLiBjLXRzLW1vZGUpCi0gICAgKGMtc2hh
cnAgLiBjc2hhcnAtdHMtbW9kZSkKLSAgICAoY21ha2UgLiBjbWFrZS10cy1tb2RlKQotICAgIChj
cHAgLiBjKystdHMtbW9kZSkKLSAgICAoY3NzIC4gY3NzLXRzLW1vZGUpCi0gICAgKGRvY2tlcmZp
bGUgLiBkb2NrZXJmaWxlLXRzLW1vZGUpCi0gICAgKGVsaXhpciAuIGVsaXhpci10cy1tb2RlKQot
ICAgIChnbyAuIGdvLXRzLW1vZGUpCi0gICAgKGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCi0gICAg
KGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkKLSAgICAoaGVleCAuIGhlZXgtdHMtbW9kZSkKLSAg
ICAoaHRtbCAuIGh0bWwtdHMtbW9kZSkKLSAgICAoamF2YSAuIGphdmEtdHMtbW9kZSkKLSAgICAo
amF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCi0gICAgKGpzb24gLiBqc29uLXRzLW1vZGUpCi0gICAg
KGx1YSAuIGx1YS10cy1tb2RlKQotICAgIChwaHAgLiBwaHAtdHMtbW9kZSkKLSAgICAocHl0aG9u
IC4gcHl0aG9uLXRzLW1vZGUpCi0gICAgKHJ1YnkgLiBydWJ5LXRzLW1vZGUpCi0gICAgKHJ1c3Qg
LiBydXN0LXRzLW1vZGUpCi0gICAgKHRvbWwgLiB0b21sLXRzLW1vZGUpCi0gICAgKHRzeCAuIHRz
eC10cy1tb2RlKQotICAgICh0eXBlc2NyaXB0IC4gdHlwZXNjcmlwdC10cy1tb2RlKQotICAgICh5
YW1sIC4geWFtbC10cy1tb2RlKSkKLSAgIkFuIGFsaXN0IG9mIHN1cHBvcnRlZCBjb2RlIGJsb2Nr
IGxhbmd1YWdlcyBhbmQgdGhlaXIgbWFqb3IgbW9kZS4iKQorKGRlZmdyb3VwIG1hcmtkb3duLXRz
IG5pbAorICAiTWFqb3IgbW9kZSBmb3Igdmlld2luZyBhbmQgZWRpdGluZyBNYXJrZG93biBidWZm
ZXJzLiIKKyAgOnByZWZpeCAibWFya2Rvd24tdHMtIgorICA6Z3JvdXAgJ3RleHQKKyAgOmdyb3Vw
ICdlZGl0aW5nCisgIDp2ZXJzaW9uICIzMS4xIikKIAogKGRlZmN1c3RvbSBtYXJrZG93bi10cy1o
aWRlLW1hcmt1cCBuaWwKICAgIk5vbi1uaWwgbWVhbnMgaGlkZSBNYXJrZG93biBtYXJrdXAgZGVs
aW1pdGVycyBpbiB0aGlzIGJ1ZmZlci4iCiAgIDp0eXBlICdib29sZWFuCiAgIDpzYWZlICMnYm9v
bGVhbnAKLSAgOmdyb3VwICdtYXJrZG93bi10cykKLQotOzs7IEZhY2VzCisgIDp2ZXJzaW9uICIz
MS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRz
LWVsbGlwc2lzIG5pbAorICAiVGhlIGVsbGlwc2lzIHRvIHVzZSBpbiBmb2xkZWQgaGVhZGluZ3Mu
CitXaGVuIG5pbCwgdXNlIHRoZSBzdGFuZGFyZCB0aHJlZSBkb3RzLiAgV2hlbiBhIG5vbi1lbXB0
eSBzdHJpbmcsCit1c2UgdGhhdCBzdHJpbmcgaW5zdGVhZC4iCisgIDp0eXBlICcoY2hvaWNlIChj
b25zdCAgOnRhZyAiRGVmYXVsdCAoLi4uKSIgbmlsKQorICAgICAgICAgICAgICAgICAoc3RyaW5n
IDp0YWcgIlN0cmluZyIgOnZhbHVlICIg4oyEIikpCisgIDpzYWZlICMnc3RyaW5nLW9yLW51bGwt
cAorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1
c3RvbSBtYXJrZG93bi10cy1tZW51LWJhci1zaG93IHQKKyAgIk5vbi1uaWwgbWVhbnMgc2hvdyB0
aGUgTWFya2Rvd24gbWVudSBpbiB0aGUgbWVudSBiYXIuIgorICA6dHlwZSAnYm9vbGVhbgorICA6
c2FmZSAjJ2Jvb2xlYW5wCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx
LjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZyAnc2hvdy1hbGwK
KyAgIkRlZmF1bHQgaGVhZGluZyBmb2xkaW5nIGxldmVsLiIKKyAgOnR5cGUgJyhjaG9pY2UKKyAg
ICAgICAgICAoY29uc3QgOnRhZyAiU2hvdyBldmVyeXRoaW5nIiBzaG93LWFsbCkKKyAgICAgICAg
ICAoY29uc3QgOnRhZyAiRm9sZCBldmVyeXRoaW5nLCBzaG93aW5nIHRvcC1sZXZlbCBoZWFkaW5n
cyIgZm9sZC1hbGwpCisgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgaGVhZGluZ3MsIHNob3dp
bmcgYWxsIGhlYWRpbmcgbGV2ZWxzIiBmb2xkLWhlYWRpbmdzKSkKKyAgOnNhZmUgIydzeW1ib2xw
CisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3Vz
dG9tIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMgbmlsCisgICJOb24tbmlsIG1lYW5zIGRpc3Bs
YXkgaW5saW5lIGltYWdlcyBiZWxvdyBpbWFnZSBsaW5rcy4iCisgIDp0eXBlICdib29sZWFuCisg
IDpzYWZlICMnYm9vbGVhbnAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24g
IjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoICd3aW5kb3cK
KyAgIk1heGltdW0gd2lkdGggb2YgaW5saW5lIGltYWdlcyBpbiBwaXhlbHMuCitXaGVuIGB3aW5k
b3cnLCB1c2UgdGhlIHdpbmRvdyBib2R5IHdpZHRoLiAgV2hlbiBhIG51bWJlciwgdXNlCit0aGF0
IGFzIHRoZSBtYXhpbXVtIHBpeGVsIHdpZHRoLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6
dGFnICJXaW5kb3cgd2lkdGgiIHdpbmRvdykKKyAgICAgICAgICAgICAgICAgKG5hdG51bSA6dGFn
ICJQaXhlbCB3aWR0aCIpKQorICA6c2FmZSAobGFtYmRhICh2KSAob3IgKGVxIHYgJ3dpbmRvdykg
KG5hdG51bXAgdikpKQorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4w
IikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxpbmUtaW1hZ2Vz
IG5pbAorICAiSG93IHRvIGRpc3BsYXkgcmVtb3RlIGlubGluZSBpbWFnZXMuCitXaGVuIG5pbCwg
ZG8gbm90IGRpc3BsYXkgcmVtb3RlIGltYWdlcy4gIFdoZW4gYGRvd25sb2FkJywgZmV0Y2ggdGhl
CitpbWFnZSBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciBhbmQgZGlzcGxheSBpdC4KKworUmVtb3Rl
IGltYWdlcyBhcmUgc2tpcHBlZCBieSBkZWZhdWx0IGZvciBzZWN1cml0eS4iCisgIDp0eXBlICco
Y2hvaWNlIChjb25zdCA6dGFnICJTa2lwIHJlbW90ZSBpbWFnZXMiIG5pbCkKKyAgICAgICAgICAg
ICAgICAgKGNvbnN0IDp0YWcgIkRvd25sb2FkIHJlbW90ZSBpbWFnZXMiIGRvd25sb2FkKSkKKyAg
OnNhZmUgIydzeW1ib2xwCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx
LjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3ggJygi4piRIiAu
ICIrIikKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSBjaGVja2Vk
IHRhc2sgbGlzdCBtYXJrZXIuCitUaGUgdmFsdWUgaXMgYSBjb25zIChQUkVGRVJSRUQgLiBGQUxM
QkFDSyk6IFBSRUZFUlJFRCBpcyB1c2VkIGlmIGl0cyBmaXJzdAorY2hhcmFjdGVyIHBhc3NlcyBg
Y2hhci1kaXNwbGF5YWJsZS1wJywgb3RoZXJ3aXNlIEZBTExCQUNLIGlzIHVzZWQuCituaWwgZGlz
cGxheXMgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY29ucyAoc3RyaW5nIDp0
YWcgIlByZWZlcnJlZCAoR1VJKSIpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRh
ZyAiRmFsbGJhY2sgKFRUWSkiKSkKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIkRpc3Bs
YXkgb3JpZ2luYWwgbWFya3VwIiBuaWwpKQorICA6c2FmZSAobGFtYmRhICh2KSAob3IgKG51bGwg
dikKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGNvbnNwIHYpIChzdHJpbmdwIChjYXIg
dikpIChzdHJpbmdwIChjZHIgdikpKSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12
ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2Jv
eCAnKCLimJAiIC4gIi0iKQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGZv
ciBhbiB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlci4KK1RoZSB2YWx1ZSBpcyBhIGNvbnMgKFBS
RUZFUlJFRCAuIEZBTExCQUNLKTogUFJFRkVSUkVEIGlzIHVzZWQgaWYgaXRzIGZpcnN0CitjaGFy
YWN0ZXIgcGFzc2VzIGBjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0sgaXMg
dXNlZC4KK25pbCBkaXNwbGF5cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChj
b25zIChzdHJpbmcgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgKHN0cmluZyA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29u
c3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDpzYWZlIChsYW1iZGEg
KHYpIChvciAobnVsbCB2KQorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoY29uc3Agdikg
KHN0cmluZ3AgKGNhciB2KSkgKHN0cmluZ3AgKGNkciB2KSkpKSkKKyAgOnZlcnNpb24gIjMxLjEi
CisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdGhl
bWF0aWMtYnJlYWstY2hhcmFjdGVyICcoP+KUgCAuID8tKQorICAiSWYgbWFya3VwIGlzIGhpZGRl
biwgZGlzcGxheSB0aGlzIGNoYXJhY3RlciBmb3IgdGhlbWF0aWMgYnJlYWtzLgorSXQgaXMgcmVw
ZWF0ZWQgdG8gZmlsbCB0aGUgd2luZG93IHdpZHRoLgorVGhlIHZhbHVlIGlzIGEgY29ucyAoUFJF
RkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVGRVJSRUQgaXMgdXNlZCBpZiBpdCBwYXNzZXMKK2BjaGFy
LWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0sgaXMgdXNlZC4KK25pbCBkaXNwbGF5
cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zIChjaGFyYWN0ZXIgOnRh
ZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJhY3RlciA6
dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRGlz
cGxheSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDpzYWZlIChsYW1iZGEgKHYpIChvciAobnVs
bCB2KQorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoY29uc3AgdikgKGNoYXJhY3RlcnAg
KGNhciB2KSkgKGNoYXJhY3RlcnAgKGNkciB2KSkpKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpw
YWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtaGFyZC1saW5l
LWJyZWFrLWJhY2tzbGFzaCAnKD/CtiAuID98KQorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlz
cGxheSB0aGlzIGNoYXJhY3RlciBmb3IgYSBiYWNrc2xhc2ggaGFyZCBsaW5lIGJyZWFrLgorVGhl
IHZhbHVlIGlzIGEgY29ucyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spOiBQUkVGRVJSRUQgaXMgdXNl
ZCBpZiBpdCBwYXNzZXMKK2BjaGFyLWRpc3BsYXlhYmxlLXAnLCBvdGhlcndpc2UgRkFMTEJBQ0sg
aXMgdXNlZC4KK25pbCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChj
b25zIChjaGFyYWN0ZXIgOnRhZyAiUHJlZmVycmVkIChHVUkpIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgKGNoYXJhY3RlciA6dGFnICJGYWxsYmFjayAoVFRZKSIpKQorICAgICAgICAgICAgICAg
ICAoY29uc3QgOnRhZyAiRGlzcGxheSBvcmlnaW5hbCBtYXJrdXAiIG5pbCkpCisgIDpzYWZlIChs
YW1iZGEgKHYpIChvciAobnVsbCBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChj
b25zcCB2KSAoY2hhcmFjdGVycCAoY2FyIHYpKSAoY2hhcmFjdGVycCAoY2RyIHYpKSkpKQorICA6
dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBt
YXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgKGxhbWJkYSAobikKKyAgICAobGV0
KiAoKHZhbCAobWFya2Rvd24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZQorICAgICAgICAgICAg
ICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstYmFja3NsYXNoKSkKKyAgICAgICAgICAg
KGNoIChpZiAoY2hhcmFjdGVycCB2YWwpIHZhbCA/fCkpKQorICAgICAgKG1ha2Utc3RyaW5nIG4g
Y2gpKSkKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSB0cmFpbGlu
Zy1zcGFjZXMgaGFyZCBsaW5lIGJyZWFrLgorVGhlIHZhbHVlIGNhbiBiZToKKy0gYSBjaGFyYWN0
ZXIgb3Igc3RyaW5nOiBzaG93biBvbmNlIGF0IHRoZSBzdGFydCBvZiB0aGUgdHJhaWxpbmcgc3Bh
Y2VzLAorICB3aXRoIG5vIHJlcGV0aXRpb24gKHRoZSByZW1haW5pbmcgc3BhY2VzIHN0YXkgaW52
aXNpYmxlKTsKKy0gYSBmdW5jdGlvbjogY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCB0aGUgbnVt
YmVyIG9mIHRyYWlsaW5nIHNwYWNlcywKKyAgYW5kIG11c3QgcmV0dXJuIHRoZSBzdHJpbmcgdG8g
ZGlzcGxheSBpbiBwbGFjZSBvZiB0aGUgcnVuOworLSBuaWw6IGtlZXAgdGhlIHJhdyBtYXJrdXAu
IgorICA6dHlwZSAnKGNob2ljZSAoY2hhcmFjdGVyIDp0YWcgIkRpc3BsYXkgc3BlY2lmaWVkIGNo
YXJhY3RlciAobm8gcmVwZXRpdGlvbikiKQorICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcg
IkRpc3BsYXkgc3BlY2lmaWVkIHN0cmluZyAobm8gcmVwZXRpdGlvbikiKQorICAgICAgICAgICAg
ICAgICAoZnVuY3Rpb24gOnRhZyAiRnVuY3Rpb24gZnJvbSBjb3VudCB0byBkaXNwbGF5IHN0cmlu
ZyIpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1
cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisK
KyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9k
ZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMgY29kZSBibG9ja3MuIgorICA6dHlwZSAn
KGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAiVGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisg
ICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRhbCBtb2RlIiBmdW5kYW1lbnRhbC1tb2Rl
KQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIgbW9kZSBzeW1ib2wiCisgICAgICAgICAg
ICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdpZCkpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChlcSAnc3ltYm9sICh0eXBlLW9mIHZhbCkp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJy
b3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2lkKSkpKSkKKyAgOnNhZmUgIydzeW1ib2xwCisgIDp2ZXJzaW9uICIzMS4xIgor
ICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCis7OzsgRmFjZXM6CiAKIChkZWZncm91cCBtYXJr
ZG93bi10cy1mYWNlcyBuaWwKLSAgIkZhY2VzIHVzZWQgaW4gTWFya2Rvd24gVFMgTW9kZS4iCisg
ICJGYWNlcyB1c2VkIGJ5IE1hcmtkb3duLVRTLiIKICAgOmdyb3VwICdtYXJrZG93bi10cy1mYWNl
cwogICA6Z3JvdXAgJ2ZhY2VzKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1kZWxpbWl0ZXIgJygo
dCAoOmluaGVyaXQgc2hhZG93KSkpCi0gICJGYWNlIGZvciB0aGUgIyBiZWZvcmUgTWFya2Rvd24g
aGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIHRoZSAjIGJlZm9yZSBNYXJrZG93biBoZWFkaW5ncy4i
CisgIDp2ZXJzaW9uICIzMS4xIikKIAogKGRlZmZhY2UgbWFya2Rvd24tdHMtaGVhZGluZy0xICco
KHQgKDppbmhlcml0IG91dGxpbmUtMSkpKQotICAiRmFjZSBmb3IgZmlyc3QgbGV2ZWwgTWFya2Rv
d24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIGZpcnN0IGxldmVsIE1hcmtkb3duIGhlYWRpbmdz
LiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1zZXRleHQtaGVh
ZGluZyAnKCh0ICg6aW5oZXJpdCBtYXJrZG93bi10cy1oZWFkaW5nLTEpKSkKLSAgIkZhY2UgZm9y
IHNldGV4dCBNYXJrZG93biBoZWFkaW5ncyAoaGVhZGluZ3MgdW5kZXJsaW5lZCBieSA9PT0gb3Ig
LS0tKS4iKQorICAiRmFjZSBmb3Igc2V0ZXh0IE1hcmtkb3duIGhlYWRpbmdzIChoZWFkaW5ncyB1
bmRlcmxpbmVkIGJ5ID09PSBvciAtLS0pLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFj
ZSBtYXJrZG93bi10cy1oZWFkaW5nLTIgJygodCAoOmluaGVyaXQgb3V0bGluZS0yKSkpCi0gICJG
YWNlIGZvciBzZWNvbmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9yIHNl
Y29uZCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIzMS4xIikKIAogKGRl
ZmZhY2UgbWFya2Rvd24tdHMtaGVhZGluZy0zICcoKHQgKDppbmhlcml0IG91dGxpbmUtMykpKQot
ICAiRmFjZSBmb3IgdGhpcmQgbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2UgZm9y
IHRoaXJkIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAo
ZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTQgJygodCAoOmluaGVyaXQgb3V0bGluZS00KSkp
Ci0gICJGYWNlIGZvciBmb3VydGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZhY2Ug
Zm9yIGZvdXJ0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iCisgIDp2ZXJzaW9uICIzMS4xIikK
IAogKGRlZmZhY2UgbWFya2Rvd24tdHMtaGVhZGluZy01ICcoKHQgKDppbmhlcml0IG91dGxpbmUt
NSkpKQotICAiRmFjZSBmb3IgZmlmdGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIikKKyAgIkZh
Y2UgZm9yIGZpZnRoIGxldmVsIE1hcmtkb3duIGhlYWRpbmdzLiIKKyAgOnZlcnNpb24gIjMxLjEi
KQogCiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTYgJygodCAoOmluaGVyaXQgb3V0bGlu
ZS02KSkpCi0gICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4iKQorICAi
RmFjZSBmb3Igc2l4dGggbGV2ZWwgTWFya2Rvd24gaGVhZGluZ3MuIgorICA6dmVyc2lvbiAiMzEu
MSIpCiAKLShkZWZmYWNlIG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDppbmhlcml0IHNo
YWRvdykpKQotICAiRmFjZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2UgLSBhbmQgKi4i
KQorKGRlZmZhY2UgbWFya2Rvd24tdHMtZW1waGFzaXMgJygodCAoOmluaGVyaXQgaXRhbGljKSkp
CisgICJGYWNlIGZvciBNYXJrZG93biBlbXBoYXNpcyAoaXRhbGljKSB0ZXh0LiIKKyAgOnZlcnNp
b24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1ib2xkICcoKHQgKDppbmhlcml0IGJv
bGQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHN0cm9uZyBlbXBoYXNpcyAoYm9sZCkgdGV4dC4i
CisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtc3RyaWtldGhyb3Vn
aCAnKCh0ICg6c3RyaWtlLXRocm91Z2ggdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gc3RyaWtl
dGhyb3VnaCB0ZXh0LiIKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmZmFjZSBtYXJrZG93bi10
cy1ibG9jay1xdW90ZSAnKCh0ICg6aW5oZXJpdCBpdGFsaWMpKSkKLSAgIkZhY2UgZm9yIE1hcmtk
b3duIGJsb2NrIHF1b3Rlcy4iKQorICAiRmFjZSBmb3IgTWFya2Rvd24gYmxvY2sgcXVvdGVzLiIK
KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1saW5rICcoKHQgKDpp
bmhlcml0IGxpbmspKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGxpbmsgdGV4dCBhbmQgaW1hZ2Ug
ZGVzY3JpcHRpb25zLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10
cy1saW5rLWRlc3RpbmF0aW9uICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1zdHJpbmctZmFjZSkp
KQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGluayBkZXN0aW5hdGlvbnMgKFVSTHMpLiIKKyAgOnZl
cnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1jb2RlLXNwYW4gJygodCAoOmlu
aGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBpbmxp
bmUgY29kZSBzcGFucy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24t
dHMtY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGZl
bmNlZCBjb2RlIGJsb2NrIGNvbnRlbnQuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRkIGEgYDpiYWNr
Z3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdAorY29kZSBibG9jayByZWdpb24sIGUuZy46
CisgIChzZXQtZmFjZS1hdHRyaWJ1dGUgXFw9J21hcmtkb3duLXRzLWNvZGUtYmxvY2sgbmlsIDpi
YWNrZ3JvdW5kIFwiZ3JheTk1XCIpIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1h
cmtkb3duLXRzLWNvZGUtYmxvY2stbWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQgbGln
aHQpKSAoOmJhY2tncm91bmQgImdyYXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3JvdW5k
IGRhcmspKSAgKDpiYWNrZ3JvdW5kICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3Ig
TWFya2Rvd24gZmVuY2VkIGNvZGUgYmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4u
CitVc2VkIGluc3RlYWQgb2YgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtkb3du
LXRzLWhpZGUtbWFya3VwJworaXMgbm9uLW5pbC4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRl
ZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29kZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBmb250
LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGluZGVudGVkIGNvZGUg
YmxvY2tzLiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1s
LXRhZyAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1cC1mYWNlKSkpCisgICJGYWNl
IGZvciBpbmxpbmUgSFRNTCB0YWdzIGluIE1hcmtkb3duLiIKKyAgOnZlcnNpb24gIjMxLjEiKQor
CisoZGVmZmFjZSBtYXJrZG93bi10cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQtbG9j
ay1kb2MtbWFya3VwLWZhY2UpKSkKKyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtkb3du
LiIKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10aGVtYXRpYy1i
cmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJr
ZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250YWwgcnVsZXMpLgorQ3VzdG9taXplIHRoaXMg
ZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3IgYSBmdWxsLXdpZHRoIHZpc3VhbCBydWxlLiIK
KyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1lbnRpdHktcmVmZXJl
bmNlICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkKKyAgIkZhY2UgZm9y
IG5hbWVkIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgbGlrZSAmYW1wOyBhbmQgJmNvcHk7LiIKKyAg
OnZlcnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJhY3Rl
ci1yZWZlcmVuY2UKKyAgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkpCisg
ICJGYWNlIGZvciBudW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5kICYj
eDQxOy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0ZXgg
JygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNlIGZvciBMYVRl
WCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAoJC4uLiQgYW5kICQkLi4uJCQpLiIKKyAgOnZl
cnNpb24gIjMxLjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIgJygodCAo
OmluaGVyaXQgKGJvbGQgZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorICAiRmFjZSBmb3IgTWFya2Rv
d24gcGlwZSB0YWJsZSBoZWFkZXIgY2VsbHMuIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZm
YWNlIG1hcmtkb3duLXRzLXRhYmxlLWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQorICAi
RmFjZSBmb3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkYXRhIGNlbGxzLiIKKyAgOnZlcnNpb24gIjMx
LjEiKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0ICg6
aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHBpcGUg
dGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2VwYXJhdG9ycykuIgorICA6dmVyc2lvbiAiMzEu
MSIpCiAKIChkZWZmYWNlIG1hcmtkb3duLXRzLWxhbmd1YWdlLWtleXdvcmQgJygodCAoOmluaGVy
aXQgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpKQotICAiRmFjZSBmb3IgdGhlIGxhbmd1YWdlIGtl
eXdvcmQgZm9yIE1hcmtkb3duIGNvZGUgYmxvY2tzLiIpCisgICJGYWNlIGZvciB0aGUgbGFuZ3Vh
Z2Uga2V5d29yZCBmb3IgTWFya2Rvd24gY29kZSBibG9ja3MuIgorICA6dmVyc2lvbiAiMzEuMSIp
CisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDppbmhlcml0IHNoYWRv
dykpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2UgLSBhbmQgKi4iCisg
IDp2ZXJzaW9uICIzMS4xIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFr
LWJhY2tzbGFzaAorICAnKCh0ICg6aW5oZXJpdCBvdXRsaW5lLTQgOndlaWdodCBib2xkKSkpCisg
ICJGYWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUgYnJlYWtzIGludHJvZHVjZWQgYnkgYSB0cmFp
bGluZyBiYWNrc2xhc2guIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3du
LXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuCisgICcoKHQgKDppbmhlcml0IG91
dGxpbmUtNCA6d2VpZ2h0IGJvbGQpKSkKKyAgIkZhY2UgZm9yIHRyYWlsaW5nLWJhY2tzbGFzaCBo
YXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLiIKKyAgOnZlcnNpb24gIjMxLjEi
KQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgJygoKChi
YWNrZ3JvdW5kIGxpZ2h0KSkgKDpiYWNrZ3JvdW5kICJncmF5NzAiIDp3ZWlnaHQgYm9sZCkpCisg
ICAgKCgoYmFja2dyb3VuZCBkYXJrKSkgICg6YmFja2dyb3VuZCAiZ3JheTQwIiA6d2VpZ2h0IGJv
bGQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGhhcmQgbGluZSBicmVha3MgaW50cm9kdWNlZCBi
eSB0d28gdHJhaWxpbmcgc3BhY2VzLgorVGhlIHRyYWlsaW5nIHNwYWNlcyBhcmUgb3RoZXJ3aXNl
IGludmlzaWJsZSwgc28gdGhleSBhcmUgc2hvd24gYXMgYQorc2hhZG93LWNvbG9yZWQgYmxvY2su
IgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1i
cmVhay1zcGFjZS1oaWRkZW4KKyAgJygodCAoOmluaGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9s
ZCkpKQorICAiRmFjZSBmb3IgdHJhaWxpbmctc3BhY2VzIGhhcmQgbGluZSBicmVhayB3aGVuIG1h
cmt1cCBpcyBoaWRkZW4uIgorICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3du
LXRzLXRhc2stdW5jaGVja2VkICcoKHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWxpc3QtbWFya2Vy
KSkpCisgICJGYWNlIGZvciBNYXJrZG93biB1bmNoZWNrZWQgdGFzayBsaXN0IG1hcmtlcnMuIgor
ICA6dmVyc2lvbiAiMzEuMSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhc2stY2hlY2tlZCAn
KCh0ICg6aW5oZXJpdCBtYXJrZG93bi10cy1saXN0LW1hcmtlcikpKQorICAiRmFjZSBmb3IgTWFy
a2Rvd24gY2hlY2tlZCB0YXNrIGxpc3QgbWFya2Vycy4iCisgIDp2ZXJzaW9uICIzMS4xIikKKwor
KHRyZWVzaXQtZGVjbGFyZS11bmF2YWlsYWJsZS1mdW5jdGlvbnMpCisKKyhhZGQtdG8tbGlzdAor
ICd0cmVlc2l0LWxhbmd1YWdlLXNvdXJjZS1hbGlzdAorICcobWFya2Rvd24KKyAgICJodHRwczov
L2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCisg
ICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgorICAg
OnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duL3NyYyIpCisgdCkKKworKGFkZC10by1s
aXN0CisgJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNlLWFsaXN0CisgJyhtYXJrZG93bi1pbmxpbmUK
KyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXIt
bWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFh
NzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGluZS9zcmMi
KQorIHQpCisKKzs7OyBWYXJpYWJsZXM6CisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtLXNldC11cC1p
bmxpbmUgbmlsCisgICJMZXQgYmluZCB0aGlzIHRvIG5vbi1uaWwgZm9yIGlubGluZSBgbWFya2Rv
d24tdHMtbW9kZScgYnVmZmVycy4iKQogCi07OzsgRm9udC1sb2NrCisoZGVmdmFyIG1hcmtkb3du
LXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgYCgoc2ggLiBiYXNoLXRzLW1vZGUpCisgICAgKHNoZWxs
IC4gYmFzaC10cy1tb2RlKQorICAgICgsKGludGVybiAiYyMiKSAuIGMtc2hhcnApCisgICAgKGNw
cCAuIGMrKy10cy1tb2RlKQorICAgIChlbCAuIGVtYWNzLWxpc3AtbW9kZSkKKyAgICAoZWxpc3Ag
LiBlbWFjcy1saXNwLW1vZGUpCisgICAgKGdvbGFuZyAuIGdvLXRzLW1vZGUpCisgICAgKGdvbW9k
IC4gZ28tbW9kLXRzLW1vZGUpCisgICAgKGdvd29yayAuIGdvLXdvcmstdHMtbW9kZSkKKyAgICAo
amF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCisgICAgKG1kIC4gbWFya2Rvd24tdHMtbW9kZSkKKyAg
ICAocHkgLiBweXRob24tdHMtbW9kZSkKKyAgICAocmIgLiBydWJ5LXRzLW1vZGUpCisgICAgKHJz
IC4gcnVzdC10cy1tb2RlKQorICAgICh0ZXggLiBsYXRleC1tb2RlKQorICAgICh0cyAuIHR5cGVz
Y3JpcHQtdHMtbW9kZSkKKyAgICAoeW1sIC4geWFtbC10cy1tb2RlKSkKKyAgIkFsaXN0IG1hcHBp
bmcgY29kZSBibG9jayBsYW5ndWFnZXMgdG8gdGhlaXIgbWFqb3IgbW9kZS4KK1RoZSBhbGlzdCBp
cyBvZiB0aGUgZm9ybSAoTEFOR1VBR0UgLiBNQUpPUi1NT0RFKS4KK01BSk9SLU1PREUgY2FuIGJl
IGEgdHJlZS1zaXR0ZXIgb3IgYSBjb252ZW50aW9uYWwgbW9kZS4KK0lmIHlvdSBwcmVmZXIgYSBj
b252ZW50aW9uYWwgbW9kZSBvdmVyIGl0cyB0cmVlLXNpdHRlciB2YXJpYW50LCBhZGQgb3IgcmVw
bGFjZQorcmVsZXZhbnQgZW50cmllcy4gIEZvciBleGFtcGxlOgorICAgIChhZGQtdG8tbGlzdCBc
XD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9JyhweXRob24gLiBweXRo
b24tbW9kZSkpCisgICAgKHNldGYgKGFsaXN0LWdldCBcXD0ncHkgbWFya2Rvd24tdHMtY29kZS1i
bG9jay1tb2RlcykKKyAgICAgICAgICBcXD0ncHl0aG9uLW1vZGUpCitDb2RlIGJsb2NrcyBmb3Ig
dGhhdCBub24gdHJlZS1zaXR0ZXIgbW9kZXMgd2lsbCBiZSBmb250aWZpZWQgdXNpbmcgdGhlCitt
b2RlJ3MgY29udmVudGlvbmFsIGZvbnQtbG9jayBydWxlcy4iKQorCisoZGVmdmFyIG1hcmtkb3du
LXRzLWNvZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzCisgICcobWFya2Rvd24tdHMt
bW9kZQorICAgIHBocC10cy1tb2RlKQorICAiVHJlYXQgdGhlc2UgY29kZSBibG9jayB0cmVlLXNp
dHRlciBtb2RlcyBhcyBjb252ZW50aW9uYWwuCitTb21lIG1vZGVzIHRoYXQgZW1iZWQgbXVsdGlw
bGUgYHRyZWVzaXQnIHBhcnNlcnMgbmVlZCB0byBiZSB0cmVhdGVkIHdpdGgKK2NvbnZlbnRpb25h
bCBmb250LWxvY2suICBgbWFya2Rvd24tdHMtbW9kZScgaXRzZWxmIGlzIG9uZSBvZiB0aGVtLiIp
CisKKzs7OyBGb250LWxvY2s6CiAKIChkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0
ZXIgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCiAgICJGb250aWZ5IGRlbGltaXRl
ciBOT0RFIGFuZCBvcHRpb25hbGx5IGhpZGUgaXRzIG1hcmt1cC4KQEAgLTE2OCwyMyArNTE1LDc5
MiBAQCBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAocHV0LXRleHQtcHJvcGVy
dHkgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQogICAg
ICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFya3VwKSkpCiAK
KyhkZWZ2YXIgdXJsLW1haWwtY29tbWFuZCkgOyB1cmwvdXJsLXZhcnMuZWwKKworKGRlZnVuIG1h
cmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uIChiZWcgZW5kIHVybCkKKyAgIk1ha2UgdGhlIHJl
Z2lvbiBmcm9tIEJFRyB0byBFTkQgYSBjbGlja2FibGUgYnV0dG9uIGZvciBVUkwuCitGb3IgbWFp
bHRvOiBVUklzLCB1c2UgYHVybC1tYWlsLWNvbW1hbmQnLiAgRm9yIG90aGVyIHNjaGVtZXMKK1wo
ZS5nLiwgaHR0cCwgZnRwKSwgb3BlbiB3aXRoIGBicm93c2UtdXJsJy4gIE90aGVyd2lzZSwgdHJl
YXQgYXMKK2EgcmVsYXRpdmUgZmlsZSBwYXRoIGFuZCBvcGVuIHdpdGggYGZpbmQtZmlsZScuCisK
K0RvIG5vdCBwYXNzIGBmYWNlJyB0byBgbWFrZS10ZXh0LWJ1dHRvbic6IHRoZSBsaW5rIGZhY2Ug
aXMgYWxyZWFkeQorYXBwbGllZCBieSBgbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlJyB2
aWEKK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScgKHdpdGggYDpvdmVycmlkZSBhcHBl
bmQnKSwgYW5kCitgYWRkLXRleHQtcHJvcGVydGllcycgd291bGQgb3RoZXJ3aXNlIHJlcGxhY2Ug
dGhlIGFwcGVuZGVkIGZhY2UKK2xpc3Qgd2l0aCBhIHNpbmdsZSBgbWFya2Rvd24tdHMtbGluaycs
IGNsb2JiZXJpbmcgYW4gZW5jbG9zaW5nCitoZWFkaW5nIGZhY2UuIgorICA7OyBOT1RFOiBVUkkg
c2NoZW1lIGFuZCBob3N0IG5hbWUgYXJlIGNhc2UtaW5zZW5zaXRpdmUgcGVyIFJGQyAzOTg2Cisg
IDs7IGFuZCBSRkMgNzIzMC4KKyAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggbmlsKSkKKyAgICAo
bWFrZS10ZXh0LWJ1dHRvbiBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbiAo
bGFtYmRhIChfYnV0dG9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctcHJlZml4LXAgIiMiIHVy
bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZvbGxv
dy1mcmFnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5n
IHVybCAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRj
aC1wICJcXGBtYWlsdG86IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGZ1bmNhbGwgdXJsLW1haWwtY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYG1haWx0bzoiICIiIHVybCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2gtcCAiXFxgW2Etel0rOiIg
dXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChicm93c2UtdXJsIHVybCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoZmluZC1maWxlIHVybCkpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAnaGVscC1lY2hvIHVybCkpKQorCisoZGVmdW4gbWFya2Rv
d24tdHMtLWZvbnRpZnktbGluay1kZXN0aW5hdGlvbiAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQg
JnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayBkZXN0aW5hdGlvbiBOT0RFIGFuZCBoaWRlIGl0IHdo
ZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2Vk
IHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAodHJlZXNp
dC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRy
ZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAgICdtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uIG92
ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAo
cHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2Rl
LWVuZCBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10
cy0tbWFya3VwKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hl
IG5pbAorICAiQ2FjaGVkIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBsaW5rIHJlZmVyZW5j
ZSBkZWZpbml0aW9ucy4KK0VhY2ggZW50cnkgaXMgYSBjb25zIGNlbGwgbWFwcGluZyBhIGRvd25j
YXNlZCBsYWJlbCBzdHJpbmcgdG8gaXRzCitkZXN0aW5hdGlvbiBVUkwuIikKKworKGRlZnZhci1s
b2NhbCBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljayBuaWwKKyAgIlZhbHVlIG9mIGBi
dWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgY2FjaGUgd2FzIGJ1aWx0LiIpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMgKCkKKyAgIlJldHVybiBh
biBhbGlzdCBvZiAoTEFCRUwgLiBVUkwpIGZyb20gbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnMu
CitMQUJFTCBpcyBkb3duY2FzZWQgZm9yIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcuICBSZXN1
bHRzIGFyZQorY2FjaGVkIGFuZCByZWJ1aWx0IG9ubHkgd2hlbiB0aGUgYnVmZmVyIGNoYW5nZXMu
IgorICAobGV0ICgodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKSkKKyAgICAodW5s
ZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNrKQorICAgICAgKGxl
dCogKChyb290ICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKSkKKyAgICAgICAg
ICAgICAobWF0Y2hlcyAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgJygobGlua19yZWZlcmVuY2VfZGVmaW5p
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19sYWJlbCkgQGxhYmVsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2Rlc3RpbmF0aW9uKSBAZGVzdCkpKSkKKyAgICAg
ICAgICAgICBkZWZzKQorICAgICAgICAod2hpbGUgbWF0Y2hlcworICAgICAgICAgIChsZXQqICgo
bGFiZWwtcGFpciAocG9wIG1hdGNoZXMpKQorICAgICAgICAgICAgICAgICAoZGVzdC1wYWlyIChw
b3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAgIChsYmwtdGV4dCAoc3RyaW5nLXRyaW0gKHRy
ZWVzaXQtbm9kZS10ZXh0IChjZHIgbGFiZWwtcGFpcikgdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXFxbIiAiXFxdIikpKQorICAgICAgICAgICAgKHB1c2ggKGNv
bnMgKGRvd25jYXNlIGxibC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt
bm9kZS10ZXh0IChjZHIgZGVzdC1wYWlyKSB0KSkKKyAgICAgICAgICAgICAgICAgIGRlZnMpKSkK
KyAgICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlIChucmV2ZXJzZSBkZWZz
KQorICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljayB0aWNrKSkp
CisgICAgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlKSkKKworKGRlZnVuIG1hcmtkb3duLXRz
LS1yZXNvbHZlLWxpbmstcmVmIChsYWJlbCkKKyAgIlJlc29sdmUgTEFCRUwgdG8gYSBVUkwgdmlh
IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorTEFCRUwgc2hvdWxkIGJlIHRoZSB0ZXh0IHdp
dGhvdXQgYnJhY2tldHMuICBNYXRjaGluZyBpcworY2FzZS1pbnNlbnNpdGl2ZSBwZXIgQ29tbW9u
TWFyayBzcGVjIHNlY3Rpb24gNC43LiIKKyAgKGFsaXN0LWdldCAoZG93bmNhc2UgbGFiZWwpICht
YXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMpCisgICAgICAgICAgICAgbmlsIG5pbCAj
J2VxdWFsKSkKKworOzs7IEZyYWdtZW50IGxpbmtzOgorCisoZGVmY29uc3QgbWFya2Rvd24tdHMt
LXNsdWctZ2l0aHViLXN0cmlwLXJlCisgICJbXVshXCIjJCUmJygpKissLi86Ozw9Pj9AXFxeYHt8
fX5dIgorICAiUHVuY3R1YXRpb24gc3RyaXBwZWQgYnkgR2l0SHViJ3MgZ2gtc2x1Z2dlciBiZWZv
cmUgaHlwaGVuYXRpb24uIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1YiAodGV4
dCkKKyAgIlJldHVybiB0aGUgR2l0SHViLWZsYXZvciBzbHVnIGZvciBoZWFkaW5nIFRFWFQuCitN
aXJyb3JzIHRoZSBnaC1zbHVnZ2VyIGFsZ29yaXRobTogbG93ZXJjYXNlLCBzdHJpcCBhIGZpeGVk
CitwdW5jdHVhdGlvbiBzZXQsIHJlcGxhY2Ugc3BhY2VzIHdpdGggaHlwaGVucy4iCisgIChsZXQq
ICgobGMgKGRvd25jYXNlIHRleHQpKQorICAgICAgICAgKHN0cmlwcGVkIChyZXBsYWNlLXJlZ2V4
cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLXNsdWctZ2l0aHVi
LXN0cmlwLXJlICIiIGxjKSkpCisgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiW1s6Ymxh
bms6XV0iICItIiBzdHJpcHBlZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNsdWctcGFuZG9j
ICh0ZXh0KQorICAiUmV0dXJuIHRoZSBQYW5kb2MtZmxhdm9yIGF1dG8taWQgc2x1ZyBmb3IgaGVh
ZGluZyBURVhULgorTWlycm9ycyBQYW5kb2MncyBhbGdvcml0aG06IGRyb3AgZXZlcnl0aGluZyBi
ZWZvcmUgdGhlIGZpcnN0CitsZXR0ZXIsIGtlZXAgYWxwaGFudW1lcmljcyBhbmQgYF8tLicsIGNv
bGxhcHNlIHdoaXRlc3BhY2UgcnVucyB0bworaHlwaGVucywgbG93ZXJjYXNlLiAgRmFsbHMgYmFj
ayB0byBcInNlY3Rpb25cIiBpZiBlbXB0eS4iCisgIChsZXQqICgobGMgKGRvd25jYXNlIHRleHQp
KQorICAgICAgICAgKGZyb20tbGV0dGVyIChpZiAoc3RyaW5nLW1hdGNoICJbWzphbHBoYTpdXSIg
bGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgbGMgKG1hdGNoLWJlZ2lu
bmluZyAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKKyAgICAgICAgIChrZXB0IChy
ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAiW15bOmFsbnVtOl1fLlxu
XHRbOmJsYW5rOl0tXSIgIiIgZnJvbS1sZXR0ZXIpKQorICAgICAgICAgKGh5cGhlbmF0ZWQgKHJl
cGxhY2UtcmVnZXhwLWluLXN0cmluZyAiW1s6Ymxhbms6XVx0XG5dKyIgIi0iIGtlcHQpKQorICAg
ICAgICAgKHRyaW1tZWQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiLStcXCciICIiIGh5cGhl
bmF0ZWQpKSkKKyAgICAoaWYgKHN0cmluZy1lbXB0eS1wIHRyaW1tZWQpICJzZWN0aW9uIiB0cmlt
bWVkKSkpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQtcmUKKyAgIlsgXHRd
KntbIFx0XSojXFwoW159IFx0XStcXClbIFx0XSp9WyBcdF0qXFwnIgorICAiTWF0Y2ggYSBQYW5k
b2Mtc3R5bGUgdHJhaWxpbmcgYHsjaWR9JyBvbiBhIGhlYWRpbmcgbGluZS4KK0NhcHR1cmUgZ3Jv
dXAgMSBpcyB0aGUgZXhwbGljaXQgaWQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oZWFkaW5n
LXRleHQtYW5kLWlkIChyYXcpCisgICJTcGxpdCBSQVcgaGVhZGluZyB0ZXh0IGludG8gKFZJU0lC
TEUgLiBFWFBMSUNJVC1JRCkuCitFWFBMSUNJVC1JRCBpcyBub24tbmlsIGlmIFJBVyBlbmRzIHdp
dGggYSBQYW5kb2Mtc3R5bGUgYHsjaWR9JywKK2luIHdoaWNoIGNhc2UgVklTSUJMRSBpcyBSQVcg
d2l0aCB0aGF0IHN1ZmZpeCByZW1vdmVkLiIKKyAgKGlmIChzdHJpbmctbWF0Y2ggbWFya2Rvd24t
dHMtLWV4cGxpY2l0LWlkLXJlIHJhdykKKyAgICAgIChjb25zIChzdWJzdHJpbmcgcmF3IDAgKG1h
dGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcpKQorICAg
IChjb25zIHJhdyBuaWwpKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0taGVhZGluZy1p
ZC1jYWNoZSBuaWwKKyAgIkNhY2hlZCBoYXNoIHRhYmxlIG1hcHBpbmcgaGVhZGluZyBzbHVnIHN0
cmluZ3MgdG8gYnVmZmVyIHBvc2l0aW9ucy4KK0VhY2ggdmFsdWUgaXMgdGhlIGJ1ZmZlciBwb3Np
dGlvbiBvZiB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoaW5nCitgYXR4X2hlYWRpbmcnIG9yIGBzZXRl
eHRfaGVhZGluZycgbm9kZS4gIEJ1aWx0IGxhemlseSBieQorYG1hcmtkb3duLXRzLS1oZWFkaW5n
LWlkcycsIGludmFsaWRhdGVkIGJ5IGJ1ZmZlci10aWNrIGNoYW5nZS4iKQorCisoZGVmdmFyLWxv
Y2FsIG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlLXRpY2sgbmlsCisgICJWYWx1ZSBvZiBg
YnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2snIHdoZW4gdGhlIGhlYWRpbmctaWQgY2FjaGUgd2Fz
IGJ1aWx0LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tYnVpbGQtaGVhZGluZy1pZHMgKCkKKyAg
IldhbGsgYWxsIGhlYWRpbmdzIGluIHRoZSBidWZmZXIgYW5kIHJldHVybiBhIGhhc2ggdGFibGUu
CitXaGljaCBtYXBzIGVhY2ggc2x1ZyB0byB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIGl0cyBoZWFk
aW5nLiAgRWFjaAoraGVhZGluZyBjb250cmlidXRlcyBpdHMgR2l0SHViIHNsdWcsIGl0cyBQYW5k
b2Mgc2x1ZywgYW5kIGl0cyBleHBsaWNpdAorYHsjaWR9JyBpZiBwcmVzZW50LiAgQm90aCBzbHVn
IGFsZ29yaXRobXMgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSBidWZmZXIKK2JlY2F1c2UgYSBtYXJr
ZG93biBmaWxlIGlzIG9mdGVuIHByZXZpZXdlZCBieSBzZXZlcmFsIHJlbmRlcmVycyAoR2l0SHVi
Cit3ZWIgVUksIFBhbmRvYywgbWRCb29rLCBIdWdvLCBhbmQgc28gb24pIGFuZCB0aGUgc2FtZSBz
b3VyY2Ugc2hvdWxkCityZXNvbHZlIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggb25lIHRoZSBhdXRob3Ig
d3JvdGUgdGhlIGxpbmsgZm9yLiAgRm9yIG1vc3QKK2hlYWRpbmdzIHRoZSB0d28gYWxnb3JpdGht
cyBwcm9kdWNlIHRoZSBzYW1lIHNsdWcgYW55d2F5LgorRHVwbGljYXRlIHNsdWdzICh3aXRoaW4g
b25lIGFsZ29yaXRobSkgYXJlIGRpc2FtYmlndWF0ZWQgYnkgYXBwZW5kaW5nCitgLTEnLCBgLTIn
LCBhbmQgc28gb24sIGluIGRvY3VtZW50IG9yZGVyLCBtYXRjaGluZyBHaXRIdWIncyBiZWhhdmlv
ci4KK1doZW4gdHdvIGRpc3RpbmN0IGhlYWRpbmdzIHdvdWxkIG90aGVyd2lzZSBzaGFyZSBhIHNs
dWcsIHRoZSBmaXJzdAorb2NjdXJyZW5jZSBpbiBkb2N1bWVudCBvcmRlciB3aW5zLiIKKyAgKGxl
dCAoKHRhYmxlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpCisgICAgICAgIDs7IFBl
ci1hbGdvcml0aG0gZGVkdXBlIGNvdW50ZXJzOiBob3cgbWFueSB0aW1lcyB0aGlzIGJhc2Ugc2x1
ZworICAgICAgICA7OyBoYXMgYmVlbiBzZWVuIHNvIGZhciBpbiBkb2N1bWVudCBvcmRlci4KKyAg
ICAgICAgKGdoLWNvdW50cyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpKQorICAgICAg
ICAocGQtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpCisgICAgICAgIChy
b290ICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKSkpCisgICAgKGRvbGlzdCAo
Y2FwICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgIHJvb3QKKyAgICAg
ICAgICAgICAgICAgICcoKChhdHhfaGVhZGluZykgQGgpCisgICAgICAgICAgICAgICAgICAgICgo
c2V0ZXh0X2hlYWRpbmcpIEBoKSkpKQorICAgICAgKGxldCogKChub2RlIChjZHIgY2FwKSkKKyAg
ICAgICAgICAgICAocG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAg
KHJhdyAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkpKQorICAgICAgICAg
ICAgIDs7IFN0cmlwIHRoZSBsZWFkaW5nIG1hcmtlciAoIyMjIG9yID09PT0vLS0tLSkuCisgICAg
ICAgICAgICAgOzsgRm9yIGF0eCwgZHJvcCBsZWFkaW5nICMncyBhbmQgZm9sbG93aW5nIHNwYWNl
LgorICAgICAgICAgICAgIDs7IEZvciBzZXRleHQsIGRyb3AgdGhlIHRyYWlsaW5nIHVuZGVybGlu
ZSBsaW5lLgorICAgICAgICAgICAgICh0ZXh0IChjb25kCisgICAgICAgICAgICAgICAgICAgICgo
c3RyaW5nLW1hdGNoICJcXGAjK1sgXHRdKlxcKC4qP1xcKVsgXHRdKiMqWyBcdF0qXFwnIiByYXcp
CisgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgcmF3KSkKKyAgICAgICAgICAg
ICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYFxcKC4qP1xcKVxuWz0tXStbIFx0XSpcXCciIHJh
dykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcpKQorICAgICAgICAg
ICAgICAgICAgICAodCByYXcpKSkKKyAgICAgICAgICAgICAoc3BsaXQgKG1hcmtkb3duLXRzLS1o
ZWFkaW5nLXRleHQtYW5kLWlkIHRleHQpKQorICAgICAgICAgICAgICh2aXNpYmxlIChjYXIgc3Bs
aXQpKQorICAgICAgICAgICAgIChleHBsaWNpdCAoY2RyIHNwbGl0KSkpCisgICAgICAgIDs7IEV4
cGxpY2l0IHsjaWR9IHdpbnMgb3V0cmlnaHQ7IGZpcnN0IG9jY3VycmVuY2Uga2VlcHMgaXQuCisg
ICAgICAgICh3aGVuIChhbmQgZXhwbGljaXQgKG5vdCAoZ2V0aGFzaCBleHBsaWNpdCB0YWJsZSkp
KQorICAgICAgICAgIChwdXRoYXNoIGV4cGxpY2l0IHBvcyB0YWJsZSkpCisgICAgICAgIDs7IEF1
dG8gc2x1Z3MgKEdpdEh1YiArIFBhbmRvYyksIGRlZHVwZWQgcGVyIGFsZ29yaXRobS4KKyAgICAg
ICAgKGxldCogKChnaC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1naXRodWIgdmlzaWJsZSkpCisg
ICAgICAgICAgICAgICAocGQtYmFzZSAobWFya2Rvd24tdHMtLXNsdWctcGFuZG9jIHZpc2libGUp
KQorICAgICAgICAgICAgICAgKGdoLW4gKGdldGhhc2ggZ2gtYmFzZSBnaC1jb3VudHMgMCkpCisg
ICAgICAgICAgICAgICAocGQtbiAoZ2V0aGFzaCBwZC1iYXNlIHBkLWNvdW50cyAwKSkKKyAgICAg
ICAgICAgICAgIChnaC1pZCAoaWYgKHplcm9wIGdoLW4pIGdoLWJhc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChmb3JtYXQgIiVzLSVkIiBnaC1iYXNlIGdoLW4pKSkKKyAgICAgICAgICAgICAg
IChwZC1pZCAoaWYgKHplcm9wIHBkLW4pIHBkLWJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IChmb3JtYXQgIiVzLSVkIiBwZC1iYXNlIHBkLW4pKSkpCisgICAgICAgICAgKHB1dGhhc2ggZ2gt
YmFzZSAoMSsgZ2gtbikgZ2gtY291bnRzKQorICAgICAgICAgIChwdXRoYXNoIHBkLWJhc2UgKDEr
IHBkLW4pIHBkLWNvdW50cykKKyAgICAgICAgICA7OyBGaXJzdC13cml0ZXItd2lucyBzbyBkb2N1
bWVudCBvcmRlciB0aWVicmVha3MgY29sbGlzaW9ucy4KKyAgICAgICAgICAodW5sZXNzIChnZXRo
YXNoIGdoLWlkIHRhYmxlKSAocHV0aGFzaCBnaC1pZCBwb3MgdGFibGUpKQorICAgICAgICAgICh1
bmxlc3MgKGdldGhhc2ggcGQtaWQgdGFibGUpIChwdXRoYXNoIHBkLWlkIHBvcyB0YWJsZSkpKSkp
CisgICAgdGFibGUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhlYWRpbmctaWRzICgpCisgICJS
ZXR1cm4gdGhlIGhlYWRpbmctaWQgaGFzaCB0YWJsZSBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgor
Q2FjaGUgaXMgcmVidWlsdCBvbmx5IHdoZW4gYGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJyBo
YXMgYWR2YW5jZWQKK3NpbmNlIHRoZSBsYXN0IGNhbGwgKG1pcnJvcnMgYG1hcmtkb3duLXRzLS1s
aW5rLXJlZi1jYWNoZScpLiIKKyAgKGxldCAoKHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10
aWNrKSkpCisgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNo
ZS10aWNrKQorICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2FjaGUgKG1hcmtk
b3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcykKKyAgICAgICAgICAgIG1hcmtkb3duLXRzLS1oZWFk
aW5nLWlkLWNhY2hlLXRpY2sgdGljaykpCisgICAgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQtY2Fj
aGUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCAoaWQpCisgICJKdW1w
IHRvIHRoZSBoZWFkaW5nIHdob3NlIHNsdWcgbWF0Y2hlcyBJRCAod2l0aG91dCBsZWFkaW5nIGAj
JykuCitQdXNoZXMgdGhlIG1hcmsgYmVmb3JlIG1vdmluZyBzbyBgQy11IEMtU1BDJyByZXR1cm5z
LiAgU2lnbmFscworYHVzZXItZXJyb3InIGlmIG5vIGhlYWRpbmcgbWF0Y2hlcy4iCisgIChpZi1s
ZXQqICgocG9zIChnZXRoYXNoIGlkIChtYXJrZG93bi10cy0taGVhZGluZy1pZHMpKSkpCisgICAg
ICAocHJvZ24KKyAgICAgICAgKHB1c2gtbWFyaykKKyAgICAgICAgKGdvdG8tY2hhciBwb3MpCisg
ICAgICAgIChyZWNlbnRlcikpCisgICAgKHVzZXItZXJyb3IgIk5vIGhlYWRpbmcgZm9yIGZyYWdt
ZW50OiAjJXMiIGlkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nIChu
b2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiQXBwbHkgdGhlIGhlYWRpbmcg
ZmFjZSB0byBOT0RFJ3MgZnVsbCBleHRlbnQuCitVc2UgYGZvbnQtbG9jay1hcHBlbmQtdGV4dC1w
cm9wZXJ0eScgZGlyZWN0bHkgc28gdGhlIGZhY2UgaXMgYXBwbGllZAorYWNyb3NzIHRoZSBlbnRp
cmUgaGVhZGluZyBldmVuIHdoZW4gY2hpbGQgc3ViLW5vZGVzIChlLmcuIGFuIGlubGluZQorbGlu
aykgd291bGQgb3RoZXJ3aXNlIHByZXZlbnQgdGhlIHJlZ3VsYXIgdHJlZS1zaXR0ZXIgZmFjZSBy
dWxlIGZyb20KK2NvdmVyaW5nIHRoZW0uCisKK0ZvciBBVFggaGVhZGluZ3MsIGFsc28gZm9udGlm
eSBhbnkgb3B0aW9uYWwgdHJhaWxpbmcgY2xvc2luZy1gIycKK3NlcXVlbmNlIGFzIGEgZGVsaW1p
dGVyLiAgVGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgZG9lcyBub3QgcHJvZHVjZSBhCitzZXBhcmF0
ZSBub2RlIGZvciB0aGVzZTsgcGVyIENvbW1vbk1hcmsgdGhleSBhcmUgZGVjb3JhdGl2ZSBhbmQK
K211c3QgYmUgcHJlY2VkZWQgYnkgYSBzcGFjZSBvciB0YWIuIgorICAobGV0KiAoKHR5cGUgKHRy
ZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgKG4tc3RhcnQgKHRyZWVzaXQtbm9kZS1z
dGFydCBub2RlKSkKKyAgICAgICAgIChuLWVuZCAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQor
ICAgICAgICAgKGZhY2UgKGNvbmQKKyAgICAgICAgICAgICAgICAoKGVxdWFsIHR5cGUgInNldGV4
dF9oZWFkaW5nIikKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLXNldGV4dC1oZWFkaW5n
KQorICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZXIgKHRy
ZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKKyAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChm
b3JtYXQgIm1hcmtkb3duLXRzLWhlYWRpbmctJWQiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKSkpKSkpCisg
ICAgKGZvbnQtbG9jay1hcHBlbmQtdGV4dC1wcm9wZXJ0eSBuLXN0YXJ0IG4tZW5kICdmYWNlIGZh
Y2UpCisgICAgKHdoZW4gKHN0cmluZy1wcmVmaXgtcCAiYXR4XyIgdHlwZSkKKyAgICAgIChzYXZl
LWV4Y3Vyc2lvbgorICAgICAgICAoZ290by1jaGFyIG4tZW5kKQorICAgICAgICAoc2tpcC1jaGFy
cy1iYWNrd2FyZCAiIFx0XG4iIG4tc3RhcnQpCisgICAgICAgIChsZXQgKChsaW5lLWVuZCAocG9p
bnQpKSkKKyAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBuLXN0YXJ0KQorICAg
ICAgICAgIChsZXQgKCh0cmFpbGluZy1lbmQgKHBvaW50KSkpCisgICAgICAgICAgICAoc2tpcC1j
aGFycy1iYWNrd2FyZCAiIyIgbi1zdGFydCkKKyAgICAgICAgICAgIChsZXQgKCh0cmFpbGluZy1z
dGFydCAocG9pbnQpKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPCB0cmFpbGluZy1zdGFy
dCB0cmFpbGluZy1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKD4gdHJhaWxpbmctc3Rh
cnQgbi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUg
dHJhaWxpbmctc3RhcnQpICcoP1xzID9cdCkpKQorICAgICAgICAgICAgICAgIChmb250LWxvY2st
cHJlcGVuZC10ZXh0LXByb3BlcnR5CisgICAgICAgICAgICAgICAgIHRyYWlsaW5nLXN0YXJ0IHRy
YWlsaW5nLWVuZAorICAgICAgICAgICAgICAgICAnZmFjZSAnbWFya2Rvd24tdHMtZGVsaW1pdGVy
KQorICAgICAgICAgICAgICAgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAg
ICAgICAgICAgICA7OyBBbHNvIGhpZGUgdGhlIHNwYWNlKHMpIHByZWNlZGluZyB0aGUgY2xvc2Vy
IGFuZCBhbnkKKyAgICAgICAgICAgICAgICAgIDs7IHRyYWlsaW5nIHdoaXRlc3BhY2UsIHNvIHRo
ZSBoZWFkaW5nIGxvb2tzIGNsZWFuLgorICAgICAgICAgICAgICAgICAgKGxldCAoKGhpZGUtc3Rh
cnQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChnb3RvLWNoYXIgdHJhaWxpbmctc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiIG4tc3RhcnQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAgICAgICAgICAgICAg
ICAgKHB1dC10ZXh0LXByb3BlcnR5IGhpZGUtc3RhcnQgbGluZS1lbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy0tbWFya3VwKSkpKSkpKSkpKSkKKworKGRl
ZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSAobm9kZSBvdmVycmlkZSBzdGFydCBl
bmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayBvciBpbWFnZSB0ZXh0IE5PREUgYXMgYSBjbGlj
a2FibGUgYnV0dG9uLgorV29ya3MgZm9yIGlubGluZSBsaW5rcywgcmVmZXJlbmNlIGxpbmtzLCBz
aG9ydGN1dCBsaW5rcywgYW5kCitpbWFnZSBkZXNjcmlwdGlvbnMuICBUaGUgVVJMIGlzIHRha2Vu
IGZyb20gYSBzaWJsaW5nCitgbGlua19kZXN0aW5hdGlvbicgbm9kZSB3aGVuIHByZXNlbnQsIG9y
IHJlc29sdmVkIGZyb20gYQorbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbiwgb3IgdGhlIG5vZGUg
dGV4dCBpdHNlbGYgaXMgdXNlZCBhcworZmFsbGJhY2suICBPVkVSUklERSwgU1RBUlQsIGFuZCBF
TkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUn
LiIKKyAgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkpCisgICAgOzsg
V2hlbiBOT0RFIGlzIGEgbGlua19sYWJlbCBpbnNpZGUgYSBmdWxsX3JlZmVyZW5jZV9saW5rIHRo
YXQKKyAgICA7OyBhbHNvIGhhcyBhIGxpbmtfdGV4dCwgc2tpcCBpdCwgbGlua190ZXh0IGhhbmRs
ZXMgdGhhdCBsaW5rLgorICAgICh1bmxlc3MgKGFuZCAoc3RyaW5nPSAodHJlZXNpdC1ub2RlLXR5
cGUgbm9kZSkgImxpbmtfbGFiZWwiKQorICAgICAgICAgICAgICAgICAodHJlZXNpdC1zZWFyY2gt
c3VidHJlZSBwYXJlbnQgIlxcYGxpbmtfdGV4dFxcJyIpKQorICAgICAgKHRyZWVzaXQtZm9udGlm
eS13aXRoLW92ZXJyaWRlCisgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNp
dC1ub2RlLWVuZCBub2RlKQorICAgICAgICdtYXJrZG93bi10cy1saW5rIG92ZXJyaWRlIHN0YXJ0
IGVuZCkKKyAgICAgIChsZXQqICgoZGVzdCAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBwYXJlbnQg
IlxcYGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJsIChpZiBkZXN0Cisg
ICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGRlc3QgdCkKKyAgICAgICAg
ICAgICAgICAgICAgOzsgUmVmZXJlbmNlIGxpbmtzOiByZXNvbHZlIHZpYSBsaW5rX2xhYmVsIG9y
IGxpbmtfdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgKGxldCogKChsYWJlbC1ub2RlICh0cmVl
c2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyZW50ICJcXGBsaW5rX2xhYmVsXFwnIikpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobGFiZWwgKGlmIGxhYmVsLW5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0cmluZy10cmltICh0cmVlc2l0LW5vZGUtdGV4dAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLW5vZGUgdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFsiICJcXF0iKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5v
ZGUgdCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAob3IgKG1hcmtkb3duLXRzLS1yZXNvbHZl
LWxpbmstcmVmIGxhYmVsKQorICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCkpKSkpCisg
ICAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbgorICAgICAgICAgKHRyZWVzaXQt
bm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSB1cmwpKSkpKQorCisoZGVm
dW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmsgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5k
ICZyZXN0IF8pCisgICJGb250aWZ5IGF1dG9saW5rIE5PREUgKFVSSSBvciBlbWFpbCkgYXMgYSBj
bGlja2FibGUgYnV0dG9uLgorRm9yIGVtYWlsIGF1dG9saW5rcywgdGhlIFVSTCBpcyBwcmVmaXhl
ZCB3aXRoIFwibWFpbHRvOlwiLgorQW5nbGUgYnJhY2tldCBkZWxpbWl0ZXJzIGFyZSBoaWRkZW4g
d2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNz
ZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQq
ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUt
ZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKGlubmVyIChidWZmZXItc3Vi
c3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgKDErIG5vZGUtc3RhcnQpICgx
LSBub2RlLWVuZCkpKQorICAgICAgICAgKHVybCAoaWYgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10
eXBlIG5vZGUpICJlbWFpbF9hdXRvbGluayIpCisgICAgICAgICAgICAgICAgICAoY29uY2F0ICJt
YWlsdG86IiBpbm5lcikKKyAgICAgICAgICAgICAgICBpbm5lcikpKQorICAgICh0cmVlc2l0LWZv
bnRpZnktd2l0aC1vdmVycmlkZQorICAgICBub2RlLXN0YXJ0IG5vZGUtZW5kICdtYXJrZG93bi10
cy1saW5rIG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1i
dXR0b24gbm9kZS1zdGFydCBub2RlLWVuZCB1cmwpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlk
ZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0
YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1t
YXJrdXApCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIG5vZGUtZW5kKSBub2RlLWVuZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXAp
KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1sYWJlbCAobm9kZSBv
dmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayByZWZlcmVuY2UgZGVm
aW5pdGlvbiBsYWJlbCBOT0RFIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK1RoZSBicmFja2V0cyBh
bmQgY29sb24gYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RB
UlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgt
b3ZlcnJpZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9k
ZSkpCisgICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAg
ICAocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAgKGRlc3Qtbm9k
ZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBwYXJlbnQgIlxcYGxpbmtfZGVzdGluYXRpb25cXCci
KSkKKyAgICAgICAgICh1cmwgKHdoZW4gZGVzdC1ub2RlICh0cmVlc2l0LW5vZGUtdGV4dCBkZXN0
LW5vZGUgdCkpKSkKKyAgICA7OyBGb250aWZ5IHRoZSBsYWJlbCB0ZXh0IChpbnNpZGUgYnJhY2tl
dHMpLgorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAoMSsgbm9kZS1z
dGFydCkgKDEtIG5vZGUtZW5kKQorICAgICAnbWFya2Rvd24tdHMtbGluayBvdmVycmlkZSBzdGFy
dCBlbmQpCisgICAgOzsgTWFrZSBpdCBhIGNsaWNrYWJsZSBidXR0b24uCisgICAgKHdoZW4gdXJs
CisgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKDErIG5vZGUtc3RhcnQpICgx
LSBub2RlLWVuZCkgdXJsKSkKKyAgICA7OyBIaWRlICJbIiBiZWZvcmUgbGFiZWwgYW5kICJdOiAi
IGJldHdlZW4gbGFiZWwgYW5kIGRlc3RpbmF0aW9uLgorICAgICh3aGVuIG1hcmtkb3duLXRzLWhp
ZGUtbWFya3VwCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFydCAoMSsgbm9kZS1z
dGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0t
bWFya3VwKQorICAgICAgKGxldCAoKGNvbG9uLWVuZCAoaWYgZGVzdC1ub2RlICh0cmVlc2l0LW5v
ZGUtc3RhcnQgZGVzdC1ub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICgxKyBub2RlLWVu
ZCkpKSkKKyAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBub2RlLWVuZCkgY29sb24tZW5k
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFy
a3VwKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWRlc3RpbmF0
aW9uIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN0IF8pCisgICJGb250aWZ5IGxpbmsgcmVm
ZXJlbmNlIGRlZmluaXRpb24gZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3aGVuIG1hcmt1cCBo
aWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitg
dHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQtZm9udGlmeS13aXRo
LW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5k
IG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVycmlkZSBzdGFydCBl
bmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1dC10ZXh0LXByb3Bl
cnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkpKQor
CisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5vZGUpCisgICJSZXR1
cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNpbmdsZSBpbmxpbmUg
c2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBmYWxzZSBgbGF0ZXhf
YmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4gIENo
ZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMgc2hhcmUgdGhlIHNh
bWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9kZS1zdGFydCAodHJl
ZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEtICh0cmVlc2l0LW5v
ZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0cmVlc2l0LW5vZGUt
YXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChtZC1lbmQgKHRyZWVz
aXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgIChpbmxpbmUt
c3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChuKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlw
ZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVuZCAodHJlZXNpdC1w
YXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQtZW5kCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkpCisgICAg
ICAoZXF1YWwgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisgICAgICAgICAgICAg
KHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz
LS1mb250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQor
ICAiRm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxpbWl0ZXJzIHdoZW4g
bWFya3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFsc2UgbWF0Y2hlcyB0
aGF0IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJREUsIFNUQVJULCBh
bmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy
aWRlJy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCBub2RlKQor
ICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJlZXNpdC1ub2RlLXN0
YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJrZG93bi10cy1sYXRl
eCBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAK
KyAgICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQgbm9kZSkpCisgICAg
ICAgIChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkpKQorICAgICAgICAg
ICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRleF9zcGFuX2RlbGlt
aXRlciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFy
dCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVu
ZCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJr
ZG93bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYmFj
a3NsYXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRp
ZnkgYmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFzaCB3aGVuIG1hcmt1
cCBpcyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2NrJyB3aGVyZSBiYWNr
c2xhc2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBw
YXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChs
ZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChpbi1s
YXRleCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkKKyAgICAodHJlZXNp
dC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkK
KyAgICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdo
ZW4gKGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4KSkKKyAgICAgIChw
dXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXApKSkpCisKKyhkZWZ2
YXIgc2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVudGl0eS1nZXQgIm9y
Zy9vcmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHkg
KHRleHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCImYW1wO1wiKSB0byBp
dHMgY2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJpbmcsIG9yIG5pbCBp
ZiB0aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVtZXJpYyBoZXggJiN4
MUY0QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0Ol1dK1xcKTtcXCci
IHRleHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJp
bmcgMSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIzOworICAgKChzdHJp
bmctbWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAoY2hhci10
by1zdHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRleHQpKSkpCisgICA7
OyBOYW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBiYWNrIHRvIHNnbWwt
Y2hhci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51bTpdXStcXCk7XFwn
IiB0ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkpCisgICAgICAo
cmVxdWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRyeSAob3JnLWVudGl0
eS1nZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVudHJ5KSkpCisgICAg
ICAgICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAgICAgICAod2hlbi1s
ZXQqICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1lICMnZXF1YWwpKSkK
KyAgICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3du
LXRzLS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAg
IkZvbnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFsdWUgd2hlbiBtYXJr
dXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3Vn
aCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChub2RlLXN0
YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJlZXNp
dC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAodHJlZXNpdC1ub2Rl
LXR5cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAgICAgICAgJ21hcmtk
b3duLXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbnVt
ZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92
ZXJyaWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtkb3duLXRzLWhpZGUt
bWFya3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93bi10cy0tZGVjb2Rl
LWVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0
IG5vZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxheWFibGUtcCAoYXJl
ZiBkZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3RhcnQg
bm9kZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGll
cyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCisoZGVmdW4gbWFya2Rv
d24tdHMtLXJlc29sdmUtZGlzcGxheS12YWx1ZSAodmFsKQorICAiUmVzb2x2ZSBWQUwsIGEgY29u
cyAoUFJFRkVSUkVEIC4gRkFMTEJBQ0spLCB0byBhIGRpc3BsYXlhYmxlIHZhbHVlLgorUmV0dXJu
IFBSRUZFUlJFRCBpZiBpdHMgZmlyc3QgY2hhcmFjdGVyIHBhc3NlcyBgY2hhci1kaXNwbGF5YWJs
ZS1wJywKK290aGVyd2lzZSByZXR1cm4gRkFMTEJBQ0suICBSZXR1cm4gbmlsIGlmIFZBTCBpcyBu
aWwuIgorICAod2hlbiB2YWwKKyAgICAobGV0KiAoKHByZWZlcnJlZCAoY2FyIHZhbCkpCisgICAg
ICAgICAgIChjaCAoaWYgKGNoYXJhY3RlcnAgcHJlZmVycmVkKSBwcmVmZXJyZWQgKGFyZWYgcHJl
ZmVycmVkIDApKSkpCisgICAgICAoaWYgKGNoYXItZGlzcGxheWFibGUtcCBjaCkgKGNhciB2YWwp
IChjZHIgdmFsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94IChu
b2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3QgY2hl
Y2tib3ggTk9ERSwgc2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4K
K09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0
LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQt
bm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBu
b2RlKSkKKyAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkg
InRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNrZWQg
J21hcmtkb3duLXRzLXRhc2stY2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMt
dGFzay11bmNoZWNrZWQpKQorICAgICAgICAgKHJlcGxhY2VtZW50IChtYXJrZG93bi10cy0tcmVz
b2x2ZS1kaXNwbGF5LXZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgIChpZiBjaGVja2VkCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1jaGVja2VkLWNoZWNrYm94Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KSkp
KQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5k
IGZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQg
ZW5kKQorICAgIChpZiAoYW5kIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50Cisg
ICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiByZXBsYWNlbWVudCAwKSkpCisg
ICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kICdkaXNwbGF5IHJl
cGxhY2VtZW50KQorICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2Rl
LWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWhh
cmQtbGluZS1icmVhayAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRp
ZnkgaGFyZCBsaW5lIGJyZWFrIE5PREU7IHNob3cgYSBVbmljb2RlIHN5bWJvbCB3aGVuIG1hcmt1
cCBpcyBoaWRkZW4uCitBIGJhY2tzbGFzaCBicmVhayBnZXRzIGBtYXJrZG93bi10cy1oYXJkLWxp
bmUtYnJlYWstYmFja3NsYXNoJyAob3IgaXRzCitgLWhpZGRlbicgdmFyaWFudCB3aGVuIG1hcmt1
cCBpcyBoaWRkZW4pOyBhIHRyYWlsaW5nLXNwYWNlcyBicmVhayBnZXRzCitgbWFya2Rvd24tdHMt
aGFyZC1saW5lLWJyZWFrLXNwYWNlJyAob3IgYC1oaWRkZW4nKS4gIFdoZW4gaGlkZGVuLCBhCiti
YWNrc2xhc2ggYnJlYWsgaXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgYG1hcmtkb3duLXRzLWhhcmQt
bGluZS1icmVhaycKK2dseXBoOyBhIHRyYWlsaW5nLXNwYWNlcyBicmVhayByZXBsYWNlcyBlYWNo
IHNwYWNlIHdpdGggdGhlIGdseXBoLCBzbyB0aGUgcnVuCitvZiBwaWxjcm93cyBmaWxscyB0aGUg
bGluZSB1cCB0byB0aGUgbmV3bGluZS4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFz
c2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAobGV0
KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2Rl
LWVuZCAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKHRleHQgICAgICAgKHRy
ZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkpCisgICAgICAgICAoYmFja3NsYXNoICAoYW5kICg+IChs
ZW5ndGggdGV4dCkgMCkgKGVxIChhcmVmIHRleHQgMCkgP1xcKSkpCisgICAgICAgICA7OyBEZXRl
cm1pbmUgdGhlIGFjdHVhbCByYW5nZSB0byBmb250aWZ5IGFuZCByZXBsYWNlLiAgVGhlCisgICAg
ICAgICA7OyBoYXJkX2xpbmVfYnJlYWsgbm9kZSBtYXkgbm90IGNvdmVyIHRoZSBmdWxsIHJ1biBv
ZiB0cmFpbGluZworICAgICAgICAgOzsgc3BhY2VzLCBzbyB3YWxrIGJhY2sgZnJvbSBlbmQtb2Yt
bGluZSBvdXJzZWx2ZXMgZm9yIHRoZQorICAgICAgICAgOzsgc3BhY2VzIHZhcmlhbnQuCisgICAg
ICAgICAocmVnaW9uICAgICAoaWYgYmFja3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg
KGNvbnMgbm9kZS1zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5k
ICg+IG5vZGUtZW5kIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGVxIChjaGFyLWJlZm9yZSBub2RlLWVuZCkgP1xuKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKDEtIG5vZGUtZW5kKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1
cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIG5vZGUtc3RhcnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGVvbCAobGluZS1lbmQtcG9zaXRpb24pKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVvbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgIiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW9sKSkpKSkKKyAgICAgICAgIChyZWdpb24tc3RhcnQgKGNh
ciByZWdpb24pKQorICAgICAgICAgKHJlZ2lvbi1lbmQgICAoY2RyIHJlZ2lvbikpCisgICAgICAg
ICAoZmFjZSAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICgoYW5kIGJhY2tzbGFz
aCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtk
b3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gtaGlkZGVuKQorICAgICAgICAgICAgICAg
ICAgICAgIChiYWNrc2xhc2ggJ21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gp
CisgICAgICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAg
ICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UtaGlkZGVu
KQorICAgICAgICAgICAgICAgICAgICAgICh0ICdtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWst
c3BhY2UpKSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlIHJlZ2lvbi1zdGFy
dCByZWdpb24tZW5kIGZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Zl
cnJpZGUgc3RhcnQgZW5kKQorICAgIDs7IEFsd2F5cyBzdGFydCBieSBjbGVhcmluZyBhbnkgc3Rh
bGUgYGRpc3BsYXknIHByb3BlcnR5LiAgV2UgbmV2ZXIKKyAgICA7OyBzcGFuIHRoZSB0cmFpbGlu
ZyBuZXdsaW5lIHdpdGggYGRpc3BsYXknIChpdCBjb25mdXNlcworICAgIDs7IHJlZGlzcGxheSdz
IGN1cnNvciBwbGFjZW1lbnQpLCBhbmQgd2Ugb25seSBwYWludCBhIHNpbmdsZQorICAgIDs7IGNv
bWJpbmVkIHN0cmluZyBvbnRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1biwgbGVhdmlu
ZworICAgIDs7IHRoZSByZXN0IG9mIHRoZSBtYXJrdXAgYWxvbmUuCisgICAgKHJlbW92ZS10ZXh0
LXByb3BlcnRpZXMgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgJyhkaXNwbGF5IG5pbCkpCisgICAg
KHdoZW4gbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChsZXQqICgoc3BlYyAoaWYgYmFj
a3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNw
bGF5LXZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1oYXJkLWxpbmUt
YnJlYWstYmFja3NsYXNoKQorICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtaGFyZC1s
aW5lLWJyZWFrLXNwYWNlKSkKKyAgICAgICAgICAgICAoc3RyIChjb25kCisgICAgICAgICAgICAg
ICAgICAgKChudWxsIHNwZWMpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAoKGNoYXJhY3RlcnAg
c3BlYykgKGNoYXItdG8tc3RyaW5nIHNwZWMpKQorICAgICAgICAgICAgICAgICAgICgoc3RyaW5n
cCBzcGVjKSBzcGVjKQorICAgICAgICAgICAgICAgICAgICgoZnVuY3Rpb25wIHNwZWMpCisgICAg
ICAgICAgICAgICAgICAgIChmdW5jYWxsIHNwZWMgKC0gcmVnaW9uLWVuZCByZWdpb24tc3RhcnQp
KSkpKSkKKyAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBzdHIpCisgICAgICAgICAgICAgICAg
ICAgKD4gKGxlbmd0aCBzdHIpIDApCisgICAgICAgICAgICAgICAgICAgKGNoYXItZGlzcGxheWFi
bGUtcCAoYXJlZiBzdHIgMCkpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSByZWdpb24t
c3RhcnQgKDErIHJlZ2lvbi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rp
c3BsYXkgc3RyKQorICAgICAgICAgIDs7IEZvciB0aGUgdHJhaWxpbmctc3BhY2VzIHZhcmlhbnQs
IGhpZGUgdGhlIHJlbWFpbmluZworICAgICAgICAgIDs7IHNwYWNlcyBpbiB0aGUgcnVuIHNvIHRo
ZSBsaW5lIGRvZXNuJ3QgZW5kIHdpdGggbGVmdG92ZXIKKyAgICAgICAgICA7OyB3aGl0ZXNwYWNl
IGFmdGVyIHRoZSBzdWJzdGl0dXRlZCBnbHlwaC4gIEVhY2ggcG9zaXRpb24KKyAgICAgICAgICA7
OyBnZXRzIGl0cyBvd24gZW1wdHktc3RyaW5nIGBkaXNwbGF5JyBzbyBjdXJzb3IgcGxhY2VtZW50
CisgICAgICAgICAgOzsgc3RheXMgdW5hbWJpZ3VvdXMuCisgICAgICAgICAgKHVubGVzcyBiYWNr
c2xhc2gKKyAgICAgICAgICAgIChsZXQgKChpICgxKyByZWdpb24tc3RhcnQpKSkKKyAgICAgICAg
ICAgICAgKHdoaWxlICg8IGkgcmVnaW9uLWVuZCkKKyAgICAgICAgICAgICAgICAocHV0LXRleHQt
cHJvcGVydHkgaSAoMSsgaSkgJ2Rpc3BsYXkgIiIpCisgICAgICAgICAgICAgICAgKHNldHEgaSAo
MSsgaSkpKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJy
ZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0aGVtYXRp
YyBicmVhayBOT0RFIGFuZCBzaG93IGEgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVS
UklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250
aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1z
dGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkK
KyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUgbm9kZS1zdGFydCBub2RlLWVuZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGhlbWF0aWMt
YnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQg
ZW5kKQorICAgIChsZXQgKChjaGFyIChtYXJrZG93bi10cy0tcmVzb2x2ZS1kaXNwbGF5LXZhbHVl
CisgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNoYXJhY3Rlcikp
KQorICAgICAgKGlmIChhbmQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgY2hhciAoY2hhci1kaXNw
bGF5YWJsZS1wIGNoYXIpKQorICAgICAgICAgIChsZXQqICgoY29sIChzYXZlLWV4Y3Vyc2lvbiAo
Z290by1jaGFyIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICA7OyBTcGFuIGlmIHRoZSBm
YWNlIGhhcyBub24tbmlsIDpleHRlbmQuCisgICAgICAgICAgICAgICAgIChzcGFuLWxlbmd0aCAo
aWYgKGZhY2UtYXR0cmlidXRlICdtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXh0ZW5kIG5pbCAnZGVm
YXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAod2luZG93LWJvZHkt
d2lkdGgpIGNvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIpKSkKKyAgICAg
ICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoY29uY2F0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmlu
ZyBzcGFuLWxlbmd0aCBjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
KSkpCisgICAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIG5vZGUtc3RhcnQgbm9kZS1lbmQg
JyhkaXNwbGF5IG5pbCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktY29kZS1i
bG9jayAobm9kZSBfb3ZlcnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgY29k
ZSBibG9jayBjb250ZW50IE5PREUgd2l0aCBhIGJhY2tncm91bmQgb3ZlcmxheS4KK1VzZSBgbWFy
a2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuJyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4s
CitgbWFya2Rvd24tdHMtY29kZS1ibG9jaycgb3RoZXJ3aXNlLiAgVXNlIGFuIG92ZXJsYXkgc28g
dGhlCitiYWNrZ3JvdW5kIGxheWVycyBpdHNlbGYgYmVoaW5kIGxhbmd1YWdlLXNwZWNpZmljIGZv
bnRpZmljYXRpb24uCitUaGUgb3ZlcmxheSBhbHNvIHN0b3JlcyB0aGUgY29kZSBibG9jayBsYW5n
dWFnZSBhbmQgbW9kZSBhcworcHJvcGVydGllcyBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5n
dWFnZScgYW5kCitgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlJywgYWNjZXNzaWJsZSB2aWEK
K2BtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlLWF0Jy4iCisgIChsZXQqICgobm9kZS1z
dGFydCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo
dHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAobGluZS1i
ZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1leGN1cnNpb24K
KyAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkp
CisgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IikKKyAgICAg
ICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgKGZhY2UgKGlmIG1hcmtkb3duLXRz
LWhpZGUtbWFya3VwCisgICAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2st
bWFya3VwLWhpZGRlbgorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykp
CisgICAgICAgICAobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgbm9kZSkpCisg
ICAgICAgICAobW9kZSAod2hlbiBsYW5nCisgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t
Y29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIGxhbmcpKSkKKyAgICAgICAgIChleGlzdGluZyAoc2Vx
LWZpbmQgKGxhbWJkYSAob3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJs
YXktZ2V0IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG92ZXJsYXlzLWF0IG5vZGUtc3RhcnQpKSkpCisgICAgKGlmIGV4aXN0aW5nCisg
ICAgICAgIChwcm9nbgorICAgICAgICAgIChtb3ZlLW92ZXJsYXkgZXhpc3Rpbmcgbm9kZS1zdGFy
dCBub2RlLWVuZCkKKyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ2ZhY2UgZmFjZSkK
KyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2st
bGFuZ3VhZ2UgbGFuZykKKyAgICAgICAgICAob3ZlcmxheS1wdXQgZXhpc3RpbmcgJ21hcmtkb3du
LXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKSkKKyAgICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5
IG5vZGUtc3RhcnQgbm9kZS1lbmQgbmlsIHQgbmlsKSkpCisgICAgICAgIDs7IE1hcmtlcnMgbmVl
ZCB0byBiZSBzZXQgb25seSBvbmNlLgorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3du
LXRzLWNvZGUtYmVnLW1hcmtlciAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtc3RhcnQpKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtZW5k
LW1hcmtlciAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtZW5kKSkKKyAg
ICAgICAgKG92ZXJsYXktcHV0IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrIHQpCisgICAgICAg
IChvdmVybGF5LXB1dCBvdiAnZmFjZSBmYWNlKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21h
cmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UgbGFuZykKKyAgICAgICAgKG92ZXJsYXktcHV0
IG92ICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUgbW9kZSkKKyAgICAgICAgKG92ZXJsYXkt
cHV0IG92ICdldmFwb3JhdGUgdCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1jb2RlLWJsb2Nr
LWF0LXAgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gbm9uIG5pbCBpZiBwb2ludCBpcyBpbiBh
IGNvZGUgYmxvY2suCitJZiBQT1MgaXMgbmlsLCB1c2UgcG9pbnQuIgorICAoZ2V0LWNoYXItcHJv
cGVydHkgKG9yIHBvcyAocG9pbnQpKSAnbWFya2Rvd24tdHMtY29kZS1ibG9jaykpCisKKyhkZWZ1
biBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlLWF0ICgmb3B0aW9uYWwgcG9zKQorICAi
UmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgb2YgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYg
UE9TIGlzIG5pbCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUg
YSBmZW5jZWQKK2NvZGUgYmxvY2suICBUaGlzIHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBh
IGd1ZXN0IHRyZWUtc2l0dGVyIHBhcnNlcgoraXMgYWN0aXZlLCBzaW5jZSB0aGUgbGFuZ3VhZ2Ug
aXMgc3RvcmVkIG9uIHRoZSBjb2RlIGJsb2NrIG92ZXJsYXkgYnkgdGhlCitob3N0IHBhcnNlcidz
IGZvbnRpZmljYXRpb24uIgorICAoZ2V0LWNoYXItcHJvcGVydHkgKG9yIHBvcyAocG9pbnQpKSAn
bWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1j
b2RlLWJsb2NrLW1vZGUtYXQgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gdGhlIG1ham9yIG1v
ZGUgZm9yIHRoZSBjb2RlIGJsb2NrIGF0IFBPUy4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4g
IFJldHVybnMgbmlsIGlmIFBPUyBpcyBub3QgaW5zaWRlIGEgZmVuY2VkCitjb2RlIGJsb2NrIG9y
IGlmIHRoZSBsYW5ndWFnZSBoYXMgbm8gcmVjb2duaXplZCBtb2RlLiIKKyAgKHdoZW4gKG1hcmtk
b3duLXRzLWNvZGUtYmxvY2stYXQtcCBwb3MpCisgICAgKG9yIChnZXQtY2hhci1wcm9wZXJ0eSAo
b3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUpCisgICAgICAgIG1h
cmtkb3duLXRzLWRlZmF1bHQtY29kZS1ibG9jay1tb2RlKSkpCisKKzs7OyBJbWFnZSBoYW5kbGlu
ZzoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXAgKG5vZGUpCisg
ICJSZXR1cm4gbm9uLW5pbCBpZiBpbWFnZSBOT0RFIGlzIHRoZSBvbmx5IGNvbnRlbnQgb24gaXRz
IGxpbmUuCitXaGl0ZXNwYWNlLCBibG9jayBxdW90ZSBtYXJrZXJzIChgPicpLCBhbmQgbGlzdCBt
YXJrZXJzCitcKGAtJywgYConLCBgKycsIGAxLicpIGJlZm9yZSB0aGUgaW1hZ2UgYXJlIGlnbm9y
ZWQuIgorICAobGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAg
ICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKQorICAgIChzYXZlLWV4Y3Vy
c2lvbgorICAgICAgKGdvdG8tY2hhciBub2RlLXN0YXJ0KQorICAgICAgKGxldCAoKGJvbCAobGlu
ZS1iZWdpbm5pbmctcG9zaXRpb24pKQorICAgICAgICAgICAgKGVvbCAobGluZS1lbmQtcG9zaXRp
b24pKSkKKyAgICAgICAgOzsgQmVmb3JlIHRoZSBpbWFnZTogb25seSBibG9jayBxdW90ZSBtYXJr
ZXJzLCB3aGl0ZXNwYWNlLAorICAgICAgICA7OyBhbmQgYW4gb3B0aW9uYWwgbGlzdCBtYXJrZXIg
YXJlIGFsbG93ZWQuCisgICAgICAgIChhbmQgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAg
IChyeCBib3MKKyAgICAgICAgICAgICAgICAgICh6ZXJvLW9yLW1vcmUgKGFueSAiPiBcdCIpKQor
ICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsIChvciAoc2VxIChhbnkgIi0qKyIpICIgIikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcSAob25lLW9yLW1vcmUgZGlnaXQpIChh
bnkgIi4pIiApICIgIikpKQorICAgICAgICAgICAgICAgICAgZW9zKQorICAgICAgICAgICAgICAo
YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGJvbCBub2RlLXN0YXJ0KSkKKyAgICAgICAg
ICAgICA7OyBBZnRlciB0aGUgaW1hZ2U6IG9ubHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbGxvd2Vk
LgorICAgICAgICAgICAgIChzdHJpbmctbWF0Y2gtcAorICAgICAgICAgICAgICAocnggYm9zICh6
ZXJvLW9yLW1vcmUgKGFueSAiIFx0IikpIGVvcykKKyAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJz
dHJpbmctbm8tcHJvcGVydGllcyBub2RlLWVuZCBlb2wpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93
bi10cy0tZm9udGlmeS1pbWFnZSAobm9kZSBfb3ZlcnJpZGUgX3N0YXJ0IF9lbmQgJnJlc3QgXykK
KyAgIlNob3cgYW4gaW5saW5lIGltYWdlIGF0IE5PREUuCitXaGVuIGBtYXJrZG93bi10cy1pbmxp
bmUtaW1hZ2VzJyBpcyBub24tbmlsLCBkaXNwbGF5IHRoZSBpbWFnZS4KK0lmIHRoZSBpbWFnZSBs
aW5rIGlzIHRoZSBvbmx5IGNvbnRlbnQgb24gaXRzIGxpbmUsIGRpc3BsYXkgdGhlCitpbWFnZSBi
ZWxvdyB0aGUgbGluay4gIElmIHRoZSBpbWFnZSBpcyBpbmxpbmUgd2l0aGluIGEgcGFyYWdyYXBo
LAorZGlzcGxheSBpdCByaWdodCBhZnRlciB0aGUgbGluayB0ZXh0LgorUmVtb3RlIGltYWdlcyBh
cmUgY29udHJvbGxlZCBieQorYG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFn
ZXMnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg
ICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAoZW9s
IChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIG5vZGUtZW5kKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAgICAoc2VhcmNoLWVuZCAo
bWluICgxKyBlb2wpIChwb2ludC1tYXgpKSkpCisgICAgOzsgQWx3YXlzIGNsZWFyIHN0YWxlIG92
ZXJsYXlzIGZvciB0aGlzIG5vZGUncyByYW5nZS4KKyAgICAoZG9saXN0IChvdiAob3ZlcmxheXMt
aW4gbm9kZS1zdGFydCBzZWFyY2gtZW5kKSkKKyAgICAgICh3aGVuIChhbmQgKG92ZXJsYXktZ2V0
IG92ICdtYXJrZG93bi10cy1pbWFnZSkKKyAgICAgICAgICAgICAgICAgKD49IChvdmVybGF5LXN0
YXJ0IG92KSBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAoPD0gKG92ZXJsYXktZW5kIG92
KSBzZWFyY2gtZW5kKSkKKyAgICAgICAgKGRlbGV0ZS1vdmVybGF5IG92KSkpCisgICAgKHdoZW4g
KGFuZCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisgICAgICAgICAgICAgICA7OyBEb24ndCBj
cmVhdGUgaW1hZ2Ugb3ZlcmxheXMgZm9yIG5vZGVzIGluc2lkZQorICAgICAgICAgICAgICAgOzsg
Zm9sZGVkIChvdXRsaW5lLWludmlzaWJsZSkgaGVhZGluZ3MsIHNpbmNlIHRoZQorICAgICAgICAg
ICAgICAgOzsgaW1hZ2VzIHdvdWxkbid0IGJlIHZpc2libGUgYW5kIGNvdWxkIGludGVyZmVyZQor
ICAgICAgICAgICAgICAgOzsgd2l0aCB0aGUgZm9sZGVkIGRpc3BsYXkuCisgICAgICAgICAgICAg
ICAobm90IChtYXJrZG93bi10cy0tb3V0bGluZS1pbnZpc2libGUtcCBub2RlLXN0YXJ0KSkpCisg
ICAgICAobGV0KiAoKGRlc3QgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgbm9kZSAiXFxgbGlua19k
ZXN0aW5hdGlvblxcJyIpKQorICAgICAgICAgICAgICh1cmwgKGFuZCBkZXN0ICh0cmVlc2l0LW5v
ZGUtdGV4dCBkZXN0IHQpKSkKKyAgICAgICAgICAgICAocmVtb3RlcCAoYW5kIHVybCAoc3RyaW5n
LW1hdGNoLXAgIlxcYGh0dHBzPzovLyIgdXJsKSkpCisgICAgICAgICAgICAgKGRpc3BsYXlhYmxl
CisgICAgICAgICAgICAgICh3aGVuIHVybAorICAgICAgICAgICAgICAgIChpZiByZW1vdGVwCisg
ICAgICAgICAgICAgICAgICAgICh3aGVuIChlcSBtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1p
bmxpbmUtaW1hZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bmxvYWQpCisg
ICAgICAgICAgICAgICAgICAgICAgKGlnbm9yZS1lcnJvcnMKKyAgICAgICAgICAgICAgICAgICAg
ICAgIChyZXF1aXJlICd1cmwtaGFuZGxlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAod2l0
aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tdWx0
aWJ5dGUgbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAodXJsLWluc2VydC1maWxlLWNv
bnRlbnRzIHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkp
CisgICAgICAgICAgICAgICAgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSB1cmwpKSkK
KyAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90IChmaWxlLXJlbW90ZS1wIGZpbGUpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wIGZpbGUpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKGltYWdlLXN1cHBvcnRlZC1maWxlLXAgZmlsZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlKSkpKSkKKyAgICAgICAgICAgICAobWF4LXcgKGFuZCBkaXNwbGF5YWJs
ZQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgbWFya2Rvd24tdHMtaW1hZ2UtbWF4
LXdpZHRoICd3aW5kb3cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctYm9k
eS13aWR0aCBuaWwgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLWlt
YWdlLW1heC13aWR0aCkpKQorICAgICAgICAgICAgIChpbWcgKGFuZCBtYXgtdworICAgICAgICAg
ICAgICAgICAgICAgICAoY3JlYXRlLWltYWdlIGRpc3BsYXlhYmxlIG5pbCByZW1vdGVwCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1heC13aWR0aCBtYXgtdworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzY2FsZSAxKSkpKQorICAgICAgICAod2hl
biBpbWcKKyAgICAgICAgICAobGV0KiAoKGFsb25lIChtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUt
b24tbGluZS1wIG5vZGUpKQorICAgICAgICAgICAgICAgICAoc3RyIChpZiBhbG9uZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJcbiIgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5
IGltZykpCisgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkg
aW1nKSkpCisgICAgICAgICAgICAgICAgIChvdiAobWFrZS1vdmVybGF5ICgxLSBub2RlLWVuZCkg
bm9kZS1lbmQgbmlsIHQgbmlsKSkpCisgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtk
b3duLXRzLWltYWdlIHQpCisgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2FmdGVyLXN0cmlu
ZyBzdHIpCisgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkpKQor
Cis7OzsgVVJML1VSSSBoYW5kbGluZzoKKworKGRlZnZhciBtYXJrZG93bi10cy0tYmFyZS11cmwt
cmVnZXhwIGdvdG8tYWRkcmVzcy11cmwtcmVnZXhwCisgICJSZWdleHAgbWF0Y2hpbmcgYmFyZSBV
UkxzIG5vdCB3cmFwcGVkIGluIGFuZ2xlIGJyYWNrZXRzIG9yIGxpbmsgc3ludGF4LiIpCisKKyhk
ZWZ2YXIgbWFya2Rvd24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCBnb3RvLWFkZHJlc3MtbWFp
bC1yZWdleHAKKyAgIlJlZ2V4cCBtYXRjaGluZyBiYXJlIGVtYWlsIGFkZHJlc3NlcyBub3Qgd3Jh
cHBlZCBpbiBhbmdsZSBicmFja2V0cy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnkt
YmFyZS11cmkgKHN0YXJ0IGVuZCkKKyAgIkZvbnRpZnkgYmFyZSBVUkwgb3IgZW1haWwgVVJJIGJl
dHdlZW4gU1RBUlQgYW5kIEVORC4KK1NraXAgbWF0Y2hlcyBhbHJlYWR5IGluc2lkZSB0cmVlLXNp
dHRlciBsaW5rIG9yIGF1dG9saW5rIG5vZGVzLiIKKyAgKGRvbGlzdCAocmUgKGxpc3QgbWFya2Rv
d24tdHMtLWJhcmUtdXJsLXJlZ2V4cAorICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0t
YmFyZS1lbWFpbC11cmktcmVnZXhwKSkKKyAgICAoZ290by1jaGFyIHN0YXJ0KQorICAgICh3aGls
ZSAocmUtc2VhcmNoLWZvcndhcmQgcmUgZW5kIHQpCisgICAgICAobGV0KiAoKHVyaS1zdGFydCAo
bWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAgICAgICh1cmktZW5kIChtYXRjaC1lbmQgMCkp
CisgICAgICAgICAgICAgKHVyaSAobWF0Y2gtc3RyaW5nIDApKQorICAgICAgICAgICAgIChub2Rl
ICh0cmVlc2l0LW5vZGUtYXQgdXJpLXN0YXJ0ICdtYXJrZG93bi1pbmxpbmUpKQorICAgICAgICAg
ICAgIChwYXJlbnQgKGFuZCBub2RlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKSkKKyAgICAg
ICAgICAgICAocGFyZW50LXR5cGUgKGFuZCBwYXJlbnQgKHRyZWVzaXQtbm9kZS10eXBlIHBhcmVu
dCkpKSkKKyAgICAgICAgKHVubGVzcyAob3IgKG1lbWJlciBwYXJlbnQtdHlwZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcoImlubGluZV9saW5rIiAiZnVsbF9yZWZlcmVuY2VfbGluayIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsi
ICJzaG9ydGN1dF9saW5rIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlIiAi
dXJpX2F1dG9saW5rIiAiZW1haWxfYXV0b2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibGlua19kZXN0aW5hdGlvbiIpKQorICAgICAgICAgICAgICAgICAgICAobWVtYmVyIChh
bmQgbm9kZSAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJygidXJpX2F1dG9saW5rIiAiZW1haWxfYXV0b2xpbmsiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAibGlua19kZXN0aW5hdGlvbiIgImNvZGVfc3BhbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjb2RlX2ZlbmNlX2NvbnRlbnQiICJpbmZvX3N0cmluZyIpKQor
ICAgICAgICAgICAgICAgICAgICAoZ2V0LXRleHQtcHJvcGVydHkgdXJpLXN0YXJ0ICdidXR0b24p
KQorICAgICAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbgorICAgICAgICAgICB1
cmktc3RhcnQgdXJpLWVuZAorICAgICAgICAgICAoaWYgKGVxIHVyaS1zdGFydCAwKQorICAgICAg
ICAgICAgICAgdXJpCisgICAgICAgICAgICAgKGNvbmNhdCAibWFpbHRvOiIgdXJpKSkpKSkpKSkK
KworOzs7IHRyZWVzaXQgc2V0dGluZ3M6CisKIChkZWZ2YXIgbWFya2Rvd24tdHMtLXRyZWVzaXQt
c2V0dGluZ3MKICAgKHRyZWVzaXQtZm9udC1sb2NrLXJ1bGVzCiAgICA6bGFuZ3VhZ2UgJ21hcmtk
b3duLWlubGluZQogICAgOm92ZXJyaWRlIHQKICAgIDpmZWF0dXJlICdkZWxpbWl0ZXIKLSAgICco
KGlubGluZV9saW5rIFsgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykKLSAgICAgKGltYWdlIFsg
IiEiICJbIiAiXSIgIigiICIpIiBdIEBzaGFkb3cpKQorICAgJygoaW5saW5lX2xpbmsgWyAiWyIg
Il0iICIoIiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQorICAgICAoZnVs
bF9yZWZlcmVuY2VfbGluayBbICJbIiAiXSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1p
dGVyKQorICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93
bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChzaG9ydGN1dF9saW5rIFsgIlsiICJdIiBd
IEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChpbWFnZSBbICIhIiAiWyIg
Il0iICIoIiAiKSIgXSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkKIAogICAgOmxh
bmd1YWdlICdtYXJrZG93bgogICAgOmZlYXR1cmUgJ2hlYWRpbmcKLSAgICcoKGF0eF9oZWFkaW5n
IChhdHhfaDFfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMQotICAgICAoYXR4X2hlYWRp
bmcgKGF0eF9oMl9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy0yCi0gICAgIChhdHhfaGVh
ZGluZyAoYXR4X2gzX21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTMKLSAgICAgKGF0eF9o
ZWFkaW5nIChhdHhfaDRfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNAotICAgICAoYXR4
X2hlYWRpbmcgKGF0eF9oNV9tYXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy01Ci0gICAgIChh
dHhfaGVhZGluZyAoYXR4X2g2X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTYKLSAgICAg
KHNldGV4dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtc2V0ZXh0LWhlYWRpbmcpCisgICAnKCgoYXR4
X2hlYWRpbmcpICAgIEBtYXJrZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKQorICAgICAoKHNldGV4
dF9oZWFkaW5nKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaGVhZGluZykpCiAKICAgIDpsYW5ndWFn
ZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdoZWFkaW5nCkBAIC0xOTQsMTYgKzEzMTAsMzQgQEAg
bWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgKGF0eF9oM19tYXJrZXIpIEBtYXJr
ZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNF9tYXJrZXIpIEBtYXJrZG93
bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9oNV9tYXJrZXIpIEBtYXJrZG93bi10
cy0tZm9udGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0t
Zm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFya2VyKSBAbWFya2Rvd24tdHMtLWZv
bnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5kZXJsaW5lKSBAbWFya2Rvd24tdHMt
LWZvbnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJfdW5kZXJsaW5lKSBAbWFya2Rvd24t
dHMtLWZvbnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVh
dHVyZSAncGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJlYWspIEBtYXJrZG93bi10cy1kZWxp
bWl0ZXIpCi0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykgQGZvbnQtbG9jay1zdHJpbmctZmFj
ZSkKKyAgICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGlj
LWJyZWFrKQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93bi10cy1odG1sLWJsb2NrKQorICAg
ICAoKGluZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2Nr
KQogICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFyKSBAbWFya2Rvd24tdHMtbGlzdC1t
YXJrZXIpCiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX3BsdXMpIEBtYXJrZG93bi10cy1s
aXN0LW1hcmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfbWludXMpIEBtYXJrZG93
bi10cy1saXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJfZG90KSBAbWFy
a2Rvd24tdHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3Qp
IEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAobGlzdF9tYXJrZXJf
cGFyZW50aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxpc3RfaXRlbSAo
dGFza19saXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2Jv
eCkKKyAgICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl9jaGVja2VkKSBAbWFya2Rvd24t
dHMtLWZvbnRpZnktY2hlY2tib3gpCisgICAgIChwaXBlX3RhYmxlX2hlYWRlciAifCIgQG1hcmtk
b3duLXRzLXRhYmxlLWhlYWRlcikKKyAgICAgKHBpcGVfdGFibGVfaGVhZGVyIChwaXBlX3RhYmxl
X2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisgICAgIChwaXBlX3RhYmxlX3JvdyAi
fCIgQG1hcmtkb3duLXRzLXRhYmxlLWRlbGltaXRlci1jZWxsKQorICAgICAocGlwZV90YWJsZV9y
b3cgKHBpcGVfdGFibGVfY2VsbCkgQG1hcmtkb3duLXRzLXRhYmxlLWNlbGwpCisgICAgIChwaXBl
X3RhYmxlX2RlbGltaXRlcl9yb3cgInwiIEBtYXJrZG93bi10cy10YWJsZS1kZWxpbWl0ZXItY2Vs
bCkKKyAgICAgKGxpbmtfcmVmZXJlbmNlX2RlZmluaXRpb24KKyAgICAgIChsaW5rX2xhYmVsKSBA
bWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwpCisgICAgIChsaW5rX3JlZmVyZW5j
ZV9kZWZpbml0aW9uCisgICAgICAobGlua19kZXN0aW5hdGlvbikgQG1hcmtkb3duLXRzLS1mb250
aWZ5LWxpbmstcmVmLWRlc3RpbmF0aW9uKQorICAgICAobGlua19yZWZlcmVuY2VfZGVmaW5pdGlv
bgorICAgICAgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uKQorICAg
ICAocGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3RhYmxlX2RlbGltaXRlcl9jZWxsKSBA
bWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwpKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtk
b3duCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBoCkBAIC0yMTcsODQgKzEzNTEsOTkyIEBAIG1hcmtk
b3duLXRzLS10cmVlc2l0LXNldHRpbmdzCiAgICAgICAoYmxvY2tfcXVvdGVfbWFya2VyKSBAbWFy
a2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCiAgICAgICAocGFyYWdyYXBoIChpbmxpbmUgKGJs
b2NrX2NvbnRpbnVhdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikpKSkKIAor
ICAgOmxhbmd1YWdlICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ3BhcmFncmFwaAorICAgOm92ZXJy
aWRlICdhcHBlbmQKKyAgICcoKGZlbmNlZF9jb2RlX2Jsb2NrCisgICAgICAoaW5mb19zdHJpbmcg
KGxhbmd1YWdlKSkKKyAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBtYXJrZG93bi10cy0tZm9u
dGlmeS1ub24tdHMtY29kZS1ibG9jaykpCisKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24KKyAgIDpm
ZWF0dXJlICdwYXJhZ3JhcGgKKyAgIDpvdmVycmlkZSAnYXBwZW5kCisgICAnKChmZW5jZWRfY29k
ZV9ibG9jayAoY29kZV9mZW5jZV9jb250ZW50KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktY29kZS1i
bG9jaykpCisKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6b3ZlcnJpZGUgJ2Fw
cGVuZAogICAgOmZlYXR1cmUgJ3BhcmFncmFwaC1pbmxpbmUKLSAgICcoKChpbWFnZV9kZXNjcmlw
dGlvbikgQGxpbmspCi0gICAgICgobGlua19kZXN0aW5hdGlvbikgQGZvbnQtbG9jay1zdHJpbmct
ZmFjZSkKLSAgICAgKChjb2RlX3NwYW4pIEBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAnKCgo
bGlua19kZXN0aW5hdGlvbikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstZGVzdGluYXRpb24p
CisgICAgICgoY29kZV9zcGFuKSBAbWFya2Rvd24tdHMtY29kZS1zcGFuKQogICAgICAoKGNvZGVf
c3Bhbl9kZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCi0gICAgICgo
ZW1waGFzaXMpIEBpdGFsaWMpCi0gICAgICgoc3Ryb25nX2VtcGhhc2lzKSBAYm9sZCkKLSAgICAg
KGlubGluZV9saW5rIChsaW5rX3RleHQpIEBsaW5rKQotICAgICAoaW5saW5lX2xpbmsgKGxpbmtf
ZGVzdGluYXRpb24pIEBmb250LWxvY2stc3RyaW5nLWZhY2UpCi0gICAgIChzaG9ydGN1dF9saW5r
IChsaW5rX3RleHQpIEBsaW5rKSkKKyAgICAgKChlbXBoYXNpcykgQG1hcmtkb3duLXRzLWVtcGhh
c2lzKQorICAgICAoKHN0cm9uZ19lbXBoYXNpcykgQG1hcmtkb3duLXRzLWJvbGQpCisgICAgICgo
c3RyaWtldGhyb3VnaCkgQG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2gpCisgICAgIChpbmxpbmVf
bGluayAobGlua190ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAo
ZnVsbF9yZWZlcmVuY2VfbGluayAobGlua190ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGlu
ay1ub2RlKQorICAgICAoZnVsbF9yZWZlcmVuY2VfbGluayAobGlua19sYWJlbCkgQG1hcmtkb3du
LXRzLS1mb250aWZ5LWxpbmstbm9kZSkKKyAgICAgKGNvbGxhcHNlZF9yZWZlcmVuY2VfbGluayAo
bGlua190ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoc2hvcnRj
dXRfbGluayAobGlua190ZXh0KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAg
ICAoaW1hZ2UgKGltYWdlX2Rlc2NyaXB0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1u
b2RlKQorICAgICAoKHVyaV9hdXRvbGluaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5r
KQorICAgICAoKGVtYWlsX2F1dG9saW5rKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmsp
CisgICAgIChpbmxpbmVfbGluayAobGlua190aXRsZSkgQG1hcmtkb3duLXRzLWxpbmstZGVzdGlu
YXRpb24pCisgICAgICgoYmFja3NsYXNoX2VzY2FwZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWJh
Y2tzbGFzaC1lc2NhcGUpCisgICAgICgoZW50aXR5X3JlZmVyZW5jZSkgQG1hcmtkb3duLXRzLS1m
b250aWZ5LWVudGl0eSkKKyAgICAgKChudW1lcmljX2NoYXJhY3Rlcl9yZWZlcmVuY2UpIEBtYXJr
ZG93bi10cy0tZm9udGlmeS1lbnRpdHkpCisgICAgICgoaHRtbF90YWcpIEBtYXJrZG93bi10cy1o
dG1sLXRhZykKKyAgICAgKChoYXJkX2xpbmVfYnJlYWspIEBtYXJrZG93bi10cy0tZm9udGlmeS1o
YXJkLWxpbmUtYnJlYWspCisgICAgICgobGF0ZXhfYmxvY2spIEBtYXJrZG93bi10cy0tZm9udGlm
eS1sYXRleC1ibG9jaykpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6ZmVh
dHVyZSAncGFyYWdyYXBoLWlubGluZQogICAgOm92ZXJyaWRlICdhcHBlbmQKICAgICcoKGVtcGhh
c2lzX2RlbGltaXRlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKLSAgICkpCiAK
LTs7OyBJbWVudQorICAgOmxhbmd1YWdlICdtYXJrZG93bi1pbmxpbmUKKyAgIDpmZWF0dXJlICdp
bWFnZS1wcmV2aWV3CisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoaW1hZ2UpIEBtYXJrZG93
bi10cy0tZm9udGlmeS1pbWFnZSkpKQorCis7OzsgSW1lbnU6CiAKLShkZWZ1biBtYXJrZG93bi10
cy1pbWVudS1ub2RlLXAgKG5vZGUpCisoZGVmdW4gbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmct
bm9kZS1wIChub2RlKQogICAiQ2hlY2sgaWYgTk9ERSBpcyBhIHZhbGlkIGVudHJ5IHRvIGltZW51
LiIKLSAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSAodHJlZXNpdC1ub2RlLXBhcmVudCBub2Rl
KSkKLSAgICAgICAgICJhdHhfaGVhZGluZyIpKQorICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2Rl
LXR5cGUgbm9kZSkgImlubGluZSIpCisgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSAo
dHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgImF0eF9oZWFkaW5nIikp
KQogCi0oZGVmdW4gbWFya2Rvd24tdHMtaW1lbnUtbmFtZS1mdW5jdGlvbiAobm9kZSkKKyhkZWZ1
biBtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uIChub2RlKQogICAiUmV0
dXJuIGFuIGltZW51IGVudHJ5IGlmIE5PREUgaXMgYSB2YWxpZCBoZWFkZXIuIgogICAobGV0ICgo
bmFtZSAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkpKQotICAgIChpZiAobWFya2Rvd24tdHMtaW1l
bnUtbm9kZS1wIG5vZGUpCi0JKHRocmVhZC1maXJzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2Rl
KSAodHJlZXNpdC1ub2RlLXRleHQpKQorICAgIChpZiAobWFya2Rvd24tdHMtLWltZW51LWhlYWRp
bmctbm9kZS1wIG5vZGUpCisgICAgICAgIChjYXIgKHNwbGl0LXN0cmluZyAodHJlZXNpdC1ub2Rl
LXRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcGFyZW50IG5v
ZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iIHQgIiAiKSkKICAgICAgIG5hbWUp
KSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLW91dGxpbmUtcHJlZGljYXRlIChub2RlKQotICAiTWF0
Y2ggYSBoaWVyYXJjaGljYWwgc2VjdGlvbiB0aGF0IGhhcyBhIGhlYWRpbmcuIgorKGRlZnVuIG1h
cmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5vZGUtcCAobm9kZSkKKyAgIkNoZWNrIGlmIE5P
REUgaXMgYW4gaW5mb19zdHJpbmcgd2l0aCBkZXNjcmlwdGl2ZSB0ZXh0IGFmdGVyIHRoZSBsYW5n
dWFnZS4iCisgIChhbmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiaW5mb19zdHJp
bmciKQorICAgICAgICh3aGVuLWxldCogKChsYW5nLW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRy
ZWUgbm9kZSAibGFuZ3VhZ2UiKSkKKyAgICAgICAgICAgICAgICAgICAoKDwgKHRyZWVzaXQtbm9k
ZS1lbmQgbGFuZy1ub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVu
ZCBub2RlKSkpKQorICAgICAgICAgKG5vdCAoc3RyaW5nLWJsYW5rLXAKKyAgICAgICAgICAgICAg
IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAodHJlZXNp
dC1ub2RlLWVuZCBsYW5nLW5vZGUpCisgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQg
bm9kZSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5hbWUt
ZnVuY3Rpb24gKG5vZGUpCisgICJSZXR1cm4gYW4gaW1lbnUgZW50cnkgbmFtZSBmb3IgYSBjb2Rl
IGJsb2NrIGluZm9fc3RyaW5nIE5PREUuCitVc2VzIHRoZSBkZXNjcmlwdGl2ZSB0ZXh0IGFmdGVy
IHRoZSBsYW5ndWFnZSBuYW1lLiIKKyAgKHdoZW4tbGV0KiAoKGxhbmctbm9kZSAodHJlZXNpdC1z
ZWFyY2gtc3VidHJlZSBub2RlICJsYW5ndWFnZSIpKQorICAgICAgICAgICAgICAoZGVzYyAoc3Ry
aW5nLXRyaW0KKyAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3Bl
cnRpZXMKKyAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBsYW5nLW5vZGUp
CisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKSkpCisgICAg
KGZvcm1hdCAiJXM6ICVzIiAodHJlZXNpdC1ub2RlLXRleHQgbGFuZy1ub2RlKSBkZXNjKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGluZS1wcmVkaWNhdGUgKG5vZGUpCisgICJNYXRjaCBO
T0RFIGlmIGl0IGlzIGEgaGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIK
ICAgKGFuZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJzZWN0aW9uIikKICAgICAg
ICAod2hlbi1sZXQqICgoY2hpbGQgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKICAgICAg
ICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJhdHhfaGVhZGluZyIpKSkpCiAK
LTs7OyBDb2RlIGJsb2NrcwotCi0oZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1jb25maWd1cmVk
LWxhbmd1YWdlcyBuaWwKLSAgIkEgbGlzdCBvZiBsYW5ndWFnZXMgdGhhdCBoYXZlIGJlZW4gc2V0
dXAgaW4gdGhpcyBidWZmZXIuCi0KLVdoZW4gYSBjb2RlIGJsb2NrIG9mIGEgbGFuZ3VhZ2UgYXBw
ZWFycywgYG1hcmtkb3duLXRzLW1vZGUnIGxvYWRzCi1sYW5ndWFnZSBzZXR1cHMgbGlrZSBmb250
LWxvY2sgYW5kIGluZGVudGF0aW9uIGZvciB0aGF0IGxhbmd1YWdlLCBhbmQKLWFkZHMgdGhhdCBs
YW5ndWFnZSB0byB0aGlzIGxpc3QuIikKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKKworKGRl
ZmNvbnN0IG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11
bSBBVFggaGVhZGluZyBsZXZlbCBpbiBNYXJrZG93biAoaDEtaDYpLgorRGVmaW5lZCBieSB0aGUg
Q29tbW9uTWFyayBzcGVjIGFuZCB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iKQorCisoZGVmdW4g
bWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgYXR4X2hlYWRp
bmcgbm9kZSBhdCBvciBiZWZvcmUgcG9pbnQsIG9yIG5pbC4iCisgICh3aGVuLWxldCogKChub2Rl
ICh0cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkKKyAgICAoaWYgKGVxdWFsICh0
cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiYXR4X2hlYWRpbmciKQorICAgICAgICBub2RlCisgICAg
ICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICBub2RlIChsYW1iZGEgKG4pIChlcXVhbCAo
dHJlZXNpdC1ub2RlLXR5cGUgbikgImF0eF9oZWFkaW5nIikpKSkpKQorCisoZGVmdW4gbWFya2Rv
d24tdHMtLWhlYWRpbmctbGV2ZWwgKGhlYWRpbmcpCisgICJSZXR1cm4gdGhlIGxldmVsIG9mIEhF
QURJTkcgbm9kZSAoMSB0byBgbWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCcp
LiIKKyAgKGxldCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGhlYWRpbmcgMCkpKQorICAg
IChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0KSkpKQorCisoZGVmdW4gbWFya2Rv
d24tdHMtLXNlY3Rpb24tYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgc2VjdGlvbiBub2RlIGNv
bnRhaW5pbmcgcG9pbnQuIgorICAod2hlbi1sZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0IChw
b2ludCkgJ21hcmtkb3duKSkpCisgICAgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgIG5vZGUg
KGxhbWJkYSAobikgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAic2VjdGlvbiIpKSkpKQor
CisoZGVmdW4gbWFya2Rvd24tdHMtcHJvbW90ZSAoKQorICAiUHJvbW90ZSB0aGUgaGVhZGluZyBv
ciBsaXN0IGl0ZW0gYXQgcG9pbnQuCitGb3IgaGVhZGluZ3MsIGRlY3JlYXNlIHRoZSBsZXZlbCAo
ZS5nLiwgIyMgdG8gIykuCitGb3IgbGlzdCBpdGVtcywgZGVjcmVhc2UgbmVzdGluZyAoZGVkZW50
KS4KK1dpdGggYHRyYW5zaWVudC1tYXJrLW1vZGUnIG9uIGFuZCBtYXJrIGFjdGl2ZSwgcHJvbW90
ZSBhbGwKK2hlYWRpbmdzIGluIHRoZSByZWdpb24uIgorICAoaW50ZXJhY3RpdmUpCisgIChjb25k
CisgICAoKGFuZCB0cmFuc2llbnQtbWFyay1tb2RlIG1hcmstYWN0aXZlKQorICAgIChtYXJrZG93
bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uIC0xKSkKKyAgICgobWFya2Rvd24tdHMtLWxp
c3QtaXRlbS1hdC1wb2ludCkKKyAgICAobWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1v
dGUgbmlsKSkKKyAgICh0IChtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUgLTEpKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy1kZW1vdGUgKCkKKyAgIkRlbW90ZSB0aGUgaGVhZGluZyBvciBs
aXN0IGl0ZW0gYXQgcG9pbnQuCitGb3IgaGVhZGluZ3MsIGluY3JlYXNlIHRoZSBsZXZlbCAoZS5n
LiwgIyB0byAjIykuCitGb3IgbGlzdCBpdGVtcywgaW5jcmVhc2UgbmVzdGluZyAoaW5kZW50KS4K
K1dpdGggYHRyYW5zaWVudC1tYXJrLW1vZGUnIG9uIGFuZCBtYXJrIGFjdGl2ZSwgZGVtb3RlIGFs
bCBoZWFkaW5ncworaW4gdGhlIHJlZ2lvbi4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGNvbmQKKyAg
ICgoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCisgICAgKG1hcmtkb3duLXRz
LS1wcm9tb3RlLW9yLWRlbW90ZS1yZWdpb24gMSkpCisgICAoKG1hcmtkb3duLXRzLS1saXN0LWl0
ZW0tYXQtcG9pbnQpCisgICAgKG1hcmtkb3duLXRzLS1saXN0LXByb21vdGUtb3ItZGVtb3RlIHQp
KQorICAgKHQgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSAxKSkpKQorCisoZGVmdW4g
bWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlIChkZWx0YSkKKyAgIkNoYW5nZSB0aGUgaGVh
ZGluZyBhdCBwb2ludCBieSBERUxUQSBsZXZlbHMuCitOZWdhdGl2ZSBERUxUQSBwcm9tb3RlcyAo
ZmV3ZXIgIyksIHBvc2l0aXZlIGRlbW90ZXMgKG1vcmUgIykuCitJZiB0aGUgaGVhZGluZyBoYXMg
YW4gb3B0aW9uYWwgdHJhaWxpbmcgY2xvc2luZy1gIycgc2VxdWVuY2UsIHRoYXQKK3NlcXVlbmNl
IGlzIHJlc2l6ZWQgdG8gbWF0Y2ggdGhlIG5ldyBsZXZlbC4iCisgICh3aGVuLWxldCogKChoZWFk
aW5nIChtYXJrZG93bi10cy0taGVhZGluZy1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChtYXJr
ZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBoZWFkaW5nIDApKQorICAgICAgICAgICAgICAobGV2ZWwg
KGxlbmd0aCAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQpKSkKKyAgICAgICAgICAgICAgKG5l
dy1sZXZlbCAoKyBsZXZlbCBkZWx0YSkpKQorICAgICh3aGVuIChhbmQgKD49IG5ldy1sZXZlbCAx
KQorICAgICAgICAgICAgICAgKDw9IG5ldy1sZXZlbCBtYXJrZG93bi10cy0tcGFyc2VyLWhlYWRp
bmctbWF4LWxldmVsKSkKKyAgICAgIChsZXQqICgob3BlbmVyLWJlZyAodHJlZXNpdC1ub2RlLXN0
YXJ0IG1hcmtlcikpCisgICAgICAgICAgICAgKG9wZW5lci1lbmQgKHRyZWVzaXQtbm9kZS1lbmQg
bWFya2VyKSkKKyAgICAgICAgICAgICAobGluZS1lbmQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAg
ICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgIDs7IERldGVjdCBh
IENvbW1vbk1hcmsgY2xvc2luZy1gIycgc2VxdWVuY2U6IG9wdGlvbmFsCisgICAgICAgICAgICAg
OzsgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYSBydW4gb2YgYCMnLCBhbmQgYXQgbGVhc3Qgb25lCisg
ICAgICAgICAgICAgOzsgc3BhY2UvdGFiIGJldHdlZW4gaXQgYW5kIHRoZSBoZWFkaW5nIHRleHQu
CisgICAgICAgICAgICAgKGNsb3NlciAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg
ICAgICAgKGdvdG8tY2hhciBsaW5lLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHNraXAt
Y2hhcnMtYmFja3dhcmQgIiBcdCIgb3BlbmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
KGxldCAoKGVuZCAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy
cy1iYWNrd2FyZCAiIyIgb3BlbmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0
ICgoYmVnIChwb2ludCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAo
PCBiZWcgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPiBiZWcg
b3BlbmVyLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEg
KGNoYXItYmVmb3JlIGJlZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyg/XHMgP1x0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGJl
ZyBlbmQpKSkpKSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIDs7IFJlc2l6
ZSB0aGUgY2xvc2VyIGZpcnN0IHNvIGl0IGRvZXNuJ3Qgc2hpZnQgdGhlIG9wZW5lci4KKyAgICAg
ICAgICAod2hlbiBjbG9zZXIKKyAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChjYXIgY2xvc2Vy
KSAoY2RyIGNsb3NlcikpCisgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgY2xvc2VyKSkKKyAg
ICAgICAgICAgIChpbnNlcnQgKG1ha2Utc3RyaW5nIG5ldy1sZXZlbCA/IykpKQorICAgICAgICAg
IChkZWxldGUtcmVnaW9uIG9wZW5lci1iZWcgb3BlbmVyLWVuZCkKKyAgICAgICAgICAoZ290by1j
aGFyIG9wZW5lci1iZWcpCisgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbmV3LWxldmVs
ID8jKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3RlLXJlZ2lv
biAoZGVsdGEpCisgICJDaGFuZ2UgYWxsIGhlYWRpbmdzIGluIHRoZSBhY3RpdmUgcmVnaW9uIGJ5
IERFTFRBIGxldmVscy4KK05lZ2F0aXZlIERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRp
dmUgZGVtb3RlcyAobW9yZSAjKS4iCisgIChsZXQgKChiZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQor
ICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkpCisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAo
Z290by1jaGFyIGJlZykKKyAgICAgICh3aGlsZSAoPCAocG9pbnQpIGVuZCkKKyAgICAgICAgKHdo
ZW4gKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50KQorICAgICAgICAgIChtYXJrZG93bi10
cy0tcHJvbW90ZS1vci1kZW1vdGUgZGVsdGEpKQorICAgICAgICAoZm9yd2FyZC1saW5lIDEpKSkp
KQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwICgpCisgICJNb3ZlIHRoZSBj
dXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIHVwIHBhc3QgdGhlIHByZXZpb3VzIHNpYmxpbmcu
IgorICAoaW50ZXJhY3RpdmUpCisgIChpZiAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2lu
dCkKKyAgICAgIChtYXJrZG93bi10cy0tbGlzdC1tb3ZlIHQpCisgICAgKG1hcmtkb3duLXRzLS1t
b3ZlLXN1YnRyZWUtdXAtb3ItZG93biB0KSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy0taGFydmVz
dC10cmVlc2l0LWNvbmZpZ3MgKG1vZGUpCi0gICJIYXJ2ZXN0IHRyZWUtc2l0dGVyIGNvbmZpZ3Mg
ZnJvbSBNT0RFLgotUmV0dXJuIGEgcGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZh
bHVlOgorKGRlZnVuIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duICgpCisgICJNb3ZlIHRo
ZSBjdXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIGRvd24gcGFzdCB0aGUgbmV4dCBzaWJsaW5n
LiIKKyAgKGludGVyYWN0aXZlKQorICAoaWYgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9p
bnQpCisgICAgICAobWFya2Rvd24tdHMtLWxpc3QtbW92ZSBuaWwpCisgICAgKG1hcmtkb3duLXRz
LS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93biBuaWwpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1z
ZWN0aW9uLWZvbGRlZC1wIChzZWN0aW9uKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgU0VDVElPTidz
IGhlYWRpbmcgaXMgZm9sZGVkLgorQ2hlY2tzIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgaGVhZGlu
ZyBsaW5lIGhhcyBhbiBvdXRsaW5lCitpbnZpc2libGUgb3ZlcmxheS4iCisgIChsZXQgKChoZWFk
aW5nICh0cmVlc2l0LW5vZGUtY2hpbGQgc2VjdGlvbiAwKSkpCisgICAgKHdoZW4gKGFuZCBoZWFk
aW5nCisgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGhlYWRpbmcpICJh
dHhfaGVhZGluZyIpKQorICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgIChnb3RvLWNoYXIg
KHRyZWVzaXQtbm9kZS1zdGFydCBoZWFkaW5nKSkKKyAgICAgICAgKG91dGxpbmUtaW52aXNpYmxl
LXAgKHBvcy1lb2wpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAt
b3ItZG93biAodXApCisgICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gc3VidHJlZS4KK0lmIFVQ
IGlzIG5vbi1uaWwsIG1vdmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1v
dmUgZG93bi4KK1ByZXNlcnZlcyB0aGUgZm9sZGluZyBzdGF0ZSBvZiBib3RoIHNlY3Rpb25zLiIK
KyAgKHdoZW4tbGV0KiAoKHNlY3Rpb24gKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KSkK
KyAgICAgICAgICAgICAgKHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBzZWN0aW9uKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIHNlY3Rpb24pKSkpCisgICAgKHdoZW4g
KGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBzaWJsaW5nKSAic2VjdGlvbiIpCisgICAgICAobGV0
KiAoKGZpcnN0IChpZiB1cCBzaWJsaW5nIHNlY3Rpb24pKQorICAgICAgICAgICAgIChzZWNvbmQg
KGlmIHVwIHNlY3Rpb24gc2libGluZykpCisgICAgICAgICAgICAgKGZpcnN0LWZvbGRlZCAobWFy
a2Rvd24tdHMtLXNlY3Rpb24tZm9sZGVkLXAgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQt
Zm9sZGVkIChtYXJrZG93bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBzZWNvbmQpKQorICAgICAgICAg
ICAgIChmaXJzdC1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IGZpcnN0KSkKKyAgICAgICAgICAg
ICAoc2Vjb25kLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgc2Vjb25kKSkKKyAgICAgICAgICAg
ICAoc2Vjb25kLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBzZWNvbmQpKQorICAgICAgICAgICAgIDs7
IEV4dHJhY3Qgc2VwYXJhdG9yIGJldHdlZW4gaXRlbXMgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Uu
CisgICAgICAgICAgICAgKGZpcnN0LXJhdyAoYnVmZmVyLXN1YnN0cmluZyBmaXJzdC1zdGFydCBz
ZWNvbmQtc3RhcnQpKQorICAgICAgICAgICAgIChmaXJzdC10ZXh0IChzdHJpbmctdHJpbS1yaWdo
dCBmaXJzdC1yYXcpKQorICAgICAgICAgICAgIChzZXBhcmF0b3IgKHN1YnN0cmluZyBmaXJzdC1y
YXcgKGxlbmd0aCBmaXJzdC10ZXh0KSkpCisgICAgICAgICAgICAgKHNlY29uZC1yYXcgKGJ1ZmZl
ci1zdWJzdHJpbmcgc2Vjb25kLXN0YXJ0IHNlY29uZC1lbmQpKQorICAgICAgICAgICAgIChzZWNv
bmQtdGV4dCAoc3RyaW5nLXRyaW0tcmlnaHQgc2Vjb25kLXJhdykpCisgICAgICAgICAgICAgKHRy
YWlsaW5nIChzdWJzdHJpbmcgc2Vjb25kLXJhdyAobGVuZ3RoIHNlY29uZC10ZXh0KSkpCisgICAg
ICAgICAgICAgKGNvbCAoY3VycmVudC1jb2x1bW4pKQorICAgICAgICAgICAgIChsaW5lLW9mZnNl
dCAoLSAobGluZS1udW1iZXItYXQtcG9zIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChsaW5lLW51bWJlci1hdC1wb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBzZWN0aW9uKSkp
KSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gZmlyc3Qtc3RhcnQgc2Vjb25kLWVuZCkKKyAgICAg
ICAgKGdvdG8tY2hhciBmaXJzdC1zdGFydCkKKyAgICAgICAgKGluc2VydCBzZWNvbmQtdGV4dCBz
ZXBhcmF0b3IgZmlyc3QtdGV4dCB0cmFpbGluZykKKyAgICAgICAgOzsgUmVzdG9yZSBmb2xkaW5n
IHN0YXRlCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgZmly
c3Qtc3RhcnQpCisgICAgICAgICAgKHdoZW4gKG91dGxpbmUtb24taGVhZGluZy1wKQorICAgICAg
ICAgICAgKGlmIHNlY29uZC1mb2xkZWQKKyAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXN1
YnRyZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNob3ctc3VidHJlZSkpKQorICAgICAgICAg
IChvdXRsaW5lLW5leHQtaGVhZGluZykKKyAgICAgICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFk
aW5nLXApCisgICAgICAgICAgICAoaWYgZmlyc3QtZm9sZGVkCisgICAgICAgICAgICAgICAgKG91
dGxpbmUtaGlkZS1zdWJ0cmVlKQorICAgICAgICAgICAgICAob3V0bGluZS1zaG93LXN1YnRyZWUp
KSkpCisgICAgICAgIChnb3RvLWNoYXIgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAgIGZp
cnN0LXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAoKyBmaXJzdC1zdGFydCAobGVuZ3RoIHNl
Y29uZC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCBzZXBhcmF0b3IpKSkp
CisgICAgICAgIChmb3J3YXJkLWxpbmUgbGluZS1vZmZzZXQpCisgICAgICAgIChtb3ZlLXRvLWNv
bHVtbiBjb2wpKSkpKQorCis7OzsgTGlzdCBtYW5pcHVsYXRpb246CisKKyhkZWZ1biBtYXJrZG93
bi10cy10b2dnbGUtY2hlY2tib3ggKCkKKyAgIlRvZ2dsZSB0aGUgdGFzayBsaXN0IGNoZWNrYm94
IG9uIHRoZSBjdXJyZW50IGxpbmUuCitTd2l0Y2hlcyBiZXR3ZWVuIGBbIF0nIGFuZCBgW3hdJy4i
CisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4tbGV0KiAoKHBvcyAoc2F2ZS1leGN1cnNpb24gKGJh
Y2stdG8taW5kZW50YXRpb24pIChwb2ludCkpKQorICAgICAgICAgICAgICAobm9kZSAodHJlZXNp
dC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1w
YXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0
X2l0ZW0iKSkpKSkKKyAgICAod2hlbi1sZXQqICgobWFya2VyIChzZXEtZmluZAorICAgICAgICAg
ICAgICAgICAgICAgICAgIChsYW1iZGEgKGNoaWxkKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG1lbWJlciAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcoInRhc2tfbGlzdF9tYXJrZXJfY2hlY2tlZCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAidGFza19saXN0X21hcmtlcl91bmNoZWNrZWQiKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBpdGVtKSkp
KQorICAgICAgKGxldCAoKGJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpCisgICAgICAg
ICAgICAoZW5kICh0cmVlc2l0LW5vZGUtZW5kIG1hcmtlcikpCisgICAgICAgICAgICAoY2hlY2tl
ZCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidGFza19saXN0X21hcmtlcl9jaGVja2VkIikpKQorICAgICAgICAoc2F2ZS1leGN1
cnNpb24KKyAgICAgICAgICAoZ290by1jaGFyIGJlZykKKyAgICAgICAgICAoZGVsZXRlLXJlZ2lv
biBiZWcgZW5kKQorICAgICAgICAgIChpbnNlcnQgKGlmIGNoZWNrZWQgIlsgXSIgIlt4XSIpKSkp
KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50ICgpCisgICJSZXR1
cm4gdGhlIGlubmVybW9zdCBsaXN0X2l0ZW0gbm9kZSBjb250YWluaW5nIHBvaW50LCBvciBuaWwu
CitVc2VzIHRoZSBwb3NpdGlvbiBhZnRlciBgYmFjay10by1pbmRlbnRhdGlvbicgc28gdGhhdCBw
b2ludCBpbgorYSBsaW5lJ3MgbGVhZGluZyB3aGl0ZXNwYWNlIHJlc29sdmVzIHRvIHRoZSBpdGVt
IG9uIHRoYXQgbGluZSwKK25vdCB0byBhIHByZWNlZGluZyBpdGVtIHdob3NlIG5vZGUgc3BhbnMg
dGhlIHdoaXRlc3BhY2UuCitJbnNpZGUgYmxvY2sgcXVvdGVzLCBhbHNvIHRyeSBmcm9tIHRoZSBj
b250ZW50IHBvc2l0aW9uIHBhc3QKK3RoZSBgPicgbWFya2Vycy4iCisgICh3aGVuLWxldCogKChw
b3MgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9pbnQpKSkKKyAgICAg
ICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duKSkKKyAgICAgICAg
ICAgICAgKGJvbCAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQorICAgICAgICAgICAgICAoZW9s
IChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgIChvciAobGV0ICgoaXRlbSAodHJlZXNpdC1wYXJl
bnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJsaXN0X2l0
ZW0iKSkpKSkKKyAgICAgICAgICA7OyBWZXJpZnkgdGhlIGN1cnJlbnQgbGluZSBpcyB3aXRoaW4g
dGhlIGl0ZW0ncyByYW5nZS4KKyAgICAgICAgICA7OyBgdHJlZXNpdC1ub2RlLWF0JyBjYW4gcmV0
dXJuIGEgbm9kZSBpbnNpZGUgYSBsaXN0X2l0ZW0KKyAgICAgICAgICA7OyBldmVuIHdoZW4gcG9p
bnQgaXMgb24gYSBwcmVjZWRpbmcgbGluZS4KKyAgICAgICAgICAod2hlbiAoYW5kIGl0ZW0KKyAg
ICAgICAgICAgICAgICAgICAgICg8PSAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pIGVvbCkKKyAg
ICAgICAgICAgICAgICAgICAgICg+PSAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSBib2wpKQorICAg
ICAgICAgICAgaXRlbSkpCisgICAgICAgIDs7IFdoZW4gYmFjay10by1pbmRlbnRhdGlvbiBsYW5k
cyBvbiBibG9jayBxdW90ZSBtYXJrZXJzLAorICAgICAgICA7OyBza2lwIHBhc3QgdGhlbSBhbmQg
dHJ5IGZyb20gdGhlIGNvbnRlbnQgcG9zaXRpb24uCisgICAgICAgIChsZXQgKChjb250ZW50LXBv
cyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmlu
Zy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3
YXJkICI+IFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQorICAg
ICAgICAgICh3aGVuICg+IGNvbnRlbnQtcG9zIHBvcykKKyAgICAgICAgICAgICh3aGVuLWxldCog
KChjbm9kZSAodHJlZXNpdC1ub2RlLWF0IGNvbnRlbnQtcG9zICdtYXJrZG93bikpKQorICAgICAg
ICAgICAgICAobGV0ICgoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChu
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBl
IG4pICJsaXN0X2l0ZW0iKSkpKSkKKyAgICAgICAgICAgICAgICAod2hlbiAoYW5kIGl0ZW0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICg8PSAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pIGVv
bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICg+PSAodHJlZXNpdC1ub2RlLWVuZCBpdGVt
KSBib2wpKQorICAgICAgICAgICAgICAgICAgaXRlbSkpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93
bi10cy0tbGlzdC1tYXJrZXItd2lkdGggKGl0ZW0pCisgICJSZXR1cm4gdGhlIHdpZHRoIG9mIElU
RU0ncyBsaXN0IG1hcmtlciBpbmNsdWRpbmcgdHJhaWxpbmcgc3BhY2UuIgorICAobGV0ICgobWFy
a2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisgICAgKC0gKHRyZWVzaXQtbm9kZS1l
bmQgbWFya2VyKSAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkKKworKGRlZnVuIG1hcmtk
b3duLXRzLS1saXN0LWl0ZW0tcmVnaW9uIChpdGVtKQorICAiUmV0dXJuIHRoZSAoQkVHIC4gRU5E
KSByZWdpb24gZm9yIElURU0sIGNsYW1wZWQgdG8gZnVsbCBsaW5lcy4KK0JFRyBzdGFydHMgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBjb250YWluaW5nIHRoZSBpdGVtLgorRU5EIGlzIGNs
YW1wZWQgc28gaXQgZG9lcyBub3QgZXh0ZW5kIGludG8gdGhlIG5leHQgbGluZSdzCitpbmRlbnRh
dGlvbiwgd2hpY2ggdHJlZS1zaXR0ZXIgbWF5IGluY2x1ZGUgaW4gdGhlIG5vZGUuIgorICAobGV0
ICgoYmVnIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNp
dC1ub2RlLXN0YXJ0IGl0ZW0pKQorICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0
aW9uKSkpCisgICAgICAgIChlbmQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAoZ290
by1jaGFyICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pKQorICAgICAgICAgICAgICAgKGlmIChib2xw
KSAocG9pbnQpIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkpCisgICAgKGNvbnMgYmVnIGVu
ZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3Qtb3JkZXJlZC1pdGVtLXAgKGl0ZW0pCisg
ICJSZXR1cm4gbm9uLW5pbCBpZiBJVEVNIGlzIGFuIG9yZGVyZWQgKG51bWJlcmVkKSBsaXN0IGl0
ZW0uIgorICAobGV0ICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkpCisgICAg
KGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBtYXJrZXIpICJsaXN0X21hcmtlcl9kb3QiKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSAoZGVtb3RlKQorICAi
Q2hhbmdlIG5lc3Rpbmcgb2YgdGhlIGxpc3QgaXRlbSBhdCBwb2ludC4KK0lmIERFTU9URSBpcyBu
b24tbmlsLCBkZW1vdGUgKGluZGVudCk7IG90aGVyd2lzZSBwcm9tb3RlIChkZWRlbnQpLgorT3Jk
ZXJlZCAobnVtYmVyZWQpIGxpc3QgaXRlbXMgYXJlIHNraXBwZWQgYmVjYXVzZSB0aGUgZ3JhbW1h
ciBkb2VzCitub3Qgc3VwcG9ydCBuZXN0aW5nIHRoZW0gYnkgaW5kZW50YXRpb24uIgorICAod2hl
bi1sZXQqICgoaXRlbSAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAg
ICAgICAgIChyZWdpb24gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tcmVnaW9uIGl0ZW0pKQorICAg
ICAgICAgICAgICAoYmVnIChjYXIgcmVnaW9uKSkKKyAgICAgICAgICAgICAgKGVuZCAoY2RyIHJl
Z2lvbikpKQorICAgICh3aGVuIChtYXJrZG93bi10cy0tbGlzdC1vcmRlcmVkLWl0ZW0tcCBpdGVt
KQorICAgICAgKHVzZXItZXJyb3IgIk9yZGVyZWQgbGlzdCBpdGVtcyBjYW5ub3QgYmUgbmVzdGVk
IChncmFtbWFyIGxpbWl0YXRpb24pIikpCisgICAgKGlmIGRlbW90ZQorICAgICAgICA7OyBEZW1v
dGU6IGluZGVudCBieSBtYXJrZXIgd2lkdGgsIG9ubHkgaWYgdGhlcmUgaXMgYSBwcmV2aW91cwor
ICAgICAgICA7OyBzaWJsaW5nIHRvIG5lc3QgdW5kZXIgKGxpa2Ugb3JnLW1vZGUpLgorICAgICAg
ICAod2hlbiAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBpdGVtKQorICAgICAgICAgIChpbmRl
bnQtcmlnaWRseSBiZWcgZW5kIChtYXJrZG93bi10cy0tbGlzdC1tYXJrZXItd2lkdGggaXRlbSkp
KQorICAgICAgOzsgUHJvbW90ZTogZGVkZW50IHRvIGdyYW5kcGFyZW50IGxldmVsLgorICAgICAg
KGxldCogKChwYXJlbnQtbGlzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBpdGVtKSkKKyAgICAgICAg
ICAgICAoZ3JhbmRwYXJlbnQgKGFuZCBwYXJlbnQtbGlzdCAodHJlZXNpdC1ub2RlLXBhcmVudCBw
YXJlbnQtbGlzdCkpKQorICAgICAgICAgICAgIChpdGVtLWNvbCAoc2F2ZS1leGN1cnNpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJlZykgKGN1cnJlbnQtaW5kZW50YXRp
b24pKSkpCisgICAgICAgICh3aGVuIChhbmQgZ3JhbmRwYXJlbnQKKyAgICAgICAgICAgICAgICAg
ICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGdyYW5kcGFyZW50KSAibGlzdF9pdGVtIikKKyAg
ICAgICAgICAgICAgICAgICAoPiBpdGVtLWNvbCAwKSkKKyAgICAgICAgICAobGV0ICgoZ3AtY29s
IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0
cmVlc2l0LW5vZGUtc3RhcnQgZ3JhbmRwYXJlbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY3VycmVudC1pbmRlbnRhdGlvbikpKSkKKyAgICAgICAgICAgIChpbmRlbnQtcmlnaWRseSBi
ZWcgZW5kICgtIGdwLWNvbCBpdGVtLWNvbCkpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t
bGlzdC1ub2RlLWJvbCAobm9kZSkKKyAgIlJldHVybiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5l
IGNvbnRhaW5pbmcgTk9ERSdzIHN0YXJ0LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8t
Y2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgIChsaW5lLWJlZ2lubmluZy1wb3Np
dGlvbikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3QtbW92ZSAodXApCisgICJNb3ZlIHRo
ZSBsaXN0IGl0ZW0gYXQgcG9pbnQuCitJZiBVUCBpcyBub24tbmlsLCBtb3ZlIHBhc3QgdGhlIHBy
ZXZpb3VzIHNpYmxpbmc7IG90aGVyd2lzZSBtb3ZlIGRvd24uIgorICAod2hlbi1sZXQqICgoaXRl
bSAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChzaWJs
aW5nIChpZiB1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wcmV2
LXNpYmxpbmcgaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLW5l
eHQtc2libGluZyBpdGVtKSkpKQorICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUg
c2libGluZykgImxpc3RfaXRlbSIpCisgICAgICAobGV0KiAoKGZpcnN0IChpZiB1cCBzaWJsaW5n
IGl0ZW0pKQorICAgICAgICAgICAgIChzZWNvbmQgKGlmIHVwIGl0ZW0gc2libGluZykpCisgICAg
ICAgICAgICAgKGZpcnN0LXN0YXJ0IChtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCBmaXJzdCkp
CisgICAgICAgICAgICAgKHNlY29uZC1zdGFydCAobWFya2Rvd24tdHMtLWxpc3Qtbm9kZS1ib2wg
c2Vjb25kKSkKKyAgICAgICAgICAgICAoc2Vjb25kLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBzZWNv
bmQpKQorICAgICAgICAgICAgIDs7IEV4dHJhY3Qgc2VwYXJhdG9yIGJldHdlZW4gaXRlbXMgYW5k
IHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICAgICAgKGZpcnN0LXJhdyAoYnVmZmVyLXN1
YnN0cmluZyBmaXJzdC1zdGFydCBzZWNvbmQtc3RhcnQpKQorICAgICAgICAgICAgIChmaXJzdC10
ZXh0IChzdHJpbmctdHJpbS1yaWdodCBmaXJzdC1yYXcpKQorICAgICAgICAgICAgIChzZXBhcmF0
b3IgKHN1YnN0cmluZyBmaXJzdC1yYXcgKGxlbmd0aCBmaXJzdC10ZXh0KSkpCisgICAgICAgICAg
ICAgKHNlY29uZC1yYXcgKGJ1ZmZlci1zdWJzdHJpbmcgc2Vjb25kLXN0YXJ0IHNlY29uZC1lbmQp
KQorICAgICAgICAgICAgIChzZWNvbmQtdGV4dCAoc3RyaW5nLXRyaW0tcmlnaHQgc2Vjb25kLXJh
dykpCisgICAgICAgICAgICAgKHRyYWlsaW5nIChzdWJzdHJpbmcgc2Vjb25kLXJhdyAobGVuZ3Ro
IHNlY29uZC10ZXh0KSkpCisgICAgICAgICAgICAgKGNvbCAoY3VycmVudC1jb2x1bW4pKQorICAg
ICAgICAgICAgIChsaW5lLW9mZnNldCAoLSAobGluZS1udW1iZXItYXQtcG9zIChwb2ludCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLW51bWJlci1hdC1wb3MKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkpKSkpCisgICAg
ICAgIChkZWxldGUtcmVnaW9uIGZpcnN0LXN0YXJ0IHNlY29uZC1lbmQpCisgICAgICAgIChnb3Rv
LWNoYXIgZmlyc3Qtc3RhcnQpCisgICAgICAgIChpbnNlcnQgc2Vjb25kLXRleHQgc2VwYXJhdG9y
IGZpcnN0LXRleHQgdHJhaWxpbmcpCisgICAgICAgIChnb3RvLWNoYXIgKGlmIHVwCisgICAgICAg
ICAgICAgICAgICAgICAgIGZpcnN0LXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAoKyBmaXJz
dC1zdGFydCAobGVuZ3RoIHNlY29uZC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgKGxl
bmd0aCBzZXBhcmF0b3IpKSkpCisgICAgICAgIChmb3J3YXJkLWxpbmUgbGluZS1vZmZzZXQpCisg
ICAgICAgIChtb3ZlLXRvLWNvbHVtbiBjb2wpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtcmVu
dW1iZXItbGlzdCAoJm9wdGlvbmFsIHN0YXJ0KQorICAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlz
dCBhdCBwb2ludC4KK051bWJlcnMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBm
cm9tIHRoZSBmaXJzdCBpdGVtJ3MKK251bWJlci4gIFdpdGggYSBwcmVmaXggYXJndW1lbnQgU1RB
UlQsIHN0YXJ0IG51bWJlcmluZyBmcm9tIHRoYXQKK3ZhbHVlIGluc3RlYWQuICBEb2VzIG5vdGhp
bmcgZm9yIHVub3JkZXJlZCBsaXN0cy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxl
dCogKChpdGVtIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAg
ICAgKGxpc3Qtbm9kZSAodHJlZXNpdC1ub2RlLXBhcmVudCBpdGVtKSkpCisgICAgKHdoZW4gKGVx
dWFsICh0cmVlc2l0LW5vZGUtdHlwZSBsaXN0LW5vZGUpICJsaXN0IikKKyAgICAgIChsZXQqICgo
Y2hpbGRyZW4gKHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBsaXN0LW5vZGUpKQorICAgICAgICAgICAg
IChpdGVtcyAoc2VxLWZpbHRlciAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbikpCisgICAgICAgICAgICAgKGZp
cnN0LW1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIChjYXIgaXRlbXMpIDApKQorICAgICAgICAg
ICAgIChtYXJrZXItdHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgZmlyc3QtbWFya2VyKSkpCisgICAg
ICAgICh3aGVuIChtZW1iZXIgbWFya2VyLXR5cGUgJygibGlzdF9tYXJrZXJfZG90IiAibGlzdF9t
YXJrZXJfcGFyZW50aGVzaXMiKSkKKyAgICAgICAgICAobGV0KiAoKGJhc2UgKGlmIHN0YXJ0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocHJlZml4LW51bWVyaWMtdmFsdWUgc3RhcnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1iZXIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGZpcnN0LW1hcmtlciB0KSkpKQorICAgICAg
ICAgICAgICAgICAoY291bnQgKGxlbmd0aCBpdGVtcykpCisgICAgICAgICAgICAgICAgIDs7IFN0
YXJ0IGZyb20gdGhlIGxhc3QgbnVtYmVyIGFuZCB3b3JrIGJhY2t3YXJkcyBzbworICAgICAgICAg
ICAgICAgICA7OyB0aGF0IGVhcmxpZXIgYnVmZmVyIHBvc2l0aW9ucyByZW1haW4gdmFsaWQuCisg
ICAgICAgICAgICAgICAgIChudW0gKCsgYmFzZSBjb3VudCAtMSkpKQorICAgICAgICAgICAgKGRv
bGlzdCAoaXQgKHJldmVyc2UgaXRlbXMpKQorICAgICAgICAgICAgICAobGV0KiAoKG1hcmtlciAo
dHJlZXNpdC1ub2RlLWNoaWxkIGl0IDApKQorICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1l
bmQgKHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAgICAgICAgICAgICAgICAgIChib2wg
KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAo
dHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBGdWxs
IHRleHQgZnJvbSBib2wgdG8gZW5kIG9mIG1hcmtlciBpbmNsdWRlcworICAgICAgICAgICAgICAg
ICAgICAgOzsgYW55IGxlYWRpbmcgd2hpdGVzcGFjZSwgdGhlIG51bWJlciwgYW5kIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgOzsgc2VwYXJhdG9yIChlLmcuLCAiLiAiIG9yICIuXHQiKS4KKyAg
ICAgICAgICAgICAgICAgICAgIChmdWxsLXRleHQgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVy
dGllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sIG1hcmtlci1lbmQpKQor
ICAgICAgICAgICAgICAgICAgICAgKGluZGVudC1zdHIKKyAgICAgICAgICAgICAgICAgICAgICAo
aWYgKHN0cmluZy1tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYFxcKFtbOmJs
YW5rOl1dKlxcKVswLTldIiBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICht
YXRjaC1zdHJpbmcgMSBmdWxsLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAiIikpCisg
ICAgICAgICAgICAgICAgICAgICAoc3VmZml4LXN0cgorICAgICAgICAgICAgICAgICAgICAgIChp
ZiAoc3RyaW5nLW1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgW1s6Ymxhbms6
XV0qWzAtOV0rXFwoLipcXClcXCciIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG1hdGNoLXN0cmluZyAxIGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICIu
ICIpKQorICAgICAgICAgICAgICAgICAgICAgKG5ldy10ZXh0IChjb25jYXQgaW5kZW50LXN0cgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bWJlci10by1zdHJpbmcg
bnVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LXN0cikp
KQorICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgKGRl
bGV0ZS1yZWdpb24gYm9sIG1hcmtlci1lbmQpCisgICAgICAgICAgICAgICAgICAoZ290by1jaGFy
IGJvbCkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgbmV3LXRleHQpKSkKKyAgICAgICAgICAg
ICAgKGNsLWRlY2YgbnVtKSkKKyAgICAgICAgICAgIChtZXNzYWdlICJSZW51bWJlcmVkICVkIGl0
ZW1zIiBjb3VudCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1h
cmtlciAoaXRlbSkKKyAgIlJldHVybiB0aGUgbWFya2VyIHN0cmluZyBmb3IgYSBuZXcgaXRlbSBm
b2xsb3dpbmcgSVRFTS4KK0ZvciB1bm9yZGVyZWQgaXRlbXMsIHJldXNlIHRoZSBzYW1lIG1hcmtl
ciBjaGFyYWN0ZXIuCitGb3Igb3JkZXJlZCBpdGVtcywgaW5jcmVtZW50IHRoZSBudW1iZXIuIgor
ICAobGV0KiAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpCisgICAgICAgICAo
dHlwZSAodHJlZXNpdC1ub2RlLXR5cGUgbWFya2VyKSkKKyAgICAgICAgIChpbmRlbnQgKHNhdmUt
ZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0
YXJ0IGl0ZW0pKQorICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWluZGVudGF0aW9uKSkpCisg
ICAgICAgICAocHJlZml4IChtYWtlLXN0cmluZyBpbmRlbnQgP1xzKSkpCisgICAgKHBjYXNlIHR5
cGUKKyAgICAgICgibGlzdF9tYXJrZXJfbWludXMiIChjb25jYXQgcHJlZml4ICItICIpKQorICAg
ICAgKCJsaXN0X21hcmtlcl9wbHVzIiAgKGNvbmNhdCBwcmVmaXggIisgIikpCisgICAgICAoImxp
c3RfbWFya2VyX3N0YXIiICAoY29uY2F0IHByZWZpeCAiKiAiKSkKKyAgICAgICgibGlzdF9tYXJr
ZXJfZG90IgorICAgICAgIChsZXQgKChudW0gKHN0cmluZy10by1udW1iZXIgKHRyZWVzaXQtbm9k
ZS10ZXh0IG1hcmtlciB0KSkpKQorICAgICAgICAgKGNvbmNhdCBwcmVmaXggKG51bWJlci10by1z
dHJpbmcgKDErIG51bSkpICIuICIpKSkKKyAgICAgICgibGlzdF9tYXJrZXJfcGFyZW50aGVzaXMi
CisgICAgICAgKGxldCAoKG51bSAoc3RyaW5nLXRvLW51bWJlciAodHJlZXNpdC1ub2RlLXRleHQg
bWFya2VyIHQpKSkpCisgICAgICAgICAoY29uY2F0IHByZWZpeCAobnVtYmVyLXRvLXN0cmluZyAo
MSsgbnVtKSkgIikgIikpKQorICAgICAgKF8gKGNvbmNhdCBwcmVmaXggIi0gIikpKSkpCisKKyhk
ZWZ1biBtYXJrZG93bi10cy0tbmV3LW1hcmtlci1mb3ItbGluZSAoaXRlbSkKKyAgIlJldHVybiB0
aGUgbWFya2VyIHN0cmluZyBmb3IgYSBuZXcgaXRlbSBmb2xsb3dpbmcgSVRFTS4KK1doZW4gdGhl
IGN1cnJlbnQgbGluZSBoYXMgYSBsaXN0IG1hcmtlciBwYXR0ZXJuIGF0IGEgZGlmZmVyZW50Citp
bmRlbnRhdGlvbiB0aGFuIElURU0gKGUuZy4sIGEgbmVzdGVkIG1hcmtlciB0aGF0IHRoZSBncmFt
bWFyIGRpZAorbm90IHJlY29nbml6ZSBhcyBhIGxpc3RfaXRlbSksIHVzZSB0aGUgY3VycmVudCBs
aW5lJ3MgbWFya2VyLgorT3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG8gYG1hcmtkb3duLXRzLS1saXN0
LWl0ZW0tbmV3LW1hcmtlcicuIgorICAobGV0ICgobWFya2VyLW5vZGUgKHRyZWVzaXQtbm9kZS1j
aGlsZCBpdGVtIDApKSkKKyAgICAoaWYgKD0gKGxpbmUtbnVtYmVyLWF0LXBvcykKKyAgICAgICAg
ICAgIChsaW5lLW51bWJlci1hdC1wb3MgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXItbm9kZSkp
KQorICAgICAgICA7OyBJdGVtJ3MgbWFya2VyIGlzIG9uIHRoZSBjdXJyZW50IGxpbmU6IHVzZSBp
dCBub3JtYWxseS4KKyAgICAgICAgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciBp
dGVtKQorICAgICAgOzsgSXRlbSdzIG1hcmtlciBpcyBvbiBhIGRpZmZlcmVudCBsaW5lLiAgVGhl
IHBhcnNlciBtYXkgaGF2ZQorICAgICAgOzsgZmFpbGVkIHRvIHJlY29nbml6ZSBhIG5lc3RlZCBt
YXJrZXIgKGUuZy4sIGEgbG9uZSBgICAtICcKKyAgICAgIDs7IHBhcnNlZCBhcyBhIHNldGV4dCBo
ZWFkaW5nKS4gIFJlYWQgdGhlIGN1cnJlbnQgbGluZS4KKyAgICAgIChsZXQgKChsaW5lIChidWZm
ZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgICAobGluZS1iZWdp
bm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKKyAgICAgICAgKGlmIChzdHJp
bmctbWF0Y2gKKyAgICAgICAgICAgICAiXFxgXFwoW1s6Ymxhbms6XV0qXFwpXFwoWy0qK10gXFx8
XFwoWzAtOV0rXFwpXFwoWy4pXSBcXClcXCkiCisgICAgICAgICAgICAgbGluZSkKKyAgICAgICAg
ICAgIChsZXQgKChpbmRlbnQgKG1hdGNoLXN0cmluZyAxIGxpbmUpKQorICAgICAgICAgICAgICAg
ICAgKG51bSAobWF0Y2gtc3RyaW5nIDMgbGluZSkpCisgICAgICAgICAgICAgICAgICAoc3VmZml4
IChtYXRjaC1zdHJpbmcgNCBsaW5lKSkKKyAgICAgICAgICAgICAgICAgICh1bm9yZGVyZWQgKG1h
dGNoLXN0cmluZyAyIGxpbmUpKSkKKyAgICAgICAgICAgICAgKGlmIG51bQorICAgICAgICAgICAg
ICAgICAgKGNvbmNhdCBpbmRlbnQgKG51bWJlci10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoMSsgKHN0cmluZy10by1udW1iZXIgbnVtKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAoY29uY2F0IGluZGVudCB1
bm9yZGVyZWQpKSkKKyAgICAgICAgICA7OyBObyBtYXJrZXIgcGF0dGVybiBvbiBjdXJyZW50IGxp
bmU6IHVzZSBpdGVtJ3MgbWFya2VyLgorICAgICAgICAgIChtYXJrZG93bi10cy0tbGlzdC1pdGVt
LW5ldy1tYXJrZXIgaXRlbSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpbmUtYmxvY2st
cXVvdGUtZGVwdGggKCZvcHRpb25hbCBwb3MpCisgICJDb3VudCB0aGUgbnVtYmVyIG9mIGA+JyBi
bG9jayBxdW90ZSBtYXJrZXJzIG9uIHRoZSBsaW5lIGF0IFBPUy4iCisgIChzYXZlLWV4Y3Vyc2lv
bgorICAgICh3aGVuIHBvcyAoZ290by1jaGFyIHBvcykpCisgICAgKGJlZ2lubmluZy1vZi1saW5l
KQorICAgIChsZXQgKChjb3VudCAwKSkKKyAgICAgICh3aGlsZSAoYW5kIChub3QgKGVvbHApKQor
ICAgICAgICAgICAgICAgICAgKG1lbXEgKGNoYXItYWZ0ZXIpICcoPz4gP1xzID9cdCkpKQorICAg
ICAgICAod2hlbiAoZXEgKGNoYXItYWZ0ZXIpID8+KQorICAgICAgICAgIChzZXRxIGNvdW50ICgx
KyBjb3VudCkpKQorICAgICAgICAoZm9yd2FyZC1jaGFyIDEpKQorICAgICAgY291bnQpKSkKKwor
KGRlZnVuIG1hcmtkb3duLXRzLW5ld2xpbmUgKCkKKyAgIkluc2VydCBhIG5ld2xpbmUsIGNvbnRp
bnVpbmcgdGhlIGN1cnJlbnQgY29udGV4dC4KK0luc2lkZSBhIGxpc3QgaXRlbSwgdGhlIG5ldyBs
aW5lIGlzIGluZGVudGVkIHRvIHRoZSBpdGVtJ3MgdGV4dAorY29sdW1uIHNvIHRoZSBwYXJhZ3Jh
cGggY29udGludWVzLiAgQSBzZWNvbmQgUkVUIG9uIGEgYmxhbmsKK2NvbnRpbnVhdGlvbiBsaW5l
IHJlbW92ZXMgdGhlIGluZGVudGF0aW9uLCBkcm9wcGluZyBwb2ludCB0bworY29sdW1uIDAgc28g
dGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgZW5kcyB0aGUgbGlzdC4KK0luc2lkZSBhIGJsb2NrIHF1
b3RlLCB0aGUgbmV3IGxpbmUgaW5jbHVkZXMgdGhlIHF1b3RlIHByZWZpeC4KK090aGVyd2lzZSwg
aW5zZXJ0IGEgcGxhaW4gbmV3bGluZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChub2Rl
ICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2st
dG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkKKyAg
ICAgICAgIDs7IFRyZWUtc2l0dGVyIG1heSByZXBvcnQgYSBub2RlIGluc2lkZSBhIGJsb2NrX3F1
b3RlIGV2ZW4KKyAgICAgICAgIDs7IHdoZW4gcG9pbnQgaXMgb24gYSBibGFuayBsaW5lIHBhc3Qg
dGhlIHF1b3RlICh0aGUgbm9kZQorICAgICAgICAgOzsgc3BhbiBjYW4gZXh0ZW5kIGJleW9uZCB0
aGUgYD4nIGxpbmVzKS4gIE9ubHkgdHJlYXQgdGhlCisgICAgICAgICA7OyBsaW5lIGFzIGluc2lk
ZSBhIGJsb2NrIHF1b3RlIGlmIGl0IGFjdHVhbGx5IHN0YXJ0cyB3aXRoCisgICAgICAgICA7OyBh
IGA+JyBtYXJrZXIuCisgICAgICAgICAoaW4tYnEgKGFuZCAodHJlZXNpdC1wYXJlbnQtdW50aWwg
bm9kZSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhj
dXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQtcCAiWyBcdF0qPiIpKSkpCisgICAgICAgICAo
aXRlbSAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChjb25kCisgICAg
IChpdGVtCisgICAgICAobGV0KiAoKGNvbCAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS10ZXh0LWNv
bHVtbiBpdGVtKSkKKyAgICAgICAgICAgICAoYnEtcHJlZml4ICh3aGVuIGluLWJxIChtYXJrZG93
bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkpCisgICAgICAgICAgICAgOzsgYGNvbCcgaXMgdGhl
IGFic29sdXRlIGNvbHVtbiBvZiB0aGUgaXRlbSdzIHRleHQsCisgICAgICAgICAgICAgOzsgd2hp
Y2ggaW5zaWRlIGEgYmxvY2sgcXVvdGUgaW5jbHVkZXMgdGhlICI+ICIgcHJlZml4CisgICAgICAg
ICAgICAgOzsgd2lkdGguICBTaW5jZSB3ZSBpbnNlcnQgYGJxLXByZWZpeCcgc2VwYXJhdGVseSwg
d2UKKyAgICAgICAgICAgICA7OyBtdXN0IHN1YnRyYWN0IGl0cyBsZW5ndGggdG8gYXZvaWQgZG91
YmxpbmcgaXQuCisgICAgICAgICAgICAgKGluZGVudCAoLSBjb2wgKGxlbmd0aCAob3IgYnEtcHJl
Zml4ICIiKSkpKQorICAgICAgICAgICAgIDs7IFRoZSBjdXJyZW50IGxpbmUgaXMgImJsYW5rIiBp
ZiBpdCBjb250YWlucyBvbmx5CisgICAgICAgICAgICAgOzsgd2hpdGVzcGFjZSAob3IgcXVvdGUg
cHJlZml4ICsgd2hpdGVzcGFjZSkgYW5kIG5vCisgICAgICAgICAgICAgOzsgYWN0dWFsIHRleHQg
ZnJvbSBhIHByZXZpb3VzIFJFVCdzIGNvbnRpbnVhdGlvbiBpbmRlbnQuCisgICAgICAgICAgICAg
KGJsYW5rLWxpbmUtcCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9v
a2luZy1hdC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXls+IFx0XSokIikpKQor
ICAgICAgICAgICAgIDs7IFBvaW50IGlzIGJlZm9yZSB0aGUgaXRlbSdzIHRleHQgKGF0IG9yIGJl
Zm9yZSB0aGUKKyAgICAgICAgICAgICA7OyBtYXJrZXIpLiAgQSBwbGFpbiBuZXdsaW5lIGlzIGFw
cHJvcHJpYXRlIGhlcmUsIGFkZGluZworICAgICAgICAgICAgIDs7IGNvbnRpbnVhdGlvbiBpbmRl
bnQgd291bGQgc2hpZnQgdGhlIGV4aXN0aW5nIGNvbnRlbnQKKyAgICAgICAgICAgICA7OyB0byB0
aGUgcmlnaHQuCisgICAgICAgICAgICAgKGJlZm9yZS10ZXh0LXAgKDw9IChjdXJyZW50LWNvbHVt
bikgY29sKSkpCisgICAgICAgIChjb25kCisgICAgICAgICAoYmxhbmstbGluZS1wCisgICAgICAg
ICAgOzsgVGhlIHVzZXIgcHJlc3NlZCBSRVQgb24gYW4gYWxyZWFkeS1ibGFuayBjb250aW51YXRp
b24KKyAgICAgICAgICA7OyBsaW5lLiAgSW5zdGVhZCBvZiBhZGRpbmcgeWV0IGFub3RoZXIgaW5k
ZW50ZWQgYmxhbmsKKyAgICAgICAgICA7OyBsaW5lLCByZW1vdmUgdGhlIGluZGVudGF0aW9uIGFu
ZCBpbnNlcnQgYSBwbGFpbgorICAgICAgICAgIDs7IG5ld2xpbmUuICBUaGlzIGRyb3BzIHBvaW50
IHRvIGNvbHVtbiAwLCB3aGljaCBpcyB0aGUKKyAgICAgICAgICA7OyBvbmx5IHdheSB0aGUgdHJl
ZS1zaXR0ZXIgbWFya2Rvd24gZ3JhbW1hciBlbmRzIGEgbGlzdDoKKyAgICAgICAgICA7OyBibGFu
ayBsaW5lcyBhbG9uZSBkbyBOT1QgZW5kIGEgbGlzdCwgb25seQorICAgICAgICAgIDs7IG5vbi1p
bmRlbnRlZCBjb250ZW50IGRvZXMuICBTbyB0aGlzIGdpdmVzIHRoZSB1c2VyIGEKKyAgICAgICAg
ICA7OyBuYXR1cmFsICJSRVQgUkVUIHRvIGV4aXQgdGhlIGxpc3QiIHdvcmtmbG93LgorICAgICAg
ICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBv
c2l0aW9uKSkKKyAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAoYmVmb3JlLXRleHQtcAor
ICAgICAgICAgIDs7IFBvaW50IGlzIG9uIG9yIGJlZm9yZSB0aGUgbGlzdCBtYXJrZXI7IGp1c3Qg
aW5zZXJ0IGEKKyAgICAgICAgICA7OyBwbGFpbiBuZXdsaW5lIHNvIHRoZSBpdGVtIGlzIHB1c2hl
ZCBkb3duIHVuY2hhbmdlZC4KKyAgICAgICAgICAobmV3bGluZSkpCisgICAgICAgICAodAorICAg
ICAgICAgIChkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGluZSkKKyAg
ICAgICAgICAod2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAgICAgIChp
bnNlcnQgKG1ha2Utc3RyaW5nIGluZGVudCA/XHMpKSkpKSkKKyAgICAgKGluLWJxCisgICAgICAo
bGV0ICgoYnEtcHJlZml4IChtYXJrZG93bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KSkKKyAgICAg
ICAgICAgIDs7IEEgbGluZSB3aXRoIG9ubHkgcXVvdGUgbWFya2VycyBhbmQgd2hpdGVzcGFjZSAo
ZS5nLiwKKyAgICAgICAgICAgIDs7ICI+ICIpIGlzICJibGFuayIgaW5zaWRlIHRoZSBxdW90ZS4g
IFJFVCBoZXJlIGV4aXRzIHRoZQorICAgICAgICAgICAgOzsgcXVvdGUsIHNhbWUgYXMgUkVUIG9u
IGEgYmxhbmsgY29udGludWF0aW9uIGxpbmUgZXhpdHMgYQorICAgICAgICAgICAgOzsgbGlzdDog
cmVtb3ZlIHRoZSBwcmVmaXggYW5kIGRyb3AgdG8gY29sdW1uIDAuCisgICAgICAgICAgICAoYmxh
bmstbGluZS1wIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
ZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1h
dC1wICJeWz4gXHRdKiQiKSkpKQorICAgICAgICAoaWYgYmxhbmstbGluZS1wCisgICAgICAgICAg
ICAocHJvZ24KKyAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5uaW5nLXBv
c2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAgICAgICAgICAobmV3bGluZSkpCisg
ICAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQorICAgICAgICAgIChuZXdsaW5lKQor
ICAgICAgICAgIChpbnNlcnQgYnEtcHJlZml4KSkpKQorICAgICA7OyBEZWZhdWx0OiBwbGFpbiBu
ZXdsaW5lLiAgVGhpcyBhbHNvIGhhbmRsZXMgZW1wdHkgbGlzdCBtYXJrZXJzCisgICAgIDs7IChl
LmcuLCAiLSAiIHdpdGggbm8gdGV4dCkgdGhhdCB0aGUgZ3JhbW1hciBwYXJzZXMgYXMgRVJST1IK
KyAgICAgOzsgbm9kZXMgcmF0aGVyIHRoYW4gbGlzdF9pdGVtIG5vZGVzLgorICAgICA7OworICAg
ICA7OyBXaGVuIHRoZSBjdXJyZW50IGxpbmUgaXMgYmxhbmsgKHdoaXRlc3BhY2Ugb25seSksIGl0
IGlzIGEKKyAgICAgOzsgY29udGludWF0aW9uLWluZGVudCBsaW5lIGxlZnQgYnkgYSBwcmV2aW91
cyBSRVQgdGhhdAorICAgICA7OyB0cmVlLXNpdHRlciBubyBsb25nZXIgY29uc2lkZXJzIHBhcnQg
b2YgYSBsaXN0X2l0ZW0uICBDbGVhcgorICAgICA7OyB0aGUgd2hpdGVzcGFjZSBzbyBubyB0cmFp
bGluZyBzcGFjZXMgcmVtYWluLCBhbmQgaW5zZXJ0IGEKKyAgICAgOzsgcGxhaW4gbmV3bGluZSBh
dCBjb2x1bW4gMCB0byBleGl0IHRoZSBsaXN0IGNvbnRleHQuCisgICAgICh0CisgICAgICAod2hl
biAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAg
ICAgICAgICAgICAobG9va2luZy1hdC1wICJeWyBcdF0rJCIpKQorICAgICAgICAoZGVsZXRlLXJl
Z2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAg
ICAgKG5ld2xpbmUpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbSAo
KQorICAiSW5zZXJ0IGEgbmV3IGxpc3QgaXRlbSwgc3BsaXR0aW5nIHRleHQgYXQgcG9pbnQuCitU
ZXh0IGFmdGVyIHBvaW50IG1vdmVzIHRvIHRoZSBuZXcgaXRlbS4gIEF0IHRoZSBiZWdpbm5pbmcg
b2YgYSBsaW5lLAorYW4gZW1wdHkgaXRlbSBpcyBpbnNlcnRlZCBhYm92ZSBhbmQgdGhlIGN1cnJl
bnQgY29udGVudCBpcyBwdXNoZWQgZG93bi4KK0luc2lkZSBhIGJsb2NrIHF1b3RlLCB0aGUgbmV3
IGxpbmUgaW5jbHVkZXMgdGhlIHF1b3RlIHByZWZpeC4KK0ZvciBvcmRlcmVkIGxpc3RzLCB0aGUg
bnVtYmVyIGlzIGluY3JlbWVudGVkLgorV2hlbiBub3QgaW5zaWRlIGEgbGlzdCwgZmFsbCBiYWNr
IHRvIGBtYXJrZG93bi10cy1uZXdsaW5lJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGxldCogKChu
b2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJh
Y2stdG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgJ21hcmtkb3duKSkK
KyAgICAgICAgIChpbi1icSAoYW5kICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBibG9j
a19xdW90ZVxcJyIpCisgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAg
ICAgICAobG9va2luZy1hdC1wICJbIFx0XSo+IikpKSkKKyAgICAgICAgIChicS1wcmVmaXggKHdo
ZW4gaW4tYnEgKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKSkKKyAgICAgICAgIChp
dGVtIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkpCisgICAgKGNvbmQKKyAgICAg
KChhbmQgaXRlbQorICAgICAgICAgICAob3IgKG5vdCBpbi1icSkKKyAgICAgICAgICAgICAgICg+
PSAobWFya2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUtZGVwdGgpCisgICAgICAgICAgICAgICAg
ICAgKG1hcmtkb3duLXRzLS1saW5lLWJsb2NrLXF1b3RlLWRlcHRoCisgICAgICAgICAgICAgICAg
ICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkpKSkK
KyAgICAgIChsZXQqICgobmV3LW1hcmtlciAobWFya2Rvd24tdHMtLW5ldy1tYXJrZXItZm9yLWxp
bmUgaXRlbSkpCisgICAgICAgICAgICAgKGF0LWJvbCAoPD0gKGN1cnJlbnQtY29sdW1uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgKHRhaWwgKHdoZW4gKGFuZCAobm90
IGF0LWJvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGxvb2tpbmctYXQt
cCAiWyBcdF0qJCIpKSkKKyAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtYW5kLWV4dHJhY3Qt
cmVnaW9uCisgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24p
KSkpKQorICAgICAgICAoaWYgYXQtYm9sCisgICAgICAgICAgICA7OyBBdCBCT0w6IGluc2VydCBl
bXB0eSBpdGVtIGFib3ZlLCBwdXNoIGN1cnJlbnQgbGluZSBkb3duLgorICAgICAgICAgICAgKHBy
b2duCisgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAgICAgICAgICAgKHdo
ZW4gYnEtcHJlZml4IChpbnNlcnQgYnEtcHJlZml4KSkKKyAgICAgICAgICAgICAgKGluc2VydCBu
ZXctbWFya2VyICJcbiIpCisgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKSkKKyAg
ICAgICAgICA7OyBNaWQtbGluZSBvciBFT0w6IG5ldyBpdGVtIGJlbG93IHdpdGggdGFpbCB0ZXh0
LgorICAgICAgICAgIChkZWxldGUtaG9yaXpvbnRhbC1zcGFjZSkKKyAgICAgICAgICAobmV3bGlu
ZSkKKyAgICAgICAgICAod2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQorICAgICAg
ICAgIChpbnNlcnQgbmV3LW1hcmtlcikKKyAgICAgICAgICAod2hlbiB0YWlsIChzYXZlLWV4Y3Vy
c2lvbiAoaW5zZXJ0IChzdHJpbmctdHJpbS1sZWZ0IHRhaWwpKSkpKSkpCisKKyAgICAgOzsgTm90
IGluIGEgbGlzdDogZmFsbCBiYWNrIHRvIG5ld2xpbmUgYmVoYXZpb3IuCisgICAgICh0IChtYXJr
ZG93bi10cy1uZXdsaW5lKSkpKSkKKworOzs7IEZpbGxpbmc6CisKKyhkZWZjb25zdCBtYXJrZG93
bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICcoWyhmZW5jZWRfY29kZV9ibG9j
aykgKGluZGVudGVkX2NvZGVfYmxvY2spIChwaXBlX3RhYmxlKV0gQGJsb2NrKQorICAiVHJlZS1z
aXR0ZXIgcXVlcnkgbWF0Y2hpbmcgYmxvY2tzIHdoZXJlIGZpbGxpbmcgaXMgaW5oaWJpdGVkLiIp
CisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIChpdGVtKQorICAi
UmV0dXJuIHRoZSBjb2x1bW4gd2hlcmUgdGhlIHRleHQgb2YgbGlzdCBJVEVNIHN0YXJ0cy4KK1Ro
aXMgaXMgdGhlIGNvbHVtbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIG5vZGUgaW5zaWRlIElURU0s
IG9yCit0aGUgd2lkdGggb2YgdGhlIGxpc3QgbWFya2VyIGlmIG5vIHBhcmFncmFwaCBpcyBmb3Vu
ZC4iCisgIChsZXQgKChwYXJhZ3JhcGggKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxg
cGFyYWdyYXBoXFwnIikpKQorICAgIChpZiBwYXJhZ3JhcGgKKyAgICAgICAgKHNhdmUtZXhjdXJz
aW9uCisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IHBhcmFncmFwaCkp
CisgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKKyAgICAgIChsZXQgKChtYXJrZXIgKHRyZWVz
aXQtbm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAgICAgKC0gKHRyZWVzaXQtbm9kZS1lbmQgbWFy
a2VyKQorICAgICAgICAgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikpKSkpKQorCisoZGVm
dW4gbWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIChpdGVtIGp1c3RpZnkpCisgICJGaWxsIHRo
ZSBjb250ZW50cyBvZiBsaXN0IElURU0sIHByZXNlcnZpbmcgaXRzIGluZGVudGF0aW9uLgorTmFy
cm93cyB0byBJVEVNJ3Mgb3duIHBhcmFncmFwaCBjb250ZW50IChleGNsdWRpbmcgbmVzdGVkIGxp
c3RzKQorYW5kIHNldHMgYGZpbGwtcHJlZml4JyB0byBhbGlnbiBjb250aW51YXRpb24gbGluZXMg
d2l0aCB0aGUgc3RhcnQKK29mIHRoZSBpdGVtJ3MgdGV4dC4gIEpVU1RJRlkgaXMgYXMgaW4gYGZp
bGwtcGFyYWdyYXBoJy4iCisgIChsZXQqICgoZmlsbC1wcmVmaXggKG1ha2Utc3RyaW5nIChtYXJr
ZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID9ccykpCisgICAgICAgICA7OyBGaW5kIHRoZSBpdGVtJ3Mgb3duIHBh
cmFncmFwaCAoZmlyc3QgcGFyYWdyYXBoIGNoaWxkKS4KKyAgICAgICAgIDs7IElmIHRoZSBpdGVt
IGhhcyBuZXN0ZWQgbGlzdHMsIG5hcnJvdyB0byBqdXN0IHRoZQorICAgICAgICAgOzsgcGFyYWdy
YXBoIHNvIHdlIGRvbid0IG1lcmdlIG5lc3RlZCBpdGVtcy4KKyAgICAgICAgIChwYXJhICh0cmVl
c2l0LXNlYXJjaC1zdWJ0cmVlIGl0ZW0gIlxcYHBhcmFncmFwaFxcJyIgbmlsIG5pbCAxKSkKKyAg
ICAgICAgIChiZWcgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkKKyAgICAgICAgIChlbmQgKGlm
IHBhcmEKKyAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIHBhcmEpCisgICAgICAg
ICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpKQorICAgICAgICAgOzsgVXNlIGRlZmF1
bHQgcGFyYWdyYXBoIG1vdGlvbiBpbnNpZGUgdGhlIG5hcnJvd2VkIHJlZ2lvbgorICAgICAgICAg
Ozsgc28gdGhhdCB0aGUgaW5uZXIgYGZpbGwtcGFyYWdyYXBoJyBkb2VzIG5vdCByZS1lbnRlciBv
dXIKKyAgICAgICAgIDs7IGN1c3RvbSBwYXJhZ3JhcGgtZmluZGluZyBsb2dpYy4KKyAgICAgICAg
IChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3JhcGgpKQor
ICAgIChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQor
ICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgIDs7IFJldHVybiBub24tbmlsIHRv
IHNpZ25hbCB0aGF0IGZpbGxpbmcgaGFzIGJlZW4gaGFuZGxlZCwKKyAgICA7OyBhcyBwZXIgdGhl
IGNvbnRyYWN0IG9mIGBmaWxsLXBhcmFncmFwaC1mdW5jdGlvbicuCisgICAgdCkpCisKKyhkZWZ1
biBtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCAoKQorICAiUmV0dXJuIHRoZSBmaWxsIHByZWZp
eCBmb3IgdGhlIGN1cnJlbnQgbGluZSBpbiBNYXJrZG93bi4KK1doZW4gaW5zaWRlIGEgbGlzdCBp
dGVtLCByZXR1cm4gc3BhY2VzIG1hdGNoaW5nIHRoZSBjb2x1bW4gd2hlcmUKK3RoZSBpdGVtJ3Mg
dGV4dCBzdGFydHMuIgorICAoYW5kLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQKKyAgICAg
ICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRvLWluZGVudGF0aW9uKSAocG9p
bnQpKQorICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgICAgIChpdGVt
ICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1cXCciKSkpCisgICAgKG1h
a2Utc3RyaW5nIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pID9ccykp
KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGggKGFyZykKKyAg
Ik1vdmUgZm9yd2FyZCBieSBBUkcgcGFyYWdyYXBocywgcmVzcGVjdGluZyBNYXJrZG93biBzdHJ1
Y3R1cmUuCitMaXN0IGl0ZW1zIGFyZSB0cmVhdGVkIGFzIGluZGl2aWR1YWwgcGFyYWdyYXBocy4g
IEJsb2NrcyBtYXRjaGVkCitieSBgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1x
dWVyeScgYXJlIHNraXBwZWQ6IGJvdGgKK2ZvcndhcmQgYW5kIGJhY2t3YXJkIG1vdGlvbiBtb3Zl
IHRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrLCBzbworYGZpbGwtcmVnaW9uJyBzZWVzIGEgemVyby1s
ZW5ndGggcmVnaW9uIGFuZCBsZWF2ZXMgdGhlIGJsb2NrCit1bmZpbGxlZC4iCisgIChsZXQgKChk
aXJlY3Rpb24gKGlmICg+IGFyZyAwKSAxIC0xKSkKKyAgICAgICAgKGNvdW50IChhYnMgYXJnKSkK
KyAgICAgICAgKG1vdmVkIDApKQorICAgIChkb3RpbWVzIChfIGNvdW50KQorICAgICAgOzsgRm9y
IGJhY2t3YXJkIG1vdGlvbiwgc2tpcCBiYWNrIG92ZXIgd2hpdGVzcGFjZSB0byBmaW5kCisgICAg
ICA7OyB0aGUgaXRlbSB3ZSBhcmUgbGVhdmluZywgbm90IHRoZSBuZXh0IG9uZS4KKyAgICAgIChs
ZXQqICgocG9zIChpZiAoPCBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgICAgICAgICAoc2F2
ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJk
ICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAobWF4IChwb2ludC1taW4pICgxLSAo
cG9pbnQpKSkpCisgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChi
bG9jayAoY2FyICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHRyZWVzaXQtYnVmZmVyLXJvb3Qtbm9kZSAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zICgxKyBwb3MpKSkpCisgICAgICAgICAgICAgKGluZGVu
dGVkLXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdv
dG8tY2hhciBwb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVu
dGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKKyAgICAgICAg
ICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IGluZGVudGVkLXBvcyAnbWFya2Rvd24pKQorICAg
ICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBsaXN0X2l0ZW1c
XCciKSkpCisgICAgICAgIDs7IFdoZW4gbW92aW5nIGZvcndhcmQgZnJvbSB3aGl0ZXNwYWNlIGJl
dHdlZW4gbGlzdCBpdGVtcywKKyAgICAgICAgOzsgc2tpcCB0byB0aGUgbmV4dCBub24tYmxhbmsg
cG9zaXRpb24gYW5kIGNoZWNrIGFnYWluLgorICAgICAgICAod2hlbiAoYW5kIChub3QgaXRlbSkg
KG5vdCBibG9jaykgKD4gZGlyZWN0aW9uIDApKQorICAgICAgICAgIChsZXQgKChuZXh0LXBvcyAo
c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1m
b3J3YXJkICIgXHRcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpKQor
ICAgICAgICAgICAgKHNldHEgbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9zICdtYXJrZG93
bikpCisgICAgICAgICAgICAoc2V0cSBpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJc
XGBsaXN0X2l0ZW1cXCciKSkpKQorICAgICAgICAoY29uZAorICAgICAgICAgOzsgSW5zaWRlIGFu
IHVuZmlsbGFibGUgYmxvY2s6IHNraXAgb3ZlciBpdCBlbnRpcmVseS4KKyAgICAgICAgIChibG9j
aworICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgKGNkciBibG9jaykpKQor
ICAgICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKQorICAgICAgICAgOzsgSW5zaWRlIGEg
bGlzdCBpdGVtOiB0cmVhdCBhcyBwYXJhZ3JhcGggYm91bmRhcnkuCisgICAgICAgICAoaXRlbQor
ICAgICAgICAgIChpZiAoPiBkaXJlY3Rpb24gMCkKKyAgICAgICAgICAgICAgKGdvdG8tY2hhciAo
dHJlZXNpdC1ub2RlLWVuZCBpdGVtKSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQt
bm9kZS1zdGFydCBpdGVtKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkpCisg
ICAgICAgICA7OyBEZWZhdWx0OiB1c2Ugc3RhbmRhcmQgcGFyYWdyYXBoIG1vdGlvbi4KKyAgICAg
ICAgICh0CisgICAgICAgICAgKGZvcndhcmQtcGFyYWdyYXBoIGRpcmVjdGlvbikKKyAgICAgICAg
ICAoc2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkpKSkKKyAgICA7OyBSZXR1cm4gdGhlIG51bWJlciBv
ZiBwYXJhZ3JhcGhzIGxlZnQgdG8gbW92ZSAoMCA9IGFsbCBkb25lKS4KKyAgICAoLSBjb3VudCBt
b3ZlZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwg
anVzdGlmeSkKKyAgIkZpbGwgdGhlIGN1cnJlbnQgcGFyYWdyYXBoLCByZXNwZWN0aW5nIE1hcmtk
b3duIGJsb2NrIHN0cnVjdHVyZS4KK1RoaXMgZnVuY3Rpb24gcHJldmVudHMgZmlsbGluZyBpbnNp
ZGUgYmxvY2tzIG1hdGNoZWQgYnkKK2BtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2Nr
LXF1ZXJ5JywgYW5kIGZpbGxzIHdpdGhpbiBsaXN0CitpdGVtcyB3aXRob3V0IG1lcmdpbmcgYWRq
YWNlbnQgaXRlbXMuICBKVVNUSUZZIGlzIGFzIGluCitgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGNv
bmQqCisgICA7OyBEb24ndCBmaWxsIGluc2lkZSB1bmZpbGxhYmxlIGJsb2Nrcy4gIFVzZSBhIHF1
ZXJ5IGFnYWluc3QgdGhlCisgICA7OyByb290IG5vZGUgYmVjYXVzZSBgdHJlZXNpdC1ub2RlLWF0
JyBtYXkgbm90IHJldHVybiBhIG5vZGUKKyAgIDs7IGluc2lkZSB0aGUgYmxvY2sgd2hlbiBwb2lu
dCBpcyBvbiBhbm9ueW1vdXMgKHVubmFtZWQpIHRleHQuCisgICAoKHRyZWVzaXQtcXVlcnktY2Fw
dHVyZQorICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgbWFy
a2Rvd24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAocG9pbnQpIChtaW4g
KDErIChwb2ludCkpIChwb2ludC1tYXgpKSkKKyAgICB0KQorICAgOzsgRmlsbCB3aXRoaW4gdGhl
IGVuY2xvc2luZyBsaXN0IGl0ZW0uICBVc2UKKyAgIDs7IGBtYXJrZG93bi10cy0tbGlzdC1pdGVt
LWF0LXBvaW50JyB3aGljaCBoYW5kbGVzIGJsb2NrIHF1b3RlCisgICA7OyBtYXJrZXJzLiAgV2hl
biB0aGUgbGlzdCBpdGVtIGlzIGluc2lkZSBhIGJsb2NrIHF1b3RlLCBkZWxlZ2F0ZQorICAgOzsg
dG8gdGhlIGJsb2NrIHF1b3RlIGZpbGxlciB3aGljaCBoYW5kbGVzIGA+ICcgcHJlZml4ZXMgY29y
cmVjdGx5LgorICAgKChiaW5kLWFuZCogKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQt
cG9pbnQpKSkKKyAgICAoaWYgKHRyZWVzaXQtcGFyZW50LXVudGlsIGl0ZW0gIlxcYGJsb2NrX3F1
b3RlXFwnIikKKyAgICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkp
CisgICAgICAobWFya2Rvd24tdHMtLWZpbGwtbGlzdC1pdGVtIGl0ZW0ganVzdGlmeSkpKQorICAg
OzsgUG9pbnQgaXMgb24gYSBibGFuayBsaW5lIGJlZm9yZSBhIGxpc3QuICBJZiB0aGUgbmV4dAor
ICAgOzsgbm9uLXdoaXRlc3BhY2UgcG9zaXRpb24gZmFsbHMgaW5zaWRlIGEgbGlzdCBpdGVtLCBm
aWxsIHRoYXQgaXRlbS4KKyAgICgoc2F2ZS1leGN1cnNpb24KKyAgICAgIChiZWdpbm5pbmctb2Yt
bGluZSkKKyAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKiQiKSkKKyAgICAoYW5kLWxldCogKChu
ZXh0LXBvcyAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lw
LWNoYXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2lu
dCkpKQorICAgICAgICAgICAgICAgKG5leHQtbm9kZSAodHJlZXNpdC1ub2RlLWF0IG5leHQtcG9z
ICdtYXJrZG93bikpCisgICAgICAgICAgICAgICAoaXRlbSAodHJlZXNpdC1wYXJlbnQtdW50aWwK
KyAgICAgICAgICAgICAgICAgICAgICBuZXh0LW5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAg
ICAgIChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBG
aWxsIHdpdGhpbiBhIGJsb2NrIHF1b3RlLiAgTmFycm93IHRvIHRoZSBwYXJhZ3JhcGggbm9kZSBh
dAorICAgOzsgcG9pbnQncyBuZXN0aW5nIGxldmVsIHNvIGxpbmVzIHdpdGggZGlmZmVyZW50IGA+
ICcgZGVwdGhzCisgICA7OyBhcmUgbm90IG1lcmdlZC4KKyAgICgodHJlZXNpdC1wYXJlbnQtdW50
aWwKKyAgICAgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgKHNhdmUtZXhjdXJzaW9uIChiYWNrLXRv
LWluZGVudGF0aW9uKSAocG9pbnQpKQorICAgICAgJ21hcmtkb3duKQorICAgICAiXFxgYmxvY2tf
cXVvdGVcXCciKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSBqdXN0aWZ5KSkK
KyAgIDs7IEZpbGwgd2l0aGluIGFuIEhUTUwgY29tbWVudC4gIFRoZSBub2RlIHR5cGUgaXMgImh0
bWxfYmxvY2siCisgICA7OyBpbiBncmFtbWFyIHYwLjQueCBhbmQgImNvbW1lbnQiIGluIHNvbWUg
b3RoZXIgdmVyc2lvbnMuCisgICAoKGJpbmQtYW5kKiAoYmxvY2sgKGxldCAoKG4gKHRyZWVzaXQt
bm9kZS1hdCAocG9pbnQpICdtYXJrZG93bikpKQorICAgICAgICAgICAgICAgICAgICAgICAgKG9y
ICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICJc
XGBcXCg/Omh0bWxfYmxvY2tcXHxjb21tZW50XFwpXFwnIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoYW5kIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoImh0bWxfYmxvY2siICJjb21tZW50IikpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuKSkpKSkKKyAgICAobWFya2Rvd24tdHMt
LWZpbGwtaHRtbC1jb21tZW50IGJsb2NrIGp1c3RpZnkpKQorICAgOzsgRGVmYXVsdDogbGV0IGZp
bGwtcGFyYWdyYXBoIGhhbmRsZSBpdC4KKyAgICh0IG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24t
dHMtLWZpbGwtaHRtbC1jb21tZW50IChub2RlIGp1c3RpZnkpCisgICJGaWxsIEhUTUwgY29tbWVu
dCBOT0RFLCBhbGlnbmluZyBjb250aW51YXRpb24gbGluZXMuCitSZXR1cm4gdCBpZiBOT0RFIGlz
IGEgY29tbWVudCBhbmQgd2FzIGZpbGxlZCwgbmlsIG90aGVyd2lzZS4KK0pVU1RJRlkgaXMgYXMg
aW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg
IChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAobG9va2lu
Zy1hdC1wICI8IS0tIikpCisgICAgKGxldCAoKGZpbGwtcHJlZml4IChzYXZlLWV4Y3Vyc2lvbgor
ICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBu
b2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1zdHJpbmcgKCsgKGN1cnJlbnQt
Y29sdW1uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3Ro
ICI8IS0tICIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHMpKSkK
KyAgICAgICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgKGZpbGwt
Zm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAg
ICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgIChzYXZlLXJlc3RyaWN0aW9u
CisgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAg
IChmaWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkKKyAgICAgIHQpKSkKKworKGRlZnVuIG1hcmtkb3du
LXRzLS1ibG9jay1xdW90ZS1wcmVmaXggKCkKKyAgIlJldHVybiB0aGUgYmxvY2sgcXVvdGUgcHJl
Zml4IHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuCitSZWFkIHRoZSBhY3R1YWwgYD4nIG1h
cmtlcnMgKHdpdGggd2hhdGV2ZXIgc3BhY2luZyB0aGUgdXNlciB3cm90ZSkKK2Zyb20gdGhlIGJl
Z2lubmluZyBvZiB0aGUgbGluZSBzbyB0aGF0IGZpbGwgcHJlc2VydmVzIHRoZSBleGlzdGluZwor
c3R5bGUgKGUuZy4sIGA+Pj4gJyBzdGF5cyBgPj4+ICcsIGA+ID4gPiAnIHN0YXlzIGA+ID4gPiAn
KS4iCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgICAoaWYg
KGxvb2tpbmctYXQgIlxcKFs+IFx0XSo+XFwpWyBcdF0qIikKKyAgICAgICAgKGNvbmNhdCAobWF0
Y2gtc3RyaW5nIDApKQorICAgICAgIj4gIikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZpbGwt
YmxvY2stcXVvdGUgKGp1c3RpZnkpCisgICJGaWxsIHRoZSBwYXJhZ3JhcGggYXQgcG9pbnQgaW5z
aWRlIGEgYmxvY2sgcXVvdGUuCitGaW5kIHRoZSBwYXJhZ3JhcGggbm9kZSBhdCBwb2ludCB3aXRo
aW4gdGhlIGJsb2NrIHF1b3RlIGFuZCBmaWxsCitvbmx5IHRoYXQgcGFyYWdyYXBoLCBwcmVzZXJ2
aW5nIHRoZSBgPiAnIHByZWZpeC4gIFdoZW4gdGhlCitwYXJhZ3JhcGggaXMgaW5zaWRlIGEgbGlz
dCBpdGVtLCBhbGlnbiBjb250aW51YXRpb24gbGluZXMgd2l0aAordGhlIGl0ZW0ncyB0ZXh0IGNv
bHVtbi4gIEpVU1RJRlkgaXMgYXMgaW4gYGZpbGwtcGFyYWdyYXBoJy4iCisgIDs7IFNraXAgcGFz
dCBgPiAnIG1hcmtlcnMgYW5kIGFueSBsaXN0IG1hcmtlciB0byBsYW5kIGluc2lkZSB0aGUKKyAg
OzsgY29udGVudCwgd2hlcmUgdGhlIHBhcmFncmFwaCBub2RlIGxpdmVzLgorICAobGV0KiAoKGNv
bnRlbnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lu
bmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2Fy
ZCAiPiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBsYW5kIG9uIGEgbGlz
dCBtYXJrZXIsIHNraXAgcGFzdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChs
b29raW5nLWF0ICJbLSorXSBcXHxbMC05XStbLildXHMiKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAg
KG1pbiAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKSkKKyAgICAgICAgIChub2RlICh0cmVlc2l0
LW5vZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgIChwYXJhICh0cmVlc2l0
LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgIG5vZGUgKGxhbWJkYSAobikKKyAgICAgICAg
ICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAicGFyYWdyYXBoIikp
KSkpCisgICAgKHdoZW4gcGFyYQorICAgICAgOzsgVGhlIGdyYW1tYXIgbWF5IGluY2x1ZGUgdHJh
aWxpbmcgYmxvY2tfY29udGludWF0aW9uIG5vZGVzCisgICAgICA7OyAoYmxhbmsgYD4gPicgbGlu
ZXMpIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJhZ3JhcGguICBVc2UgdGhlCisgICAgICA7OyBlbmQg
b2YgdGhlIGxhc3QgaW5saW5lIGNoaWxkIHNvIGZpbGwgZG9lcyBub3QgbWVyZ2UgYWNyb3NzCisg
ICAgICA7OyB3aGF0IHNob3VsZCBiZSBhIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgIChsZXQq
ICgobGFzdC1pbmxpbmUKKyAgICAgICAgICAgICAgKHNlcS1maW5kIChsYW1iZGEgKGNoaWxkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxk
KSAiaW5saW5lIikpCisgICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSAodHJlZXNpdC1u
b2RlLWNoaWxkcmVuIHBhcmEpKSkpCisgICAgICAgICAgICAgKHBhcmEtZW5kIChpZiBsYXN0LWlu
bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbGFzdC1p
bmxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkp
KQorICAgICAgICAgICAgIChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVm
aXgpKQorICAgICAgICAgICAgIDs7IFdoZW4gaW5zaWRlIGEgbGlzdCBpdGVtLCBleHRlbmQgdGhl
IHByZWZpeCB3aXRoIHNwYWNlcworICAgICAgICAgICAgIDs7IHNvIGNvbnRpbnVhdGlvbiBsaW5l
cyBhbGlnbiB3aXRoIHRoZSBpdGVtJ3MgdGV4dC4KKyAgICAgICAgICAgICAobGlzdC1pdGVtICh0
cmVlc2l0LXBhcmVudC11bnRpbCBwYXJhICJcXGBsaXN0X2l0ZW1cXCciKSkKKyAgICAgICAgICAg
ICAocHJlZml4IChpZiBsaXN0LWl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0KiAo
KHRleHQtY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1pdGVtKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGV4dHJhIChtYXggMCAoLSB0ZXh0LWNvbCAobGVuZ3RoIGJx
LXByZWZpeCkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJxLXByZWZp
eCAobWFrZS1zdHJpbmcgZXh0cmEgP1xzKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGJxLXBy
ZWZpeCkpCisgICAgICAgICAgICAgKGFkYXB0aXZlLWZpbGwtZnVuY3Rpb24gbmlsKQorICAgICAg
ICAgICAgIChmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uICMnZm9yd2FyZC1wYXJhZ3Jh
cGgpCisgICAgICAgICAgICAgKGZpbGwtcGFyYWdyYXBoLWZ1bmN0aW9uIG5pbCkpCisgICAgICAg
IChzYXZlLXJlc3RyaWN0aW9uCisgICAgICAgICAgOzsgTmFycm93IHRvIHRoZSBmdWxsIGxpbmVz
IG9mIHRoZSBwYXJhZ3JhcGggc28gdGhhdCB0aGUKKyAgICAgICAgICA7OyBgPiAnIG1hcmtlcnMg
YXJlIGluY2x1ZGVkIGluIHRoZSBmaWxsIHJlZ2lvbi4KKyAgICAgICAgICAobmFycm93LXRvLXJl
Z2lvbgorICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAoZ290by1jaGFy
ICh0cmVlc2l0LW5vZGUtc3RhcnQgcGFyYSkpCisgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1s
aW5lKQorICAgICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgIHBhcmEtZW5kKQorICAgICAg
ICAgIChsZXQgKChmaWxsLXByZWZpeCBwcmVmaXgpKQorICAgICAgICAgICAgKGZpbGwtcGFyYWdy
YXBoIGp1c3RpZnkpKSkpKSkKKyAgdCkKKworOzs7IENvZGUgYmxvY2tzOgorCisoZGVmdmFyLWxv
Y2FsIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcyBuaWwKKyAgIkFsaXN0IG1hcHBp
bmcgbGFuZ3VhZ2Ugbm9kZSBuYW1lcyB0byB0cyBsYW5ndWFnZS4KK0lmIGEgbGFuZ3VhZ2UgaXMg
bm90IGEgdHMgbGFuZ3VhZ2Ugb3IgaXMgbm90IG1hcHBlZCB0byBvbmUsIGl0IHdpbGwgYmUKK2lu
IGBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMnLiIpCisKKyhkZWZ2YXItbG9j
YWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzIG5pbAorICAiQWxpc3QgbWFw
cGluZyBsYW5ndWFnZXMgdG8gbm9uLXRyZWUtc2l0dGVyIG1vZGVzIGZvciBjb2RlIGJsb2Nrcy4K
K1BvcHVsYXRlZCBieSBgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHRvIGlk
ZW50aWZ5IGEKK2NvZGUtYmxvY2sgbGFuZ3VhZ2UgbW9kZSB3aGljaCBpcyBub3QgYSB0cmVlLXNp
dHRlciBtb2RlIG9yIGZvciB3aGljaAordGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgaXMgdW5hdmFp
bGFibGUuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25m
aWd1cmF0aW9uIChtb2RlKQorICAiSGFydmVzdCB0cmVlLXNpdHRlciBjb25maWd1cmF0aW9uIGZy
b20gTU9ERS4KK1JldHVybiBhIHBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1
ZXM6CiAKICAgICA6Zm9udC1sb2NrIChmcm9tIGB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncycp
CiAgICAgOnNpbXBsZS1pbmRlbnQgKGZyb20gYHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcycp
CiAgICAgOnJhbmdlIChmcm9tIGB0cmVlc2l0LXJhbmdlLXNldHRpbmdzJykiCiAgICh3aXRoLXRl
bXAtYnVmZmVyCi0gICAgKGZ1bmNhbGwgbW9kZSkKLSAgICAobGlzdCA6Zm9udC1sb2NrIHRyZWVz
aXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgKGRlbGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgbW9k
ZSkpCisgICAgKGxpc3QgOmxhbmd1YWdlICh0cmVlc2l0LWxhbmd1YWdlLWF0IChwb2ludC1taW4p
KQorICAgICAgICAgIDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKICAgICAg
ICAgICA6c2ltcGxlLWluZGVudCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKICAgICAgICAg
ICA6cmFuZ2UgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncykpKQogCi0oZGVmdW4gbWFya2Rvd24tdHMt
LWFkZC1jb25maWctZm9yLW1vZGUgKGxhbmd1YWdlIG1vZGUpCi0gICJBZGQgY29uZmlndXJhdGlv
bnMgZm9yIExBTkdVQUdFIGZyb20gTU9ERSB0byBjdXJyZW50IGJ1ZmZlci4KLQotQ29uZmlndXJh
dGlvbiBpbmNsdWRlcyBmb250LWxvY2sgYW5kIGluZGVudC4gIEZvciBmb250LWxvY2sgcnVsZXMs
IHVzZQotdGhlIHNhbWUgZmVhdHVyZXMgZW5hYmxlZCBpbiBNT0RFLiIKLSAgKGxldCAoKGNvbmZp
Z3MgKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyBtb2RlKSkpCi0gICAgKGln
bm9yZSBsYW5ndWFnZSkgOyBXZSBtaWdodCBtYWtlIHVzZSBvZiB0aGlzIGxhdGVyLgotICAgIChz
ZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgKGFwcGVuZCB0cmVlc2l0
LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgOzsgR2V0IGFsbCB0aGUgZm9u
dC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0Ci0gICAgICAgICAgICAgICAgICA7
OyBkb24ndCBwZXJ0YWluIHRvIExBTkdVQUdFLiAgVGhpcyB3YXkgd2UgZ2V0IGpzZG9jCi0gICAg
ICAgICAgICAgICAgICA7OyBmcm9tIGpzLXRzLW1vZGUsIGZvciBleGFtcGxlLgotICAgICAgICAg
ICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpmb250LWxvY2spKSkKLSAgICAoc2V0cSB0cmVl
c2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKLSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtc2ltcGxl
LWluZGVudC1ydWxlcwotICAgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQgYWxsIGlu
ZGVudCBydWxlcy4KLSAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlncyA6c2ltcGxl
LWluZGVudCkpKQorKGRlZnVuIG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVudC1idWZmZXIg
KGNvbmZpZ3VyYXRpb24pCisgICJBZGQgQ09ORklHVVJBVElPTiB0byB0aGUgY3VycmVudCBidWZm
ZXIuCitDT05GSUdVUkFUSU9OIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50IHJ1bGVzLiAg
Rm9yIGZvbnQtbG9jayBydWxlcywKK3VzZSB0aGUgc2FtZSBmZWF0dXJlcyBlbmFibGVkIGluIE1P
REUuIgorICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAoYXBwZW5k
IHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgOzsgR2V0IGFsbCB0
aGUgZm9udC1sb2NrIHNldHRpbmdzLCBpbmNsdWRpbmcgb25lcyB0aGF0CisgICAgICAgICAgICAg
ICAgOzsgZG9uJ3QgcGVydGFpbiB0byBNT0RFLiAgVGhpcyB3YXksIHdlIGdldCBqc2RvYworICAg
ICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCisgICAgICAgICAg
ICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKSkKKyAgKHNldHEgdHJl
ZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCisgICAgICAgIChhcHBlbmQgdHJlZXNpdC1zaW1wbGUt
aW5kZW50LXJ1bGVzCisgICAgICAgICAgICAgICAgOzsgU2ltaWxhcmx5LCBnZXQgYWxsIGluZGVu
dCBydWxlcy4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRpb24gOnNpbXBs
ZS1pbmRlbnQpKSkKICAgICAoc2V0cSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAg
KGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCiAgICAgICAgICAgICAgICAgICA7OyBGaWx0
ZXIgb3V0IGZ1bmN0aW9uIHF1ZXJpZXMsIGJlY2F1c2UgdGhleSBhcmUKQEAgLTMwMiw1MiArMjM0
NCw0ODYgQEAgbWFya2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUKICAgICAgICAgICAgICAg
ICAgIDs7IENhc2UgaW4gcG9pbnQ6IGMtdHMtbW9kZSdzIHJhbmdlIHNldHRpbmcuCiAgICAgICAg
ICAgICAgICAgICAoc2VxLWZpbHRlciAobGFtYmRhIChzZXR0aW5nKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobm90IChmdW5jdGlvbnAgKGNhciBzZXR0aW5nKSkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpyYW5nZSkpKSkKLSAg
ICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50KQotICAg
IChzZXRxLWxvY2FsIGluZGVudC1yZWdpb24tZnVuY3Rpb24gIyd0cmVlc2l0LWluZGVudC1yZWdp
b24pKSkKLQotKGRlZnVuIG1hcmtkb3duLXRzLS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2Ug
KG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3Vy
YXRpb24gOnJhbmdlKSkpKQorICAoc2V0cS1sb2NhbCBpbmRlbnQtbGluZS1mdW5jdGlvbiAjJ3Ry
ZWVzaXQtaW5kZW50KQorICAoc2V0cS1sb2NhbCBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICMndHJl
ZXNpdC1pbmRlbnQtcmVnaW9uKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYW5ndWFnZS1hdC1u
b2RlIChub2RlKQorICAiUmV0dXJuIHRoZSBsYW5ndWFnZSBzeW1ib2wgZm9yIGNvZGVfZmVuY2Vf
Y29udGVudCBOT0RFLiIKKyAgKHdoZW4tbGV0KiAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVu
dCBub2RlKSkKKyAgICAgICAgICAgICAgKGxhbmctbm9kZSAod2hlbiBwYXJlbnQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIHBhcmVudCAiXFxgbGFu
Z3VhZ2VcXCciKSkpKQorICAgIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IGxhbmctbm9kZSB0
KSkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSAo
bWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpCisgICJDYWNoZSBmb3Igbm9uLXRyZWUtc2l0
dGVyIGNvZGUgYmxvY2sgZm9udGlmaWNhdGlvbi4KK0tleXMgYXJlIChMQU5HIC4gQ09OVEVOVC1I
QVNIKSBjb25zIGNlbGxzLCB2YWx1ZXMgYXJlIGxpc3RzIG9mCitcKE9GRlNFVC1TVEFSVCBPRkZT
RVQtRU5EIEZBQ0UpIHRyaXBsZXMuIikKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tbm9u
LXRzLWZvbnRpZnktY2FjaGUtdGljayBuaWwKKyAgIkZvciBibHVudCBgYnVmZmVyLWNoYXJzLW1v
ZGlmaWVkLXRpY2snIGNhY2hlIGludmFsaWRhdGlvbi4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMt
LWZvbnRpZnktbm9uLXRzLWNvZGUtYmxvY2sgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0
IF8pCisgICJGb250aWZ5IGNvZGVfZmVuY2VfY29udGVudCBOT0RFIHVzaW5nIGEgbm9uLXRyZWUt
c2l0dGVyIG1vZGUuCitBcHBseSB0aGUgY29kZS1ibG9jayBtb2RlJ3MgY29udmVudGlvbmFsIGZv
bnQtbG9jayBpbiBhIHRlbXBvcmFyeQorYnVmZmVyLiAgT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5E
IGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4K
KworQ2FjaGUgcmVzdWx0cyB0byBhdm9pZCBmb250aWZpY2F0aW9uIG9mIHVuY2hhbmdlZCBjb2Rl
IGJsb2Nrcy4KKworTk9ERSBzaG91bGQgYWxyZWFkeSBoYXZlIHBhc3NlZCB0aHJvdWdoCitgbWFy
a2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UnIHdoaWNoIG1heSBoYXZlIGNsYXNzaWZp
ZWQgdGhpcworbm9kZSBhcyBhIG5vbi10cyBtb2RlLiIKKyAgKHdoZW4tbGV0KiAoKGxhbmcgKG1h
cmtkb3duLXRzLS1sYW5ndWFnZS1hdC1ub2RlIG5vZGUpKQorICAgICAgICAgICAgICAobW9kZSAo
YWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAg
ICAgICAgICAgICAgKHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkKKyAgICAgICAg
ICAgICAgKGJsb2NrLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAg
ICAgIDs7IENhbm5vdCB1c2UgbWFya2VycyAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyCisg
ICAgICAgICAgICAgIDs7ICdtYXJrZG93bi10cy1jb2RlLWVuZC1tYXJrZXIgdGhleSBhcmUgc2V0
IGFmdGVyIHRoaXMKKyAgICAgICAgICAgICAgOzsgZnVuY3Rpb24gcnVucy4KKyAgICAgICAgICAg
ICAgKG5vZGUtc3RhcnQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAo
bm9kZS1lbmQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv
LWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
IChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo
cG9pbnQpKSkpCisgICAgKHdoZW4gKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkKKyAgICAgICh1bmxl
c3MgKGVxIHRpY2sgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlLXRpY2spCisgICAg
ICAgIChjbHJoYXNoIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSkpCisgICAgICAo
bGV0KiAoKGNhY2hlLWtleSAoY29ucyBsYW5nIChzZWN1cmUtaGFzaAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3NoYTI1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSBub2RlLXN0YXJ0IG5vZGUtZW5kKSkpCisgICAgICAg
ICAgICAgKHByb3BzCisgICAgICAgICAgICAgIChvciAoZ2V0aGFzaCBjYWNoZS1rZXkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZSkK
KyAgICAgICAgICAgICAgICAgIChsZXQgKChyZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAobWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kZSBub2RlLXN0YXJ0IG5vZGUtZW5kKSkpCisgICAgICAgICAgICAg
ICAgICAgIChwdXRoYXNoIGNhY2hlLWtleSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAg
ICAgICAoc2V0cSBtYXJrZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUtdGljayB0aWNrKQor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQpKSkpCisgICAgICAgIChkb2xpc3QgKHJhbmdlIHBy
b3BzKQorICAgICAgICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAgICAg
ICAobnRoIDAgcmFuZ2UpCisgICAgICAgICAgIChudGggMSByYW5nZSkKKyAgICAgICAgICAgKG50
aCAyIHJhbmdlKQorICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpKSkpKSkKKworKGRlZnVu
IG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2xsZWN0LWZhY2VzIChtb2RlIGJlZyBlbmQp
CisgICJSdW4gTU9ERSBvbiB0aGUgQkVHLi5FTkQgcmVnaW9uJ3MgdGV4dCBhbmQgaGFydmVzdCBm
YWNlIHByb3BlcnRpZXMuCitSZXR1cm4gYSBsaXN0IG9mIChCVUYtQkVHIEJVRi1FTkQgRkFDRSkg
dHJpcGxlcyBpbiBiYXNlLWJ1ZmZlcgorY29vcmRpbmF0ZXMuCisKK0ZvciBub24tdHJlZS1zaXR0
ZXIgbW9kZXMgdXNlIGFuIGluZGlyZWN0IGJ1ZmZlciBuYXJyb3dlZCB0byBCRUcuLkVORDoKK3Jl
Z2V4L3N5bnRhY3RpYyBmb250LWxvY2sgaG9ub3JzIG5hcnJvd2luZyBhbmQgdGhlIGluZGlyZWN0
IGJ1ZmZlcgorc2hhcmVzIHRleHQgd2l0aCB0aGUgYmFzZSwgc28gdGhpcyBpcyBsZXNzIGV4cGVu
c2l2ZSBhbmQgY29weS1mcmVlLgorCitGb3IgdHMgbW9kZXMgaW4gYG1hcmtkb3duLXRzLWNvZGUt
YmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzJywgZmFsbAorYmFjayB0byBhIHRlbXAgYnVm
ZmVyLiAgVHJlZS1zaXR0ZXIgcGFyc2VycyBpZ25vcmUgaW5kaXJlY3QtYnVmZmVyCituYXJyb3dp
bmcgYW5kIHBhcnNlIHRoZSBmdWxsIGJhc2UtYnVmZmVyIHRleHQ7IHRoZSBpbm5lciBjb250ZW50
IG9mIGEKK2ZlbmNlZCBjb2RlIGJsb2NrIGlzIGp1c3Qgb3BhcXVlIHRleHQgaW5zaWRlIGEgYGNv
ZGVfZmVuY2VfY29udGVudCcKK25vZGUsIG5ldmVyIHJlLXBhcnNlZCBhcyBhIGZyZXNoIGRvY3Vt
ZW50LiAgQSB0ZW1wIGJ1ZmZlciB3aXRoIGEgZnJlc2gKK3BhcnNlciBzZWVzIHRoZSBpbm5lciBj
b250ZW50IGFzIGEgc3RhbmRhbG9uZSBtYXJrZG93biBkb2N1bWVudCwgd2hpY2gKK2lzIHdoYXQg
d2Ugd2FudC4iCisgIChjb25kICgobWVtcSBtb2RlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stZm9y
Y2UtY29udmVudGlvbmFsLW1vZGVzKQorICAgICAgICAgKGxldCAoKGNvbnRlbnQgKGJ1ZmZlci1z
dWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkKKyAgICAgICAgICAgICAgIHJlcykKKyAg
ICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAoaW5zZXJ0IGNvbnRlbnQp
CisgICAgICAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAgICAgICAgIChsZXQgKCht
YXJrZG93bi10cy0tc2V0LXVwLWlubGluZSB0KSkKKyAgICAgICAgICAgICAgICAgKG1hcmtkb3du
LXRzLW1vZGUpKSkKKyAgICAgICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAg
ICAobGV0ICgocG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAoPCBwb3Mg
KHBvaW50LW1heCkpCisgICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1w
cm9wZXJ0eS1jaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBu
aWwgKHBvaW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZSAoZ2V0LXRleHQt
cHJvcGVydHkgcG9zICdmYWNlKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAg
ICAgICAgICAgICAgICAgICAgOzsgVHJhbnNsYXRlIHRlbXAtYnVmZmVyIG9mZnNldHMgYmFjayB0
byBiYXNlLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgOzsgcG9zaXRpb25zOiB0ZW1wIGBw
b2ludC1taW4nIGNvcnJlc3BvbmRzIHRvIEJFRy4KKyAgICAgICAgICAgICAgICAgICAgIChwdXNo
IChsaXN0ICgrIGJlZyAoMS0gcG9zKSkgKCsgYmVnICgxLSBuZXh0KSkgZmFjZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgcG9zIG5l
eHQpKSkpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0CisgICAgICAg
ICAobGV0ICgoaW5kaXJlY3QtYnVmZmVyIChtYWtlLWluZGlyZWN0LWJ1ZmZlcgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsICdpbmhpYml0LWJ1ZmZlci1o
b29rcykpCisgICAgICAgICAgICAgICByZXMpCisgICAgICAgICAgICh1bndpbmQtcHJvdGVjdAor
ICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAg
ICAgICAgICAgICAgIChkZWxheS1tb2RlLWhvb2tzIChmdW5jYWxsIG1vZGUpKQorICAgICAgICAg
ICAgICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKQorICAgICAgICAgICAgICAgICAoZm9u
dC1sb2NrLWVuc3VyZSkKKyAgICAgICAgICAgICAgICAgKGxldCAoKHBvcyAocG9pbnQtbWluKSkp
CisgICAgICAgICAgICAgICAgICAgKHdoaWxlICg8IHBvcyAocG9pbnQtbWF4KSkKKyAgICAgICAg
ICAgICAgICAgICAgIChsZXQgKChuZXh0IChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgJ2ZhY2UgbmlsIChwb2ludC1tYXgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChmYWNlIChnZXQtdGV4dC1wcm9wZXJ0eSBw
b3MgJ2ZhY2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAg
ICAgICAgICAgICAgICAgIChwdXNoIChsaXN0IHBvcyBuZXh0IGZhY2UpIHJlcykpCisgICAgICAg
ICAgICAgICAgICAgICAgIChzZXRxIHBvcyBuZXh0KSkpKSkKKyAgICAgICAgICAgICAoa2lsbC1i
dWZmZXIgaW5kaXJlY3QtYnVmZmVyKSkKKyAgICAgICAgICAgKG5yZXZlcnNlIHJlcykpKSkpCisK
KyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIChsYW5nKQorICAi
Q29tcHV0ZSBhbmQgY2FjaGUgYSBtb2RlIHN5bWJvbCBmcm9tIExBTkcsIGEgc3ltYm9sLgorQ29u
c3VsdCB0aGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbWFwJyBjYWNoZSwgb3IgY29uc3VsdAor
YHRyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdCcgYW5kIGBtYWpvci1tb2RlLXJlbWFwLWFs
aXN0Jywgb3IgYnJ1dGUKK2ZvcmNlIG1vZGUgcHJvYmUuICBSZXR1cm4gYSB2YWxpZCBtb2RlIHN5
bWJvbCBvciBuaWwuIgorICAoaWYtbGV0KiAoKG1hcHBlZC1tb2RlIChhbGlzdC1nZXQgbGFuZyBt
YXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKSkpCisgICAgICBtYXBwZWQtbW9kZQorICAgIChs
ZXQqICgobGFuZy1zdHJpbmcgKHN5bWJvbC1uYW1lIGxhbmcpKQorICAgICAgICAgICAobGFuZy1t
b2RlIChjb25jYXQgbGFuZy1zdHJpbmcgIi1tb2RlIikpCisgICAgICAgICAgIChtb2RlKSkKKyAg
ICAgIChpZiAoc2V0cSBtb2RlIChhbGlzdC1nZXQgbGFuZy1tb2RlIHRyZWVzaXQtbWFqb3ItbW9k
ZS1yZW1hcC1hbGlzdCkpCisgICAgICAgICAgbW9kZQorICAgICAgICAoaWYgKHNldHEgbW9kZSAo
YWxpc3QtZ2V0IGxhbmctbW9kZSBtYWpvci1tb2RlLXJlbWFwLWFsaXN0KSkKKyAgICAgICAgICAg
IG1vZGUKKyAgICAgICAgICAoY2F0Y2ggOm1vZGUKKyAgICAgICAgICAgIChkb2xpc3QgKG1vZGUK
KyAgICAgICAgICAgICAgICAgICAgIChsaXN0CisgICAgICAgICAgICAgICAgICAgICAgOzsgVHJ5
IGEgdHJlZXNpdCBtb2RlIHVzaW5nIHRoZSByYXcgc3RyaW5nLgorICAgICAgICAgICAgICAgICAg
ICAgIChjb25jYXQgbGFuZy1zdHJpbmcgIi10cy1tb2RlIikKKyAgICAgICAgICAgICAgICAgICAg
ICA7OyBUcnkgYSBjb252ZW50aW9uYWwgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmluZy4KKyAgICAg
ICAgICAgICAgICAgICAgICBsYW5nLW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICA7OyBUcnkg
YSB0cmVlc2l0IG1vZGUgdXNpbmcgdGhlIGRvd25jYXNlZCBzdHJpbmcuCisgICAgICAgICAgICAg
ICAgICAgICAgKGNvbmNhdCAoZG93bmNhc2UgbGFuZy1zdHJpbmcpICItdHMtbW9kZSIpCisgICAg
ICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIGRv
d25jYXNlZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoZG93bmNhc2Ug
bGFuZy1zdHJpbmcpICItbW9kZSIpKSkKKyAgICAgICAgICAgICAgKHNldHEgbW9kZSAoaW50ZXJu
IG1vZGUpKQorICAgICAgICAgICAgICAod2hlbiAoZmJvdW5kcCBtb2RlKQorICAgICAgICAgICAg
ICAgIChwdXNoIChjb25zIGxhbmcgbW9kZSkgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcykK
KyAgICAgICAgICAgICAgICAodGhyb3cgOm1vZGUgbW9kZSkpKSkpKSkpKQorCisoZGVmdW4gbWFy
a2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UgKG5vZGUpCiAgICJDb252ZXJ0IE5PREUg
dG8gYSBsYW5ndWFnZSBmb3IgdGhlIGNvZGUgYmxvY2suIgotICAobGV0KiAoKGxhbmctc3RyaW5n
IChhbGlzdC1nZXQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tYXAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKSBuaWwg
IydlcXVhbCkpCi0gICAgICAgICAobGFuZyAoaWYgKHN5bWJvbHAgbGFuZy1zdHJpbmcpCi0gICAg
ICAgICAgICAgICAgICAgbGFuZy1zdHJpbmcKLSAgICAgICAgICAgICAgICAgKGludGVybiAoZG93
bmNhc2UgbGFuZy1zdHJpbmcpKSkpKQotICAgIDs7IEZJWE1FOiBLaW5kIG9mIGEgaGFjayBoZXJl
OiB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBhcyBhIGhvb2sgZm9yCi0gICAgOzsgbG9hZGluZyB1cCBj
b25maWdzIGZvciB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb2RlIGJsb2NrIG9uLWRlbWFuZC4KLSAg
ICAobGV0ICgobW9kZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtY29kZS1ibG9jay1zb3Vy
Y2UtbW9kZS1tYXApKSkKLSAgICAgIDs7IElmIHRoZXJlJ3Mgbm8gc3VwcG9ydGVkIG1vZGUgZm9y
IHRoZSBsYW5ndWFnZSwgcmV0dXJuIG5pbCwKLSAgICAgIDs7IHdoaWNoIG1ha2VzIEVtYWNzIHNr
aXAgdGhlIGNvZGUgYmxvY2suCi0gICAgICAoaWYgKG5vdCAoYW5kIG1vZGUgKGZib3VuZHAgbW9k
ZSkpKQotICAgICAgICAgIG5pbAotICAgICAgICA7OyBJZiB0aGVyZSdzIGEgbWFqb3IgbW9kZSBm
b3IgdGhlIGxhbmd1YWdlLCBzZXQgdXAgdGhlIGNvbmZpZwotICAgICAgICA7OyBhbmQgcmV0dXJu
IHRoZSBsYW5ndWFnZS4KLSAgICAgICAgKHdoZW4gKG5vdCAobWVtcSBsYW5nIG1hcmtkb3duLXRz
LS1jb25maWd1cmVkLWxhbmd1YWdlcykpCi0gICAgICAgICAgKG1hcmtkb3duLXRzLS1hZGQtY29u
ZmlnLWZvci1tb2RlIGxhbmcgbW9kZSkKLSAgICAgICAgICAocHVzaCBsYW5nIG1hcmtkb3duLXRz
LS1jb25maWd1cmVkLWxhbmd1YWdlcykpCi0gICAgICAgIGxhbmcpKSkpCisgIChsZXQqICgobGFu
ZyAoaW50ZXJuICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlKSkpCisgICAgICAgICAobW9kZSAobWFy
a2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbW9kZSBsYW5nKSkKKyAgICAgICAgICh0cy1s
YW5ndWFnZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2Vz
KSkKKyAgICAgICAgIChub24tdHMtbGFuZ3VhZ2UgKGFsaXN0LWdldCBsYW5nIG1hcmtkb3duLXRz
LS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykpKQorICAgIChjb25kCisgICAgICgoZmJvdW5kcCBt
b2RlKQorICAgICAgKGNvbmQKKyAgICAgICA7OyBSZXR1cm4ga25vd24gdHJlZXNpdCBsYW5ndWFn
ZS4KKyAgICAgICAodHMtbGFuZ3VhZ2UgdHMtbGFuZ3VhZ2UpCisgICAgICAgOzsgUmV0dXJuIG5p
bCBmb3Iga25vd24gbm9uLXRyZWVzaXQgbGFuZ3VhZ2UgZm9yIGZvbnQtbG9jay4KKyAgICAgICAo
bm9uLXRzLWxhbmd1YWdlIG5pbCkKKyAgICAgICA7OyBNYXJrZG93biBpdHNlbGYgbmVlZHMgdHdv
IHBhcnNlcnMgKG1hcmtkb3duICsKKyAgICAgICA7OyBtYXJrZG93bi1pbmxpbmUpLCBzbyB0cmVl
c2l0IGVtYmVkZGluZyAod2hpY2ggY3JlYXRlcyBvbmx5CisgICAgICAgOzsgb25lKSBjYW5ub3Qg
ZnVsbHkgZm9udGlmeSBpdC4gIFJvdXRlIHRocm91Z2ggdGhlIG5vbi10cworICAgICAgIDs7IHBh
dGggc28gdGhlIHRlbXAgYnVmZmVyIHJ1bnMgdGhlIGZ1bGwgbW9kZSB3aXRoIGJvdGgKKyAgICAg
ICA7OyBwYXJzZXJzLgorICAgICAgICgoZXEgbW9kZSAnbWFya2Rvd24tdHMtbW9kZSkKKyAgICAg
ICAgKHVubGVzcyAoYXNzcSBsYW5nIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2Rl
cykKKyAgICAgICAgICAocHVzaCAoY29ucyBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLS1jb2RlLWJs
b2NrLW5vbi10cy1tb2RlcykpCisgICAgICAgIG5pbCkKKyAgICAgICAodAorICAgICAgICAobGV0
KiAoKGNvbmZpZ3VyYXRpb24gKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25m
aWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSkpCisgICAgICAg
ICAgICAgICAodHMtbGFuZ3VhZ2UgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpsYW5ndWFnZSkp
KQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgoYW5kIHRzLWxhbmd1YWdlCisgICAgICAg
ICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6Zm9udC1sb2NrKSkKKyAgICAgICAg
ICAgIChtYXJrZG93bi10cy0tY29uZmlndXJlLWN1cnJlbnQtYnVmZmVyIGNvbmZpZ3VyYXRpb24p
CisgICAgICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2st
bGFuZ3VhZ2VzKQorICAgICAgICAgICAgICAocHVzaCAoY29ucyBsYW5nIHRzLWxhbmd1YWdlKSBt
YXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpKQorICAgICAgICAgICAgdHMtbGFuZ3Vh
Z2UpCisgICAgICAgICAgIDs7IE90aGVyd2lzZSwgY2xhc3NpZnkgbW9kZSBhcyBub24tdHJlZS1z
aXR0ZXIuCisgICAgICAgICAgICh0CisgICAgICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFy
a2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKQorICAgICAgICAgICAgICAocHVzaCAo
Y29ucyBsYW5nIG1vZGUpIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykpCisg
ICAgICAgICAgICBuaWwpKSkpKSkKKyAgICAgKHQgbmlsKSkpKQorCis7OzsgQ29kZSBibG9jayBt
aW5vciBtb2RlIHN1cHBvcnQgYW5kIGNvZGUtYmxvY2sgY29udGV4dCBjb21tYW5kczoKKworKGRl
ZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzICcoaW5kZW50LWZvci10YWItY29t
bWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlY3RyaWMt
bmV3bGluZS1hbmQtbWF5YmUtaW5kZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21tZW50LWR3aW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1lbnQtbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWVudC1vci11bmNvbW1lbnQtcmVnaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy0tY29kZS1ibG9jay1maWxsLXBhcmFncmFwaAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZy1maWxsLXJlaW5k
ZW50LWRlZnVuKQorICAiQ29tbWFuZHMgdG8gZXhlY3V0ZSBpbiBhIGNvZGUtYmxvY2sgY29udGV4
dC4KK1NlZSBgbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2snLiIpCisKKyhk
ZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcyAnKHhyZWYtZmluZC1k
ZWZpbml0aW9ucykKKyAgIkNvbW1hbmRzIHRoYXQgbmVlZCBhIFwidGhpbmdcIiBhdCBwb2ludCBp
biBhIGNvZGUtYmxvY2sgY29udGV4dC4KK1NlZSBgbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWlu
LWNvZGUtYmxvY2snLiIpCisKKyhkZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24t
Y29tbWFuZHMgJyhjb21tZW50LW9yLXVuY29tbWVudC1yZWdpb24pCisgICJDb21tYW5kcyB0aGF0
IG5lZWQgYSByZWdpb24gaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitTZWUgYG1hcmtkb3duLXRz
LS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWVu
YWJsZS1jb2RlLWJsb2NrLW1vZGUgKCkKKyAgIkVuYWJsZSBgbWFya2Rvd24tdHMtY29kZS1ibG9j
ay1tb2RlJyB3aGVuIGlmIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICAobWFya2Rvd24tdHMtY29k
ZS1ibG9jay1tb2RlIChpZiAobWFya2Rvd24tdHMtY29kZS1ibG9jay1hdC1wKSAxIC0xKSkpCisK
Kzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93bi10cy1jb2RlLWJs
b2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lICgm
b3B0aW9uYWwgYXJnIGludGVyYWN0aXZlKQorICAgIkluc2VydCBhIG5ld2xpbmUsIGFuZCBtb3Zl
IHRvIGxlZnQgbWFyZ2luIG9mIHRoZSBuZXcgbGluZS4KK1dpdGggcHJlZml4IGFyZ3VtZW50IEFS
RywgaW5zZXJ0IHRoYXQgbWFueSBuZXdsaW5lcy4KKworSWYgYGVsZWN0cmljLWluZGVudC1tb2Rl
JyBpcyBlbmFibGVkLCB0aGlzIGluZGVudHMgdGhlIGZpbmFsIG5ldyBsaW5lCit0aGF0IGl0IGFk
ZHMsIGFuZCByZWluZGVudHMgdGhlIHByZWNlZGluZyBsaW5lLiAgVG8ganVzdCBpbnNlcnQKK2Eg
bmV3bGluZSwgdXNlIFxcW2VsZWN0cmljLWluZGVudC1qdXN0LW5ld2xpbmVdLgorCitJZiBgYXV0
by1maWxsLW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgbWF5IGNhdXNlIGF1dG9tYXRpYyBsaW5lCiti
cmVha2luZyBvZiB0aGUgcHJlY2VkaW5nIGxpbmUuICBBIG5vbi1uaWwgQVJHIGluaGliaXRzIHRo
aXMuCisKK0lmIHZhcmlhYmxlIGB1c2UtaGFyZC1uZXdsaW5lcycgaXMgZW5hYmxlZCwgdGhlIG5l
d2xpbmUgaXMgbWFya2VkIHdpdGgKK3RoZSB0ZXh0LXByb3BlcnR5IGBoYXJkJy4KKworQSBub24t
bmlsIElOVEVSQUNUSVZFIGFyZ3VtZW50IG1lYW5zIHRvIHJ1biB0aGUgYHBvc3Qtc2VsZi1pbnNl
cnQtaG9vaycuIgorICAgKGludGVyYWN0aXZlICIqUFxucCIpCisgICAoaWYtbGV0KiAoKGJsb2Nr
LW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCkpCisgICAgICAgICAgICAgKChm
Ym91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgICAobWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWlu
LWNvZGUtYmxvY2sgYmxvY2stbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjJ25ld2xpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludGVyYWN0aXZlKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9j
ay1maWxsLXBhcmFncmFwaCAoJm9wdGlvbmFsIGp1c3RpZnkpCisgICJSZWZpbGwgb3IgcmVpbmRl
bnQgdGhlIG1hcmtkb3duIGNvbnRlbnQgdGhhdCBjb250YWlucyBwb2ludC4KK0lmIHRoZSBwb2lu
dCBpcyBpbiBhIHN0cmluZyBvciBhIGNvbW1lbnQsIGZpbGwgdGhlIHBhcmFncmFwaCB0aGF0Citj
b250YWlucyBwb2ludCBvciBmb2xsb3dzIHBvaW50LgorCitPdGhlcndpc2UsIHJlaW5kZW50IHRo
ZSBmdW5jdGlvbiBkZWZpbml0aW9uIHRoYXQgY29udGFpbnMgcG9pbnQgb3IKK2ZvbGxvd3MgcG9p
bnQuCisKK0lmIEpVU1RJRlkgaXMgbm9uLW5pbCAoaW50ZXJhY3RpdmVseSwgd2l0aCBwcmVmaXgg
YXJndW1lbnQpLCBqdXN0aWZ5IGFzCit3ZWxsLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKGNv
bmQgKChkZXJpdmVkLW1vZGUtcCAncHJvZy1tb2RlKQorICAgICAgICAgKGNhbGwtaW50ZXJhY3Rp
dmVseSAjJ3Byb2ctZmlsbC1yZWluZGVudC1kZWZ1biBqdXN0aWZ5KSkKKyAgICAgICAgKHQKKyAg
ICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgIydmaWxsLXBhcmFncmFwaCBqdXN0aWZ5KSkpKQor
Cis7OyBOT1RFOiBEbyBub3QgYWRkIHRoaXMgY29tbWFuZCB0byBgbWFya2Rvd24tdHMtY29kZS1i
bG9jay1jb21tYW5kcycuCisoZGVmdW4gbWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5k
LWRlZmluaXRpb25zICgmcmVzdCBhcmdzKQorICAiSGVscGVyIGNvbW1hbmQgZm9yIGB4cmVmLWZp
bmQtZGVmaW5pdGlvbnMnIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorRmluZCB0aGluZyBhdCBw
b2ludC4KK0FkanVzdCB0aGUgcmVmZXJlbmNlcyBvbiB0aGUgeHJlZiBzdGFjayB0byB0aGUgYmFz
ZSBidWZmZXIuCitQYXNzIHRocm91Z2ggQVJHUyBpZiBub3QgaW4gYSBjb2RlIGJsb2NrIHdpdGgg
YW4gYXZhaWxhYmxlIG1vZGUuIgorICAoaW50ZXJhY3RpdmUpCisgIChpZi1sZXQqICgoYmxvY2st
bW9kZSAobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAgICgoZmJv
dW5kcCBibG9jay1tb2RlKSkpCisgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAgICAg
KHVud2luZC1wcm90ZWN0CisgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIDs7
IFJlY29yZCBhIHBsYWNlaG9sZGVyIHhyZWYgbWFya2VyIGluIHRoZSBiYXNlIGJ1ZmZlci4gIFRo
aXMKKyAgICAgICAgICAgICAgICA7OyB3aWxsIGJlIHJldGFpbmVkIGlmIHRoZSBjb21tYW5kIHN1
Y2NlZWRzIHRvIHB1c2ggYSBtYXJrZXIgaW4KKyAgICAgICAgICAgICAgICA7OyB0aGUgaW5kaXJl
Y3QgYnVmZmVyIHdoaWNoIHdlIHdpbGwgcG9wLgorICAgICAgICAgICAgICAgICh4cmVmLXB1c2gt
bWFya2VyLXN0YWNrKQorICAgICAgICAgICAgICAgIDs7IGB4cmVmLWZpbmQtZGVmaW5pdGlvbnMn
IGlzIGEgdGhpbmcgY29tbWFuZCBpbgorICAgICAgICAgICAgICAgIDs7IGBtYXJrZG93bi10cy1j
b2RlLWJsb2NrLXRoaW5nLWNvbW1hbmRzJy4KKyAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt
LXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgYmxvY2stbW9kZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ3hyZWYtZmluZC1kZWZpbml0
aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzKSkKKyAgICAgICAgICAgIDs7IFBvcCB0aGUgdG9wIHhyZWYgbWFya2VyLiAgSWYg
dGhlIGNvbW1hbmQgc3VjY2VlZGVkLCB0aGUKKyAgICAgICAgICAgIDs7IHRvcCBtYXJrZXIgd2ls
bCBiZSB0aGUgaW5kaXJlY3QgYnVmZmVyIG1hcmtlci4gIElmIGl0CisgICAgICAgICAgICA7OyBm
YWlsZWQsIHdlJ2xsIHBvcCB0aGUgcGxhY2Vob2xkZXIgd2hpY2ggaXMgbm93IG9mIG5vCisgICAg
ICAgICAgICA7OyB2YWx1ZTwKKyAgICAgICAgICAgIDs7IFRPRE86IFByb3Bvc2UgYW4gYHhyZWYn
IHBvcCBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgImdvCisgICAgICAgICAgICA7OyBiYWNrIi4KKyAg
ICAgICAgICAgIChsZXQgKChoaXN0b3J5ICh4cmVmLS1nZXQtaGlzdG9yeSkpKQorICAgICAgICAg
ICAgICAodW5sZXNzIChudWxsIChjYXIgaGlzdG9yeSkpCisgICAgICAgICAgICAgICAgKHBvcCAo
Y2FyIGhpc3RvcnkpKSkpKQorICAgICAgICAoZXJyb3IKKyAgICAgICAgIDs7IFByb3BhZ2F0ZSB0
aGUgc2lnbmFsLgorICAgICAgICAgKHNpZ25hbCAoY2FyIGVycikgKGNkciBlcnIpKSkpCisgICAg
OzsgTm90IGluIGEgY29kZSBibG9jayBjb250ZXh0LiAgVGhpcyBzaG91bGQgcmVhbGx5IG5ldmVy
IGhhcHBlbi4KKyAgICAoZnVuY2FsbC1pbnRlcmFjdGl2ZWx5ICMneHJlZi1maW5kLWRlZmluaXRp
b25zIGFyZ3MpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1j
b2RlLWJsb2NrICgpCisgICJIZWxwZXIgZnVuY3Rpb24gdG8gd3JhcCBhIGNvbW1hbmQgZm9yIGEg
Y29kZS1ibG9jayBjb250ZXh0LgorSWYgYHRoaXMtY29tbWFuZCcgaXMgYSBtZW1iZXIgb2YgYG1h
cmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnIGFuZAorcG9pbnQgaXMgd2l0aGluIGEgY29k
ZSBibG9jayB3aXRoIGFuIGF2YWlsYWJsZSBtb2RlLCBpdCB3aWxsIHJ1biBpbiB0aGF0Citjb2Rl
IGJsb2NrJ3MgbW9kZSBpbiBhIGJ1ZmZlciBuYXJyb3dlZCB0byBpdHMgY29udGVudC4gIE90aGVy
d2lzZSwgdGhlCitjb21tYW5kIHdpbGwgcnVuIGluIHRoZSBjb250ZXh0IG9mIHRoZSBgbWFya2Rv
d24tdHMtbW9kZScgYnVmZmVyLiIKKyAgKHdoZW4gKG1lbXEgdGhpcy1jb21tYW5kIG1hcmtkb3du
LXRzLWNvZGUtYmxvY2stY29tbWFuZHMpCisgICAgKHdoZW4tbGV0KiAoKGNvbW1hbmQgdGhpcy1j
b21tYW5kKQorICAgICAgICAgICAgICAgIChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJs
b2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgICAgICgoZmJvdW5kcCBibG9jay1tb2RlKSkpCisg
ICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgKGxhbWJkYSAoJnJlc3QgYXJncykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IChhcHBseSAjJ21hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stbW9kZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmdzKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1i
bG9jayAoYmxvY2stbW9kZSBjb21tYW5kICZyZXN0IGFyZ3MpCisgICJSdW4gQ09NTUFORCBpbiBC
TE9DSy1NT0RFLgorQVJHUyBhcmUgY2FwdHVyZWQgYnkgYG1hcmtkb3duLXRzLS1tYXliZS1ydW4t
Y29tbWFuZC1pbi1jb2RlLWJsb2NrJy4iCisgICh3aGVuLWxldCogKChiZWcgKGdldC1jaGFyLXBy
b3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtYmVnLW1hcmtlcikpCisgICAgICAgICAg
ICAgIChlbmQgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ21hcmtkb3duLXRzLWNvZGUtZW5k
LW1hcmtlcikpKQorICAgIChsZXQgKChyZWdpb24tYmVnICh1c2UtcmVnaW9uLWJlZ2lubmluZykp
CisgICAgICAgICAgKHJlZ2lvbi1lbmQgKHVzZS1yZWdpb24tZW5kKSkpCisgICAgICA7OyBVc2Ug
YSBub24tY2xvbmVkIGluZGlyZWN0IGJ1ZmZlciB0byBhdm9pZCBjaGFuZ2luZyBtYWpvciBtb2Rl
CisgICAgICA7OyBpbiB0aGUgcGFyZW50IGJ1ZmZlciAod2hpY2ggd291bGQgdHJhc2ggbG9jYWwg
dmFyaWFibGVzKS4gIFRoaXMKKyAgICAgIDs7IGFsc28gZW5zdXJlcyB0cmVlc2l0IHNldHVwIGlz
IG5vdCBjb3BpZWQgb3ZlciBvciBpdCBnZXRzCisgICAgICA7OyBjb25mdXNlZC4KKyAgICAgIChs
ZXQgKChpbmRpcmVjdC1idWZmZXIgKG1ha2UtaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lIChidWZmZXItbmFtZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuaWwgJ2luaGliaXQtYnVmZmVyLWhvb2tzKSkKKyAgICAg
ICAgICAgIChpbmRpcmVjdC1kZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgICAocG9pbnQtZGVs
dGEgMCkpCisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAgKHdpdGgtY3VycmVu
dC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAgIDs7IENvcHkgdGhlIGJhc2Ug
YnVmZmVyJ3MgcmVnaW9uLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICh3aGVuIChh
bmQgcmVnaW9uLWJlZyByZWdpb24tZW5kKQorICAgICAgICAgICAgICAgIChzZXQtbWFyayAoaWYg
KDwgKHBvaW50KSByZWdpb24tZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn
aW9uLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi1iZWcpKQorICAgICAg
ICAgICAgICAgIChhY3RpdmF0ZS1tYXJrKSkKKyAgICAgICAgICAgICAgKGRlbGF5LW1vZGUtaG9v
a3MKKyAgICAgICAgICAgICAgICAobGV0ICgobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAg
ICAgICAgICAgICAgICAgICAgICAgKGVxIGJsb2NrLW1vZGUgJ21hcmtkb3duLXRzLW1vZGUpKSkK
KyAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGJsb2NrLW1vZGUpKQorICAgICAgICAgICAgICAg
IChyZWFkLW9ubHktbW9kZSAtMSkKKyAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lvbiBi
ZWcgZW5kKQorICAgICAgICAgICAgICAgIChsZXQgKChwb2ludCAocG9pbnQpKQorICAgICAgICAg
ICAgICAgICAgICAgIChwb2ludC1tYXJrZXIgKHBvaW50LW1hcmtlcikpKQorICAgICAgICAgICAg
ICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgKChtZW1xIGNvbW1hbmQgbWFya2Rv
d24tdHMtY29kZS1ibG9jay10aGluZy1jb21tYW5kcykKKyAgICAgICAgICAgICAgICAgICAgICAo
d2hlbi1sZXQqICgodGhpbmcgKHRoaW5nLWF0LXBvaW50ICdzeW1ib2wpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIChmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCB0aGluZykpKQorICAg
ICAgICAgICAgICAgICAgICAgKChtZW1xIGNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1y
ZWdpb24tY29tbWFuZHMpCisgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCByZWdpb24t
YmVnIHJlZ2lvbi1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydmdW5jYWxs
LWludGVyYWN0aXZlbHkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Z2lvbi1iZWcgcmVnaW9uLWVuZCBhcmdzKSkpCisgICAgICAgICAgICAgICAgICAgICAoKHplcm9w
IChjZHIgKGZ1bmMtYXJpdHkgY29tbWFuZCkpKQorICAgICAgICAgICAgICAgICAgICAgIChmdW5j
YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpCisgICAgICAgICAgICAgICAgICAgICAodAorICAg
ICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpKQorICAgICAg
ICAgICAgICAgICAgICAoc2V0cSBpbmRpcmVjdC1kZWFjdGl2YXRlLW1hcmsgZGVhY3RpdmF0ZS1t
YXJrKQorICAgICAgICAgICAgICAgICAgICA7OyBUaGUgaGV1cmlzdGljIG9mIHdoZW4gdG8gbW92
ZSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgOzsgZGVhY3RpdmF0ZS1tYXJrIHAoZCk9cG0o
ZCkgZGVsdGEKKyAgICAgICAgICAgICAgICAgICAgOzsgbmlsICAgICAgICAgICAgIG5vICAgICAg
ICAgMCAgIDsgY2xhc3MgQQorICAgICAgICAgICAgICAgICAgICA7OyBuaWwgICAgICAgICAgICAg
eWVzICAgICAgICB5ZXMgOyBjbGFzcyBCCisgICAgICAgICAgICAgICAgICAgIDs7IHQgICAgICAg
ICAgICAgICBubyAgICAgICAgIDAgICA7IGNsYXNzIEMKKyAgICAgICAgICAgICAgICAgICAgOzsg
dCAgICAgICAgICAgICAgIHllcyAgICAgICAgeWVzIDsgY2xhc3MgRAorICAgICAgICAgICAgICAg
ICAgICA7OyBBOiBuaWwKKyAgICAgICAgICAgICAgICAgICAgOzsgQjogaW5kZW50LWZvci10YWIt
Y29tbWFuZAorICAgICAgICAgICAgICAgICAgICA7OyBDOiBjb21tZW50LW9yLXVuY29tbWVudC1y
ZWdpb24KKyAgICAgICAgICAgICAgICAgICAgOzsgRDogY29tbWVudC1kd2ltIG5ld2xpbmUgZWxl
Y3RyaWMtbmV3bGluZS1hbmQtbWF5YmUtaW5kZW50CisgICAgICAgICAgICAgICAgICAgIDs7ICAg
IG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoCisgICAgICAgICAgICAgICAg
ICAoc2V0cSBwb2ludC1kZWx0YSAoLSAocG9pbnQpIHBvaW50KSkKKyAgICAgICAgICAgICAgICAg
ICh3aGVuIChub3QgKGVxIHBvaW50LWRlbHRhICgtIChwb2ludC1tYXJrZXIpIHBvaW50LW1hcmtl
cikpKQorICAgICAgICAgICAgICAgICAgICAoc2V0cSBwb2ludC1kZWx0YSAwKSkpKSkKKyAgICAg
ICAgICAoa2lsbC1idWZmZXIgaW5kaXJlY3QtYnVmZmVyKQorICAgICAgICAgIDs7IFByb3BhZ2F0
ZSBtYXJrIGRlYWN0aXZhdGlvbiB0byB0aGUgYmFzZSBidWZmZXIuCisgICAgICAgICAgKHNldHEg
ZGVhY3RpdmF0ZS1tYXJrIGluZGlyZWN0LWRlYWN0aXZhdGUtbWFyaykKKyAgICAgICAgICA7OyBN
b3ZlIGJhc2UgYnVmZmVyIHBvaW50IGlmIGl0IG1vdmVkIGluIHRoZSBpbmRpcmVjdCBidWZmZXIu
CisgICAgICAgICAgKGdvdG8tY2hhciAoKyAocG9pbnQpIHBvaW50LWRlbHRhKSkKKyAgICAgICAg
ICA7OyBSZWNvcmQgdGhlIG9yaWdpbmFsIGNvbW1hbmQuCisgICAgICAgICAgKHNldHEgdGhpcy1j
b21tYW5kIGNvbW1hbmQpCisgICAgICAgICAgOzsgTWFrZSBzdXJlIHRoZSBvcmlnaW5hdGluZyBy
ZWdpb24gaXMgcmVmb250aWZpZWQuCisgICAgICAgICAgKGZvbnQtbG9jay1mbHVzaCBiZWcgZW5k
KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciAo
cG9zICZvcHRpb25hbCBiYWNrd2FyZCkKKyAgIlJldHVybiB0aGUgbmV4dCBvciBwcmV2aW91cyBm
ZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIgbm9kZSwgb3IgbmlsLgorU2VhcmNoIHN0YXJ0aW5n
IGF0IFBPUy4KK1NlYXJjaCBiYWNrd2FyZCBpZiBCQUNLV0FSRCBpcyBub24tbmlsLiIKKyAgKHRy
ZWVzaXQtc2VhcmNoLWZvcndhcmQgKHRyZWVzaXQtbm9kZS1hdCBwb3MgJ21hcmtkb3duKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChub2RlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzdHJpbmc9ICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmZW5jZWRfY29kZV9ibG9ja19kZWxpbWl0ZXIiKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQpKQorCisoZGVmdW4gbWFya2Rvd24t
dHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRlciAoJm9wdGlvbmFsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIGJhY2t3YXJkIHJl
bWFpbikKKyAgIlJldHVybiB0aGUgbmV4dCBvciBwcmV2aW91cyBmZW5jZWRfY29kZV9ibG9ja19k
ZWxpbWl0ZXIgbm9kZSwgb3IgbmlsLgorU2VhcmNoIHN0YXJ0aW5nIGF0IFBPUyBvciBgcG9pbnQn
LCBpZiBQT1MgaXMgbmlsLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwu
CitJZiBSRU1BSU4gaXMgbm9uLW5pbCwgbW92ZSB0byB0aGUgdG9wIG9yIGJvdHRvbSBvZiB0aGUg
Y3VycmVudCBjb2RlCitibG9jaywgaWYgaW4gb25lLiIKKyAgKHNldHEgcG9zIChvciBwb3MgKHBv
aW50KSkpCisgIChhbmQtbGV0KiAoKG5vZGUgKG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2st
ZGVsaW1pdGVyIHBvcyBiYWNrd2FyZCkpKQorICAgIChsZXQgKChpbi1ibG9jayAobWFya2Rvd24t
dHMtY29kZS1ibG9jay1hdC1wIHBvcykpKQorICAgICAgKGNvbmQKKyAgICAgICAoKGFuZCByZW1h
aW4gaW4tYmxvY2spCisgICAgICAgIG5vZGUpCisgICAgICAgKHJlbWFpbgorICAgICAgICBuaWwp
CisgICAgICAgKHQKKyAgICAgICAgKHdoaWxlIChhbmQgbm9kZQorICAgICAgICAgICAgICAgICAg
ICA7OyBJZiBiYWNrd2FyZCwgc2tpcCB0aGUgY3VycmVudCBibG9jaydzCisgICAgICAgICAgICAg
ICAgICAgIDs7IHN0YXJ0aW5nIGRlbGltaXRlci4KKyAgICAgICAgICAgICAgICAgICAgKG9yIChh
bmQgYmFja3dhcmQgaW4tYmxvY2sgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAobm90ICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIG5v
ZGUpKSkpCisgICAgICAgICAgKHNldHEgaW4tYmxvY2sgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2st
YXQtcCBwb3MpKQorICAgICAgICAgIChzZXRxIHBvcyAoaWYgYmFja3dhcmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpCisgICAgICAgICAgKHNldHEgbm9kZSAobWFy
a2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAg
ICAgIG5vZGUpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1uZXh0LWNvZGUtYmxv
Y2sgKGFyZykKKyAgIk1vdmUgcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNvZGUgYmxv
Y2suCitXaXRoIHRoZSBwcmVmaXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBjdXJy
ZW50IGNvZGUgYmxvY2suIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgobm9k
ZQorICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1kZWxp
bWl0ZXIgbmlsIG5pbCBhcmcpKSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQg
bm9kZSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLW1vdmUtdG8tcHJldmlvdXMtY29kZS1ibG9j
ayAoYXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHByZXZpb3VzIGNvZGUg
YmxvY2suCitXaXRoIHRoZSBwcmVmaXggYXJndW1lbnQgQVJHLCByZW1haW4gd2l0aGluIHRoZSBj
dXJyZW50IGNvZGUgYmxvY2suIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAod2hlbi1sZXQqICgo
bm9kZQorICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1maW5kLW5leHQtY29kZS1ibG9jay1k
ZWxpbWl0ZXIgbmlsICdiYWNrd2FyZCBhcmcpKSkKKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5v
ZGUtc3RhcnQgbm9kZSkpKSkKKworOzs7IEhlbHBlcnM6CisKKyhkZWZ1biBtYXJrZG93bi10cy0t
b3V0bGluZS1pbnZpc2libGUtcCAocG9zKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgUE9TIGlzIGlu
c2lkZSBhbiBvdXRsaW5lLWZvbGRlZCByZWdpb24uIgorICAoY2wtc29tZSAobGFtYmRhIChvdikg
KGVxIChvdmVybGF5LWdldCBvdiAnaW52aXNpYmxlKSAnb3V0bGluZSkpCisgICAgICAgICAgIChv
dmVybGF5cy1hdCBwb3MpKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncyAo
KQogICAiUmV0dXJuIHJhbmdlIHNldHRpbmdzIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgogICAo
dHJlZXNpdC1yYW5nZS1ydWxlcwogICAgOmVtYmVkICdtYXJrZG93bi1pbmxpbmUKICAgIDpob3N0
ICdtYXJrZG93bgotICAgOnJhbmdlLWZuICMndHJlZXNpdC1yYW5nZS1mbi1leGNsdWRlLWNoaWxk
cmVuCiAgICAnKChpbmxpbmUpIEBtYXJrZG93bi1pbmxpbmUpCiAKLSAgIDplbWJlZCAjJ21hcmtk
b3duLXRzLS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2UKKyAgIDplbWJlZCAjJ21hcmtkb3du
LXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlCiAgICA6aG9zdCAnbWFya2Rvd24KICAgIDpsb2Nh
bCB0CiAgICAnKChmZW5jZWRfY29kZV9ibG9jayAoaW5mb19zdHJpbmcgKGxhbmd1YWdlKSBAbGFu
Z3VhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY29kZV9mZW5jZV9jb250ZW50KSBAY29u
dGVudCkpKSkKIAorKGRlZnVuIG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMgKCkK
KyAgIlJlbW92ZSBhbGwgaW5saW5lIGltYWdlIG92ZXJsYXlzIGZyb20gdGhlIGN1cnJlbnQgYnVm
ZmVyLiIKKyAgKGRvbGlzdCAob3YgKG92ZXJsYXlzLWluIChwb2ludC1taW4pIChwb2ludC1tYXgp
KSkKKyAgICAod2hlbiAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWltYWdlKQorICAgICAg
KGRlbGV0ZS1vdmVybGF5IG92KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLW91dGxpbmUtdmll
dy1jaGFuZ2UgKCkKKyAgIlVwZGF0ZSBpbWFnZSBvdmVybGF5cyBhZnRlciBvdXRsaW5lIGZvbGQv
dW5mb2xkLgorUmVtb3ZlcyBpbWFnZSBvdmVybGF5cyBpbiBmb2xkZWQgcmVnaW9ucyBhbmQgdHJp
Z2dlcnMKK3JlZm9udGlmaWNhdGlvbiBzbyB0aGF0IGltYWdlcyBpbiB1bmZvbGRlZCByZWdpb25z
IGFyZSByZWNyZWF0ZWQuIgorICAod2hlbiBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisgICAg
KG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCisgICAgKGZvbnQtbG9jay1mbHVz
aCkpKQorCiAoZGVmdW4gbWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCAodmFsdWUpCiAgICJT
ZXQgaGlkaW5nIG9mIE1hcmtkb3duIG1hcmt1cCBkZWxpbWl0ZXJzIGluIHRoZSBjdXJyZW50IGJ1
ZmZlci4KIFZBTFVFIG5vbi1uaWwgaGlkZXMgbWFya3VwLCBuaWwgc2hvd3MgaXQuIgogICAoaWYg
dmFsdWUKICAgICAgIChhZGQtdG8taW52aXNpYmlsaXR5LXNwZWMgJ21hcmtkb3duLXRzLS1tYXJr
dXApCiAgICAgKHJlbW92ZS1mcm9tLWludmlzaWJpbGl0eS1zcGVjICdtYXJrZG93bi10cy0tbWFy
a3VwKSkKKyAgKHdoZW4gbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcworICAgIChtYXJrZG93bi10
cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKSkKICAgKGZvbnQtbG9jay1mbHVzaCkpCiAKIChkZWZ1
biBtYXJrZG93bi10cy10b2dnbGUtaGlkZS1tYXJrdXAgKCkKQEAgLTM1NiwxMjIgKzI4MzIsNTMw
IEBAIG1hcmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1cAogICAoc2V0cSBtYXJrZG93bi10cy1o
aWRlLW1hcmt1cCAobm90IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKSkKICAgKG1hcmtkb3duLXRz
LS1zZXQtaGlkZS1tYXJrdXAgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApKQogCisoZGVmdW4gbWFy
a2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzICh2YWx1ZSkKKyAgIlNldCBkaXNwbGF5IG9mIGlu
bGluZSBpbWFnZXMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgorVkFMVUUgbm9uLW5pbCBkaXNwbGF5
cyBpbWFnZXMsIG5pbCByZW1vdmVzIHRoZW0uIgorICAoaWYgdmFsdWUKKyAgICAgICh0cmVlc2l0
LWZvbnQtbG9jay1yZWNvbXB1dGUtZmVhdHVyZXMgJyhpbWFnZS1wcmV2aWV3KSkKKyAgICAodHJl
ZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1cmVzIG5pbCAnKGltYWdlLXByZXZpZXcpKSkK
KyAgKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpCisgIChmb250LWxvY2stZmx1
c2gpKQogCi07OzsgTWFqb3IgbW9kZQotCi0oZGVmdW4gbWFya2Rvd24tdHMtc2V0dXAgKCkKLSAg
IlNldHVwIHRyZWVzaXQgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCi0gIChtYWtlLWxvY2FsLXZh
cmlhYmxlICdtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkKKyhkZWZ1biBtYXJrZG93bi10cy10b2dn
bGUtaW5saW5lLWltYWdlcyAoKQorICAiVG9nZ2xlIGRpc3BsYXkgb2YgaW5saW5lIGltYWdlcyBp
biB0aGUgY3VycmVudCBidWZmZXIuIgorICAoaW50ZXJhY3RpdmUpCisgIChzZXRxIG1hcmtkb3du
LXRzLWlubGluZS1pbWFnZXMgKG5vdCBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzKSkKKyAgKG1h
cmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdlcyBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzKQor
ICAobWVzc2FnZSAiSW5saW5lIGltYWdlcyAlcyIgKGlmIG1hcmtkb3duLXRzLWlubGluZS1pbWFn
ZXMgImVuYWJsZWQiICJkaXNhYmxlZCIpKSkKKworOzs7IEVtcGhhc2lzOgorCisoZGVmdmFyIG1h
cmtkb3duLXRzLWVtcGhhc2lzLWFsaXN0CisgICcoKD9iIC4gIioqIikKKyAgICAoP0IgLiAiX18i
KQorICAgICg/aSAuICIqIikKKyAgICAoP0kgLiAiXyIpCisgICAgKD9zIC4gIn5+IikKKyAgICAo
P2MgLiAiYCIpCisgICAgKD9hIC4gIioqKiIpKQorICAiQWxpc3Qgb2YgZW1waGFzaXMgbWFya2Vy
cyBmb3IgYG1hcmtkb3duLXRzLWVtcGhhc2l6ZScuCitFYWNoIGVudHJ5IGlzIChLRVkgLiBNQVJL
RVIpIHdoZXJlIEtFWSBpcyBhIGNoYXJhY3RlciAobm90IGEgc3RyaW5nKSBhbmQKK01BUktFUiBp
cyB0aGUgTWFya2Rvd24gZW1waGFzaXplZCB0ZXh0IHByZWZpeC9zdWZmaXguIikKKworKGRlZnVu
IG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50ICgpCisgICJSZXR1cm4gdGhlIGVt
cGhhc2lzIG5vZGUgYXQgcG9pbnQsIG9yIG5pbC4KK0ZpbmRzIHRoZSBpbm5lcm1vc3QgYGVtcGhh
c2lzJywgYHN0cm9uZ19lbXBoYXNpcycsCitgc3RyaWtldGhyb3VnaCcsIG9yIGBjb2RlX3NwYW4n
IG5vZGUuIgorICAod2hlbi1sZXQqICgobm9kZSAodHJlZXNpdC1ub2RlLWF0IChwb2ludCkgJ21h
cmtkb3duLWlubGluZSkpKQorICAgICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICBub2RlIChs
YW1iZGEgKG4pCisgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBuKQorICAg
ICAgICAgICAgICAgICAgICAnKCJlbXBoYXNpcyIgInN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAg
ICAgICAgICAgICAgICAic3RyaWtldGhyb3VnaCIgImNvZGVfc3BhbiIpKSkpKSkKKworKGRlZnVu
IG1hcmtkb3duLXRzLXJlbW92ZS1lbXBoYXNpcyAoKQorICAiUmVtb3ZlIGVtcGhhc2lzIGFyb3Vu
ZCBwb2ludCBvciByZWdpb24uCitXaXRoIGFuIGFjdGl2ZSByZWdpb24sIHN0cmlwIHRoZSBvdXRl
cm1vc3QgZW1waGFzaXMgbWFya2VycyBmcm9tCit0aGUgc2VsZWN0ZWQgdGV4dC4gIFdpdGhvdXQg
YSByZWdpb24sIGZpbmQgdGhlIGVtcGhhc2lzIG5vZGUgYXQKK3BvaW50IHVzaW5nIHRyZWUtc2l0
dGVyIGFuZCByZW1vdmUgaXRzIG1hcmtlcnMuIgorICAoaW50ZXJhY3RpdmUpCisgIChpZiAodXNl
LXJlZ2lvbi1wKQorICAgICAgKGxldCogKChiZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAg
ICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKQorICAgICAgICAgICAgICh0ZXh0IChidWZmZXItc3Vi
c3RyaW5nIGJlZyBlbmQpKQorICAgICAgICAgICAgIChzdHJpcHBlZCBuaWwpKQorICAgICAgICAo
Y2wtbG9vcCBmb3IgKF9rZXkgLiBtKSBpbiAoc29ydCAoY29weS1zZXF1ZW5jZSBtYXJrZG93bi10
cy1lbXBoYXNpcy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxhbWJkYSAoYSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICg+IChsZW5ndGggKGNkciBhKSkgKGxlbmd0aCAoY2RyIGIpKSkpKQorICAgICAgICAgICAg
ICAgICBmb3IgcmUgPSAoY29uY2F0ICJcXGAiIChyZWdleHAtcXVvdGUgbSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXFwoXFwoPzouXFx8XG5cXCkqXFwpIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChyZWdleHAtcXVvdGUgbSkgIlxcJyIpCisgICAgICAg
ICAgICAgICAgIHdoZW4gKHN0cmluZy1tYXRjaCByZSB0ZXh0KQorICAgICAgICAgICAgICAgICBk
byAoc2V0cSBzdHJpcHBlZCAobWF0Y2gtc3RyaW5nIDEgdGV4dCkpCisgICAgICAgICAgICAgICAg
IGFuZCByZXR1cm4gbmlsKQorICAgICAgICAod2hlbiBzdHJpcHBlZAorICAgICAgICAgIChkZWxl
dGUtcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgKGluc2VydCBzdHJpcHBlZCkpKQorICAgIDs7
IEZpbmQgdGhlIG91dGVybW9zdCBlbXBoYXNpcyBub2RlIGF0IHBvaW50LgorICAgICh3aGVuLWxl
dCogKChpbm5lciAobWFya2Rvd24tdHMtLWVtcGhhc2lzLW5vZGUtYXQtcG9pbnQpKQorICAgICAg
ICAgICAgICAgIChub2RlIChsZXQgKChuIGlubmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICh3aGlsZSAobGV0ICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG4pKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgcGFyZW50CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBl
IHBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnKCJlbXBoYXNpcyIgInN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIiAiY29kZV9z
cGFuIikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuIHBhcmVu
dCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG4pKQorICAgICAgICAgICAgICAgIChzdGFy
dCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgIChlbmQgKHRyZWVz
aXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgICAgICAgICAgKHRleHQgKHRyZWVzaXQtbm9kZS10
ZXh0IG5vZGUgdCkpCisgICAgICAgICAgICAgICAgKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5v
ZGUpKQorICAgICAgICAgICAgICAgIChtbGVuIChwY2FzZSB0eXBlCisgICAgICAgICAgICAgICAg
ICAgICAgICAoInN0cm9uZ19lbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYg
KHN0cmluZy1wcmVmaXgtcCAiXyIgdGV4dCkgMiAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICgiZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4
LXAgIl8iIHRleHQpIDEgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoInN0cmlrZXRocm91
Z2giIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAoImNvZGVfc3BhbiIgMSkpKQorICAgICAg
ICAgICAgICAgIChpbm5lci10ZXh0IChzdWJzdHJpbmcgdGV4dCBtbGVuICgtIChsZW5ndGggdGV4
dCkgbWxlbikpKSkKKyAgICAgIChsZXQgKChvZmZzZXQgKC0gKHBvaW50KSBzdGFydCBtbGVuKSkp
CisgICAgICAgIChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBz
dGFydCkKKyAgICAgICAgKGluc2VydCBpbm5lci10ZXh0KQorICAgICAgICAoZ290by1jaGFyICgr
IHN0YXJ0IChtYXggMCBvZmZzZXQpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1lbXBoYXNp
emUgKCZvcHRpb25hbCBjaGFyKQorICAiSW5zZXJ0IG9yIGNoYW5nZSBlbXBoYXNpcyBvbiB0ZXh0
LgorSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdCB3aXRoIGVtcGhhc2lzIG1h
cmtlcnMuCitJZiB0aGVyZSBpcyBubyByZWdpb24sIGluc2VydCBtYXJrZXIgcGFpcnMgYW5kIHBs
YWNlIHBvaW50IGJldHdlZW4KK3RoZW0uICBDSEFSIHNlbGVjdHMgdGhlIGVtcGhhc2lzIHR5cGU6
CisKKyAgYiAgICoqYm9sZCoqICAgICAgIEIgIF9fYm9sZF9fCisgIGkgICAqaXRhbGljKiAgICAg
ICBJICBfaXRhbGljXworICBhICAgKioqYm9sZCtpdGFsaWMqKioKKyAgcyAgIH5+c3RyaWtldGhy
b3VnaH5+CisgIGMgICBgY29kZWAKKyAgU1BDIHJlbW92ZSBlbXBoYXNpcyBhdCBwb2ludCBvciBy
ZWdpb24iCisgIChpbnRlcmFjdGl2ZQorICAgImNFbXBoYXNpcyBbYl1vbGQgW0Jdb2xkXyBbaV10
YWxpYyBbSV10YWxpY18gW2FdbGwgW3NddHJpa2UgW2Ndb2RlIFNQQyByZW1vdmU6IikKKyAgKGlm
IChlcSBjaGFyID9ccykKKyAgICAgIChtYXJrZG93bi10cy1yZW1vdmUtZW1waGFzaXMpCisgICAg
KGlmLWxldCogKChtYXJrZXIgKGNkciAoYXNzcSBjaGFyIG1hcmtkb3duLXRzLWVtcGhhc2lzLWFs
aXN0KSkpKQorICAgICAgICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgICAgICAgIChsZXQgKChi
ZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgICAgKGVuZCAoY29weS1tYXJr
ZXIgKHJlZ2lvbi1lbmQpKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg
ICAgICAgICAgIChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2Vy
KQorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgICAgIChpbnNl
cnQgbWFya2VyKSkpCisgICAgICAgICAgKGlmLWxldCogKChib3VuZHMgKGJvdW5kcy1vZi10aGlu
Zy1hdC1wb2ludCAnd29yZCkpKQorICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAg
ICAgICAgICAgICAoZ290by1jaGFyIChjZHIgYm91bmRzKSkKKyAgICAgICAgICAgICAgICAoaW5z
ZXJ0IG1hcmtlcikKKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkKKyAg
ICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikpCisgICAgICAgICAgICAoaW5zZXJ0IG1hcmtl
ciBtYXJrZXIpCisgICAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIG1hcmtlcikpKSkK
KyAgICAgICh1c2VyLWVycm9yICJObyBzdWNoIGVtcGhhc2lzIG1hcmtlcjogJWMiIGNoYXIpKSkp
CisKKzs7OyBCbG9jayBzdHJ1Y3R1cmU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtc3Ry
dWN0dXJlICgmb3B0aW9uYWwgY2hhcikKKyAgIkluc2VydCBhIGJsb2NrIHN0cnVjdHVyZS4KK0lm
IHRoZXJlIGlzIGFuIGFjdGl2ZSByZWdpb24sIHdyYXAgaXQuICBPdGhlcndpc2UsIGluc2VydCBh
biBlbXB0eQorYmxvY2sgYW5kIHBsYWNlIHBvaW50IGluc2lkZS4gIENIQVIgc2VsZWN0cyB0aGUg
c3RydWN0dXJlIHR5cGU6CisKKyAgYyAgZmVuY2VkIGNvZGUgYmxvY2sgKGBgYCkKKyAgdCAgdGls
ZGUgZmVuY2VkIGNvZGUgYmxvY2sgKH5+fikKKyAgcSAgYmxvY2sgcXVvdGUgKD4gKQorICBkICBo
b3Jpem9udGFsIGRpdmlkZXIvcnVsZSAoLS0tKSIKKyAgKGludGVyYWN0aXZlICJjU3RydWN0dXJl
IFtjXW9kZSBibG9jayBbdF1pbGRlIGNvZGUgYmxvY2sgW3FddW90ZSBbZF1pdmlkZXI6IikKKyAg
KHBjYXNlIGNoYXIKKyAgICAoP2MgKG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayA/YCkp
CisgICAgKD90IChtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUtYmxvY2sgP34pKQorICAgICg/cSAo
bWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90ZSkpCisgICAgKD9kIChtYXJrZG93bi10cy0t
aW5zZXJ0LWRpdmlkZXIpKQorICAgIChfICh1c2VyLWVycm9yICJObyBzdWNoIHN0cnVjdHVyZTog
JWMiIGNoYXIpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWNvZGUtYmxvY2sgKGNo
YXIgJm9wdGlvbmFsIGxhbmd1YWdlKQorICAiSW5zZXJ0IGEgZmVuY2VkIGNvZGUgYmxvY2sgdXNp
bmcgYSBDSEFSIHNlcXVlbmNlLgorQ0hBUiBzaG91bGQgYmUgb25lIG9mIGEgYmFja3RpY2sgb3Ig
YSB0aWxkZS4KK0xBTkdVQUdFIGlzIGEgd2hpdGVzcGFjZSBmcmVlIGxhbmd1YWdlIHN0cmluZy4i
CisgIChzZXRxIGxhbmd1YWdlCisgICAgICAgIChvciBsYW5ndWFnZQorICAgICAgICAgICAgKHJl
cGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICJbWzpibGFuazpdXSIgIiIKKyAg
ICAgICAgICAgICAobGV0ICgoY29tcGxldGlvbi1pZ25vcmUtY2FzZSBuaWwpCisgICAgICAgICAg
ICAgICAgICAgKGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1tYXAKKyAgICAg
ICAgICAgICAgICAgICAgICMnc3ltYm9sLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgIChzZXEt
dW5pcQorICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKG1hcGNhciAjJ2NhciBtYXJrZG93
bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobWFwY2FyICMnY2FyIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1tb2RlcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydjYXIgbWFya2Rvd24tdHMtY29k
ZS1ibG9jay1tb2RlcykpKSkpKQorICAgICAgICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAorICAg
ICAgICAgICAgICAgICJDb2RlIGJsb2NrIGxhbmd1YWdlOiAiCisgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlcworICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdjb25maXJtIDsg
UHJvbXB0IGlmIHRoZSBsYW5ndWFnZSBpcyBub3Qgb24gb3VyIGxpc3QuCisgICAgICAgICAgICAg
ICAgbmlsCisgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLWxhbmd1YWdlLWhpc3RvcnkpKSkp
KQorICAobGV0ICgoZmVuY2Utc3RyaW5nIChtYWtlLXN0cmluZyAzIGNoYXIpKSkKKyAgICAoaWYg
KHVzZS1yZWdpb24tcCkKKyAgICAgICAgKGxldCAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisg
ICAgICAgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAgICAgICAoc2F2ZS1leGN1cnNp
b24KKyAgICAgICAgICAgIChnb3RvLWNoYXIgZW5kKQorICAgICAgICAgICAgKHVubGVzcyAoYm9s
cCkgKGluc2VydCAiXG4iKSkKKyAgICAgICAgICAgIChpbnNlcnQgZmVuY2Utc3RyaW5nICJcbiIp
CisgICAgICAgICAgICAoZ290by1jaGFyIGJlZykKKyAgICAgICAgICAgIChpbnNlcnQgZmVuY2Ut
c3RyaW5nIGxhbmd1YWdlICJcbiIpKSkKKyAgICAgIChpbnNlcnQgZmVuY2Utc3RyaW5nIGxhbmd1
YWdlICJcblxuIiBmZW5jZS1zdHJpbmcpCisgICAgICAoZm9yd2FyZC1saW5lIC0xKSkpKQorCiso
ZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90ZSAoKQorICAiSW5zZXJ0IGEgYmxv
Y2sgcXVvdGUuIgorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQgKChiZWcgKHJlZ2lv
bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgKGVuZCAoY29weS1tYXJrZXIgKHJlZ2lvbi1lbmQp
KSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQor
ICAgICAgICAgICh3aGlsZSAoPCAocG9pbnQpIGVuZCkKKyAgICAgICAgICAgIChpbnNlcnQgIj4g
IikKKyAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkKKyAgICAoaW5zZXJ0ICI+ICIpKSkK
KworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtZGl2aWRlciAoKQorICAiSW5zZXJ0IGEgaG9y
aXpvbnRhbCBydWxlLiIKKyAgKHVubGVzcyAoYm9scCkgKGluc2VydCAiXG4iKSkKKyAgKGluc2Vy
dCAiXG4tLS1cblxuIikpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tYXBwbHktZWxsaXBzaXMgKCkK
KyAgIkFwcGx5IGBtYXJrZG93bi10cy1lbGxpcHNpcycgdG8gdGhlIGN1cnJlbnQgYnVmZmVyJ3Mg
ZGlzcGxheSB0YWJsZS4iCisgIChpZiAoYW5kIChzdHJpbmdwIG1hcmtkb3duLXRzLWVsbGlwc2lz
KQorICAgICAgICAgICAobm90IChzdHJpbmctZW1wdHktcCBtYXJrZG93bi10cy1lbGxpcHNpcykp
KQorICAgICAgKGxldCAoKHRhYmxlIChvciBidWZmZXItZGlzcGxheS10YWJsZQorICAgICAgICAg
ICAgICAgICAgICAgICAobWFrZS1kaXNwbGF5LXRhYmxlKSkpKQorICAgICAgICAoc2V0LWRpc3Bs
YXktdGFibGUtc2xvdAorICAgICAgICAgdGFibGUgNAorICAgICAgICAgKHZjb25jYXQgKG1hcGNh
ciAobGFtYmRhIChjKSAobWFrZS1nbHlwaC1jb2RlIGMgJ3NoYWRvdykpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hcmtkb3duLXRzLWVsbGlwc2lzKSkpCisgICAgICAgIChzZXRxIGJ1ZmZl
ci1kaXNwbGF5LXRhYmxlIHRhYmxlKSkKKyAgICAod2hlbiBidWZmZXItZGlzcGxheS10YWJsZQor
ICAgICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QgYnVmZmVyLWRpc3BsYXktdGFibGUgNCBuaWwp
KSkpCisKKzs7OyBNYWpvciBtb2RlOgorCisoZGVmdW4gbWFya2Rvd24tdHMtb3V0bGluZS1jeWNs
ZSAoKQorICAiQ3ljbGUgdmlzaWJpbGl0eSBvZiB0aGUgaGVhZGluZyBhdCBwb2ludC4KK09uIGEg
aGVhZGluZywgY2FsbCBgb3V0bGluZS1jeWNsZScuICBPdGhlcndpc2UgZG8gbm90aGluZy4iCisg
IChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKG91dGxpbmUtb24taGVhZGluZy1wKQorICAgIChvdXRs
aW5lLWN5Y2xlKSkpCisKKyhkZWZ2YXIta2V5bWFwIG1hcmtkb3duLXRzLW1vZGUtbWFwCisgIDpk
b2MgIktleW1hcCBmb3IgYG1hcmtkb3duLXRzLW1vZGUnLiIKKyAgIk0tPGxlZnQ+IiAgICAjJ21h
cmtkb3duLXRzLXByb21vdGUKKyAgIk0tPHJpZ2h0PiIgICAjJ21hcmtkb3duLXRzLWRlbW90ZQor
ICAiTS08dXA+IiAgICAgICMnbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwCisgICJNLTxkb3du
PiIgICAgIydtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bgorICAiQy1jIEMtbiIgICAgICMn
b3V0bGluZS1uZXh0LWhlYWRpbmcKKyAgIkMtYyBDLXAiICAgICAjJ291dGxpbmUtcHJldmlvdXMt
aGVhZGluZworICAiQy1jIEMtdSIgICAgICMnb3V0bGluZS11cC1oZWFkaW5nCisgICJDLWMgQy1m
IiAgICAgIydvdXRsaW5lLWZvcndhcmQtc2FtZS1sZXZlbAorICAiQy1jIEMtYiIgICAgICMnb3V0
bGluZS1iYWNrd2FyZC1zYW1lLWxldmVsCisgICJDLWMgQy14IEMtZiIgIydtYXJrZG93bi10cy1l
bXBoYXNpemUKKyAgIkMtYyBDLXggQy1tIiAjJ21hcmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1
cAorICAiQy1jIEMteCBDLXYiICMnbWFya2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMKKyAg
IkMtYyBDLWMiICAgICAjJ21hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveAorICAiQy1jIEMtciIg
ICAgICMnbWFya2Rvd24tdHMtcmVudW1iZXItbGlzdAorICAiQy1jIEMtLCIgICAgICMnbWFya2Rv
d24tdHMtaW5zZXJ0LXN0cnVjdHVyZQorICAiQy1jIEMtdiBuIiAgICMnbWFya2Rvd24tdHMtbW92
ZS10by1uZXh0LWNvZGUtYmxvY2sKKyAgIkMtYyBDLXYgcCIgICAjJ21hcmtkb3duLXRzLW1vdmUt
dG8tcHJldmlvdXMtY29kZS1ibG9jaworICAiUkVUIiAgICAgICAgICMnbWFya2Rvd24tdHMtbmV3
bGluZQorICAiTS1SRVQiICAgICAgICMnbWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbQorICAi
VEFCIiAgICAgICAgICMnbWFya2Rvd24tdHMtb3V0bGluZS1jeWNsZSkKKworKGRlZnZhci1rZXlt
YXAgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLW1hcAorICA6ZG9jICJLZXltYXAgZm9yIGBt
YXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUnLgorVGhlc2Ugb3ZlcnJpZGUga2V5cyBpbiBgbWFy
a2Rvd24tdHMtbW9kZS1tYXAnIHRvIHN1cHBvcnQgZXhlY3V0aW5nIHRoZWlyCitjb21tYW5kcyBp
biBhIGNvZGUtYmxvY2sgY29udGV4dC4iCisgIDpwYXJlbnQgbWFya2Rvd24tdHMtbW9kZS1tYXAK
KyAgIk0tLiIgICAgICAgICAjJ21hcmtkb3duLXRzLS1jb2RlLWJsb2NrLXhyZWYtZmluZC1kZWZp
bml0aW9ucworICAiVEFCIiAgICAgICAgICMnaW5kZW50LWZvci10YWItY29tbWFuZAorICAiUkVU
IiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiQy1qIiAgICAg
ICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1SRVQiICAgICAgICMn
bWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbmV3bGluZQorICAiTS1xIiAgICAgICAgICMnbWFya2Rv
d24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgpCisKKyhlYXN5LW1lbnUtZGVmaW5lIG1h
cmtkb3duLXRzLW1vZGUtbWVudSBtYXJrZG93bi10cy1tb2RlLW1hcAorICAiYG1hcmtkb3duLXRz
LW1vZGUnIG1lbnUuIgorICAnKCJNYXJrZG93biIgOnZpc2libGUgbWFya2Rvd24tdHMtbWVudS1i
YXItc2hvdworICAgICItLSIKKyAgICBbIkN5Y2xlIE91dGxpbmUgVmlzaWJpbGl0eSIgbWFya2Rv
d24tdHMtb3V0bGluZS1jeWNsZQorICAgICA6aGVscCAiQ3ljbGUgaGVhZGluZyB2aXNpYmlsaXR5
IGZyb20gcG9pbnQiXQorICAgIFsiVG9nZ2xlIEhpZGUgTWFya3VwIiBtYXJrZG93bi10cy10b2dn
bGUtaGlkZS1tYXJrdXAKKyAgICAgOnN0eWxlIHRvZ2dsZSA6c2VsZWN0ZWQgbWFya2Rvd24tdHMt
aGlkZS1tYXJrdXAKKyAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1hcmt1cCBjaGFyYWN0
ZXJzIl0KKyAgICBbIlRvZ2dsZSBJbmxpbmUgSW1hZ2VzIiBtYXJrZG93bi10cy10b2dnbGUtaW5s
aW5lLWltYWdlcworICAgICA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1pbmxp
bmUtaW1hZ2VzCisgICAgIDpoZWxwICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGJl
bG93IGxpbmtzIl0KKyAgICAiLS0iCisgICAgWyJVcCIgb3V0bGluZS11cC1oZWFkaW5nCisgICAg
IDpoZWxwICJNb3ZlIHRvIHRoZSBwYXJlbnQgaGVhZGluZyJdCisgICAgWyJOZXh0IiBvdXRsaW5l
LW5leHQtaGVhZGluZworICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5nIl0KKyAg
ICBbIlByZXZpb3VzIiBvdXRsaW5lLXByZXZpb3VzLWhlYWRpbmcKKyAgICAgOmhlbHAgIk1vdmUg
dG8gdGhlIHByZXZpb3VzIGhlYWRpbmciXQorICAgIFsiTmV4dCBTYW1lIExldmVsIiBvdXRsaW5l
LWZvcndhcmQtc2FtZS1sZXZlbAorICAgICA6aGVscCAiTW92ZSB0byB0aGUgbmV4dCBoZWFkaW5n
IGF0IHRoZSBzYW1lIGxldmVsIl0KKyAgICBbIlByZXZpb3VzIFNhbWUgTGV2ZWwiIG91dGxpbmUt
YmFja3dhcmQtc2FtZS1sZXZlbAorICAgICA6aGVscCAiTW92ZSB0byB0aGUgcHJldmlvdXMgaGVh
ZGluZyBhdCB0aGUgc2FtZSBsZXZlbCJdCisgICAgIi0tIgorICAgIFsiSnVtcCIgaW1lbnUKKyAg
ICAgOmhlbHAgIkp1bXAgdG8gYSBoZWFkaW5nIHZpYSBjb21wbGV0aW9uIl0KKyAgICAiLS0iCisg
ICAgWyJNb3ZlIFN1YnRyZWUgVXAiIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11cAorICAgICA6
aGVscCAiTW92ZSB0aGUgY3VycmVudCBzZWN0aW9uIG9yIGxpc3QgaXRlbSB1cCJdCisgICAgWyJN
b3ZlIFN1YnRyZWUgRG93biIgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24KKyAgICAgOmhl
bHAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93biJdCisgICAgWyJQ
cm9tb3RlIiBtYXJrZG93bi10cy1wcm9tb3RlCisgICAgIDpoZWxwICJQcm9tb3RlIGhlYWRpbmcg
b3IgbGlzdCBpdGVtIl0KKyAgICBbIkRlbW90ZSIgbWFya2Rvd24tdHMtZGVtb3RlCisgICAgIDpo
ZWxwICJEZW1vdGUgaGVhZGluZyBvciBsaXN0IGl0ZW0iXQorICAgICItLSIKKyAgICBbIkVtcGhh
c2lzLi4uIiBtYXJrZG93bi10cy1lbXBoYXNpemUKKyAgICAgOmhlbHAgIkFkZCBvciBjaGFuZ2Ug
ZW1waGFzaXMgb24gcmVnaW9uIl0KKyAgICBbIkFkZCBCbG9jayBTdHJ1Y3R1cmUiIG1hcmtkb3du
LXRzLWluc2VydC1zdHJ1Y3R1cmUKKyAgICAgOmhlbHAgIkluc2VydCBhIGNvZGUgYmxvY2ssIHF1
b3RlLCBvciBvdGhlciBzdHJ1Y3R1cmUiXQorICAgICItLSIKKyAgICBbIlRvZ2dsZSBDaGVja2Jv
eCIgbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94CisgICAgIDpoZWxwICJUb2dnbGUgdGFzayBs
aXN0IGNoZWNrYm94IGF0IHBvaW50Il0KKyAgICBbIk5ldyBMaXN0IEl0ZW0iIG1hcmtkb3duLXRz
LWluc2VydC1saXN0LWl0ZW0KKyAgICAgOmhlbHAgIkluc2VydCBhIG5ldyBsaXN0IGl0ZW0gYWZ0
ZXIgdGhlIGN1cnJlbnQgb25lIl0KKyAgICBbIlJlbnVtYmVyIExpc3QiIG1hcmtkb3duLXRzLXJl
bnVtYmVyLWxpc3QKKyAgICAgOmhlbHAgIlJlbnVtYmVyIHRoZSBvcmRlcmVkIGxpc3QgYXQgcG9p
bnQiXSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2V0LXVwICgpCisgICJTZXQgdXAgdGhlIGJ1
ZmZlciBmb3IgYG1hcmtkb3duLXRzLW1vZGUnLgorSWYgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5s
aW5lJyBpcyBub24tbmlsLCB1c2UgYSBsaWdodHdlaWdodCBzZXQgdXAgZm9yCitlbWJlZGRlZCBp
bmxpbmUgYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcnMuCisKK05PVEU6IENhbGwgdGhpcyBmdW5j
dGlvbiBvbmx5IHdoZW4gdGhlIHRyZWVzaXQgYG1hcmtkb3duJyBhbmQKK2BtYXJrZG93bi1pbmxp
bmUnIHBhcnNlcnMgYXJlIGF2YWlsYWJsZS4iCisKKyAgOzsgU2V0IHRoZXNlIHVwIGZvciBib3Ro
IG1hc3RlciBhbmQgaW5saW5lIGZvciBjb2RlLWJsb2NrIGJ1ZmZlcnMuCisgIChzZXRxLWxvY2Fs
IGNvbW1lbnQtc3RhcnQgIjwhLS0gIgorICAgICAgICAgICAgICBjb21tZW50LWVuZCAiIC0tPiIK
KyAgICAgICAgICAgICAgY29tbWVudC1zdGFydC1za2lwICI8IS0tWyBcdF0qIgorICAgICAgICAg
ICAgICBjb21tZW50LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAgICAgICAgICAgIGNvbW1lbnQt
dXNlLXN5bnRheCBuaWwpCisKKyAgKHNldHEtbG9jYWwgZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24K
KyAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAg
ICAgZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbgorICAgICAgICAgICAgICAjJ21hcmtk
b3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKQorCisgIDs7IGBhZGFwdGl2ZS1maWxsLWZ1
bmN0aW9uJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKKyAgOzsgYGFkYXB0aXZlLWZpbGwtcmVnZXhw
JzsgdGhlIGRlZmF1bHQgcmVnZXhwIGlzIGZpbmUgYXMgYQorICA7OyBmYWxsYmFjayBmb3IgcGxh
aW4gKG5vbi1saXN0KSBwYXJhZ3JhcGhzLgorICAoc2V0cS1sb2NhbCBhZGFwdGl2ZS1maWxsLWZ1
bmN0aW9uICMnbWFya2Rvd24tdHMtLWFkYXB0aXZlLWZpbGwpCisKKyAgOzsgQ3JlYXRlIGFuZCBj
b25maWd1cmUgdGhlIHBhcnNlcnMuCisgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3du
LWlubGluZSkKKyAgKHNldHEgdHJlZXNpdC1wcmltYXJ5LXBhcnNlcgorICAgICAgICAodHJlZXNp
dC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikpCisKKyAgKHNldHEtbG9jYWwgZm9udC1sb2NrLWRl
ZmF1bHRzIG5pbCkKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MgbWFy
a2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpCi0gIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Ut
c2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykpCi0gIChhZGQtdG8tbGlzdCAn
Zm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgJ2ludmlzaWJsZSkKLQotICAod2hlbiAodHJl
ZXNpdC1yZWFkeS1wICdodG1sIHQpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnaHRtbCkK
LSAgICAocmVxdWlyZSAnaHRtbC10cy1tb2RlKQotICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS1m
b250LWxvY2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9u
dC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1z
ZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGlu
Z3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRp
bmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAg
ICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAg
ICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAg
ICAgICBodG1sLXRzLW1vZGUtLXRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCi0gICAg
KHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBl
bmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz
aXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICcoKGh0bWxfYmxvY2sp
IEBodG1sKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdodG1sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCi0KLSAgKHdoZW4gKHRyZWVzaXQtcmVh
ZHktcCAneWFtbCB0KQotICAgIChyZXF1aXJlICd5YW1sLXRzLW1vZGUpCi0gICAgKGRlZnZhciB5
YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFyIHlhbWwtdHMtbW9k
ZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQt
bG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2st
c2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2Nr
LXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxp
c3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1saXN0
Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAg
ICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQotICAgIChz
ZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAoYXBwZW5k
IHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0
LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICd5YW1sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3duCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKChtaW51c19tZXRhZGF0
YSkgQHlhbWwpKSkpKQotCi0gICh3aGVuICh0cmVlc2l0LXJlYWR5LXAgJ3RvbWwgdCkKLSAgICAo
cmVxdWlyZSAndG9tbC10cy1tb2RlKQotICAgIChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxv
Y2stc2V0dGluZ3MpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJl
LWxpc3QpCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAo
YXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICB0b21s
LXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykpCi0gICAgKHNldHEtbG9jYWwgdHJlZXNpdC1m
b250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9u
dC1sb2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1m
ZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVh
dHVyZS1saXN0KSkKLSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAg
ICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAodHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAgICAgICAgICAgICAg
IDplbWJlZCAndG9tbAotICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgot
ICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZv
bnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1pdGVyIGhlYWRpbmcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3JhcGgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhZ3JhcGgtaW5saW5lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2UtcHJl
dmlldykpKQorCisgIChjb25kIChtYXJrZG93bi10cy0tc2V0LXVwLWlubGluZQorICAgICAgICAg
IChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAg
ICAodHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ21h
cmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAg
ICAgICAgICAgICAgICAgICAgICAgJygoaW5saW5lKSBAbWFya2Rvd24taW5saW5lKSkpKQorICAg
ICAgICAodAorICAgICAgICAgOzsgUmFuZ2Ugc2V0dGluZ3MgZGlmZmVyIGluIHRoZSBtYXN0ZXIg
YnVmZmVyIHZzLiBpbmxpbmUgYWJvdmUuCisgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJh
bmdlLXNldHRpbmdzIChtYXJrZG93bi10cy0tcmFuZ2Utc2V0dGluZ3MpKQorCisgICAgICAgICA7
OyBDb25maWd1cmUgZmVhdHVyZXMgbmVlZGVkIG9ubHkgaW4gdGhlIG1hc3RlciBidWZmZXIuCisK
KyAgICAgICAgIDs7IEltZW51IHN1cHBvcnQuCisgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0
LXNpbXBsZS1pbWVudS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgYCgoIkhlYWRpbmdz
IiAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5pbCAsIydtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uKQor
ICAgICAgICAgICAgICAgICAgICAgICAoIkNvZGUgQmxvY2tzIiAsIydtYXJrZG93bi10cy0taW1l
bnUtY29kZS1ibG9jay1ub2RlLXAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJr
ZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1uYW1lLWZ1bmN0aW9uKSkpCisKKyAgICAgICAgIDs7
IE91dGxpbmUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtb3V0bGluZS1w
cmVkaWNhdGUgIydtYXJrZG93bi10cy0tb3V0bGluZS1wcmVkaWNhdGUpCisgICAgICAgICAoc2V0
cS1sb2NhbCBvdXRsaW5lLW1pbm9yLW1vZGUtY3ljbGUgdCkKKyAgICAgICAgIChvdXRsaW5lLW1p
bm9yLW1vZGUgMSkKKyAgICAgICAgIChtYXJrZG93bi10cy0tYXBwbHktZWxsaXBzaXMpCisKKyAg
ICAgICAgIDs7IE5PVEU6IGBvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2snIHdhcyBvYnNvbGV0ZWQg
aW4gMjkuMSAoY29tbWl0CisgICAgICAgICA7OyA1M2IxZTZmOTZjYikgb24gdGhlIGdyb3VuZHMg
dGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAgICAgICAgIDs7IHJlcGxhY2Vt
ZW50IHdhcyBwcm92aWRlZCBhbmQgb3V0bGluZS5lbCBpdHNlbGYgc3RpbGwgcnVucyB0aGUgaG9v
aworICAgICAgICAgOzsgaW4gMTArIHBsYWNlcy4KKyAgICAgICAgICh3aXRoLXN1cHByZXNzZWQt
d2FybmluZ3MgKChvYnNvbGV0ZSBvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2spKQorICAgICAgICAg
ICAoYWRkLWhvb2sgJ291dGxpbmUtdmlldy1jaGFuZ2UtaG9vaworICAgICAgICAgICAgICAgICAg
ICAgIydtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSBuaWwgdCkpCisKKyAgICAgICAg
IChwcm9nbgorICAgICAgICAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlk
ZS1tYXJrdXApCisgICAgICAgICAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdmb250LWxvY2stZXh0
cmEtbWFuYWdlZC1wcm9wcykKKyAgICAgICAgICAgKGRvbGlzdCAocHJvcCAnKGludmlzaWJsZSBk
aXNwbGF5IGJ1dHRvbiBjYXRlZ29yeSBhY3Rpb24gaGVscC1lY2hvKSkKKyAgICAgICAgICAgICAo
YWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXByb3BzIHByb3ApKSkKKworICAg
ICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAnaHRtbCB0KQorICAgICAgICAgICAodHJlZXNp
dC1wYXJzZXItY3JlYXRlICdodG1sKQorICAgICAgICAgICAocmVxdWlyZSAnaHRtbC10cy1tb2Rl
KQorICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQor
ICAgICAgICAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tdHJlZXNpdC1mb250LWxvY2stZmVhdHVy
ZS1saXN0KQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n
cworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRp
bmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC10cy1tb2RlLS1mb250LWxv
Y2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1m
ZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1s
b2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxv
Y2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLXRy
ZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRy
ZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVl
c2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz
aXQtcmFuZ2UtcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICdo
dG1sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bG9jYWwgdAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnKChodG1sX2Jsb2NrKSBAaHRtbCkKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOmhvc3QgJ21hcmtkb3duLWlubGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnKChodG1sX3RhZykgQGh0bWwpKSkpKQorCisgICAgICAgICAod2hlbiAodHJlZXNpdC1yZWFk
eS1wICd5YW1sIHQpCisgICAgICAgICAgIChyZXF1aXJlICd5YW1sLXRzLW1vZGUpCisgICAgICAg
ICAgIChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCisgICAgICAgICAg
IChkZWZ2YXIgeWFtbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAg
ICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAg
ICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAg
ICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAg
ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAor
ICAgICAgICAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Cisg
ICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxp
c3QpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAg
ICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAneWFtbAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOmxvY2FsIHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygobWludXNfbWV0
YWRhdGEpIEB5YW1sKSkpKSkKKworICAgICAgICAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAndG9t
bCB0KQorICAgICAgICAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQorICAgICAgICAgICAoZGVm
dmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQorICAgICAgICAgICAoZGVmdmFy
IHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkKKyAgICAgICAgICAgKHNldHEg
dHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVl
c2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgIHRvbWwtdHMt
bW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKKyAgICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNp
dC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0
LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRy
ZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgdG9t
bC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAgICAgICAgICAgKHNldHEtbG9j
YWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5k
IHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1i
ZWQgJ3RvbWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3du
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcoKHBsdXNfbWV0YWRhdGEpIEB0b21sKSkpKSkKKworICAgICAg
ICAgOzsgU3VwcG9ydCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGluIGEgY29kZS1ibG9jayBjb250
ZXh0LgorCisgICAgICAgICA7OyBFbmFibGUgdGhlIG1pbm9yIG1vZGUgYG1hcmtkb3duLXRzLWNv
ZGUtYmxvY2stbW9kZScgYW5kIGl0cyBrZXltYXAKKyAgICAgICAgIDs7IHdoZW4gcG9pbnQgaXMg
d2l0aGluIGEgY29kZSBibG9jay4KKyAgICAgICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhv
b2sKKyAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1lbmFibGUtY29kZS1ibG9jay1t
b2RlIG5pbCAnbG9jYWwpCisgICAgICAgICA7OyBJZiBgc2F2ZS1wbGFjZS1tb2RlJyBvciBzaW1p
bGFyIGlzIHVzZWQsIHBvaW50IGNvdWxkIHN0YXJ0IHdpdGhpbiBhCisgICAgICAgICA7OyBjb2Rl
IGJsb2NrIHNvIGluaXRpYWxpemUgdGhhdCBzdGF0ZS4KKyAgICAgICAgIChydW4td2l0aC1pZGxl
LXRpbWVyIDAuMDEgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJ21hcmtkb3du
LXRzLS1lbmFibGUtY29kZS1ibG9jay1tb2RlKQorICAgICAgICAgOzsgRm9yIGVhY2ggZWxpZ2li
bGUgY29tbWFuZCwgZXhlY3V0ZSBpdCBpbiBhIGNvZGUtYmxvY2sgY29udGV4dCwKKyAgICAgICAg
IDs7IG90aGVyd2lzZSBpbiB0aGUgYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcidzIGNvbnRleHQu
CisgICAgICAgICAoYWRkLWhvb2sgJ3ByZS1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAg
ICAjJ21hcmtkb3duLXRzLS1tYXliZS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIG5pbCAnbG9j
YWwpKSkKIAogICAodHJlZXNpdC1tYWpvci1tb2RlLXNldHVwKQotICAobWFya2Rvd24tdHMtLXNl
dC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCisKKyAgOzsgRG8gbm90IGVu
YWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5kaXJlY3QgYnVmZmVycyBzdWNoIGFzIHRoZSBvbmUK
KyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2NrIGNvbW1hbmRzLgorICAodW5sZXNzIChidWZmZXIt
YmFzZS1idWZmZXIpCisgICAgKGppdC1sb2NrLXJlZ2lzdGVyICMnbWFya2Rvd24tdHMtLWZvbnRp
ZnktYmFyZS11cmkpKQorCisgICh1bmxlc3MgbWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUKKyAg
ICA7OyBPcmRlciBtYXR0ZXJzOiBgbWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCcgY2FsbHMg
YGZvbnQtbG9jay1mbHVzaCcKKyAgICA7OyAob25seSBtZWFuaW5nZnVsIG9uY2UgYHRyZWVzaXQt
bWFqb3ItbW9kZS1zZXR1cCcgaGFzIHdpcmVkIHVwCisgICAgOzsgZm9udC1sb2NrKSwgYW5kIGBt
YXJrZG93bi10cy1kZWZhdWx0LWZvbGRpbmcnIGNhbGxzIG91dGxpbmUKKyAgICA7OyBjb21tYW5k
cyB0aGF0IHJlbHkgb24gYG91dGxpbmUtc2VhcmNoLWZ1bmN0aW9uJywgd2hpY2gKKyAgICA7OyBg
dHJlZXNpdC1tYWpvci1tb2RlLXNldHVwJyBpbnN0YWxscyBmcm9tIGB0cmVlc2l0LW91dGxpbmUt
cHJlZGljYXRlJy4KKyAgICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10
cy1oaWRlLW1hcmt1cCkKKyAgICA7OyBSZXNwZWN0IHRoZSB1c2VyJ3MgZGVmYXVsdCBvdXRsaW5l
IGZvbGRpbmcuCisgICAgKHBjYXNlIG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZworICAgICAg
KCdzaG93LWFsbCAoaWdub3JlKSkKKyAgICAgICgnZm9sZC1hbGwgKG91dGxpbmUtaGlkZS1zdWJs
ZXZlbHMgMSkpCisgICAgICAoJ2ZvbGQtaGVhZGluZ3MgKG91dGxpbmUtc2hvdy1hbGwpCisgICAg
ICAgICAgICAgICAgICAgICAgKG91dGxpbmUtaGlkZS1yZWdpb24tYm9keSAocG9pbnQtbWluKSAo
cG9pbnQtbWF4KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2Vy
cyAoYXJnKQorICAiSW5zdGFsbCBgbWFya2Rvd24tdHMtbW9kZScgdHJlZS1zaXR0ZXIgbGFuZ3Vh
Z2UgcGFyc2Vycy4KK0lmIG5lZWRlZCwgaW5zdGFsbCB0aGUgcmVxdWlyZWQgcGFyc2VycyBmb3Ig
YG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScuCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50
LCBBUkcsIGlmIG5lZWRlZCwgaW5zdGFsbCBwYXJzZXJzIGZvciBgaHRtbCcsCitgeWFtbCcsIGFu
ZCBgdG9tbCcuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAodW5sZXNzICh0cmVlc2l0LXJlYWR5
LXAgJ21hcmtkb3duIHQpCisgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICdt
YXJrZG93bikpCisgICh1bmxlc3MgKHRyZWVzaXQtcmVhZHktcCAnbWFya2Rvd24taW5saW5lIHQp
CisgICAgKHRyZWVzaXQtaW5zdGFsbC1sYW5ndWFnZS1ncmFtbWFyICdtYXJrZG93bi1pbmxpbmUp
KQorICAod2hlbiBhcmcKKyAgICAodW5sZXNzICh0cmVlc2l0LXJlYWR5LXAgJ2h0bWwgdCkKKyAg
ICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCisgICAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1
YWdlLWdyYW1tYXIgJ2h0bWwpKQorICAgICh1bmxlc3MgKHRyZWVzaXQtcmVhZHktcCAneWFtbCB0
KQorICAgICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9kZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwt
bGFuZ3VhZ2UtZ3JhbW1hciAneWFtbCkpCisgICAgKHVubGVzcyAodHJlZXNpdC1yZWFkeS1wICd0
b21sIHQpCisgICAgICAocmVxdWlyZSAndG9tbC10cy1tb2RlKQorICAgICAgKHRyZWVzaXQtaW5z
dGFsbC1sYW5ndWFnZS1ncmFtbWFyICd0b21sKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmlu
ZS1kZXJpdmVkLW1vZGUgbWFya2Rvd24tdHMtbW9kZSB0ZXh0LW1vZGUgIk1hcmtkb3duIgotICAi
TWFqb3IgbW9kZSBmb3IgZWRpdGluZyBNYXJrZG93biB1c2luZyB0cmVlLXNpdHRlciBncmFtbWFy
LiIKLQotICAoc2V0cS1sb2NhbCBjb21tZW50LXN0YXJ0ICI8IS0tICIpCi0gIChzZXRxLWxvY2Fs
IGNvbW1lbnQtZW5kICIgLS0+IikKLQotICAoc2V0cS1sb2NhbCBmb250LWxvY2stZGVmYXVsdHMg
bmlsCi0JICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBo
ZWFkaW5nKQotCQkJCQkgICAgICAgKHBhcmFncmFwaCkKLQkJCQkJICAgICAgIChwYXJhZ3JhcGgt
aW5saW5lKSkpCi0KLSAgKHNldHEtbG9jYWwgdHJlZXNpdC1zaW1wbGUtaW1lbnUtc2V0dGluZ3MK
LSAgICAgICAgICAgICAgYCgoIkhlYWRpbmdzIiAsIydtYXJrZG93bi10cy1pbWVudS1ub2RlLXAK
LSAgICAgICAgICAgICAgICAgbmlsICwjJ21hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24p
KSkKLSAgKHNldHEtbG9jYWwgdHJlZXNpdC1vdXRsaW5lLXByZWRpY2F0ZSAjJ21hcmtkb3duLXRz
LW91dGxpbmUtcHJlZGljYXRlKQotCi0gICh3aGVuIChhbmQgKHRyZWVzaXQtZW5zdXJlLWluc3Rh
bGxlZCAnbWFya2Rvd24pCi0gICAgICAgICAgICAgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAn
bWFya2Rvd24taW5saW5lKSkKLSAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bi1p
bmxpbmUpCi0gICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnbWFya2Rvd24pCi0gICAgKG1hcmtk
b3duLXRzLXNldHVwKSkpCisgICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtkb3duIHVzaW5n
IHRyZWUtc2l0dGVyIGdyYW1tYXIuCitOT1RFOiBTZWUgYG1hcmtkb3duLXRzLS1zZXQtdXAtaW5s
aW5lJy4iCisgIChpZiAoYW5kICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3duKQor
ICAgICAgICAgICAodHJlZXNpdC1lbnN1cmUtaW5zdGFsbGVkICdtYXJrZG93bi1pbmxpbmUpKQor
ICAgICAgKG1hcmtkb3duLXRzLS1zZXQtdXApCisgICAgKHdhcm4gIm1hcmtkb3duLXRzLW1vZGUg
Y2Fubm90IGJlIHNldCB1cDsgdXNpbmcgZnVuZGFtZW50YWwtbW9kZS4KK1RoZSB0cmVlLXNpdHRl
ciBwYXJzZXJzIGBtYXJrZG93bicgYW5kIGBtYXJrZG93bi1pbmxpbmUnIHdlcmUgbm90IGZvdW5k
LgorVXNlIHRoZSBjb21tYW5kIGBtYXJrZG93bi10cy1tb2RlLWluc3RhbGwtcGFyc2VycycgdG8g
aW5zdGFsbCB0aGVtLgorV2l0aCBhIHByZWZpeCBhcmd1bWVudCwgaXQgY2FuIGFsc28gaW5zdGFs
bCBvcHRpb25hbCBwYXJzZXJzLiIpCisgICAgKGZ1bmRhbWVudGFsLW1vZGUpKSkKIAogKGRlcml2
ZWQtbW9kZS1hZGQtcGFyZW50cyAnbWFya2Rvd24tdHMtbW9kZSAnKG1hcmtkb3duLW1vZGUpKQog
Ci07OzsjIyNhdXRvbG9hZAotKGRlZnVuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUgKCkKLSAgIkVu
YWJsZSBgbWFya2Rvd24tdHMtbW9kZScgd2hlbiBpdHMgZ3JhbW1hciBpcyBhdmFpbGFibGUuCi1B
bHNvIHByb3Bvc2UgdG8gaW5zdGFsbCB0aGUgZ3JhbW1hciB3aGVuIGB0cmVlc2l0LWVuYWJsZWQt
bW9kZXMnCi1pcyB0IG9yIGNvbnRhaW5zIHRoZSBtb2RlIG5hbWUuIgotICAoZGVjbGFyZS1mdW5j
dGlvbiB0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICJ0cmVlc2l0LmMiKQotICAoaWYgKG9y
ICh0cmVlc2l0LWxhbmd1YWdlLWF2YWlsYWJsZS1wICdtYXJrZG93bikKLSAgICAgICAgICAoZXEg
dHJlZXNpdC1lbmFibGVkLW1vZGVzIHQpCi0gICAgICAgICAgKG1lbXEgJ21hcmtkb3duLXRzLW1v
ZGUgdHJlZXNpdC1lbmFibGVkLW1vZGVzKSkKLSAgICAgIChtYXJrZG93bi10cy1tb2RlKQotICAg
IChmdW5kYW1lbnRhbC1tb2RlKSkpCisoZGVmaW5lLW1pbm9yLW1vZGUgbWFya2Rvd24tdHMtY29k
ZS1ibG9jay1tb2RlCisgICJNb2RlIGVuYWJsZWQgaWYgcG9pbnQgaXMgd2l0aGluIGEgZmVuY2Vk
IGNvZGUgYmxvY2suIgorICA6aW50ZXJhY3RpdmUgbmlsKQogCiA7OzsjIyNhdXRvbG9hZAogKHdo
ZW4gKGJvdW5kcCAndHJlZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFsaXN0KQotICAoYWRkLXRvLWxp
c3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZFxcJyIgLiBtYXJrZG93bi10cy1tb2RlLW1heWJl
KSkKLSAgOzsgVG8gYmUgYWJsZSB0byB0b2dnbGUgYmV0d2VlbiBhbiBleHRlcm5hbCBwYWNrYWdl
IGFuZCBjb3JlIHRzLW1vZGU6CisgIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxc
Lm1kXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUpKQorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1h
bGlzdCAnKCJcXC5tYXJrZG93blxcJyIgLiBtYXJrZG93bi10cy1tb2RlKSkKKyAgKGFkZC10by1s
aXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwubWR4XFwnIiAuIG1hcmtkb3duLXRzLW1vZGUpKQog
ICAoYWRkLXRvLWxpc3QgJ3RyZWVzaXQtbWFqb3ItbW9kZS1yZW1hcC1hbGlzdAogICAgICAgICAg
ICAgICAgJyhtYXJrZG93bi1tb2RlIC4gbWFya2Rvd24tdHMtbW9kZSkpKQogCi0tIAoyLjUzLjAK
Cg==
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 19:01:53 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 15:01:53 2026 Received: from localhost ([127.0.0.1]:42277 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAudU-0003Tu-Nl for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 15:01:53 -0400 Received: from mail-vs1-xe2d.google.com ([2607:f8b0:4864:20::e2d]:56685) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1wAudR-0003Ta-B2 for 80740 <at> debbugs.gnu.org; Thu, 09 Apr 2026 15:01:50 -0400 Received: by mail-vs1-xe2d.google.com with SMTP id ada2fe7eead31-60591ade110so806931137.1 for <80740 <at> debbugs.gnu.org>; Thu, 09 Apr 2026 12:01:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775761308; cv=none; d=google.com; s=arc-20240605; b=TZ9SqXNmKE39V5kTD3Yzzwfd1pQ2JuaJ+IL4SPjpyf9NvAiZcGzng/7wNbMML1G6no FCdWW1b57iyDGldBDkXcw6AlFJKXww/vy2Bhqr4A/iGTiq/nF4APNJ39w9X6w+dhbaei f9VE3lwWCD0HZ4LEdHEuBp8KIwae57vGGSd8QFgxX4jCgY+4uBuLflvjxx6IsB/Ix26I 7eF4OKZOcqndI3JWuyILENyd1ZwwTvDZD4fgBYQ8cKv9ualgxA5jvZkCPpLay/p2SAlw He8XThDbXm3BVfXCtNup393XofjgTnQsqt6FGzUOAyD19iQnxp62qEmU79M4n0TGa0Uc GD0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=MU/GuptrJ1ol+K3SZfcaZcuzgUrGLCzN9I9RDSDsvjI=; fh=E1K4wF5t4FhEBsXrFNQ6leKfr8swX4Jk2WcgMjSoBfo=; b=ZsIcBd65tvKYwyilTrnICQG5baBzOYgcZOnH46m3yhUrWkfHa+z/GmNwqeQqi4BL3y iR8zTrsT+uUx7a89pw+uXsVeWWBhBOB8oIwmbq0H6qa/2hiQ2+25uY94afeLh48ryEBn fpkp+ID5NdO4HuE3oZaWM4PQnygo/bTuJEKfECHaYmeAeoPfDK3TXiGJbTCOMtZH9lRU t2dIAeS7y6Rgt5SrKLESAbY1SWFnqAx2s1PwNiA77ZHOfZzluZRpt/upkcJx7ZEn1Xwz Ko7GFXQ2Onzh54Y8qvmGhTlH3pngwVnZ6eAMNglVCloivHBkdh87rHr2oXjhKjh69wn/ VfQQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775761308; x=1776366108; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=MU/GuptrJ1ol+K3SZfcaZcuzgUrGLCzN9I9RDSDsvjI=; b=P+8Xaz/EqAj93lDbG8ekSpZXwXiOSTlJ3wWVMjPOptMzvPWCpBpQyLpvyuWbngjQXa AtViaDjFgG2oHE3SSpIKL0STp5sHg6oo4i/oNnWKf87tCCkB0vhfbzV1bI3dHv4mj7gk jtY88n7n9YbSyExYnoyKYyg41x7r78IiLLWx3GQeSdZnxg9EWJboMr4sOMISfINlFmmi 2aWCXu+HITSDINwNNCU/TaGFjeMhs+R+5GuAvw9fk5a8F526BP2P1F3d8FpjdlZIwmyj ju9hsz3Z4+80aBqqBNJlmy3JXP6OsCl2CVcKugwF2Hk2GfPBleIVa0fRnoxJPlkAJr1y uQzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775761308; x=1776366108; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MU/GuptrJ1ol+K3SZfcaZcuzgUrGLCzN9I9RDSDsvjI=; b=VaJ9BqTjMyl1lEPYGn2dyf93LYJw8Ziiz4KkVaV15e2wYS6/5lF7slzUZSjxVCEJCZ tnOu2Kh14rjJQcQdTT3uu1uqyG6NNGOBTbMOQIKrIDhfEntujpcS3bUAOuoytaC9yzan xVb0RXu2RCvL2Z4MLaFjOe1Ft1iw1rZwhUlasS8DG8eiy+iV9mashSPO+ojO/Fjmb4yv bWtkGhjCPoTbu0q7ZavxCEBhvSF3ZFOFpUFThK2YtiFziq5j/vIUOXY7buxi/ddBokD2 Y7vX3GK05GuVPphghpLzZ+kAP4df4uVAOLr3NN4JI9TZUlYp4hLCcKYNiBswDDrS6dW+ 0xfQ== X-Forwarded-Encrypted: i=1; AJvYcCUlEzPRZSLNOMFOFK8sgD13hXC9lTzslaidEVKSA97kVC6oFBMMBPCBpvgxXwdCoavioSFqag==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwkN6/BDoO+YCYNSN7yH0XDuTthEpr2sfbk5/wjib4VABZqVo3l qO9c1xbyXEpKXhyljkFjkiNfHGLBkH5SSjE2H3Dw1vhhtbNnxzk/KYVLgmpYCxhoDHJ/fZfzBOz DWczwct/dayM2Jas++UWfwZd0t8Q/JAE= X-Gm-Gg: AeBDieudM+eFLn9D9cALDmsP4t823/isHyONjEUeIVr4sUqjaR+nXwM41NHyNVMQbbX PyuUyWW1tMBBWwOFaaa3jfShPLrBl22Smr+v6KBe+KZlGYzWZuKvOLFHAgGGL4fu62+TpGvim+l 0aeRFfTG2CBfHeI9sLoyNdvGqjOUEIq4D5ePuUQRnuOoEgcwj6Dp1x89cR1AaMPHf3lJBbfO7He sbeo2hfxaP9pAMKWb7xtd6c4WwHIs1B5YP06c9SvKHgZj6VzkU2sI+Q3MpUksIri2Cdcu+QvwtR a6xWOZRWmVWJZgHD006jMmLJTwu4Skm8RbkWIhjEfbWfIcczXOGM6JjNMmHj27TdFhF8bV2zc4l 0WEWxlvspRJW9Qe0d79g8I4EMSEZkbc3ql1RfOxk4AtcSKx7P+a9Rxy1ynEA= X-Received: by 2002:a67:e706:0:b0:605:5801:cb3d with SMTP id ada2fe7eead31-60a00e4303amr71528137.28.1775761308352; Thu, 09 Apr 2026 12:01:48 -0700 (PDT) MIME-Version: 1.0 References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> <87v7e0ezkh.fsf@HIDDEN> In-Reply-To: <87v7e0ezkh.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 9 Apr 2026 15:01:36 -0400 X-Gm-Features: AQROBzCoT0Zs1lu6Vy1opMDgjrW_VKDtkLZKmogK-f9lMm0cLcKzafhfS4qNF8g Message-ID: <CAN+1HboguqPbRr54bQ79PT1axLBDQvGb+3MWdtHfKdArjwmw4g@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000fd840e064f0ba5a5" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, 80740 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000fd840e064f0ba5a5 Content-Type: text/plain; charset="UTF-8" On Thu, Apr 9, 2026 at 14:54 Juri Linkov <juri@HIDDEN> wrote: > > (markdown-ts-mode-maybe): Remove; auto-mode-alist now uses > > markdown-ts-mode directly. > > Why? 'markdown-ts-mode-maybe' is intended to take into account > the user customization in 'treesit-enabled-modes' that allows > to define whether to use 'markdown-ts-mode' or 'markdown-mode'. Isn't that what remappings are for? --000000000000fd840e064f0ba5a5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><span style=3D"font-family:-apple-system,sans-serif">On T= hu, Apr 9, 2026 at 14:54 Juri Linkov <<a href=3D"mailto:juri@HIDDEN"= >juri@HIDDEN</a>> wrote:</span><br></div><div dir=3D"auto"><div clas= s=3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" s= tyle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">>= (markdown-ts-mode-maybe): Remove; auto-mode-alist now uses<br> > markdown-ts-mode directly.<br> <br> Why?=C2=A0 'markdown-ts-mode-maybe' is intended to take into accoun= t<br> the user customization in 'treesit-enabled-modes' that allows<br> to define whether to use 'markdown-ts-mode' or 'markdown-mode&#= 39;.</blockquote><div dir=3D"auto"><br></div><div dir=3D"auto">Isn't th= at what remappings are for?</div></div></div> --000000000000fd840e064f0ba5a5--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 18:55:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 14:55:03 2026 Received: from localhost ([127.0.0.1]:42185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAuWr-0002k6-F2 for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 14:55:03 -0400 Received: from mout-p-103.mailbox.org ([2001:67c:2050:0:465::103]:45756) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1wAuWg-0002gq-IJ for 80740 <at> debbugs.gnu.org; Thu, 09 Apr 2026 14:54:52 -0400 Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4fs8Hg1Yn1z9t1r; Thu, 9 Apr 2026 20:54:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1775760879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=yrc0QUxD6zkonkN69PsBcAR96fvLcLRgeMPccJAD4Ec=; b=LkP8zQ/IFfNJ3beBcSiv/njRNaY/Dc+Vk/m8ewqehJnpMbApghDSGz/Xnzo2VV8if96iA0 Og7ZoFGXep56T2kKH93E2mZ/tQ5gVFu1bNYI5qbwd8RzrH8/o0249ixTDyRnoCs0nk5ATC pffLJLLMXeILYT40VpZtQucxc7CDfvqN2uwahpO4wkP+p2aJtz83xIKXKemTpRuh0K5uka sz9NHsbKeThZOJHDo5u0gffgitm9rOgae/MVhhpwgTiH/qhbvmRpQvRPpBq026KlBm6GsT CpySxSsxEk/hrNwnVxlL9hxmHVnJEwsot64bqTCEDX0GXjVts6diGlk+9FTb8g== From: Juri Linkov <juri@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <m25x61f1ch.fsf@HIDDEN> Organization: LINKOV.NET References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> Date: Thu, 09 Apr 2026 21:52:30 +0300 Message-ID: <87v7e0ezkh.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, 80740 <at> debbugs.gnu.org, =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > (markdown-ts-mode-maybe): Remove; auto-mode-alist now uses > markdown-ts-mode directly. Why? 'markdown-ts-mode-maybe' is intended to take into account the user customization in 'treesit-enabled-modes' that allows to define whether to use 'markdown-ts-mode' or 'markdown-mode'.
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 08:31:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 04:31:40 2026 Received: from localhost ([127.0.0.1]:36901 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAknb-0004ay-AU for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 04:31:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40092) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wAknW-0004ah-A2 for 80740 <at> debbugs.gnu.org; Thu, 09 Apr 2026 04:31:37 -0400 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 <eliz@HIDDEN>) id 1wAknQ-0006zV-Ut; Thu, 09 Apr 2026 04:31:28 -0400 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=WhFv6ifkCgnr25HQtJS26BKXbsJ+VNnk7woxtPfMBAQ=; b=cah4AKur+q6bIWQPj1fm EPxnwUf+OTh58L1djAbrXx16T0Q5W7MGhDZbHI8xsnkxEjyasMF1Lqb8am1vO31e04Mj4D6r52ECE 0sy5V6gAkKfdlJTTUIahKueRq7FSQwFSwEmtJEq5QK9jcPRVMkiCawj2T8cTMqgSrRp4imEa6mZ/1 uAREUDqZtFedj3CU4gTkJn3iMGPqpSB6e7UDA5S9rqr+Y4z7OzkwhAtVmmrNp1GzfRmEHqdYgvMYn nqdFjNpQm//vkdYAiDVEUHlM6J8Q1Q9iVF1LfDseOIEgOeRimhCoUQrjEErlqAqaY8qdAPq5I+4nG zdDNW2dwldxO5w==; Date: Thu, 09 Apr 2026 11:31:24 +0300 Message-Id: <86v7e0v8kj.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Rahul Martim Juliato <rahuljuliato@HIDDEN> In-Reply-To: <m25x61f1ch.fsf@HIDDEN> (message from Rahul Martim Juliato on Wed, 08 Apr 2026 21:01:50 -0300) Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> <m25x61f1ch.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80740 Cc: casouri@HIDDEN, 80740 <at> debbugs.gnu.org, shipmints@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, > 80740 <at> debbugs.gnu.org > From: Rahul Martim Juliato <rahuljuliato@HIDDEN> > Date: Wed, 08 Apr 2026 21:01:50 -0300 > > +(defcustom markdown-ts-checked-checkbox "☑" > + "If markup is hidden, display this checked task list string. > +nil displays the raw markup." > + :type '(choice (string :tag "Display specified string") > + (const :tag "Display original markup" nil)) > + :safe #'string-or-null-p > + :version "31.1" > + :package-version "1.0") > + > +(defcustom markdown-ts-unchecked-checkbox "☐" > + "If markup is hidden, display this unchecked task list string. > +nil displays the raw markup." > + :type '(choice (string :tag "Display specified string") > + (const :tag "Display original markup" nil)) > + :safe #'string-or-null-p > + :version "31.1" > + :package-version "1.0") These non-ASCII characters should not be used without checking if they can be displayed (see char-displayable-p). This is especially important on TTY frames. Bonus points for designing ASCII replacements for when these non-ASCII symbols cannot be displayed. > +(defcustom markdown-ts-thematic-break-character ?─ > + "If markup is hidden, display this thematic break string. > +The character is repeated to fill the window width. > +nil displays the raw markup." > + :type '(choice (character :tag "Display specified character") > + (const :tag "Display original markup" nil)) > + :version "31.1" > + :package-version "1.0") > + > +(defcustom markdown-ts-hard-line-break-backslash "¶" > + "If markup is hidden, display this for a backslash hard line break. > +The value can be a character or a string; nil keeps the raw markup." > + :type '(choice (character :tag "Display specified character") > + (string :tag "Display specified string") > + (const :tag "Display original markup" nil)) > + :version "31.1" > + :package-version "1.0") Same here. > +(defcustom markdown-ts-hard-line-break-space > + (lambda (n) (make-string n ?¶)) Why is ?¶ hard-coded, instead of using markdown-ts-hard-line-break-backslash? > +(defface markdown-ts-emphasis '((t (:inherit italic))) > + "Face for Markdown emphasis (italic) text.") > + > +(defface markdown-ts-bold '((t (:inherit bold))) > + "Face for Markdown strong emphasis (bold) text.") > + > +(defface markdown-ts-strikethrough '((t (:strike-through t))) > + "Face for Markdown strikethrough text.") > > (defface markdown-ts-block-quote '((t (:inherit italic))) > "Face for Markdown block quotes.") > > +(defface markdown-ts-link '((t (:inherit link))) > + "Face for Markdown link text and image descriptions.") Is it justified to have separate faces here? Why would users want to have something other than 'bold' for showing the bold face in MD buffers? Also, faces can (and I think should in this case) have the :version tag. > +(defun markdown-ts--code-block-language-mode (lang) > + "Compute and cache a mode symbol from LANG, a symbol. > +Consult the `markdown-ts-code-block-map' cache, or probe mode names. > +Return a valid mode symbol or nil." > + (if-let* ((mapped-mode (alist-get lang markdown-ts-code-block-modes))) > + mapped-mode > + (let ((lang-string (symbol-name lang))) > + (catch :mode > + (dolist (mode > + (list > + ;; Try a treesit mode using the raw string. > + (concat lang-string "-ts-mode") > + ;; Try a conventional mode using the raw string. > + (concat lang-string "-mode") > + ;; Try a treesit mode using the downcased string. > + (concat (downcase lang-string) "-ts-mode") > + ;; Try a conventional mode using the downcased string. > + (concat (downcase lang-string) "-mode"))) > + (setq mode (intern mode)) > + (when (fboundp mode) > + (push (cons lang mode) markdown-ts-code-block-modes) > + (throw :mode mode))))))) I think this should use treesit-major-mode-remap-alist and major-mode-remap-alist, at least before falling back on the above hard-coded conventional modes, if not instead that. This will allow users to customize these remappings only once. > +(define-minor-mode markdown-ts-code-block-mode > + "Mode enabled if point is within a fenced code block." > + :interactive nil) Does this mean this mode is enabled automatically? Thanks.
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 05:45:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 01:45:35 2026
Received: from localhost ([127.0.0.1]:36173 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wAiCs-0008Ox-Qa
for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 01:45:35 -0400
Received: from mail-dy1-x1335.google.com ([2607:f8b0:4864:20::1335]:50655)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <casouri@HIDDEN>) id 1wAiCo-0008Ol-LF
for 80740 <at> debbugs.gnu.org; Thu, 09 Apr 2026 01:45:33 -0400
Received: by mail-dy1-x1335.google.com with SMTP id
5a478bee46e88-2bdd40d3c61so285237eec.1
for <80740 <at> debbugs.gnu.org>; Wed, 08 Apr 2026 22:45:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1775713529; x=1776318329; darn=debbugs.gnu.org;
h=to:references:message-id:content-transfer-encoding:cc:date
:in-reply-to:from:subject:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=QqiNRoBmbtp/pBiycWi/nMje0Icv2NRqih5JBtBKcaI=;
b=Bvi4iJAAIMSPCXN9vhn/T3If4vpAYKAunJEbrjGY5XK4a0IqJwRRUKZ699qqarX/hU
e/NJBU2wOAyo90PAjAqzx00re22YE/lQ6Up3CMQyjF/dKP3EA11K3DFgg6MONmkYHrse
CsBDKSGC67D9xyoh8jN3sw5cN+rJh3X8dzAN+MInVFEfoJfiYA9GJ6U3AUBG9KdDBkJP
1Ck01VMUixJw8vp8kqBvHRVUGQcWjmBHqX84FeCGzdeCATCLHXz3XuuULGa7GlfCSVOQ
Q7sal5vVN544Mc1E7bJZOeerl5C27P++sNKvPKLVhqpDGsWMSwUKPz1aIWJiFJzIIkuK
ZqIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20251104; t=1775713529; x=1776318329;
h=to:references:message-id:content-transfer-encoding:cc:date
:in-reply-to:from:subject:mime-version:x-gm-gg:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=QqiNRoBmbtp/pBiycWi/nMje0Icv2NRqih5JBtBKcaI=;
b=YfpBkQk92YIHGyJF1LTHgA9I32WiLEC0v4JY66l61BPTW5NU088yywUKCk9/OILeOE
ZyS6ILWIvqCGLAd9ju5OzzCn/f3EsqvDdPeqOk3iK9Em2VfTGESwEryZ/HJamCDOS2Qa
g/AU2B1SrGP/KuOsShXpigCDBELxXR1w5sAmaNQ3r/xgEhKgJakhO69qoJO4zWAalO9g
/2rqTr35imvDvS/QI/IGrMGaAwFM8m30KgbDK74Ds9iTGXARXGUPFHjGBofV0Cj3xe10
qGTJLgPwvgyJEqvEmXr57UkOfB2T93Q1LivSJBE5/XbFmK4CRMQN+MntPeY0JjKmyEGO
vQ2Q==
X-Forwarded-Encrypted: i=1;
AJvYcCVUd10qYQZIxOI8+f8cvuPjVHcZE2dUaXwM8wOTFqb1UXTXEiBP0YIFrIWlOr8/PFkEnuW59Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyweeWBqq7GRYjubRLuxicBBClL0Az/uJjmA74YiAK8V+IvkyUN
IGRYpq3QKZHXVYGkhvOR8bZYHzKBY1zCV49OsRAG9kcDtBmfjaz+QxJr
X-Gm-Gg: AeBDietfLxjCOPIqz406usUHIFiSqLsqUjGZ5cS/oQ4YPTMkfPAHda65MwSEN221eXn
BMCaF3UNHq98XwPemSSUITTEey/sobvUJ9kKPIVH9/vlzWp0XVgvDfQmH3zYP1RfAOhxmmhbTsz
E84fXTzNxKSDCAi3R8Q3jfKwK/jKhSD/KAjF73SPuQ1a0oA71EVeyM5/Fstr2rphp/GM63c9qUB
jzxzDqlNbgTdrXudpuXsx+A8MzrQeGP/lvuwIICsBaM8fGbqXm1Y1r+++/WrBJO5BxP8gWe4Kau
ZZCgOuiGAjT65YB7VFfLFNZySLZ2BAZy4uAOKoUtVTBkh/E6nNm+MN3+1z+eVZ9flH6Zaj4vggK
9KfKI59ph5kBRNfl9ZoJRBIFZUtv4qXJvc8CRz+kMA0lJy72b3n/MtSgIhjve6wjChB33bLCwDk
xrucBCYxzzPuAoDjevdjnx0Fep/UL0VAkog0/y4/v3SvPe0w==
X-Received: by 2002:a05:7300:cd95:b0:2d1:815f:19c1 with SMTP id
5a478bee46e88-2d40defaf78mr1135503eec.15.1775713529097;
Wed, 08 Apr 2026 22:45:29 -0700 (PDT)
Received: from smtpclient.apple ([2601:645:c686:b320:4df2:2814:ca07:ef2b])
by smtp.gmail.com with ESMTPSA id
5a478bee46e88-2cba5df5c24sm22582646eec.27.2026.04.08.22.45.28
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Wed, 08 Apr 2026 22:45:28 -0700 (PDT)
Content-Type: text/plain;
charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81\))
Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode'
From: Yuan Fu <casouri@HIDDEN>
In-Reply-To: <m25x61f1ch.fsf@HIDDEN>
Date: Wed, 8 Apr 2026 22:45:17 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <48ABDEF6-BEBA-40E9-8124-72CBBC1E1EC6@HIDDEN>
References: <m2zf3jzamy.fsf@HIDDEN>
<CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN>
<m25x61f1ch.fsf@HIDDEN>
To: Rahul Martim Juliato <rahuljuliato@HIDDEN>
X-Mailer: Apple Mail (2.3826.700.81)
X-Spam-Score: 2.7 (++)
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 Apr 8, 2026, at 5:01 PM, Rahul Martim Juliato wrote:
> > Stéphane Marks writes: > >> On Fri, Apr 3, 2026 at 11:08 PM Rahul
Martim Juliato wrote: >> >> Hello, >> >> I'm submitting a com [...]
Content analysis details: (2.7 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (casouri[at]gmail.com)
-0.0 SPF_PASS SPF: sender matches SPF record
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
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
[2607:f8b0:4864:20:0:0:0:1335 listed in]
[list.dnswl.org]
1.7 URIBL_BLACK Contains an URL listed in the URIBL blacklist
[URIs: codeberg.org]
X-Debbugs-Envelope-To: 80740
Cc: 80740 <at> debbugs.gnu.org,
=?utf-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.7 (+)
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 Apr 8, 2026, at 5:01 PM, Rahul Martim Juliato wrote:
> > Stéphane Marks writes: > >> On Fri, Apr 3, 2026 at 11:08 PM Rahul
Martim Juliato wrote: >> >> Hello, >> >> I'm submitting a com [...]
Content analysis details: (1.7 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
1.7 URIBL_BLACK Contains an URL listed in the URIBL blacklist
[URIs: codeberg.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:1335 listed in]
[list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (casouri[at]gmail.com)
-0.0 SPF_PASS SPF: sender matches SPF record
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
> On Apr 8, 2026, at 5:01=E2=80=AFPM, Rahul Martim Juliato =
<rahuljuliato@HIDDEN> wrote:
>=20
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>=20
>> On Fri, Apr 3, 2026 at 11:08=E2=80=AFPM Rahul Martim Juliato =
<rahuljuliato@HIDDEN> wrote:
>>=20
>> Hello,
>>=20
>> I'm submitting a comprehensive patch that significantly improves
>> 'markdown-ts-mode'. I want to briefly explain the context, as the =
size
>> of this patch may raise concerns.
>>=20
>> When 'markdown-ts-mode' was first merged into Emacs, it was
>> intentionally minimal: roughly 100 lines, just enough to get =
something
>> working, with the expectation of incremental improvements.
>>=20
>> In recent months, as users started testing the mode, several issues =
were
>> reported: font-lock leaking beyond code blocks, fill-paragraph =
merging
>> list items, missing faces, non-clickable links, and lack of editing,
>> navigation, and folding support. The mode worked for basic
>> fontification, but was not yet suitable for regular use.
>>=20
>> I decided to put my other projects on hold and work through these
>> reports one by one. What began as a set of focused fixes evolved into =
a
>> broader rework of the mode=E2=80=99s internals. Over time, the =
implementation
>> grew from ~100 lines to approximately 2800.
>>=20
>> This work was done in close collaboration with St=C3=A9phane Marks, =
whose
>> reviews, patches, and discussions significantly influenced the design
>> and implementation. I consider him a co-author of this work.
>>=20
>> Due to strong interdependencies, the changes could not be cleanly =
split
>> into smaller independent patches. As a result, this is submitted as a
>> single comprehensive change.
>>=20
>> Important note: there are no breaking changes.
>>=20
>> Existing behavior is preserved, and all changes are additive. Users =
of
>> 'markdown-ts-mode' will see the same buffers, with improved =
correctness,
>> additional features, and fewer bugs.
>>=20
>> Before describing the features, this patch also addresses several bug
>> fixes:
>>=20
>> 1. fill-paragraph merged adjacent list items into a single paragraph
>> (bug#80613).
>>=20
>> 2. Opening a markdown-ts-mode buffer broke dired-hide-details-mode =
for
>> the rest of the session, due to modifying
>> font-lock-extra-managed-props globally instead of buffer-locally.
>> Fixed using setq-local (bug#80690).
>>=20
>> 3. Nested or indented list items were filled incorrectly due to =
column
>> alignment issues (bug#80625).
>>=20
>> 4. Font-lock leaked beyond code blocks due to appended range settings
>> from embedded language modes.
>>=20
>> 5. Recursive Markdown code blocks had no fontification.
>>=20
>> Some known limitations originate from the tree-sitter grammar and are
>> documented in the code (e.g., HTML block handling and block quote
>> embedding limitations).
>>=20
>> The mode now includes:
>>=20
>> Fontification:
>> * Dedicated faces for all Markdown elements
>> * Extended coverage (tables, entities, etc.)
>>=20
>> Links:
>> * Clickable inline, reference, and automatic links
>> * Reference resolution cache
>>=20
>> Code blocks:
>> * Tree-sitter and non-tree-sitter language support
>> * Embedded editing via markdown-ts-code-block-mode
>>=20
>> Editing:
>> * Heading and list manipulation
>> * Context-aware newline behavior
>> * Structure insertion helpers
>> * Checkbox toggling
>>=20
>> Navigation:
>> * Imenu and outline integration
>> * Heading traversal commands
>>=20
>> Fill:
>> * Correct handling of lists, block quotes, and comments
>>=20
>> Visual:
>> * Inline images
>> * Markup hiding
>> * Menu integration
>>=20
>> Additional resources for evaluation:
>> * Full feature checklist:
>> =
https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/feature=
s.md
>>=20
>> * Test file:
>> =
https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/test.md=
>>=20
>> * Screenshots:
>> =
https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/demo
>>=20
>> Overall, this patch brings 'markdown-ts-mode' from a minimal =
prototype
>> to a mode that is practical for everyday Markdown editing.
>>=20
>> With this foundation in place, the remaining items in the feature =
list
>> are already in progress, and features such as exporting, HTML =
preview,
>> and a test suite can be added with less disruption.
>>=20
>> Thank you for your time and review.
>>=20
>> Adding Yuan.
>>=20
>=20
> Hello,
>=20
> Please find attached an updated version of the patch for
> `markdown-ts-mode`.
>=20
> St=C3=A9phane and I worked on addressing some rough edges and making a =
few
> incremental improvements. This version expands feature coverage,
> improves code block handling, navigation, and provides better
> performance overall.
>=20
> Please consider this updated patch for review.
>=20
> The feature list, test files, and demo screenshots have all been =
updated
> and are available at:
> https://codeberg.org/LionyxML/markdown-ts-mode-lab/
>=20
> Note: since this patch renames the mode activation function, a full
> rebuild (e.g., `make bootstrap`) may be required when testing.
>=20
> Thank you for your time and review.
>=20
> --=20
> Rahul Martim Juliato
>=20
> <0001-Improve-markdown-ts-mode.patch>
Cool, I=E2=80=99ll look at it and get back!
Yuan=
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 9 Apr 2026 00:02:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 20:02:00 2026 Received: from localhost ([127.0.0.1]:60110 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAcqO-0003me-GR for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 20:02:00 -0400 Received: from mail-dy1-x132a.google.com ([2607:f8b0:4864:20::132a]:54573) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1wAcqL-0003mK-I0 for 80740 <at> debbugs.gnu.org; Wed, 08 Apr 2026 20:01:58 -0400 Received: by mail-dy1-x132a.google.com with SMTP id 5a478bee46e88-2ba9c484e5eso175502eec.1 for <80740 <at> debbugs.gnu.org>; Wed, 08 Apr 2026 17:01:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775692916; x=1776297716; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:face:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=W51VnZVjkL0Z+kXf4XwYaljOUTLe6hvjsZ+slExsQY8=; b=FGWaKx6AIy5pi4qBsA7zHDQ9nEByBZkFBIbuZA4IbgWMTnpV7Okxrh1jR4KhyweZqd QJOoaFsnudi+4o7MCcINmeqx9ihFWpF8+aGT4v7Ddp7xCd4SCR/lLIBiJZmO0xfOiBEG 4KJspJGbPZ0vQf1oi6OmtMxzn7gqFi8GaZ2hm+YE8tH2lU1T8ZmNOzaP66/W1o3B9VGv z5IvN/RVF4ugMsxcNempY6i4b9D8qS3wUYxdO8zCKoRsDhlTJgNRKKJQRRFiJf480WMH dMR37JlNQ1w1wBA5e6ZRST42bHMo4FCco9Si+ctpzYwcTCHCyQWt8Maxqgo8efzWhyaW 6SwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775692916; x=1776297716; h=mime-version:user-agent:message-id:date:face:references:in-reply-to :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=W51VnZVjkL0Z+kXf4XwYaljOUTLe6hvjsZ+slExsQY8=; b=e153fsursQ49EFlLYvbKbiA7mRMT4FY+ZyAewfi/WICHbgE/NPMXCsiyKh7fhvMU5a +Q0t7snUfl5F3iNzo8ApFYiZlHTB7616SdNEdq9+Q2uEMJAZg9pR9Gi7ghzrtJ45JpPa NUDqM+zUlOulOA/rWmRlZUlND2gtxOVsN2fuxkkWhSDzzFlR5FFHfSQR5XbGf8sa1Dgf /ZxQBl8WqcdbQU2jocXTqux2JGWodOrsxeyXm7mSAWrJ2D9GOYcWeAj4Hm0AJynYA583 uT8q0T3HuJlanczPogsyVqjRNaYDvPUTvItXt7kr5QO05aFKm4J+pdIckYxaXwzQZiIH Oqpg== X-Forwarded-Encrypted: i=1; AJvYcCWHZEw48uYrXtw3vYHV91cZiPCLRbm1evDGnNxHAOnOokX9tnM0AfT9tVDY4Po1WqCD4qlk+w==@debbugs.gnu.org X-Gm-Message-State: AOJu0YznLcCFyr+/6q0HbtgEtgr9kqqXmkAS/wmVXvB+q0dPle/kH//E TQMDq0cUCbJ63/5y0C0SXskx3Iir9Ty+dizgh6aI8pi6+RU+bP8F2drb X-Gm-Gg: AeBDietZVdLYDXx/yXzoXIYeSWspBkChRHstJj93a8PsC1g55E9XB+gBqN/ez1uJ1Tm 2Xu+hjxQxng47TsJdt7fQoOis0SmryuTaT28ZBUM71ABkTwJfXfoUtHae1z6rzF+07QQxb3Kq5x xctyCr8xNbqYE7WoD9Ol3oBlXEbVjyjJyXDi+C3oPxe6/3LnfDMqI765KzoADiyO1JB+S9+AeFm fFdEzJvi2UKXLZnUi0p65l+HAyqAJg9mhyh1d6y70O3eZAN7oogjTuPxHnp4vAXmmKx/wgb957U ozqfeM4OXcWK6YyYgu9zaQJlP0Hf19MQSY4liMAHn85U0ec1+ted5g+8DkXbmENUUbDq7C3OQ0h sfO7pYnOBvxJlB8Mqsad4/22hz394BHsKkjWohXdSnWJt2pF5OldF+dGlJYWiYIuY7nsUzRnePM 9YFFLgUcMUyc8Q77ypFAAlcRTOmAUDCJFIRMQSX4Qs3/THFrUeVbT8hY8tSOdlA2RMNLUvw0KfI 9tFLSZ+8FDr/oTl59FPbaQ= X-Received: by 2002:a05:693c:2286:b0:2c0:d46d:cfc2 with SMTP id 5a478bee46e88-2d40e6e08ffmr854433eec.23.1775692915634; Wed, 08 Apr 2026 17:01:55 -0700 (PDT) Received: from MacBook-Pro.local ([185.153.176.105]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12c0ce7dfe8sm15564533c88.3.2026.04.08.17.01.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 17:01:54 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' In-Reply-To: <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> References: <m2zf3jzamy.fsf@HIDDEN> <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABhQTFRFDxIfFR9FMD+RM2CBkZPbZKPEn+Xt////lKVMgwAAAAFiS0dEAIgFHUgAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfqAhsDFwcfcr7WAAACY0lEQVRIx7VVWbLbMAwzBZG6/41LcJHXpl/Vm/G8OADBBWKOo44c//mM2yeoH7go/kqQG3zlucDxgwTzkwz9XVl+K8Z8igL5p4KYKbApCHDC5aGXn7EcD1KCkUl9154EtSJUJWwWIIJbZyLVIIgTguGdCobxQ4nLI3gRLECO9axcwgNYQi81yH5KhGXZ1oU7XSH3YUnQ488YsesOCWrwxYOAgAtW1ZCEZKxoNR4TCILXGnPbjJ65v8ZrbB4fbI02pUaelSjuDKboCS1LifMEg1HwaOpRvV/2Ylja5ekjafyFYU2AnGOTMagh5Qbrs6OngFxTkhFPxUYUZePl3iQnSB7Y+3gcvQocDSYeWOuDYorXZagzhioeqWVSH3ivfvS54/EcW8LvB2eTSJDtbtkJXeGTD/1FwCbMNI/pnC0CjYi3ej2HhDvOD121dGzGFyHgM+5DUnhLNc0lKm0OYptQsWPTJKPMMuil0rhU6+E51th4obJqinOMntOBM59pzlg0wmICoRc3ML5tgpzpODRdk02MQmaEL8YIhdEElJniQbvDRSh7DicV9qjmQFeFHA3mosS8EU6+8g2jV8dzc3jpTK0ZFwWObITvpXZv1MRJXDSOs6WskFcxVKqIlKPMJpzxp9I+udrjLx3tKfB9unHslNi/Wj9AZt8+mGEnnTmPIzMYM5ZENgp1XVghv+uN4/ZE7sf4gXJV9yvHJp1/7EvJlTlz pUspOFJt723pVYz9c2cpgHYfKSMXVz72TvL/rJqxL92+D2cGuelri9Nkc5wX6Hjf6cqEsoPptle/Vtllqb3eEPkHU2QXL+sLC8kAAAAASUVORK5CYII= X-PGP-Key: https://www.rahuljuliato.com/rahul_pub_key.asc Date: Wed, 08 Apr 2026 21:01:50 -0300 Message-ID: <m25x61f1ch.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, Rahul Martim Juliato <rahuljuliato@HIDDEN>, 80740 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable St=C3=A9phane Marks <shipmints@HIDDEN> writes: > On Fri, Apr 3, 2026 at 11:08=E2=80=AFPM Rahul Martim Juliato <rahuljuliat= o@HIDDEN> wrote: > > Hello, > > I'm submitting a comprehensive patch that significantly improves > 'markdown-ts-mode'. I want to briefly explain the context, as the size > of this patch may raise concerns. > > When 'markdown-ts-mode' was first merged into Emacs, it was > intentionally minimal: roughly 100 lines, just enough to get something > working, with the expectation of incremental improvements. > > In recent months, as users started testing the mode, several issues were > reported: font-lock leaking beyond code blocks, fill-paragraph merging > list items, missing faces, non-clickable links, and lack of editing, > navigation, and folding support. The mode worked for basic > fontification, but was not yet suitable for regular use. > > I decided to put my other projects on hold and work through these > reports one by one. What began as a set of focused fixes evolved into a > broader rework of the mode=E2=80=99s internals. Over time, the implement= ation > grew from ~100 lines to approximately 2800. > > This work was done in close collaboration with St=C3=A9phane Marks, whose > reviews, patches, and discussions significantly influenced the design > and implementation. I consider him a co-author of this work. > > Due to strong interdependencies, the changes could not be cleanly split > into smaller independent patches. As a result, this is submitted as a > single comprehensive change. > > Important note: there are no breaking changes. > > Existing behavior is preserved, and all changes are additive. Users of > 'markdown-ts-mode' will see the same buffers, with improved correctness, > additional features, and fewer bugs. > > Before describing the features, this patch also addresses several bug > fixes: > > 1. fill-paragraph merged adjacent list items into a single paragraph > (bug#80613). > > 2. Opening a markdown-ts-mode buffer broke dired-hide-details-mode for > the rest of the session, due to modifying > font-lock-extra-managed-props globally instead of buffer-locally. > Fixed using setq-local (bug#80690). > > 3. Nested or indented list items were filled incorrectly due to column > alignment issues (bug#80625). > > 4. Font-lock leaked beyond code blocks due to appended range settings > from embedded language modes. > > 5. Recursive Markdown code blocks had no fontification. > > Some known limitations originate from the tree-sitter grammar and are > documented in the code (e.g., HTML block handling and block quote > embedding limitations). > > The mode now includes: > > Fontification: > * Dedicated faces for all Markdown elements > * Extended coverage (tables, entities, etc.) > > Links: > * Clickable inline, reference, and automatic links > * Reference resolution cache > > Code blocks: > * Tree-sitter and non-tree-sitter language support > * Embedded editing via markdown-ts-code-block-mode > > Editing: > * Heading and list manipulation > * Context-aware newline behavior > * Structure insertion helpers > * Checkbox toggling > > Navigation: > * Imenu and outline integration > * Heading traversal commands > > Fill: > * Correct handling of lists, block quotes, and comments > > Visual: > * Inline images > * Markup hiding > * Menu integration > > Additional resources for evaluation: > * Full feature checklist: > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/fea= tures.md > > * Test file: > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/tes= t.md > > * Screenshots: > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/demo > > Overall, this patch brings 'markdown-ts-mode' from a minimal prototype > to a mode that is practical for everyday Markdown editing. > > With this foundation in place, the remaining items in the feature list > are already in progress, and features such as exporting, HTML preview, > and a test suite can be added with less disruption. > > Thank you for your time and review. > > Adding Yuan. > Hello, Please find attached an updated version of the patch for `markdown-ts-mode`. St=C3=A9phane and I worked on addressing some rough edges and making a few incremental improvements. This version expands feature coverage, improves code block handling, navigation, and provides better performance overall. Please consider this updated patch for review. The feature list, test files, and demo screenshots have all been updated and are available at: https://codeberg.org/LionyxML/markdown-ts-mode-lab/ Note: since this patch renames the mode activation function, a full rebuild (e.g., `make bootstrap`) may be required when testing. Thank you for your time and review. --=20 Rahul Martim Juliato --=-=-= Content-Type: application/octet-stream; charset=utf-8 Content-Disposition: attachment; filename=0001-Improve-markdown-ts-mode.patch Content-Transfer-Encoding: base64 RnJvbSA2ODNhOTNmYTY4Nzg2NTljYmI0Nzc1YjdmZmJmNWYxYTEwMjIyMGM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYW5kIGEgbW9kZSBt ZW51LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsOiBBZGQgVmVyc2lvbiwK UGFja2FnZS1SZXF1aXJlcywgYW5kIEtleXdvcmRzIGhlYWRlciBmaWVsZHMuICBFeHBhbmQgQ29t bWVudGFyeQp3aXRoIGRvY3VtZW50YXRpb24gZm9yIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMs IGNvZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUt c2l0dGVyIGdyYW1tYXIKYnVncy4KKHJlcXVpcmUgJ2dvdG8tYWRkciwgeHJlZik6IE5ldyByZXF1 aXJlbWVudHMuCihtYXJrZG93bi10cyk6IE5ldyBjdXN0b21pemF0aW9uIGdyb3VwIHdpdGggOnZl cnNpb24gYW5kCjpwYWNrYWdlLXZlcnNpb24gdGFncy4KKG1hcmtkb3duLXRzLWhpZGUtbWFya3Vw KTogQWRkIDp2ZXJzaW9uIGFuZCA6cGFja2FnZS12ZXJzaW9uLgoobWFya2Rvd24tdHMtZWxsaXBz aXMpOiBOZXcgb3B0aW9uIGZvciBmb2xkZWQgaGVhZGluZyBlbGxpcHNpcy4KKG1hcmtkb3duLXRz LW1lbnUtYmFyLXNob3cpOiBOZXcgb3B0aW9uIHRvIHRvZ2dsZSBtb2RlIG1lbnUuCihtYXJrZG93 bi10cy1kZWZhdWx0LWZvbGRpbmcpOiBOZXcgb3B0aW9uIGZvciBkZWZhdWx0IGZvbGQKbGV2ZWwu CihtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzKTogTmV3IG9wdGlvbiB0byBkaXNwbGF5IGlubGlu ZQppbWFnZXMuCihtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGgpOiBOZXcgb3B0aW9uIGZvciBp bWFnZSBtYXggd2lkdGguCihtYXJrZG93bi10cy1kaXNwbGF5LXJlbW90ZS1pbmxpbmUtaW1hZ2Vz KTogTmV3IG9wdGlvbiBmb3IKcmVtb3RlIGltYWdlIGhhbmRsaW5nLgoobWFya2Rvd24tdHMtY2hl Y2tlZC1jaGVja2JveCk6IE5ldyBvcHRpb24gZm9yIGNoZWNrZWQgY2hlY2tib3gKZGlzcGxheSBz dHJpbmcuCihtYXJrZG93bi10cy11bmNoZWNrZWQtY2hlY2tib3gpOiBOZXcgb3B0aW9uIGZvciB1 bmNoZWNrZWQKY2hlY2tib3ggZGlzcGxheSBzdHJpbmcuCihtYXJrZG93bi10cy10aGVtYXRpYy1i cmVhay1jaGFyYWN0ZXIpOiBOZXcgb3B0aW9uIGZvciB0aGVtYXRpYwpicmVhayBkaXNwbGF5IGNo YXJhY3Rlci4KKG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gpOiBOZXcgb3B0 aW9uIGZvciB0aGUKZ2x5cGggc2hvd24gaW4gcGxhY2Ugb2YgYSB0cmFpbGluZy1iYWNrc2xhc2gg aGFyZCBsaW5lIGJyZWFrCndoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLWhhcmQt bGluZS1icmVhay1zcGFjZSk6IE5ldyBvcHRpb24gZm9yIHRoZSBnbHlwaApzaG93biBpbiBwbGFj ZSBvZiBhIHRyYWlsaW5nLXNwYWNlcyBoYXJkIGxpbmUgYnJlYWsgd2hlbiBtYXJrdXAKaXMgaGlk ZGVuLgoobWFya2Rvd24tdHMtZW1waGFzaXMsIG1hcmtkb3duLXRzLWJvbGQpCihtYXJrZG93bi10 cy1zdHJpa2V0aHJvdWdoLCBtYXJrZG93bi10cy1saW5rKQoobWFya2Rvd24tdHMtbGluay1kZXN0 aW5hdGlvbiwgbWFya2Rvd24tdHMtY29kZS1zcGFuKQoobWFya2Rvd24tdHMtY29kZS1ibG9jaywg bWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuKQoobWFya2Rvd24tdHMtaW5kZW50 ZWQtY29kZS1ibG9jaywgbWFya2Rvd24tdHMtaHRtbC10YWcpCihtYXJrZG93bi10cy1odG1sLWJs b2NrLCBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaykKKG1hcmtkb3duLXRzLWVudGl0eS1yZWZl cmVuY2UpCihtYXJrZG93bi10cy1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UsIG1hcmtkb3du LXRzLWxhdGV4KQoobWFya2Rvd24tdHMtdGFibGUtaGVhZGVyLCBtYXJrZG93bi10cy10YWJsZS1j ZWxsKQoobWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwsIG1hcmtkb3duLXRzLXRhc2st dW5jaGVja2VkKQoobWFya2Rvd24tdHMtdGFzay1jaGVja2VkKTogTmV3IGZhY2VzLgoobWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKG1hcmtkb3duLXRzLWhhcmQtbGluZS1i cmVhay1iYWNrc2xhc2gtaGlkZGVuKQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNl KQoobWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlLWhpZGRlbik6IE5ldyBmYWNlcyBm b3IgdGhlCnR3byBoYXJkLWxpbmUtYnJlYWsgdmFyaWFudHMsIHdpdGggZGlzdGluY3Qgc2hvd24v aGlkZGVuCmFwcGVhcmFuY2VzLgoobWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUpOiBOZXcgdmFy aWFibGUgZm9yIGxpZ2h0d2VpZ2h0IHNldHVwCmluIGVtYmVkZGVkIGlubGluZSBtYXJrZG93bi10 cy1tb2RlIGJ1ZmZlcnMgdXNlZCBieSBjb2RlIGJsb2NrCmNvbW1hbmRzLgoobWFya2Rvd24tdHMt ZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUpOiBOZXcgdmFyaWFibGUgdG8gZGVmaW5lCmRlZmF1bHQg bW9kZSBmb3IgYW5vbnltb3VzIGNvZGUgYmxvY2tzLgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1t b2Rlcyk6IE5ldyB2YXJpYWJsZSByZXBsYWNpbmcKbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFu Z3VhZ2UtbWFwIGFuZAptYXJrZG93bi10cy1jb2RlLWJsb2NrLXNvdXJjZS1tb2RlLW1hcCB3aXRo IHVuaWZpZWQgbGFuZ3VhZ2UgdG8KbW9kZSBtYXBwaW5nIGluY2x1ZGluZyBoZXVyaXN0aWMgbG9v a3VwLgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwtbW9kZXMpOiBO ZXcgdmFyaWFibGUKbGlzdGluZyB0cmVlLXNpdHRlciBtb2RlcyB3aG9zZSBmb250aWZpY2F0aW9u IG9mIGNvZGUgYmxvY2sKY29udGVudCBzaG91bGQgYmUgaGFydmVzdGVkIHZpYSBhIHRlbXBvcmFy eSBidWZmZXIuCihtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbik6IE5ldyBmdW5jdGlvbiB0 byBjcmVhdGUKY2xpY2thYmxlIGxpbmsgYnV0dG9ucyB3aXRoIG1haWx0bywgYnJvd3NlLXVybCwg YW5kIGZpbmQtZmlsZQpkaXNwYXRjaC4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstZGVzdGlu YXRpb24pOiBOZXcgZm9udGlmaWVyIHRoYXQKaGlkZXMgbGluayBkZXN0aW5hdGlvbnMgd2hlbiBt YXJrdXAgaXMgaGlkZGVuLgoobWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLCBtYXJrZG93bi10 cy0tbGluay1yZWYtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1saW5rLXJlZi1kZWZpbml0aW9u cywKbWFya2Rvd24tdHMtLXJlc29sdmUtbGluay1yZWYpOiBOZXcgbGluayByZWZlcmVuY2UgZGVm aW5pdGlvbgpjYWNoZSB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgcGVyIENvbW1vbk1h cmsgc3BlYy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSk6IE5ldyBmb250aWZpZXIg Zm9yIGlubGluZSwKcmVmZXJlbmNlLCBzaG9ydGN1dCwgYW5kIGNvbGxhcHNlZCBsaW5rcyBhcyBj bGlja2FibGUgYnV0dG9ucy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rKTogTmV3IGZv bnRpZmllciBmb3IgVVJJIGFuZCBlbWFpbAphdXRvbGlua3Mgd2l0aCBhbmdsZSBicmFja2V0IGhp ZGluZy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWxhYmVsKQoobWFya2Rvd24tdHMt LWZvbnRpZnktbGluay1yZWYtZGVzdGluYXRpb24pOiBOZXcgZm9udGlmaWVycyBmb3IKbGluayBy ZWZlcmVuY2UgZGVmaW5pdGlvbnMuCihtYXJrZG93bi10cy0tc2x1Zy1naXRodWItc3RyaXAtcmUs IG1hcmtkb3duLXRzLS1zbHVnLWdpdGh1YikKKG1hcmtkb3duLXRzLS1zbHVnLXBhbmRvYywgbWFy a2Rvd24tdHMtLWV4cGxpY2l0LWlkLXJlKQoobWFya2Rvd24tdHMtLWhlYWRpbmctdGV4dC1hbmQt aWQpCihtYXJrZG93bi10cy0taGVhZGluZy1pZC1jYWNoZSwKbWFya2Rvd24tdHMtLWhlYWRpbmct aWQtY2FjaGUtdGljaykKKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcywgbWFya2Rvd24t dHMtLWhlYWRpbmctaWRzKQoobWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCk6IE5ldyBmcmFn bWVudCBsaW5rIHN1cHBvcnQgd2l0aApHaXRIdWIgYW5kIFBhbmRvYyBzbHVnIGFsZ29yaXRobXMu CihtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFsaWQtcCkKKG1hcmtkb3duLXRzLS1mb250aWZ5 LWxhdGV4LWJsb2NrKTogTmV3IExhVGVYL21hdGggZm9udGlmaWVyCndpdGggY3Jvc3MtcGFyYWdy YXBoIHZhbGlkYXRpb24uCihtYXJrZG93bi10cy0tZm9udGlmeS1iYWNrc2xhc2gtZXNjYXBlKTog TmV3IGZvbnRpZmllciB0aGF0CmhpZGVzIGJhY2tzbGFzaCBpbiBlc2NhcGVzIGV4Y2VwdCBpbnNp ZGUgTGFUZVggYmxvY2tzLgoobWFya2Rvd24tdHMtLWRlY29kZS1lbnRpdHksIG1hcmtkb3duLXRz LS1mb250aWZ5LWVudGl0eSk6IE5ldwpIVE1MIGVudGl0eSBkZWNvZGVyIGFuZCBmb250aWZpZXIg dXNpbmcgb3JnLWVudGl0aWVzIGFuZApzZ21sLWNoYXItbmFtZXMgd2l0aCBkaXNwbGF5IHByb3Bl cnR5IGZvciBkZWNvZGVkIHZhbHVlcy4KKG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KTog TmV3IGZvbnRpZmllciBzaG93aW5nIFVuaWNvZGUKY2hlY2tib3ggc3ltYm9scyB3aGVuIG1hcmt1 cCBpcyBoaWRkZW4uCihtYXJrZG93bi10cy0tZm9udGlmeS1oYXJkLWxpbmUtYnJlYWspOiBOZXcg Zm9udGlmaWVyIGZvcgpgaGFyZF9saW5lX2JyZWFrJyBub2Rlcy4KKG1hcmtkb3duLXRzLS1mb250 aWZ5LWhlYWRpbmcpOiBOZXcgZm9udGlmaWVyIGZvciBBVFggYW5kIFNldGV4dApoZWFkaW5ncy4K KG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrKTogTmV3IGZvbnRpZmllciBzaG93 aW5nCmhvcml6b250YWwgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCihtYXJrZG93bi10cy0t Zm9udGlmeS1jb2RlLWJsb2NrKTogTmV3IGZvbnRpZmllciBhcHBseWluZwpiYWNrZ3JvdW5kIG92 ZXJsYXkgdG8gY29kZSBibG9ja3Mgd2l0aCBsYW5ndWFnZSBhbmQgbW9kZQpwcm9wZXJ0aWVzLgoo bWFya2Rvd24tdHMtY29kZS1ibG9jay1hdC1wKQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5n dWFnZS1hdCkKKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCk6IE5ldyBhY2Nlc3NvcnMg Zm9yIGNvZGUgYmxvY2sKb3ZlcmxheSBwcm9wZXJ0aWVzLgoobWFya2Rvd24tdHMtLWltZW51LWNv ZGUtYmxvY2stbm9kZS1wKTogTmV3IGhlbHBlciBmb3IgaW1lbnUKY29kZSBibG9jayBkZXRlY3Rp b24uCihtYXJrZG93bi10cy0taW1hZ2UtYWxvbmUtb24tbGluZS1wKQoobWFya2Rvd24tdHMtLWZv bnRpZnktaW1hZ2UpOiBOZXcgaW5saW5lIGltYWdlIGRpc3BsYXkgd2l0aApzdGFuZGFsb25lIGFu ZCBpbmxpbmUgcG9zaXRpb25pbmcuCihtYXJrZG93bi10cy0tYmFyZS11cmwtcmVnZXhwKQoobWFy a2Rvd24tdHMtLWJhcmUtZW1haWwtdXJpLXJlZ2V4cCkKKG1hcmtkb3duLXRzLS1mb250aWZ5LWJh cmUtdXJpKTogTmV3IGJhcmUgVVJML2VtYWlsCmZvbnRpZmljYXRpb24gdmlhIGppdC1sb2NrIHVz aW5nIGdvdG8tYWRkciByZWdleHBzLgoobWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MpOiBS ZXdyaXRlIHdpdGggZGVkaWNhdGVkIGZhY2VzLApjdXN0b20gZm9udGlmaWVycywgYW5kIG5ldyBm b250LWxvY2sgZmVhdHVyZXMgZm9yIGFsbCBpbmxpbmUgYW5kCmJsb2NrIGVsZW1lbnRzLgoobWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2VzKQoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2st bm9uLXRzLW1vZGVzKTogTmV3IGJ1ZmZlci1sb2NhbCBhbGlzdHMKZm9yIGNvZGUgYmxvY2sgbGFu Z3VhZ2UgdHJhY2tpbmcuCihtYXJrZG93bi10cy0taGFydmVzdC1tb2RlLXRyZWVzaXQtY29uZmln dXJhdGlvbik6IFJlbmFtZWQgZnJvbQptYXJrZG93bi10cy0taGFydmVzdC10cmVlc2l0LWNvbmZp Z3Mgd2l0aCBkZWxheS1tb2RlLWhvb2tzLgoobWFya2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50 LWJ1ZmZlcik6IFJlbmFtZWQgZnJvbQptYXJrZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZS4K KG1hcmtkb3duLXRzLS1sYW5ndWFnZS1hdC1ub2RlKTogTmV3IGhlbHBlciBleHRyYWN0aW5nIGxh bmd1YWdlCnN5bWJvbCBmcm9tIGNvZGVfZmVuY2VfY29udGVudCBub2RlLgoobWFya2Rvd24tdHMt LW5vbi10cy1mb250aWZ5LWNhY2hlKTogTmV3IGJ1ZmZlci1sb2NhbCBoYXNoIHRhYmxlCmNhY2hp bmcgZm9udGlmaWNhdGlvbiByZXN1bHRzIGZvciBub24tdHJlZS1zaXR0ZXIgY29kZSBibG9ja3Mu CihtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcyk6IE5ldyBmdW5jdGlv bgpoYXJ2ZXN0aW5nIGZhY2UgcHJvcGVydGllcyBmcm9tIGEgbW9kZSBpbiBhbiBpbmRpcmVjdCBv cgp0ZW1wb3JhcnkgYnVmZmVyLgoobWFya2Rvd24tdHMtLWZvbnRpZnktbm9uLXRzLWNvZGUtYmxv Y2spOiBOZXcgZm9udGlmaWVyIGZvcgpub24tdHJlZS1zaXR0ZXIgbW9kZXMgdmlhIHRlbXBvcmFy eSBidWZmZXIgZm9udC1sb2NrLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbW9k ZSk6IE5ldyBmdW5jdGlvbiB3aXRoCmhldXJpc3RpYyBtb2RlIG5hbWUgcHJvYmluZy4KKG1hcmtk b3duLXRzLS1jb2RlLWJsb2NrLXRzLWxhbmd1YWdlKTogUmVuYW1lZCBmcm9tCm1hcmtkb3duLXRz LS1jb252ZXJ0LWNvZGUtYmxvY2stbGFuZ3VhZ2Ugd2l0aCBzdXBwb3J0IGZvciBub24tdHMKbW9k ZXMgYW5kIHJlY3Vyc2l2ZSBtYXJrZG93biBoYW5kbGluZy4KKG1hcmtkb3duLXRzLWNvZGUtYmxv Y2stY29tbWFuZHMpCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLXRoaW5nLWNvbW1hbmRzKQoobWFy a2Rvd24tdHMtY29kZS1ibG9jay1yZWdpb24tY29tbWFuZHMpOiBOZXcgY29tbWFuZCBsaXN0cyBm b3IKY29kZS1ibG9jayBjb250ZXh0IGV4ZWN1dGlvbi4KKG1hcmtkb3duLXRzLS1lbmFibGUtY29k ZS1ibG9jay1tb2RlKQoobWFya2Rvd24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxv Y2spCihtYXJrZG93bi10cy0tY29kZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMpCihtYXJr ZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayk6IE5ldyBjb2RlIGJsb2NrIG1pbm9y Cm1vZGUgd2l0aCBpbmRpcmVjdCBidWZmZXIgY29tbWFuZCBkaXNwYXRjaC4KKG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLW5ld2xpbmUpOiBOZXcgY29tbWFuZCBmb3IgbmV3bGluZQppbnNpZGUgY29k ZSBibG9ja3MsIGRpc3BhdGNoaW5nIHRvIHRoZSBibG9jaydzIG1vZGUuCihtYXJrZG93bi10cy0t cmFuZ2Utc2V0dGluZ3MpOiBVcGRhdGUgcmFuZ2UgY29uZmlndXJhdGlvbjsKcmVtb3ZlIDpyYW5n ZS1mbiB0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4uCihtYXJrZG93bi10cy0tcmVt b3ZlLWltYWdlLW92ZXJsYXlzKQoobWFya2Rvd24tdHMtLW91dGxpbmUtdmlldy1jaGFuZ2UpOiBO ZXcgaGVscGVycyBmb3IgaW1hZ2UKb3ZlcmxheSBtYW5hZ2VtZW50IGR1cmluZyBvdXRsaW5lIGZv bGQvdW5mb2xkLgoobWFya2Rvd24tdHMtLW91dGxpbmUtaW52aXNpYmxlLXApOiBOZXcgaGVscGVy IHRlc3Rpbmcgd2hldGhlciBhCnBvc2l0aW9uIGlzIGluc2lkZSBhbiBvdXRsaW5lLWZvbGRlZCBy ZWdpb24uCihtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwKTogQ2xlYXIgaW1hZ2Ugb3Zlcmxh eXMgd2hlbgp0b2dnbGluZyBtYXJrdXAgdmlzaWJpbGl0eS4KKG1hcmtkb3duLXRzLS1zZXQtaW5s aW5lLWltYWdlcykKKG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUtaW1hZ2VzKTogTmV3IGZ1bmN0 aW9ucyBmb3IgdG9nZ2xpbmcKaW5saW5lIGltYWdlIGRpc3BsYXkuCihtYXJrZG93bi10cy0tcGFy c2VyLWhlYWRpbmctbWF4LWxldmVsKTogTmV3IGNvbnN0YW50LgoobWFya2Rvd24tdHMtLWhlYWRp bmctYXQtcG9pbnQsIG1hcmtkb3duLXRzLS1oZWFkaW5nLWxldmVsKQoobWFya2Rvd24tdHMtLXNl Y3Rpb24tYXQtcG9pbnQpOiBOZXcgaGVhZGluZyBuYXZpZ2F0aW9uIGhlbHBlcnMuCihtYXJrZG93 bi10cy1wcm9tb3RlLCBtYXJrZG93bi10cy1kZW1vdGUpOiBOZXcgY29tbWFuZHMgZm9yCmhlYWRp bmcgYW5kIGxpc3QgaXRlbSBwcm9tb3Rpb24vZGVtb3Rpb24gd2l0aCByZWdpb24gc3VwcG9ydC4K KG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSkKKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9y LWRlbW90ZS1yZWdpb24pOiBOZXcgaGVhZGluZyBsZXZlbAphZGp1c3RtZW50IGZ1bmN0aW9ucy4K KG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS11cCwgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRv d24pOgpOZXcgY29tbWFuZHMgZm9yIG1vdmluZyBzZWN0aW9ucyBhbmQgbGlzdCBpdGVtcy4KKG1h cmtkb3duLXRzLS1zZWN0aW9uLWZvbGRlZC1wKQoobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11 cC1vci1kb3duKTogTmV3IHN1YnRyZWUgbW92ZSB3aXRoCmZvbGRpbmcgc3RhdGUgcHJlc2VydmF0 aW9uLgoobWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94KTogTmV3IGNvbW1hbmQgdG8gdG9nZ2xl IHRhc2sgbGlzdApjaGVja2JveGVzLgoobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCk6 IE5ldyBoZWxwZXIgd2l0aCBibG9jayBxdW90ZQptYXJrZXIgaGFuZGxpbmcuCihtYXJrZG93bi10 cy0tbGlzdC1tYXJrZXItd2lkdGgsIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tcmVnaW9uKQoobWFy a2Rvd24tdHMtLWxpc3Qtb3JkZXJlZC1pdGVtLXApOiBOZXcgbGlzdCBpdGVtIGhlbHBlcnMuCiht YXJrZG93bi10cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSk6IE5ldyBmdW5jdGlvbiB3aXRoIG9y ZGVyZWQKbGlzdCBuZXN0aW5nIGd1YXJkLgoobWFya2Rvd24tdHMtLWxpc3Qtbm9kZS1ib2wsIG1h cmtkb3duLXRzLS1saXN0LW1vdmUpOiBOZXcgbGlzdAppdGVtIG1vdmVtZW50IGZ1bmN0aW9ucy4K KG1hcmtkb3duLXRzLXJlbnVtYmVyLWxpc3QpOiBOZXcgY29tbWFuZCBmb3Igc2VxdWVudGlhbCBs aXN0CnJlbnVtYmVyaW5nIHdpdGggcHJlZml4IGFyZ3VtZW50IHN1cHBvcnQuCihtYXJrZG93bi10 cy0tbGlzdC1pdGVtLW5ldy1tYXJrZXIpCihtYXJrZG93bi10cy0tbmV3LW1hcmtlci1mb3ItbGlu ZSk6IE5ldyBtYXJrZXIgc3RyaW5nIGdlbmVyYXRvcnMKZm9yIGxpc3QgaXRlbSBpbnNlcnRpb24u CihtYXJrZG93bi10cy0tbGluZS1ibG9jay1xdW90ZS1kZXB0aCk6IE5ldyBoZWxwZXIgY291bnRp bmcgYmxvY2sKcXVvdGUgZGVwdGguCihtYXJrZG93bi10cy1uZXdsaW5lKTogTmV3IFJFVCBjb21t YW5kIGZvciBjb250ZXh0LWF3YXJlCm5ld2xpbmUuCihtYXJrZG93bi10cy1pbnNlcnQtbGlzdC1p dGVtKTogTmV3IE0tUkVUIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEKbmV3IGxpc3QgaXRlbS4KKG1h cmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkpOiBOZXcgdHJlZS1zaXR0ZXIK cXVlcnkgZm9yIHVuZmlsbGFibGUgYmxvY2tzLgoobWFya2Rvd24tdHMtLWxpc3QtaXRlbS10ZXh0 LWNvbHVtbik6IE5ldyBoZWxwZXIgZm9yIGxpc3QgaXRlbQp0ZXh0IGFsaWdubWVudC4KKG1hcmtk b3duLXRzLS1maWxsLWxpc3QtaXRlbSk6IE5ldyBmdW5jdGlvbiBmaWxsaW5nIHdpdGhpbiBsaXN0 Cml0ZW1zIHdpdGhvdXQgbWVyZ2luZyBhZGphY2VudCBpdGVtcy4KKG1hcmtkb3duLXRzLS1hZGFw dGl2ZS1maWxsKTogTmV3IGFkYXB0aXZlIGZpbGwgZnVuY3Rpb24gZm9yCmxpc3QgaXRlbSBjb250 aW51YXRpb24uCihtYXJrZG93bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCk6IE5ldyBwYXJh Z3JhcGggbW90aW9uCnJlc3BlY3RpbmcgbGlzdCBpdGVtcyBhbmQgdW5maWxsYWJsZSBibG9ja3Mu CihtYXJrZG93bi10cy1maWxsLXBhcmFncmFwaCk6IE5ldyBmaWxsLXBhcmFncmFwaC1mdW5jdGlv biB3aXRoCmNvbmQqIGRpc3BhdGNoIGZvciBsaXN0cywgYmxvY2sgcXVvdGVzLCBIVE1MIGNvbW1l bnRzLCBhbmQKdW5maWxsYWJsZSBibG9ja3MuCihtYXJrZG93bi10cy0tZmlsbC1odG1sLWNvbW1l bnQpOiBOZXcgSFRNTCBjb21tZW50IGZpbGxlciB3aXRoCmNvbnRpbnVhdGlvbiBhbGlnbm1lbnQu CihtYXJrZG93bi10cy0tYmxvY2stcXVvdGUtcHJlZml4KTogTmV3IGhlbHBlciBwcmVzZXJ2aW5n CmV4aXN0aW5nIGJsb2NrIHF1b3RlIG1hcmtlciBzdHlsZS4KKG1hcmtkb3duLXRzLS1maWxsLWJs b2NrLXF1b3RlKTogTmV3IGJsb2NrIHF1b3RlIGZpbGxlciB3aXRoCmxpc3QgaXRlbSB0ZXh0IGNv bHVtbiBhbGlnbm1lbnQuCihtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdCk6IE5ldyBhbGlzdCBv ZiBlbXBoYXNpcyBtYXJrZXJzLgoobWFya2Rvd24tdHMtLWVtcGhhc2lzLW5vZGUtYXQtcG9pbnQp OiBOZXcgdHJlZS1zaXR0ZXIgYmFzZWQKZW1waGFzaXMgZGV0ZWN0aW9uLgoobWFya2Rvd24tdHMt cmVtb3ZlLWVtcGhhc2lzKTogTmV3IGNvbW1hbmQgcmVtb3ZpbmcgZW1waGFzaXMgYXQKcG9pbnQg b3IgcmVnaW9uLgoobWFya2Rvd24tdHMtZW1waGFzaXplKTogTmV3IGludGVyYWN0aXZlIGVtcGhh c2lzIGluc2VydGlvbiB3aXRoCnJlZ2lvbiB3cmFwcGluZyBhbmQgd29yZC1hdC1wb2ludCBzdXBw b3J0LgoobWFya2Rvd24tdHMtaW5zZXJ0LXN0cnVjdHVyZSk6IE5ldyBjb21tYW5kIGZvciBpbnNl cnRpbmcgY29kZQpibG9ja3MsIGJsb2NrIHF1b3RlcywgYW5kIGRpdmlkZXJzLgoobWFya2Rvd24t dHMtLWluc2VydC1jb2RlLWJsb2NrKTogTmV3IGZ1bmN0aW9uIHdpdGggbGFuZ3VhZ2UKY29tcGxl dGlvbiBmcm9tIGtub3duIG1vZGVzLgoobWFya2Rvd24tdHMtLWluc2VydC1ibG9jay1xdW90ZSk6 IE5ldyBmdW5jdGlvbiB3aXRoIHJlZ2lvbgp3cmFwcGluZy4KKG1hcmtkb3duLXRzLS1pbnNlcnQt ZGl2aWRlcik6IE5ldyBmdW5jdGlvbiBmb3IgaG9yaXpvbnRhbApydWxlcy4KKG1hcmtkb3duLXRz LS1hcHBseS1lbGxpcHNpcyk6IE5ldyBmdW5jdGlvbiBhcHBseWluZyBjdXN0b20KZWxsaXBzaXMg dmlhIGRpc3BsYXkgdGFibGUuCihtYXJrZG93bi10cy0tc2V0LXVwKTogUmVuYW1lZCBmcm9tIG1h cmtkb3duLXRzLXNldHVwLgoobWFya2Rvd24tdHMtb3V0bGluZS1jeWNsZSk6IE5ldyBUQUIgY29t bWFuZCBjeWNsaW5nIG91dGxpbmUKdmlzaWJpbGl0eSBvbiBoZWFkaW5ncy4KKG1hcmtkb3duLXRz LW1vZGUtbWFwKTogTmV3IGtleW1hcCBmb3IgY29kZSBibG9jayBuYXZpZ2F0aW9uLApiaW5kaW5n cyBmb3IgaGVhZGluZyBuYXZpZ2F0aW9uLCBzdHJ1Y3R1cmUgZWRpdGluZywgZW1waGFzaXMsCmFu ZCBsaXN0IG9wZXJhdGlvbnMuCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtbWFwKTogTmV3 IGtleW1hcCBmb3IgY29kZSBibG9jawpjb250ZXh0LgoobWFya2Rvd24tdHMtbW9kZS1tZW51KTog TmV3IG1lbnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFkaW5ncywgRWRpdCBTdHJ1 Y3R1cmUsIGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMtbW9kZSk6IEFkZCBvdXRs aW5lLW1pbm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBhcmFncmFwaCBpbnRlZ3Jh dGlvbiwgY29kZS1ibG9jay1tb2RlIGhvb2tzLCBjb21tZW50CnNldHRpbmdzLCBhbmQgb3V0bGlu ZS12aWV3LWNoYW5nZS1ob29rLiAgVXNlIG1hcmtkb3duLXRzLW1vZGUKZGlyZWN0bHkgaW4gYXV0 by1tb2RlLWFsaXN0IGluc3RlYWQgb2YgbWFya2Rvd24tdHMtbW9kZS1tYXliZS4KKG1hcmtkb3du LXRzLW1vZGUtaW5zdGFsbC1wYXJzZXJzKTogTmV3IGNvbW1hbmQgZm9yIGluc3RhbGxpbmcKcmVx dWlyZWQgYW5kIG9wdGlvbmFsIHRyZWUtc2l0dGVyIGxhbmd1YWdlIGdyYW1tYXJzLgoobWFya2Rv d24tdHMtY29kZS1ibG9jay1tb2RlKTogTmV3IG1pbm9yIG1vZGUgZm9yIGNvZGUgYmxvY2sKY29u dGV4dC4KKG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyKQoobWFya2Rvd24t dHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRlcik6IE5ldyBoZWxwZXJzIGZvcgpsb2Nh dGluZyBmZW5jZWQgY29kZSBibG9jayBkZWxpbWl0ZXIgbm9kZXMuCihtYXJrZG93bi10cy1tb3Zl LXRvLW5leHQtY29kZS1ibG9jaykKKG1hcmtkb3duLXRzLW1vdmUtdG8tcHJldmlvdXMtY29kZS1i bG9jayk6IE5ldyBjb21tYW5kcyBmb3IKbmF2aWdhdGluZyBiZXR3ZWVuIGZlbmNlZCBjb2RlIGJs b2Nrcy4KKG1hcmtkb3duLXRzLW1vZGUtbWF5YmUpOiBSZW1vdmU7IGF1dG8tbW9kZS1hbGlzdCBu b3cgdXNlcwptYXJrZG93bi10cy1tb2RlIGRpcmVjdGx5LgpBdXRvLW1vZGUtYWxpc3Q6IEFkZCAu bWFya2Rvd24gYW5kIC5tZHggZXh0ZW5zaW9ucy4KSW5jbHVkZXMgZml4ZXMgZm9yOiAoYnVnIzgw NjEzKSAoYnVnIzgwNjI1KSAoYnVnIzgwNjkwKQoKQ28tYXV0aG9yZWQtYnk6IFN0w6lwaGFuZSBN YXJrcyA8c2hpcG1pbnRzQGdtYWlsLmNvbT4KLS0tCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsIHwgMzM1NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAxIGZpbGUgY2hh bmdlZCwgMzA4MiBpbnNlcnRpb25zKCspLCAyNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbCBiL2xpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUuZWwKaW5kZXggNjU3ZDZiYzQ2NmQuLjJhNTk0OGMxNWJhIDEwMDY0NAotLS0g YS9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVz L21hcmtkb3duLXRzLW1vZGUuZWwKQEAgLTEsMTEgKzEsMTMgQEAKLTs7OyBtYXJrZG93bi10cy1t b2RlLmVsIC0tLSB0cmVlIHNpdHRlciBzdXBwb3J0IGZvciBNYXJrZG93biAgLSotIGxleGljYWwt YmluZGluZzogdDsgLSotCis7OzsgbWFya2Rvd24tdHMtbW9kZS5lbCAtLS0gdHJlZSBzaXR0ZXIg c3VwcG9ydCBmb3IgTWFya2Rvd24gLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCiAKIDs7IENv cHlyaWdodCAoQykgMjAyNC0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi07 OyBBdXRob3IgICAgIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwu Y29tPgotOzsgTWFpbnRhaW5lciA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRv QGdtYWlsLmNvbT4KLTs7IENyZWF0ZWQgICAgOiBBcHJpbCAyMDI0Ci07OyBLZXl3b3JkcyAgIDog bWFya2Rvd24gbWQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVyCis7OyBBdXRob3IgICAgICAgICAgIDog UmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwuY29tPgorOzsgTWFpbnRh aW5lciAgICAgICA6IFJhaHVsIE1hcnRpbSBKdWxpYXRvIDxyYWh1bC5qdWxpYXRvQGdtYWlsLmNv bT4KKzs7IENyZWF0ZWQgICAgICAgICAgOiBBcHJpbCAyMDI0Cis7OyBWZXJzaW9uICAgICAgICAg IDogIDEuMAorOzsgUGFja2FnZS1SZXF1aXJlcyA6ICgoZW1hY3MgIjMxLjEiKSkKKzs7IEtleXdv cmRzICAgICAgICAgOiBtYXJrZG93biBtZCB0ZXh0IGVkaXQgbGFuZ3VhZ2VzIHRyZWUtc2l0dGVy CiAKIDs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KIApAQCAtMjIsMTAxICsyNCwy NDIgQEAKIDs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCiA7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2Vl IDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLTs7OyBUcmVlLXNpdHRlciBsYW5n dWFnZSB2ZXJzaW9ucworOzs7IENvbW1lbnRhcnk6CisKKzs7IFRyZWUtc2l0dGVyIExhbmd1YWdl IFZlcnNpb25zCiA7OwogOzsgbWFya2Rvd24tdHMtbW9kZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCB0 aGUgZm9sbG93aW5nIGdyYW1tYXJzIGFuZCB2ZXJzaW9uOgogOzsgLSB0cmVlLXNpdHRlci1tYXJr ZG93bjogdjAuNC4xCiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGluZTogdjAuNC4xCiA7 OwotOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHRpbiBtb2RlcyB3b3JrIHdpdGggbGF0 ZXN0IGdyYW1tYXIKLTs7IHZlcnNpb25zLCBzbyBhIG1vcmUgcmVjZW50IGdyYW1tYXIgaGFzIGEg Z29vZCBjaGFuY2UgdG8gd29yayB0b28uCi07OyBTZW5kIHVzIGEgYnVnIHJlcG9ydCBpZiBpdCBk b2Vzbid0LgotCi07OzsgQ29tbWVudGFyeToKKzs7IFdlIHRyeSBvdXIgYmVzdCB0byBtYWtlIGJ1 aWx0LWluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1hcgorOzsgdmVyc2lvbnMsIHNvIGEg bW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5jZSB0byB3b3JrLiAgU2VuZAorOzsg dXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCis7OworOzsgQmlkaXJlY3Rpb25hbCBUZXh0 IENvbnNpZGVyYXRpb25zCis7OworOzsgVGV4dCB3aXRoIG1hcmt1cCBtYXkgbmVlZCBhbiBleHRy YSBuZXdsaW5lIGJlZm9yZSBiaWRpcmVjdGlvbmFsIHRleHQKKzs7IGZvciBpdCB0byBzaG93IGNv cnJlY3RseS4gIFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBFbWFjcyBkaXNwbGF5Cis7OyBl bmdpbmUuCis7OworOzsgQ29kZSBCbG9jayBMYW5ndWFnZSBNb2RlIENvbnNpZGVyYXRpb25zCis7 OworOzsgRmVuY2VkIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMgYXJlIGRlcml2ZWQgZnJvbSB0 aGUgdGFibGUKKzs7IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJyBhbmQgaGV1cmlzdGlj cyBhZGRpbmcgIi10cy1tb2RlIiBhbmQKKzs7ICItbW9kZSIgdG8gdGhlIGxhbmd1YWdlIG5hbWUu ICBJZiB5b3VyIGxhbmd1YWdlJ3MgbW9kZSBpcyBub3QKKzs7IHByb3Blcmx5IHJlY29nbml6ZWQs IGFkZCBpdCB0byBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcycsIHdoaWNoCis7OyBzZWUu Cis7OworOzsgRWFjaCBsYW5ndWFnZSdzIG1ham9yIG1vZGUgaXMgZW5hYmxlZCBvbmNlIHBlciBg bWFya2Rvd24tdHMtbW9kZScKKzs7IGJ1ZmZlciBpbiBhIHRlbXBvcmFyeSBidWZmZXIgdG8gZXh0 cmFjdCBpdHMgZGVmYXVsdCBmb250LWxvY2sgYW5kCis7OyB0cmVlLXNpdHRlciBzZXR0aW5ncy4g IEluIGNvbnZlbnRpb25hbCBub24tdHJlZXNpdCBjb2RlIGJsb2NrcywgdGhlCis7OyBtYWpvciBt b2RlIGlzIGVuYWJsZWQgZWFjaCB0aW1lIHRoZSBibG9jayBpcyBmb250aWZpZWQuCis7OworOzsg Tk9URTogTWFqb3IgbW9kZSBob29rcyBhcmUgbm90IHJ1biBhbmQgZm9udC1sb2NrLCB0cmVlc2l0 LCBpbmRlbnQsCis7OyBjb21tZW50IHJlY29nbml0aW9uLCBldGMuIGN1c3RvbWl6YXRpb25zIHlv dSBtaWdodCBoYXZlIGluIHlvdXIgaG9va3MKKzs7IGFyZSBub3QgYXBwbGllZC4gIEFzIGEgcmVz dWx0LCB5b3VyIGNvZGUgYmxvY2tzIG1pZ2h0IGFwcGVhcgorOzsgZGlmZmVyZW50IGluIGBtYXJr ZG93bi10cy1tb2RlJyBtb2RlIHRoYW4gaW4gbmF0aXZlIGxhbmd1YWdlIG1ham9yCis7OyBtb2Rl IGJ1ZmZlcnMuICBOb3QgcnVubmluZyBob29rcyBhdm9pZHMgdGhlIGNvc3Qgb2YgZWFjaCBtb2Rl IGhvb2sKKzs7IGFuZCBhdm9pZHMgY2VydGFpbiByZWN1cnNpdmUgdHJlZXNpdCBjYWxsYmFjayBp c3N1ZXMuCis7OworOzsgQ29kZSBCbG9jayBDb21tYW5kcworOzsKKzs7IFNvbWUgY29tbW9uIGNv bW1hbmRzIHdpbGwgb3BlcmF0ZSB3aXRoaW4gYSBjb2RlIGJsb2NrIGFuZCBpbiBpdHMKKzs7IG1v ZGUuICBUaGlzIGlzIGltcGxlbWVudGVkIHVzaW5nIGFuIGluZGlyZWN0IGJ1ZmZlciBhbmQgc29t ZSBjb21tYW5kcworOzsgbWF5IG9wZXJhdGUgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdG8gdGhlIHNh bWUgY29tbWFuZHMgaW52b2tlZCBpbiBhCis7OyBuYXRpdmUgbW9kZSBidWZmZXIuCiA7OworOzsg VHJlZSBTaXR0ZXIgQnVncworOzsKKzs7IGBtYXJrZG93bi10cy1tb2RlJyByZWxpZXMgb24gdGhl IHVuZGVybHlpbmcgdHJlZS1zaXR0ZXIgbGlicmFyeSBpbgorOzsgRW1hY3MgKGNob3NlbiBhdCBp dHMgYnVpbGQgdGltZSksIGFuZCBsYW5ndWFnZSBncmFtbWFycyB5b3UgaGF2ZQorOzsgaW5zdGFs bGVkLiAgVGhlcmUgYXJlIGtub3duIGFuZCByZXBvcnRlZCBidWdzIHdoaWNoIG5lZ2F0aXZlbHkg YWZmZWN0Cis7OyBjZXJ0YWluIGZlYXR1cmVzLiAgVGhpcyBtb2RlIHNob3VsZCBiZW5lZml0IGFz IHRoZXNlIGJ1Z3MgYXJlIGZpeGVkCis7OyBvciB3b3JrZWQgYXJvdW5kLgorOzsKKzs7IC0gVGhl IE1hcmtkb3duIGdyYW1tYXIgaW5zZXJ0cyBibG9ja19jb250aW51YXRpb24gbm9kZXMgYXMgY2hp bGRyZW4KKzs7ICAgb2YgY29kZV9mZW5jZV9jb250ZW50LCB3aGljaCBjb25mdXNlcyBib3RoIHRo ZSBpbnNwZWN0b3IgYW5kIHRoZQorOzsgICBlbWJlZGRlZCBwYXJzZXIuICBUaGlzIGFmZmVjdHMg Y29kZSBibG9ja3MgaW5zaWRlIGJsb2NrIHF1b3Rlcy4KKzs7Cis7OyAtIEhUTUwgYmxvY2sgdHlw ZSA0IChgPCEnIGZvbGxvd2VkIGJ5IGFuIHVwcGVyY2FzZSBsZXR0ZXIsIGUuZy4sCis7OyAgIGA8 IURPQ1RZUEUgaHRtbD4nKSBjYXVzZXMgdGhlIHBhcnNlciB0byBjb25zdW1lIGFsbCBzdWJzZXF1 ZW50Cis7OyAgIGNvbnRlbnQuICBMb3dlcmNhc2UgYDwhZG9jdHlwZSBodG1sPicgd29ya3MgYXMg YSB3b3JrYXJvdW5kLgorOzsgICBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRlci1n cmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93bi9pc3N1ZXMvMjMzPi4KKzs7Cis7OyAtIFN1cGVy c2NyaXB0IChgXnRleHReJykgYW5kIHN1YnNjcmlwdCAoYH50ZXh0ficpIHN5bnRheCBpcyBub3QK Kzs7ICAgc3VwcG9ydGVkIGJ5IHRoZSBncmFtbWFyLiAgTm8gRVhURU5TSU9OXyBidWlsZCBmbGFn IGV4aXN0cyBmb3IKKzs7ICAgdGhpcy4gIFRoaXMgaXMgUGFuZG9jIC8gUEhQIE1hcmtkb3duIEV4 dHJhIHN5bnRheCwgbm90IENvbW1vbk1hcmsKKzs7ICAgb3IgR0ZNLgorOzsKKzs7IC0gT3JkZXJl ZCAobnVtYmVyZWQpIGxpc3RzIGRvIG5vdCBuZXN0IGJ5IGluZGVudGF0aW9uLiAgSW5kZW50aW5n Cis7OyAgIGEgYDEuJyBpdGVtIHVuZGVyIGFub3RoZXIgb3JkZXJlZCBpdGVtIGRvZXMgbm90IHBy b2R1Y2UgYSBuZXN0ZWQKKzs7ICAgbGlzdCBub2RlOyB0aGUgcGFyc2VyIGVpdGhlciB0cmVhdHMg aXQgYXMgYSBmbGF0IHNpYmxpbmcgb3IKKzs7ICAgYWJzb3JicyBpdCBpbnRvIHRoZSBwYXJlbnQg aXRlbSdzIHBhcmFncmFwaCBhcyBhCis7OyAgIGJsb2NrX2NvbnRpbnVhdGlvbi4gIFVub3JkZXJl ZCAoYC0nLCBgKicsIGArJykgbGlzdHMgbmVzdAorOzsgICBjb3JyZWN0bHkuICBEZW1vdGUvcHJv bW90ZSBvZiBvcmRlcmVkIGxpc3QgaXRlbXMgaXMgdGhlcmVmb3JlCis7OyAgIGRpc2FibGVkLgor OzsKKzs7IC0gUmVudW1iZXJpbmcgb3JkZXJlZCBsaXN0cyAoYG1hcmtkb3duLXRzLXJlbnVtYmVy LWxpc3QnKSBtYXkgb25seQorOzsgICBhZmZlY3QgaXRlbXMgZnJvbSBwb2ludCBkb3dud2FyZCBp ZiB0aGUgcGFyc2VyIHNwbGl0cyBhIHNpbmdsZQorOzsgICBsaXN0IGludG8gc2VwYXJhdGUgYGxp c3QnIG5vZGVzLCBvciBtYXkgY29udGludWUgbnVtYmVyaW5nIGFjcm9zcworOzsgICB0d28gc2Vw YXJhdGUgbGlzdHMgaWYgdGhlIHBhcnNlciBtZXJnZXMgdGhlbSBpbnRvIG9uZSBub2RlLgorOzsK Kzs7IC0gRW1wdHkgbGluZXMgZm9sbG93aW5nIGFuIGBpbmRlbnRlZF9jb2RlX2Jsb2NrJyBtYXkg YmUgY2xhaW1lZCBieQorOzsgICB0aGUgcGFyc2VyIGFzIGNvbnRpbnVhdGlvbiBsaW5lcyBvZiB0 aGF0IGJsb2NrLCByYXRoZXIgdGhhbiBiZWluZworOzsgICB0cmVhdGVkIGFzIGJsYW5rIHNlcGFy YXRvcnMuCiAKIDs7OyBDb2RlOgogCiAocmVxdWlyZSAndHJlZXNpdCkKIChyZXF1aXJlICdzdWJy LXgpCi0ocmVxdWlyZSAnb3V0bGluZSkKIChyZXF1aXJlICdzZXEpCisocmVxdWlyZSAnb3V0bGlu ZSkKKyhyZXF1aXJlICdnb3RvLWFkZHIpCisocmVxdWlyZSAneHJlZikKIAotKHRyZWVzaXQtZGVj bGFyZS11bmF2YWlsYWJsZS1mdW5jdGlvbnMpCi0KLShhZGQtdG8tbGlzdAotICd0cmVlc2l0LWxh bmd1YWdlLXNvdXJjZS1hbGlzdAotICcobWFya2Rvd24KLSAgICJodHRwczovL2dpdGh1Yi5jb20v dHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCi0gICA6Y29tbWl0ICI0 MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgotICAgOnNvdXJjZS1kaXIg InRyZWUtc2l0dGVyLW1hcmtkb3duL3NyYyIpCi0gdCkKLShhZGQtdG8tbGlzdAotICd0cmVlc2l0 LWxhbmd1YWdlLXNvdXJjZS1hbGlzdAotICcobWFya2Rvd24taW5saW5lCi0gICAiaHR0cHM6Ly9n aXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duIgotICAg OmNvbW1pdCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIKLSAgIDpz b3VyY2UtZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi1pbmxpbmUvc3JjIikKLSB0KQotCi07Ozsg SGVscGVyIGZ1bmN0aW9ucwotCi0oZGVmdmFyIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1 YWdlLW1hcAotICAnKCgiYysrIiAuIGNwcCkKLSAgICAoImMjIiAuIGMtc2hhcnApCi0gICAgKCJz aCIgLiBiYXNoKSkKLSAgIkFsaXN0IG1hcHBpbmcgY29kZSBibG9jayBsYW5ndWFnZSBuYW1lcyB0 byB0cmVlLXNpdHRlciBsYW5ndWFnZXMuCi0KLUtleXMgc2hvdWxkIGJlIHN0cmluZ3MsIGFuZCB2 YWx1ZXMgc2hvdWxkIGJlIGxhbmd1YWdlIHN5bWJvbHMuCi0KLUZvciBleGFtcGxlLCBcImMrK1wi IGluCi0KLSAgICBgYGBjKysKLSAgICBpbnQgbWFpbigpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0g ICAgfQotICAgIGBgYAorOzs7IEN1c3RvbWl6YXRpb25zOgogCi1tYXBzIHRvIHRyZWUtc2l0dGVy IGxhbmd1YWdlIGBjcHAnLiIpCi0KLShkZWZ2YXIgbWFya2Rvd24tdHMtY29kZS1ibG9jay1zb3Vy Y2UtbW9kZS1tYXAKLSAgJygoYmFzaCAuIGJhc2gtdHMtbW9kZSkKLSAgICAoYyAuIGMtdHMtbW9k ZSkKLSAgICAoYy1zaGFycCAuIGNzaGFycC10cy1tb2RlKQotICAgIChjbWFrZSAuIGNtYWtlLXRz LW1vZGUpCi0gICAgKGNwcCAuIGMrKy10cy1tb2RlKQotICAgIChjc3MgLiBjc3MtdHMtbW9kZSkK LSAgICAoZG9ja2VyZmlsZSAuIGRvY2tlcmZpbGUtdHMtbW9kZSkKLSAgICAoZWxpeGlyIC4gZWxp eGlyLXRzLW1vZGUpCi0gICAgKGdvIC4gZ28tdHMtbW9kZSkKLSAgICAoZ29tb2QgLiBnby1tb2Qt dHMtbW9kZSkKLSAgICAoZ293b3JrIC4gZ28td29yay10cy1tb2RlKQotICAgIChoZWV4IC4gaGVl eC10cy1tb2RlKQotICAgIChodG1sIC4gaHRtbC10cy1tb2RlKQotICAgIChqYXZhIC4gamF2YS10 cy1tb2RlKQotICAgIChqYXZhc2NyaXB0IC4ganMtdHMtbW9kZSkKLSAgICAoanNvbiAuIGpzb24t dHMtbW9kZSkKLSAgICAobHVhIC4gbHVhLXRzLW1vZGUpCi0gICAgKHBocCAuIHBocC10cy1tb2Rl KQotICAgIChweXRob24gLiBweXRob24tdHMtbW9kZSkKLSAgICAocnVieSAuIHJ1YnktdHMtbW9k ZSkKLSAgICAocnVzdCAuIHJ1c3QtdHMtbW9kZSkKLSAgICAodG9tbCAuIHRvbWwtdHMtbW9kZSkK LSAgICAodHN4IC4gdHN4LXRzLW1vZGUpCi0gICAgKHR5cGVzY3JpcHQgLiB0eXBlc2NyaXB0LXRz LW1vZGUpCi0gICAgKHlhbWwgLiB5YW1sLXRzLW1vZGUpKQotICAiQW4gYWxpc3Qgb2Ygc3VwcG9y dGVkIGNvZGUgYmxvY2sgbGFuZ3VhZ2VzIGFuZCB0aGVpciBtYWpvciBtb2RlLiIpCisoZGVmZ3Jv dXAgbWFya2Rvd24tdHMgbmlsCisgICJNYWpvciBtb2RlIGZvciB2aWV3aW5nIGFuZCBlZGl0aW5n IE1hcmtkb3duIGJ1ZmZlcnMuIgorICA6cHJlZml4ICJtYXJrZG93bi10cy0iCisgIDpncm91cCAn dGV4dAorICA6Z3JvdXAgJ2VkaXRpbmcKKyAgOnZlcnNpb24gIjMxLjEiKQogCiAoZGVmY3VzdG9t IG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIG5pbAogICAiTm9uLW5pbCBtZWFucyBoaWRlIE1hcmtk b3duIG1hcmt1cCBkZWxpbWl0ZXJzIGluIHRoaXMgYnVmZmVyLiIKICAgOnR5cGUgJ2Jvb2xlYW4K ICAgOnNhZmUgIydib29sZWFucAotICA6Z3JvdXAgJ21hcmtkb3duLXRzKQotCi07OzsgRmFjZXMK KyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0 b20gbWFya2Rvd24tdHMtZWxsaXBzaXMgbmlsCisgICJUaGUgZWxsaXBzaXMgdG8gdXNlIGluIGZv bGRlZCBoZWFkaW5ncy4KK1doZW4gbmlsLCB1c2UgdGhlIHN0YW5kYXJkIHRocmVlIGRvdHMuICBX aGVuIGEgbm9uLWVtcHR5IHN0cmluZywKK3VzZSB0aGF0IHN0cmluZyBpbnN0ZWFkLiIKKyAgOnR5 cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJEZWZhdWx0ICguLi4pIiBuaWwpCisgICAgICAgICAg ICAgICAgIChzdHJpbmcgOnRhZyAiU3RyaW5nIiA6dmFsdWUgIiDijIQiKSkKKyAgOnNhZmUgIydz dHJpbmctb3ItbnVsbC1wCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLW1lbnUtYmFyLXNob3cgdAorICAiTm9uLW5p bCBtZWFucyBzaG93IHRoZSBNYXJrZG93biBtZW51IGluIHRoZSBtZW51IGJhci4iCisgIDp0eXBl ICdib29sZWFuCisgIDpzYWZlICMnYm9vbGVhbnAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1mb2xk aW5nICdzaG93LWFsbAorICAiRGVmYXVsdCBoZWFkaW5nIGZvbGRpbmcgbGV2ZWwuIgorICA6dHlw ZSAnKGNob2ljZQorICAgICAgICAgIChjb25zdCA6dGFnICJTaG93IGV2ZXJ5dGhpbmciIHNob3ct YWxsKQorICAgICAgICAgIChjb25zdCA6dGFnICJGb2xkIGV2ZXJ5dGhpbmcsIHNob3dpbmcgdG9w LWxldmVsIGhlYWRpbmdzIiBmb2xkLWFsbCkKKyAgICAgICAgICAoY29uc3QgOnRhZyAiRm9sZCBo ZWFkaW5ncywgc2hvd2luZyBhbGwgaGVhZGluZyBsZXZlbHMiIGZvbGQtaGVhZGluZ3MpKQorICA6 c2FmZSAjJ3N5bWJvbHAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcyBuaWwKKyAgIk5vbi1u aWwgbWVhbnMgZGlzcGxheSBpbmxpbmUgaW1hZ2VzIGJlbG93IGltYWdlIGxpbmtzLiIKKyAgOnR5 cGUgJ2Jvb2xlYW4KKyAgOnNhZmUgIydib29sZWFucAorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBh Y2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93bi10cy1pbWFnZS1tYXgt d2lkdGggJ3dpbmRvdworICAiTWF4aW11bSB3aWR0aCBvZiBpbmxpbmUgaW1hZ2VzIGluIHBpeGVs cy4KK1doZW4gYHdpbmRvdycsIHVzZSB0aGUgd2luZG93IGJvZHkgd2lkdGguICBXaGVuIGEgbnVt YmVyLCB1c2UKK3RoYXQgYXMgdGhlIG1heGltdW0gcGl4ZWwgd2lkdGguIgorICA6dHlwZSAnKGNo b2ljZSAoY29uc3QgIDp0YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAg ICAobmF0bnVtIDp0YWcgIlBpeGVsIHdpZHRoIikpCisgIDpzYWZlIChsYW1iZGEgKHYpIChvciAo ZXEgdiAnd2luZG93KSAobmF0bnVtcCB2KSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2Fn ZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3Rl LWlubGluZS1pbWFnZXMgbmlsCisgICJIb3cgdG8gZGlzcGxheSByZW1vdGUgaW5saW5lIGltYWdl cy4KK1doZW4gbmlsLCBkbyBub3QgZGlzcGxheSByZW1vdGUgaW1hZ2VzLiAgV2hlbiBgZG93bmxv YWQnLCBmZXRjaCB0aGUKK2ltYWdlIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBkaXNwbGF5 IGl0LgorCitSZW1vdGUgaW1hZ2VzIGFyZSBza2lwcGVkIGJ5IGRlZmF1bHQgZm9yIHNlY3VyaXR5 LiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIlNraXAgcmVtb3RlIGltYWdlcyIgbmls KQorICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRG93bmxvYWQgcmVtb3RlIGltYWdlcyIg ZG93bmxvYWQpKQorICA6c2FmZSAjJ3N5bWJvbHAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVj a2JveCAi4piRIgorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoZWNrZWQg dGFzayBsaXN0IHN0cmluZy4KK25pbCBkaXNwbGF5cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBl ICcoY2hvaWNlIChzdHJpbmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIikKKyAgICAg ICAgICAgICAgICAgKGNvbnN0ICA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkK KyAgOnNhZmUgIydzdHJpbmctb3ItbnVsbC1wCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2Fn ZS12ZXJzaW9uICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVj a2JveCAi4piQIgorICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIHVuY2hlY2tl ZCB0YXNrIGxpc3Qgc3RyaW5nLgorbmlsIGRpc3BsYXlzIHRoZSByYXcgbWFya3VwLiIKKyAgOnR5 cGUgJyhjaG9pY2UgKHN0cmluZyA6dGFnICJEaXNwbGF5IHNwZWNpZmllZCBzdHJpbmciKQorICAg ICAgICAgICAgICAgICAoY29uc3QgIDp0YWcgIkRpc3BsYXkgb3JpZ2luYWwgbWFya3VwIiBuaWwp KQorICA6c2FmZSAjJ3N0cmluZy1vci1udWxsLXAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNr YWdlLXZlcnNpb24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJl YWstY2hhcmFjdGVyID/ilIAKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyB0 aGVtYXRpYyBicmVhayBzdHJpbmcuCitUaGUgY2hhcmFjdGVyIGlzIHJlcGVhdGVkIHRvIGZpbGwg dGhlIHdpbmRvdyB3aWR0aC4KK25pbCBkaXNwbGF5cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBl ICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgY2hhcmFjdGVyIikK KyAgICAgICAgICAgICAgICAgKGNvbnN0ICAgICA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1 cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisK KyhkZWZjdXN0b20gbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCAiwrYiCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgZm9yIGEgYmFja3NsYXNoIGhhcmQg bGluZSBicmVhay4KK1RoZSB2YWx1ZSBjYW4gYmUgYSBjaGFyYWN0ZXIgb3IgYSBzdHJpbmc7IG5p bCBrZWVwcyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChjaGFyYWN0ZXIgOnRh ZyAiRGlzcGxheSBzcGVjaWZpZWQgY2hhcmFjdGVyIikKKyAgICAgICAgICAgICAgICAgKHN0cmlu ZyAgICA6dGFnICJEaXNwbGF5IHNwZWNpZmllZCBzdHJpbmciKQorICAgICAgICAgICAgICAgICAo Y29uc3QgICAgIDp0YWcgIkRpc3BsYXkgb3JpZ2luYWwgbWFya3VwIiBuaWwpKQorICA6dmVyc2lv biAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93 bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UKKyAgKGxhbWJkYSAobikgKG1ha2Utc3RyaW5nIG4g P8K2KSkKKyAgIklmIG1hcmt1cCBpcyBoaWRkZW4sIGRpc3BsYXkgdGhpcyBmb3IgYSB0cmFpbGlu Zy1zcGFjZXMgaGFyZCBsaW5lIGJyZWFrLgorVGhlIHZhbHVlIGNhbiBiZToKKy0gYSBjaGFyYWN0 ZXIgb3Igc3RyaW5nOiBzaG93biBvbmNlIGF0IHRoZSBzdGFydCBvZiB0aGUgdHJhaWxpbmcgc3Bh Y2VzLAorICB3aXRoIG5vIHJlcGV0aXRpb24gKHRoZSByZW1haW5pbmcgc3BhY2VzIHN0YXkgaW52 aXNpYmxlKTsKKy0gYSBmdW5jdGlvbjogY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCB0aGUgbnVt YmVyIG9mIHRyYWlsaW5nIHNwYWNlcywKKyAgYW5kIG11c3QgcmV0dXJuIHRoZSBzdHJpbmcgdG8g ZGlzcGxheSBpbiBwbGFjZSBvZiB0aGUgcnVuOworLSBuaWw6IGtlZXAgdGhlIHJhdyBtYXJrdXAu IgorICA6dHlwZSAnKGNob2ljZSAoY2hhcmFjdGVyIDp0YWcgIkRpc3BsYXkgc3BlY2lmaWVkIGNo YXJhY3RlciAobm8gcmVwZXRpdGlvbikiKQorICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcg IkRpc3BsYXkgc3BlY2lmaWVkIHN0cmluZyAobm8gcmVwZXRpdGlvbikiKQorICAgICAgICAgICAg ICAgICAoZnVuY3Rpb24gOnRhZyAiRnVuY3Rpb24gZnJvbSBjb3VudCB0byBkaXNwbGF5IHN0cmlu ZyIpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1 cCIgbmlsKSkKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisK KyhkZWZjdXN0b20gbWFya2Rvd24tdHMtZGVmYXVsdC1jb2RlLWJsb2NrLW1vZGUgJ3RleHQtbW9k ZQorICAiRGVmYXVsdCBtb2RlIGZvciBhbm9ueW1vdXMgY29kZSBibG9ja3MuIgorICA6dHlwZSAn KGNob2ljZQorICAgICAgICAgIChjb25zdCAgOnRhZyAiVGV4dCBtb2RlIiB0ZXh0LW1vZGUpCisg ICAgICAgICAgKGNvbnN0ICA6dGFnICJGdW5kYW1lbnRhbCBtb2RlIiBmdW5kYW1lbnRhbC1tb2Rl KQorICAgICAgICAgIChzeW1ib2wgOnRhZyAiT3RoZXIgbW9kZSBzeW1ib2wiCisgICAgICAgICAg ICAgICAgICA6dmFsaWRhdGUgKGxhbWJkYSAod2lkKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlIHdpZCkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodW5sZXNzIChhbmQgdmFsIChlcSAnc3ltYm9sICh0eXBlLW9mIHZhbCkp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQtcHV0IHdpZCA6ZXJy b3IgIk11c3QgYmUgYSBub24tbmlsIHN5bWJvbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgd2lkKSkpKSkKKyAgOnNhZmUgIydzeW1ib2xwCisgIDp2ZXJzaW9uICIzMS4xIgor ICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCis7OzsgRmFjZXM6CiAKIChkZWZncm91cCBtYXJr ZG93bi10cy1mYWNlcyBuaWwKLSAgIkZhY2VzIHVzZWQgaW4gTWFya2Rvd24gVFMgTW9kZS4iCisg ICJGYWNlcyB1c2VkIGJ5IE1hcmtkb3duLVRTLiIKICAgOmdyb3VwICdtYXJrZG93bi10cy1mYWNl cwogICA6Z3JvdXAgJ2ZhY2VzKQogCkBAIC0xNDQsMTYgKzI4NywxNjQgQEAgbWFya2Rvd24tdHMt aGVhZGluZy01CiAoZGVmZmFjZSBtYXJrZG93bi10cy1oZWFkaW5nLTYgJygodCAoOmluaGVyaXQg b3V0bGluZS02KSkpCiAgICJGYWNlIGZvciBzaXh0aCBsZXZlbCBNYXJrZG93biBoZWFkaW5ncy4i KQogCi0oZGVmZmFjZSBtYXJrZG93bi10cy1saXN0LW1hcmtlciAnKCh0ICg6aW5oZXJpdCBzaGFk b3cpKSkKLSAgIkZhY2UgZm9yIE1hcmtkb3duIGxpc3QgbWFya2VycyBsaWtlIC0gYW5kICouIikK KyhkZWZmYWNlIG1hcmtkb3duLXRzLWVtcGhhc2lzICcoKHQgKDppbmhlcml0IGl0YWxpYykpKQor ICAiRmFjZSBmb3IgTWFya2Rvd24gZW1waGFzaXMgKGl0YWxpYykgdGV4dC4iKQorCisoZGVmZmFj ZSBtYXJrZG93bi10cy1ib2xkICcoKHQgKDppbmhlcml0IGJvbGQpKSkKKyAgIkZhY2UgZm9yIE1h cmtkb3duIHN0cm9uZyBlbXBoYXNpcyAoYm9sZCkgdGV4dC4iKQorCisoZGVmZmFjZSBtYXJrZG93 bi10cy1zdHJpa2V0aHJvdWdoICcoKHQgKDpzdHJpa2UtdGhyb3VnaCB0KSkpCisgICJGYWNlIGZv ciBNYXJrZG93biBzdHJpa2V0aHJvdWdoIHRleHQuIikKIAogKGRlZmZhY2UgbWFya2Rvd24tdHMt YmxvY2stcXVvdGUgJygodCAoOmluaGVyaXQgaXRhbGljKSkpCiAgICJGYWNlIGZvciBNYXJrZG93 biBibG9jayBxdW90ZXMuIikKIAorKGRlZmZhY2UgbWFya2Rvd24tdHMtbGluayAnKCh0ICg6aW5o ZXJpdCBsaW5rKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaW5rIHRleHQgYW5kIGltYWdlIGRl c2NyaXB0aW9ucy4iKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1saW5rLWRlc3RpbmF0aW9uICco KHQgKDppbmhlcml0IGZvbnQtbG9jay1zdHJpbmctZmFjZSkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gbGluayBkZXN0aW5hdGlvbnMgKFVSTHMpLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNv ZGUtc3BhbiAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIE1hcmtkb3duIGlubGluZSBjb2RlIHNwYW5zLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRz LWNvZGUtYmxvY2sgJygodCAoOmV4dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBmZW5j ZWQgY29kZSBibG9jayBjb250ZW50LgorQWx0ZXIgdGhpcyBmYWNlIHRvIGFkZCBhIGA6YmFja2dy b3VuZCcgZm9yIGEgdmlzdWFsbHkgZGlzdGluY3QKK2NvZGUgYmxvY2sgcmVnaW9uLCBlLmcuOgor ICAoc2V0LWZhY2UtYXR0cmlidXRlIFxcPSdtYXJrZG93bi10cy1jb2RlLWJsb2NrIG5pbCA6YmFj a2dyb3VuZCBcImdyYXk5NVwiKSIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWNvZGUtYmxvY2st bWFya3VwLWhpZGRlbgorICAnKCgoKGJhY2tncm91bmQgbGlnaHQpKSAoOmJhY2tncm91bmQgImdy YXk5NSIgOmV4dGVuZCB0KSkKKyAgICAoKChiYWNrZ3JvdW5kIGRhcmspKSAgKDpiYWNrZ3JvdW5k ICJncmF5MTUiIDpleHRlbmQgdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gZmVuY2VkIGNvZGUg YmxvY2sgY29udGVudCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitVc2VkIGluc3RlYWQgb2YgYG1h cmtkb3duLXRzLWNvZGUtYmxvY2snIHdoZW4gYG1hcmtkb3duLXRzLWhpZGUtbWFya3VwJworaXMg bm9uLW5pbC4iKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy1pbmRlbnRlZC1jb2RlLWJsb2NrICco KHQgKDppbmhlcml0IGZvbnQtbG9jay1zdHJpbmctZmFjZSkpKQorICAiRmFjZSBmb3IgTWFya2Rv d24gaW5kZW50ZWQgY29kZSBibG9ja3MuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaHRtbC10 YWcgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWRvYy1tYXJrdXAtZmFjZSkpKQorICAiRmFjZSBm b3IgaW5saW5lIEhUTUwgdGFncyBpbiBNYXJrZG93bi4iKQorCisoZGVmZmFjZSBtYXJrZG93bi10 cy1odG1sLWJsb2NrICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1kb2MtbWFya3VwLWZhY2UpKSkK KyAgIkZhY2UgZm9yIEhUTUwgYmxvY2tzIGluIE1hcmtkb3duLiIpCisKKyhkZWZmYWNlIG1hcmtk b3duLXRzLXRoZW1hdGljLWJyZWFrICcoKHQgKDppbmhlcml0IHNoYWRvdyA6ZXh0ZW5kIHQpKSkK KyAgIkZhY2UgZm9yIE1hcmtkb3duIHRoZW1hdGljIGJyZWFrcyAoaG9yaXpvbnRhbCBydWxlcyku CitDdXN0b21pemUgdGhpcyBmYWNlIHRvIGFkZCBhIDpiYWNrZ3JvdW5kIGZvciBhIGZ1bGwtd2lk dGggdmlzdWFsIHJ1bGUuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtZW50aXR5LXJlZmVyZW5j ZSAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stYnVpbHRpbi1mYWNlKSkpCisgICJGYWNlIGZvciBu YW1lZCBIVE1MIGVudGl0eSByZWZlcmVuY2VzIGxpa2UgJmFtcDsgYW5kICZjb3B5Oy4iKQorCiso ZGVmZmFjZSBtYXJrZG93bi10cy1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UKKyAgJygodCAo OmluaGVyaXQgZm9udC1sb2NrLWVzY2FwZS1mYWNlKSkpCisgICJGYWNlIGZvciBudW1lcmljIGNo YXJhY3RlciByZWZlcmVuY2VzIGxpa2UgJiM2NTsgYW5kICYjeDQxOy4iKQorCisoZGVmZmFjZSBt YXJrZG93bi10cy1sYXRleCAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkK KyAgIkZhY2UgZm9yIExhVGVYIC8gbWF0aCBjb250ZW50IGluIE1hcmtkb3duICgkLi4uJCBhbmQg JCQuLi4kJCkuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtdGFibGUtaGVhZGVyICcoKHQgKDpp bmhlcml0IChib2xkIGZvbnQtbG9jay1kb2MtZmFjZSkpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3du IHBpcGUgdGFibGUgaGVhZGVyIGNlbGxzLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxl LWNlbGwgJygodCAoOmluaGVyaXQgZGVmYXVsdCkpKQorICAiRmFjZSBmb3IgTWFya2Rvd24gcGlw ZSB0YWJsZSBkYXRhIGNlbGxzLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWRlbGlt aXRlci1jZWxsICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1kb2MtZmFjZSkpKQorICAiRmFjZSBm b3IgTWFya2Rvd24gcGlwZSB0YWJsZSBkZWxpbWl0ZXIgY2VsbHMgKC0tLSBzZXBhcmF0b3JzKS4i KQorCiAoZGVmZmFjZSBtYXJrZG93bi10cy1sYW5ndWFnZS1rZXl3b3JkICcoKHQgKDppbmhlcml0 IGZvbnQtbG9jay1rZXl3b3JkLWZhY2UpKSkKICAgIkZhY2UgZm9yIHRoZSBsYW5ndWFnZSBrZXl3 b3JkIGZvciBNYXJrZG93biBjb2RlIGJsb2Nrcy4iKQogCi07OzsgRm9udC1sb2NrCisoZGVmZmFj ZSBtYXJrZG93bi10cy1saXN0LW1hcmtlciAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKKyAgIkZh Y2UgZm9yIE1hcmtkb3duIGxpc3QgbWFya2VycyBsaWtlIC0gYW5kICouIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaAorICAnKCh0ICg6aW5oZXJpdCBv dXRsaW5lLTQgOndlaWdodCBib2xkKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUg YnJlYWtzIGludHJvZHVjZWQgYnkgYSB0cmFpbGluZyBiYWNrc2xhc2guIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaC1oaWRkZW4KKyAgJygodCAoOmlu aGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9sZCkpKQorICAiRmFjZSBmb3IgdHJhaWxpbmctYmFj a3NsYXNoIGhhcmQgbGluZSBicmVhayB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uIikKKworKGRlZmZh Y2UgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlCisgICcoKCgoYmFja2dyb3VuZCBs aWdodCkpICg6YmFja2dyb3VuZCAiZ3JheTcwIiA6d2VpZ2h0IGJvbGQpKQorICAgICgoKGJhY2tn cm91bmQgZGFyaykpICAoOmJhY2tncm91bmQgImdyYXk0MCIgOndlaWdodCBib2xkKSkpCisgICJG YWNlIGZvciBNYXJrZG93biBoYXJkIGxpbmUgYnJlYWtzIGludHJvZHVjZWQgYnkgdHdvIHRyYWls aW5nIHNwYWNlcy4KK1RoZSB0cmFpbGluZyBzcGFjZXMgYXJlIG90aGVyd2lzZSBpbnZpc2libGUs IHNvIHRoZXkgYXJlIHNob3duIGFzIGEKK3NoYWRvdy1jb2xvcmVkIGJsb2NrLiIpCisKKyhkZWZm YWNlIG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZS1oaWRkZW4KKyAgJygodCAoOmlu aGVyaXQgb3V0bGluZS00IDp3ZWlnaHQgYm9sZCkpKQorICAiRmFjZSBmb3IgdHJhaWxpbmctc3Bh Y2VzIGhhcmQgbGluZSBicmVhayB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQgJygodCAoOmluaGVyaXQgbWFya2Rvd24tdHMtbGlz dC1tYXJrZXIpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIHVuY2hlY2tlZCB0YXNrIGxpc3QgbWFy a2Vycy4iKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10YXNrLWNoZWNrZWQgJygodCAoOmluaGVy aXQgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGNoZWNr ZWQgdGFzayBsaXN0IG1hcmtlcnMuIikKKworKHRyZWVzaXQtZGVjbGFyZS11bmF2YWlsYWJsZS1m dW5jdGlvbnMpCisKKyhhZGQtdG8tbGlzdAorICd0cmVlc2l0LWxhbmd1YWdlLXNvdXJjZS1hbGlz dAorICcobWFya2Rvd24KKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1zaXR0ZXItZ3JhbW1h cnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUyMzFjZThmYThiMTFl NzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUtc2l0dGVyLW1hcmtk b3duL3NyYyIpCisgdCkKKworKGFkZC10by1saXN0CisgJ3RyZWVzaXQtbGFuZ3VhZ2Utc291cmNl LWFsaXN0CisgJyhtYXJrZG93bi1pbmxpbmUKKyAgICJodHRwczovL2dpdGh1Yi5jb20vdHJlZS1z aXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCisgICA6Y29tbWl0ICI0MTMyODUy MzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgorICAgOnNvdXJjZS1kaXIgInRyZWUt c2l0dGVyLW1hcmtkb3duLWlubGluZS9zcmMiKQorIHQpCisKKzs7OyBWYXJpYWJsZXM6CisKKyhk ZWZ2YXIgbWFya2Rvd24tdHMtLXNldC11cC1pbmxpbmUgbmlsCisgICJMZXQgYmluZCB0aGlzIHRv IG5vbi1uaWwgZm9yIGlubGluZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4iKQorCisoZGVm dmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgYCgoc2ggLiBiYXNoLXRzLW1vZGUp CisgICAgKHNoZWxsIC4gYmFzaC10cy1tb2RlKQorICAgICgsKGludGVybiAiYyMiKSAuIGMtc2hh cnApCisgICAgKGNwcCAuIGMrKy10cy1tb2RlKQorICAgIChlbCAuIGVtYWNzLWxpc3AtbW9kZSkK KyAgICAoZWxpc3AgLiBlbWFjcy1saXNwLW1vZGUpCisgICAgKGdvbGFuZyAuIGdvLXRzLW1vZGUp CisgICAgKGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCisgICAgKGdvd29yayAuIGdvLXdvcmstdHMt bW9kZSkKKyAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCisgICAgKG1kIC4gbWFya2Rvd24t dHMtbW9kZSkKKyAgICAocHkgLiBweXRob24tdHMtbW9kZSkKKyAgICAocmIgLiBydWJ5LXRzLW1v ZGUpCisgICAgKHJzIC4gcnVzdC10cy1tb2RlKQorICAgICh0ZXggLiBsYXRleC1tb2RlKQorICAg ICh0cyAuIHR5cGVzY3JpcHQtdHMtbW9kZSkKKyAgICAoeW1sIC4geWFtbC10cy1tb2RlKSkKKyAg IkFsaXN0IG1hcHBpbmcgY29kZSBibG9jayBsYW5ndWFnZXMgdG8gdGhlaXIgbWFqb3IgbW9kZS4K K1RoZSBhbGlzdCBpcyBvZiB0aGUgZm9ybSAoTEFOR1VBR0UgLiBNQUpPUi1NT0RFKS4KK01BSk9S LU1PREUgY2FuIGJlIGEgdHJlZS1zaXR0ZXIgb3IgYSBjb252ZW50aW9uYWwgbW9kZS4KK0lmIHlv dSBwcmVmZXIgYSBjb252ZW50aW9uYWwgbW9kZSBvdmVyIGl0cyB0cmVlLXNpdHRlciB2YXJpYW50 LCBhZGQgb3IgcmVwbGFjZQorcmVsZXZhbnQgZW50cmllcy4gIEZvciBleGFtcGxlOgorICAgIChh ZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcworICAgICAgXFw9Jyhw eXRob24gLiBweXRob24tbW9kZSkpCisgICAgKHNldGYgKGFsaXN0LWdldCBcXD0ncHkgbWFya2Rv d24tdHMtY29kZS1ibG9jay1tb2RlcykKKyAgICAgICAgICBcXD0ncHl0aG9uLW1vZGUpCitDb2Rl IGJsb2NrcyBmb3IgdGhhdCBub24gdHJlZS1zaXR0ZXIgbW9kZXMgd2lsbCBiZSBmb250aWZpZWQg dXNpbmcgdGhlCittb2RlJ3MgY29udmVudGlvbmFsIGZvbnQtbG9jayBydWxlcy4iKQorCisoZGVm dmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stZm9yY2UtY29udmVudGlvbmFsLW1vZGVzCisgICco bWFya2Rvd24tdHMtbW9kZQorICAgIHBocC10cy1tb2RlKQorICAiVHJlYXQgdGhlc2UgY29kZSBi bG9jayB0cmVlLXNpdHRlciBtb2RlcyBhcyBjb252ZW50aW9uYWwuCitTb21lIG1vZGVzIHRoYXQg ZW1iZWQgbXVsdGlwbGUgYHRyZWVzaXQnIHBhcnNlcnMgbmVlZCB0byBiZSB0cmVhdGVkIHdpdGgK K2NvbnZlbnRpb25hbCBmb250LWxvY2suICBgbWFya2Rvd24tdHMtbW9kZScgaXRzZWxmIGlzIG9u ZSBvZiB0aGVtLiIpCisKKzs7OyBGb250LWxvY2s6CiAKIChkZWZ1biBtYXJrZG93bi10cy0tZm9u dGlmeS1kZWxpbWl0ZXIgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCiAgICJGb250 aWZ5IGRlbGltaXRlciBOT0RFIGFuZCBvcHRpb25hbGx5IGhpZGUgaXRzIG1hcmt1cC4KQEAgLTE2 OCwyMyArNDU5LDc4MSBAQCBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAocHV0 LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVu ZCBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0t bWFya3VwKSkpCiAKKyhkZWZ2YXIgdXJsLW1haWwtY29tbWFuZCkgOyB1cmwvdXJsLXZhcnMuZWwK KworKGRlZnVuIG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uIChiZWcgZW5kIHVybCkKKyAg Ik1ha2UgdGhlIHJlZ2lvbiBmcm9tIEJFRyB0byBFTkQgYSBjbGlja2FibGUgYnV0dG9uIGZvciBV UkwuCitGb3IgbWFpbHRvOiBVUklzLCB1c2UgYHVybC1tYWlsLWNvbW1hbmQnLiAgRm9yIG90aGVy IHNjaGVtZXMKK1woZS5nLiwgaHR0cCwgZnRwKSwgb3BlbiB3aXRoIGBicm93c2UtdXJsJy4gIE90 aGVyd2lzZSwgdHJlYXQgYXMKK2EgcmVsYXRpdmUgZmlsZSBwYXRoIGFuZCBvcGVuIHdpdGggYGZp bmQtZmlsZScuCisKK0RvIG5vdCBwYXNzIGBmYWNlJyB0byBgbWFrZS10ZXh0LWJ1dHRvbic6IHRo ZSBsaW5rIGZhY2UgaXMgYWxyZWFkeQorYXBwbGllZCBieSBgbWFya2Rvd24tdHMtLWZvbnRpZnkt bGluay1ub2RlJyB2aWEKK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScgKHdpdGggYDpv dmVycmlkZSBhcHBlbmQnKSwgYW5kCitgYWRkLXRleHQtcHJvcGVydGllcycgd291bGQgb3RoZXJ3 aXNlIHJlcGxhY2UgdGhlIGFwcGVuZGVkIGZhY2UKK2xpc3Qgd2l0aCBhIHNpbmdsZSBgbWFya2Rv d24tdHMtbGluaycsIGNsb2JiZXJpbmcgYW4gZW5jbG9zaW5nCitoZWFkaW5nIGZhY2UuIgorICA7 OyBOT1RFOiBVUkkgc2NoZW1lIGFuZCBob3N0IG5hbWUgYXJlIGNhc2UtaW5zZW5zaXRpdmUgcGVy IFJGQyAzOTg2CisgIDs7IGFuZCBSRkMgNzIzMC4KKyAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2gg bmlsKSkKKyAgICAobWFrZS10ZXh0LWJ1dHRvbiBiZWcgZW5kCisgICAgICAgICAgICAgICAgICAg ICAgJ2FjdGlvbiAobGFtYmRhIChfYnV0dG9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctcHJl Zml4LXAgIiMiIHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFya2Rv d24tdHMtLWZvbGxvdy1mcmFnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3Vic3RyaW5nIHVybCAxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KHN0cmluZy1tYXRjaC1wICJcXGBtYWlsdG86IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgdXJsLW1haWwtY29tbWFuZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcYG1haWx0bzoiICIiIHVy bCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2gtcCAi XFxgW2Etel0rOiIgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChicm93 c2UtdXJsIHVybCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAoZmluZC1m aWxlIHVybCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAnaGVscC1lY2hvIHVybCkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1kZXN0aW5hdGlvbiAobm9kZSBvdmVycmlk ZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayBkZXN0aW5hdGlvbiBOT0RFIGFu ZCBoaWRlIGl0IHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVO RCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScu IgorICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICh0cmVlc2l0LW5vZGUtc3Rh cnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAgICdtYXJrZG93bi10cy1saW5rLWRl c3RpbmF0aW9uIG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgKHdoZW4gbWFya2Rvd24tdHMtaGlkZS1t YXJrdXAKKyAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxl ICdtYXJrZG93bi10cy0tbWFya3VwKSkpCisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWxp bmstcmVmLWNhY2hlIG5pbAorICAiQ2FjaGVkIGFsaXN0IG9mIChMQUJFTCAuIFVSTCkgZnJvbSBs aW5rIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4KK0VhY2ggZW50cnkgaXMgYSBjb25zIGNlbGwgbWFw cGluZyBhIGRvd25jYXNlZCBsYWJlbCBzdHJpbmcgdG8gaXRzCitkZXN0aW5hdGlvbiBVUkwuIikK KworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljayBuaWwKKyAg IlZhbHVlIG9mIGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgd2hlbiB0aGUgY2FjaGUgd2Fz IGJ1aWx0LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMgKCkK KyAgIlJldHVybiBhbiBhbGlzdCBvZiAoTEFCRUwgLiBVUkwpIGZyb20gbGluayByZWZlcmVuY2Ug ZGVmaW5pdGlvbnMuCitMQUJFTCBpcyBkb3duY2FzZWQgZm9yIGNhc2UtaW5zZW5zaXRpdmUgbWF0 Y2hpbmcuICBSZXN1bHRzIGFyZQorY2FjaGVkIGFuZCByZWJ1aWx0IG9ubHkgd2hlbiB0aGUgYnVm ZmVyIGNoYW5nZXMuIgorICAobGV0ICgodGljayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2sp KSkKKyAgICAodW5sZXNzIChlcSB0aWNrIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZS10aWNr KQorICAgICAgKGxldCogKChyb290ICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3du KSkKKyAgICAgICAgICAgICAobWF0Y2hlcyAodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICAg ICAgICAgICAgICAgICAgIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgJygobGlua19yZWZl cmVuY2VfZGVmaW5pdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua19sYWJlbCkg QGxhYmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX2Rlc3RpbmF0aW9uKSBAZGVz dCkpKSkKKyAgICAgICAgICAgICBkZWZzKQorICAgICAgICAod2hpbGUgbWF0Y2hlcworICAgICAg ICAgIChsZXQqICgobGFiZWwtcGFpciAocG9wIG1hdGNoZXMpKQorICAgICAgICAgICAgICAgICAo ZGVzdC1wYWlyIChwb3AgbWF0Y2hlcykpCisgICAgICAgICAgICAgICAgIChsYmwtdGV4dCAoc3Ry aW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0IChjZHIgbGFiZWwtcGFpcikgdCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxbIiAiXFxdIikpKQorICAgICAgICAg ICAgKHB1c2ggKGNvbnMgKGRvd25jYXNlIGxibC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtbm9kZS10ZXh0IChjZHIgZGVzdC1wYWlyKSB0KSkKKyAgICAgICAgICAgICAg ICAgIGRlZnMpKSkKKyAgICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlIChu cmV2ZXJzZSBkZWZzKQorICAgICAgICAgICAgICBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUt dGljayB0aWNrKSkpCisgICAgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLS1yZXNvbHZlLWxpbmstcmVmIChsYWJlbCkKKyAgIlJlc29sdmUgTEFCRUwg dG8gYSBVUkwgdmlhIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgorTEFCRUwgc2hvdWxkIGJl IHRoZSB0ZXh0IHdpdGhvdXQgYnJhY2tldHMuICBNYXRjaGluZyBpcworY2FzZS1pbnNlbnNpdGl2 ZSBwZXIgQ29tbW9uTWFyayBzcGVjIHNlY3Rpb24gNC43LiIKKyAgKGFsaXN0LWdldCAoZG93bmNh c2UgbGFiZWwpIChtYXJrZG93bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMpCisgICAgICAgICAg ICAgbmlsIG5pbCAjJ2VxdWFsKSkKKworOzs7IEZyYWdtZW50IGxpbmtzOgorCisoZGVmY29uc3Qg bWFya2Rvd24tdHMtLXNsdWctZ2l0aHViLXN0cmlwLXJlCisgICJbXVshXCIjJCUmJygpKissLi86 Ozw9Pj9AXFxeYHt8fX5dIgorICAiUHVuY3R1YXRpb24gc3RyaXBwZWQgYnkgR2l0SHViJ3MgZ2gt c2x1Z2dlciBiZWZvcmUgaHlwaGVuYXRpb24uIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zbHVn LWdpdGh1YiAodGV4dCkKKyAgIlJldHVybiB0aGUgR2l0SHViLWZsYXZvciBzbHVnIGZvciBoZWFk aW5nIFRFWFQuCitNaXJyb3JzIHRoZSBnaC1zbHVnZ2VyIGFsZ29yaXRobTogbG93ZXJjYXNlLCBz dHJpcCBhIGZpeGVkCitwdW5jdHVhdGlvbiBzZXQsIHJlcGxhY2Ugc3BhY2VzIHdpdGggaHlwaGVu cy4iCisgIChsZXQqICgobGMgKGRvd25jYXNlIHRleHQpKQorICAgICAgICAgKHN0cmlwcGVkIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMt LXNsdWctZ2l0aHViLXN0cmlwLXJlICIiIGxjKSkpCisgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0 cmluZyAiW1s6Ymxhbms6XV0iICItIiBzdHJpcHBlZCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LXNsdWctcGFuZG9jICh0ZXh0KQorICAiUmV0dXJuIHRoZSBQYW5kb2MtZmxhdm9yIGF1dG8taWQg c2x1ZyBmb3IgaGVhZGluZyBURVhULgorTWlycm9ycyBQYW5kb2MncyBhbGdvcml0aG06IGRyb3Ag ZXZlcnl0aGluZyBiZWZvcmUgdGhlIGZpcnN0CitsZXR0ZXIsIGtlZXAgYWxwaGFudW1lcmljcyBh bmQgYF8tLicsIGNvbGxhcHNlIHdoaXRlc3BhY2UgcnVucyB0bworaHlwaGVucywgbG93ZXJjYXNl LiAgRmFsbHMgYmFjayB0byBcInNlY3Rpb25cIiBpZiBlbXB0eS4iCisgIChsZXQqICgobGMgKGRv d25jYXNlIHRleHQpKQorICAgICAgICAgKGZyb20tbGV0dGVyIChpZiAoc3RyaW5nLW1hdGNoICJb WzphbHBoYTpdXSIgbGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgbGMg KG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKKyAgICAg ICAgIChrZXB0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAgICAgICAgICAiW15b OmFsbnVtOl1fLlxuXHRbOmJsYW5rOl0tXSIgIiIgZnJvbS1sZXR0ZXIpKQorICAgICAgICAgKGh5 cGhlbmF0ZWQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiW1s6Ymxhbms6XVx0XG5dKyIgIi0i IGtlcHQpKQorICAgICAgICAgKHRyaW1tZWQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiLStc XCciICIiIGh5cGhlbmF0ZWQpKSkKKyAgICAoaWYgKHN0cmluZy1lbXB0eS1wIHRyaW1tZWQpICJz ZWN0aW9uIiB0cmltbWVkKSkpCisKKyhkZWZjb25zdCBtYXJrZG93bi10cy0tZXhwbGljaXQtaWQt cmUKKyAgIlsgXHRdKntbIFx0XSojXFwoW159IFx0XStcXClbIFx0XSp9WyBcdF0qXFwnIgorICAi TWF0Y2ggYSBQYW5kb2Mtc3R5bGUgdHJhaWxpbmcgYHsjaWR9JyBvbiBhIGhlYWRpbmcgbGluZS4K K0NhcHR1cmUgZ3JvdXAgMSBpcyB0aGUgZXhwbGljaXQgaWQuIikKKworKGRlZnVuIG1hcmtkb3du LXRzLS1oZWFkaW5nLXRleHQtYW5kLWlkIChyYXcpCisgICJTcGxpdCBSQVcgaGVhZGluZyB0ZXh0 IGludG8gKFZJU0lCTEUgLiBFWFBMSUNJVC1JRCkuCitFWFBMSUNJVC1JRCBpcyBub24tbmlsIGlm IFJBVyBlbmRzIHdpdGggYSBQYW5kb2Mtc3R5bGUgYHsjaWR9JywKK2luIHdoaWNoIGNhc2UgVklT SUJMRSBpcyBSQVcgd2l0aCB0aGF0IHN1ZmZpeCByZW1vdmVkLiIKKyAgKGlmIChzdHJpbmctbWF0 Y2ggbWFya2Rvd24tdHMtLWV4cGxpY2l0LWlkLXJlIHJhdykKKyAgICAgIChjb25zIChzdWJzdHJp bmcgcmF3IDAgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgICAgIChtYXRjaC1zdHJpbmcg MSByYXcpKQorICAgIChjb25zIHJhdyBuaWwpKSkKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10 cy0taGVhZGluZy1pZC1jYWNoZSBuaWwKKyAgIkNhY2hlZCBoYXNoIHRhYmxlIG1hcHBpbmcgaGVh ZGluZyBzbHVnIHN0cmluZ3MgdG8gYnVmZmVyIHBvc2l0aW9ucy4KK0VhY2ggdmFsdWUgaXMgdGhl IGJ1ZmZlciBwb3NpdGlvbiBvZiB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoaW5nCitgYXR4X2hlYWRp bmcnIG9yIGBzZXRleHRfaGVhZGluZycgbm9kZS4gIEJ1aWx0IGxhemlseSBieQorYG1hcmtkb3du LXRzLS1oZWFkaW5nLWlkcycsIGludmFsaWRhdGVkIGJ5IGJ1ZmZlci10aWNrIGNoYW5nZS4iKQor CisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlLXRpY2sgbmlsCisg ICJWYWx1ZSBvZiBgYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2snIHdoZW4gdGhlIGhlYWRpbmct aWQgY2FjaGUgd2FzIGJ1aWx0LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tYnVpbGQtaGVhZGlu Zy1pZHMgKCkKKyAgIldhbGsgYWxsIGhlYWRpbmdzIGluIHRoZSBidWZmZXIgYW5kIHJldHVybiBh IGhhc2ggdGFibGUuCitXaGljaCBtYXBzIGVhY2ggc2x1ZyB0byB0aGUgYnVmZmVyIHBvc2l0aW9u IG9mIGl0cyBoZWFkaW5nLiAgRWFjaAoraGVhZGluZyBjb250cmlidXRlcyBpdHMgR2l0SHViIHNs dWcsIGl0cyBQYW5kb2Mgc2x1ZywgYW5kIGl0cyBleHBsaWNpdAorYHsjaWR9JyBpZiBwcmVzZW50 LiAgQm90aCBzbHVnIGFsZ29yaXRobXMgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSBidWZmZXIKK2Jl Y2F1c2UgYSBtYXJrZG93biBmaWxlIGlzIG9mdGVuIHByZXZpZXdlZCBieSBzZXZlcmFsIHJlbmRl cmVycyAoR2l0SHViCit3ZWIgVUksIFBhbmRvYywgbWRCb29rLCBIdWdvLCBhbmQgc28gb24pIGFu ZCB0aGUgc2FtZSBzb3VyY2Ugc2hvdWxkCityZXNvbHZlIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggb25l IHRoZSBhdXRob3Igd3JvdGUgdGhlIGxpbmsgZm9yLiAgRm9yIG1vc3QKK2hlYWRpbmdzIHRoZSB0 d28gYWxnb3JpdGhtcyBwcm9kdWNlIHRoZSBzYW1lIHNsdWcgYW55d2F5LgorRHVwbGljYXRlIHNs dWdzICh3aXRoaW4gb25lIGFsZ29yaXRobSkgYXJlIGRpc2FtYmlndWF0ZWQgYnkgYXBwZW5kaW5n CitgLTEnLCBgLTInLCBhbmQgc28gb24sIGluIGRvY3VtZW50IG9yZGVyLCBtYXRjaGluZyBHaXRI dWIncyBiZWhhdmlvci4KK1doZW4gdHdvIGRpc3RpbmN0IGhlYWRpbmdzIHdvdWxkIG90aGVyd2lz ZSBzaGFyZSBhIHNsdWcsIHRoZSBmaXJzdAorb2NjdXJyZW5jZSBpbiBkb2N1bWVudCBvcmRlciB3 aW5zLiIKKyAgKGxldCAoKHRhYmxlIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpCisg ICAgICAgIDs7IFBlci1hbGdvcml0aG0gZGVkdXBlIGNvdW50ZXJzOiBob3cgbWFueSB0aW1lcyB0 aGlzIGJhc2Ugc2x1ZworICAgICAgICA7OyBoYXMgYmVlbiBzZWVuIHNvIGZhciBpbiBkb2N1bWVu dCBvcmRlci4KKyAgICAgICAgKGdoLWNvdW50cyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1 YWwpKQorICAgICAgICAocGQtY291bnRzIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkp CisgICAgICAgIChyb290ICh0cmVlc2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKSkpCisg ICAgKGRvbGlzdCAoY2FwICh0cmVlc2l0LXF1ZXJ5LWNhcHR1cmUKKyAgICAgICAgICAgICAgICAg IHJvb3QKKyAgICAgICAgICAgICAgICAgICcoKChhdHhfaGVhZGluZykgQGgpCisgICAgICAgICAg ICAgICAgICAgICgoc2V0ZXh0X2hlYWRpbmcpIEBoKSkpKQorICAgICAgKGxldCogKChub2RlIChj ZHIgY2FwKSkKKyAgICAgICAgICAgICAocG9zICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgICAgICAgKHJhdyAoc3RyaW5nLXRyaW0gKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkp KQorICAgICAgICAgICAgIDs7IFN0cmlwIHRoZSBsZWFkaW5nIG1hcmtlciAoIyMjIG9yID09PT0v LS0tLSkuCisgICAgICAgICAgICAgOzsgRm9yIGF0eCwgZHJvcCBsZWFkaW5nICMncyBhbmQgZm9s bG93aW5nIHNwYWNlLgorICAgICAgICAgICAgIDs7IEZvciBzZXRleHQsIGRyb3AgdGhlIHRyYWls aW5nIHVuZGVybGluZSBsaW5lLgorICAgICAgICAgICAgICh0ZXh0IChjb25kCisgICAgICAgICAg ICAgICAgICAgICgoc3RyaW5nLW1hdGNoICJcXGAjK1sgXHRdKlxcKC4qP1xcKVsgXHRdKiMqWyBc dF0qXFwnIiByYXcpCisgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgcmF3KSkK KyAgICAgICAgICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIlxcYFxcKC4qP1xcKVxuWz0tXStb IFx0XSpcXCciIHJhdykKKyAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMSByYXcp KQorICAgICAgICAgICAgICAgICAgICAodCByYXcpKSkKKyAgICAgICAgICAgICAoc3BsaXQgKG1h cmtkb3duLXRzLS1oZWFkaW5nLXRleHQtYW5kLWlkIHRleHQpKQorICAgICAgICAgICAgICh2aXNp YmxlIChjYXIgc3BsaXQpKQorICAgICAgICAgICAgIChleHBsaWNpdCAoY2RyIHNwbGl0KSkpCisg ICAgICAgIDs7IEV4cGxpY2l0IHsjaWR9IHdpbnMgb3V0cmlnaHQ7IGZpcnN0IG9jY3VycmVuY2Ug a2VlcHMgaXQuCisgICAgICAgICh3aGVuIChhbmQgZXhwbGljaXQgKG5vdCAoZ2V0aGFzaCBleHBs aWNpdCB0YWJsZSkpKQorICAgICAgICAgIChwdXRoYXNoIGV4cGxpY2l0IHBvcyB0YWJsZSkpCisg ICAgICAgIDs7IEF1dG8gc2x1Z3MgKEdpdEh1YiArIFBhbmRvYyksIGRlZHVwZWQgcGVyIGFsZ29y aXRobS4KKyAgICAgICAgKGxldCogKChnaC1iYXNlIChtYXJrZG93bi10cy0tc2x1Zy1naXRodWIg dmlzaWJsZSkpCisgICAgICAgICAgICAgICAocGQtYmFzZSAobWFya2Rvd24tdHMtLXNsdWctcGFu ZG9jIHZpc2libGUpKQorICAgICAgICAgICAgICAgKGdoLW4gKGdldGhhc2ggZ2gtYmFzZSBnaC1j b3VudHMgMCkpCisgICAgICAgICAgICAgICAocGQtbiAoZ2V0aGFzaCBwZC1iYXNlIHBkLWNvdW50 cyAwKSkKKyAgICAgICAgICAgICAgIChnaC1pZCAoaWYgKHplcm9wIGdoLW4pIGdoLWJhc2UKKyAg ICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzLSVkIiBnaC1iYXNlIGdoLW4pKSkKKyAg ICAgICAgICAgICAgIChwZC1pZCAoaWYgKHplcm9wIHBkLW4pIHBkLWJhc2UKKyAgICAgICAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIiVzLSVkIiBwZC1iYXNlIHBkLW4pKSkpCisgICAgICAgICAg KHB1dGhhc2ggZ2gtYmFzZSAoMSsgZ2gtbikgZ2gtY291bnRzKQorICAgICAgICAgIChwdXRoYXNo IHBkLWJhc2UgKDErIHBkLW4pIHBkLWNvdW50cykKKyAgICAgICAgICA7OyBGaXJzdC13cml0ZXIt d2lucyBzbyBkb2N1bWVudCBvcmRlciB0aWVicmVha3MgY29sbGlzaW9ucy4KKyAgICAgICAgICAo dW5sZXNzIChnZXRoYXNoIGdoLWlkIHRhYmxlKSAocHV0aGFzaCBnaC1pZCBwb3MgdGFibGUpKQor ICAgICAgICAgICh1bmxlc3MgKGdldGhhc2ggcGQtaWQgdGFibGUpIChwdXRoYXNoIHBkLWlkIHBv cyB0YWJsZSkpKSkpCisgICAgdGFibGUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhlYWRpbmct aWRzICgpCisgICJSZXR1cm4gdGhlIGhlYWRpbmctaWQgaGFzaCB0YWJsZSBmb3IgdGhlIGN1cnJl bnQgYnVmZmVyLgorQ2FjaGUgaXMgcmVidWlsdCBvbmx5IHdoZW4gYGJ1ZmZlci1jaGFycy1tb2Rp ZmllZC10aWNrJyBoYXMgYWR2YW5jZWQKK3NpbmNlIHRoZSBsYXN0IGNhbGwgKG1pcnJvcnMgYG1h cmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZScpLiIKKyAgKGxldCAoKHRpY2sgKGJ1ZmZlci1jaGFy cy1tb2RpZmllZC10aWNrKSkpCisgICAgKHVubGVzcyAoZXEgdGljayBtYXJrZG93bi10cy0taGVh ZGluZy1pZC1jYWNoZS10aWNrKQorICAgICAgKHNldHEgbWFya2Rvd24tdHMtLWhlYWRpbmctaWQt Y2FjaGUgKG1hcmtkb3duLXRzLS1idWlsZC1oZWFkaW5nLWlkcykKKyAgICAgICAgICAgIG1hcmtk b3duLXRzLS1oZWFkaW5nLWlkLWNhY2hlLXRpY2sgdGljaykpCisgICAgbWFya2Rvd24tdHMtLWhl YWRpbmctaWQtY2FjaGUpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbGxvdy1mcmFnbWVudCAo aWQpCisgICJKdW1wIHRvIHRoZSBoZWFkaW5nIHdob3NlIHNsdWcgbWF0Y2hlcyBJRCAod2l0aG91 dCBsZWFkaW5nIGAjJykuCitQdXNoZXMgdGhlIG1hcmsgYmVmb3JlIG1vdmluZyBzbyBgQy11IEMt U1BDJyByZXR1cm5zLiAgU2lnbmFscworYHVzZXItZXJyb3InIGlmIG5vIGhlYWRpbmcgbWF0Y2hl cy4iCisgIChpZi1sZXQqICgocG9zIChnZXRoYXNoIGlkIChtYXJrZG93bi10cy0taGVhZGluZy1p ZHMpKSkpCisgICAgICAocHJvZ24KKyAgICAgICAgKHB1c2gtbWFyaykKKyAgICAgICAgKGdvdG8t Y2hhciBwb3MpCisgICAgICAgIChyZWNlbnRlcikpCisgICAgKHVzZXItZXJyb3IgIk5vIGhlYWRp bmcgZm9yIGZyYWdtZW50OiAjJXMiIGlkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlm eS1oZWFkaW5nIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiQXBwbHkg dGhlIGhlYWRpbmcgZmFjZSB0byBOT0RFJ3MgZnVsbCBleHRlbnQuCitVc2UgYGZvbnQtbG9jay1h cHBlbmQtdGV4dC1wcm9wZXJ0eScgZGlyZWN0bHkgc28gdGhlIGZhY2UgaXMgYXBwbGllZAorYWNy b3NzIHRoZSBlbnRpcmUgaGVhZGluZyBldmVuIHdoZW4gY2hpbGQgc3ViLW5vZGVzIChlLmcuIGFu IGlubGluZQorbGluaykgd291bGQgb3RoZXJ3aXNlIHByZXZlbnQgdGhlIHJlZ3VsYXIgdHJlZS1z aXR0ZXIgZmFjZSBydWxlIGZyb20KK2NvdmVyaW5nIHRoZW0uCisKK0ZvciBBVFggaGVhZGluZ3Ms IGFsc28gZm9udGlmeSBhbnkgb3B0aW9uYWwgdHJhaWxpbmcgY2xvc2luZy1gIycKK3NlcXVlbmNl IGFzIGEgZGVsaW1pdGVyLiAgVGhlIHRyZWUtc2l0dGVyIGdyYW1tYXIgZG9lcyBub3QgcHJvZHVj ZSBhCitzZXBhcmF0ZSBub2RlIGZvciB0aGVzZTsgcGVyIENvbW1vbk1hcmsgdGhleSBhcmUgZGVj b3JhdGl2ZSBhbmQKK211c3QgYmUgcHJlY2VkZWQgYnkgYSBzcGFjZSBvciB0YWIuIgorICAobGV0 KiAoKHR5cGUgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpKQorICAgICAgICAgKG4tc3RhcnQgKHRy ZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChuLWVuZCAgICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpKQorICAgICAgICAgKGZhY2UgKGNvbmQKKyAgICAgICAgICAgICAgICAoKGVxdWFs IHR5cGUgInNldGV4dF9oZWFkaW5nIikKKyAgICAgICAgICAgICAgICAgJ21hcmtkb3duLXRzLXNl dGV4dC1oZWFkaW5nKQorICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgIChsZXQg KChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKKyAgICAgICAgICAgICAgICAg ICAoaW50ZXJuIChmb3JtYXQgIm1hcmtkb3duLXRzLWhlYWRpbmctJWQiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKHRyZWVzaXQtbm9kZS10ZXh0IG1hcmtlciB0 KSkpKSkpKSkpCisgICAgKGZvbnQtbG9jay1hcHBlbmQtdGV4dC1wcm9wZXJ0eSBuLXN0YXJ0IG4t ZW5kICdmYWNlIGZhY2UpCisgICAgKHdoZW4gKHN0cmluZy1wcmVmaXgtcCAiYXR4XyIgdHlwZSkK KyAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAoZ290by1jaGFyIG4tZW5kKQorICAgICAg ICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0XG4iIG4tc3RhcnQpCisgICAgICAgIChsZXQgKChs aW5lLWVuZCAocG9pbnQpKSkKKyAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIFx0IiBu LXN0YXJ0KQorICAgICAgICAgIChsZXQgKCh0cmFpbGluZy1lbmQgKHBvaW50KSkpCisgICAgICAg ICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiIyIgbi1zdGFydCkKKyAgICAgICAgICAgIChsZXQg KCh0cmFpbGluZy1zdGFydCAocG9pbnQpKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoPCB0 cmFpbGluZy1zdGFydCB0cmFpbGluZy1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKD4g dHJhaWxpbmctc3RhcnQgbi1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAo Y2hhci1iZWZvcmUgdHJhaWxpbmctc3RhcnQpICcoP1xzID9cdCkpKQorICAgICAgICAgICAgICAg IChmb250LWxvY2stcHJlcGVuZC10ZXh0LXByb3BlcnR5CisgICAgICAgICAgICAgICAgIHRyYWls aW5nLXN0YXJ0IHRyYWlsaW5nLWVuZAorICAgICAgICAgICAgICAgICAnZmFjZSAnbWFya2Rvd24t dHMtZGVsaW1pdGVyKQorICAgICAgICAgICAgICAgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFy a3VwCisgICAgICAgICAgICAgICAgICA7OyBBbHNvIGhpZGUgdGhlIHNwYWNlKHMpIHByZWNlZGlu ZyB0aGUgY2xvc2VyIGFuZCBhbnkKKyAgICAgICAgICAgICAgICAgIDs7IHRyYWlsaW5nIHdoaXRl c3BhY2UsIHNvIHRoZSBoZWFkaW5nIGxvb2tzIGNsZWFuLgorICAgICAgICAgICAgICAgICAgKGxl dCAoKGhpZGUtc3RhcnQgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgdHJhaWxpbmctc3RhcnQpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiIG4tc3RhcnQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IGhpZGUtc3RhcnQgbGluZS1lbmQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy0tbWFya3VwKSkpKSkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstbm9kZSAobm9kZSBvdmVy cmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayBvciBpbWFnZSB0ZXh0IE5P REUgYXMgYSBjbGlja2FibGUgYnV0dG9uLgorV29ya3MgZm9yIGlubGluZSBsaW5rcywgcmVmZXJl bmNlIGxpbmtzLCBzaG9ydGN1dCBsaW5rcywgYW5kCitpbWFnZSBkZXNjcmlwdGlvbnMuICBUaGUg VVJMIGlzIHRha2VuIGZyb20gYSBzaWJsaW5nCitgbGlua19kZXN0aW5hdGlvbicgbm9kZSB3aGVu IHByZXNlbnQsIG9yIHJlc29sdmVkIGZyb20gYQorbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbiwg b3IgdGhlIG5vZGUgdGV4dCBpdHNlbGYgaXMgdXNlZCBhcworZmFsbGJhY2suICBPVkVSUklERSwg U1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdp dGgtb3ZlcnJpZGUnLiIKKyAgKGxldCAoKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2Rl KSkpCisgICAgOzsgV2hlbiBOT0RFIGlzIGEgbGlua19sYWJlbCBpbnNpZGUgYSBmdWxsX3JlZmVy ZW5jZV9saW5rIHRoYXQKKyAgICA7OyBhbHNvIGhhcyBhIGxpbmtfdGV4dCwgc2tpcCBpdCwgbGlu a190ZXh0IGhhbmRsZXMgdGhhdCBsaW5rLgorICAgICh1bmxlc3MgKGFuZCAoc3RyaW5nPSAodHJl ZXNpdC1ub2RlLXR5cGUgbm9kZSkgImxpbmtfbGFiZWwiKQorICAgICAgICAgICAgICAgICAodHJl ZXNpdC1zZWFyY2gtc3VidHJlZSBwYXJlbnQgIlxcYGxpbmtfdGV4dFxcJyIpKQorICAgICAgKHRy ZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBu b2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgICAgICdtYXJrZG93bi10cy1saW5rIG92 ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICAgIChsZXQqICgoZGVzdCAodHJlZXNpdC1zZWFyY2gtc3Vi dHJlZSBwYXJlbnQgIlxcYGxpbmtfZGVzdGluYXRpb25cXCciKSkKKyAgICAgICAgICAgICAodXJs IChpZiBkZXN0CisgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IGRlc3Qg dCkKKyAgICAgICAgICAgICAgICAgICAgOzsgUmVmZXJlbmNlIGxpbmtzOiByZXNvbHZlIHZpYSBs aW5rX2xhYmVsIG9yIGxpbmtfdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgKGxldCogKChsYWJl bC1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFyZW50ICJcXGBsaW5rX2xhYmVsXFwnIikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGFiZWwgKGlmIGxhYmVsLW5vZGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy10cmltICh0cmVlc2l0LW5vZGUtdGV4dAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLW5vZGUg dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJc XFsiICJcXF0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt bm9kZS10ZXh0IG5vZGUgdCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAob3IgKG1hcmtkb3du LXRzLS1yZXNvbHZlLWxpbmstcmVmIGxhYmVsKQorICAgICAgICAgICAgICAgICAgICAgICAgICBs YWJlbCkpKSkpCisgICAgICAgIChtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbgorICAgICAg ICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSB1cmwp KSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmsgKG5vZGUgb3ZlcnJp ZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGF1dG9saW5rIE5PREUgKFVSSSBvciBl bWFpbCkgYXMgYSBjbGlja2FibGUgYnV0dG9uLgorRm9yIGVtYWlsIGF1dG9saW5rcywgdGhlIFVS TCBpcyBwcmVmaXhlZCB3aXRoIFwibWFpbHRvOlwiLgorQW5nbGUgYnJhY2tldCBkZWxpbWl0ZXJz IGFyZSBoaWRkZW4gd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQg RU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRl Jy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAg ICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKGlubmVy IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAgICAgKDErIG5v ZGUtc3RhcnQpICgxLSBub2RlLWVuZCkpKQorICAgICAgICAgKHVybCAoaWYgKHN0cmluZz0gKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpICJlbWFpbF9hdXRvbGluayIpCisgICAgICAgICAgICAgICAg ICAoY29uY2F0ICJtYWlsdG86IiBpbm5lcikKKyAgICAgICAgICAgICAgICBpbm5lcikpKQorICAg ICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICBub2RlLXN0YXJ0IG5vZGUtZW5k ICdtYXJrZG93bi10cy1saW5rIG92ZXJyaWRlIHN0YXJ0IGVuZCkKKyAgICAobWFya2Rvd24tdHMt LW1ha2UtbGluay1idXR0b24gbm9kZS1zdGFydCBub2RlLWVuZCB1cmwpCisgICAgKHdoZW4gbWFy a2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0 ICgxKyBub2RlLXN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21h cmtkb3duLXRzLS1tYXJrdXApCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIG5vZGUtZW5k KSBub2RlLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3du LXRzLS1tYXJrdXApKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLXJlZi1s YWJlbCAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGluayBy ZWZlcmVuY2UgZGVmaW5pdGlvbiBsYWJlbCBOT0RFIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK1Ro ZSBicmFja2V0cyBhbmQgY29sb24gYXJlIGhpZGRlbiB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitP VkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5v ZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9k ZSkpCisgICAgICAgICAocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAg ICAgKGRlc3Qtbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBwYXJlbnQgIlxcYGxpbmtfZGVz dGluYXRpb25cXCciKSkKKyAgICAgICAgICh1cmwgKHdoZW4gZGVzdC1ub2RlICh0cmVlc2l0LW5v ZGUtdGV4dCBkZXN0LW5vZGUgdCkpKSkKKyAgICA7OyBGb250aWZ5IHRoZSBsYWJlbCB0ZXh0IChp bnNpZGUgYnJhY2tldHMpLgorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAg ICAoMSsgbm9kZS1zdGFydCkgKDEtIG5vZGUtZW5kKQorICAgICAnbWFya2Rvd24tdHMtbGluayBv dmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsgTWFrZSBpdCBhIGNsaWNrYWJsZSBidXR0b24uCisg ICAgKHdoZW4gdXJsCisgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24gKDErIG5v ZGUtc3RhcnQpICgxLSBub2RlLWVuZCkgdXJsKSkKKyAgICA7OyBIaWRlICJbIiBiZWZvcmUgbGFi ZWwgYW5kICJdOiAiIGJldHdlZW4gbGFiZWwgYW5kIGRlc3RpbmF0aW9uLgorICAgICh3aGVuIG1h cmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFy dCAoMSsgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdt YXJrZG93bi10cy0tbWFya3VwKQorICAgICAgKGxldCAoKGNvbG9uLWVuZCAoaWYgZGVzdC1ub2Rl ICh0cmVlc2l0LW5vZGUtc3RhcnQgZGVzdC1ub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICgxKyBub2RlLWVuZCkpKSkKKyAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBub2RlLWVu ZCkgY29sb24tZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJr ZG93bi10cy0tbWFya3VwKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmst cmVmLWRlc3RpbmF0aW9uIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN0IF8pCisgICJGb250 aWZ5IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSB3 aGVuIG1hcmt1cCBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0 aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQt Zm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVl c2l0LW5vZGUtZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVy cmlkZSBzdGFydCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1 dC10ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMt LW1hcmt1cCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZhbGlkLXAgKG5v ZGUpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBsYXRleCBibG9jayBOT0RFIGlzIHdpdGhpbiBhIHNp bmdsZSBpbmxpbmUgc2NvcGUuCitUaGUgZ2xvYmFsIGlubGluZSBwYXJzZXIgY2FuIGNyZWF0ZSBm YWxzZSBgbGF0ZXhfYmxvY2snIG1hdGNoZXMKK3NwYW5uaW5nIGFjcm9zcyBwYXJhZ3JhcGggYm91 bmRhcmllcy4gIENoZWNrIHRoYXQgdGhlIG9wZW5pbmcgYW5kCitjbG9zaW5nIGRlbGltaXRlcnMg c2hhcmUgdGhlIHNhbWUgbWFya2Rvd24gYGlubGluZScgYW5jZXN0b3IuIgorICAobGV0ICgobm9k ZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9kZS1lbmQgKDEt ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpCisgICAgKHdoZW4tbGV0KiAoKG1kLXN0YXJ0ICh0 cmVlc2l0LW5vZGUtYXQgbm9kZS1zdGFydCAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAgICht ZC1lbmQgKHRyZWVzaXQtbm9kZS1hdCBub2RlLWVuZCAnbWFya2Rvd24pKQorICAgICAgICAgICAg ICAgIChpbmxpbmUtc3RhcnQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWQtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVl c2l0LW5vZGUtdHlwZSBuKSAiaW5saW5lIikpKSkKKyAgICAgICAgICAgICAgICAoaW5saW5lLWVu ZCAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWQt ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAiaW5saW5l IikpKSkpCisgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtc3RhcnQpCisg ICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBpbmxpbmUtZW5kKSkpKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLS1mb250aWZ5LWxhdGV4LWJsb2NrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVu ZCAmcmVzdCBfKQorICAiRm9udGlmeSBsYXRleCBibG9jayBOT0RFIGFuZCBoaWRlIGl0cyBkZWxp bWl0ZXJzIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK1NraXAgZm9udGlmaWNhdGlvbiBmb3IgZmFs c2UgbWF0Y2hlcyB0aGF0IHNwYW4gYWNyb3NzIHBhcmFncmFwaCBib3VuZGFyaWVzLgorT1ZFUlJJ REUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlm eS13aXRoLW92ZXJyaWRlJy4iCisgICh3aGVuIChtYXJrZG93bi10cy0tbGF0ZXgtYmxvY2stdmFs aWQtcCBub2RlKQorICAgICh0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAodHJl ZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpCisgICAgICdtYXJr ZG93bi10cy1sYXRleCBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKHdoZW4gbWFya2Rvd24tdHMt aGlkZS1tYXJrdXAKKyAgICAgIChkb3RpbWVzIChpICh0cmVlc2l0LW5vZGUtY2hpbGQtY291bnQg bm9kZSkpCisgICAgICAgIChsZXQgKChjaGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgaSkp KQorICAgICAgICAgICh3aGVuIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJsYXRl eF9zcGFuX2RlbGltaXRlciIpCisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKHRyZWVz aXQtbm9kZS1zdGFydCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLWVuZCBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52 aXNpYmxlICdtYXJrZG93bi10cy0tbWFya3VwKSkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMt LWZvbnRpZnktYmFja3NsYXNoLWVzY2FwZSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3Qg XykKKyAgIkZvbnRpZnkgYmFja3NsYXNoIGVzY2FwZSBOT0RFLCBoaWRpbmcgdGhlIGJhY2tzbGFz aCB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitTa2lwIGhpZGluZyBpbnNpZGUgYGxhdGV4X2Jsb2Nr JyB3aGVyZSBiYWNrc2xhc2hlcyBhcmUgTGFUZVggc3ludGF4LgorT1ZFUlJJREUsIFNUQVJULCBh bmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlJy4iCisgIChsZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgICAgIChpbi1sYXRleCAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUt cGFyZW50IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRleF9ibG9jayIpKSkK KyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCAoMSsg bm9kZS1zdGFydCkKKyAgICAgJ21hcmtkb3duLXRzLWRlbGltaXRlciBvdmVycmlkZSBzdGFydCBl bmQpCisgICAgKHdoZW4gKGFuZCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCAobm90IGluLWxhdGV4 KSkKKyAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0ICgxKyBub2RlLXN0YXJ0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRzLS1tYXJrdXAp KSkpCisKKyhkZWZ2YXIgc2dtbC1jaGFyLW5hbWVzKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVu dGl0eS1nZXQgIm9yZy9vcmctZW50aXRpZXMuZWwiKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWRl Y29kZS1lbnRpdHkgKHRleHQpCisgICJEZWNvZGUgSFRNTCBlbnRpdHkgVEVYVCAoZS5nLiwgXCIm YW1wO1wiKSB0byBpdHMgY2hhcmFjdGVyIHN0cmluZy4KK1JldHVybiB0aGUgZGVjb2RlZCBzdHJp bmcsIG9yIG5pbCBpZiB0aGUgZW50aXR5IGlzIHVua25vd24uIgorICAoY29uZAorICAgOzsgTnVt ZXJpYyBoZXggJiN4MUY0QTk7CisgICAoKHN0cmluZy1tYXRjaCAiXFxgJiN4XFwoW1s6eGRpZ2l0 Ol1dK1xcKTtcXCciIHRleHQpCisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVy IChtYXRjaC1zdHJpbmcgMSB0ZXh0KSAxNikpKQorICAgOzsgTnVtZXJpYyBkZWNpbWFsICYjMTIz OworICAgKChzdHJpbmctbWF0Y2ggIlxcYCYjXFwoW1s6ZGlnaXQ6XV0rXFwpO1xcJyIgdGV4dCkK KyAgICAoY2hhci10by1zdHJpbmcgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxIHRl eHQpKSkpCisgICA7OyBOYW1lZCAmYW1wOyAmY29weTsgdmlhIG9yZy1lbnRpdGllcywgZmFsbCBi YWNrIHRvIHNnbWwtY2hhci1uYW1lcworICAgKChzdHJpbmctbWF0Y2ggIlxcYCZcXChbWzphbG51 bTpdXStcXCk7XFwnIiB0ZXh0KQorICAgIChsZXQgKChuYW1lIChtYXRjaC1zdHJpbmcgMSB0ZXh0 KSkpCisgICAgICAocmVxdWlyZSAnb3JnLWVudGl0aWVzKQorICAgICAgKGlmLWxldCogKChlbnRy eSAob3JnLWVudGl0eS1nZXQgbmFtZSkpCisgICAgICAgICAgICAgICAgKHV0ZjggKG50aCA2IGVu dHJ5KSkpCisgICAgICAgICAgdXRmOAorICAgICAgICAocmVxdWlyZSAnc2dtbC1tb2RlKQorICAg ICAgICAod2hlbi1sZXQqICgoY29kZSAoc2VxLXBvc2l0aW9uIHNnbWwtY2hhci1uYW1lcyBuYW1l ICMnZXF1YWwpKSkKKyAgICAgICAgICAoY2hhci10by1zdHJpbmcgY29kZSkpKSkpKSkKKworKGRl ZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWVudGl0eSAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQg JnJlc3QgXykKKyAgIkZvbnRpZnkgZW50aXR5IE5PREUgYW5kIHNob3cgaXRzIGRlY29kZWQgdmFs dWUgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBw YXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChs ZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2Rl LWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZhY2UgKGlmIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImVudGl0eV9yZWZlcmVuY2UiKQorICAgICAgICAgICAg ICAgICAgJ21hcmtkb3duLXRzLWVudGl0eS1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAnbWFy a2Rvd24tdHMtbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlKSkpCisgICAgKHRyZWVzaXQtZm9u dGlmeS13aXRoLW92ZXJyaWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIG1hcmtk b3duLXRzLWhpZGUtbWFya3VwCisgICAgICAgICh3aGVuLWxldCogKChkZWNvZGVkIChtYXJrZG93 bi10cy0tZGVjb2RlLWVudGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVz aXQtbm9kZS10ZXh0IG5vZGUgdCkpKQorICAgICAgICAgICAgICAgICAgICAoKGNoYXItZGlzcGxh eWFibGUtcCAoYXJlZiBkZWNvZGVkIDApKSkpCisgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5 IG5vZGUtc3RhcnQgbm9kZS1lbmQgJ2Rpc3BsYXkgZGVjb2RlZCkpCisgICAgICAocmVtb3ZlLXRl eHQtcHJvcGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktY2hlY2tib3ggKG5vZGUgb3ZlcnJpZGUgc3RhcnQg ZW5kICZyZXN0IF8pCisgICJGb250aWZ5IHRhc2sgbGlzdCBjaGVja2JveCBOT0RFLCBzaG93IGEg VW5pY29kZSBzeW1ib2wgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBh bmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJy aWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQor ICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAgICAgKGNo ZWNrZWQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAidGFza19saXN0X21hcmtlcl9j aGVja2VkIikpCisgICAgICAgICAoZmFjZSAoaWYgY2hlY2tlZCAnbWFya2Rvd24tdHMtdGFzay1j aGVja2VkCisgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy10YXNrLXVuY2hlY2tlZCkpCisg ICAgICAgICAocmVwbGFjZW1lbnQgKGlmIGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveAorICAgICAgICAgICAgICAgICAgICAgICAg bWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94KSkpCisgICAgKHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlIG5vZGUtc3RhcnQgbm9kZS1lbmQgZmFjZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKGlmIChhbmQgbWFya2Rv d24tdHMtaGlkZS1tYXJrdXAgcmVwbGFjZW1lbnQKKyAgICAgICAgICAgICAoY2hhci1kaXNwbGF5 YWJsZS1wIChhcmVmIHJlcGxhY2VtZW50IDApKSkKKyAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5 IG5vZGUtc3RhcnQgbm9kZS1lbmQgJ2Rpc3BsYXkgcmVwbGFjZW1lbnQpCisgICAgICAocmVtb3Zl LXRleHQtcHJvcGVydGllcyBub2RlLXN0YXJ0IG5vZGUtZW5kICcoZGlzcGxheSBuaWwpKSkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktaGFyZC1saW5lLWJyZWFrIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBoYXJkIGxpbmUgYnJlYWsgTk9ERTsg c2hvdyBhIFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK0EgYmFja3NsYXNo IGJyZWFrIGdldHMgYG1hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1iYWNrc2xhc2gnIChvciBp dHMKK2AtaGlkZGVuJyB2YXJpYW50IHdoZW4gbWFya3VwIGlzIGhpZGRlbik7IGEgdHJhaWxpbmct c3BhY2VzIGJyZWFrIGdldHMKK2BtYXJrZG93bi10cy1oYXJkLWxpbmUtYnJlYWstc3BhY2UnIChv ciBgLWhpZGRlbicpLiAgV2hlbiBoaWRkZW4sIGEKK2JhY2tzbGFzaCBicmVhayBpcyByZXBsYWNl ZCBieSBhIHNpbmdsZSBgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrJworZ2x5cGg7IGEgdHJh aWxpbmctc3BhY2VzIGJyZWFrIHJlcGxhY2VzIGVhY2ggc3BhY2Ugd2l0aCB0aGUgZ2x5cGgsIHNv IHRoZSBydW4KK29mIHBpbGNyb3dzIGZpbGxzIHRoZSBsaW5lIHVwIHRvIHRoZSBuZXdsaW5lLgor T1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQt Zm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1u b2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICAgKHRyZWVzaXQtbm9kZS1lbmQg bm9kZSkpCisgICAgICAgICAodGV4dCAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSB0KSkK KyAgICAgICAgIChiYWNrc2xhc2ggIChhbmQgKD4gKGxlbmd0aCB0ZXh0KSAwKSAoZXEgKGFyZWYg dGV4dCAwKSA/XFwpKSkKKyAgICAgICAgIDs7IERldGVybWluZSB0aGUgYWN0dWFsIHJhbmdlIHRv IGZvbnRpZnkgYW5kIHJlcGxhY2UuICBUaGUKKyAgICAgICAgIDs7IGhhcmRfbGluZV9icmVhayBu b2RlIG1heSBub3QgY292ZXIgdGhlIGZ1bGwgcnVuIG9mIHRyYWlsaW5nCisgICAgICAgICA7OyBz cGFjZXMsIHNvIHdhbGsgYmFjayBmcm9tIGVuZC1vZi1saW5lIG91cnNlbHZlcyBmb3IgdGhlCisg ICAgICAgICA7OyBzcGFjZXMgdmFyaWFudC4KKyAgICAgICAgIChyZWdpb24gICAgIChpZiBiYWNr c2xhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBub2RlLXN0YXJ0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChhbmQgKD4gbm9kZS1lbmQgbm9kZS1zdGFydCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGNoYXItYmVmb3Jl IG5vZGUtZW5kKSA/XG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS0g bm9kZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLWVuZCkpCisg ICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgoZW9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnMgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2tpcC1jaGFycy1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiAiIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2wp KSkpKQorICAgICAgICAgKHJlZ2lvbi1zdGFydCAoY2FyIHJlZ2lvbikpCisgICAgICAgICAocmVn aW9uLWVuZCAgIChjZHIgcmVnaW9uKSkKKyAgICAgICAgIChmYWNlICAgICAgIChjb25kCisgICAg ICAgICAgICAgICAgICAgICAgKChhbmQgYmFja3NsYXNoIG1hcmtkb3duLXRzLWhpZGUtbWFya3Vw KQorICAgICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJh Y2tzbGFzaC1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAgKGJhY2tzbGFzaCAnbWFya2Rv d24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAo bWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtkb3du LXRzLWhhcmQtbGluZS1icmVhay1zcGFjZS1oaWRkZW4pCisgICAgICAgICAgICAgICAgICAgICAg KHQgJ21hcmtkb3duLXRzLWhhcmQtbGluZS1icmVhay1zcGFjZSkpKSkKKyAgICAodHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUgcmVnaW9uLXN0YXJ0IHJlZ2lvbi1lbmQgZmFjZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgOzsg QWx3YXlzIHN0YXJ0IGJ5IGNsZWFyaW5nIGFueSBzdGFsZSBgZGlzcGxheScgcHJvcGVydHkuICBX ZSBuZXZlcgorICAgIDs7IHNwYW4gdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2l0aCBgZGlzcGxheScg KGl0IGNvbmZ1c2VzCisgICAgOzsgcmVkaXNwbGF5J3MgY3Vyc29yIHBsYWNlbWVudCksIGFuZCB3 ZSBvbmx5IHBhaW50IGEgc2luZ2xlCisgICAgOzsgY29tYmluZWQgc3RyaW5nIG9udG8gdGhlIGZp cnN0IGNoYXJhY3RlciBvZiB0aGUgcnVuLCBsZWF2aW5nCisgICAgOzsgdGhlIHJlc3Qgb2YgdGhl IG1hcmt1cCBhbG9uZS4KKyAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyByZWdpb24tc3RhcnQg cmVnaW9uLWVuZCAnKGRpc3BsYXkgbmlsKSkKKyAgICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1h cmt1cAorICAgICAgKGxldCogKChzcGVjIChpZiBiYWNrc2xhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLWJhY2tzbGFzaAorICAgICAgICAgICAg ICAgICAgICAgbWFya2Rvd24tdHMtaGFyZC1saW5lLWJyZWFrLXNwYWNlKSkKKyAgICAgICAgICAg ICAoc3RyIChjb25kCisgICAgICAgICAgICAgICAgICAgKChudWxsIHNwZWMpIG5pbCkKKyAgICAg ICAgICAgICAgICAgICAoKGNoYXJhY3RlcnAgc3BlYykgKGNoYXItdG8tc3RyaW5nIHNwZWMpKQor ICAgICAgICAgICAgICAgICAgICgoc3RyaW5ncCBzcGVjKSBzcGVjKQorICAgICAgICAgICAgICAg ICAgICgoZnVuY3Rpb25wIHNwZWMpCisgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHNwZWMg KC0gcmVnaW9uLWVuZCByZWdpb24tc3RhcnQpKSkpKSkKKyAgICAgICAgKHdoZW4gKGFuZCAoc3Ry aW5ncCBzdHIpCisgICAgICAgICAgICAgICAgICAgKD4gKGxlbmd0aCBzdHIpIDApCisgICAgICAg ICAgICAgICAgICAgKGNoYXItZGlzcGxheWFibGUtcCAoYXJlZiBzdHIgMCkpKQorICAgICAgICAg IChwdXQtdGV4dC1wcm9wZXJ0eSByZWdpb24tc3RhcnQgKDErIHJlZ2lvbi1zdGFydCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgc3RyKQorICAgICAgICAgIDs7IEZvciB0 aGUgdHJhaWxpbmctc3BhY2VzIHZhcmlhbnQsIGhpZGUgdGhlIHJlbWFpbmluZworICAgICAgICAg IDs7IHNwYWNlcyBpbiB0aGUgcnVuIHNvIHRoZSBsaW5lIGRvZXNuJ3QgZW5kIHdpdGggbGVmdG92 ZXIKKyAgICAgICAgICA7OyB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBzdWJzdGl0dXRlZCBnbHlwaC4g IEVhY2ggcG9zaXRpb24KKyAgICAgICAgICA7OyBnZXRzIGl0cyBvd24gZW1wdHktc3RyaW5nIGBk aXNwbGF5JyBzbyBjdXJzb3IgcGxhY2VtZW50CisgICAgICAgICAgOzsgc3RheXMgdW5hbWJpZ3Vv dXMuCisgICAgICAgICAgKHVubGVzcyBiYWNrc2xhc2gKKyAgICAgICAgICAgIChsZXQgKChpICgx KyByZWdpb24tc3RhcnQpKSkKKyAgICAgICAgICAgICAgKHdoaWxlICg8IGkgcmVnaW9uLWVuZCkK KyAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgaSAoMSsgaSkgJ2Rpc3BsYXkgIiIp CisgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkpKSkpKSkKKworKGRlZnVuIG1hcmtk b3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAm cmVzdCBfKQorICAiRm9udGlmeSB0aGVtYXRpYyBicmVhayBOT0RFIGFuZCBzaG93IGEgbGluZSB3 aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3Nl ZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKGxldCAo KG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5k ICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3Zl cnJpZGUgbm9kZS1zdGFydCBub2RlLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAoYW5kIG1hcmtkb3duLXRz LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNoYXJhY3RlcgorICAgICAg ICAgICAgIChjaGFyLWRpc3BsYXlhYmxlLXAgbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJlYWstY2hh cmFjdGVyKSkKKyAgICAgICAgKGxldCogKChjb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIg bm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50 LWNvbHVtbikpKQorICAgICAgICAgICAgICAgOzsgU3BhbiBpZiB0aGUgZmFjZSBoYXMgbm9uLW5p bCA6ZXh0ZW5kLgorICAgICAgICAgICAgICAgKHNwYW4tbGVuZ3RoIChpZiAoZmFjZS1hdHRyaWJ1 dGUgJ21hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ZXh0ZW5kIG5pbCAnZGVmYXVsdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gKHdpbmRvdy1ib2R5LXdpZHRoKSBjb2wpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxMikpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0 eSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNw bGF5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyBzcGFuLWxlbmd0aAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNo YXJhY3RlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpKSkKKyAgICAgIChy ZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIG5vZGUtc3RhcnQgbm9kZS1lbmQgJyhkaXNwbGF5IG5pbCkp KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrIChub2RlIF9vdmVy cmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiRm9udGlmeSBjb2RlIGJsb2NrIGNvbnRlbnQg Tk9ERSB3aXRoIGEgYmFja2dyb3VuZCBvdmVybGF5LgorVXNlIGBtYXJrZG93bi10cy1jb2RlLWJs b2NrLW1hcmt1cC1oaWRkZW4nIHdoZW4gbWFya3VwIGlzIGhpZGRlbiwKK2BtYXJrZG93bi10cy1j b2RlLWJsb2NrJyBvdGhlcndpc2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0aGUKK2JhY2tncm91bmQg bGF5ZXJzIGl0c2VsZiBiZWhpbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9udGlmaWNhdGlvbi4KK1Ro ZSBvdmVybGF5IGFsc28gc3RvcmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1YWdlIGFuZCBtb2RlIGFz Citwcm9wZXJ0aWVzIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlJyBhbmQKK2BtYXJr ZG93bi10cy1jb2RlLWJsb2NrLW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQorYG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbGFuZ3VhZ2UtYXQnLiIKKyAgKGxldCogKChub2RlLXN0YXJ0IChzYXZlLWV4Y3Vy c2lvbgorICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3Rh cnQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlv bikpKQorICAgICAgICAgKG5vZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQorICAgICAgICAgICAgICAgICAgICAg KHBvaW50KSkpCisgICAgICAgICAoZmFjZSAoaWYgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAKKyAg ICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisg ICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKyAgICAgICAgIChsYW5n IChtYXJrZG93bi10cy0tbGFuZ3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAgICAgICAgIChtb2RlICh3 aGVuIGxhbmcKKyAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1 YWdlLW1vZGUgbGFuZykpKQorICAgICAgICAgKGV4aXN0aW5nIChzZXEtZmluZCAobGFtYmRhIChv dikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgb3YgJ21hcmtk b3duLXRzLWNvZGUtYmxvY2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Zlcmxh eXMtYXQgbm9kZS1zdGFydCkpKSkKKyAgICAoaWYgZXhpc3RpbmcKKyAgICAgICAgKHByb2duCisg ICAgICAgICAgKG1vdmUtb3ZlcmxheSBleGlzdGluZyBub2RlLXN0YXJ0IG5vZGUtZW5kKQorICAg ICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAnZmFjZSBmYWNlKQorICAgICAgICAgIChvdmVy bGF5LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQor ICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1t b2RlIG1vZGUpKQorICAgICAgKGxldCAoKG92IChtYWtlLW92ZXJsYXkgbm9kZS1zdGFydCBub2Rl LWVuZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgOzsgTWFya2VycyBuZWVkIHRvIGJlIHNldCBvbmx5 IG9uY2UuCisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFy a2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS1zdGFydCkpCisgICAg ICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyIChzZXQtbWFy a2VyIChtYWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS1lbmQpKQorICAgICAgICAob3ZlcmxheS1w dXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2sgdCkKKyAgICAgICAgKG92ZXJsYXktcHV0IG92 ICdmYWNlIGZhY2UpCisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1i bG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRz LWNvZGUtYmxvY2stbW9kZSBtb2RlKQorICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0 ZSB0KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stYXQtcCAoJm9wdGlvbmFs IHBvcykKKyAgIlJldHVybiBub24gbmlsIGlmIHBvaW50IGlzIGluIGEgY29kZSBibG9jay4KK0lm IFBPUyBpcyBuaWwsIHVzZSBwb2ludC4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChw b2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbGFuZ3VhZ2UtYXQgKCZvcHRpb25hbCBwb3MpCisgICJSZXR1cm4gdGhlIGxhbmd1 YWdlIHN5bWJvbCBvZiB0aGUgY29kZSBibG9jayBhdCBQT1MuCitJZiBQT1MgaXMgbmlsLCB1c2Ug cG9pbnQuICBSZXR1cm5zIG5pbCBpZiBQT1MgaXMgbm90IGluc2lkZSBhIGZlbmNlZAorY29kZSBi bG9jay4gIFRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZ3Vlc3QgdHJlZS1zaXR0 ZXIgcGFyc2VyCitpcyBhY3RpdmUsIHNpbmNlIHRoZSBsYW5ndWFnZSBpcyBzdG9yZWQgb24gdGhl IGNvZGUgYmxvY2sgb3ZlcmxheSBieSB0aGUKK2hvc3QgcGFyc2VyJ3MgZm9udGlmaWNhdGlvbi4i CisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2Rl LWJsb2NrLWxhbmd1YWdlKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1h dCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiB0aGUgbWFqb3IgbW9kZSBmb3IgdGhlIGNvZGUg YmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LiAgUmV0dXJucyBuaWwgaWYg UE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQKK2NvZGUgYmxvY2sgb3IgaWYgdGhlIGxhbmd1YWdl IGhhcyBubyByZWNvZ25pemVkIG1vZGUuIgorICAod2hlbiAobWFya2Rvd24tdHMtY29kZS1ibG9j ay1hdC1wIHBvcykKKyAgICAob3IgKGdldC1jaGFyLXByb3BlcnR5IChvciBwb3MgKHBvaW50KSkg J21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSkKKyAgICAgICAgbWFya2Rvd24tdHMtZGVmYXVs dC1jb2RlLWJsb2NrLW1vZGUpKSkKKworOzs7IEltYWdlIGhhbmRsaW5nOgorCisoZGVmdW4gbWFy a2Rvd24tdHMtLWltYWdlLWFsb25lLW9uLWxpbmUtcCAobm9kZSkKKyAgIlJldHVybiBub24tbmls IGlmIGltYWdlIE5PREUgaXMgdGhlIG9ubHkgY29udGVudCBvbiBpdHMgbGluZS4KK1doaXRlc3Bh Y2UsIGJsb2NrIHF1b3RlIG1hcmtlcnMgKGA+JyksIGFuZCBsaXN0IG1hcmtlcnMKK1woYC0nLCBg KicsIGArJywgYDEuJykgYmVmb3JlIHRoZSBpbWFnZSBhcmUgaWdub3JlZC4iCisgIChsZXQgKChu b2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpCisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAoZ290 by1jaGFyIG5vZGUtc3RhcnQpCisgICAgICAobGV0ICgoYm9sIChsaW5lLWJlZ2lubmluZy1wb3Np dGlvbikpCisgICAgICAgICAgICAoZW9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICA7 OyBCZWZvcmUgdGhlIGltYWdlOiBvbmx5IGJsb2NrIHF1b3RlIG1hcmtlcnMsIHdoaXRlc3BhY2Us CisgICAgICAgIDs7IGFuZCBhbiBvcHRpb25hbCBsaXN0IG1hcmtlciBhcmUgYWxsb3dlZC4KKyAg ICAgICAgKGFuZCAoc3RyaW5nLW1hdGNoLXAKKyAgICAgICAgICAgICAgKHJ4IGJvcworICAgICAg ICAgICAgICAgICAgKHplcm8tb3ItbW9yZSAoYW55ICI+IFx0IikpCisgICAgICAgICAgICAgICAg ICAob3B0aW9uYWwgKG9yIChzZXEgKGFueSAiLSorIikgIiAiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2VxIChvbmUtb3ItbW9yZSBkaWdpdCkgKGFueSAiLikiICkgIiAiKSkp CisgICAgICAgICAgICAgICAgICBlb3MpCisgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMgYm9sIG5vZGUtc3RhcnQpKQorICAgICAgICAgICAgIDs7IEFmdGVyIHRo ZSBpbWFnZTogb25seSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFsbG93ZWQuCisgICAgICAgICAgICAg KHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgIChyeCBib3MgKHplcm8tb3ItbW9yZSAoYW55 ICIgXHQiKSkgZW9zKQorICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0 aWVzIG5vZGUtZW5kIGVvbCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWlt YWdlIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiU2hvdyBhbiBpbmxp bmUgaW1hZ2UgYXQgTk9ERS4KK1doZW4gYG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMnIGlzIG5v bi1uaWwsIGRpc3BsYXkgdGhlIGltYWdlLgorSWYgdGhlIGltYWdlIGxpbmsgaXMgdGhlIG9ubHkg Y29udGVudCBvbiBpdHMgbGluZSwgZGlzcGxheSB0aGUKK2ltYWdlIGJlbG93IHRoZSBsaW5rLiAg SWYgdGhlIGltYWdlIGlzIGlubGluZSB3aXRoaW4gYSBwYXJhZ3JhcGgsCitkaXNwbGF5IGl0IHJp Z2h0IGFmdGVyIHRoZSBsaW5rIHRleHQuCitSZW1vdGUgaW1hZ2VzIGFyZSBjb250cm9sbGVkIGJ5 CitgbWFya2Rvd24tdHMtZGlzcGxheS1yZW1vdGUtaW5saW5lLWltYWdlcycuIgorICAobGV0KiAo KG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVu ZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChlb2wgKHNhdmUtZXhjdXJzaW9u IChnb3RvLWNoYXIgbm9kZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlu ZS1lbmQtcG9zaXRpb24pKSkKKyAgICAgICAgIChzZWFyY2gtZW5kIChtaW4gKDErIGVvbCkgKHBv aW50LW1heCkpKSkKKyAgICA7OyBBbHdheXMgY2xlYXIgc3RhbGUgb3ZlcmxheXMgZm9yIHRoaXMg bm9kZSdzIHJhbmdlLgorICAgIChkb2xpc3QgKG92IChvdmVybGF5cy1pbiBub2RlLXN0YXJ0IHNl YXJjaC1lbmQpKQorICAgICAgKHdoZW4gKGFuZCAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRz LWltYWdlKQorICAgICAgICAgICAgICAgICAoPj0gKG92ZXJsYXktc3RhcnQgb3YpIG5vZGUtc3Rh cnQpCisgICAgICAgICAgICAgICAgICg8PSAob3ZlcmxheS1lbmQgb3YpIHNlYXJjaC1lbmQpKQor ICAgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkKKyAgICAod2hlbiAoYW5kIG1hcmtkb3duLXRz LWlubGluZS1pbWFnZXMKKyAgICAgICAgICAgICAgIDs7IERvbid0IGNyZWF0ZSBpbWFnZSBvdmVy bGF5cyBmb3Igbm9kZXMgaW5zaWRlCisgICAgICAgICAgICAgICA7OyBmb2xkZWQgKG91dGxpbmUt aW52aXNpYmxlKSBoZWFkaW5ncywgc2luY2UgdGhlCisgICAgICAgICAgICAgICA7OyBpbWFnZXMg d291bGRuJ3QgYmUgdmlzaWJsZSBhbmQgY291bGQgaW50ZXJmZXJlCisgICAgICAgICAgICAgICA7 OyB3aXRoIHRoZSBmb2xkZWQgZGlzcGxheS4KKyAgICAgICAgICAgICAgIChub3QgKG1hcmtkb3du LXRzLS1vdXRsaW5lLWludmlzaWJsZS1wIG5vZGUtc3RhcnQpKSkKKyAgICAgIChsZXQqICgoZGVz dCAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJcXGBsaW5rX2Rlc3RpbmF0aW9uXFwnIikp CisgICAgICAgICAgICAgKHVybCAoYW5kIGRlc3QgKHRyZWVzaXQtbm9kZS10ZXh0IGRlc3QgdCkp KQorICAgICAgICAgICAgIChyZW1vdGVwIChhbmQgdXJsIChzdHJpbmctbWF0Y2gtcCAiXFxgaHR0 cHM/Oi8vIiB1cmwpKSkKKyAgICAgICAgICAgICAoZGlzcGxheWFibGUKKyAgICAgICAgICAgICAg KHdoZW4gdXJsCisgICAgICAgICAgICAgICAgKGlmIHJlbW90ZXAKKyAgICAgICAgICAgICAgICAg ICAgKHdoZW4gKGVxIG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFnZXMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3dubG9hZCkKKyAgICAgICAgICAgICAgICAg ICAgICAoaWdub3JlLWVycm9ycworICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVpcmUgJ3Vy bC1oYW5kbGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICh1cmwtaW5zZXJ0LWZpbGUtY29udGVudHMgdXJsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKSkKKyAgICAgICAgICAgICAg ICAgIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1lIHVybCkpKQorICAgICAgICAgICAgICAg ICAgICAoYW5kIChub3QgKGZpbGUtcmVtb3RlLXAgZmlsZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKGZpbGUtZXhpc3RzLXAgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW1h Z2Utc3VwcG9ydGVkLWZpbGUtcCBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUp KSkpKQorICAgICAgICAgICAgIChtYXgtdyAoYW5kIGRpc3BsYXlhYmxlCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGlmIChlcSBtYXJrZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1ib2R5LXdpZHRoIG5pbCB0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoKSkp CisgICAgICAgICAgICAgKGltZyAoYW5kIG1heC13CisgICAgICAgICAgICAgICAgICAgICAgIChj cmVhdGUtaW1hZ2UgZGlzcGxheWFibGUgbmlsIHJlbW90ZXAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6bWF4LXdpZHRoIG1heC13CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnNjYWxlIDEpKSkpCisgICAgICAgICh3aGVuIGltZworICAgICAgICAg IChsZXQqICgoYWxvbmUgKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXAgbm9kZSkp CisgICAgICAgICAgICAgICAgIChzdHIgKGlmIGFsb25lCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25jYXQgIlxuIiAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgaW1nKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSBpbWcpKSkKKyAgICAgICAg ICAgICAgICAgKG92IChtYWtlLW92ZXJsYXkgKDEtIG5vZGUtZW5kKSBub2RlLWVuZCBuaWwgdCBu aWwpKSkKKyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UgdCkK KyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnYWZ0ZXItc3RyaW5nIHN0cikKKyAgICAgICAg ICAgIChvdmVybGF5LXB1dCBvdiAnZXZhcG9yYXRlIHQpKSkpKSkpCisKKzs7OyBVUkwvVVJJIGhh bmRsaW5nOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHAgZ290by1hZGRy ZXNzLXVybC1yZWdleHAKKyAgIlJlZ2V4cCBtYXRjaGluZyBiYXJlIFVSTHMgbm90IHdyYXBwZWQg aW4gYW5nbGUgYnJhY2tldHMgb3IgbGluayBzeW50YXguIikKKworKGRlZnZhciBtYXJrZG93bi10 cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwIGdvdG8tYWRkcmVzcy1tYWlsLXJlZ2V4cAorICAiUmVn ZXhwIG1hdGNoaW5nIGJhcmUgZW1haWwgYWRkcmVzc2VzIG5vdCB3cmFwcGVkIGluIGFuZ2xlIGJy YWNrZXRzLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1iYXJlLXVyaSAoc3RhcnQg ZW5kKQorICAiRm9udGlmeSBiYXJlIFVSTCBvciBlbWFpbCBVUkkgYmV0d2VlbiBTVEFSVCBhbmQg RU5ELgorU2tpcCBtYXRjaGVzIGFscmVhZHkgaW5zaWRlIHRyZWUtc2l0dGVyIGxpbmsgb3IgYXV0 b2xpbmsgbm9kZXMuIgorICAoZG9saXN0IChyZSAobGlzdCBtYXJrZG93bi10cy0tYmFyZS11cmwt cmVnZXhwCisgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1y ZWdleHApKQorICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9y d2FyZCByZSBlbmQgdCkKKyAgICAgIChsZXQqICgodXJpLXN0YXJ0IChtYXRjaC1iZWdpbm5pbmcg MCkpCisgICAgICAgICAgICAgKHVyaS1lbmQgKG1hdGNoLWVuZCAwKSkKKyAgICAgICAgICAgICAo dXJpIChtYXRjaC1zdHJpbmcgMCkpCisgICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1h dCB1cmktc3RhcnQgJ21hcmtkb3duLWlubGluZSkpCisgICAgICAgICAgICAgKHBhcmVudCAoYW5k IG5vZGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpKQorICAgICAgICAgICAgIChwYXJlbnQt dHlwZSAoYW5kIHBhcmVudCAodHJlZXNpdC1ub2RlLXR5cGUgcGFyZW50KSkpKQorICAgICAgICAo dW5sZXNzIChvciAobWVtYmVyIHBhcmVudC10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJygiaW5saW5lX2xpbmsiICJmdWxsX3JlZmVyZW5jZV9saW5rIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImNvbGxhcHNlZF9yZWZlcmVuY2VfbGluayIgInNob3J0Y3V0X2xpbmsi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1hZ2UiICJ1cmlfYXV0b2xpbmsiICJl bWFpbF9hdXRvbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rX2Rlc3Rp bmF0aW9uIikpCisgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgKGFuZCBub2RlICh0cmVlc2l0 LW5vZGUtdHlwZSBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJ1cmlfYXV0 b2xpbmsiICJlbWFpbF9hdXRvbGluayIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs aW5rX2Rlc3RpbmF0aW9uIiAiY29kZV9zcGFuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImNvZGVfZmVuY2VfY29udGVudCIgImluZm9fc3RyaW5nIikpCisgICAgICAgICAgICAgICAg ICAgIChnZXQtdGV4dC1wcm9wZXJ0eSB1cmktc3RhcnQgJ2J1dHRvbikpCisgICAgICAgICAgKG1h cmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uCisgICAgICAgICAgIHVyaS1zdGFydCB1cmktZW5k CisgICAgICAgICAgIChpZiAoZXEgdXJpLXN0YXJ0IDApCisgICAgICAgICAgICAgICB1cmkKKyAg ICAgICAgICAgICAoY29uY2F0ICJtYWlsdG86IiB1cmkpKSkpKSkpKQorCis7OzsgdHJlZXNpdCBz ZXR0aW5nczoKKwogKGRlZnZhciBtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5ncwogICAodHJl ZXNpdC1mb250LWxvY2stcnVsZXMKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6 b3ZlcnJpZGUgdAogICAgOmZlYXR1cmUgJ2RlbGltaXRlcgotICAgJygoaW5saW5lX2xpbmsgWyAi WyIgIl0iICIoIiAiKSIgXSBAc2hhZG93KQotICAgICAoaW1hZ2UgWyAiISIgIlsiICJdIiAiKCIg IikiIF0gQHNoYWRvdykpCisgICAnKChpbmxpbmVfbGluayBbICJbIiAiXSIgIigiICIpIiBdIEBt YXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChmdWxsX3JlZmVyZW5jZV9saW5r IFsgIlsiICJdIiBdIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChjb2xs YXBzZWRfcmVmZXJlbmNlX2xpbmsgWyAiWyIgIl0iIF0gQG1hcmtkb3duLXRzLS1mb250aWZ5LWRl bGltaXRlcikKKyAgICAgKHNob3J0Y3V0X2xpbmsgWyAiWyIgIl0iIF0gQG1hcmtkb3duLXRzLS1m b250aWZ5LWRlbGltaXRlcikKKyAgICAgKGltYWdlIFsgIiEiICJbIiAiXSIgIigiICIpIiBdIEBt YXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3du CiAgICA6ZmVhdHVyZSAnaGVhZGluZwotICAgJygoYXR4X2hlYWRpbmcgKGF0eF9oMV9tYXJrZXIp KSBAbWFya2Rvd24tdHMtaGVhZGluZy0xCi0gICAgIChhdHhfaGVhZGluZyAoYXR4X2gyX21hcmtl cikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTIKLSAgICAgKGF0eF9oZWFkaW5nIChhdHhfaDNfbWFy a2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctMwotICAgICAoYXR4X2hlYWRpbmcgKGF0eF9oNF9t YXJrZXIpKSBAbWFya2Rvd24tdHMtaGVhZGluZy00Ci0gICAgIChhdHhfaGVhZGluZyAoYXR4X2g1 X21hcmtlcikpIEBtYXJrZG93bi10cy1oZWFkaW5nLTUKLSAgICAgKGF0eF9oZWFkaW5nIChhdHhf aDZfbWFya2VyKSkgQG1hcmtkb3duLXRzLWhlYWRpbmctNgotICAgICAoc2V0ZXh0X2hlYWRpbmcp IEBtYXJrZG93bi10cy1zZXRleHQtaGVhZGluZykKKyAgICcoKChhdHhfaGVhZGluZykgICAgQG1h cmtkb3duLXRzLS1mb250aWZ5LWhlYWRpbmcpCisgICAgICgoc2V0ZXh0X2hlYWRpbmcpIEBtYXJr ZG93bi10cy0tZm9udGlmeS1oZWFkaW5nKSkKIAogICAgOmxhbmd1YWdlICdtYXJrZG93bgogICAg OmZlYXR1cmUgJ2hlYWRpbmcKQEAgLTE5NCwxNiArMTI0MywzNCBAQCBtYXJrZG93bi10cy0tdHJl ZXNpdC1zZXR0aW5ncwogICAgICAoYXR4X2gzX21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5 LWRlbGltaXRlcgogICAgICAoYXR4X2g0X21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRl bGltaXRlcgogICAgICAoYXR4X2g1X21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGlt aXRlcgotICAgICAoYXR4X2g2X21hcmtlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRl cikKKyAgICAgKGF0eF9oNl9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIK KyAgICAgKHNldGV4dF9oMV91bmRlcmxpbmUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0 ZXIKKyAgICAgKHNldGV4dF9oMl91bmRlcmxpbmUpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxp bWl0ZXIpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgK LSAgICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3duLXRzLWRlbGltaXRlcikKLSAgICAgKChp bmRlbnRlZF9jb2RlX2Jsb2NrKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgJygoKHRoZW1h dGljX2JyZWFrKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspCisgICAgICgo aHRtbF9ibG9jaykgQG1hcmtkb3duLXRzLWh0bWwtYmxvY2spCisgICAgICgoaW5kZW50ZWRfY29k ZV9ibG9jaykgQG1hcmtkb3duLXRzLWluZGVudGVkLWNvZGUtYmxvY2spCiAgICAgIChsaXN0X2l0 ZW0gKGxpc3RfbWFya2VyX3N0YXIpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKICAgICAgKGxp c3RfaXRlbSAobGlzdF9tYXJrZXJfcGx1cykgQG1hcmtkb3duLXRzLWxpc3QtbWFya2VyKQogICAg ICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9taW51cykgQG1hcmtkb3duLXRzLWxpc3QtbWFya2Vy KQotICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJrZG93bi10cy1saXN0LW1h cmtlcikpCisgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2VyX2RvdCkgQG1hcmtkb3duLXRzLWxp c3QtbWFya2VyKQorICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9wYXJlbnRoZXNpcykgQG1h cmtkb3duLXRzLWxpc3QtbWFya2VyKQorICAgICAobGlzdF9pdGVtICh0YXNrX2xpc3RfbWFya2Vy X3VuY2hlY2tlZCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94KQorICAgICAobGlzdF9p dGVtICh0YXNrX2xpc3RfbWFya2VyX2NoZWNrZWQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jaGVj a2JveCkKKyAgICAgKHBpcGVfdGFibGVfaGVhZGVyICJ8IiBAbWFya2Rvd24tdHMtdGFibGUtaGVh ZGVyKQorICAgICAocGlwZV90YWJsZV9oZWFkZXIgKHBpcGVfdGFibGVfY2VsbCkgQG1hcmtkb3du LXRzLXRhYmxlLWhlYWRlcikKKyAgICAgKHBpcGVfdGFibGVfcm93ICJ8IiBAbWFya2Rvd24tdHMt dGFibGUtZGVsaW1pdGVyLWNlbGwpCisgICAgIChwaXBlX3RhYmxlX3JvdyAocGlwZV90YWJsZV9j ZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtY2VsbCkKKyAgICAgKHBpcGVfdGFibGVfZGVsaW1pdGVy X3JvdyAifCIgQG1hcmtkb3duLXRzLXRhYmxlLWRlbGltaXRlci1jZWxsKQorICAgICAobGlua19y ZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfbGFiZWwpIEBtYXJrZG93bi10cy0tZm9u dGlmeS1saW5rLXJlZi1sYWJlbCkKKyAgICAgKGxpbmtfcmVmZXJlbmNlX2RlZmluaXRpb24KKyAg ICAgIChsaW5rX2Rlc3RpbmF0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtZGVz dGluYXRpb24pCisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAobGlua190 aXRsZSkgQG1hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24pCisgICAgIChwaXBlX3RhYmxlX2Rl bGltaXRlcl9yb3cgKHBpcGVfdGFibGVfZGVsaW1pdGVyX2NlbGwpIEBtYXJrZG93bi10cy10YWJs ZS1kZWxpbWl0ZXItY2VsbCkpCiAKICAgIDpsYW5ndWFnZSAnbWFya2Rvd24KICAgIDpmZWF0dXJl ICdwYXJhZ3JhcGgKQEAgLTIxNyw4NCArMTI4NCw5OTIgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQt c2V0dGluZ3MKICAgICAgIChibG9ja19xdW90ZV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlm eS1kZWxpbWl0ZXIKICAgICAgIChwYXJhZ3JhcGggKGlubGluZSAoYmxvY2tfY29udGludWF0aW9u KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKSkpKQogCisgICA6bGFuZ3VhZ2UgJ21h cmtkb3duCisgICA6ZmVhdHVyZSAncGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAg JygoZmVuY2VkX2NvZGVfYmxvY2sKKyAgICAgIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpKQorICAg ICAgKGNvZGVfZmVuY2VfY29udGVudCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2Rl LWJsb2NrKSkKKworICAgOmxhbmd1YWdlICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ3BhcmFncmFw aAorICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGZlbmNlZF9jb2RlX2Jsb2NrIChjb2RlX2Zl bmNlX2NvbnRlbnQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrKSkKKwogICAgOmxh bmd1YWdlICdtYXJrZG93bi1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICA6ZmVhdHVy ZSAncGFyYWdyYXBoLWlubGluZQotICAgJygoKGltYWdlX2Rlc2NyaXB0aW9uKSBAbGluaykKLSAg ICAgKChsaW5rX2Rlc3RpbmF0aW9uKSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoKGNv ZGVfc3BhbikgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICcoKChsaW5rX2Rlc3RpbmF0aW9u KSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChjb2RlX3Nw YW4pIEBtYXJrZG93bi10cy1jb2RlLXNwYW4pCiAgICAgICgoY29kZV9zcGFuX2RlbGltaXRlcikg QG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKLSAgICAgKChlbXBoYXNpcykgQGl0YWxp YykKLSAgICAgKChzdHJvbmdfZW1waGFzaXMpIEBib2xkKQotICAgICAoaW5saW5lX2xpbmsgKGxp bmtfdGV4dCkgQGxpbmspCi0gICAgIChpbmxpbmVfbGluayAobGlua19kZXN0aW5hdGlvbikgQGZv bnQtbG9jay1zdHJpbmctZmFjZSkKLSAgICAgKHNob3J0Y3V0X2xpbmsgKGxpbmtfdGV4dCkgQGxp bmspKQorICAgICAoKGVtcGhhc2lzKSBAbWFya2Rvd24tdHMtZW1waGFzaXMpCisgICAgICgoc3Ry b25nX2VtcGhhc2lzKSBAbWFya2Rvd24tdHMtYm9sZCkKKyAgICAgKChzdHJpa2V0aHJvdWdoKSBA bWFya2Rvd24tdHMtc3RyaWtldGhyb3VnaCkKKyAgICAgKGlubGluZV9saW5rIChsaW5rX3RleHQp IEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChmdWxsX3JlZmVyZW5jZV9s aW5rIChsaW5rX3RleHQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChm dWxsX3JlZmVyZW5jZV9saW5rIChsaW5rX2xhYmVsKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGlu ay1ub2RlKQorICAgICAoY29sbGFwc2VkX3JlZmVyZW5jZV9saW5rIChsaW5rX3RleHQpIEBtYXJr ZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChzaG9ydGN1dF9saW5rIChsaW5rX3Rl eHQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChpbWFnZSAoaW1hZ2Vf ZGVzY3JpcHRpb24pIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgICgodXJp X2F1dG9saW5rKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYXV0b2xpbmspCisgICAgICgoZW1haWxf YXV0b2xpbmspIEBtYXJrZG93bi10cy0tZm9udGlmeS1hdXRvbGluaykKKyAgICAgKGlubGluZV9s aW5rIChsaW5rX3RpdGxlKSBAbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChi YWNrc2xhc2hfZXNjYXBlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3NsYXNoLWVzY2FwZSkK KyAgICAgKChlbnRpdHlfcmVmZXJlbmNlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZW50aXR5KQor ICAgICAoKG51bWVyaWNfY2hhcmFjdGVyX3JlZmVyZW5jZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5 LWVudGl0eSkKKyAgICAgKChodG1sX3RhZykgQG1hcmtkb3duLXRzLWh0bWwtdGFnKQorICAgICAo KGhhcmRfbGluZV9icmVhaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWhhcmQtbGluZS1icmVhaykK KyAgICAgKChsYXRleF9ibG9jaykgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxhdGV4LWJsb2NrKSkK IAogICAgOmxhbmd1YWdlICdtYXJrZG93bi1pbmxpbmUKICAgIDpmZWF0dXJlICdwYXJhZ3JhcGgt aW5saW5lCiAgICA6b3ZlcnJpZGUgJ2FwcGVuZAogICAgJygoZW1waGFzaXNfZGVsaW1pdGVyKSBA bWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQotICAgKSkKIAotOzs7IEltZW51CisgICA6 bGFuZ3VhZ2UgJ21hcmtkb3duLWlubGluZQorICAgOmZlYXR1cmUgJ2ltYWdlLXByZXZpZXcKKyAg IDpvdmVycmlkZSAnYXBwZW5kCisgICAnKChpbWFnZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWlt YWdlKSkpCisKKzs7OyBJbWVudToKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5vZGUtcCAo bm9kZSkKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAgKG5vZGUpCiAg ICJDaGVjayBpZiBOT0RFIGlzIGEgdmFsaWQgZW50cnkgdG8gaW1lbnUuIgotICAoZXF1YWwgKHRy ZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQotICAgICAgICAgImF0 eF9oZWFkaW5nIikpCisgIChhbmQgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiaW5s aW5lIikKKyAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlICh0cmVlc2l0LW5vZGUtcGFy ZW50IG5vZGUpKQorICAgICAgICAgICAgICAiYXR4X2hlYWRpbmciKSkpCiAKLShkZWZ1biBtYXJr ZG93bi10cy1pbWVudS1uYW1lLWZ1bmN0aW9uIChub2RlKQorKGRlZnVuIG1hcmtkb3duLXRzLS1p bWVudS1oZWFkaW5nLW5hbWUtZnVuY3Rpb24gKG5vZGUpCiAgICJSZXR1cm4gYW4gaW1lbnUgZW50 cnkgaWYgTk9ERSBpcyBhIHZhbGlkIGhlYWRlci4iCiAgIChsZXQgKChuYW1lICh0cmVlc2l0LW5v ZGUtdGV4dCBub2RlKSkpCi0gICAgKGlmIChtYXJrZG93bi10cy1pbWVudS1ub2RlLXAgbm9kZSkK LQkodGhyZWFkLWZpcnN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpICh0cmVlc2l0LW5vZGUt dGV4dCkpCisgICAgKGlmIChtYXJrZG93bi10cy0taW1lbnUtaGVhZGluZy1ub2RlLXAgbm9kZSkK KyAgICAgICAgKGNhciAoc3BsaXQtc3RyaW5nICh0cmVlc2l0LW5vZGUtdGV4dAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICJcbiIgdCAiICIpKQogICAgICAgbmFtZSkpKQogCi0oZGVmdW4gbWFy a2Rvd24tdHMtb3V0bGluZS1wcmVkaWNhdGUgKG5vZGUpCi0gICJNYXRjaCBhIGhpZXJhcmNoaWNh bCBzZWN0aW9uIHRoYXQgaGFzIGEgaGVhZGluZy4iCisoZGVmdW4gbWFya2Rvd24tdHMtLWltZW51 LWNvZGUtYmxvY2stbm9kZS1wIChub2RlKQorICAiQ2hlY2sgaWYgTk9ERSBpcyBhbiBpbmZvX3N0 cmluZyB3aXRoIGRlc2NyaXB0aXZlIHRleHQgYWZ0ZXIgdGhlIGxhbmd1YWdlLiIKKyAgKGFuZCAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJpbmZvX3N0cmluZyIpCisgICAgICAgKHdo ZW4tbGV0KiAoKGxhbmctbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJsYW5ndWFn ZSIpKQorICAgICAgICAgICAgICAgICAgICgoPCAodHJlZXNpdC1ub2RlLWVuZCBsYW5nLW5vZGUp CisgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkpCisgICAg ICAgICAobm90IChzdHJpbmctYmxhbmstcAorICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJp bmctbm8tcHJvcGVydGllcworICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIGxhbmct bm9kZSkKKyAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbmFtZS1mdW5jdGlvbiAobm9kZSkK KyAgIlJldHVybiBhbiBpbWVudSBlbnRyeSBuYW1lIGZvciBhIGNvZGUgYmxvY2sgaW5mb19zdHJp bmcgTk9ERS4KK1VzZXMgdGhlIGRlc2NyaXB0aXZlIHRleHQgYWZ0ZXIgdGhlIGxhbmd1YWdlIG5h bWUuIgorICAod2hlbi1sZXQqICgobGFuZy1ub2RlICh0cmVlc2l0LXNlYXJjaC1zdWJ0cmVlIG5v ZGUgImxhbmd1YWdlIikpCisgICAgICAgICAgICAgIChkZXNjIChzdHJpbmctdHJpbQorICAgICAg ICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAgICAg ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIGxhbmctbm9kZSkKKyAgICAgICAgICAgICAg ICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKSkKKyAgICAoZm9ybWF0ICIlczogJXMi ICh0cmVlc2l0LW5vZGUtdGV4dCBsYW5nLW5vZGUpIGRlc2MpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1vdXRsaW5lLXByZWRpY2F0ZSAobm9kZSkKKyAgIk1hdGNoIE5PREUgaWYgaXQgaXMgYSBo aWVyYXJjaGljYWwgc2VjdGlvbiB0aGF0IGhhcyBhIGhlYWRpbmcuIgogICAoYW5kIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgInNlY3Rpb24iKQogICAgICAgICh3aGVuLWxldCogKChj aGlsZCAodHJlZXNpdC1ub2RlLWNoaWxkIG5vZGUgMCkpKQogICAgICAgICAgKGVxdWFsICh0cmVl c2l0LW5vZGUtdHlwZSBjaGlsZCkgImF0eF9oZWFkaW5nIikpKSkKIAotOzs7IENvZGUgYmxvY2tz Ci0KLShkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzIG5pbAot ICAiQSBsaXN0IG9mIGxhbmd1YWdlcyB0aGF0IGhhdmUgYmVlbiBzZXR1cCBpbiB0aGlzIGJ1ZmZl ci4KLQotV2hlbiBhIGNvZGUgYmxvY2sgb2YgYSBsYW5ndWFnZSBhcHBlYXJzLCBgbWFya2Rvd24t dHMtbW9kZScgbG9hZHMKLWxhbmd1YWdlIHNldHVwcyBsaWtlIGZvbnQtbG9jayBhbmQgaW5kZW50 YXRpb24gZm9yIHRoYXQgbGFuZ3VhZ2UsIGFuZAotYWRkcyB0aGF0IGxhbmd1YWdlIHRvIHRoaXMg bGlzdC4iKQorOzs7IEhlYWRpbmcgbWFuaXB1bGF0aW9uOgorCisoZGVmY29uc3QgbWFya2Rvd24t dHMtLXBhcnNlci1oZWFkaW5nLW1heC1sZXZlbCA2CisgICJNYXhpbXVtIEFUWCBoZWFkaW5nIGxl dmVsIGluIE1hcmtkb3duIChoMS1oNikuCitEZWZpbmVkIGJ5IHRoZSBDb21tb25NYXJrIHNwZWMg YW5kIHRoZSB0cmVlLXNpdHRlciBncmFtbWFyLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVh ZGluZy1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSBhdHhfaGVhZGluZyBub2RlIGF0IG9yIGJl Zm9yZSBwb2ludCwgb3IgbmlsLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1h dCAocG9pbnQpICdtYXJrZG93bikpKQorICAgIChpZiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBl IG5vZGUpICJhdHhfaGVhZGluZyIpCisgICAgICAgIG5vZGUKKyAgICAgICh0cmVlc2l0LXBhcmVu dC11bnRpbAorICAgICAgIG5vZGUgKGxhbWJkYSAobikgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlw ZSBuKSAiYXR4X2hlYWRpbmciKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGluZy1s ZXZlbCAoaGVhZGluZykKKyAgIlJldHVybiB0aGUgbGV2ZWwgb2YgSEVBRElORyBub2RlICgxIHRv IGBtYXJrZG93bi10cy0tcGFyc2VyLWhlYWRpbmctbWF4LWxldmVsJykuIgorICAobGV0ICgobWFy a2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaGVhZGluZyAwKSkpCisgICAgKGxlbmd0aCAodHJlZXNp dC1ub2RlLXRleHQgbWFya2VyIHQpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1h dC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4i CisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24p KSkKKyAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1 YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy1wcm9tb3RlICgpCisgICJQcm9tb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBw b2ludC4KK0ZvciBoZWFkaW5ncywgZGVjcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4K K0ZvciBsaXN0IGl0ZW1zLCBkZWNyZWFzZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNp ZW50LW1hcmstbW9kZScgb24gYW5kIG1hcmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3Mg aW4gdGhlIHJlZ2lvbi4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5z aWVudC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9y LWRlbW90ZS1yZWdpb24gLTEpKQorICAgKChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50 KQorICAgIChtYXJrZG93bi10cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQg KG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLWRlbW90ZSAoKQorICAiRGVtb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2lu dC4KK0ZvciBoZWFkaW5ncywgaW5jcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0Zv ciBsaXN0IGl0ZW1zLCBpbmNyZWFzZSBuZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50 LW1hcmstbW9kZScgb24gYW5kIG1hcmsgYWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0 aGUgcmVnaW9uLiIKKyAgKGludGVyYWN0aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50 LW1hcmstbW9kZSBtYXJrLWFjdGl2ZSkKKyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVt b3RlLXJlZ2lvbiAxKSkKKyAgICgobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAg ICAobWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rv d24tdHMtLXByb21vdGUtb3ItZGVtb3RlIDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJv bW90ZS1vci1kZW1vdGUgKGRlbHRhKQorICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5 IERFTFRBIGxldmVscy4KK05lZ2F0aXZlIERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRp dmUgZGVtb3RlcyAobW9yZSAjKS4KK0lmIHRoZSBoZWFkaW5nIGhhcyBhbiBvcHRpb25hbCB0cmFp bGluZyBjbG9zaW5nLWAjJyBzZXF1ZW5jZSwgdGhhdAorc2VxdWVuY2UgaXMgcmVzaXplZCB0byBt YXRjaCB0aGUgbmV3IGxldmVsLiIKKyAgKHdoZW4tbGV0KiAoKGhlYWRpbmcgKG1hcmtkb3duLXRz LS1oZWFkaW5nLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKG1hcmtlciAodHJlZXNpdC1ub2Rl LWNoaWxkIGhlYWRpbmcgMCkpCisgICAgICAgICAgICAgIChsZXZlbCAobGVuZ3RoICh0cmVlc2l0 LW5vZGUtdGV4dCBtYXJrZXIgdCkpKQorICAgICAgICAgICAgICAobmV3LWxldmVsICgrIGxldmVs IGRlbHRhKSkpCisgICAgKHdoZW4gKGFuZCAoPj0gbmV3LWxldmVsIDEpCisgICAgICAgICAgICAg ICAoPD0gbmV3LWxldmVsIG1hcmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQor ICAgICAgKGxldCogKChvcGVuZXItYmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAg ICAgICAgICAgICAob3BlbmVyLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAgICAg ICAgICAgIChsaW5lLWVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIG9wZW5lci1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUt ZW5kLXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgOzsgRGV0ZWN0IGEgQ29tbW9uTWFyayBjbG9z aW5nLWAjJyBzZXF1ZW5jZTogb3B0aW9uYWwKKyAgICAgICAgICAgICA7OyB0cmFpbGluZyB3aGl0 ZXNwYWNlLCBhIHJ1biBvZiBgIycsIGFuZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICA7OyBz cGFjZS90YWIgYmV0d2VlbiBpdCBhbmQgdGhlIGhlYWRpbmcgdGV4dC4KKyAgICAgICAgICAgICAo Y2xvc2VyIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IGxpbmUtZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAi IFx0IiBvcGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZW5kIChwb2lu dCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIjIiBv cGVuZXItZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKHBvaW50KSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kICg8IGJlZyBlbmQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IGJlZyBvcGVuZXItZW5kKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAoY2hhci1iZWZvcmUgYmVn KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD9ccyA/XHQp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgYmVnIGVuZCkpKSkpKSkKKyAg ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgOzsgUmVzaXplIHRoZSBjbG9zZXIgZmly c3Qgc28gaXQgZG9lc24ndCBzaGlmdCB0aGUgb3BlbmVyLgorICAgICAgICAgICh3aGVuIGNsb3Nl cgorICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGNhciBjbG9zZXIpIChjZHIgY2xvc2VyKSkK KyAgICAgICAgICAgIChnb3RvLWNoYXIgKGNhciBjbG9zZXIpKQorICAgICAgICAgICAgKGluc2Vy dCAobWFrZS1zdHJpbmcgbmV3LWxldmVsID8jKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24g b3BlbmVyLWJlZyBvcGVuZXItZW5kKQorICAgICAgICAgIChnb3RvLWNoYXIgb3BlbmVyLWJlZykK KyAgICAgICAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyBuZXctbGV2ZWwgPyMpKSkpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNo YW5nZSBhbGwgaGVhZGluZ3MgaW4gdGhlIGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgor TmVnYXRpdmUgREVMVEEgcHJvbW90ZXMgKGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3Jl ICMpLiIKKyAgKGxldCAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJl Z2lvbi1lbmQpKSkKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQor ICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMt LWhlYWRpbmctYXQtcG9pbnQpCisgICAgICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRl bW90ZSBkZWx0YSkpCisgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAgKCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBv ciBsaXN0IGl0ZW0gdXAgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2 ZSkKKyAgKGlmIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtk b3duLXRzLS1saXN0LW1vdmUgdCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1v ci1kb3duIHQpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmln cyAobW9kZSkKLSAgIkhhcnZlc3QgdHJlZS1zaXR0ZXIgY29uZmlncyBmcm9tIE1PREUuCi1SZXR1 cm4gYSBwbGlzdCB3aXRoIHRoZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWU6CisoZGVmdW4gbWFy a2Rvd24tdHMtbW92ZS1zdWJ0cmVlLWRvd24gKCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlv biBvciBsaXN0IGl0ZW0gZG93biBwYXN0IHRoZSBuZXh0IHNpYmxpbmcuIgorICAoaW50ZXJhY3Rp dmUpCisgIChpZiAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAgIChtYXJr ZG93bi10cy0tbGlzdC1tb3ZlIG5pbCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11 cC1vci1kb3duIG5pbCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLXNlY3Rpb24tZm9sZGVkLXAg KHNlY3Rpb24pCisgICJSZXR1cm4gbm9uLW5pbCBpZiBTRUNUSU9OJ3MgaGVhZGluZyBpcyBmb2xk ZWQuCitDaGVja3Mgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBoZWFkaW5nIGxpbmUgaGFzIGFuIG91 dGxpbmUKK2ludmlzaWJsZSBvdmVybGF5LiIKKyAgKGxldCAoKGhlYWRpbmcgKHRyZWVzaXQtbm9k ZS1jaGlsZCBzZWN0aW9uIDApKSkKKyAgICAod2hlbiAoYW5kIGhlYWRpbmcKKyAgICAgICAgICAg ICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgaGVhZGluZykgImF0eF9oZWFkaW5nIikpCisg ICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0 YXJ0IGhlYWRpbmcpKQorICAgICAgICAob3V0bGluZS1pbnZpc2libGUtcCAocG9zLWVvbCkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duICh1cCkKKyAg Ik1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBzdWJ0cmVlLgorSWYgVVAgaXMgbm9uLW5pbCwgbW92 ZSBwYXN0IHRoZSBwcmV2aW91cyBzaWJsaW5nOyBvdGhlcndpc2UgbW92ZSBkb3duLgorUHJlc2Vy dmVzIHRoZSBmb2xkaW5nIHN0YXRlIG9mIGJvdGggc2VjdGlvbnMuIgorICAod2hlbi1sZXQqICgo c2VjdGlvbiAobWFya2Rvd24tdHMtLXNlY3Rpb24tYXQtcG9pbnQpKQorICAgICAgICAgICAgICAo c2libGluZyAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUt cHJldi1zaWJsaW5nIHNlY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt bm9kZS1uZXh0LXNpYmxpbmcgc2VjdGlvbikpKSkKKyAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQt bm9kZS10eXBlIHNpYmxpbmcpICJzZWN0aW9uIikKKyAgICAgIChsZXQqICgoZmlyc3QgKGlmIHVw IHNpYmxpbmcgc2VjdGlvbikpCisgICAgICAgICAgICAgKHNlY29uZCAoaWYgdXAgc2VjdGlvbiBz aWJsaW5nKSkKKyAgICAgICAgICAgICAoZmlyc3QtZm9sZGVkIChtYXJrZG93bi10cy0tc2VjdGlv bi1mb2xkZWQtcCBmaXJzdCkpCisgICAgICAgICAgICAgKHNlY29uZC1mb2xkZWQgKG1hcmtkb3du LXRzLS1zZWN0aW9uLWZvbGRlZC1wIHNlY29uZCkpCisgICAgICAgICAgICAgKGZpcnN0LXN0YXJ0 ICh0cmVlc2l0LW5vZGUtc3RhcnQgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtc3RhcnQg KHRyZWVzaXQtbm9kZS1zdGFydCBzZWNvbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtZW5kICh0 cmVlc2l0LW5vZGUtZW5kIHNlY29uZCkpCisgICAgICAgICAgICAgOzsgRXh0cmFjdCBzZXBhcmF0 b3IgYmV0d2VlbiBpdGVtcyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICAgICAgICAgICAo Zmlyc3QtcmF3IChidWZmZXItc3Vic3RyaW5nIGZpcnN0LXN0YXJ0IHNlY29uZC1zdGFydCkpCisg ICAgICAgICAgICAgKGZpcnN0LXRleHQgKHN0cmluZy10cmltLXJpZ2h0IGZpcnN0LXJhdykpCisg ICAgICAgICAgICAgKHNlcGFyYXRvciAoc3Vic3RyaW5nIGZpcnN0LXJhdyAobGVuZ3RoIGZpcnN0 LXRleHQpKSkKKyAgICAgICAgICAgICAoc2Vjb25kLXJhdyAoYnVmZmVyLXN1YnN0cmluZyBzZWNv bmQtc3RhcnQgc2Vjb25kLWVuZCkpCisgICAgICAgICAgICAgKHNlY29uZC10ZXh0IChzdHJpbmct dHJpbS1yaWdodCBzZWNvbmQtcmF3KSkKKyAgICAgICAgICAgICAodHJhaWxpbmcgKHN1YnN0cmlu ZyBzZWNvbmQtcmF3IChsZW5ndGggc2Vjb25kLXRleHQpKSkKKyAgICAgICAgICAgICAoY29sIChj dXJyZW50LWNvbHVtbikpCisgICAgICAgICAgICAgKGxpbmUtb2Zmc2V0ICgtIChsaW5lLW51bWJl ci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtbnVt YmVyLWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IHNlY3Rpb24pKSkpKQorICAgICAgICAoZGVs ZXRlLXJlZ2lvbiBmaXJzdC1zdGFydCBzZWNvbmQtZW5kKQorICAgICAgICAoZ290by1jaGFyIGZp cnN0LXN0YXJ0KQorICAgICAgICAoaW5zZXJ0IHNlY29uZC10ZXh0IHNlcGFyYXRvciBmaXJzdC10 ZXh0IHRyYWlsaW5nKQorICAgICAgICA7OyBSZXN0b3JlIGZvbGRpbmcgc3RhdGUKKyAgICAgICAg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBmaXJzdC1zdGFydCkKKyAgICAg ICAgICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisgICAgICAgICAgICAoaWYgc2Vjb25k LWZvbGRlZAorICAgICAgICAgICAgICAgIChvdXRsaW5lLWhpZGUtc3VidHJlZSkKKyAgICAgICAg ICAgICAgKG91dGxpbmUtc2hvdy1zdWJ0cmVlKSkpCisgICAgICAgICAgKG91dGxpbmUtbmV4dC1o ZWFkaW5nKQorICAgICAgICAgICh3aGVuIChvdXRsaW5lLW9uLWhlYWRpbmctcCkKKyAgICAgICAg ICAgIChpZiBmaXJzdC1mb2xkZWQKKyAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXN1YnRy ZWUpCisgICAgICAgICAgICAgIChvdXRsaW5lLXNob3ctc3VidHJlZSkpKSkKKyAgICAgICAgKGdv dG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Qtc3RhcnQKKyAgICAg ICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5ndGggc2Vjb25kLXRleHQpCisgICAg ICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRvcikpKSkKKyAgICAgICAgKGZvcndh cmQtbGluZSBsaW5lLW9mZnNldCkKKyAgICAgICAgKG1vdmUtdG8tY29sdW1uIGNvbCkpKSkpCisK Kzs7OyBMaXN0IG1hbmlwdWxhdGlvbjoKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVj a2JveCAoKQorICAiVG9nZ2xlIHRoZSB0YXNrIGxpc3QgY2hlY2tib3ggb24gdGhlIGN1cnJlbnQg bGluZS4KK1N3aXRjaGVzIGJldHdlZW4gYFsgXScgYW5kIGBbeF0nLiIKKyAgKGludGVyYWN0aXZl KQorICAod2hlbi1sZXQqICgocG9zIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlv bikgKHBvaW50KSkpCisgICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdt YXJrZG93bikpCisgICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAg ICAgICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQorICAg ICh3aGVuLWxldCogKChtYXJrZXIgKHNlcS1maW5kCisgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVl c2l0LW5vZGUtdHlwZSBjaGlsZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JygidGFza19saXN0X21hcmtlcl9jaGVja2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0YXNrX2xpc3RfbWFya2VyX3VuY2hlY2tlZCIpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIGl0ZW0pKSkpCisgICAgICAobGV0ICgo YmVnICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgIChlbmQgKHRyZWVz aXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgbWFya2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXNrX2xp c3RfbWFya2VyX2NoZWNrZWQiKSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg IChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCisgICAg ICAgICAgKGluc2VydCAoaWYgY2hlY2tlZCAiWyBdIiAiW3hdIikpKSkpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgaW5uZXJtb3N0 IGxpc3RfaXRlbSBub2RlIGNvbnRhaW5pbmcgcG9pbnQsIG9yIG5pbC4KK1VzZXMgdGhlIHBvc2l0 aW9uIGFmdGVyIGBiYWNrLXRvLWluZGVudGF0aW9uJyBzbyB0aGF0IHBvaW50IGluCithIGxpbmUn cyBsZWFkaW5nIHdoaXRlc3BhY2UgcmVzb2x2ZXMgdG8gdGhlIGl0ZW0gb24gdGhhdCBsaW5lLAor bm90IHRvIGEgcHJlY2VkaW5nIGl0ZW0gd2hvc2Ugbm9kZSBzcGFucyB0aGUgd2hpdGVzcGFjZS4K K0luc2lkZSBibG9jayBxdW90ZXMsIGFsc28gdHJ5IGZyb20gdGhlIGNvbnRlbnQgcG9zaXRpb24g cGFzdAordGhlIGA+JyBtYXJrZXJzLiIKKyAgKHdoZW4tbGV0KiAoKHBvcyAoc2F2ZS1leGN1cnNp b24gKGJhY2stdG8taW5kZW50YXRpb24pIChwb2ludCkpKQorICAgICAgICAgICAgICAobm9kZSAo dHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAoYm9sIChsaW5l LWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0 aW9uKSkpCisgICAgKG9yIChsZXQgKChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAg ICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQorICAgICAg ICAgIDs7IFZlcmlmeSB0aGUgY3VycmVudCBsaW5lIGlzIHdpdGhpbiB0aGUgaXRlbSdzIHJhbmdl LgorICAgICAgICAgIDs7IGB0cmVlc2l0LW5vZGUtYXQnIGNhbiByZXR1cm4gYSBub2RlIGluc2lk ZSBhIGxpc3RfaXRlbQorICAgICAgICAgIDs7IGV2ZW4gd2hlbiBwb2ludCBpcyBvbiBhIHByZWNl ZGluZyBsaW5lLgorICAgICAgICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAgICAgICAg ICAgKDw9ICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAgICAgICAgICAgICAg ICAgKD49ICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pIGJvbCkpCisgICAgICAgICAgICBpdGVtKSkK KyAgICAgICAgOzsgV2hlbiBiYWNrLXRvLWluZGVudGF0aW9uIGxhbmRzIG9uIGJsb2NrIHF1b3Rl IG1hcmtlcnMsCisgICAgICAgIDs7IHNraXAgcGFzdCB0aGVtIGFuZCB0cnkgZnJvbSB0aGUgY29u dGVudCBwb3NpdGlvbi4KKyAgICAgICAgKGxldCAoKGNvbnRlbnQtcG9zIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIj4gXHQiKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCisgICAgICAgICAgKHdoZW4gKD4g Y29udGVudC1wb3MgcG9zKQorICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGNub2RlICh0cmVlc2l0 LW5vZGUtYXQgY29udGVudC1wb3MgJ21hcmtkb3duKSkpCisgICAgICAgICAgICAgIChsZXQgKChp dGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY25v ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIp KSkpKQorICAgICAgICAgICAgICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDw9ICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKD49ICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pIGJvbCkpCisgICAgICAg ICAgICAgICAgICBpdGVtKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW1hcmtl ci13aWR0aCAoaXRlbSkKKyAgIlJldHVybiB0aGUgd2lkdGggb2YgSVRFTSdzIGxpc3QgbWFya2Vy IGluY2x1ZGluZyB0cmFpbGluZyBzcGFjZS4iCisgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9k ZS1jaGlsZCBpdGVtIDApKSkKKyAgICAoLSAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpICh0cmVl c2l0LW5vZGUtc3RhcnQgbWFya2VyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3QtaXRl bS1yZWdpb24gKGl0ZW0pCisgICJSZXR1cm4gdGhlIChCRUcgLiBFTkQpIHJlZ2lvbiBmb3IgSVRF TSwgY2xhbXBlZCB0byBmdWxsIGxpbmVzLgorQkVHIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGl0ZW0uCitFTkQgaXMgY2xhbXBlZCBzbyBpdCBkb2Vz IG5vdCBleHRlbmQgaW50byB0aGUgbmV4dCBsaW5lJ3MKK2luZGVudGF0aW9uLCB3aGljaCB0cmVl LXNpdHRlciBtYXkgaW5jbHVkZSBpbiB0aGUgbm9kZS4iCisgIChsZXQgKChiZWcgKHNhdmUtZXhj dXJzaW9uCisgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRl bSkpCisgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAgICAg KGVuZCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQt bm9kZS1lbmQgaXRlbSkpCisgICAgICAgICAgICAgICAoaWYgKGJvbHApIChwb2ludCkgKGxpbmUt YmVnaW5uaW5nLXBvc2l0aW9uKSkpKSkKKyAgICAoY29ucyBiZWcgZW5kKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tbGlzdC1vcmRlcmVkLWl0ZW0tcCAoaXRlbSkKKyAgIlJldHVybiBub24tbmls IGlmIElURU0gaXMgYW4gb3JkZXJlZCAobnVtYmVyZWQpIGxpc3QgaXRlbS4iCisgIChsZXQgKCht YXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkKKyAgICAoZXF1YWwgKHRyZWVzaXQt bm9kZS10eXBlIG1hcmtlcikgImxpc3RfbWFya2VyX2RvdCIpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1saXN0LXByb21vdGUtb3ItZGVtb3RlIChkZW1vdGUpCisgICJDaGFuZ2UgbmVzdGluZyBv ZiB0aGUgbGlzdCBpdGVtIGF0IHBvaW50LgorSWYgREVNT1RFIGlzIG5vbi1uaWwsIGRlbW90ZSAo aW5kZW50KTsgb3RoZXJ3aXNlIHByb21vdGUgKGRlZGVudCkuCitPcmRlcmVkIChudW1iZXJlZCkg bGlzdCBpdGVtcyBhcmUgc2tpcHBlZCBiZWNhdXNlIHRoZSBncmFtbWFyIGRvZXMKK25vdCBzdXBw b3J0IG5lc3RpbmcgdGhlbSBieSBpbmRlbnRhdGlvbi4iCisgICh3aGVuLWxldCogKChpdGVtICht YXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKHJlZ2lvbiAo bWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24gaXRlbSkpCisgICAgICAgICAgICAgIChiZWcg KGNhciByZWdpb24pKQorICAgICAgICAgICAgICAoZW5kIChjZHIgcmVnaW9uKSkpCisgICAgKHdo ZW4gKG1hcmtkb3duLXRzLS1saXN0LW9yZGVyZWQtaXRlbS1wIGl0ZW0pCisgICAgICAodXNlci1l cnJvciAiT3JkZXJlZCBsaXN0IGl0ZW1zIGNhbm5vdCBiZSBuZXN0ZWQgKGdyYW1tYXIgbGltaXRh dGlvbikiKSkKKyAgICAoaWYgZGVtb3RlCisgICAgICAgIDs7IERlbW90ZTogaW5kZW50IGJ5IG1h cmtlciB3aWR0aCwgb25seSBpZiB0aGVyZSBpcyBhIHByZXZpb3VzCisgICAgICAgIDs7IHNpYmxp bmcgdG8gbmVzdCB1bmRlciAobGlrZSBvcmctbW9kZSkuCisgICAgICAgICh3aGVuICh0cmVlc2l0 LW5vZGUtcHJldi1zaWJsaW5nIGl0ZW0pCisgICAgICAgICAgKGluZGVudC1yaWdpZGx5IGJlZyBl bmQgKG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13aWR0aCBpdGVtKSkpCisgICAgICA7OyBQcm9t b3RlOiBkZWRlbnQgdG8gZ3JhbmRwYXJlbnQgbGV2ZWwuCisgICAgICAobGV0KiAoKHBhcmVudC1s aXN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IGl0ZW0pKQorICAgICAgICAgICAgIChncmFuZHBhcmVu dCAoYW5kIHBhcmVudC1saXN0ICh0cmVlc2l0LW5vZGUtcGFyZW50IHBhcmVudC1saXN0KSkpCisg ICAgICAgICAgICAgKGl0ZW0tY29sIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgYmVnKSAoY3VycmVudC1pbmRlbnRhdGlvbikpKSkKKyAgICAgICAg KHdoZW4gKGFuZCBncmFuZHBhcmVudAorICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgZ3JhbmRwYXJlbnQpICJsaXN0X2l0ZW0iKQorICAgICAgICAgICAgICAgICAg ICg+IGl0ZW0tY29sIDApKQorICAgICAgICAgIChsZXQgKChncC1jb2wgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFy dCBncmFuZHBhcmVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWluZGVu dGF0aW9uKSkpKQorICAgICAgICAgICAgKGluZGVudC1yaWdpZGx5IGJlZyBlbmQgKC0gZ3AtY29s IGl0ZW0tY29sKSkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sIChu b2RlKQorICAiUmV0dXJuIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgY29udGFpbmluZyBOT0RF J3Mgc3RhcnQuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5v ZGUtc3RhcnQgbm9kZSkpCisgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tbGlzdC1tb3ZlICh1cCkKKyAgIk1vdmUgdGhlIGxpc3QgaXRlbSBhdCBw b2ludC4KK0lmIFVQIGlzIG5vbi1uaWwsIG1vdmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsg b3RoZXJ3aXNlIG1vdmUgZG93bi4iCisgICh3aGVuLWxldCogKChpdGVtIChtYXJrZG93bi10cy0t bGlzdC1pdGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKHNpYmxpbmcgKGlmIHVwCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBpdGVtKQor ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIGl0ZW0p KSkpCisgICAgKHdoZW4gKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBzaWJsaW5nKSAibGlzdF9p dGVtIikKKyAgICAgIChsZXQqICgoZmlyc3QgKGlmIHVwIHNpYmxpbmcgaXRlbSkpCisgICAgICAg ICAgICAgKHNlY29uZCAoaWYgdXAgaXRlbSBzaWJsaW5nKSkKKyAgICAgICAgICAgICAoZmlyc3Qt c3RhcnQgKG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sIGZpcnN0KSkKKyAgICAgICAgICAgICAo c2Vjb25kLXN0YXJ0IChtYXJrZG93bi10cy0tbGlzdC1ub2RlLWJvbCBzZWNvbmQpKQorICAgICAg ICAgICAgIChzZWNvbmQtZW5kICh0cmVlc2l0LW5vZGUtZW5kIHNlY29uZCkpCisgICAgICAgICAg ICAgOzsgRXh0cmFjdCBzZXBhcmF0b3IgYmV0d2VlbiBpdGVtcyBhbmQgdHJhaWxpbmcgd2hpdGVz cGFjZS4KKyAgICAgICAgICAgICAoZmlyc3QtcmF3IChidWZmZXItc3Vic3RyaW5nIGZpcnN0LXN0 YXJ0IHNlY29uZC1zdGFydCkpCisgICAgICAgICAgICAgKGZpcnN0LXRleHQgKHN0cmluZy10cmlt LXJpZ2h0IGZpcnN0LXJhdykpCisgICAgICAgICAgICAgKHNlcGFyYXRvciAoc3Vic3RyaW5nIGZp cnN0LXJhdyAobGVuZ3RoIGZpcnN0LXRleHQpKSkKKyAgICAgICAgICAgICAoc2Vjb25kLXJhdyAo YnVmZmVyLXN1YnN0cmluZyBzZWNvbmQtc3RhcnQgc2Vjb25kLWVuZCkpCisgICAgICAgICAgICAg KHNlY29uZC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBzZWNvbmQtcmF3KSkKKyAgICAgICAgICAg ICAodHJhaWxpbmcgKHN1YnN0cmluZyBzZWNvbmQtcmF3IChsZW5ndGggc2Vjb25kLXRleHQpKSkK KyAgICAgICAgICAgICAoY29sIChjdXJyZW50LWNvbHVtbikpCisgICAgICAgICAgICAgKGxpbmUt b2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBpdGVtKSkpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdp b24gZmlyc3Qtc3RhcnQgc2Vjb25kLWVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBmaXJzdC1zdGFy dCkKKyAgICAgICAgKGluc2VydCBzZWNvbmQtdGV4dCBzZXBhcmF0b3IgZmlyc3QtdGV4dCB0cmFp bGluZykKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAgICAg Zmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5ndGgg c2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRvcikp KSkKKyAgICAgICAgKGZvcndhcmQtbGluZSBsaW5lLW9mZnNldCkKKyAgICAgICAgKG1vdmUtdG8t Y29sdW1uIGNvbCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW51bWJlci1saXN0ICgmb3B0 aW9uYWwgc3RhcnQpCisgICJSZW51bWJlciB0aGUgb3JkZXJlZCBsaXN0IGF0IHBvaW50LgorTnVt YmVycyBhcmUgYXNzaWduZWQgc2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGl0 ZW0ncworbnVtYmVyLiAgV2l0aCBhIHByZWZpeCBhcmd1bWVudCBTVEFSVCwgc3RhcnQgbnVtYmVy aW5nIGZyb20gdGhhdAordmFsdWUgaW5zdGVhZC4gIERvZXMgbm90aGluZyBmb3IgdW5vcmRlcmVk IGxpc3RzLiIKKyAgKGludGVyYWN0aXZlICJQIikKKyAgKHdoZW4tbGV0KiAoKGl0ZW0gKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpKQorICAgICAgICAgICAgICAobGlzdC1ub2RlICh0 cmVlc2l0LW5vZGUtcGFyZW50IGl0ZW0pKSkKKyAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlIGxpc3Qtbm9kZSkgImxpc3QiKQorICAgICAgKGxldCogKChjaGlsZHJlbiAodHJlZXNp dC1ub2RlLWNoaWxkcmVuIGxpc3Qtbm9kZSkpCisgICAgICAgICAgICAgKGl0ZW1zIChzZXEtZmls dGVyIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFs ICh0cmVlc2l0LW5vZGUtdHlwZSBuKSAibGlzdF9pdGVtIikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoaWxkcmVuKSkKKyAgICAgICAgICAgICAoZmlyc3QtbWFya2VyICh0cmVl c2l0LW5vZGUtY2hpbGQgKGNhciBpdGVtcykgMCkpCisgICAgICAgICAgICAgKG1hcmtlci10eXBl ICh0cmVlc2l0LW5vZGUtdHlwZSBmaXJzdC1tYXJrZXIpKSkKKyAgICAgICAgKHdoZW4gKG1lbWJl ciBtYXJrZXItdHlwZSAnKCJsaXN0X21hcmtlcl9kb3QiICJsaXN0X21hcmtlcl9wYXJlbnRoZXNp cyIpKQorICAgICAgICAgIChsZXQqICgoYmFzZSAoaWYgc3RhcnQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwcmVmaXgtbnVtZXJpYy12YWx1ZSBzdGFydCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLXRvLW51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJl ZXNpdC1ub2RlLXRleHQgZmlyc3QtbWFya2VyIHQpKSkpCisgICAgICAgICAgICAgICAgIChjb3Vu dCAobGVuZ3RoIGl0ZW1zKSkKKyAgICAgICAgICAgICAgICAgOzsgU3RhcnQgZnJvbSB0aGUgbGFz dCBudW1iZXIgYW5kIHdvcmsgYmFja3dhcmRzIHNvCisgICAgICAgICAgICAgICAgIDs7IHRoYXQg ZWFybGllciBidWZmZXIgcG9zaXRpb25zIHJlbWFpbiB2YWxpZC4KKyAgICAgICAgICAgICAgICAg KG51bSAoKyBiYXNlIGNvdW50IC0xKSkpCisgICAgICAgICAgICAoZG9saXN0IChpdCAocmV2ZXJz ZSBpdGVtcykpCisgICAgICAgICAgICAgIChsZXQqICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hp bGQgaXQgMCkpCisgICAgICAgICAgICAgICAgICAgICAobWFya2VyLWVuZCAodHJlZXNpdC1ub2Rl LWVuZCBtYXJrZXIpKQorICAgICAgICAgICAgICAgICAgICAgKGJvbCAoc2F2ZS1leGN1cnNpb24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3Rh cnQgbWFya2VyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmct cG9zaXRpb24pKSkKKyAgICAgICAgICAgICAgICAgICAgIDs7IEZ1bGwgdGV4dCBmcm9tIGJvbCB0 byBlbmQgb2YgbWFya2VyIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICA7OyBhbnkgbGVh ZGluZyB3aGl0ZXNwYWNlLCB0aGUgbnVtYmVyLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAg ICA7OyBzZXBhcmF0b3IgKGUuZy4sICIuICIgb3IgIi5cdCIpLgorICAgICAgICAgICAgICAgICAg ICAgKGZ1bGwtdGV4dCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib2wgbWFya2VyLWVuZCkpCisgICAgICAgICAgICAgICAg ICAgICAoaW5kZW50LXN0cgorICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgXFwoW1s6Ymxhbms6XV0qXFwpWzAtOV0i IGZ1bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIGZ1 bGwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSkKKyAgICAgICAgICAgICAgICAg ICAgIChzdWZmaXgtc3RyCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXGBbWzpibGFuazpdXSpbMC05XStcXCguKlxc KVxcJyIgZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5n IDEgZnVsbC10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgIi4gIikpCisgICAgICAgICAg ICAgICAgICAgICAobmV3LXRleHQgKGNvbmNhdCBpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobnVtYmVyLXRvLXN0cmluZyBudW0pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgtc3RyKSkpCisgICAgICAgICAgICAg ICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBib2wg bWFya2VyLWVuZCkKKyAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgYm9sKQorICAgICAgICAg ICAgICAgICAgKGluc2VydCBuZXctdGV4dCkpKQorICAgICAgICAgICAgICAoY2wtZGVjZiBudW0p KQorICAgICAgICAgICAgKG1lc3NhZ2UgIlJlbnVtYmVyZWQgJWQgaXRlbXMiIGNvdW50KSkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIChpdGVtKQorICAi UmV0dXJuIHRoZSBtYXJrZXIgc3RyaW5nIGZvciBhIG5ldyBpdGVtIGZvbGxvd2luZyBJVEVNLgor Rm9yIHVub3JkZXJlZCBpdGVtcywgcmV1c2UgdGhlIHNhbWUgbWFya2VyIGNoYXJhY3Rlci4KK0Zv ciBvcmRlcmVkIGl0ZW1zLCBpbmNyZW1lbnQgdGhlIG51bWJlci4iCisgIChsZXQqICgobWFya2Vy ICh0cmVlc2l0LW5vZGUtY2hpbGQgaXRlbSAwKSkKKyAgICAgICAgICh0eXBlICh0cmVlc2l0LW5v ZGUtdHlwZSBtYXJrZXIpKQorICAgICAgICAgKGluZGVudCAoc2F2ZS1leGN1cnNpb24KKyAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkpCisgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtaW5kZW50YXRpb24pKSkKKyAgICAgICAgIChwcmVmaXgg KG1ha2Utc3RyaW5nIGluZGVudCA/XHMpKSkKKyAgICAocGNhc2UgdHlwZQorICAgICAgKCJsaXN0 X21hcmtlcl9taW51cyIgKGNvbmNhdCBwcmVmaXggIi0gIikpCisgICAgICAoImxpc3RfbWFya2Vy X3BsdXMiICAoY29uY2F0IHByZWZpeCAiKyAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJfc3RhciIg IChjb25jYXQgcHJlZml4ICIqICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9kb3QiCisgICAgICAg KGxldCAoKG51bSAoc3RyaW5nLXRvLW51bWJlciAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQp KSkpCisgICAgICAgICAoY29uY2F0IHByZWZpeCAobnVtYmVyLXRvLXN0cmluZyAoMSsgbnVtKSkg Ii4gIikpKQorICAgICAgKCJsaXN0X21hcmtlcl9wYXJlbnRoZXNpcyIKKyAgICAgICAobGV0ICgo bnVtIChzdHJpbmctdG8tbnVtYmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkpKSkKKyAg ICAgICAgIChjb25jYXQgcHJlZml4IChudW1iZXItdG8tc3RyaW5nICgxKyBudW0pKSAiKSAiKSkp CisgICAgICAoXyAoY29uY2F0IHByZWZpeCAiLSAiKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1uZXctbWFya2VyLWZvci1saW5lIChpdGVtKQorICAiUmV0dXJuIHRoZSBtYXJrZXIgc3RyaW5n IGZvciBhIG5ldyBpdGVtIGZvbGxvd2luZyBJVEVNLgorV2hlbiB0aGUgY3VycmVudCBsaW5lIGhh cyBhIGxpc3QgbWFya2VyIHBhdHRlcm4gYXQgYSBkaWZmZXJlbnQKK2luZGVudGF0aW9uIHRoYW4g SVRFTSAoZS5nLiwgYSBuZXN0ZWQgbWFya2VyIHRoYXQgdGhlIGdyYW1tYXIgZGlkCitub3QgcmVj b2duaXplIGFzIGEgbGlzdF9pdGVtKSwgdXNlIHRoZSBjdXJyZW50IGxpbmUncyBtYXJrZXIuCitP dGhlcndpc2UsIGZhbGwgYmFjayB0byBgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2Vy Jy4iCisgIChsZXQgKChtYXJrZXItbm9kZSAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQor ICAgIChpZiAoPSAobGluZS1udW1iZXItYXQtcG9zKQorICAgICAgICAgICAgKGxpbmUtbnVtYmVy LWF0LXBvcyAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlci1ub2RlKSkpCisgICAgICAgIDs7IEl0 ZW0ncyBtYXJrZXIgaXMgb24gdGhlIGN1cnJlbnQgbGluZTogdXNlIGl0IG5vcm1hbGx5LgorICAg ICAgICAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIGl0ZW0pCisgICAgICA7OyBJ dGVtJ3MgbWFya2VyIGlzIG9uIGEgZGlmZmVyZW50IGxpbmUuICBUaGUgcGFyc2VyIG1heSBoYXZl CisgICAgICA7OyBmYWlsZWQgdG8gcmVjb2duaXplIGEgbmVzdGVkIG1hcmtlciAoZS5nLiwgYSBs b25lIGAgIC0gJworICAgICAgOzsgcGFyc2VkIGFzIGEgc2V0ZXh0IGhlYWRpbmcpLiAgUmVhZCB0 aGUgY3VycmVudCBsaW5lLgorICAgICAgKGxldCAoKGxpbmUgKGJ1ZmZlci1zdWJzdHJpbmctbm8t cHJvcGVydGllcworICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikg KGxpbmUtZW5kLXBvc2l0aW9uKSkpKQorICAgICAgICAoaWYgKHN0cmluZy1tYXRjaAorICAgICAg ICAgICAgICJcXGBcXChbWzpibGFuazpdXSpcXClcXChbLSorXSBcXHxcXChbMC05XStcXClcXChb LildIFxcKVxcKSIKKyAgICAgICAgICAgICBsaW5lKQorICAgICAgICAgICAgKGxldCAoKGluZGVu dCAobWF0Y2gtc3RyaW5nIDEgbGluZSkpCisgICAgICAgICAgICAgICAgICAobnVtIChtYXRjaC1z dHJpbmcgMyBsaW5lKSkKKyAgICAgICAgICAgICAgICAgIChzdWZmaXggKG1hdGNoLXN0cmluZyA0 IGxpbmUpKQorICAgICAgICAgICAgICAgICAgKHVub3JkZXJlZCAobWF0Y2gtc3RyaW5nIDIgbGlu ZSkpKQorICAgICAgICAgICAgICAoaWYgbnVtCisgICAgICAgICAgICAgICAgICAoY29uY2F0IGlu ZGVudCAobnVtYmVyLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgxKyAoc3RyaW5nLXRvLW51bWJlciBudW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg c3VmZml4KQorICAgICAgICAgICAgICAgIChjb25jYXQgaW5kZW50IHVub3JkZXJlZCkpKQorICAg ICAgICAgIDs7IE5vIG1hcmtlciBwYXR0ZXJuIG9uIGN1cnJlbnQgbGluZTogdXNlIGl0ZW0ncyBt YXJrZXIuCisgICAgICAgICAgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciBpdGVt KSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGluZS1ibG9jay1xdW90ZS1kZXB0aCAoJm9w dGlvbmFsIHBvcykKKyAgIkNvdW50IHRoZSBudW1iZXIgb2YgYD4nIGJsb2NrIHF1b3RlIG1hcmtl cnMgb24gdGhlIGxpbmUgYXQgUE9TLiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKHdoZW4gcG9z IChnb3RvLWNoYXIgcG9zKSkKKyAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgKGxldCAoKGNv dW50IDApKQorICAgICAgKHdoaWxlIChhbmQgKG5vdCAoZW9scCkpCisgICAgICAgICAgICAgICAg ICAobWVtcSAoY2hhci1hZnRlcikgJyg/PiA/XHMgP1x0KSkpCisgICAgICAgICh3aGVuIChlcSAo Y2hhci1hZnRlcikgPz4pCisgICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpCisgICAg ICAgIChmb3J3YXJkLWNoYXIgMSkpCisgICAgICBjb3VudCkpKQorCisoZGVmdW4gbWFya2Rvd24t dHMtbmV3bGluZSAoKQorICAiSW5zZXJ0IGEgbmV3bGluZSwgY29udGludWluZyB0aGUgY3VycmVu dCBjb250ZXh0LgorSW5zaWRlIGEgbGlzdCBpdGVtLCB0aGUgbmV3IGxpbmUgaXMgaW5kZW50ZWQg dG8gdGhlIGl0ZW0ncyB0ZXh0Citjb2x1bW4gc28gdGhlIHBhcmFncmFwaCBjb250aW51ZXMuICBB IHNlY29uZCBSRVQgb24gYSBibGFuaworY29udGludWF0aW9uIGxpbmUgcmVtb3ZlcyB0aGUgaW5k ZW50YXRpb24sIGRyb3BwaW5nIHBvaW50IHRvCitjb2x1bW4gMCBzbyB0aGUgdHJlZS1zaXR0ZXIg Z3JhbW1hciBlbmRzIHRoZSBsaXN0LgorSW5zaWRlIGEgYmxvY2sgcXVvdGUsIHRoZSBuZXcgbGlu ZSBpbmNsdWRlcyB0aGUgcXVvdGUgcHJlZml4LgorT3RoZXJ3aXNlLCBpbnNlcnQgYSBwbGFpbiBu ZXdsaW5lLiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1h dAorICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlvbikg KHBvaW50KSkKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgOzsgVHJlZS1z aXR0ZXIgbWF5IHJlcG9ydCBhIG5vZGUgaW5zaWRlIGEgYmxvY2tfcXVvdGUgZXZlbgorICAgICAg ICAgOzsgd2hlbiBwb2ludCBpcyBvbiBhIGJsYW5rIGxpbmUgcGFzdCB0aGUgcXVvdGUgKHRoZSBu b2RlCisgICAgICAgICA7OyBzcGFuIGNhbiBleHRlbmQgYmV5b25kIHRoZSBgPicgbGluZXMpLiAg T25seSB0cmVhdCB0aGUKKyAgICAgICAgIDs7IGxpbmUgYXMgaW5zaWRlIGEgYmxvY2sgcXVvdGUg aWYgaXQgYWN0dWFsbHkgc3RhcnRzIHdpdGgKKyAgICAgICAgIDs7IGEgYD4nIG1hcmtlci4KKyAg ICAgICAgIChpbi1icSAoYW5kICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBibG9ja19x dW90ZVxcJyIpCisgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAg ICAobG9va2luZy1hdC1wICJbIFx0XSo+IikpKSkKKyAgICAgICAgIChpdGVtIChtYXJrZG93bi10 cy0tbGlzdC1pdGVtLWF0LXBvaW50KSkpCisgICAgKGNvbmQKKyAgICAgKGl0ZW0KKyAgICAgIChs ZXQqICgoY29sIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pKQorICAg ICAgICAgICAgIChicS1wcmVmaXggKHdoZW4gaW4tYnEgKG1hcmtkb3duLXRzLS1ibG9jay1xdW90 ZS1wcmVmaXgpKSkKKyAgICAgICAgICAgICA7OyBgY29sJyBpcyB0aGUgYWJzb2x1dGUgY29sdW1u IG9mIHRoZSBpdGVtJ3MgdGV4dCwKKyAgICAgICAgICAgICA7OyB3aGljaCBpbnNpZGUgYSBibG9j ayBxdW90ZSBpbmNsdWRlcyB0aGUgIj4gIiBwcmVmaXgKKyAgICAgICAgICAgICA7OyB3aWR0aC4g IFNpbmNlIHdlIGluc2VydCBgYnEtcHJlZml4JyBzZXBhcmF0ZWx5LCB3ZQorICAgICAgICAgICAg IDs7IG11c3Qgc3VidHJhY3QgaXRzIGxlbmd0aCB0byBhdm9pZCBkb3VibGluZyBpdC4KKyAgICAg ICAgICAgICAoaW5kZW50ICgtIGNvbCAobGVuZ3RoIChvciBicS1wcmVmaXggIiIpKSkpCisgICAg ICAgICAgICAgOzsgVGhlIGN1cnJlbnQgbGluZSBpcyAiYmxhbmsiIGlmIGl0IGNvbnRhaW5zIG9u bHkKKyAgICAgICAgICAgICA7OyB3aGl0ZXNwYWNlIChvciBxdW90ZSBwcmVmaXggKyB3aGl0ZXNw YWNlKSBhbmQgbm8KKyAgICAgICAgICAgICA7OyBhY3R1YWwgdGV4dCBmcm9tIGEgcHJldmlvdXMg UkVUJ3MgY29udGludWF0aW9uIGluZGVudC4KKyAgICAgICAgICAgICAoYmxhbmstbGluZS1wIChz YXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0LXAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJeWz4gXHRdKiQiKSkpCisgICAgICAgICAgICAgOzsg UG9pbnQgaXMgYmVmb3JlIHRoZSBpdGVtJ3MgdGV4dCAoYXQgb3IgYmVmb3JlIHRoZQorICAgICAg ICAgICAgIDs7IG1hcmtlcikuICBBIHBsYWluIG5ld2xpbmUgaXMgYXBwcm9wcmlhdGUgaGVyZSwg YWRkaW5nCisgICAgICAgICAgICAgOzsgY29udGludWF0aW9uIGluZGVudCB3b3VsZCBzaGlmdCB0 aGUgZXhpc3RpbmcgY29udGVudAorICAgICAgICAgICAgIDs7IHRvIHRoZSByaWdodC4KKyAgICAg ICAgICAgICAoYmVmb3JlLXRleHQtcCAoPD0gKGN1cnJlbnQtY29sdW1uKSBjb2wpKSkKKyAgICAg ICAgKGNvbmQKKyAgICAgICAgIChibGFuay1saW5lLXAKKyAgICAgICAgICA7OyBUaGUgdXNlciBw cmVzc2VkIFJFVCBvbiBhbiBhbHJlYWR5LWJsYW5rIGNvbnRpbnVhdGlvbgorICAgICAgICAgIDs7 IGxpbmUuICBJbnN0ZWFkIG9mIGFkZGluZyB5ZXQgYW5vdGhlciBpbmRlbnRlZCBibGFuaworICAg ICAgICAgIDs7IGxpbmUsIHJlbW92ZSB0aGUgaW5kZW50YXRpb24gYW5kIGluc2VydCBhIHBsYWlu CisgICAgICAgICAgOzsgbmV3bGluZS4gIFRoaXMgZHJvcHMgcG9pbnQgdG8gY29sdW1uIDAsIHdo aWNoIGlzIHRoZQorICAgICAgICAgIDs7IG9ubHkgd2F5IHRoZSB0cmVlLXNpdHRlciBtYXJrZG93 biBncmFtbWFyIGVuZHMgYSBsaXN0OgorICAgICAgICAgIDs7IGJsYW5rIGxpbmVzIGFsb25lIGRv IE5PVCBlbmQgYSBsaXN0LCBvbmx5CisgICAgICAgICAgOzsgbm9uLWluZGVudGVkIGNvbnRlbnQg ZG9lcy4gIFNvIHRoaXMgZ2l2ZXMgdGhlIHVzZXIgYQorICAgICAgICAgIDs7IG5hdHVyYWwgIlJF VCBSRVQgdG8gZXhpdCB0aGUgbGlzdCIgd29ya2Zsb3cuCisgICAgICAgICAgKGRlbGV0ZS1yZWdp b24gKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAg ICAgIChuZXdsaW5lKSkKKyAgICAgICAgIChiZWZvcmUtdGV4dC1wCisgICAgICAgICAgOzsgUG9p bnQgaXMgb24gb3IgYmVmb3JlIHRoZSBsaXN0IG1hcmtlcjsganVzdCBpbnNlcnQgYQorICAgICAg ICAgIDs7IHBsYWluIG5ld2xpbmUgc28gdGhlIGl0ZW0gaXMgcHVzaGVkIGRvd24gdW5jaGFuZ2Vk LgorICAgICAgICAgIChuZXdsaW5lKSkKKyAgICAgICAgICh0CisgICAgICAgICAgKGRlbGV0ZS1o b3Jpem9udGFsLXNwYWNlKQorICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgICh3aGVuIGJx LXByZWZpeCAoaW5zZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJp bmcgaW5kZW50ID9ccykpKSkpKQorICAgICAoaW4tYnEKKyAgICAgIChsZXQgKChicS1wcmVmaXgg KG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKQorICAgICAgICAgICAgOzsgQSBsaW5l IHdpdGggb25seSBxdW90ZSBtYXJrZXJzIGFuZCB3aGl0ZXNwYWNlIChlLmcuLAorICAgICAgICAg ICAgOzsgIj4gIikgaXMgImJsYW5rIiBpbnNpZGUgdGhlIHF1b3RlLiAgUkVUIGhlcmUgZXhpdHMg dGhlCisgICAgICAgICAgICA7OyBxdW90ZSwgc2FtZSBhcyBSRVQgb24gYSBibGFuayBjb250aW51 YXRpb24gbGluZSBleGl0cyBhCisgICAgICAgICAgICA7OyBsaXN0OiByZW1vdmUgdGhlIHByZWZp eCBhbmQgZHJvcCB0byBjb2x1bW4gMC4KKyAgICAgICAgICAgIChibGFuay1saW5lLXAgKHNhdmUt ZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5l KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0LXAgIl5bPiBcdF0qJCIp KSkpCisgICAgICAgIChpZiBibGFuay1saW5lLXAKKyAgICAgICAgICAgIChwcm9nbgorICAgICAg ICAgICAgICAoZGVsZXRlLXJlZ2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVu ZC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChuZXdsaW5lKSkKKyAgICAgICAgICAoZGVsZXRl LWhvcml6b250YWwtc3BhY2UpCisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKGluc2Vy dCBicS1wcmVmaXgpKSkpCisgICAgIDs7IERlZmF1bHQ6IHBsYWluIG5ld2xpbmUuICBUaGlzIGFs c28gaGFuZGxlcyBlbXB0eSBsaXN0IG1hcmtlcnMKKyAgICAgOzsgKGUuZy4sICItICIgd2l0aCBu byB0ZXh0KSB0aGF0IHRoZSBncmFtbWFyIHBhcnNlcyBhcyBFUlJPUgorICAgICA7OyBub2RlcyBy YXRoZXIgdGhhbiBsaXN0X2l0ZW0gbm9kZXMuCisgICAgIDs7CisgICAgIDs7IFdoZW4gdGhlIGN1 cnJlbnQgbGluZSBpcyBibGFuayAod2hpdGVzcGFjZSBvbmx5KSwgaXQgaXMgYQorICAgICA7OyBj b250aW51YXRpb24taW5kZW50IGxpbmUgbGVmdCBieSBhIHByZXZpb3VzIFJFVCB0aGF0CisgICAg IDs7IHRyZWUtc2l0dGVyIG5vIGxvbmdlciBjb25zaWRlcnMgcGFydCBvZiBhIGxpc3RfaXRlbS4g IENsZWFyCisgICAgIDs7IHRoZSB3aGl0ZXNwYWNlIHNvIG5vIHRyYWlsaW5nIHNwYWNlcyByZW1h aW4sIGFuZCBpbnNlcnQgYQorICAgICA7OyBwbGFpbiBuZXdsaW5lIGF0IGNvbHVtbiAwIHRvIGV4 aXQgdGhlIGxpc3QgY29udGV4dC4KKyAgICAgKHQKKyAgICAgICh3aGVuIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgIChsb29r aW5nLWF0LXAgIl5bIFx0XSskIikpCisgICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAobmV3bGluZSkpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy1pbnNlcnQtbGlzdC1pdGVtICgpCisgICJJbnNlcnQgYSBu ZXcgbGlzdCBpdGVtLCBzcGxpdHRpbmcgdGV4dCBhdCBwb2ludC4KK1RleHQgYWZ0ZXIgcG9pbnQg bW92ZXMgdG8gdGhlIG5ldyBpdGVtLiAgQXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsCithbiBl bXB0eSBpdGVtIGlzIGluc2VydGVkIGFib3ZlIGFuZCB0aGUgY3VycmVudCBjb250ZW50IGlzIHB1 c2hlZCBkb3duLgorSW5zaWRlIGEgYmxvY2sgcXVvdGUsIHRoZSBuZXcgbGluZSBpbmNsdWRlcyB0 aGUgcXVvdGUgcHJlZml4LgorRm9yIG9yZGVyZWQgbGlzdHMsIHRoZSBudW1iZXIgaXMgaW5jcmVt ZW50ZWQuCitXaGVuIG5vdCBpbnNpZGUgYSBsaXN0LCBmYWxsIGJhY2sgdG8gYG1hcmtkb3duLXRz LW5ld2xpbmUnLiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9k ZS1hdAorICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlv bikgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgKGluLWJx IChhbmQgKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGJsb2NrX3F1b3RlXFwnIikKKyAg ICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0 LXAgIlsgXHRdKj4iKSkpKQorICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rv d24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtkb3duLXRz LS1saXN0LWl0ZW0tYXQtcG9pbnQpKSkKKyAgICAoY29uZAorICAgICAoKGFuZCBpdGVtCisgICAg ICAgICAgIChvciAobm90IGluLWJxKQorICAgICAgICAgICAgICAgKD49IChtYXJrZG93bi10cy0t bGluZS1ibG9jay1xdW90ZS1kZXB0aCkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMt LWxpbmUtYmxvY2stcXVvdGUtZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1zdGFydCAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKSkpKQorICAgICAgKGxldCogKChu ZXctbWFya2VyIChtYXJrZG93bi10cy0tbmV3LW1hcmtlci1mb3ItbGluZSBpdGVtKSkKKyAgICAg ICAgICAgICAoYXQtYm9sICg8PSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAg ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10 by1pbmRlbnRhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVt bikpKSkKKyAgICAgICAgICAgICAodGFpbCAod2hlbiAoYW5kIChub3QgYXQtYm9sKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobG9va2luZy1hdC1wICJbIFx0XSokIikpKQor ICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1hbmQtZXh0cmFjdC1yZWdpb24KKyAgICAgICAg ICAgICAgICAgICAgICAocG9pbnQpIChsaW5lLWVuZC1wb3NpdGlvbikpKSkpCisgICAgICAgIChp ZiBhdC1ib2wKKyAgICAgICAgICAgIDs7IEF0IEJPTDogaW5zZXJ0IGVtcHR5IGl0ZW0gYWJvdmUs IHB1c2ggY3VycmVudCBsaW5lIGRvd24uCisgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAg ICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAod2hlbiBicS1wcmVmaXggKGlu c2VydCBicS1wcmVmaXgpKQorICAgICAgICAgICAgICAoaW5zZXJ0IG5ldy1tYXJrZXIgIlxuIikK KyAgICAgICAgICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pKQorICAgICAgICAgIDs7IE1pZC1s aW5lIG9yIEVPTDogbmV3IGl0ZW0gYmVsb3cgd2l0aCB0YWlsIHRleHQuCisgICAgICAgICAgKGRl bGV0ZS1ob3Jpem9udGFsLXNwYWNlKQorICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgICh3 aGVuIGJxLXByZWZpeCAoaW5zZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgKGluc2VydCBuZXct bWFya2VyKQorICAgICAgICAgICh3aGVuIHRhaWwgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgKHN0 cmluZy10cmltLWxlZnQgdGFpbCkpKSkpKSkKKworICAgICA7OyBOb3QgaW4gYSBsaXN0OiBmYWxs IGJhY2sgdG8gbmV3bGluZSBiZWhhdmlvci4KKyAgICAgKHQgKG1hcmtkb3duLXRzLW5ld2xpbmUp KSkpKQorCis7OzsgRmlsbGluZzoKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1maWxsLXVuZmls bGFibGUtYmxvY2stcXVlcnkKKyAgJyhbKGZlbmNlZF9jb2RlX2Jsb2NrKSAoaW5kZW50ZWRfY29k ZV9ibG9jaykgKHBpcGVfdGFibGUpXSBAYmxvY2spCisgICJUcmVlLXNpdHRlciBxdWVyeSBtYXRj aGluZyBibG9ja3Mgd2hlcmUgZmlsbGluZyBpcyBpbmhpYml0ZWQuIikKKworKGRlZnVuIG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gKGl0ZW0pCisgICJSZXR1cm4gdGhlIGNvbHVt biB3aGVyZSB0aGUgdGV4dCBvZiBsaXN0IElURU0gc3RhcnRzLgorVGhpcyBpcyB0aGUgY29sdW1u IG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGggbm9kZSBpbnNpZGUgSVRFTSwgb3IKK3RoZSB3aWR0aCBv ZiB0aGUgbGlzdCBtYXJrZXIgaWYgbm8gcGFyYWdyYXBoIGlzIGZvdW5kLiIKKyAgKGxldCAoKHBh cmFncmFwaCAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBpdGVtICJcXGBwYXJhZ3JhcGhcXCciKSkp CisgICAgKGlmIHBhcmFncmFwaAorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAo Z290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgcGFyYWdyYXBoKSkKKyAgICAgICAgICAoY3Vy cmVudC1jb2x1bW4pKQorICAgICAgKGxldCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0 ZW0gMCkpKQorICAgICAgICAoLSAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpCisgICAgICAgICAg ICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t ZmlsbC1saXN0LWl0ZW0gKGl0ZW0ganVzdGlmeSkKKyAgIkZpbGwgdGhlIGNvbnRlbnRzIG9mIGxp c3QgSVRFTSwgcHJlc2VydmluZyBpdHMgaW5kZW50YXRpb24uCitOYXJyb3dzIHRvIElURU0ncyBv d24gcGFyYWdyYXBoIGNvbnRlbnQgKGV4Y2x1ZGluZyBuZXN0ZWQgbGlzdHMpCithbmQgc2V0cyBg ZmlsbC1wcmVmaXgnIHRvIGFsaWduIGNvbnRpbnVhdGlvbiBsaW5lcyB3aXRoIHRoZSBzdGFydAor b2YgdGhlIGl0ZW0ncyB0ZXh0LiAgSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIK KyAgKGxldCogKChmaWxsLXByZWZpeCAobWFrZS1zdHJpbmcgKG1hcmtkb3duLXRzLS1saXN0LWl0 ZW0tdGV4dC1jb2x1bW4gaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg P1xzKSkKKyAgICAgICAgIDs7IEZpbmQgdGhlIGl0ZW0ncyBvd24gcGFyYWdyYXBoIChmaXJzdCBw YXJhZ3JhcGggY2hpbGQpLgorICAgICAgICAgOzsgSWYgdGhlIGl0ZW0gaGFzIG5lc3RlZCBsaXN0 cywgbmFycm93IHRvIGp1c3QgdGhlCisgICAgICAgICA7OyBwYXJhZ3JhcGggc28gd2UgZG9uJ3Qg bWVyZ2UgbmVzdGVkIGl0ZW1zLgorICAgICAgICAgKHBhcmEgKHRyZWVzaXQtc2VhcmNoLXN1YnRy ZWUgaXRlbSAiXFxgcGFyYWdyYXBoXFwnIiBuaWwgbmlsIDEpKQorICAgICAgICAgKGJlZyAodHJl ZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKQorICAgICAgICAgKGVuZCAoaWYgcGFyYQorICAgICAgICAg ICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgcGFyYSkKKyAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLWVuZCBpdGVtKSkpCisgICAgICAgICA7OyBVc2UgZGVmYXVsdCBwYXJhZ3JhcGggbW90 aW9uIGluc2lkZSB0aGUgbmFycm93ZWQgcmVnaW9uCisgICAgICAgICA7OyBzbyB0aGF0IHRoZSBp bm5lciBgZmlsbC1wYXJhZ3JhcGgnIGRvZXMgbm90IHJlLWVudGVyIG91cgorICAgICAgICAgOzsg Y3VzdG9tIHBhcmFncmFwaC1maW5kaW5nIGxvZ2ljLgorICAgICAgICAgKGZpbGwtZm9yd2FyZC1w YXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkpCisgICAgKHNhdmUtcmVzdHJp Y3Rpb24KKyAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAoZmlsbC1wYXJh Z3JhcGgganVzdGlmeSkpCisgICAgOzsgUmV0dXJuIG5vbi1uaWwgdG8gc2lnbmFsIHRoYXQgZmls bGluZyBoYXMgYmVlbiBoYW5kbGVkLAorICAgIDs7IGFzIHBlciB0aGUgY29udHJhY3Qgb2YgYGZp bGwtcGFyYWdyYXBoLWZ1bmN0aW9uJy4KKyAgICB0KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1h ZGFwdGl2ZS1maWxsICgpCisgICJSZXR1cm4gdGhlIGZpbGwgcHJlZml4IGZvciB0aGUgY3VycmVu dCBsaW5lIGluIE1hcmtkb3duLgorV2hlbiBpbnNpZGUgYSBsaXN0IGl0ZW0sIHJldHVybiBzcGFj ZXMgbWF0Y2hpbmcgdGhlIGNvbHVtbiB3aGVyZQordGhlIGl0ZW0ncyB0ZXh0IHN0YXJ0cy4iCisg IChhbmQtbGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgICAgICAgICAgICAgICAo c2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAg ICAgICAgICAgICdtYXJrZG93bikpCisgICAgICAgICAgICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50 LXVudGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAobWFrZS1zdHJpbmcgKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRlbSkgP1xzKSkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZmlsbC1mb3J3YXJkLXBhcmFncmFwaCAoYXJnKQorICAiTW92ZSBmb3J3YXJkIGJ5 IEFSRyBwYXJhZ3JhcGhzLCByZXNwZWN0aW5nIE1hcmtkb3duIHN0cnVjdHVyZS4KK0xpc3QgaXRl bXMgYXJlIHRyZWF0ZWQgYXMgaW5kaXZpZHVhbCBwYXJhZ3JhcGhzLiAgQmxvY2tzIG1hdGNoZWQK K2J5IGBtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5JyBhcmUgc2tpcHBl ZDogYm90aAorZm9yd2FyZCBhbmQgYmFja3dhcmQgbW90aW9uIG1vdmUgdG8gdGhlIGVuZCBvZiB0 aGUgYmxvY2ssIHNvCitgZmlsbC1yZWdpb24nIHNlZXMgYSB6ZXJvLWxlbmd0aCByZWdpb24gYW5k IGxlYXZlcyB0aGUgYmxvY2sKK3VuZmlsbGVkLiIKKyAgKGxldCAoKGRpcmVjdGlvbiAoaWYgKD4g YXJnIDApIDEgLTEpKQorICAgICAgICAoY291bnQgKGFicyBhcmcpKQorICAgICAgICAobW92ZWQg MCkpCisgICAgKGRvdGltZXMgKF8gY291bnQpCisgICAgICA7OyBGb3IgYmFja3dhcmQgbW90aW9u LCBza2lwIGJhY2sgb3ZlciB3aGl0ZXNwYWNlIHRvIGZpbmQKKyAgICAgIDs7IHRoZSBpdGVtIHdl IGFyZSBsZWF2aW5nLCBub3QgdGhlIG5leHQgb25lLgorICAgICAgKGxldCogKChwb3MgKGlmICg8 IGRpcmVjdGlvbiAwKQorICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdFxuIikKKyAgICAg ICAgICAgICAgICAgICAgICAgIChtYXggKHBvaW50LW1pbikgKDEtIChwb2ludCkpKSkKKyAgICAg ICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgKGJsb2NrIChjYXIgKHRyZWVz aXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1idWZm ZXItcm9vdC1ub2RlICdtYXJrZG93bikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rv d24tdHMtLWZpbGwtdW5maWxsYWJsZS1ibG9jay1xdWVyeQorICAgICAgICAgICAgICAgICAgICAg ICAgICBwb3MgKDErIHBvcykpKSkKKyAgICAgICAgICAgICAoaW5kZW50ZWQtcG9zIChzYXZlLWV4 Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBvcykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChub2RlICh0cmVl c2l0LW5vZGUtYXQgaW5kZW50ZWQtcG9zICdtYXJrZG93bikpCisgICAgICAgICAgICAgKGl0ZW0g KHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAgICAg OzsgV2hlbiBtb3ZpbmcgZm9yd2FyZCBmcm9tIHdoaXRlc3BhY2UgYmV0d2VlbiBsaXN0IGl0ZW1z LAorICAgICAgICA7OyBza2lwIHRvIHRoZSBuZXh0IG5vbi1ibGFuayBwb3NpdGlvbiBhbmQgY2hl Y2sgYWdhaW4uCisgICAgICAgICh3aGVuIChhbmQgKG5vdCBpdGVtKSAobm90IGJsb2NrKSAoPiBk aXJlY3Rpb24gMCkpCisgICAgICAgICAgKGxldCAoKG5leHQtcG9zIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCisgICAgICAgICAgICAoc2V0 cSBub2RlICh0cmVlc2l0LW5vZGUtYXQgbmV4dC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAg IChzZXRxIGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIp KSkpCisgICAgICAgIChjb25kCisgICAgICAgICA7OyBJbnNpZGUgYW4gdW5maWxsYWJsZSBibG9j azogc2tpcCBvdmVyIGl0IGVudGlyZWx5LgorICAgICAgICAgKGJsb2NrCisgICAgICAgICAgKGdv dG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCAoY2RyIGJsb2NrKSkpCisgICAgICAgICAgKHNldHEg bW92ZWQgKDErIG1vdmVkKSkpCisgICAgICAgICA7OyBJbnNpZGUgYSBsaXN0IGl0ZW06IHRyZWF0 IGFzIHBhcmFncmFwaCBib3VuZGFyeS4KKyAgICAgICAgIChpdGVtCisgICAgICAgICAgKGlmICg+ IGRpcmVjdGlvbiAwKQorICAgICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtZW5k IGl0ZW0pKQorICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0p KSkKKyAgICAgICAgICAoc2V0cSBtb3ZlZCAoMSsgbW92ZWQpKSkKKyAgICAgICAgIDs7IERlZmF1 bHQ6IHVzZSBzdGFuZGFyZCBwYXJhZ3JhcGggbW90aW9uLgorICAgICAgICAgKHQKKyAgICAgICAg ICAoZm9yd2FyZC1wYXJhZ3JhcGggZGlyZWN0aW9uKQorICAgICAgICAgIChzZXRxIG1vdmVkICgx KyBtb3ZlZCkpKSkpKQorICAgIDs7IFJldHVybiB0aGUgbnVtYmVyIG9mIHBhcmFncmFwaHMgbGVm dCB0byBtb3ZlICgwID0gYWxsIGRvbmUpLgorICAgICgtIGNvdW50IG1vdmVkKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tZmlsbC1wYXJhZ3JhcGggKCZvcHRpb25hbCBqdXN0aWZ5KQorICAiRmls bCB0aGUgY3VycmVudCBwYXJhZ3JhcGgsIHJlc3BlY3RpbmcgTWFya2Rvd24gYmxvY2sgc3RydWN0 dXJlLgorVGhpcyBmdW5jdGlvbiBwcmV2ZW50cyBmaWxsaW5nIGluc2lkZSBibG9ja3MgbWF0Y2hl ZCBieQorYG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnknLCBhbmQgZmls bHMgd2l0aGluIGxpc3QKK2l0ZW1zIHdpdGhvdXQgbWVyZ2luZyBhZGphY2VudCBpdGVtcy4gIEpV U1RJRlkgaXMgYXMgaW4KK2BmaWxsLXBhcmFncmFwaCcuIgorICAoY29uZCoKKyAgIDs7IERvbid0 IGZpbGwgaW5zaWRlIHVuZmlsbGFibGUgYmxvY2tzLiAgVXNlIGEgcXVlcnkgYWdhaW5zdCB0aGUK KyAgIDs7IHJvb3Qgbm9kZSBiZWNhdXNlIGB0cmVlc2l0LW5vZGUtYXQnIG1heSBub3QgcmV0dXJu IGEgbm9kZQorICAgOzsgaW5zaWRlIHRoZSBibG9jayB3aGVuIHBvaW50IGlzIG9uIGFub255bW91 cyAodW5uYW1lZCkgdGV4dC4KKyAgICgodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICh0cmVl c2l0LWJ1ZmZlci1yb290LW5vZGUgJ21hcmtkb3duKQorICAgICBtYXJrZG93bi10cy0tZmlsbC11 bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5CisgICAgIChwb2ludCkgKG1pbiAoMSsgKHBvaW50KSkgKHBv aW50LW1heCkpKQorICAgIHQpCisgICA7OyBGaWxsIHdpdGhpbiB0aGUgZW5jbG9zaW5nIGxpc3Qg aXRlbS4gIFVzZQorICAgOzsgYG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQnIHdoaWNo IGhhbmRsZXMgYmxvY2sgcXVvdGUKKyAgIDs7IG1hcmtlcnMuICBXaGVuIHRoZSBsaXN0IGl0ZW0g aXMgaW5zaWRlIGEgYmxvY2sgcXVvdGUsIGRlbGVnYXRlCisgICA7OyB0byB0aGUgYmxvY2sgcXVv dGUgZmlsbGVyIHdoaWNoIGhhbmRsZXMgYD4gJyBwcmVmaXhlcyBjb3JyZWN0bHkuCisgICAoKGJp bmQtYW5kKiAoaXRlbSAobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChp ZiAodHJlZXNpdC1wYXJlbnQtdW50aWwgaXRlbSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAgICAg ICAobWFya2Rvd24tdHMtLWZpbGwtYmxvY2stcXVvdGUganVzdGlmeSkKKyAgICAgIChtYXJrZG93 bi10cy0tZmlsbC1saXN0LWl0ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBQb2ludCBpcyBvbiBh IGJsYW5rIGxpbmUgYmVmb3JlIGEgbGlzdC4gIElmIHRoZSBuZXh0CisgICA7OyBub24td2hpdGVz cGFjZSBwb3NpdGlvbiBmYWxscyBpbnNpZGUgYSBsaXN0IGl0ZW0sIGZpbGwgdGhhdCBpdGVtLgor ICAgKChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgKGxv b2tpbmctYXQtcCAiWyBcdF0qJCIpKQorICAgIChhbmQtbGV0KiAoKG5leHQtcG9zIChzYXZlLWV4 Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi IFx0XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAg ICAgICAobmV4dC1ub2RlICh0cmVlc2l0LW5vZGUtYXQgbmV4dC1wb3MgJ21hcmtkb3duKSkKKyAg ICAgICAgICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAg ICAgICAgIG5leHQtbm9kZSAiXFxgbGlzdF9pdGVtXFwnIikpKQorICAgICAgKG1hcmtkb3duLXRz LS1maWxsLWxpc3QtaXRlbSBpdGVtIGp1c3RpZnkpKSkKKyAgIDs7IEZpbGwgd2l0aGluIGEgYmxv Y2sgcXVvdGUuICBOYXJyb3cgdG8gdGhlIHBhcmFncmFwaCBub2RlIGF0CisgICA7OyBwb2ludCdz IG5lc3RpbmcgbGV2ZWwgc28gbGluZXMgd2l0aCBkaWZmZXJlbnQgYD4gJyBkZXB0aHMKKyAgIDs7 IGFyZSBub3QgbWVyZ2VkLgorICAgKCh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAodHJlZXNp dC1ub2RlLWF0CisgICAgICAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRpb24pIChw b2ludCkpCisgICAgICAnbWFya2Rvd24pCisgICAgICJcXGBibG9ja19xdW90ZVxcJyIpCisgICAg KG1hcmtkb3duLXRzLS1maWxsLWJsb2NrLXF1b3RlIGp1c3RpZnkpKQorICAgOzsgRmlsbCB3aXRo aW4gYW4gSFRNTCBjb21tZW50LiAgVGhlIG5vZGUgdHlwZSBpcyAiaHRtbF9ibG9jayIKKyAgIDs7 IGluIGdyYW1tYXIgdjAuNC54IGFuZCAiY29tbWVudCIgaW4gc29tZSBvdGhlciB2ZXJzaW9ucy4K KyAgICgoYmluZC1hbmQqIChibG9jayAobGV0ICgobiAodHJlZXNpdC1ub2RlLWF0IChwb2ludCkg J21hcmtkb3duKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHRyZWVzaXQtcGFyZW50 LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gIlxcYFxcKD86aHRtbF9ibG9j a1xcfGNvbW1lbnRcXClcXCciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKG1l bWJlciAodHJlZXNpdC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJygiaHRtbF9ibG9jayIgImNvbW1lbnQiKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG4pKSkpKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1odG1sLWNvbW1l bnQgYmxvY2sganVzdGlmeSkpCisgICA7OyBEZWZhdWx0OiBsZXQgZmlsbC1wYXJhZ3JhcGggaGFu ZGxlIGl0LgorICAgKHQgbmlsKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1odG1sLWNv bW1lbnQgKG5vZGUganVzdGlmeSkKKyAgIkZpbGwgSFRNTCBjb21tZW50IE5PREUsIGFsaWduaW5n IGNvbnRpbnVhdGlvbiBsaW5lcy4KK1JldHVybiB0IGlmIE5PREUgaXMgYSBjb21tZW50IGFuZCB3 YXMgZmlsbGVkLCBuaWwgb3RoZXJ3aXNlLgorSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3Jh cGgnLiIKKyAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciAodHJl ZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgIChsb29raW5nLWF0LXAgIjwhLS0iKSkK KyAgICAobGV0ICgoZmlsbC1wcmVmaXggKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyAoKyAoY3VycmVudC1jb2x1bW4pCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggIjwhLS0gIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9ccykpKQorICAgICAgICAgIChhZGFw dGl2ZS1maWxsLWZ1bmN0aW9uIG5pbCkKKyAgICAgICAgICAoZmlsbC1mb3J3YXJkLXBhcmFncmFw aC1mdW5jdGlvbiAjJ2ZvcndhcmQtcGFyYWdyYXBoKQorICAgICAgICAgIChmaWxsLXBhcmFncmFw aC1mdW5jdGlvbiBuaWwpKQorICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgICAgKG5hcnJv dy10by1yZWdpb24gKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZpbGwtcGFyYWdyYXBo IGp1c3RpZnkpKQorICAgICAgdCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWJsb2NrLXF1b3Rl LXByZWZpeCAoKQorICAiUmV0dXJuIHRoZSBibG9jayBxdW90ZSBwcmVmaXggc3RyaW5nIGZyb20g dGhlIGN1cnJlbnQgbGluZS4KK1JlYWQgdGhlIGFjdHVhbCBgPicgbWFya2VycyAod2l0aCB3aGF0 ZXZlciBzcGFjaW5nIHRoZSB1c2VyIHdyb3RlKQorZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBs aW5lIHNvIHRoYXQgZmlsbCBwcmVzZXJ2ZXMgdGhlIGV4aXN0aW5nCitzdHlsZSAoZS5nLiwgYD4+ PiAnIHN0YXlzIGA+Pj4gJywgYD4gPiA+ICcgc3RheXMgYD4gPiA+ICcpLiIKKyAgKHNhdmUtZXhj dXJzaW9uCisgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgIChpZiAobG9va2luZy1hdCAiXFwo Wz4gXHRdKj5cXClbIFx0XSoiKQorICAgICAgICAoY29uY2F0IChtYXRjaC1zdHJpbmcgMCkpCisg ICAgICAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSAoanVz dGlmeSkKKyAgIkZpbGwgdGhlIHBhcmFncmFwaCBhdCBwb2ludCBpbnNpZGUgYSBibG9jayBxdW90 ZS4KK0ZpbmQgdGhlIHBhcmFncmFwaCBub2RlIGF0IHBvaW50IHdpdGhpbiB0aGUgYmxvY2sgcXVv dGUgYW5kIGZpbGwKK29ubHkgdGhhdCBwYXJhZ3JhcGgsIHByZXNlcnZpbmcgdGhlIGA+ICcgcHJl Zml4LiAgV2hlbiB0aGUKK3BhcmFncmFwaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0sIGFsaWduIGNv bnRpbnVhdGlvbiBsaW5lcyB3aXRoCit0aGUgaXRlbSdzIHRleHQgY29sdW1uLiAgSlVTVElGWSBp cyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgOzsgU2tpcCBwYXN0IGA+ICcgbWFya2VycyBh bmQgYW55IGxpc3QgbWFya2VyIHRvIGxhbmQgaW5zaWRlIHRoZQorICA7OyBjb250ZW50LCB3aGVy ZSB0aGUgcGFyYWdyYXBoIG5vZGUgbGl2ZXMuCisgIChsZXQqICgoY29udGVudC1wb3MgKHNhdmUt ZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisg ICAgICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICI+IFx0IikKKyAgICAg ICAgICAgICAgICAgICAgICAgIDs7IElmIHdlIGxhbmQgb24gYSBsaXN0IG1hcmtlciwgc2tpcCBw YXN0IGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGxvb2tpbmctYXQgIlstKitd IFxcfFswLTldK1suKV1ccyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KG1hdGNoLWVuZCAwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAobWluICgxKyAocG9pbnQp KSAocG9pbnQtbWF4KSkpKQorICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBjb250ZW50 LXBvcyAnbWFya2Rvd24pKQorICAgICAgICAgKHBhcmEgKHRyZWVzaXQtcGFyZW50LXVudGlsCisg ICAgICAgICAgICAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAo ZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG4pICJwYXJhZ3JhcGgiKSkpKSkKKyAgICAod2hlbiBw YXJhCisgICAgICA7OyBUaGUgZ3JhbW1hciBtYXkgaW5jbHVkZSB0cmFpbGluZyBibG9ja19jb250 aW51YXRpb24gbm9kZXMKKyAgICAgIDs7IChibGFuayBgPiA+JyBsaW5lcykgYXMgY2hpbGRyZW4g b2YgdGhlIHBhcmFncmFwaC4gIFVzZSB0aGUKKyAgICAgIDs7IGVuZCBvZiB0aGUgbGFzdCBpbmxp bmUgY2hpbGQgc28gZmlsbCBkb2VzIG5vdCBtZXJnZSBhY3Jvc3MKKyAgICAgIDs7IHdoYXQgc2hv dWxkIGJlIGEgcGFyYWdyYXBoIGJvdW5kYXJ5LgorICAgICAgKGxldCogKChsYXN0LWlubGluZQor ICAgICAgICAgICAgICAoc2VxLWZpbmQgKGxhbWJkYSAoY2hpbGQpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJpbmxpbmUiKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChyZXZlcnNlICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcGFy YSkpKSkKKyAgICAgICAgICAgICAocGFyYS1lbmQgKGlmIGxhc3QtaW5saW5lCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBsYXN0LWlubGluZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBwYXJhKSkpCisgICAgICAgICAgICAg KGJxLXByZWZpeCAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAg ICAgOzsgV2hlbiBpbnNpZGUgYSBsaXN0IGl0ZW0sIGV4dGVuZCB0aGUgcHJlZml4IHdpdGggc3Bh Y2VzCisgICAgICAgICAgICAgOzsgc28gY29udGludWF0aW9uIGxpbmVzIGFsaWduIHdpdGggdGhl IGl0ZW0ncyB0ZXh0LgorICAgICAgICAgICAgIChsaXN0LWl0ZW0gKHRyZWVzaXQtcGFyZW50LXVu dGlsIHBhcmEgIlxcYGxpc3RfaXRlbVxcJyIpKQorICAgICAgICAgICAgIChwcmVmaXggKGlmIGxp c3QtaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQqICgodGV4dC1jb2wgKG1hcmtk b3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaXN0LWl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZXh0cmEgKG1heCAwICgtIHRleHQtY29sIChsZW5ndGggYnEtcHJlZml4KSkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgYnEtcHJlZml4IChtYWtlLXN0cmluZyBl eHRyYSA/XHMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgYnEtcHJlZml4KSkKKyAgICAgICAg ICAgICAoYWRhcHRpdmUtZmlsbC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgICAgKGZpbGwtZm9y d2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAg ICAoZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gbmlsKSkKKyAgICAgICAgKHNhdmUtcmVzdHJpY3Rp b24KKyAgICAgICAgICA7OyBOYXJyb3cgdG8gdGhlIGZ1bGwgbGluZXMgb2YgdGhlIHBhcmFncmFw aCBzbyB0aGF0IHRoZQorICAgICAgICAgIDs7IGA+ICcgbWFya2VycyBhcmUgaW5jbHVkZWQgaW4g dGhlIGZpbGwgcmVnaW9uLgorICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uCisgICAgICAgICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBwYXJhKSkKKyAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAg ICAgKHBvaW50KSkKKyAgICAgICAgICAgcGFyYS1lbmQpCisgICAgICAgICAgKGxldCAoKGZpbGwt cHJlZml4IHByZWZpeCkpCisgICAgICAgICAgICAoZmlsbC1wYXJhZ3JhcGgganVzdGlmeSkpKSkp KQorICB0KQorCis7OzsgQ29kZSBibG9ja3M6CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMt LWNvZGUtYmxvY2stbGFuZ3VhZ2VzIG5pbAorICAiQWxpc3QgbWFwcGluZyBsYW5ndWFnZSBub2Rl IG5hbWVzIHRvIHRzIGxhbmd1YWdlLgorSWYgYSBsYW5ndWFnZSBpcyBub3QgYSB0cyBsYW5ndWFn ZSBvciBpcyBub3QgbWFwcGVkIHRvIG9uZSwgaXQgd2lsbCBiZQoraW4gYG1hcmtkb3duLXRzLS1j b2RlLWJsb2NrLW5vbi10cy1tb2RlcycuIikKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0t Y29kZS1ibG9jay1ub24tdHMtbW9kZXMgbmlsCisgICJBbGlzdCBtYXBwaW5nIGxhbmd1YWdlcyB0 byBub24tdHJlZS1zaXR0ZXIgbW9kZXMgZm9yIGNvZGUgYmxvY2tzLgorUG9wdWxhdGVkIGJ5IGBt YXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZScgdG8gaWRlbnRpZnkgYQorY29kZS1i bG9jayBsYW5ndWFnZSBtb2RlIHdoaWNoIGlzIG5vdCBhIHRyZWUtc2l0dGVyIG1vZGUgb3IgZm9y IHdoaWNoCit0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBpcyB1bmF2YWlsYWJsZS4iKQorCisoZGVm dW4gbWFya2Rvd24tdHMtLWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24gKG1vZGUp CisgICJIYXJ2ZXN0IHRyZWUtc2l0dGVyIGNvbmZpZ3VyYXRpb24gZnJvbSBNT0RFLgorUmV0dXJu IGEgcGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgIDpmb250 LWxvY2sgKGZyb20gYHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzJykKICAgICA6c2ltcGxlLWlu ZGVudCAoZnJvbSBgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzJykKICAgICA6cmFuZ2UgKGZy b20gYHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MnKSIKICAgKHdpdGgtdGVtcC1idWZmZXIKLSAgICAo ZnVuY2FsbCBtb2RlKQotICAgIChsaXN0IDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0 dGluZ3MKKyAgICAoZGVsYXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkKKyAgICAobGlzdCA6 bGFuZ3VhZ2UgKHRyZWVzaXQtbGFuZ3VhZ2UtYXQgKHBvaW50LW1pbikpCisgICAgICAgICAgOmZv bnQtbG9jayB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwogICAgICAgICAgIDpzaW1wbGUtaW5k ZW50IHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcwogICAgICAgICAgIDpyYW5nZSB0cmVlc2l0 LXJhbmdlLXNldHRpbmdzKSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy0tYWRkLWNvbmZpZy1mb3It bW9kZSAobGFuZ3VhZ2UgbW9kZSkKLSAgIkFkZCBjb25maWd1cmF0aW9ucyBmb3IgTEFOR1VBR0Ug ZnJvbSBNT0RFIHRvIGN1cnJlbnQgYnVmZmVyLgotCi1Db25maWd1cmF0aW9uIGluY2x1ZGVzIGZv bnQtbG9jayBhbmQgaW5kZW50LiAgRm9yIGZvbnQtbG9jayBydWxlcywgdXNlCi10aGUgc2FtZSBm ZWF0dXJlcyBlbmFibGVkIGluIE1PREUuIgotICAobGV0ICgoY29uZmlncyAobWFya2Rvd24tdHMt LWhhcnZlc3QtdHJlZXNpdC1jb25maWdzIG1vZGUpKSkKLSAgICAoaWdub3JlIGxhbmd1YWdlKSA7 IFdlIG1pZ2h0IG1ha2UgdXNlIG9mIHRoaXMgbGF0ZXIuCi0gICAgKHNldHEgdHJlZXNpdC1mb250 LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRp bmdzCi0gICAgICAgICAgICAgICAgICA7OyBHZXQgYWxsIHRoZSBmb250LWxvY2sgc2V0dGluZ3Ms IGluY2x1ZGluZyBvbmVzIHRoYXQKLSAgICAgICAgICAgICAgICAgIDs7IGRvbid0IHBlcnRhaW4g dG8gTEFOR1VBR0UuICBUaGlzIHdheSB3ZSBnZXQganNkb2MKLSAgICAgICAgICAgICAgICAgIDs7 IGZyb20ganMtdHMtbW9kZSwgZm9yIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgICAocGxpc3Qt Z2V0IGNvbmZpZ3MgOmZvbnQtbG9jaykpKQotICAgIChzZXRxIHRyZWVzaXQtc2ltcGxlLWluZGVu dC1ydWxlcwotICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCi0g ICAgICAgICAgICAgICAgICA7OyBTaW1pbGFybHksIGdldCBhbGwgaW5kZW50IHJ1bGVzLgotICAg ICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWdzIDpzaW1wbGUtaW5kZW50KSkpCisoZGVm dW4gbWFya2Rvd24tdHMtLWNvbmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciAoY29uZmlndXJhdGlvbikK KyAgIkFkZCBDT05GSUdVUkFUSU9OIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KK0NPTkZJR1VSQVRJ T04gaW5jbHVkZXMgZm9udC1sb2NrIGFuZCBpbmRlbnQgcnVsZXMuICBGb3IgZm9udC1sb2NrIHJ1 bGVzLAordXNlIHRoZSBzYW1lIGZlYXR1cmVzIGVuYWJsZWQgaW4gTU9ERS4iCisgIChzZXRxIHRy ZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxv Y2stc2V0dGluZ3MKKyAgICAgICAgICAgICAgICA7OyBHZXQgYWxsIHRoZSBmb250LWxvY2sgc2V0 dGluZ3MsIGluY2x1ZGluZyBvbmVzIHRoYXQKKyAgICAgICAgICAgICAgICA7OyBkb24ndCBwZXJ0 YWluIHRvIE1PREUuICBUaGlzIHdheSwgd2UgZ2V0IGpzZG9jCisgICAgICAgICAgICAgICAgOzsg ZnJvbSBqcy10cy1tb2RlLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3VyYXRpb24gOmZvbnQtbG9jaykpKQorICAoc2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRl bnQtcnVsZXMKKyAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKKyAg ICAgICAgICAgICAgICA7OyBTaW1pbGFybHksIGdldCBhbGwgaW5kZW50IHJ1bGVzLgorICAgICAg ICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6c2ltcGxlLWluZGVudCkpKQogICAg IChzZXRxIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQt cmFuZ2Utc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgIDs7IEZpbHRlciBvdXQgZnVuY3Rpb24g cXVlcmllcywgYmVjYXVzZSB0aGV5IGFyZQpAQCAtMzAyLDUyICsyMjc3LDQ3OSBAQCBtYXJrZG93 bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZQogICAgICAgICAgICAgICAgICAgOzsgQ2FzZSBpbiBw b2ludDogYy10cy1tb2RlJ3MgcmFuZ2Ugc2V0dGluZy4KICAgICAgICAgICAgICAgICAgIChzZXEt ZmlsdGVyIChsYW1iZGEgKHNldHRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChub3QgKGZ1bmN0aW9ucCAoY2FyIHNldHRpbmcpKSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3MgOnJhbmdlKSkpKQotICAgIChzZXRxLWxvY2FsIGlu ZGVudC1saW5lLWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQpCi0gICAgKHNldHEtbG9jYWwgaW5k ZW50LXJlZ2lvbi1mdW5jdGlvbiAjJ3RyZWVzaXQtaW5kZW50LXJlZ2lvbikpKQotCi0oZGVmdW4g bWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1sYW5ndWFnZSAobm9kZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6cmFuZ2UpKSkp CisgIChzZXRxLWxvY2FsIGluZGVudC1saW5lLWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQpCisg IChzZXRxLWxvY2FsIGluZGVudC1yZWdpb24tZnVuY3Rpb24gIyd0cmVlc2l0LWluZGVudC1yZWdp b24pKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgKG5vZGUpCisgICJS ZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBmb3IgY29kZV9mZW5jZV9jb250ZW50IE5PREUuIgor ICAod2hlbi1sZXQqICgocGFyZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAg ICAgICAgICAobGFuZy1ub2RlICh3aGVuIHBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50ICJcXGBsYW5ndWFnZVxcJyIpKSkpCisg ICAgKGludGVybiAodHJlZXNpdC1ub2RlLXRleHQgbGFuZy1ub2RlIHQpKSkpCisKKyhkZWZ2YXIt bG9jYWwgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgIydlcXVhbCkKKyAgIkNhY2hlIGZvciBub24tdHJlZS1zaXR0ZXIgY29kZSBibG9jayBm b250aWZpY2F0aW9uLgorS2V5cyBhcmUgKExBTkcgLiBDT05URU5ULUhBU0gpIGNvbnMgY2VsbHMs IHZhbHVlcyBhcmUgbGlzdHMgb2YKK1woT0ZGU0VULVNUQVJUIE9GRlNFVC1FTkQgRkFDRSkgdHJp cGxlcy4iKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNo ZS10aWNrIG5pbAorICAiRm9yIGJsdW50IGBidWZmZXItY2hhcnMtbW9kaWZpZWQtdGljaycgY2Fj aGUgaW52YWxpZGF0aW9uLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1ub24tdHMt Y29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAgIkZvbnRpZnkg Y29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNpbmcgYSBub24tdHJlZS1zaXR0ZXIgbW9kZS4KK0Fw cGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2NrIGluIGEgdGVt cG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0aHJv dWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLgorCitDYWNoZSByZXN1bHRz IHRvIGF2b2lkIGZvbnRpZmljYXRpb24gb2YgdW5jaGFuZ2VkIGNvZGUgYmxvY2tzLgorCitOT0RF IHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2VkIHRocm91Z2gKK2BtYXJrZG93bi10cy0tY29kZS1i bG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5IGhhdmUgY2xhc3NpZmllZCB0aGlzCitub2RlIGFz IGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1sZXQqICgobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1 YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAgICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBt YXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgICAodGlj ayAoYnVmZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2spKQorICAgICAgICAgICAgICAoYmxvY2stc3Rh cnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAgICAgOzsgQ2Fubm90IHVz ZSBtYXJrZXJzICdtYXJrZG93bi10cy1jb2RlLWJlZy1tYXJrZXIKKyAgICAgICAgICAgICAgOzsg J21hcmtkb3duLXRzLWNvZGUtZW5kLW1hcmtlciB0aGV5IGFyZSBzZXQgYWZ0ZXIgdGhpcworICAg ICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zLgorICAgICAgICAgICAgICAobm9kZS1zdGFydCAo c2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0 cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisgICAgICAgICAgICAgIChub2RlLWVuZCAoc2F2ZS1l eGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1u b2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFj a3dhcmQgIiBcdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAo d2hlbiAoPiBub2RlLWVuZCBub2RlLXN0YXJ0KQorICAgICAgKHVubGVzcyAoZXEgdGljayBtYXJr ZG93bi10cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUtdGljaykKKyAgICAgICAgKGNscmhhc2ggbWFy a2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlKSkKKyAgICAgIChsZXQqICgoY2FjaGUta2V5 IChjb25zIGxhbmcgKHNlY3VyZS1oYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnc2hhMjU2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVu dC1idWZmZXIpIG5vZGUtc3RhcnQgbm9kZS1lbmQpKSkKKyAgICAgICAgICAgICAocHJvcHMKKyAg ICAgICAgICAgICAgKG9yIChnZXRoYXNoIGNhY2hlLWtleQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWFya2Rvd24tdHMtLW5vbi10cy1mb250aWZ5LWNhY2hlKQorICAgICAgICAgICAgICAg ICAgKGxldCAoKHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0t Zm9udGlmeS1ub24tdHMtY29sbGVjdC1mYWNlcworICAgICAgICAgICAgICAgICAgICAgICAgICBt b2RlIG5vZGUtc3RhcnQgbm9kZS1lbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2gg Y2FjaGUta2V5IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10 cy0tbm9uLXRzLWZvbnRpZnktY2FjaGUpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIG1hcmtk b3duLXRzLS1ub24tdHMtZm9udGlmeS1jYWNoZS10aWNrIHRpY2spCisgICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkpKSkKKyAgICAgICAgKGRvbGlzdCAocmFuZ2UgcHJvcHMpCisgICAgICAgICAg KHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgICAgICAgIChudGggMCByYW5nZSkK KyAgICAgICAgICAgKG50aCAxIHJhbmdlKQorICAgICAgICAgICAobnRoIDIgcmFuZ2UpCisgICAg ICAgICAgIG92ZXJyaWRlIHN0YXJ0IGVuZCkpKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZv bnRpZnktbm9uLXRzLWNvbGxlY3QtZmFjZXMgKG1vZGUgYmVnIGVuZCkKKyAgIlJ1biBNT0RFIG9u IHRoZSBCRUcuLkVORCByZWdpb24ncyB0ZXh0IGFuZCBoYXJ2ZXN0IGZhY2UgcHJvcGVydGllcy4K K1JldHVybiBhIGxpc3Qgb2YgKEJVRi1CRUcgQlVGLUVORCBGQUNFKSB0cmlwbGVzIGluIGJhc2Ut YnVmZmVyCitjb29yZGluYXRlcy4KKworRm9yIG5vbi10cmVlLXNpdHRlciBtb2RlcyB1c2UgYW4g aW5kaXJlY3QgYnVmZmVyIG5hcnJvd2VkIHRvIEJFRy4uRU5EOgorcmVnZXgvc3ludGFjdGljIGZv bnQtbG9jayBob25vcnMgbmFycm93aW5nIGFuZCB0aGUgaW5kaXJlY3QgYnVmZmVyCitzaGFyZXMg dGV4dCB3aXRoIHRoZSBiYXNlLCBzbyB0aGlzIGlzIGxlc3MgZXhwZW5zaXZlIGFuZCBjb3B5LWZy ZWUuCisKK0ZvciB0cyBtb2RlcyBpbiBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252 ZW50aW9uYWwtbW9kZXMnLCBmYWxsCitiYWNrIHRvIGEgdGVtcCBidWZmZXIuICBUcmVlLXNpdHRl ciBwYXJzZXJzIGlnbm9yZSBpbmRpcmVjdC1idWZmZXIKK25hcnJvd2luZyBhbmQgcGFyc2UgdGhl IGZ1bGwgYmFzZS1idWZmZXIgdGV4dDsgdGhlIGlubmVyIGNvbnRlbnQgb2YgYQorZmVuY2VkIGNv ZGUgYmxvY2sgaXMganVzdCBvcGFxdWUgdGV4dCBpbnNpZGUgYSBgY29kZV9mZW5jZV9jb250ZW50 Jworbm9kZSwgbmV2ZXIgcmUtcGFyc2VkIGFzIGEgZnJlc2ggZG9jdW1lbnQuICBBIHRlbXAgYnVm ZmVyIHdpdGggYSBmcmVzaAorcGFyc2VyIHNlZXMgdGhlIGlubmVyIGNvbnRlbnQgYXMgYSBzdGFu ZGFsb25lIG1hcmtkb3duIGRvY3VtZW50LCB3aGljaAoraXMgd2hhdCB3ZSB3YW50LiIKKyAgKGNv bmQgKChtZW1xIG1vZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1mb3JjZS1jb252ZW50aW9uYWwt bW9kZXMpCisgICAgICAgICAobGV0ICgoY29udGVudCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzIGJlZyBlbmQpKQorICAgICAgICAgICAgICAgcmVzKQorICAgICAgICAgICAod2l0aC10 ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQgY29udGVudCkKKyAgICAgICAgICAgICAo ZGVsYXktbW9kZS1ob29rcworICAgICAgICAgICAgICAgKGxldCAoKG1hcmtkb3duLXRzLS1zZXQt dXAtaW5saW5lIHQpKQorICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtbW9kZSkpKQorICAg ICAgICAgICAgIChmb250LWxvY2stZW5zdXJlKQorICAgICAgICAgICAgIChsZXQgKChwb3MgKHBv aW50LW1pbikpKQorICAgICAgICAgICAgICAgKHdoaWxlICg8IHBvcyAocG9pbnQtbWF4KSkKKyAg ICAgICAgICAgICAgICAgKGxldCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICdmYWNlIG5pbCAocG9pbnQtbWF4KSkp CisgICAgICAgICAgICAgICAgICAgICAgIChmYWNlIChnZXQtdGV4dC1wcm9wZXJ0eSBwb3MgJ2Zh Y2UpKSkKKyAgICAgICAgICAgICAgICAgICAod2hlbiBmYWNlCisgICAgICAgICAgICAgICAgICAg ICA7OyBUcmFuc2xhdGUgdGVtcC1idWZmZXIgb2Zmc2V0cyBiYWNrIHRvIGJhc2UtYnVmZmVyCisg ICAgICAgICAgICAgICAgICAgICA7OyBwb3NpdGlvbnM6IHRlbXAgYHBvaW50LW1pbicgY29ycmVz cG9uZHMgdG8gQkVHLgorICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgKCsgYmVnICgx LSBwb3MpKSAoKyBiZWcgKDEtIG5leHQpKSBmYWNlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAoc2V0cSBwb3MgbmV4dCkpKSkpCisgICAgICAg ICAgIChucmV2ZXJzZSByZXMpKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChsZXQgKChpbmRpcmVj dC1idWZmZXIgKG1ha2UtaW5kaXJlY3QtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY3VycmVudC1idWZmZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lIChidWZmZXItbmFtZSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuaWwgJ2luaGliaXQtYnVmZmVyLWhvb2tzKSkKKyAgICAgICAg ICAgICAgIHJlcykKKyAgICAgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIKKyAgICAgICAgICAgICAgICAgKGRl bGF5LW1vZGUtaG9va3MgKGZ1bmNhbGwgbW9kZSkpCisgICAgICAgICAgICAgICAgIChuYXJyb3ct dG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgICAgICAgIChmb250LWxvY2stZW5zdXJlKQor ICAgICAgICAgICAgICAgICAobGV0ICgocG9zIChwb2ludC1taW4pKSkKKyAgICAgICAgICAgICAg ICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAgICAgICAgKGxl dCAoKG5leHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBvcyAnZmFjZSBuaWwgKHBvaW50LW1heCkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXByb3BlcnR5IHBvcyAnZmFjZSkpKQorICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAg KHB1c2ggKGxpc3QgcG9zIG5leHQgZmFjZSkgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgcG9zIG5leHQpKSkpKQorICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBpbmRpcmVjdC1i dWZmZXIpKQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgKGxhbmcpCisgICJDb21wdXRlIGFuZCBjYWNo ZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywgYSBzeW1ib2wuCitDb25zdWx0IHRoZSBgbWFya2Rv d24tdHMtY29kZS1ibG9jay1tYXAnIGNhY2hlLCBvciBwcm9iZSBtb2RlIG5hbWVzLgorUmV0dXJu IGEgdmFsaWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIKKyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAo YWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcykpKQorICAgICAgbWFw cGVkLW1vZGUKKyAgICAobGV0ICgobGFuZy1zdHJpbmcgKHN5bWJvbC1uYW1lIGxhbmcpKSkKKyAg ICAgIChjYXRjaCA6bW9kZQorICAgICAgICAoZG9saXN0IChtb2RlCisgICAgICAgICAgICAgICAg IChsaXN0CisgICAgICAgICAgICAgICAgICA7OyBUcnkgYSB0cmVlc2l0IG1vZGUgdXNpbmcgdGhl IHJhdyBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMt bW9kZSIpCisgICAgICAgICAgICAgICAgICA7OyBUcnkgYSBjb252ZW50aW9uYWwgbW9kZSB1c2lu ZyB0aGUgcmF3IHN0cmluZy4KKyAgICAgICAgICAgICAgICAgIChjb25jYXQgbGFuZy1zdHJpbmcg Ii1tb2RlIikKKyAgICAgICAgICAgICAgICAgIDs7IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0 aGUgZG93bmNhc2VkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgIChjb25jYXQgKGRvd25jYXNl IGxhbmctc3RyaW5nKSAiLXRzLW1vZGUiKQorICAgICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29u dmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIGRvd25jYXNlZCBzdHJpbmcuCisgICAgICAgICAgICAg ICAgICAoY29uY2F0IChkb3duY2FzZSBsYW5nLXN0cmluZykgIi1tb2RlIikpKQorICAgICAgICAg IChzZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAgICAgICAgICAod2hlbiAoZmJvdW5kcCBtb2Rl KQorICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFuZyBtb2RlKSBtYXJrZG93bi10cy1jb2RlLWJs b2NrLW1vZGVzKQorICAgICAgICAgICAgKHRocm93IDptb2RlIG1vZGUpKSkpKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1sYW5ndWFnZSAobm9kZSkKICAgIkNvbnZlcnQg Tk9ERSB0byBhIGxhbmd1YWdlIGZvciB0aGUgY29kZSBibG9jay4iCi0gIChsZXQqICgobGFuZy1z dHJpbmcgKGFsaXN0LWdldCAodHJlZXNpdC1ub2RlLXRleHQgbm9kZSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1hcAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUp IG5pbCAjJ2VxdWFsKSkKLSAgICAgICAgIChsYW5nIChpZiAoc3ltYm9scCBsYW5nLXN0cmluZykK LSAgICAgICAgICAgICAgICAgICBsYW5nLXN0cmluZwotICAgICAgICAgICAgICAgICAoaW50ZXJu IChkb3duY2FzZSBsYW5nLXN0cmluZykpKSkpCi0gICAgOzsgRklYTUU6IEtpbmQgb2YgYSBoYWNr IGhlcmU6IHdlIHVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgaG9vayBmb3IKLSAgICA7OyBsb2FkaW5n IHVwIGNvbmZpZ3MgZm9yIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvZGUgYmxvY2sgb24tZGVtYW5k LgotICAgIChsZXQgKChtb2RlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2Nr LXNvdXJjZS1tb2RlLW1hcCkpKQotICAgICAgOzsgSWYgdGhlcmUncyBubyBzdXBwb3J0ZWQgbW9k ZSBmb3IgdGhlIGxhbmd1YWdlLCByZXR1cm4gbmlsLAotICAgICAgOzsgd2hpY2ggbWFrZXMgRW1h Y3Mgc2tpcCB0aGUgY29kZSBibG9jay4KLSAgICAgIChpZiAobm90IChhbmQgbW9kZSAoZmJvdW5k cCBtb2RlKSkpCi0gICAgICAgICAgbmlsCi0gICAgICAgIDs7IElmIHRoZXJlJ3MgYSBtYWpvciBt b2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHNldCB1cCB0aGUgY29uZmlnCi0gICAgICAgIDs7IGFuZCBy ZXR1cm4gdGhlIGxhbmd1YWdlLgotICAgICAgICAod2hlbiAobm90IChtZW1xIGxhbmcgbWFya2Rv d24tdHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkKLSAgICAgICAgICAobWFya2Rvd24tdHMtLWFk ZC1jb25maWctZm9yLW1vZGUgbGFuZyBtb2RlKQotICAgICAgICAgIChwdXNoIGxhbmcgbWFya2Rv d24tdHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkKLSAgICAgICAgbGFuZykpKSkKKyAgKGxldCog KChsYW5nIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKKyAgICAgICAgIChtb2Rl IChtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlIGxhbmcpKQorICAgICAgICAg KHRzLWxhbmd1YWdlIChhbGlzdC1nZXQgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5n dWFnZXMpKQorICAgICAgICAgKG5vbi10cy1sYW5ndWFnZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rv d24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkpCisgICAgKGNvbmQKKyAgICAgKChmYm91 bmRwIG1vZGUpCisgICAgICAoY29uZAorICAgICAgIDs7IFJldHVybiBrbm93biB0cmVlc2l0IGxh bmd1YWdlLgorICAgICAgICh0cy1sYW5ndWFnZSB0cy1sYW5ndWFnZSkKKyAgICAgICA7OyBSZXR1 cm4gbmlsIGZvciBrbm93biBub24tdHJlZXNpdCBsYW5ndWFnZSBmb3IgZm9udC1sb2NrLgorICAg ICAgIChub24tdHMtbGFuZ3VhZ2UgbmlsKQorICAgICAgIDs7IE1hcmtkb3duIGl0c2VsZiBuZWVk cyB0d28gcGFyc2VycyAobWFya2Rvd24gKworICAgICAgIDs7IG1hcmtkb3duLWlubGluZSksIHNv IHRyZWVzaXQgZW1iZWRkaW5nICh3aGljaCBjcmVhdGVzIG9ubHkKKyAgICAgICA7OyBvbmUpIGNh bm5vdCBmdWxseSBmb250aWZ5IGl0LiAgUm91dGUgdGhyb3VnaCB0aGUgbm9uLXRzCisgICAgICAg OzsgcGF0aCBzbyB0aGUgdGVtcCBidWZmZXIgcnVucyB0aGUgZnVsbCBtb2RlIHdpdGggYm90aAor ICAgICAgIDs7IHBhcnNlcnMuCisgICAgICAgKChlcSBtb2RlICdtYXJrZG93bi10cy1tb2RlKQor ICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRz LW1vZGVzKQorICAgICAgICAgIChwdXNoIChjb25zIGxhbmcgbW9kZSkgbWFya2Rvd24tdHMtLWNv ZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAgICAgbmlsKQorICAgICAgICh0CisgICAgICAg IChsZXQqICgoY29uZmlndXJhdGlvbiAobWFya2Rvd24tdHMtLWhhcnZlc3QtbW9kZS10cmVlc2l0 LWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlKSkKKyAg ICAgICAgICAgICAgICh0cy1sYW5ndWFnZSAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRpb24gOmxhbmd1 YWdlKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgKChhbmQgdHMtbGFuZ3VhZ2UKKyAg ICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25maWd1cmF0aW9uIDpmb250LWxvY2spKQorICAg ICAgICAgICAgKG1hcmtkb3duLXRzLS1jb25maWd1cmUtY3VycmVudC1idWZmZXIgY29uZmlndXJh dGlvbikKKyAgICAgICAgICAgICh1bmxlc3MgKGFzc3EgbGFuZyBtYXJrZG93bi10cy0tY29kZS1i bG9jay1sYW5ndWFnZXMpCisgICAgICAgICAgICAgIChwdXNoIChjb25zIGxhbmcgdHMtbGFuZ3Vh Z2UpIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykpCisgICAgICAgICAgICB0cy1s YW5ndWFnZSkKKyAgICAgICAgICAgOzsgT3RoZXJ3aXNlLCBjbGFzc2lmeSBtb2RlIGFzIG5vbi10 cmVlLXNpdHRlci4KKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgICh1bmxlc3MgKGFzc3EgbGFu ZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgICAgIChw dXNoIChjb25zIGxhbmcgbW9kZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVz KSkKKyAgICAgICAgICAgIG5pbCkpKSkpKQorICAgICAodCBuaWwpKSkpCisKKzs7OyBDb2RlIGJs b2NrIG1pbm9yIG1vZGUgc3VwcG9ydCBhbmQgY29kZS1ibG9jayBjb250ZXh0IGNvbW1hbmRzOgor CisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMgJyhpbmRlbnQtZm9yLXRh Yi1jb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVj dHJpYy1uZXdsaW5lLWFuZC1tYXliZS1pbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld2xpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbW1lbnQtZHdpbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29tbWVudC1saW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21tZW50LW9yLXVuY29tbWVudC1yZWdpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdy YXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9nLWZpbGwt cmVpbmRlbnQtZGVmdW4pCisgICJDb21tYW5kcyB0byBleGVjdXRlIGluIGEgY29kZS1ibG9jayBj b250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jaycuIikK KworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXRoaW5nLWNvbW1hbmRzICcoeHJlZi1m aW5kLWRlZmluaXRpb25zKQorICAiQ29tbWFuZHMgdGhhdCBuZWVkIGEgXCJ0aGluZ1wiIGF0IHBv aW50IGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1h bmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXJl Z2lvbi1jb21tYW5kcyAnKGNvbW1lbnQtb3ItdW5jb21tZW50LXJlZ2lvbikKKyAgIkNvbW1hbmRz IHRoYXQgbmVlZCBhIHJlZ2lvbiBpbiBhIGNvZGUtYmxvY2sgY29udGV4dC4KK1NlZSBgbWFya2Rv d24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2snLiIpCisKKyhkZWZ1biBtYXJrZG93bi10 cy0tZW5hYmxlLWNvZGUtYmxvY2stbW9kZSAoKQorICAiRW5hYmxlIGBtYXJrZG93bi10cy1jb2Rl LWJsb2NrLW1vZGUnIHdoZW4gaWYgYSBmZW5jZWQgY29kZSBibG9jay4iCisgIChtYXJrZG93bi10 cy1jb2RlLWJsb2NrLW1vZGUgKGlmIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLWF0LXApIDEgLTEp KSkKKworOzsgTk9URTogRG8gbm90IGFkZCB0aGlzIGNvbW1hbmQgdG8gYG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stY29tbWFuZHMnLgorKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5ld2xp bmUgKCZvcHRpb25hbCBhcmcgaW50ZXJhY3RpdmUpCisgICAiSW5zZXJ0IGEgbmV3bGluZSwgYW5k IG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5ldyBsaW5lLgorV2l0aCBwcmVmaXggYXJndW1l bnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgorCitJZiBgZWxlY3RyaWMtaW5kZW50 LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50cyB0aGUgZmluYWwgbmV3IGxpbmUKK3RoYXQg aXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJlY2VkaW5nIGxpbmUuICBUbyBqdXN0IGluc2Vy dAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMtaW5kZW50LWp1c3QtbmV3bGluZV0uCisKK0lm IGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwgdGhpcyBtYXkgY2F1c2UgYXV0b21hdGljIGxp bmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcgbGluZS4gIEEgbm9uLW5pbCBBUkcgaW5oaWJp dHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1oYXJkLW5ld2xpbmVzJyBpcyBlbmFibGVkLCB0 aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhlIHRleHQtcHJvcGVydHkgYGhhcmQnLgorCitB IG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQgbWVhbnMgdG8gcnVuIHRoZSBgcG9zdC1zZWxm LWluc2VydC1ob29rJy4iCisgICAoaW50ZXJhY3RpdmUgIipQXG5wIikKKyAgIChpZi1sZXQqICgo YmxvY2stbW9kZSAobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAg ICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAgICAgIChtYXJrZG93bi10cy0tcnVuLWNvbW1h bmQtaW4tY29kZS1ibG9jayBibG9jay1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMnbmV3bGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2Rl LWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9uYWwganVzdGlmeSkKKyAgIlJlZmlsbCBvciBy ZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0aGF0IGNvbnRhaW5zIHBvaW50LgorSWYgdGhl IHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29tbWVudCwgZmlsbCB0aGUgcGFyYWdyYXBoIHRo YXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3MgcG9pbnQuCisKK090aGVyd2lzZSwgcmVpbmRl bnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhhdCBjb250YWlucyBwb2ludCBvcgorZm9sbG93 cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24tbmlsIChpbnRlcmFjdGl2ZWx5LCB3aXRoIHBy ZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dlbGwuIgorICAoaW50ZXJhY3RpdmUgIlAiKQor ICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9nLW1vZGUpCisgICAgICAgICAoY2FsbC1pbnRl cmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50LWRlZnVuIGp1c3RpZnkpKQorICAgICAgICAo dAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwtcGFyYWdyYXBoIGp1c3RpZnkp KSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhpcyBjb21tYW5kIHRvIGBtYXJrZG93bi10cy1j b2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay14cmVm LWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3MpCisgICJIZWxwZXIgY29tbWFuZCBmb3IgYHhy ZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQuCitGaW5kIHRoaW5n IGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVuY2VzIG9uIHRoZSB4cmVmIHN0YWNrIHRvIHRo ZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBBUkdTIGlmIG5vdCBpbiBhIGNvZGUgYmxvY2sg d2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmLWxldCogKChi bG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtYXQpKQorICAgICAgICAgICAg KChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChjb25kaXRpb24tY2FzZSBlcnIKKyAgICAg ICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAg ICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJlZiBtYXJrZXIgaW4gdGhlIGJhc2UgYnVmZmVy LiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdpbGwgYmUgcmV0YWluZWQgaWYgdGhlIGNvbW1h bmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBpbgorICAgICAgICAgICAgICAgIDs7IHRoZSBp bmRpcmVjdCBidWZmZXIgd2hpY2ggd2Ugd2lsbCBwb3AuCisgICAgICAgICAgICAgICAgKHhyZWYt cHVzaC1tYXJrZXItc3RhY2spCisgICAgICAgICAgICAgICAgOzsgYHhyZWYtZmluZC1kZWZpbml0 aW9ucycgaXMgYSB0aGluZyBjb21tYW5kIGluCisgICAgICAgICAgICAgICAgOzsgYG1hcmtkb3du LXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMnLgorICAgICAgICAgICAgICAgIChtYXJrZG93 bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayBibG9jay1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMneHJlZi1maW5kLWRl ZmluaXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFyZ3MpKQorICAgICAgICAgICAgOzsgUG9wIHRoZSB0b3AgeHJlZiBtYXJrZXIu ICBJZiB0aGUgY29tbWFuZCBzdWNjZWVkZWQsIHRoZQorICAgICAgICAgICAgOzsgdG9wIG1hcmtl ciB3aWxsIGJlIHRoZSBpbmRpcmVjdCBidWZmZXIgbWFya2VyLiAgSWYgaXQKKyAgICAgICAgICAg IDs7IGZhaWxlZCwgd2UnbGwgcG9wIHRoZSBwbGFjZWhvbGRlciB3aGljaCBpcyBub3cgb2Ygbm8K KyAgICAgICAgICAgIDs7IHZhbHVlPAorICAgICAgICAgICAgOzsgVE9ETzogUHJvcG9zZSBhbiBg eHJlZicgcG9wIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCAiZ28KKyAgICAgICAgICAgIDs7IGJhY2si LgorICAgICAgICAgICAgKGxldCAoKGhpc3RvcnkgKHhyZWYtLWdldC1oaXN0b3J5KSkpCisgICAg ICAgICAgICAgICh1bmxlc3MgKG51bGwgKGNhciBoaXN0b3J5KSkKKyAgICAgICAgICAgICAgICAo cG9wIChjYXIgaGlzdG9yeSkpKSkpCisgICAgICAgIChlcnJvcgorICAgICAgICAgOzsgUHJvcGFn YXRlIHRoZSBzaWduYWwuCisgICAgICAgICAoc2lnbmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkK KyAgICA7OyBOb3QgaW4gYSBjb2RlIGJsb2NrIGNvbnRleHQuICBUaGlzIHNob3VsZCByZWFsbHkg bmV2ZXIgaGFwcGVuLgorICAgIChmdW5jYWxsLWludGVyYWN0aXZlbHkgIyd4cmVmLWZpbmQtZGVm aW5pdGlvbnMgYXJncykpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLW1heWJlLXJ1bi1jb21tYW5k LWluLWNvZGUtYmxvY2sgKCkKKyAgIkhlbHBlciBmdW5jdGlvbiB0byB3cmFwIGEgY29tbWFuZCBm b3IgYSBjb2RlLWJsb2NrIGNvbnRleHQuCitJZiBgdGhpcy1jb21tYW5kJyBpcyBhIG1lbWJlciBv ZiBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb21tYW5kcycgYW5kCitwb2ludCBpcyB3aXRoaW4g YSBjb2RlIGJsb2NrIHdpdGggYW4gYXZhaWxhYmxlIG1vZGUsIGl0IHdpbGwgcnVuIGluIHRoYXQK K2NvZGUgYmxvY2sncyBtb2RlIGluIGEgYnVmZmVyIG5hcnJvd2VkIHRvIGl0cyBjb250ZW50LiAg T3RoZXJ3aXNlLCB0aGUKK2NvbW1hbmQgd2lsbCBydW4gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBt YXJrZG93bi10cy1tb2RlJyBidWZmZXIuIgorICAod2hlbiAobWVtcSB0aGlzLWNvbW1hbmQgbWFy a2Rvd24tdHMtY29kZS1ibG9jay1jb21tYW5kcykKKyAgICAod2hlbi1sZXQqICgoY29tbWFuZCB0 aGlzLWNvbW1hbmQpCisgICAgICAgICAgICAgICAgKGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZS1hdCkpCisgICAgICAgICAgICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUp KSkKKyAgICAgIChzZXRxIHRoaXMtY29tbWFuZCAobGFtYmRhICgmcmVzdCBhcmdzKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGludGVyYWN0aXZlKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGFwcGx5ICMnbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFyZ3MpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1j b2RlLWJsb2NrIChibG9jay1tb2RlIGNvbW1hbmQgJnJlc3QgYXJncykKKyAgIlJ1biBDT01NQU5E IGluIEJMT0NLLU1PREUuCitBUkdTIGFyZSBjYXB0dXJlZCBieSBgbWFya2Rvd24tdHMtLW1heWJl LXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2snLiIKKyAgKHdoZW4tbGV0KiAoKGJlZyAoZ2V0LWNo YXItcHJvcGVydHkgKHBvaW50KSAnbWFya2Rvd24tdHMtY29kZS1iZWctbWFya2VyKSkKKyAgICAg ICAgICAgICAgKGVuZCAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnbWFya2Rvd24tdHMtY29k ZS1lbmQtbWFya2VyKSkpCisgICAgKGxldCAoKHJlZ2lvbi1iZWcgKHVzZS1yZWdpb24tYmVnaW5u aW5nKSkKKyAgICAgICAgICAocmVnaW9uLWVuZCAodXNlLXJlZ2lvbi1lbmQpKSkKKyAgICAgIDs7 IFVzZSBhIG5vbi1jbG9uZWQgaW5kaXJlY3QgYnVmZmVyIHRvIGF2b2lkIGNoYW5naW5nIG1ham9y IG1vZGUKKyAgICAgIDs7IGluIHRoZSBwYXJlbnQgYnVmZmVyICh3aGljaCB3b3VsZCB0cmFzaCBs b2NhbCB2YXJpYWJsZXMpLiAgVGhpcworICAgICAgOzsgYWxzbyBlbnN1cmVzIHRyZWVzaXQgc2V0 dXAgaXMgbm90IGNvcGllZCBvdmVyIG9yIGl0IGdldHMKKyAgICAgIDs7IGNvbmZ1c2VkLgorICAg ICAgKGxldCAoKGluZGlyZWN0LWJ1ZmZlciAobWFrZS1pbmRpcmVjdC1idWZmZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUgKGJ1ZmZlci1uYW1lKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAnaW5oaWJpdC1idWZmZXItaG9va3MpKQor ICAgICAgICAgICAgKGluZGlyZWN0LWRlYWN0aXZhdGUtbWFyaykKKyAgICAgICAgICAgIChwb2lu dC1kZWx0YSAwKSkKKyAgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIKKyAgICAgICAgICAgICAgOzsgQ29weSB0aGUg YmFzZSBidWZmZXIncyByZWdpb24sIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgICAgICAgKHdo ZW4gKGFuZCByZWdpb24tYmVnIHJlZ2lvbi1lbmQpCisgICAgICAgICAgICAgICAgKHNldC1tYXJr IChpZiAoPCAocG9pbnQpIHJlZ2lvbi1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpb24tZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLWJlZykpCisg ICAgICAgICAgICAgICAgKGFjdGl2YXRlLW1hcmspKQorICAgICAgICAgICAgICAoZGVsYXktbW9k ZS1ob29rcworICAgICAgICAgICAgICAgIChsZXQgKChtYXJrZG93bi10cy0tc2V0LXVwLWlubGlu ZQorICAgICAgICAgICAgICAgICAgICAgICAoZXEgYmxvY2stbW9kZSAnbWFya2Rvd24tdHMtbW9k ZSkpKQorICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgYmxvY2stbW9kZSkpCisgICAgICAgICAg ICAgICAgKHJlYWQtb25seS1tb2RlIC0xKQorICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVn aW9uIGJlZyBlbmQpCisgICAgICAgICAgICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpCisgICAg ICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlciAocG9pbnQtbWFya2VyKSkpCisgICAgICAg ICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAoKG1lbXEgY29tbWFuZCBt YXJrZG93bi10cy1jb2RlLWJsb2NrLXRoaW5nLWNvbW1hbmRzKQorICAgICAgICAgICAgICAgICAg ICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kIHRoaW5nKSkp CisgICAgICAgICAgICAgICAgICAgICAoKG1lbXEgY29tbWFuZCBtYXJrZG93bi10cy1jb2RlLWJs b2NrLXJlZ2lvbi1jb21tYW5kcykKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIHJl Z2lvbi1iZWcgcmVnaW9uLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAjJ2Z1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnaW9uLWJlZyByZWdpb24tZW5kIGFyZ3MpKSkKKyAgICAgICAgICAgICAgICAgICAgICgo emVyb3AgKGNkciAoZnVuYy1hcml0eSBjb21tYW5kKSkpCisgICAgICAgICAgICAgICAgICAgICAg KGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICh0 CisgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kKSkpCisg ICAgICAgICAgICAgICAgICAgIChzZXRxIGluZGlyZWN0LWRlYWN0aXZhdGUtbWFyayBkZWFjdGl2 YXRlLW1hcmspCisgICAgICAgICAgICAgICAgICAgIDs7IFRoZSBoZXVyaXN0aWMgb2Ygd2hlbiB0 byBtb3ZlIHBvaW50LgorICAgICAgICAgICAgICAgICAgICA7OyBkZWFjdGl2YXRlLW1hcmsgcChk KT1wbShkKSBkZWx0YQorICAgICAgICAgICAgICAgICAgICA7OyBuaWwgICAgICAgICAgICAgbm8g ICAgICAgICAwICAgOyBjbGFzcyBBCisgICAgICAgICAgICAgICAgICAgIDs7IG5pbCAgICAgICAg ICAgICB5ZXMgICAgICAgIHllcyA7IGNsYXNzIEIKKyAgICAgICAgICAgICAgICAgICAgOzsgdCAg ICAgICAgICAgICAgIG5vICAgICAgICAgMCAgIDsgY2xhc3MgQworICAgICAgICAgICAgICAgICAg ICA7OyB0ICAgICAgICAgICAgICAgeWVzICAgICAgICB5ZXMgOyBjbGFzcyBECisgICAgICAgICAg ICAgICAgICAgIDs7IEE6IG5pbAorICAgICAgICAgICAgICAgICAgICA7OyBCOiBpbmRlbnQtZm9y LXRhYi1jb21tYW5kCisgICAgICAgICAgICAgICAgICAgIDs7IEM6IGNvbW1lbnQtb3ItdW5jb21t ZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAgICA7OyBEOiBjb21tZW50LWR3aW0gbmV3bGlu ZSBlbGVjdHJpYy1uZXdsaW5lLWFuZC1tYXliZS1pbmRlbnQKKyAgICAgICAgICAgICAgICAgICAg OzsgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAg ICAgICAgIChzZXRxIHBvaW50LWRlbHRhICgtIChwb2ludCkgcG9pbnQpKQorICAgICAgICAgICAg ICAgICAgKHdoZW4gKG5vdCAoZXEgcG9pbnQtZGVsdGEgKC0gKHBvaW50LW1hcmtlcikgcG9pbnQt bWFya2VyKSkpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIHBvaW50LWRlbHRhIDApKSkpKQor ICAgICAgICAgIChraWxsLWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIpCisgICAgICAgICAgOzsgUHJv cGFnYXRlIG1hcmsgZGVhY3RpdmF0aW9uIHRvIHRoZSBiYXNlIGJ1ZmZlci4KKyAgICAgICAgICAo c2V0cSBkZWFjdGl2YXRlLW1hcmsgaW5kaXJlY3QtZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAg IDs7IE1vdmUgYmFzZSBidWZmZXIgcG9pbnQgaWYgaXQgbW92ZWQgaW4gdGhlIGluZGlyZWN0IGJ1 ZmZlci4KKyAgICAgICAgICAoZ290by1jaGFyICgrIChwb2ludCkgcG9pbnQtZGVsdGEpKQorICAg ICAgICAgIDs7IFJlY29yZCB0aGUgb3JpZ2luYWwgY29tbWFuZC4KKyAgICAgICAgICAoc2V0cSB0 aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAgICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0 aW5nIHJlZ2lvbiBpcyByZWZvbnRpZmllZC4KKyAgICAgICAgICAoZm9udC1sb2NrLWZsdXNoIGJl ZyBlbmQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1p dGVyIChwb3MgJm9wdGlvbmFsIGJhY2t3YXJkKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZp b3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3Rh cnRpbmcgYXQgUE9TLgorU2VhcmNoIGJhY2t3YXJkIGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgor ICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCAodHJlZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24p CisgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG5vZGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZz0gKHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRl ciIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZmluZC1uZXh0LWNvZGUtYmxvY2stZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgYmFja3dh cmQgcmVtYWluKQorICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Js b2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBw b2ludCcsIGlmIFBPUyBpcyBuaWwuCitTZWFyY2ggYmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9u LW5pbC4KK0lmIFJFTUFJTiBpcyBub24tbmlsLCBtb3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9m IHRoZSBjdXJyZW50IGNvZGUKK2Jsb2NrLCBpZiBpbiBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBv cyAocG9pbnQpKSkKKyAgKGFuZC1sZXQqICgobm9kZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1i bG9jay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkpCisgICAgKGxldCAoKGluLWJsb2NrIChtYXJr ZG93bi10cy1jb2RlLWJsb2NrLWF0LXAgcG9zKSkpCisgICAgICAoY29uZAorICAgICAgICgoYW5k IHJlbWFpbiBpbi1ibG9jaykKKyAgICAgICAgbm9kZSkKKyAgICAgICAocmVtYWluCisgICAgICAg IG5pbCkKKyAgICAgICAodAorICAgICAgICAod2hpbGUgKGFuZCBub2RlCisgICAgICAgICAgICAg ICAgICAgIDs7IElmIGJhY2t3YXJkLCBza2lwIHRoZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAg ICAgICAgICAgICAgOzsgc3RhcnRpbmcgZGVsaW1pdGVyLgorICAgICAgICAgICAgICAgICAgICAo b3IgKGFuZCBiYWNrd2FyZCBpbi1ibG9jayAodHJlZXNpdC1ub2RlLW5leHQtc2libGluZyBub2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxp bmcgbm9kZSkpKSkKKyAgICAgICAgICAoc2V0cSBpbi1ibG9jayAobWFya2Rvd24tdHMtY29kZS1i bG9jay1hdC1wIHBvcykpCisgICAgICAgICAgKHNldHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAg ICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAg ICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2Rl IChtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2NrLWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkK KyAgICAgICAgbm9kZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29k ZS1ibG9jayAoYXJnKQorICAiTW92ZSBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29k ZSBibG9jay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhl IGN1cnJlbnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCog KChub2RlCisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2Nr LWRlbGltaXRlciBuaWwgbmlsIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1z dGFydCBub2RlKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS10by1wcmV2aW91cy1jb2Rl LWJsb2NrIChhcmcpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMg Y29kZSBibG9jay4KK1dpdGggdGhlIHByZWZpeCBhcmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4g dGhlIGN1cnJlbnQgY29kZSBibG9jay4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxl dCogKChub2RlCisgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJs b2NrLWRlbGltaXRlciBuaWwgJ2JhY2t3YXJkIGFyZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVz aXQtbm9kZS1zdGFydCBub2RlKSkpKQorCis7OzsgSGVscGVyczoKKworKGRlZnVuIG1hcmtkb3du LXRzLS1vdXRsaW5lLWludmlzaWJsZS1wIChwb3MpCisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1Mg aXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJlZ2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEg KG92KSAoZXEgKG92ZXJsYXktZ2V0IG92ICdpbnZpc2libGUpICdvdXRsaW5lKSkKKyAgICAgICAg ICAgKG92ZXJsYXlzLWF0IHBvcykpKQogCiAoZGVmdW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRp bmdzICgpCiAgICJSZXR1cm4gcmFuZ2Ugc2V0dGluZ3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4i CiAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCiAgICA6ZW1iZWQgJ21hcmtkb3duLWlubGluZQogICAg Omhvc3QgJ21hcmtkb3duCi0gICA6cmFuZ2UtZm4gIyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUt Y2hpbGRyZW4KICAgICcoKGlubGluZSkgQG1hcmtkb3duLWlubGluZSkKIAotICAgOmVtYmVkICMn bWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1sYW5ndWFnZQorICAgOmVtYmVkICMnbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3VhZ2UKICAgIDpob3N0ICdtYXJrZG93bgogICAg OmxvY2FsIHQKICAgICcoKGZlbmNlZF9jb2RlX2Jsb2NrIChpbmZvX3N0cmluZyAobGFuZ3VhZ2Up IEBsYW5ndWFnZSkKICAgICAgICAgICAgICAgICAgICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQp IEBjb250ZW50KSkpKQogCisoZGVmdW4gbWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5 cyAoKQorICAiUmVtb3ZlIGFsbCBpbmxpbmUgaW1hZ2Ugb3ZlcmxheXMgZnJvbSB0aGUgY3VycmVu dCBidWZmZXIuIgorICAoZG9saXN0IChvdiAob3ZlcmxheXMtaW4gKHBvaW50LW1pbikgKHBvaW50 LW1heCkpKQorICAgICh3aGVuIChvdmVybGF5LWdldCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisg ICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGlu ZS12aWV3LWNoYW5nZSAoKQorICAiVXBkYXRlIGltYWdlIG92ZXJsYXlzIGFmdGVyIG91dGxpbmUg Zm9sZC91bmZvbGQuCitSZW1vdmVzIGltYWdlIG92ZXJsYXlzIGluIGZvbGRlZCByZWdpb25zIGFu ZCB0cmlnZ2VycworcmVmb250aWZpY2F0aW9uIHNvIHRoYXQgaW1hZ2VzIGluIHVuZm9sZGVkIHJl Z2lvbnMgYXJlIHJlY3JlYXRlZC4iCisgICh3aGVuIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMK KyAgICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAgICAoZm9udC1sb2Nr LWZsdXNoKSkpCisKIChkZWZ1biBtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwICh2YWx1ZSkK ICAgIlNldCBoaWRpbmcgb2YgTWFya2Rvd24gbWFya3VwIGRlbGltaXRlcnMgaW4gdGhlIGN1cnJl bnQgYnVmZmVyLgogVkFMVUUgbm9uLW5pbCBoaWRlcyBtYXJrdXAsIG5pbCBzaG93cyBpdC4iCiAg IChpZiB2YWx1ZQogICAgICAgKGFkZC10by1pbnZpc2liaWxpdHktc3BlYyAnbWFya2Rvd24tdHMt LW1hcmt1cCkKICAgICAocmVtb3ZlLWZyb20taW52aXNpYmlsaXR5LXNwZWMgJ21hcmtkb3duLXRz LS1tYXJrdXApKQorICAod2hlbiBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzCisgICAgKG1hcmtk b3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMpKQogICAoZm9udC1sb2NrLWZsdXNoKSkKIAog KGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1oaWRlLW1hcmt1cCAoKQpAQCAtMzU2LDEyMiArMjc1 OCw1MzAgQEAgbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwCiAgIChzZXRxIG1hcmtkb3du LXRzLWhpZGUtbWFya3VwIChub3QgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApKQogICAobWFya2Rv d24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93bi10cy1oaWRlLW1hcmt1cCkpCiAKKyhkZWZ1 biBtYXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFnZXMgKHZhbHVlKQorICAiU2V0IGRpc3BsYXkg b2YgaW5saW5lIGltYWdlcyBpbiB0aGUgY3VycmVudCBidWZmZXIuCitWQUxVRSBub24tbmlsIGRp c3BsYXlzIGltYWdlcywgbmlsIHJlbW92ZXMgdGhlbS4iCisgIChpZiB2YWx1ZQorICAgICAgKHRy ZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1mZWF0dXJlcyAnKGltYWdlLXByZXZpZXcpKQorICAg ICh0cmVlc2l0LWZvbnQtbG9jay1yZWNvbXB1dGUtZmVhdHVyZXMgbmlsICcoaW1hZ2UtcHJldmll dykpKQorICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cykKKyAgKGZvbnQtbG9j ay1mbHVzaCkpCiAKLTs7OyBNYWpvciBtb2RlCi0KLShkZWZ1biBtYXJrZG93bi10cy1zZXR1cCAo KQotICAiU2V0dXAgdHJlZXNpdCBmb3IgYG1hcmtkb3duLXRzLW1vZGUnLiIKLSAgKG1ha2UtbG9j YWwtdmFyaWFibGUgJ21hcmtkb3duLXRzLWhpZGUtbWFya3VwKQorKGRlZnVuIG1hcmtkb3duLXRz LXRvZ2dsZS1pbmxpbmUtaW1hZ2VzICgpCisgICJUb2dnbGUgZGlzcGxheSBvZiBpbmxpbmUgaW1h Z2VzIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHNldHEgbWFy a2Rvd24tdHMtaW5saW5lLWltYWdlcyAobm90IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpKQor ICAobWFya2Rvd24tdHMtLXNldC1pbmxpbmUtaW1hZ2VzIG1hcmtkb3duLXRzLWlubGluZS1pbWFn ZXMpCisgIChtZXNzYWdlICJJbmxpbmUgaW1hZ2VzICVzIiAoaWYgbWFya2Rvd24tdHMtaW5saW5l LWltYWdlcyAiZW5hYmxlZCIgImRpc2FibGVkIikpKQorCis7OzsgRW1waGFzaXM6CisKKyhkZWZ2 YXIgbWFya2Rvd24tdHMtZW1waGFzaXMtYWxpc3QKKyAgJygoP2IgLiAiKioiKQorICAgICg/QiAu ICJfXyIpCisgICAgKD9pIC4gIioiKQorICAgICg/SSAuICJfIikKKyAgICAoP3MgLiAifn4iKQor ICAgICg/YyAuICJgIikKKyAgICAoP2EgLiAiKioqIikpCisgICJBbGlzdCBvZiBlbXBoYXNpcyBt YXJrZXJzIGZvciBgbWFya2Rvd24tdHMtZW1waGFzaXplJy4KK0VhY2ggZW50cnkgaXMgKEtFWSAu IE1BUktFUikgd2hlcmUgS0VZIGlzIGEgY2hhcmFjdGVyIChub3QgYSBzdHJpbmcpIGFuZAorTUFS S0VSIGlzIHRoZSBNYXJrZG93biBlbXBoYXNpemVkIHRleHQgcHJlZml4L3N1ZmZpeC4iKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWVtcGhhc2lzLW5vZGUtYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0 aGUgZW1waGFzaXMgbm9kZSBhdCBwb2ludCwgb3IgbmlsLgorRmluZHMgdGhlIGlubmVybW9zdCBg ZW1waGFzaXMnLCBgc3Ryb25nX2VtcGhhc2lzJywKK2BzdHJpa2V0aHJvdWdoJywgb3IgYGNvZGVf c3Bhbicgbm9kZS4iCisgICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQgKHBvaW50 KSAnbWFya2Rvd24taW5saW5lKSkpCisgICAgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgIG5v ZGUgKGxhbWJkYSAobikKKyAgICAgICAgICAgIChtZW1iZXIgKHRyZWVzaXQtbm9kZS10eXBlIG4p CisgICAgICAgICAgICAgICAgICAgICcoImVtcGhhc2lzIiAic3Ryb25nX2VtcGhhc2lzIgorICAg ICAgICAgICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIiAiY29kZV9zcGFuIikpKSkpKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtcmVtb3ZlLWVtcGhhc2lzICgpCisgICJSZW1vdmUgZW1waGFzaXMg YXJvdW5kIHBvaW50IG9yIHJlZ2lvbi4KK1dpdGggYW4gYWN0aXZlIHJlZ2lvbiwgc3RyaXAgdGhl IG91dGVybW9zdCBlbXBoYXNpcyBtYXJrZXJzIGZyb20KK3RoZSBzZWxlY3RlZCB0ZXh0LiAgV2l0 aG91dCBhIHJlZ2lvbiwgZmluZCB0aGUgZW1waGFzaXMgbm9kZSBhdAorcG9pbnQgdXNpbmcgdHJl ZS1zaXR0ZXIgYW5kIHJlbW92ZSBpdHMgbWFya2Vycy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlm ICh1c2UtcmVnaW9uLXApCisgICAgICAobGV0KiAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisg ICAgICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpCisgICAgICAgICAgICAgKHRleHQgKGJ1ZmZl ci1zdWJzdHJpbmcgYmVnIGVuZCkpCisgICAgICAgICAgICAgKHN0cmlwcGVkIG5pbCkpCisgICAg ICAgIChjbC1sb29wIGZvciAoX2tleSAuIG0pIGluIChzb3J0IChjb3B5LXNlcXVlbmNlIG1hcmtk b3duLXRzLWVtcGhhc2lzLWFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChhIGIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD4gKGxlbmd0aCAoY2RyIGEpKSAobGVuZ3RoIChjZHIgYikpKSkpCisgICAgICAg ICAgICAgICAgIGZvciByZSA9IChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBtKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXChcXCg/Oi5cXHxcblxcKSpcXCkiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1xdW90ZSBtKSAiXFwnIikKKyAg ICAgICAgICAgICAgICAgd2hlbiAoc3RyaW5nLW1hdGNoIHJlIHRleHQpCisgICAgICAgICAgICAg ICAgIGRvIChzZXRxIHN0cmlwcGVkIChtYXRjaC1zdHJpbmcgMSB0ZXh0KSkKKyAgICAgICAgICAg ICAgICAgYW5kIHJldHVybiBuaWwpCisgICAgICAgICh3aGVuIHN0cmlwcGVkCisgICAgICAgICAg KGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkKKyAgICAgICAgICAoaW5zZXJ0IHN0cmlwcGVkKSkpCisg ICAgOzsgRmluZCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG5vZGUgYXQgcG9pbnQuCisgICAgKHdo ZW4tbGV0KiAoKGlubmVyIChtYXJrZG93bi10cy0tZW1waGFzaXMtbm9kZS1hdC1wb2ludCkpCisg ICAgICAgICAgICAgICAgKG5vZGUgKGxldCAoKG4gaW5uZXIpKQorICAgICAgICAgICAgICAgICAg ICAgICAgKHdoaWxlIChsZXQgKChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbikpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCBwYXJlbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbWJlciAodHJlZXNpdC1ub2Rl LXR5cGUgcGFyZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICcoImVtcGhhc2lzIiAic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91Z2giICJj b2RlX3NwYW4iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG4g cGFyZW50KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgbikpCisgICAgICAgICAgICAgICAg KHN0YXJ0ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAgICAgKGVuZCAo dHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgICAgICAgICAodGV4dCAodHJlZXNpdC1u b2RlLXRleHQgbm9kZSB0KSkKKyAgICAgICAgICAgICAgICAodHlwZSAodHJlZXNpdC1ub2RlLXR5 cGUgbm9kZSkpCisgICAgICAgICAgICAgICAgKG1sZW4gKHBjYXNlIHR5cGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICgic3Ryb25nX2VtcGhhc2lzIgorICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAoc3RyaW5nLXByZWZpeC1wICJfIiB0ZXh0KSAyIDIpKQorICAgICAgICAgICAgICAgICAg ICAgICAgKCJlbXBoYXNpcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1w cmVmaXgtcCAiXyIgdGV4dCkgMSAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgic3RyaWtl dGhyb3VnaCIgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICgiY29kZV9zcGFuIiAxKSkpCisg ICAgICAgICAgICAgICAgKGlubmVyLXRleHQgKHN1YnN0cmluZyB0ZXh0IG1sZW4gKC0gKGxlbmd0 aCB0ZXh0KSBtbGVuKSkpKQorICAgICAgKGxldCAoKG9mZnNldCAoLSAocG9pbnQpIHN0YXJ0IG1s ZW4pKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gc3RhcnQgZW5kKQorICAgICAgICAoZ290by1j aGFyIHN0YXJ0KQorICAgICAgICAoaW5zZXJ0IGlubmVyLXRleHQpCisgICAgICAgIChnb3RvLWNo YXIgKCsgc3RhcnQgKG1heCAwIG9mZnNldCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWVt cGhhc2l6ZSAoJm9wdGlvbmFsIGNoYXIpCisgICJJbnNlcnQgb3IgY2hhbmdlIGVtcGhhc2lzIG9u IHRleHQuCitJZiB0aGVyZSBpcyBhbiBhY3RpdmUgcmVnaW9uLCB3cmFwIGl0IHdpdGggZW1waGFz aXMgbWFya2Vycy4KK0lmIHRoZXJlIGlzIG5vIHJlZ2lvbiwgaW5zZXJ0IG1hcmtlciBwYWlycyBh bmQgcGxhY2UgcG9pbnQgYmV0d2VlbgordGhlbS4gIENIQVIgc2VsZWN0cyB0aGUgZW1waGFzaXMg dHlwZToKKworICBiICAgKipib2xkKiogICAgICAgQiAgX19ib2xkX18KKyAgaSAgICppdGFsaWMq ICAgICAgIEkgIF9pdGFsaWNfCisgIGEgICAqKipib2xkK2l0YWxpYyoqKgorICBzICAgfn5zdHJp a2V0aHJvdWdofn4KKyAgYyAgIGBjb2RlYAorICBTUEMgcmVtb3ZlIGVtcGhhc2lzIGF0IHBvaW50 IG9yIHJlZ2lvbiIKKyAgKGludGVyYWN0aXZlCisgICAiY0VtcGhhc2lzIFtiXW9sZCBbQl1vbGRf IFtpXXRhbGljIFtJXXRhbGljXyBbYV1sbCBbc110cmlrZSBbY11vZGUgU1BDIHJlbW92ZToiKQor ICAoaWYgKGVxIGNoYXIgP1xzKQorICAgICAgKG1hcmtkb3duLXRzLXJlbW92ZS1lbXBoYXNpcykK KyAgICAoaWYtbGV0KiAoKG1hcmtlciAoY2RyIChhc3NxIGNoYXIgbWFya2Rvd24tdHMtZW1waGFz aXMtYWxpc3QpKSkpCisgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgICAgICAgKGxl dCAoKGJlZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgICAgICAgICAoZW5kIChjb3B5 LW1hcmtlciAocmVnaW9uLWVuZCkpKSkKKyAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciBlbmQpCisgICAgICAgICAgICAgICAgKGluc2VydCBt YXJrZXIpCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAgICAgICAgICAg KGluc2VydCBtYXJrZXIpKSkKKyAgICAgICAgICAoaWYtbGV0KiAoKGJvdW5kcyAoYm91bmRzLW9m LXRoaW5nLWF0LXBvaW50ICd3b3JkKSkpCisgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKGNkciBib3VuZHMpKQorICAgICAgICAgICAgICAg IChpbnNlcnQgbWFya2VyKQorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKGNhciBib3VuZHMp KQorICAgICAgICAgICAgICAgIChpbnNlcnQgbWFya2VyKSkKKyAgICAgICAgICAgIChpbnNlcnQg bWFya2VyIG1hcmtlcikKKyAgICAgICAgICAgIChiYWNrd2FyZC1jaGFyIChsZW5ndGggbWFya2Vy KSkpKQorICAgICAgKHVzZXItZXJyb3IgIk5vIHN1Y2ggZW1waGFzaXMgbWFya2VyOiAlYyIgY2hh cikpKSkKKworOzs7IEJsb2NrIHN0cnVjdHVyZToKKworKGRlZnVuIG1hcmtkb3duLXRzLWluc2Vy dC1zdHJ1Y3R1cmUgKCZvcHRpb25hbCBjaGFyKQorICAiSW5zZXJ0IGEgYmxvY2sgc3RydWN0dXJl LgorSWYgdGhlcmUgaXMgYW4gYWN0aXZlIHJlZ2lvbiwgd3JhcCBpdC4gIE90aGVyd2lzZSwgaW5z ZXJ0IGFuIGVtcHR5CitibG9jayBhbmQgcGxhY2UgcG9pbnQgaW5zaWRlLiAgQ0hBUiBzZWxlY3Rz IHRoZSBzdHJ1Y3R1cmUgdHlwZToKKworICBjICBmZW5jZWQgY29kZSBibG9jayAoYGBgKQorICB0 ICB0aWxkZSBmZW5jZWQgY29kZSBibG9jayAofn5+KQorICBxICBibG9jayBxdW90ZSAoPiApCisg IGQgIGhvcml6b250YWwgZGl2aWRlci9ydWxlICgtLS0pIgorICAoaW50ZXJhY3RpdmUgImNTdHJ1 Y3R1cmUgW2Ndb2RlIGJsb2NrIFt0XWlsZGUgY29kZSBibG9jayBbcV11b3RlIFtkXWl2aWRlcjoi KQorICAocGNhc2UgY2hhcgorICAgICg/YyAobWFya2Rvd24tdHMtLWluc2VydC1jb2RlLWJsb2Nr ID9gKSkKKyAgICAoP3QgKG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9jayA/fikpCisgICAg KD9xIChtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlKSkKKyAgICAoP2QgKG1hcmtkb3du LXRzLS1pbnNlcnQtZGl2aWRlcikpCisgICAgKF8gKHVzZXItZXJyb3IgIk5vIHN1Y2ggc3RydWN0 dXJlOiAlYyIgY2hhcikpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1ibG9j ayAoY2hhciAmb3B0aW9uYWwgbGFuZ3VhZ2UpCisgICJJbnNlcnQgYSBmZW5jZWQgY29kZSBibG9j ayB1c2luZyBhIENIQVIgc2VxdWVuY2UuCitDSEFSIHNob3VsZCBiZSBvbmUgb2YgYSBiYWNrdGlj ayBvciBhIHRpbGRlLgorTEFOR1VBR0UgaXMgYSB3aGl0ZXNwYWNlIGZyZWUgbGFuZ3VhZ2Ugc3Ry aW5nLiIKKyAgKHNldHEgbGFuZ3VhZ2UKKyAgICAgICAgKG9yIGxhbmd1YWdlCisgICAgICAgICAg ICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCisgICAgICAgICAgICAgIltbOmJsYW5rOl1dIiAi IgorICAgICAgICAgICAgIChsZXQgKChjb21wbGV0aW9uLWlnbm9yZS1jYXNlIG5pbCkKKyAgICAg ICAgICAgICAgICAgICAoY2FuZGlkYXRlcworICAgICAgICAgICAgICAgICAgICAoc2VxLW1hcAor ICAgICAgICAgICAgICAgICAgICAgIydzeW1ib2wtbmFtZQorICAgICAgICAgICAgICAgICAgICAg KHNlcS11bmlxCisgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobWFwY2FyICMnY2FyIG1h cmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXBjYXIgIydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10 cy1jb2RlLWJsb2NrLW1vZGVzKSkpKSkpCisgICAgICAgICAgICAgICAoY29tcGxldGluZy1yZWFk CisgICAgICAgICAgICAgICAgIkNvZGUgYmxvY2sgbGFuZ3VhZ2U6ICIKKyAgICAgICAgICAgICAg ICBjYW5kaWRhdGVzCisgICAgICAgICAgICAgICAgbmlsCisgICAgICAgICAgICAgICAgJ2NvbmZp cm0gOyBQcm9tcHQgaWYgdGhlIGxhbmd1YWdlIGlzIG5vdCBvbiBvdXIgbGlzdC4KKyAgICAgICAg ICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtbGFuZ3VhZ2UtaGlzdG9y eSkpKSkpCisgIChsZXQgKChmZW5jZS1zdHJpbmcgKG1ha2Utc3RyaW5nIDMgY2hhcikpKQorICAg IChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5n KSkKKyAgICAgICAgICAgICAgKGVuZCAocmVnaW9uLWVuZCkpKQorICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgorICAgICAgICAgICAgKGdvdG8tY2hhciBlbmQpCisgICAgICAgICAgICAodW5sZXNz IChib2xwKSAoaW5zZXJ0ICJcbiIpKQorICAgICAgICAgICAgKGluc2VydCBmZW5jZS1zdHJpbmcg IlxuIikKKyAgICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgICAgICAgKGluc2VydCBm ZW5jZS1zdHJpbmcgbGFuZ3VhZ2UgIlxuIikpKQorICAgICAgKGluc2VydCBmZW5jZS1zdHJpbmcg bGFuZ3VhZ2UgIlxuXG4iIGZlbmNlLXN0cmluZykKKyAgICAgIChmb3J3YXJkLWxpbmUgLTEpKSkp CisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5zZXJ0LWJsb2NrLXF1b3RlICgpCisgICJJbnNlcnQg YSBibG9jayBxdW90ZS4iCisgIChpZiAodXNlLXJlZ2lvbi1wKQorICAgICAgKGxldCAoKGJlZyAo cmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgICAgICAoZW5kIChjb3B5LW1hcmtlciAocmVnaW9u LWVuZCkpKSkKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciBi ZWcpCisgICAgICAgICAgKHdoaWxlICg8IChwb2ludCkgZW5kKQorICAgICAgICAgICAgKGluc2Vy dCAiPiAiKQorICAgICAgICAgICAgKGZvcndhcmQtbGluZSAxKSkpKQorICAgIChpbnNlcnQgIj4g IikpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyICgpCisgICJJbnNlcnQg YSBob3Jpem9udGFsIHJ1bGUuIgorICAodW5sZXNzIChib2xwKSAoaW5zZXJ0ICJcbiIpKQorICAo aW5zZXJ0ICJcbi0tLVxuXG4iKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1hcHBseS1lbGxpcHNp cyAoKQorICAiQXBwbHkgYG1hcmtkb3duLXRzLWVsbGlwc2lzJyB0byB0aGUgY3VycmVudCBidWZm ZXIncyBkaXNwbGF5IHRhYmxlLiIKKyAgKGlmIChhbmQgKHN0cmluZ3AgbWFya2Rvd24tdHMtZWxs aXBzaXMpCisgICAgICAgICAgIChub3QgKHN0cmluZy1lbXB0eS1wIG1hcmtkb3duLXRzLWVsbGlw c2lzKSkpCisgICAgICAobGV0ICgodGFibGUgKG9yIGJ1ZmZlci1kaXNwbGF5LXRhYmxlCisgICAg ICAgICAgICAgICAgICAgICAgIChtYWtlLWRpc3BsYXktdGFibGUpKSkpCisgICAgICAgIChzZXQt ZGlzcGxheS10YWJsZS1zbG90CisgICAgICAgICB0YWJsZSA0CisgICAgICAgICAodmNvbmNhdCAo bWFwY2FyIChsYW1iZGEgKGMpIChtYWtlLWdseXBoLWNvZGUgYyAnc2hhZG93KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtZWxsaXBzaXMpKSkKKyAgICAgICAgKHNldHEg YnVmZmVyLWRpc3BsYXktdGFibGUgdGFibGUpKQorICAgICh3aGVuIGJ1ZmZlci1kaXNwbGF5LXRh YmxlCisgICAgICAoc2V0LWRpc3BsYXktdGFibGUtc2xvdCBidWZmZXItZGlzcGxheS10YWJsZSA0 IG5pbCkpKSkKKworOzs7IE1ham9yIG1vZGU6CisKKyhkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5l LWN5Y2xlICgpCisgICJDeWNsZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkaW5nIGF0IHBvaW50Lgor T24gYSBoZWFkaW5nLCBjYWxsIGBvdXRsaW5lLWN5Y2xlJy4gIE90aGVyd2lzZSBkbyBub3RoaW5n LiIKKyAgKGludGVyYWN0aXZlKQorICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisgICAg KG91dGxpbmUtY3ljbGUpKSkKKworKGRlZnZhci1rZXltYXAgbWFya2Rvd24tdHMtbW9kZS1tYXAK KyAgOmRvYyAiS2V5bWFwIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgorICAiTS08bGVmdD4iICAg ICMnbWFya2Rvd24tdHMtcHJvbW90ZQorICAiTS08cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtZGVt b3RlCisgICJNLTx1cD4iICAgICAgIydtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAKKyAgIk0t PGRvd24+IiAgICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duCisgICJDLWMgQy1uIiAg ICAgIydvdXRsaW5lLW5leHQtaGVhZGluZworICAiQy1jIEMtcCIgICAgICMnb3V0bGluZS1wcmV2 aW91cy1oZWFkaW5nCisgICJDLWMgQy11IiAgICAgIydvdXRsaW5lLXVwLWhlYWRpbmcKKyAgIkMt YyBDLWYiICAgICAjJ291dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsCisgICJDLWMgQy1iIiAgICAg IydvdXRsaW5lLWJhY2t3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBDLXggQy1mIiAjJ21hcmtkb3du LXRzLWVtcGhhc2l6ZQorICAiQy1jIEMteCBDLW0iICMnbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUt bWFya3VwCisgICJDLWMgQy14IEMtdiIgIydtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdl cworICAiQy1jIEMtYyIgICAgICMnbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94CisgICJDLWMg Qy1yIiAgICAgIydtYXJrZG93bi10cy1yZW51bWJlci1saXN0CisgICJDLWMgQy0sIiAgICAgIydt YXJrZG93bi10cy1pbnNlcnQtc3RydWN0dXJlCisgICJDLWMgQy12IG4iICAgIydtYXJrZG93bi10 cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jaworICAiQy1jIEMtdiBwIiAgICMnbWFya2Rvd24tdHMt bW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrCisgICJSRVQiICAgICAgICAgIydtYXJrZG93bi10 cy1uZXdsaW5lCisgICJNLVJFVCIgICAgICAgIydtYXJrZG93bi10cy1pbnNlcnQtbGlzdC1pdGVt CisgICJUQUIiICAgICAgICAgIydtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlKQorCisoZGVmdmFy LWtleW1hcCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBm b3IgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGlu IGBtYXJrZG93bi10cy1tb2RlLW1hcCcgdG8gc3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1h bmRzIGluIGEgY29kZS1ibG9jayBjb250ZXh0LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2Rl LW1hcAorICAiTS0uIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5k LWRlZmluaXRpb25zCisgICJUQUIiICAgICAgICAgIydpbmRlbnQtZm9yLXRhYi1jb21tYW5kCisg ICJSRVQiICAgICAgICAgIydtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJDLWoi ICAgICAgICAgIydtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJNLVJFVCIgICAg ICAgIydtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJNLXEiICAgICAgICAgIydt YXJrZG93bi10cy0tY29kZS1ibG9jay1maWxsLXBhcmFncmFwaCkKKworKGVhc3ktbWVudS1kZWZp bmUgbWFya2Rvd24tdHMtbW9kZS1tZW51IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgICJgbWFya2Rv d24tdHMtbW9kZScgbWVudS4iCisgICcoIk1hcmtkb3duIiA6dmlzaWJsZSBtYXJrZG93bi10cy1t ZW51LWJhci1zaG93CisgICAgIi0tIgorICAgIFsiQ3ljbGUgT3V0bGluZSBWaXNpYmlsaXR5IiBt YXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlCisgICAgIDpoZWxwICJDeWNsZSBoZWFkaW5nIHZpc2li aWxpdHkgZnJvbSBwb2ludCJdCisgICAgWyJUb2dnbGUgSGlkZSBNYXJrdXAiIG1hcmtkb3duLXRz LXRvZ2dsZS1oaWRlLW1hcmt1cAorICAgICA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93 bi10cy1oaWRlLW1hcmt1cAorICAgICA6aGVscCAiVG9nZ2xlIGRpc3BsYXkgb2YgbWFya3VwIGNo YXJhY3RlcnMiXQorICAgIFsiVG9nZ2xlIElubGluZSBJbWFnZXMiIG1hcmtkb3duLXRzLXRvZ2ds ZS1pbmxpbmUtaW1hZ2VzCisgICAgIDpzdHlsZSB0b2dnbGUgOnNlbGVjdGVkIG1hcmtkb3duLXRz LWlubGluZS1pbWFnZXMKKyAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIGlubGluZSBpbWFn ZXMgYmVsb3cgbGlua3MiXQorICAgICItLSIKKyAgICBbIlVwIiBvdXRsaW5lLXVwLWhlYWRpbmcK KyAgICAgOmhlbHAgIk1vdmUgdG8gdGhlIHBhcmVudCBoZWFkaW5nIl0KKyAgICBbIk5leHQiIG91 dGxpbmUtbmV4dC1oZWFkaW5nCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmci XQorICAgIFsiUHJldmlvdXMiIG91dGxpbmUtcHJldmlvdXMtaGVhZGluZworICAgICA6aGVscCAi TW92ZSB0byB0aGUgcHJldmlvdXMgaGVhZGluZyJdCisgICAgWyJOZXh0IFNhbWUgTGV2ZWwiIG91 dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhl YWRpbmcgYXQgdGhlIHNhbWUgbGV2ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgb3V0 bGluZS1iYWNrd2FyZC1zYW1lLWxldmVsCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91 cyBoZWFkaW5nIGF0IHRoZSBzYW1lIGxldmVsIl0KKyAgICAiLS0iCisgICAgWyJKdW1wIiBpbWVu dQorICAgICA6aGVscCAiSnVtcCB0byBhIGhlYWRpbmcgdmlhIGNvbXBsZXRpb24iXQorICAgICIt LSIKKyAgICBbIk1vdmUgU3VidHJlZSBVcCIgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwCisg ICAgIDpoZWxwICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIHVwIl0KKyAg ICBbIk1vdmUgU3VidHJlZSBEb3duIiBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bgorICAg ICA6aGVscCAiTW92ZSB0aGUgY3VycmVudCBzZWN0aW9uIG9yIGxpc3QgaXRlbSBkb3duIl0KKyAg ICBbIlByb21vdGUiIG1hcmtkb3duLXRzLXByb21vdGUKKyAgICAgOmhlbHAgIlByb21vdGUgaGVh ZGluZyBvciBsaXN0IGl0ZW0iXQorICAgIFsiRGVtb3RlIiBtYXJrZG93bi10cy1kZW1vdGUKKyAg ICAgOmhlbHAgIkRlbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJdCisgICAgIi0tIgorICAgIFsi RW1waGFzaXMuLi4iIG1hcmtkb3duLXRzLWVtcGhhc2l6ZQorICAgICA6aGVscCAiQWRkIG9yIGNo YW5nZSBlbXBoYXNpcyBvbiByZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgbWFy a2Rvd24tdHMtaW5zZXJ0LXN0cnVjdHVyZQorICAgICA6aGVscCAiSW5zZXJ0IGEgY29kZSBibG9j aywgcXVvdGUsIG9yIG90aGVyIHN0cnVjdHVyZSJdCisgICAgIi0tIgorICAgIFsiVG9nZ2xlIENo ZWNrYm94IiBtYXJrZG93bi10cy10b2dnbGUtY2hlY2tib3gKKyAgICAgOmhlbHAgIlRvZ2dsZSB0 YXNrIGxpc3QgY2hlY2tib3ggYXQgcG9pbnQiXQorICAgIFsiTmV3IExpc3QgSXRlbSIgbWFya2Rv d24tdHMtaW5zZXJ0LWxpc3QtaXRlbQorICAgICA6aGVscCAiSW5zZXJ0IGEgbmV3IGxpc3QgaXRl bSBhZnRlciB0aGUgY3VycmVudCBvbmUiXQorICAgIFsiUmVudW1iZXIgTGlzdCIgbWFya2Rvd24t dHMtcmVudW1iZXItbGlzdAorICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBh dCBwb2ludCJdKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtdXAgKCkKKyAgIlNldCB1cCB0 aGUgYnVmZmVyIGZvciBgbWFya2Rvd24tdHMtbW9kZScuCitJZiBgbWFya2Rvd24tdHMtLXNldC11 cC1pbmxpbmUnIGlzIG5vbi1uaWwsIHVzZSBhIGxpZ2h0d2VpZ2h0IHNldCB1cCBmb3IKK2VtYmVk ZGVkIGlubGluZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVycy4KKworTk9URTogQ2FsbCB0aGlz IGZ1bmN0aW9uIG9ubHkgd2hlbiB0aGUgdHJlZXNpdCBgbWFya2Rvd24nIGFuZAorYG1hcmtkb3du LWlubGluZScgcGFyc2VycyBhcmUgYXZhaWxhYmxlLiIKKworICA7OyBTZXQgdGhlc2UgdXAgZm9y IGJvdGggbWFzdGVyIGFuZCBpbmxpbmUgZm9yIGNvZGUtYmxvY2sgYnVmZmVycy4KKyAgKHNldHEt bG9jYWwgY29tbWVudC1zdGFydCAiPCEtLSAiCisgICAgICAgICAgICAgIGNvbW1lbnQtZW5kICIg LS0+IgorICAgICAgICAgICAgICBjb21tZW50LXN0YXJ0LXNraXAgIjwhLS1bIFx0XSoiCisgICAg ICAgICAgICAgIGNvbW1lbnQtZW5kLXNraXAgIlsgXHRdKi0tPiIKKyAgICAgICAgICAgICAgY29t bWVudC11c2Utc3ludGF4IG5pbCkKKworICAoc2V0cS1sb2NhbCBmaWxsLXBhcmFncmFwaC1mdW5j dGlvbgorICAgICAgICAgICAgICAjJ21hcmtkb3duLXRzLS1maWxsLXBhcmFncmFwaAorICAgICAg ICAgICAgICBmaWxsLWZvcndhcmQtcGFyYWdyYXBoLWZ1bmN0aW9uCisgICAgICAgICAgICAgICMn bWFya2Rvd24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgpCisKKyAgOzsgYGFkYXB0aXZlLWZp bGwtZnVuY3Rpb24nIHRha2VzIHByZWNlZGVuY2Ugb3ZlcgorICA7OyBgYWRhcHRpdmUtZmlsbC1y ZWdleHAnOyB0aGUgZGVmYXVsdCByZWdleHAgaXMgZmluZSBhcyBhCisgIDs7IGZhbGxiYWNrIGZv ciBwbGFpbiAobm9uLWxpc3QpIHBhcmFncmFwaHMuCisgIChzZXRxLWxvY2FsIGFkYXB0aXZlLWZp bGwtZnVuY3Rpb24gIydtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCkKKworICA7OyBDcmVhdGUg YW5kIGNvbmZpZ3VyZSB0aGUgcGFyc2Vycy4KKyAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnbWFy a2Rvd24taW5saW5lKQorICAoc2V0cSB0cmVlc2l0LXByaW1hcnktcGFyc2VyCisgICAgICAgICh0 cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtkb3duKSkKKworICAoc2V0cS1sb2NhbCBmb250LWxv Y2stZGVmYXVsdHMgbmlsKQogICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cyBtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5ncykKLSAgKHNldHEtbG9jYWwgdHJlZXNpdC1y YW5nZS1zZXR0aW5ncyAobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKSkKLSAgKGFkZC10by1s aXN0ICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcyAnaW52aXNpYmxlKQotCi0gICh3aGVu ICh0cmVlc2l0LXJlYWR5LXAgJ2h0bWwgdCkKLSAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdo dG1sKQotICAgIChyZXF1aXJlICdodG1sLXRzLW1vZGUpCi0gICAgKGRlZnZhciBodG1sLXRzLW1v ZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFyIGh0bWwtdHMtbW9kZS0tdHJlZXNp dC1mb250LWxvY2stZmVhdHVyZS1saXN0KQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1s b2NrLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQtbG9jay1z ZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC10cy1tb2RlLS1mb250LWxvY2st c2V0dGluZ3MpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlz dAotICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QK LSAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAg ICAgICAgICAgIGh0bWwtdHMtbW9kZS0tdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0KSkK LSAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAg KGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1yYW5nZS1ydWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgIDplbWJlZCAnaHRt bAotICAgICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgotICAgICAgICAgICAg ICAgICAgICAgICAgIDpsb2NhbCB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJygoaHRtbF9i bG9jaykgQGh0bWwpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ2h0bWwKLSAg ICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24taW5saW5lCi0gICAgICAgICAg ICAgICAgICAgICAgICAgJygoaHRtbF90YWcpIEBodG1sKSkpKSkKLQotICAod2hlbiAodHJlZXNp dC1yZWFkeS1wICd5YW1sIHQpCi0gICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9kZSkKLSAgICAoZGVm dmFyIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKQotICAgIChkZWZ2YXIgeWFtbC10 cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQt Zm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LWZvbnQt bG9jay1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgeWFtbC10cy1tb2RlLS1mb250 LWxvY2stc2V0dGluZ3MpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1 cmUtbGlzdAotICAgICAgICAgICAgICAgICh0cmVlc2l0LW1lcmdlLWZvbnQtbG9jay1mZWF0dXJl LWxpc3QKLSAgICAgICAgICAgICAgICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0g ICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1cmUtbGlzdCkpCi0g ICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgIChh cHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtcmFuZ2UtcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1iZWQgJ3lhbWwK LSAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFya2Rvd24KLSAgICAgICAgICAgICAg ICAgICAgICAgICA6bG9jYWwgdAotICAgICAgICAgICAgICAgICAgICAgICAgICcoKG1pbnVzX21l dGFkYXRhKSBAeWFtbCkpKSkpCi0KLSAgKHdoZW4gKHRyZWVzaXQtcmVhZHktcCAndG9tbCB0KQot ICAgIChyZXF1aXJlICd0b21sLXRzLW1vZGUpCi0gICAgKGRlZnZhciB0b21sLXRzLW1vZGUtLWZv bnQtbG9jay1zZXR0aW5ncykKLSAgICAoZGVmdmFyIHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZl YXR1cmUtbGlzdCkKLSAgICAoc2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncwotICAgICAg ICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAgICAgICAgICAgICAgICAg IHRvbWwtdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzKSkKLSAgICAoc2V0cS1sb2NhbCB0cmVl c2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKLSAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJn ZS1mb250LWxvY2stZmVhdHVyZS1saXN0Ci0gICAgICAgICAgICAgICAgIHRyZWVzaXQtZm9udC1s b2NrLWZlYXR1cmUtbGlzdAotICAgICAgICAgICAgICAgICB0b21sLXRzLW1vZGUtLWZvbnQtbG9j ay1mZWF0dXJlLWxpc3QpKQotICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MK LSAgICAgICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKLSAgICAgICAg ICAgICAgICAgICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCi0gICAgICAgICAgICAgICAgICAg ICAgICAgOmVtYmVkICd0b21sCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtk b3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAnKChwbHVzX21ldGFkYXRhKSBAdG9tbCkpKSkpCisgIChzZXRxLWxvY2FsIHRyZWVz aXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdCAnKChkZWxpbWl0ZXIgaGVhZGluZykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFncmFwaCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFncmFwaC1pbmxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFn ZS1wcmV2aWV3KSkpCisKKyAgKGNvbmQgKG1hcmtkb3duLXRzLS1zZXQtdXAtaW5saW5lCisgICAg ICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAg ICAgICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgIDplbWJl ZCAnbWFya2Rvd24taW5saW5lCisgICAgICAgICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93 bgorICAgICAgICAgICAgICAgICAgICAgICAnKChpbmxpbmUpIEBtYXJrZG93bi1pbmxpbmUpKSkp CisgICAgICAgICh0CisgICAgICAgICA7OyBSYW5nZSBzZXR0aW5ncyBkaWZmZXIgaW4gdGhlIG1h c3RlciBidWZmZXIgdnMuIGlubGluZSBhYm92ZS4KKyAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVz aXQtcmFuZ2Utc2V0dGluZ3MgKG1hcmtkb3duLXRzLS1yYW5nZS1zZXR0aW5ncykpCisKKyAgICAg ICAgIDs7IENvbmZpZ3VyZSBmZWF0dXJlcyBuZWVkZWQgb25seSBpbiB0aGUgbWFzdGVyIGJ1ZmZl ci4KKworICAgICAgICAgOzsgSW1lbnUgc3VwcG9ydC4KKyAgICAgICAgIChzZXRxLWxvY2FsIHRy ZWVzaXQtc2ltcGxlLWltZW51LXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICBgKCgiSGVh ZGluZ3MiICwjJ21hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5vZGUtcAorICAgICAgICAgICAg ICAgICAgICAgICAgbmlsICwjJ21hcmtkb3duLXRzLS1pbWVudS1oZWFkaW5nLW5hbWUtZnVuY3Rp b24pCisgICAgICAgICAgICAgICAgICAgICAgICgiQ29kZSBCbG9ja3MiICwjJ21hcmtkb3duLXRz LS1pbWVudS1jb2RlLWJsb2NrLW5vZGUtcAorICAgICAgICAgICAgICAgICAgICAgICAgbmlsICwj J21hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5hbWUtZnVuY3Rpb24pKSkKKworICAgICAg ICAgOzsgT3V0bGluZSBzdXBwb3J0LgorICAgICAgICAgKHNldHEtbG9jYWwgdHJlZXNpdC1vdXRs aW5lLXByZWRpY2F0ZSAjJ21hcmtkb3duLXRzLS1vdXRsaW5lLXByZWRpY2F0ZSkKKyAgICAgICAg IChzZXRxLWxvY2FsIG91dGxpbmUtbWlub3ItbW9kZS1jeWNsZSB0KQorICAgICAgICAgKG91dGxp bmUtbWlub3ItbW9kZSAxKQorICAgICAgICAgKG1hcmtkb3duLXRzLS1hcHBseS1lbGxpcHNpcykK KworICAgICAgICAgOzsgTk9URTogYG91dGxpbmUtdmlldy1jaGFuZ2UtaG9vaycgd2FzIG9ic29s ZXRlZCBpbiAyOS4xIChjb21taXQKKyAgICAgICAgIDs7IDUzYjFlNmY5NmNiKSBvbiB0aGUgZ3Jv dW5kcyB0aGF0IG9ubHkgbGF6eS1sb2NrIHVzZWQgaXQsIGJ1dCBubworICAgICAgICAgOzsgcmVw bGFjZW1lbnQgd2FzIHByb3ZpZGVkIGFuZCBvdXRsaW5lLmVsIGl0c2VsZiBzdGlsbCBydW5zIHRo ZSBob29rCisgICAgICAgICA7OyBpbiAxMCsgcGxhY2VzLgorICAgICAgICAgKHdpdGgtc3VwcHJl c3NlZC13YXJuaW5ncyAoKG9ic29sZXRlIG91dGxpbmUtdmlldy1jaGFuZ2UtaG9vaykpCisgICAg ICAgICAgIChhZGQtaG9vayAnb3V0bGluZS12aWV3LWNoYW5nZS1ob29rCisgICAgICAgICAgICAg ICAgICAgICAjJ21hcmtkb3duLXRzLS1vdXRsaW5lLXZpZXctY2hhbmdlIG5pbCB0KSkKKworICAg ICAgICAgKHByb2duCisgICAgICAgICAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdtYXJrZG93bi10 cy1oaWRlLW1hcmt1cCkKKyAgICAgICAgICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ZvbnQtbG9j ay1leHRyYS1tYW5hZ2VkLXByb3BzKQorICAgICAgICAgICAoZG9saXN0IChwcm9wICcoaW52aXNp YmxlIGRpc3BsYXkgYnV0dG9uIGNhdGVnb3J5IGFjdGlvbiBoZWxwLWVjaG8pKQorICAgICAgICAg ICAgIChhZGQtdG8tbGlzdCAnZm9udC1sb2NrLWV4dHJhLW1hbmFnZWQtcHJvcHMgcHJvcCkpKQor CisgICAgICAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCisgICAgICAgICAgICh0 cmVlc2l0LXBhcnNlci1jcmVhdGUgJ2h0bWwpCisgICAgICAgICAgIChyZXF1aXJlICdodG1sLXRz LW1vZGUpCisgICAgICAgICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGlu Z3MpCisgICAgICAgICAgIChkZWZ2YXIgaHRtbC10cy1tb2RlLS10cmVlc2l0LWZvbnQtbG9jay1m ZWF0dXJlLWxpc3QpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLXNl dHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2st c2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLXRzLW1vZGUtLWZv bnQtbG9jay1zZXR0aW5ncykpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1s b2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1m b250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LWZv bnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwtdHMtbW9k ZS0tdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0KSkKKyAgICAgICAgICAgKHNldHEtbG9j YWwgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5k IHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1yYW5nZS1ydWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW1i ZWQgJ2h0bWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhvc3QgJ21hcmtkb3du CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsb2NhbCB0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICcoKGh0bWxfYmxvY2spIEBodG1sKQorCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDplbWJlZCAnaHRtbAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6aG9zdCAnbWFya2Rvd24taW5saW5lCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICcoKGh0bWxfdGFnKSBAaHRtbCkpKSkpCisKKyAgICAgICAgICh3aGVuICh0cmVlc2l0 LXJlYWR5LXAgJ3lhbWwgdCkKKyAgICAgICAgICAgKHJlcXVpcmUgJ3lhbWwtdHMtbW9kZSkKKyAg ICAgICAgICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykKKyAgICAg ICAgICAgKGRlZnZhciB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpCisgICAg ICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAg ICAgICAgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB5YW1sLXRzLW1vZGUtLWZvbnQtbG9jay1zZXR0aW5ncykp CisgICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAor ICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1tZXJnZS1mb250LWxvY2stZmVhdHVyZS1s aXN0CisgICAgICAgICAgICAgICAgICAgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxp c3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHlhbWwtdHMtbW9kZS0tZm9udC1sb2NrLWZlYXR1 cmUtbGlzdCkpCisgICAgICAgICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MK KyAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtcmFuZ2UtcnVsZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVtYmVkICd5YW1sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpob3N0ICdtYXJrZG93bgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6bG9jYWwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChtaW51 c19tZXRhZGF0YSkgQHlhbWwpKSkpKQorCisgICAgICAgICAod2hlbiAodHJlZXNpdC1yZWFkeS1w ICd0b21sIHQpCisgICAgICAgICAgIChyZXF1aXJlICd0b21sLXRzLW1vZGUpCisgICAgICAgICAg IChkZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpCisgICAgICAgICAgIChk ZWZ2YXIgdG9tbC10cy1tb2RlLS1mb250LWxvY2stZmVhdHVyZS1saXN0KQorICAgICAgICAgICAo c2V0cSB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAgICAgICAgICAgICAoYXBwZW5k IHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9t bC10cy1tb2RlLS1mb250LWxvY2stc2V0dGluZ3MpKQorICAgICAgICAgICAoc2V0cS1sb2NhbCB0 cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtbWVyZ2UtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAgICAgICAgICAgICAgICAgICAg ICAgdHJlZXNpdC1mb250LWxvY2stZmVhdHVyZS1saXN0CisgICAgICAgICAgICAgICAgICAgICAg ICB0b21sLXRzLW1vZGUtLWZvbnQtbG9jay1mZWF0dXJlLWxpc3QpKQorICAgICAgICAgICAoc2V0 cS1sb2NhbCB0cmVlc2l0LXJhbmdlLXNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgIChh cHBlbmQgdHJlZXNpdC1yYW5nZS1zZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDplbWJlZCAndG9tbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aG9zdCAnbWFy a2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxvY2FsIHQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJygocGx1c19tZXRhZGF0YSkgQHRvbWwpKSkpKQorCisg ICAgICAgICA7OyBTdXBwb3J0IGZvciBleGVjdXRpbmcgY29tbWFuZHMgaW4gYSBjb2RlLWJsb2Nr IGNvbnRleHQuCisKKyAgICAgICAgIDs7IEVuYWJsZSB0aGUgbWlub3IgbW9kZSBgbWFya2Rvd24t dHMtY29kZS1ibG9jay1tb2RlJyBhbmQgaXRzIGtleW1hcAorICAgICAgICAgOzsgd2hlbiBwb2lu dCBpcyB3aXRoaW4gYSBjb2RlIGJsb2NrLgorICAgICAgICAgKGFkZC1ob29rICdwb3N0LWNvbW1h bmQtaG9vaworICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJs b2NrLW1vZGUgbmlsICdsb2NhbCkKKyAgICAgICAgIDs7IElmIGBzYXZlLXBsYWNlLW1vZGUnIG9y IHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQgY291bGQgc3RhcnQgd2l0aGluIGEKKyAgICAgICAgIDs7 IGNvZGUgYmxvY2sgc28gaW5pdGlhbGl6ZSB0aGF0IHN0YXRlLgorICAgICAgICAgKHJ1bi13aXRo LWlkbGUtdGltZXIgMC4wMSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnbWFy a2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLW1vZGUpCisgICAgICAgICA7OyBGb3IgZWFjaCBl bGlnaWJsZSBjb21tYW5kLCBleGVjdXRlIGl0IGluIGEgY29kZS1ibG9jayBjb250ZXh0LAorICAg ICAgICAgOzsgb3RoZXJ3aXNlIGluIHRoZSBgbWFya2Rvd24tdHMtbW9kZScgYnVmZmVyJ3MgY29u dGV4dC4KKyAgICAgICAgIChhZGQtaG9vayAncHJlLWNvbW1hbmQtaG9vaworICAgICAgICAgICAg ICAgICAgICMnbWFya2Rvd24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgbmls ICdsb2NhbCkpKQogCiAgICh0cmVlc2l0LW1ham9yLW1vZGUtc2V0dXApCi0gIChtYXJrZG93bi10 cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwKSkKKworICA7OyBEbyBu b3QgZW5hYmxlIGBqaXQtbG9jay1tb2RlJyBpbiBpbmRpcmVjdCBidWZmZXJzIHN1Y2ggYXMgdGhl IG9uZQorICA7OyB3ZSB1c2UgZm9yIGNvZGUgYmxvY2sgY29tbWFuZHMuCisgICh1bmxlc3MgKGJ1 ZmZlci1iYXNlLWJ1ZmZlcikKKyAgICAoaml0LWxvY2stcmVnaXN0ZXIgIydtYXJrZG93bi10cy0t Zm9udGlmeS1iYXJlLXVyaSkpCisKKyAgKHVubGVzcyBtYXJrZG93bi10cy0tc2V0LXVwLWlubGlu ZQorICAgIDs7IE9yZGVyIG1hdHRlcnM6IGBtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwJyBj YWxscyBgZm9udC1sb2NrLWZsdXNoJworICAgIDs7IChvbmx5IG1lYW5pbmdmdWwgb25jZSBgdHJl ZXNpdC1tYWpvci1tb2RlLXNldHVwJyBoYXMgd2lyZWQgdXAKKyAgICA7OyBmb250LWxvY2spLCBh bmQgYG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZycgY2FsbHMgb3V0bGluZQorICAgIDs7IGNv bW1hbmRzIHRoYXQgcmVseSBvbiBgb3V0bGluZS1zZWFyY2gtZnVuY3Rpb24nLCB3aGljaAorICAg IDs7IGB0cmVlc2l0LW1ham9yLW1vZGUtc2V0dXAnIGluc3RhbGxzIGZyb20gYHRyZWVzaXQtb3V0 bGluZS1wcmVkaWNhdGUnLgorICAgIChtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtk b3duLXRzLWhpZGUtbWFya3VwKQorICAgIDs7IFJlc3BlY3QgdGhlIHVzZXIncyBkZWZhdWx0IG91 dGxpbmUgZm9sZGluZy4KKyAgICAocGNhc2UgbWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nCisg ICAgICAoJ3Nob3ctYWxsIChpZ25vcmUpKQorICAgICAgKCdmb2xkLWFsbCAob3V0bGluZS1oaWRl LXN1YmxldmVscyAxKSkKKyAgICAgICgnZm9sZC1oZWFkaW5ncyAob3V0bGluZS1zaG93LWFsbCkK KyAgICAgICAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXJlZ2lvbi1ib2R5IChwb2ludC1t aW4pIChwb2ludC1tYXgpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLW1vZGUtaW5zdGFsbC1w YXJzZXJzIChhcmcpCisgICJJbnN0YWxsIGBtYXJrZG93bi10cy1tb2RlJyB0cmVlLXNpdHRlciBs YW5ndWFnZSBwYXJzZXJzLgorSWYgbmVlZGVkLCBpbnN0YWxsIHRoZSByZXF1aXJlZCBwYXJzZXJz IGZvciBgbWFya2Rvd24nIGFuZCBgbWFya2Rvd24taW5saW5lJy4KK1dpdGggYSBwcmVmaXggYXJn dW1lbnQsIEFSRywgaWYgbmVlZGVkLCBpbnN0YWxsIHBhcnNlcnMgZm9yIGBodG1sJywKK2B5YW1s JywgYW5kIGB0b21sJy4iCisgIChpbnRlcmFjdGl2ZSAiUCIpCisgICh1bmxlc3MgKHRyZWVzaXQt cmVhZHktcCAnbWFya2Rvd24gdCkKKyAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1t YXIgJ21hcmtkb3duKSkKKyAgKHVubGVzcyAodHJlZXNpdC1yZWFkeS1wICdtYXJrZG93bi1pbmxp bmUgdCkKKyAgICAodHJlZXNpdC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ21hcmtkb3duLWlu bGluZSkpCisgICh3aGVuIGFyZworICAgICh1bmxlc3MgKHRyZWVzaXQtcmVhZHktcCAnaHRtbCB0 KQorICAgICAgKHJlcXVpcmUgJ2h0bWwtdHMtbW9kZSkKKyAgICAgICh0cmVlc2l0LWluc3RhbGwt bGFuZ3VhZ2UtZ3JhbW1hciAnaHRtbCkpCisgICAgKHVubGVzcyAodHJlZXNpdC1yZWFkeS1wICd5 YW1sIHQpCisgICAgICAocmVxdWlyZSAneWFtbC10cy1tb2RlKQorICAgICAgKHRyZWVzaXQtaW5z dGFsbC1sYW5ndWFnZS1ncmFtbWFyICd5YW1sKSkKKyAgICAodW5sZXNzICh0cmVlc2l0LXJlYWR5 LXAgJ3RvbWwgdCkKKyAgICAgIChyZXF1aXJlICd0b21sLXRzLW1vZGUpCisgICAgICAodHJlZXNp dC1pbnN0YWxsLWxhbmd1YWdlLWdyYW1tYXIgJ3RvbWwpKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAo ZGVmaW5lLWRlcml2ZWQtbW9kZSBtYXJrZG93bi10cy1tb2RlIHRleHQtbW9kZSAiTWFya2Rvd24i Ci0gICJNYWpvciBtb2RlIGZvciBlZGl0aW5nIE1hcmtkb3duIHVzaW5nIHRyZWUtc2l0dGVyIGdy YW1tYXIuIgotCi0gIChzZXRxLWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIikKLSAgKHNldHEt bG9jYWwgY29tbWVudC1lbmQgIiAtLT4iKQotCi0gIChzZXRxLWxvY2FsIGZvbnQtbG9jay1kZWZh dWx0cyBuaWwKLQkgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJlLWxpc3QgJygoZGVsaW1p dGVyIGhlYWRpbmcpCi0JCQkJCSAgICAgICAocGFyYWdyYXBoKQotCQkJCQkgICAgICAgKHBhcmFn cmFwaC1pbmxpbmUpKSkKLQotICAoc2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0 aW5ncwotICAgICAgICAgICAgICBgKCgiSGVhZGluZ3MiICwjJ21hcmtkb3duLXRzLWltZW51LW5v ZGUtcAotICAgICAgICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtaW1lbnUtbmFtZS1mdW5j dGlvbikpKQotICAoc2V0cS1sb2NhbCB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlICMnbWFya2Rv d24tdHMtb3V0bGluZS1wcmVkaWNhdGUpCi0KLSAgKHdoZW4gKGFuZCAodHJlZXNpdC1lbnN1cmUt aW5zdGFsbGVkICdtYXJrZG93bikKLSAgICAgICAgICAgICAodHJlZXNpdC1lbnN1cmUtaW5zdGFs bGVkICdtYXJrZG93bi1pbmxpbmUpKQotICAgICh0cmVlc2l0LXBhcnNlci1jcmVhdGUgJ21hcmtk b3duLWlubGluZSkKLSAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bikKLSAgICAo bWFya2Rvd24tdHMtc2V0dXApKSkKKyAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFya2Rvd24g dXNpbmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4KK05PVEU6IFNlZSBgbWFya2Rvd24tdHMtLXNldC11 cC1pbmxpbmUnLiIKKyAgKGlmIChhbmQgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAnbWFya2Rv d24pCisgICAgICAgICAgICh0cmVlc2l0LWVuc3VyZS1pbnN0YWxsZWQgJ21hcmtkb3duLWlubGlu ZSkpCisgICAgICAobWFya2Rvd24tdHMtLXNldC11cCkKKyAgICAod2FybiAibWFya2Rvd24tdHMt bW9kZSBjYW5ub3QgYmUgc2V0IHVwOyB1c2luZyBmdW5kYW1lbnRhbC1tb2RlLgorVGhlIHRyZWUt c2l0dGVyIHBhcnNlcnMgYG1hcmtkb3duJyBhbmQgYG1hcmtkb3duLWlubGluZScgd2VyZSBub3Qg Zm91bmQuCitVc2UgdGhlIGNvbW1hbmQgYG1hcmtkb3duLXRzLW1vZGUtaW5zdGFsbC1wYXJzZXJz JyB0byBpbnN0YWxsIHRoZW0uCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBpdCBjYW4gYWxzbyBp bnN0YWxsIG9wdGlvbmFsIHBhcnNlcnMuIikKKyAgICAoZnVuZGFtZW50YWwtbW9kZSkpKQogCiAo ZGVyaXZlZC1tb2RlLWFkZC1wYXJlbnRzICdtYXJrZG93bi10cy1tb2RlICcobWFya2Rvd24tbW9k ZSkpCiAKLTs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gbWFya2Rvd24tdHMtbW9kZS1tYXliZSAoKQot ICAiRW5hYmxlIGBtYXJrZG93bi10cy1tb2RlJyB3aGVuIGl0cyBncmFtbWFyIGlzIGF2YWlsYWJs ZS4KLUFsc28gcHJvcG9zZSB0byBpbnN0YWxsIHRoZSBncmFtbWFyIHdoZW4gYHRyZWVzaXQtZW5h YmxlZC1tb2RlcycKLWlzIHQgb3IgY29udGFpbnMgdGhlIG1vZGUgbmFtZS4iCi0gIChkZWNsYXJl LWZ1bmN0aW9uIHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgInRyZWVzaXQuYyIpCi0gIChp ZiAob3IgKHRyZWVzaXQtbGFuZ3VhZ2UtYXZhaWxhYmxlLXAgJ21hcmtkb3duKQotICAgICAgICAg IChlcSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMgdCkKLSAgICAgICAgICAobWVtcSAnbWFya2Rvd24t dHMtbW9kZSB0cmVlc2l0LWVuYWJsZWQtbW9kZXMpKQotICAgICAgKG1hcmtkb3duLXRzLW1vZGUp Ci0gICAgKGZ1bmRhbWVudGFsLW1vZGUpKSkKKyhkZWZpbmUtbWlub3ItbW9kZSBtYXJrZG93bi10 cy1jb2RlLWJsb2NrLW1vZGUKKyAgIk1vZGUgZW5hYmxlZCBpZiBwb2ludCBpcyB3aXRoaW4gYSBm ZW5jZWQgY29kZSBibG9jay4iCisgIDppbnRlcmFjdGl2ZSBuaWwpCiAKIDs7OyMjI2F1dG9sb2Fk CiAod2hlbiAoYm91bmRwICd0cmVlc2l0LW1ham9yLW1vZGUtcmVtYXAtYWxpc3QpCi0gIChhZGQt dG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICcoIlxcLm1kXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUt bWF5YmUpKQotICA7OyBUbyBiZSBhYmxlIHRvIHRvZ2dsZSBiZXR3ZWVuIGFuIGV4dGVybmFsIHBh Y2thZ2UgYW5kIGNvcmUgdHMtbW9kZToKKyAgKGFkZC10by1saXN0ICdhdXRvLW1vZGUtYWxpc3Qg JygiXFwubWRcXCciIC4gbWFya2Rvd24tdHMtbW9kZSkpCisgIChhZGQtdG8tbGlzdCAnYXV0by1t b2RlLWFsaXN0ICcoIlxcLm1hcmtkb3duXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUpKQorICAoYWRk LXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZHhcXCciIC4gbWFya2Rvd24tdHMtbW9k ZSkpCiAgIChhZGQtdG8tbGlzdCAndHJlZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFsaXN0CiAgICAg ICAgICAgICAgICAnKG1hcmtkb3duLW1vZGUgLiBtYXJrZG93bi10cy1tb2RlKSkpCiAKLS0gCjIu NTMuMAoK --=-=-=--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at 80740) by debbugs.gnu.org; 4 Apr 2026 10:48:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 04 06:48:17 2026 Received: from localhost ([127.0.0.1]:43832 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8yY4-0007p8-Js for submit <at> debbugs.gnu.org; Sat, 04 Apr 2026 06:48:17 -0400 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]:60711) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1w8yY1-0007oy-Oj for 80740 <at> debbugs.gnu.org; Sat, 04 Apr 2026 06:48:14 -0400 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-9540bb77b1aso1132757241.1 for <80740 <at> debbugs.gnu.org>; Sat, 04 Apr 2026 03:48:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775299693; cv=none; d=google.com; s=arc-20240605; b=NbBuRC14YnXUDImkF6ONV9RDiu4KndUl2DtFyVGSeedEOeetzo/xozemNgi00AcCjx Em8FJ7wnUggbClO7dfMcvFiLnSVYmZrN1kkJ17ysQ5nsQzQOLvXmF/SIxdx5BXlBhUmk YlbZKoYAHGgpFsKm74eIIzUZX2ef5mS5VRj6huhXHKNeyfJ1hb40l7WUDRdenICu27eV zWkas4347YIVStBEj8TNktFOci7DeNWoDrLxB+B1sTzEH5E2N36wZr7z8DpObhFzBoyi q+FOUhOmkT71jYhB/qJarKf7TVVU0jpbvQ+TlhDo5YtyF+XjjfFnaqtUsuEXL7kKOLA8 6sPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=mbRRWHBE3caUTwT0r0mLXYq6nQXArpQJKXV95+49fqw=; fh=/6bO49cLvtEMRvyO5AKeHUQ94xY+KQcsNazkrYpJfd8=; b=LD2pjdz3v5qNkdLjYhXZq9nDKyANb0ynazJF/0588sI8Q7CK86TRSqw/tcI67aD7c/ /kLpdAFrw5L2s9zyI4CePbknocJVdd6ApNthxLTS8WhZmhWWvkZ/G0aYeXVni6x3/jI9 L5v66Z5QZr+lwFzVBBN9XJyAOl/JCOk9RctiCaVF0pxedy1yIAmWQgRlr0DXzSWo2U3s We05ha3OSP9r17s3satKOmaeJ/YiuhqQxxP1sv4TbaDQdrsJGWC/xE42xxrySwLju7PT QPNOiBZ2FRcNXBSYiZsGvuuHWXDR8xWJB17vOhibUeE4TuhKA0hbqzuLxuwuxFvutTMN aEwA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775299693; x=1775904493; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mbRRWHBE3caUTwT0r0mLXYq6nQXArpQJKXV95+49fqw=; b=inSjO5N6HlUBDHFsBmKWubOsKo46tRDLena85qqpnm/XFw/+HMAoounExhLryx1oa5 C7O4OsByWVBiu3wc5/76Exu+5Z9BEOmDGyDuHPTIdSrn42LSgeYsQMgC5wL3YJSMzxAj ymDCvlbN+QRPlmKSfSx5neBjB8Epk79nJHYFSYkxL3tPvC/4tlCHKCxCcyKypz/EOfb5 SmSiA5ujASzScKLm6VNxJZ0ZEHhAXbhsgRhul4aRTUu1xfRGKZ8n7gLP0L+kEqyYxmip xMsIgaa2bNxWHxmLDGHIca3NenazZj4BY83ljWh9yn9YvaDTdGZMbw+fJbOnnSvBwnBY 87Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775299693; x=1775904493; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=mbRRWHBE3caUTwT0r0mLXYq6nQXArpQJKXV95+49fqw=; b=FMIfzyuCLj5B0/d10vEuN4wJAGX3Gzlkq2OHwqg132h/9UmMcL/MWcOD5LmRGgrY1H vJ9KzoZEF9k+qJqCt4fIgMrqXokzInFct1xk6c+4SII/ANtjz4P7+A7Lb2Diaa0sVhWD yGt5LM6WtnMBQftoexgwyUUehFmzA8/VZu/017s4/0XMP/ZH7/eMs5bG+Xy6oV+Di/c9 z/NKCYLTZMoFQZ3RP79ri4xLzRhWDBmrwc3w1s3MirTwQjm/dXO+mmTomzgFAJTDojki AxwTLYi/NWHxoxn1Tsu4RmqQ/UE1zQLCPcW7CF0tNf1dZwAKtP/74AsT8KksxXcVEdVF Aarg== X-Gm-Message-State: AOJu0YwN+3hr/gr9HRmgZfAaLZPMP8KhqtGiQhOgq6wMEafL/UKen5GQ dVnRM2APHokCy9jvZrDYsdWab1+eSWyx1DIxO1rASu4COj+s9lJVjsRDEmkn7rEANtI6/oYX5uX x6nRoNlgIiDgIXZgw2squVAsg3zhOkI8= X-Gm-Gg: AeBDiesszcBltHYKJEL60kHwQoK2sf6dvI3zfKzXUnc6IBopMvc9j6sYTlYqC2LnZWF JaXvSDvegrLQpehlZsPHWqPhp63qxqCyXq8z940rXPtMGEvYUw/LPM2rheQt1qXPS5Dwo4Thzso GEeX9t0Zw6s/IKYRXCMXL/+OMUPzwuTvWQg8d33xIL9YZsRSOj2K5qD2qI/AoZBw0Y0jBPi5iiE Jq+OG12XyjWQsctNRvTPL1kFeJAxtQC2Byr/vQyH1xnl0P90fs95QmhX/rKFff3sCLxSlOTaHsj AClV2+JW6FoqXQ+OIKMX0VgMr6XYZPjCvfMoatJzQws+w2TL4UJcJ2xUJ+ayOQY= X-Received: by 2002:a05:6102:6044:b0:605:27db:c899 with SMTP id ada2fe7eead31-605a50e32f0mr2038159137.29.1775299692803; Sat, 04 Apr 2026 03:48:12 -0700 (PDT) MIME-Version: 1.0 References: <m2zf3jzamy.fsf@HIDDEN> In-Reply-To: <m2zf3jzamy.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 4 Apr 2026 06:48:01 -0400 X-Gm-Features: AQROBzDsS2S6kR-50JaagU7tSwAgTLt79HA8q_tJnTYkVCxgLUqiM7LummhJHCY Message-ID: <CAN+1HbrPGi5BY1EJ0B8Hgzbru_Q9TACCQGmkT63mXet_ouT0Ug@HIDDEN> Subject: Re: bug#80740: 31.0.50; Improve 'markdown-ts-mode' To: Rahul Martim Juliato <rahuljuliato@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000008f3b2d064ea02b23" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80740 Cc: Yuan Fu <casouri@HIDDEN>, 80740 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000008f3b2d064ea02b23 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 3, 2026 at 11:08=E2=80=AFPM Rahul Martim Juliato <rahuljuliato@= gmail.com> wrote: > > Hello, > > I'm submitting a comprehensive patch that significantly improves > 'markdown-ts-mode'. I want to briefly explain the context, as the size > of this patch may raise concerns. > > When 'markdown-ts-mode' was first merged into Emacs, it was > intentionally minimal: roughly 100 lines, just enough to get something > working, with the expectation of incremental improvements. > > In recent months, as users started testing the mode, several issues were > reported: font-lock leaking beyond code blocks, fill-paragraph merging > list items, missing faces, non-clickable links, and lack of editing, > navigation, and folding support. The mode worked for basic > fontification, but was not yet suitable for regular use. > > I decided to put my other projects on hold and work through these > reports one by one. What began as a set of focused fixes evolved into a > broader rework of the mode=E2=80=99s internals. Over time, the implementa= tion > grew from ~100 lines to approximately 2800. > > This work was done in close collaboration with St=C3=A9phane Marks, whose > reviews, patches, and discussions significantly influenced the design > and implementation. I consider him a co-author of this work. > > Due to strong interdependencies, the changes could not be cleanly split > into smaller independent patches. As a result, this is submitted as a > single comprehensive change. > > Important note: there are no breaking changes. > > Existing behavior is preserved, and all changes are additive. Users of > 'markdown-ts-mode' will see the same buffers, with improved correctness, > additional features, and fewer bugs. > > Before describing the features, this patch also addresses several bug > fixes: > > 1. fill-paragraph merged adjacent list items into a single paragraph > (bug#80613). > > 2. Opening a markdown-ts-mode buffer broke dired-hide-details-mode for > the rest of the session, due to modifying > font-lock-extra-managed-props globally instead of buffer-locally. > Fixed using setq-local (bug#80690). > > 3. Nested or indented list items were filled incorrectly due to column > alignment issues (bug#80625). > > 4. Font-lock leaked beyond code blocks due to appended range settings > from embedded language modes. > > 5. Recursive Markdown code blocks had no fontification. > > Some known limitations originate from the tree-sitter grammar and are > documented in the code (e.g., HTML block handling and block quote > embedding limitations). > > The mode now includes: > > Fontification: > * Dedicated faces for all Markdown elements > * Extended coverage (tables, entities, etc.) > > Links: > * Clickable inline, reference, and automatic links > * Reference resolution cache > > Code blocks: > * Tree-sitter and non-tree-sitter language support > * Embedded editing via markdown-ts-code-block-mode > > Editing: > * Heading and list manipulation > * Context-aware newline behavior > * Structure insertion helpers > * Checkbox toggling > > Navigation: > * Imenu and outline integration > * Heading traversal commands > > Fill: > * Correct handling of lists, block quotes, and comments > > Visual: > * Inline images > * Markup hiding > * Menu integration > > Additional resources for evaluation: > * Full feature checklist: > > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/featur= es.md > > * Test file: > > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/test.m= d > > * Screenshots: > https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/demo > > > Overall, this patch brings 'markdown-ts-mode' from a minimal prototype > to a mode that is practical for everyday Markdown editing. > > With this foundation in place, the remaining items in the feature list > are already in progress, and features such as exporting, HTML preview, > and a test suite can be added with less disruption. > > Thank you for your time and review. > Adding Yuan. --0000000000008f3b2d064ea02b23 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Apr 3, 2026 at 11:08=E2=80=AFPM Rahul Martim Juliato <<a href=3D= "mailto:rahuljuliato@HIDDEN">rahuljuliato@HIDDEN</a>> wrote:</span= ></div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote c= lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli= d rgb(204,204,204);padding-left:1ex"><br> Hello,<br> <br> I'm submitting a comprehensive patch that significantly improves<br> 'markdown-ts-mode'. I want to briefly explain the context, as the s= ize<br> of this patch may raise concerns.<br> <br> When 'markdown-ts-mode' was first merged into Emacs, it was<br> intentionally minimal: roughly 100 lines, just enough to get something<br> working, with the expectation of incremental improvements.<br> <br> In recent months, as users started testing the mode, several issues were<br= > reported: font-lock leaking beyond code blocks, fill-paragraph merging<br> list items, missing faces, non-clickable links, and lack of editing,<br> navigation, and folding support. The mode worked for basic<br> fontification, but was not yet suitable for regular use.<br> <br> I decided to put my other projects on hold and work through these<br> reports one by one. What began as a set of focused fixes evolved into a<br> broader rework of the mode=E2=80=99s internals. Over time, the implementati= on<br> grew from ~100 lines to approximately 2800.<br> <br> This work was done in close collaboration with St=C3=A9phane Marks, whose<b= r> reviews, patches, and discussions significantly influenced the design<br> and implementation. I consider him a co-author of this work.<br> <br> Due to strong interdependencies, the changes could not be cleanly split<br> into smaller independent patches. As a result, this is submitted as a<br> single comprehensive change.<br> <br> Important note: there are no breaking changes.<br> <br> Existing behavior is preserved, and all changes are additive. Users of<br> 'markdown-ts-mode' will see the same buffers, with improved correct= ness,<br> additional features, and fewer bugs.<br> <br> Before describing the features, this patch also addresses several bug<br> fixes:<br> <br> 1. fill-paragraph merged adjacent list items into a single paragraph<br> =C2=A0 =C2=A0(bug#80613).<br> <br> 2. Opening a markdown-ts-mode buffer broke dired-hide-details-mode for<br> =C2=A0 =C2=A0the rest of the session, due to modifying<br> =C2=A0 =C2=A0font-lock-extra-managed-props globally instead of buffer-local= ly.<br> =C2=A0 =C2=A0Fixed using setq-local (bug#80690).<br> <br> 3. Nested or indented list items were filled incorrectly due to column<br> =C2=A0 =C2=A0alignment issues (bug#80625).<br> <br> 4. Font-lock leaked beyond code blocks due to appended range settings<br> =C2=A0 =C2=A0from embedded language modes.<br> <br> 5. Recursive Markdown code blocks had no fontification.<br> <br> Some known limitations originate from the tree-sitter grammar and are<br> documented in the code (e.g., HTML block handling and block quote<br> embedding limitations).<br> <br> The mode now includes:<br> <br> Fontification:<br> * Dedicated faces for all Markdown elements<br> * Extended coverage (tables, entities, etc.)<br> <br> Links:<br> * Clickable inline, reference, and automatic links<br> * Reference resolution cache<br> <br> Code blocks:<br> * Tree-sitter and non-tree-sitter language support<br> * Embedded editing via markdown-ts-code-block-mode<br> <br> Editing:<br> * Heading and list manipulation<br> * Context-aware newline behavior<br> * Structure insertion helpers<br> * Checkbox toggling<br> <br> Navigation:<br> * Imenu and outline integration<br> * Heading traversal commands<br> <br> Fill:<br> * Correct handling of lists, block quotes, and comments<br> <br> Visual:<br> * Inline images<br> * Markup hiding<br> * Menu integration<br> <br> Additional resources for evaluation:<br> * Full feature checklist:<br> =C2=A0 <a href=3D"https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/br= anch/main/features.md" rel=3D"noreferrer" target=3D"_blank">https://codeber= g.org/LionyxML/markdown-ts-mode-lab/src/branch/main/features.md</a><br> <br> * Test file:<br> =C2=A0 <a href=3D"https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/br= anch/main/test.md" rel=3D"noreferrer" target=3D"_blank">https://codeberg.or= g/LionyxML/markdown-ts-mode-lab/src/branch/main/test.md</a><br> <br> * Screenshots:<br> =C2=A0 <a href=3D"https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/br= anch/main/demo" rel=3D"noreferrer" target=3D"_blank">https://codeberg.org/L= ionyxML/markdown-ts-mode-lab/src/branch/main/demo</a><br> <br> <br> Overall, this patch brings 'markdown-ts-mode' from a minimal protot= ype<br> to a mode that is practical for everyday Markdown editing.<br> <br> With this foundation in place, the remaining items in the feature list<br> are already in progress, and features such as exporting, HTML preview,<br> and a test suite can be added with less disruption.<br> <br> Thank you for your time and review.<br></blockquote><div><br></div><div cla= ss=3D"gmail_default" style=3D"font-family:monospace">Adding Yuan.</div></di= v></div> --0000000000008f3b2d064ea02b23--
bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 4 Apr 2026 03:07:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 03 23:07:36 2026 Received: from localhost ([127.0.0.1]:38879 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8rMG-0001oO-0p for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 23:07:36 -0400 Received: from lists.gnu.org ([2001:470:142::17]:41402) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rahuljuliato@HIDDEN>) id 1w8rMD-0001na-SD for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 23:07:34 -0400 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 <rahuljuliato@HIDDEN>) id 1w8rM6-0003Mj-7Z for bug-gnu-emacs@HIDDEN; Fri, 03 Apr 2026 23:07:26 -0400 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <rahuljuliato@HIDDEN>) id 1w8rM3-0003jD-SB for bug-gnu-emacs@HIDDEN; Fri, 03 Apr 2026 23:07:25 -0400 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-5673804da95so983934e0c.0 for <bug-gnu-emacs@HIDDEN>; Fri, 03 Apr 2026 20:07:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775272042; x=1775876842; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=7jZ5KUux4+VUlvSnyvO5Aoy+6V9lhUn3TAFazshgauc=; b=V8ZNBIz6K9uhfafO9iNd+MbOjVneh+cnzsxBhwTavb/q2Uv20NEj+zNUxLm6Oi6Dv6 6FS9Iw6fogmQ2E9YnWlgq8KPaelN5ZoUI7/fyjT2YnoGM0U3nxfZ6lEQ6k0S7p7jXW+u LITqxlFMzCfPVVbMzW8UU4a02VOYpZ5PMg5vvGcYzEaG4qePDMNurQDoVPMoeEqqnkG+ vpTyN++hpv5xUb19IKcaZA6cUsan5F+OZjO+IAAH/LyF0sPXguySG4Q1YjdU1Mk2ghEb 3TUQEtTMZSW8Jj+5sIlUsJN2RFRJn0Q+UzM8hBeieKgNxkoN1oRv7/7Et3h2SJvo/2XF htPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775272042; x=1775876842; h=mime-version:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7jZ5KUux4+VUlvSnyvO5Aoy+6V9lhUn3TAFazshgauc=; b=r6rxtChkRcWQyzUZdwj6D9gEQP0brNSUm13TSnG6tzPuHIasYo2DBKL8i7uAV6Qiul nHev7/fFwnbfMz9s4Y7f2gBL6cOQCKZppLLLRIfA58HG2Dpq4r0CKaw+97cFtsRo1kZX GHej1nfeZ6Em+SJh0/F3TrMKYA/0muEnRT+217m45yOPz3LGSEVPSv3tFX9bXoyKYMbS Ub3soqo9VuTanz5+fskPdnn56oWgfSWi7vU5FBqd7YSZvOt1kB4puj4k9JANGWtah6Ok O6TKAt7zgXczByS26YzmqPftsgQPfqDY+9m9zxq3Bm0pU7cjmY+h98RMU9zXSfArj7fb K6jw== X-Gm-Message-State: AOJu0YxI0340Z940CcFppsREOyBAS6VJmTSDV/3nfRcHJcbnkqNCXIDc N/PI5Y8yPZT1wdpSrgNz794XRnywN6u1aoD6TqJPQ5pNJmaIOqB5ab0CnuFi7w== X-Gm-Gg: AeBDievxsZyUaHO49aGqMjT7Ny8uRxpFgzpbm1Dsq+5Z8+t2XXcsoHfTfUNwisbgw8T 10Tn720/eMrVBGd7Z9dnCzXQycnjtGy1nQnW8/OTIKnatLdUElBcWBRFbz7jpdkTTa7TTbct8WS kU7N6JQzv0Z3lpZqmkhQk3LdgvUpb7MwlSDouor6CY6tm3RNnlYEduSkXEn93v3DagLQyMNbLOU rb/5VMzoVFpNPsCHTdKFHOPkg+P4vcZ5iak0n4z8TGQacvyxm+lqvsigMLkI+1NytH+lc31vFEN 6zNR8YTFRY4OfVTT87hFc7vRwn7JOgQrOA+HcRvAYM9TSSuSJfI1fPnVU3PvtR9uFM5xLnCCBo+ Xr2ipYHpWeHw3WOVFntGj91xy7cTUF/D5t2f6YucyhZb/XWjS1p6kE18LuyvouZ1sc1rUHIKHho /WFT6xvqAnXxi8I/PLl0/bgD/X/2OPTRd588KFhFGek0Ggw2HgGtgoa4pPigBiLS82bnxfxN+9d ERgCDyNFIWDbVoZhXQ0dMAo95LlVWDPu/gOn/Jb2mJhHA== X-Received: by 2002:a05:6123:105:b0:56c:d753:db14 with SMTP id 71dfb90a1353d-56dab9e45b1mr1784250e0c.14.1775272041631; Fri, 03 Apr 2026 20:07:21 -0700 (PDT) Received: from MacBook-Pro.local (201-93-59-37.dial-up.telesp.net.br. [201.93.59.37]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56d9baff553sm8493084e0c.8.2026.04.03.20.07.19 for <bug-gnu-emacs@HIDDEN> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2026 20:07:20 -0700 (PDT) From: Rahul Martim Juliato <rahuljuliato@HIDDEN> X-Google-Original-From: Rahul Martim Juliato <rahul.juliato@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: 31.0.50; Improve 'markdown-ts-mode' X-Debbugs-Cc: Date: Sat, 04 Apr 2026 00:07:17 -0300 Message-ID: <m2zf3jzamy.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2607:f8b0:4864:20::a2e; envelope-from=rahuljuliato@HIDDEN; helo=mail-vk1-xa2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, I'm submitting a comprehensive patch that significantly improves 'markdown-ts-mode'. I want to briefly explain the context, as the size of this patch may raise concerns. When 'markdown-ts-mode' was first merged into Emacs, it was intentionally minimal: roughly 100 lines, just enough to get something working, with the expectation of incremental improvements. In recent months, as users started testing the mode, several issues were reported: font-lock leaking beyond code blocks, fill-paragraph merging list items, missing faces, non-clickable links, and lack of editing, navigation, and folding support. The mode worked for basic fontification, but was not yet suitable for regular use. I decided to put my other projects on hold and work through these reports one by one. What began as a set of focused fixes evolved into a broader rework of the mode=E2=80=99s internals. Over time, the implementati= on grew from ~100 lines to approximately 2800. This work was done in close collaboration with St=C3=A9phane Marks, whose reviews, patches, and discussions significantly influenced the design and implementation. I consider him a co-author of this work. Due to strong interdependencies, the changes could not be cleanly split into smaller independent patches. As a result, this is submitted as a single comprehensive change. Important note: there are no breaking changes. Existing behavior is preserved, and all changes are additive. Users of 'markdown-ts-mode' will see the same buffers, with improved correctness, additional features, and fewer bugs. Before describing the features, this patch also addresses several bug fixes: 1. fill-paragraph merged adjacent list items into a single paragraph (bug#80613). 2. Opening a markdown-ts-mode buffer broke dired-hide-details-mode for the rest of the session, due to modifying font-lock-extra-managed-props globally instead of buffer-locally. Fixed using setq-local (bug#80690). 3. Nested or indented list items were filled incorrectly due to column alignment issues (bug#80625). 4. Font-lock leaked beyond code blocks due to appended range settings from embedded language modes. 5. Recursive Markdown code blocks had no fontification. Some known limitations originate from the tree-sitter grammar and are documented in the code (e.g., HTML block handling and block quote embedding limitations). The mode now includes: Fontification: * Dedicated faces for all Markdown elements * Extended coverage (tables, entities, etc.) Links: * Clickable inline, reference, and automatic links * Reference resolution cache Code blocks: * Tree-sitter and non-tree-sitter language support * Embedded editing via markdown-ts-code-block-mode Editing: * Heading and list manipulation * Context-aware newline behavior * Structure insertion helpers * Checkbox toggling Navigation: * Imenu and outline integration * Heading traversal commands Fill: * Correct handling of lists, block quotes, and comments Visual: * Inline images * Markup hiding * Menu integration Additional resources for evaluation: * Full feature checklist: https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/featur= es.md * Test file: https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/test.md * Screenshots: https://codeberg.org/LionyxML/markdown-ts-mode-lab/src/branch/main/demo Overall, this patch brings 'markdown-ts-mode' from a minimal prototype to a mode that is practical for everyday Markdown editing. With this foundation in place, the remaining items in the feature list are already in progress, and features such as exporting, HTML preview, and a test suite can be added with less disruption. Thank you for your time and review. -- Rahul Martim Juliato --=-=-= Content-Type: application/octet-stream; charset=utf-8 Content-Disposition: attachment; filename=0001-Improve-markdown-ts-mode.patch Content-Transfer-Encoding: base64 RnJvbSBmZTcwZWE5ZjE3YjI1OTA2NjM4MzE1MGVmZGRjYTQ3YTA2Yjc1NmE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBBcHIgMjAyNiAyMzo0MTo0NyAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEltcHJvdmUgJ21hcmtkb3duLXRzLW1vZGUnCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpPdmVyaGF1bCAnbWFya2Rvd24tdHMtbW9kZScgd2l0aCBjb21wcmVoZW5zaXZl IGZvbnRpZmljYXRpb24sCmNvZGUgYmxvY2sgaGFuZGxpbmcsIGVkaXRpbmcgY29tbWFuZHMsIGZp bGwtcGFyYWdyYXBoIHN1cHBvcnQsCmlubGluZSBpbWFnZSBwcmV2aWV3cywgYW5kIGEgbW9kZSBt ZW51LgoKKiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsOiBFeHBhbmQgQ29tbWVu dGFyeSB3aXRoCmRvY3VtZW50YXRpb24gZm9yIGNvZGUgYmxvY2sgbGFuZ3VhZ2UgbW9kZXMsIGNv ZGUgYmxvY2sKY29tbWFuZHMsIGJpZGlyZWN0aW9uYWwgdGV4dCwgYW5kIGtub3duIHRyZWUtc2l0 dGVyIGdyYW1tYXIKYnVncy4KKG1hcmtkb3duLXRzKTogTmV3IGN1c3RvbWl6YXRpb24gZ3JvdXAg d2l0aCA6dmVyc2lvbiBhbmQKOnBhY2thZ2UtdmVyc2lvbiB0YWdzLgoobWFya2Rvd24tdHMtaGlk ZS1tYXJrdXApOiBBZGQgOnZlcnNpb24gYW5kIDpwYWNrYWdlLXZlcnNpb24uCihtYXJrZG93bi10 cy1lbGxpcHNpcyk6IE5ldyBvcHRpb24gZm9yIGZvbGRlZCBoZWFkaW5nIGVsbGlwc2lzLgoobWFy a2Rvd24tdHMtbWVudS1iYXItc2hvdyk6IE5ldyBvcHRpb24gdG8gdG9nZ2xlIG1vZGUgbWVudS4K KG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZyk6IE5ldyBvcHRpb24gZm9yIGRlZmF1bHQgZm9s ZApsZXZlbC4KKG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMpOiBOZXcgb3B0aW9uIHRvIGRpc3Bs YXkgaW5saW5lCmltYWdlcy4KKG1hcmtkb3duLXRzLWltYWdlLW1heC13aWR0aCk6IE5ldyBvcHRp b24gZm9yIGltYWdlIG1heCB3aWR0aC4KKG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGlu ZS1pbWFnZXMpOiBOZXcgb3B0aW9uIGZvcgpyZW1vdGUgaW1hZ2UgaGFuZGxpbmcuCihtYXJrZG93 bi10cy1jaGVja2VkLWNoZWNrYm94KTogTmV3IG9wdGlvbiBmb3IgY2hlY2tlZCBjaGVja2JveApk aXNwbGF5IHN0cmluZy4KKG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCk6IE5ldyBvcHRp b24gZm9yIHVuY2hlY2tlZApjaGVja2JveCBkaXNwbGF5IHN0cmluZy4KKG1hcmtkb3duLXRzLXRo ZW1hdGljLWJyZWFrLWNoYXJhY3Rlcik6IE5ldyBvcHRpb24gZm9yIHRoZW1hdGljCmJyZWFrIGRp c3BsYXkgY2hhcmFjdGVyLgoobWFya2Rvd24tdHMtZW1waGFzaXMsIG1hcmtkb3duLXRzLWJvbGQp CihtYXJrZG93bi10cy1zdHJpa2V0aHJvdWdoLCBtYXJrZG93bi10cy1saW5rKQoobWFya2Rvd24t dHMtbGluay1kZXN0aW5hdGlvbiwgbWFya2Rvd24tdHMtY29kZS1zcGFuKQoobWFya2Rvd24tdHMt Y29kZS1ibG9jaywgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXJrdXAtaGlkZGVuKQoobWFya2Rv d24tdHMtaW5kZW50ZWQtY29kZS1ibG9jaywgbWFya2Rvd24tdHMtaHRtbC10YWcpCihtYXJrZG93 bi10cy1odG1sLWJsb2NrLCBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhaykKKG1hcmtkb3duLXRz LWVudGl0eS1yZWZlcmVuY2UpCihtYXJrZG93bi10cy1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVu Y2UsIG1hcmtkb3duLXRzLWxhdGV4KQoobWFya2Rvd24tdHMtdGFibGUtaGVhZGVyLCBtYXJrZG93 bi10cy10YWJsZS1jZWxsKQoobWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwsIG1hcmtk b3duLXRzLXRhc2stdW5jaGVja2VkKQoobWFya2Rvd24tdHMtdGFzay1jaGVja2VkKTogTmV3IGZh Y2VzLgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2Rlcyk6IE5ldyB2YXJpYWJsZSByZXBsYWNp bmcKbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbWFwIGFuZAptYXJrZG93bi10cy1j b2RlLWJsb2NrLXNvdXJjZS1tb2RlLW1hcCB3aXRoIHVuaWZpZWQgbGFuZ3VhZ2UgdG8KbW9kZSBt YXBwaW5nIGluY2x1ZGluZyBoZXVyaXN0aWMgbG9va3VwLgoobWFya2Rvd24tdHMtLW1ha2UtbGlu ay1idXR0b24pOiBOZXcgZnVuY3Rpb24gdG8gY3JlYXRlCmNsaWNrYWJsZSBsaW5rIGJ1dHRvbnMg d2l0aCBtYWlsdG8sIGJyb3dzZS11cmwsIGFuZCBmaW5kLWZpbGUKZGlzcGF0Y2guCihtYXJrZG93 bi10cy0tZm9udGlmeS1saW5rLWRlc3RpbmF0aW9uKTogTmV3IGZvbnRpZmllciB0aGF0CmhpZGVz IGxpbmsgZGVzdGluYXRpb25zIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRzLS1s aW5rLXJlZi1jYWNoZSwgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRpY2spCihtYXJrZG93 bi10cy0tbGluay1yZWYtZGVmaW5pdGlvbnMsCm1hcmtkb3duLXRzLS1yZXNvbHZlLWxpbmstcmVm KTogTmV3IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24KY2FjaGUgd2l0aCBjYXNlLWluc2Vuc2l0 aXZlIG1hdGNoaW5nIHBlciBDb21tb25NYXJrIHNwZWMuCihtYXJrZG93bi10cy0tZm9udGlmeS1s aW5rLW5vZGUpOiBOZXcgZm9udGlmaWVyIGZvciBpbmxpbmUsCnJlZmVyZW5jZSwgc2hvcnRjdXQs IGFuZCBjb2xsYXBzZWQgbGlua3MgYXMgY2xpY2thYmxlIGJ1dHRvbnMuCihtYXJrZG93bi10cy0t Zm9udGlmeS1hdXRvbGluayk6IE5ldyBmb250aWZpZXIgZm9yIFVSSSBhbmQgZW1haWwKYXV0b2xp bmtzIHdpdGggYW5nbGUgYnJhY2tldCBoaWRpbmcuCihtYXJrZG93bi10cy0tZm9udGlmeS1saW5r LXJlZi1sYWJlbCkKKG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWRlc3RpbmF0aW9uKTog TmV3IGZvbnRpZmllcnMgZm9yCmxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgoobWFya2Rvd24t dHMtLWxhdGV4LWJsb2NrLXZhbGlkLXApCihtYXJrZG93bi10cy0tZm9udGlmeS1sYXRleC1ibG9j ayk6IE5ldyBMYVRlWC9tYXRoIGZvbnRpZmllcgp3aXRoIGNyb3NzLXBhcmFncmFwaCB2YWxpZGF0 aW9uLgoobWFya2Rvd24tdHMtLWZvbnRpZnktYmFja3NsYXNoLWVzY2FwZSk6IE5ldyBmb250aWZp ZXIgdGhhdApoaWRlcyBiYWNrc2xhc2ggaW4gZXNjYXBlcyBleGNlcHQgaW5zaWRlIExhVGVYIGJs b2Nrcy4KKG1hcmtkb3duLXRzLS1kZWNvZGUtZW50aXR5LCBtYXJrZG93bi10cy0tZm9udGlmeS1l bnRpdHkpOiBOZXcKSFRNTCBlbnRpdHkgZGVjb2RlciBhbmQgZm9udGlmaWVyIHVzaW5nIG9yZy1l bnRpdGllcyBhbmQKc2dtbC1jaGFyLW5hbWVzIHdpdGggZGlzcGxheSBwcm9wZXJ0eSBmb3IgZGVj b2RlZCB2YWx1ZXMuCihtYXJrZG93bi10cy0tZm9udGlmeS1jaGVja2JveCk6IE5ldyBmb250aWZp ZXIgc2hvd2luZyBVbmljb2RlCmNoZWNrYm94IHN5bWJvbHMgd2hlbiBtYXJrdXAgaXMgaGlkZGVu LgoobWFya2Rvd24tdHMtLWZvbnRpZnktdGhlbWF0aWMtYnJlYWspOiBOZXcgZm9udGlmaWVyIHNo b3dpbmcKaG9yaXpvbnRhbCBsaW5lIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KKG1hcmtkb3duLXRz LS1mb250aWZ5LWNvZGUtYmxvY2spOiBOZXcgZm9udGlmaWVyIGFwcGx5aW5nCmJhY2tncm91bmQg b3ZlcmxheSB0byBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlIGFuZCBtb2RlCnByb3BlcnRpZXMu CihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWF0LXApCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxh bmd1YWdlLWF0KQoobWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlLWF0KTogTmV3IGFjY2Vzc29y cyBmb3IgY29kZSBibG9jawpvdmVybGF5IHByb3BlcnRpZXMuCihtYXJrZG93bi10cy0taW1lbnUt Y29kZS1ibG9jay1ub2RlLXApOiBOZXcgaGVscGVyIGZvciBpbWVudQpjb2RlIGJsb2NrIGRldGVj dGlvbi4KKG1hcmtkb3duLXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXApCihtYXJrZG93bi10cy0t Zm9udGlmeS1pbWFnZSk6IE5ldyBpbmxpbmUgaW1hZ2UgZGlzcGxheSB3aXRoCnN0YW5kYWxvbmUg YW5kIGlubGluZSBwb3NpdGlvbmluZy4KKG1hcmtkb3duLXRzLS1iYXJlLXVybC1yZWdleHApCiht YXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhwKQoobWFya2Rvd24tdHMtLWZvbnRpZnkt YmFyZS11cmkpOiBOZXcgYmFyZSBVUkwvZW1haWwKZm9udGlmaWNhdGlvbiB2aWEgaml0LWxvY2sg dXNpbmcgZ290by1hZGRyIHJlZ2V4cHMuCihtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5ncyk6 IFJld3JpdGUgd2l0aCBkZWRpY2F0ZWQgZmFjZXMsCmN1c3RvbSBmb250aWZpZXJzLCBhbmQgbmV3 IGZvbnQtbG9jayBmZWF0dXJlcyBmb3IgYWxsIGlubGluZSBhbmQKYmxvY2sgZWxlbWVudHMuCiht YXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpCihtYXJrZG93bi10cy0tY29kZS1ibG9j ay1ub24tdHMtbW9kZXMpOiBOZXcgYnVmZmVyLWxvY2FsIGFsaXN0cwpmb3IgY29kZSBibG9jayBs YW5ndWFnZSB0cmFja2luZy4KKG1hcmtkb3duLXRzLS1oYXJ2ZXN0LW1vZGUtdHJlZXNpdC1jb25m aWd1cmF0aW9uKTogUmVuYW1lZCBmcm9tCm1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29u ZmlncyB3aXRoIGRlbGF5LW1vZGUtaG9va3MuCihtYXJrZG93bi10cy0tY29uZmlndXJlLWN1cnJl bnQtYnVmZmVyKTogUmVuYW1lZCBmcm9tCm1hcmtkb3duLXRzLS1hZGQtY29uZmlnLWZvci1tb2Rl OyBkaXNhYmxlIHJhbmdlIHNldHRpbmdzIGFwcGVuZAp0byBwcmV2ZW50IGZvbnQtbG9jayBsZWFr aW5nLgoobWFya2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUpOiBOZXcgaGVscGVyIGV4dHJhY3Rp bmcgbGFuZ3VhZ2UKc3ltYm9sIGZyb20gY29kZV9mZW5jZV9jb250ZW50IG5vZGUuCihtYXJrZG93 bi10cy0tZm9udGlmeS1ub24tdHMtY29kZS1ibG9jayk6IE5ldyBmb250aWZpZXIgZm9yCm5vbi10 cmVlLXNpdHRlciBtb2RlcyB2aWEgdGVtcG9yYXJ5IGJ1ZmZlciBmb250LWxvY2suCihtYXJrZG93 bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZS1tb2RlKTogTmV3IGZ1bmN0aW9uIHdpdGgKaGV1cmlz dGljIG1vZGUgbmFtZSBwcm9iaW5nLgoobWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3Vh Z2UpOiBSZW5hbWVkIGZyb20KbWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9jay1sYW5ndWFn ZSB3aXRoIHN1cHBvcnQgZm9yIG5vbi10cwptb2RlcyBhbmQgcmVjdXJzaXZlIG1hcmtkb3duIGhh bmRsaW5nLgoobWFya2Rvd24tdHMtY29kZS1ibG9jay1jb21tYW5kcykKKG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stdGhpbmctY29tbWFuZHMpCihtYXJrZG93bi10cy1jb2RlLWJsb2NrLXJlZ2lvbi1j b21tYW5kcyk6IE5ldyBjb21tYW5kIGxpc3RzIGZvcgpjb2RlLWJsb2NrIGNvbnRleHQgZXhlY3V0 aW9uLgoobWFya2Rvd24tdHMtLWVuYWJsZS1jb2RlLWJsb2NrLW1vZGUpCihtYXJrZG93bi10cy0t bWF5YmUtcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jaykKKG1hcmtkb3duLXRzLS1jb2RlLWJsb2Nr LXhyZWYtZmluZC1kZWZpbml0aW9ucykKKG1hcmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2Rl LWJsb2NrKTogTmV3IGNvZGUgYmxvY2sgbWlub3IKbW9kZSB3aXRoIGluZGlyZWN0IGJ1ZmZlciBj b21tYW5kIGRpc3BhdGNoLgoobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKTogVXBkYXRlIHJh bmdlIGNvbmZpZ3VyYXRpb24uCihtYXJrZG93bi10cy0tcmVtb3ZlLWltYWdlLW92ZXJsYXlzKQoo bWFya2Rvd24tdHMtLW91dGxpbmUtdmlldy1jaGFuZ2UpOiBOZXcgaGVscGVycyBmb3IgaW1hZ2UK b3ZlcmxheSBtYW5hZ2VtZW50IGR1cmluZyBvdXRsaW5lIGZvbGQvdW5mb2xkLgoobWFya2Rvd24t dHMtLXNldC1oaWRlLW1hcmt1cCk6IENsZWFyIGltYWdlIG92ZXJsYXlzIHdoZW4KdG9nZ2xpbmcg bWFya3VwIHZpc2liaWxpdHkuCihtYXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFnZXMpCihtYXJr ZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcyk6IE5ldyBmdW5jdGlvbnMgZm9yIHRvZ2dsaW5n CmlubGluZSBpbWFnZSBkaXNwbGF5LgoobWFya2Rvd24tdHMtLXBhcnNlci1oZWFkaW5nLW1heC1s ZXZlbCk6IE5ldyBjb25zdGFudC4KKG1hcmtkb3duLXRzLS1oZWFkaW5nLWF0LXBvaW50LCBtYXJr ZG93bi10cy0taGVhZGluZy1sZXZlbCkKKG1hcmtkb3duLXRzLS1zZWN0aW9uLWF0LXBvaW50KTog TmV3IGhlYWRpbmcgbmF2aWdhdGlvbiBoZWxwZXJzLgoobWFya2Rvd24tdHMtcHJvbW90ZSwgbWFy a2Rvd24tdHMtZGVtb3RlKTogTmV3IGNvbW1hbmRzIGZvcgpoZWFkaW5nIGFuZCBsaXN0IGl0ZW0g cHJvbW90aW9uL2RlbW90aW9uIHdpdGggcmVnaW9uIHN1cHBvcnQuCihtYXJrZG93bi10cy0tcHJv bW90ZS1vci1kZW1vdGUpCihtYXJrZG93bi10cy0tcHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uKTog TmV3IGhlYWRpbmcgbGV2ZWwKYWRqdXN0bWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1tb3Zl LXN1YnRyZWUtdXAsIG1hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duKToKTmV3IGNvbW1hbmRz IGZvciBtb3Zpbmcgc2VjdGlvbnMgYW5kIGxpc3QgaXRlbXMuCihtYXJrZG93bi10cy0tc2VjdGlv bi1mb2xkZWQtcCkKKG1hcmtkb3duLXRzLS1tb3ZlLXN1YnRyZWUtdXAtb3ItZG93bik6IE5ldyBz dWJ0cmVlIG1vdmUgd2l0aApmb2xkaW5nIHN0YXRlIHByZXNlcnZhdGlvbi4KKG1hcmtkb3duLXRz LXRvZ2dsZS1jaGVja2JveCk6IE5ldyBjb21tYW5kIHRvIHRvZ2dsZSB0YXNrIGxpc3QKY2hlY2ti b3hlcy4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQpOiBOZXcgaGVscGVyIHdpdGgg YmxvY2sgcXVvdGUKbWFya2VyIGhhbmRsaW5nLgoobWFya2Rvd24tdHMtLWxpc3QtbWFya2VyLXdp ZHRoLCBtYXJrZG93bi10cy0tbGlzdC1pdGVtLXJlZ2lvbikKKG1hcmtkb3duLXRzLS1saXN0LW9y ZGVyZWQtaXRlbS1wKTogTmV3IGxpc3QgaXRlbSBoZWxwZXJzLgoobWFya2Rvd24tdHMtLWxpc3Qt cHJvbW90ZS1vci1kZW1vdGUpOiBOZXcgZnVuY3Rpb24gd2l0aCBvcmRlcmVkCmxpc3QgbmVzdGlu ZyBndWFyZC4KKG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sLCBtYXJrZG93bi10cy0tbGlzdC1t b3ZlKTogTmV3IGxpc3QKaXRlbSBtb3ZlbWVudCBmdW5jdGlvbnMuCihtYXJrZG93bi10cy1yZW51 bWJlci1saXN0KTogTmV3IGNvbW1hbmQgZm9yIHNlcXVlbnRpYWwgbGlzdApyZW51bWJlcmluZyB3 aXRoIHByZWZpeCBhcmd1bWVudCBzdXBwb3J0LgoobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXct bWFya2VyKQoobWFya2Rvd24tdHMtLW5ldy1tYXJrZXItZm9yLWxpbmUpOiBOZXcgbWFya2VyIHN0 cmluZyBnZW5lcmF0b3JzCmZvciBsaXN0IGl0ZW0gaW5zZXJ0aW9uLgoobWFya2Rvd24tdHMtLWxp bmUtYmxvY2stcXVvdGUtZGVwdGgpOiBOZXcgaGVscGVyIGNvdW50aW5nIGJsb2NrCnF1b3RlIGRl cHRoLgoobWFya2Rvd24tdHMtbmV3bGluZSk6IE5ldyBSRVQgY29tbWFuZCBmb3IgY29udGV4dC1h d2FyZQpuZXdsaW5lLgoobWFya2Rvd24tdHMtaW5zZXJ0LWxpc3QtaXRlbSk6IE5ldyBNLVJFVCBj b21tYW5kIHRoYXQgY3JlYXRlcyBhCm5ldyBsaXN0IGl0ZW0uCihtYXJrZG93bi10cy0tZmlsbC11 bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5KTogTmV3IHRyZWUtc2l0dGVyCnF1ZXJ5IGZvciB1bmZpbGxh YmxlIGJsb2Nrcy4KKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4pOiBOZXcgaGVs cGVyIGZvciBsaXN0IGl0ZW0KdGV4dCBhbGlnbm1lbnQuCihtYXJrZG93bi10cy0tZmlsbC1saXN0 LWl0ZW0pOiBOZXcgZnVuY3Rpb24gZmlsbGluZyB3aXRoaW4gbGlzdAppdGVtcyB3aXRob3V0IG1l cmdpbmcgYWRqYWNlbnQgaXRlbXMuCihtYXJrZG93bi10cy0tYWRhcHRpdmUtZmlsbCk6IE5ldyBh ZGFwdGl2ZSBmaWxsIGZ1bmN0aW9uIGZvcgpsaXN0IGl0ZW0gY29udGludWF0aW9uLgoobWFya2Rv d24tdHMtLWZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgpOiBOZXcgcGFyYWdyYXBoIG1vdGlvbgpyZXNw ZWN0aW5nIGxpc3QgaXRlbXMgYW5kIHVuZmlsbGFibGUgYmxvY2tzLgoobWFya2Rvd24tdHMtZmls bC1wYXJhZ3JhcGgpOiBOZXcgZmlsbC1wYXJhZ3JhcGgtZnVuY3Rpb24gd2l0aApjb25kKiBkaXNw YXRjaCBmb3IgbGlzdHMsIGJsb2NrIHF1b3RlcywgSFRNTCBjb21tZW50cywgYW5kCnVuZmlsbGFi bGUgYmxvY2tzLgoobWFya2Rvd24tdHMtLWZpbGwtaHRtbC1jb21tZW50KTogTmV3IEhUTUwgY29t bWVudCBmaWxsZXIgd2l0aApjb250aW51YXRpb24gYWxpZ25tZW50LgoobWFya2Rvd24tdHMtLWJs b2NrLXF1b3RlLXByZWZpeCk6IE5ldyBoZWxwZXIgcHJlc2VydmluZwpleGlzdGluZyBibG9jayBx dW90ZSBtYXJrZXIgc3R5bGUuCihtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSk6IE5ldyBi bG9jayBxdW90ZSBmaWxsZXIgd2l0aApsaXN0IGl0ZW0gdGV4dCBjb2x1bW4gYWxpZ25tZW50Lgoo bWFya2Rvd24tdHMtZW1waGFzaXMtYWxpc3QpOiBOZXcgYWxpc3Qgb2YgZW1waGFzaXMgbWFya2Vy cy4KKG1hcmtkb3duLXRzLS1lbXBoYXNpcy1ub2RlLWF0LXBvaW50KTogTmV3IHRyZWUtc2l0dGVy IGJhc2VkCmVtcGhhc2lzIGRldGVjdGlvbi4KKG1hcmtkb3duLXRzLXJlbW92ZS1lbXBoYXNpcyk6 IE5ldyBjb21tYW5kIHJlbW92aW5nIGVtcGhhc2lzIGF0CnBvaW50IG9yIHJlZ2lvbi4KKG1hcmtk b3duLXRzLWVtcGhhc2l6ZSk6IE5ldyBpbnRlcmFjdGl2ZSBlbXBoYXNpcyBpbnNlcnRpb24gd2l0 aApyZWdpb24gd3JhcHBpbmcgYW5kIHdvcmQtYXQtcG9pbnQgc3VwcG9ydC4KKG1hcmtkb3duLXRz LWluc2VydC1zdHJ1Y3R1cmUpOiBOZXcgY29tbWFuZCBmb3IgaW5zZXJ0aW5nIGNvZGUKYmxvY2tz LCBibG9jayBxdW90ZXMsIGFuZCBkaXZpZGVycy4KKG1hcmtkb3duLXRzLS1pbnNlcnQtY29kZS1i bG9jayk6IE5ldyBmdW5jdGlvbiB3aXRoIGxhbmd1YWdlCmNvbXBsZXRpb24gZnJvbSBrbm93biBt b2Rlcy4KKG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2stcXVvdGUpOiBOZXcgZnVuY3Rpb24gd2l0 aCByZWdpb24Kd3JhcHBpbmcuCihtYXJrZG93bi10cy0taW5zZXJ0LWRpdmlkZXIpOiBOZXcgZnVu Y3Rpb24gZm9yIGhvcml6b250YWwKcnVsZXMuCihtYXJrZG93bi10cy0tYXBwbHktZWxsaXBzaXMp OiBOZXcgZnVuY3Rpb24gYXBwbHlpbmcgY3VzdG9tCmVsbGlwc2lzIHZpYSBkaXNwbGF5IHRhYmxl LgoobWFya2Rvd24tdHMtLXNldC11cCk6IFJlbmFtZWQgZnJvbSBtYXJrZG93bi10cy1zZXR1cDsg cmVnaXN0ZXIKaml0LWxvY2sgZm9yIGJhcmUgVVJJIGZvbnRpZmljYXRpb247IG1hbmFnZQpmb250 LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcyBsb2NhbGx5LgoobWFya2Rvd24tdHMtb3V0bGluZS1j eWNsZSk6IE5ldyBUQUIgY29tbWFuZCBjeWNsaW5nIG91dGxpbmUKdmlzaWJpbGl0eSBvbiBoZWFk aW5ncy4KKG1hcmtkb3duLXRzLW1vZGUtbWFwKTogTmV3IGtleW1hcCB3aXRoIFJFVCBib3VuZCB0 bwptYXJrZG93bi10cy1uZXdsaW5lIChjb250ZXh0LWF3YXJlIGNvbnRpbnVhdGlvbiksIE0tUkVU IGJvdW5kIHRvCm1hcmtkb3duLXRzLWluc2VydC1saXN0LWl0ZW0gKGV4cGxpY2l0IG5ldyBpdGVt IGNyZWF0aW9uKSwgYW5kCmJpbmRpbmdzIGZvciBoZWFkaW5nIG5hdmlnYXRpb24sIHN0cnVjdHVy ZSBlZGl0aW5nLCBlbXBoYXNpcywKYW5kIGxpc3Qgb3BlcmF0aW9ucy4KKG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZS1tYXApOiBOZXcga2V5bWFwIGZvciBjb2RlIGJsb2NrCmNvbnRleHQgd2l0 aCBpbmRlbnQsIGNvbW1lbnQsIHhyZWYsIGZpbGwsIGFuZCBNLVJFVCBiaW5kaW5nczsKb3ZlcnJp ZGVzIGJvdGggUkVUIGFuZCBNLVJFVCB0bwplbGVjdHJpYy1uZXdsaW5lLWFuZC1tYXliZS1pbmRl bnQgdG8gcHJldmVudCBsaXN0IG1hcmtlcnMgaW5zaWRlCmNvZGUgYmxvY2tzLgoobWFya2Rvd24t dHMtbW9kZS1tZW51KTogTmV3IG1lbnUgYmFyIHdpdGggU2hvdy9IaWRlLCBOYXZpZ2F0ZQpIZWFk aW5ncywgRWRpdCBTdHJ1Y3R1cmUsIGFuZCBFZGl0aW5nIHNlY3Rpb25zLgoobWFya2Rvd24tdHMt bW9kZSk6IEFkZCBvdXRsaW5lLW1pbm9yLW1vZGUsIGVsbGlwc2lzLCBmb2xkaW5nLApmaWxsLXBh cmFncmFwaCBpbnRlZ3JhdGlvbiwgY29kZS1ibG9jay1tb2RlIGhvb2tzLCBjb21tZW50CnNldHRp bmdzLCBhbmQgb3V0bGluZS12aWV3LWNoYW5nZS1ob29rLgoobWFya2Rvd24tdHMtY29kZS1ibG9j ay1tb2RlKTogTmV3IG1pbm9yIG1vZGUgZm9yIGNvZGUgYmxvY2sKY29udGV4dC4KKG1hcmtkb3du LXRzLW1vZGUtbWF5YmUpOiBVcGRhdGUgZG9jc3RyaW5nLgpBdXRvLW1vZGUtYWxpc3Q6IEFkZCAu bWFya2Rvd24gYW5kIC5tZHggZXh0ZW5zaW9ucy4KSW5jbHVkZXMgZml4ZXMgZm9yOiAoYnVnIzgw NjEzKSAoYnVnIzgwNjI1KSAoYnVnIzgwNjkwKQoKQ28tYXV0aG9yZWQtYnk6IFN0w6lwaGFuZSBN YXJrcyA8c2hpcG1pbnRzQGdtYWlsLmNvbT4KLS0tCiBsaXNwL3RleHRtb2Rlcy9tYXJrZG93bi10 cy1tb2RlLmVsIHwgMjY3OCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgMjQ5OSBpbnNlcnRpb25zKCspLCAxNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC90ZXh0bW9kZXMvbWFya2Rvd24tdHMtbW9kZS5lbCBiL2xpc3AvdGV4dG1vZGVzL21hcmtk b3duLXRzLW1vZGUuZWwKaW5kZXggNjU3ZDZiYzQ2NmQuLjZmZTNmNzc2MDFhIDEwMDY0NAotLS0g YS9saXNwL3RleHRtb2Rlcy9tYXJrZG93bi10cy1tb2RlLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVz L21hcmtkb3duLXRzLW1vZGUuZWwKQEAgLTIsMTAgKzIsMTIgQEAKIAogOzsgQ29weXJpZ2h0IChD KSAyMDI0LTIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLTs7IEF1dGhvciAg ICAgOiBSYWh1bCBNYXJ0aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Ci07OyBN YWludGFpbmVyIDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwuY29t PgotOzsgQ3JlYXRlZCAgICA6IEFwcmlsIDIwMjQKLTs7IEtleXdvcmRzICAgOiBtYXJrZG93biBt ZCBsYW5ndWFnZXMgdHJlZS1zaXR0ZXIKKzs7IEF1dGhvciAgICAgICAgICAgOiBSYWh1bCBNYXJ0 aW0gSnVsaWF0byA8cmFodWwuanVsaWF0b0BnbWFpbC5jb20+Cis7OyBNYWludGFpbmVyICAgICAg IDogUmFodWwgTWFydGltIEp1bGlhdG8gPHJhaHVsLmp1bGlhdG9AZ21haWwuY29tPgorOzsgQ3Jl YXRlZCAgICAgICAgICA6IEFwcmlsIDIwMjQKKzs7IFZlcnNpb24gICAgICAgICAgOiAgMS4wCis7 OyBQYWNrYWdlLVJlcXVpcmVzIDogKChlbWFjcyAiMzEuMSIpKQorOzsgS2V5d29yZHMgICAgICAg ICA6IG1hcmtkb3duIG1kIHRleHQgZWRpdCBsYW5ndWFnZXMgdHJlZS1zaXR0ZXIKIAogOzsgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgogCkBAIC0yMiwxMDEgKzI0LDIwMiBAQAogOzsg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKIDs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotOzs7IFRyZWUtc2l0dGVyIGxhbmd1YWdlIHZlcnNp b25zCis7OzsgQ29tbWVudGFyeToKKworOzsgVHJlZS1zaXR0ZXIgTGFuZ3VhZ2UgVmVyc2lvbnMK IDs7CiA7OyBtYXJrZG93bi10cy1tb2RlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIHRoZSBmb2xsb3dp bmcgZ3JhbW1hcnMgYW5kIHZlcnNpb246CiA7OyAtIHRyZWUtc2l0dGVyLW1hcmtkb3duOiB2MC40 LjEKIDs7IC0gdHJlZS1zaXR0ZXItbWFya2Rvd24taW5saW5lOiB2MC40LjEKIDs7Ci07OyBXZSB0 cnkgb3VyIGJlc3QgdG8gbWFrZSBidWlsdGluIG1vZGVzIHdvcmsgd2l0aCBsYXRlc3QgZ3JhbW1h cgotOzsgdmVyc2lvbnMsIHNvIGEgbW9yZSByZWNlbnQgZ3JhbW1hciBoYXMgYSBnb29kIGNoYW5j ZSB0byB3b3JrIHRvby4KLTs7IFNlbmQgdXMgYSBidWcgcmVwb3J0IGlmIGl0IGRvZXNuJ3QuCi0K LTs7OyBDb21tZW50YXJ5OgorOzsgV2UgdHJ5IG91ciBiZXN0IHRvIG1ha2UgYnVpbHQtaW4gbW9k ZXMgd29yayB3aXRoIGxhdGVzdCBncmFtbWFyCis7OyB2ZXJzaW9ucywgc28gYSBtb3JlIHJlY2Vu dCBncmFtbWFyIGhhcyBhIGdvb2QgY2hhbmNlIHRvIHdvcmsuICBTZW5kCis7OyB1cyBhIGJ1ZyBy ZXBvcnQgaWYgaXQgZG9lc24ndC4KKzs7Cis7OyBCaWRpcmVjdGlvbmFsIFRleHQgQ29uc2lkZXJh dGlvbnMKKzs7Cis7OyBUZXh0IHdpdGggbWFya3VwIG1heSBuZWVkIGFuIGV4dHJhIG5ld2xpbmUg YmVmb3JlIGJpZGlyZWN0aW9uYWwgdGV4dAorOzsgZm9yIGl0IHRvIHNob3cgY29ycmVjdGx5LiAg VGhpcyBpcyBhIGxpbWl0YXRpb24gaW4gdGhlIEVtYWNzIGRpc3BsYXkKKzs7IGVuZ2luZS4KKzs7 Cis7OyBDb2RlIEJsb2NrIExhbmd1YWdlIE1vZGUgQ29uc2lkZXJhdGlvbnMKKzs7Cis7OyBGZW5j ZWQgY29kZSBibG9jayBsYW5ndWFnZSBtb2RlcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSB0YWJsZQor OzsgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMnIGFuZCBoZXVyaXN0aWNzIGFkZGluZyAi LXRzLW1vZGUiIGFuZAorOzsgIi1tb2RlIiB0byB0aGUgbGFuZ3VhZ2UgbmFtZS4gIElmIHlvdXIg bGFuZ3VhZ2UncyBtb2RlIGlzIG5vdAorOzsgcHJvcGVybHkgcmVjb2duaXplZCwgYWRkIGl0IHRv IGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzJywgd2hpY2gKKzs7IHNlZS4KKzs7Cis7OyBF YWNoIGxhbmd1YWdlJ3MgbWFqb3IgbW9kZSBpcyBlbmFibGVkIG9uY2UgcGVyIGBtYXJrZG93bi10 cy1tb2RlJworOzsgYnVmZmVyIGluIGEgdGVtcG9yYXJ5IGJ1ZmZlciB0byBleHRyYWN0IGl0cyBk ZWZhdWx0IGZvbnQtbG9jayBhbmQKKzs7IHRyZWUtc2l0dGVyIHNldHRpbmdzLiAgSW4gY29udmVu dGlvbmFsIG5vbi10cmVlc2l0IGNvZGUgYmxvY2tzLCB0aGUKKzs7IG1ham9yIG1vZGUgaXMgZW5h YmxlZCBlYWNoIHRpbWUgdGhlIGJsb2NrIGlzIGZvbnRpZmllZC4KKzs7Cis7OyBOT1RFOiBNYWpv ciBtb2RlIGhvb2tzIGFyZSBub3QgcnVuIGFuZCBmb250LWxvY2ssIHRyZWVzaXQsIGluZGVudCwK Kzs7IGNvbW1lbnQgcmVjb2duaXRpb24sIGV0Yy4gY3VzdG9taXphdGlvbnMgeW91IG1pZ2h0IGhh dmUgaW4geW91ciBob29rcworOzsgYXJlIG5vdCBhcHBsaWVkLiAgQXMgYSByZXN1bHQsIHlvdXIg Y29kZSBibG9ja3MgbWlnaHQgYXBwZWFyCis7OyBkaWZmZXJlbnQgaW4gYG1hcmtkb3duLXRzLW1v ZGUnIG1vZGUgdGhhbiBpbiBuYXRpdmUgbGFuZ3VhZ2UgbWFqb3IKKzs7IG1vZGUgYnVmZmVycy4g IE5vdCBydW5uaW5nIGhvb2tzIGF2b2lkcyB0aGUgY29zdCBvZiBlYWNoIG1vZGUgaG9vaworOzsg YW5kIGF2b2lkcyBjZXJ0YWluIHJlY3Vyc2l2ZSB0cmVlc2l0IGNhbGxiYWNrIGlzc3Vlcy4KKzs7 Cis7OyBDb2RlIEJsb2NrIENvbW1hbmRzCiA7OworOzsgU29tZSBjb21tb24gY29tbWFuZHMgd2ls bCBvcGVyYXRlIHdpdGhpbiBhIGNvZGUgYmxvY2sgYW5kIGluIGl0cworOzsgbW9kZS4gIFRoaXMg aXMgaW1wbGVtZW50ZWQgdXNpbmcgYW4gaW5kaXJlY3QgYnVmZmVyIGFuZCBzb21lIGNvbW1hbmRz Cis7OyBtYXkgb3BlcmF0ZSBzbGlnaHRseSBkaWZmZXJlbnRseSB0byB0aGUgc2FtZSBjb21tYW5k cyBpbnZva2VkIGluIGEKKzs7IG5hdGl2ZSBtb2RlIGJ1ZmZlci4KKzs7Cis7OyBUcmVlIFNpdHRl ciBCdWdzCis7OworOzsgYG1hcmtkb3duLXRzLW1vZGUnIHJlbGllcyBvbiB0aGUgdW5kZXJseWlu ZyB0cmVlLXNpdHRlciBsaWJyYXJ5IGluCis7OyBFbWFjcyAoY2hvc2VuIGF0IGl0cyBidWlsZCB0 aW1lKSwgYW5kIGxhbmd1YWdlIGdyYW1tYXJzIHlvdSBoYXZlCis7OyBpbnN0YWxsZWQuICBUaGVy ZSBhcmUga25vd24gYW5kIHJlcG9ydGVkIGJ1Z3Mgd2hpY2ggbmVnYXRpdmVseSBhZmZlY3QKKzs7 IGNlcnRhaW4gZmVhdHVyZXMuICBUaGlzIG1vZGUgc2hvdWxkIGJlbmVmaXQgYXMgdGhlc2UgYnVn cyBhcmUgZml4ZWQKKzs7IG9yIHdvcmtlZCBhcm91bmQuCis7OworOzsgLSBUaGUgTWFya2Rvd24g Z3JhbW1hciBpbnNlcnRzIGJsb2NrX2NvbnRpbnVhdGlvbiBub2RlcyBhcyBjaGlsZHJlbgorOzsg ICBvZiBjb2RlX2ZlbmNlX2NvbnRlbnQsIHdoaWNoIGNvbmZ1c2VzIGJvdGggdGhlIGluc3BlY3Rv ciBhbmQgdGhlCis7OyAgIGVtYmVkZGVkIHBhcnNlci4gIFRoaXMgYWZmZWN0cyBjb2RlIGJsb2Nr cyBpbnNpZGUgYmxvY2sgcXVvdGVzLgorOzsKKzs7IC0gSFRNTCBibG9jayB0eXBlIDQgKGA8IScg Zm9sbG93ZWQgYnkgYW4gdXBwZXJjYXNlIGxldHRlciwgZS5nLiwKKzs7ICAgYDwhRE9DVFlQRSBo dG1sPicpIGNhdXNlcyB0aGUgcGFyc2VyIHRvIGNvbnN1bWUgYWxsIHN1YnNlcXVlbnQKKzs7ICAg Y29udGVudC4gIExvd2VyY2FzZSBgPCFkb2N0eXBlIGh0bWw+JyB3b3JrcyBhcyBhIHdvcmthcm91 bmQuCis7OyAgIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3Ry ZWUtc2l0dGVyLW1hcmtkb3duL2lzc3Vlcy8yMzM+LgorOzsKKzs7IC0gU3VwZXJzY3JpcHQgKGBe dGV4dF4nKSBhbmQgc3Vic2NyaXB0IChgfnRleHR+Jykgc3ludGF4IGlzIG5vdAorOzsgICBzdXBw b3J0ZWQgYnkgdGhlIGdyYW1tYXIuICBObyBFWFRFTlNJT05fIGJ1aWxkIGZsYWcgZXhpc3RzIGZv cgorOzsgICB0aGlzLiAgVGhpcyBpcyBQYW5kb2MgLyBQSFAgTWFya2Rvd24gRXh0cmEgc3ludGF4 LCBub3QgQ29tbW9uTWFyaworOzsgICBvciBHRk0uCis7OworOzsgLSBPcmRlcmVkIChudW1iZXJl ZCkgbGlzdHMgZG8gbm90IG5lc3QgYnkgaW5kZW50YXRpb24uICBJbmRlbnRpbmcKKzs7ICAgYSBg MS4nIGl0ZW0gdW5kZXIgYW5vdGhlciBvcmRlcmVkIGl0ZW0gZG9lcyBub3QgcHJvZHVjZSBhIG5l c3RlZAorOzsgICBsaXN0IG5vZGU7IHRoZSBwYXJzZXIgZWl0aGVyIHRyZWF0cyBpdCBhcyBhIGZs YXQgc2libGluZyBvcgorOzsgICBhYnNvcmJzIGl0IGludG8gdGhlIHBhcmVudCBpdGVtJ3MgcGFy YWdyYXBoIGFzIGEKKzs7ICAgYmxvY2tfY29udGludWF0aW9uLiAgVW5vcmRlcmVkIChgLScsIGAq JywgYCsnKSBsaXN0cyBuZXN0Cis7OyAgIGNvcnJlY3RseS4gIERlbW90ZS9wcm9tb3RlIG9mIG9y ZGVyZWQgbGlzdCBpdGVtcyBpcyB0aGVyZWZvcmUKKzs7ICAgZGlzYWJsZWQuCis7OworOzsgLSBS ZW51bWJlcmluZyBvcmRlcmVkIGxpc3RzIChgbWFya2Rvd24tdHMtcmVudW1iZXItbGlzdCcpIG1h eSBvbmx5Cis7OyAgIGFmZmVjdCBpdGVtcyBmcm9tIHBvaW50IGRvd253YXJkIGlmIHRoZSBwYXJz ZXIgc3BsaXRzIGEgc2luZ2xlCis7OyAgIGxpc3QgaW50byBzZXBhcmF0ZSBgbGlzdCcgbm9kZXMs IG9yIG1heSBjb250aW51ZSBudW1iZXJpbmcgYWNyb3NzCis7OyAgIHR3byBzZXBhcmF0ZSBsaXN0 cyBpZiB0aGUgcGFyc2VyIG1lcmdlcyB0aGVtIGludG8gb25lIG5vZGUuCis7OworOzsgLSBFbXB0 eSBsaW5lcyBmb2xsb3dpbmcgYW4gYGluZGVudGVkX2NvZGVfYmxvY2snIG1heSBiZSBjbGFpbWVk IGJ5Cis7OyAgIHRoZSBwYXJzZXIgYXMgY29udGludWF0aW9uIGxpbmVzIG9mIHRoYXQgYmxvY2ss IHJhdGhlciB0aGFuIGJlaW5nCis7OyAgIHRyZWF0ZWQgYXMgYmxhbmsgc2VwYXJhdG9ycy4KIAog Ozs7IENvZGU6CiAKIChyZXF1aXJlICd0cmVlc2l0KQogKHJlcXVpcmUgJ3N1YnIteCkKLShyZXF1 aXJlICdvdXRsaW5lKQogKHJlcXVpcmUgJ3NlcSkKKyhyZXF1aXJlICdvdXRsaW5lKQorKHJlcXVp cmUgJ2dvdG8tYWRkcikKKyhyZXF1aXJlICd4cmVmKQogCi0odHJlZXNpdC1kZWNsYXJlLXVuYXZh aWxhYmxlLWZ1bmN0aW9ucykKLQotKGFkZC10by1saXN0Ci0gJ3RyZWVzaXQtbGFuZ3VhZ2Utc291 cmNlLWFsaXN0Ci0gJyhtYXJrZG93bgotICAgImh0dHBzOi8vZ2l0aHViLmNvbS90cmVlLXNpdHRl ci1ncmFtbWFycy90cmVlLXNpdHRlci1tYXJrZG93biIKLSAgIDpjb21taXQgIjQxMzI4NTIzMWNl OGZhOGIxMWU3MDc0YmJlMjY1YjQ4YWE3Mjc3ZjkiCi0gICA6c291cmNlLWRpciAidHJlZS1zaXR0 ZXItbWFya2Rvd24vc3JjIikKLSB0KQotKGFkZC10by1saXN0Ci0gJ3RyZWVzaXQtbGFuZ3VhZ2Ut c291cmNlLWFsaXN0Ci0gJyhtYXJrZG93bi1pbmxpbmUKLSAgICJodHRwczovL2dpdGh1Yi5jb20v dHJlZS1zaXR0ZXItZ3JhbW1hcnMvdHJlZS1zaXR0ZXItbWFya2Rvd24iCi0gICA6Y29tbWl0ICI0 MTMyODUyMzFjZThmYThiMTFlNzA3NGJiZTI2NWI0OGFhNzI3N2Y5IgotICAgOnNvdXJjZS1kaXIg InRyZWUtc2l0dGVyLW1hcmtkb3duLWlubGluZS9zcmMiKQotIHQpCi0KLTs7OyBIZWxwZXIgZnVu Y3Rpb25zCi0KLShkZWZ2YXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2UtbWFwCi0g ICcoKCJjKysiIC4gY3BwKQotICAgICgiYyMiIC4gYy1zaGFycCkKLSAgICAoInNoIiAuIGJhc2gp KQotICAiQWxpc3QgbWFwcGluZyBjb2RlIGJsb2NrIGxhbmd1YWdlIG5hbWVzIHRvIHRyZWUtc2l0 dGVyIGxhbmd1YWdlcy4KLQotS2V5cyBzaG91bGQgYmUgc3RyaW5ncywgYW5kIHZhbHVlcyBzaG91 bGQgYmUgbGFuZ3VhZ2Ugc3ltYm9scy4KLQotRm9yIGV4YW1wbGUsIFwiYysrXCIgaW4KLQotICAg IGBgYGMrKwotICAgIGludCBtYWluKCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAg YGBgCis7OzsgQ3VzdG9taXphdGlvbnM6CiAKLW1hcHMgdG8gdHJlZS1zaXR0ZXIgbGFuZ3VhZ2Ug YGNwcCcuIikKLQotKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXNvdXJjZS1tb2RlLW1h cAotICAnKChiYXNoIC4gYmFzaC10cy1tb2RlKQotICAgIChjIC4gYy10cy1tb2RlKQotICAgIChj LXNoYXJwIC4gY3NoYXJwLXRzLW1vZGUpCi0gICAgKGNtYWtlIC4gY21ha2UtdHMtbW9kZSkKLSAg ICAoY3BwIC4gYysrLXRzLW1vZGUpCi0gICAgKGNzcyAuIGNzcy10cy1tb2RlKQotICAgIChkb2Nr ZXJmaWxlIC4gZG9ja2VyZmlsZS10cy1tb2RlKQotICAgIChlbGl4aXIgLiBlbGl4aXItdHMtbW9k ZSkKLSAgICAoZ28gLiBnby10cy1tb2RlKQotICAgIChnb21vZCAuIGdvLW1vZC10cy1tb2RlKQot ICAgIChnb3dvcmsgLiBnby13b3JrLXRzLW1vZGUpCi0gICAgKGhlZXggLiBoZWV4LXRzLW1vZGUp Ci0gICAgKGh0bWwgLiBodG1sLXRzLW1vZGUpCi0gICAgKGphdmEgLiBqYXZhLXRzLW1vZGUpCi0g ICAgKGphdmFzY3JpcHQgLiBqcy10cy1tb2RlKQotICAgIChqc29uIC4ganNvbi10cy1tb2RlKQot ICAgIChsdWEgLiBsdWEtdHMtbW9kZSkKLSAgICAocGhwIC4gcGhwLXRzLW1vZGUpCi0gICAgKHB5 dGhvbiAuIHB5dGhvbi10cy1tb2RlKQotICAgIChydWJ5IC4gcnVieS10cy1tb2RlKQotICAgIChy dXN0IC4gcnVzdC10cy1tb2RlKQotICAgICh0b21sIC4gdG9tbC10cy1tb2RlKQotICAgICh0c3gg LiB0c3gtdHMtbW9kZSkKLSAgICAodHlwZXNjcmlwdCAuIHR5cGVzY3JpcHQtdHMtbW9kZSkKLSAg ICAoeWFtbCAuIHlhbWwtdHMtbW9kZSkpCi0gICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQgY29kZSBi bG9jayBsYW5ndWFnZXMgYW5kIHRoZWlyIG1ham9yIG1vZGUuIikKKyhkZWZncm91cCBtYXJrZG93 bi10cyBuaWwKKyAgIk1ham9yIG1vZGUgZm9yIHZpZXdpbmcgYW5kIGVkaXRpbmcgTWFya2Rvd24g YnVmZmVycy4iCisgIDpwcmVmaXggIm1hcmtkb3duLXRzLSIKKyAgOmdyb3VwICd0ZXh0CisgIDpn cm91cCAnZWRpdGluZworICA6dmVyc2lvbiAiMzEuMSIpCiAKIChkZWZjdXN0b20gbWFya2Rvd24t dHMtaGlkZS1tYXJrdXAgbmlsCiAgICJOb24tbmlsIG1lYW5zIGhpZGUgTWFya2Rvd24gbWFya3Vw IGRlbGltaXRlcnMgaW4gdGhpcyBidWZmZXIuIgogICA6dHlwZSAnYm9vbGVhbgogICA6c2FmZSAj J2Jvb2xlYW5wCi0gIDpncm91cCAnbWFya2Rvd24tdHMpCi0KLTs7OyBGYWNlcworICA6dmVyc2lv biAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRlZmN1c3RvbSBtYXJrZG93 bi10cy1lbGxpcHNpcyBuaWwKKyAgIlRoZSBlbGxpcHNpcyB0byB1c2UgaW4gZm9sZGVkIGhlYWRp bmdzLgorV2hlbiBuaWwsIHVzZSB0aGUgc3RhbmRhcmQgdGhyZWUgZG90cy4gIFdoZW4gYSBub24t ZW1wdHkgc3RyaW5nLAordXNlIHRoYXQgc3RyaW5nIGluc3RlYWQuIgorICA6dHlwZSAnKGNob2lj ZSAoY29uc3QgOnRhZyAiRGVmYXVsdCAoLi4uKSIgbmlsKQorICAgICAgICAgICAgICAgICAoc3Ry aW5nIDp0YWcgIlN0cmluZyIgOnZhbHVlICIg4oyEIikpCisgIDpzYWZlICMnc3RyaW5nLW9yLW51 bGwtcAorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnBhY2thZ2UtdmVyc2lvbiAiMS4wIikKKworKGRl ZmN1c3RvbSBtYXJrZG93bi10cy1tZW51LWJhci1zaG93IHQKKyAgIk5vbi1uaWwgbWVhbnMgc2hv dyB0aGUgTWFya2Rvd24gbWVudSBpbiB0aGUgbWVudSBiYXIuIgorICA6dHlwZSAnYm9vbGVhbgor ICA6c2FmZSAjJ2Jvb2xlYW5wCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9u ICIxLjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRlZmF1bHQtZm9sZGluZyAnc2hvdy1h bGwKKyAgIkRlZmF1bHQgaGVhZGluZyBmb2xkaW5nIGxldmVsLiIKKyAgOnR5cGUgJyhjaG9pY2UK KyAgICAgICAgICAoY29uc3QgOnRhZyAiU2hvdyBldmVyeXRoaW5nIiBzaG93LWFsbCkKKyAgICAg ICAgICAoY29uc3QgOnRhZyAiRm9sZCBldmVyeXRoaW5nLCBzaG93aW5nIHRvcC1sZXZlbCBoZWFk aW5ncyIgZm9sZC1hbGwpCisgICAgICAgICAgKGNvbnN0IDp0YWcgIkZvbGQgaGVhZGluZ3MsIHNo b3dpbmcgYWxsIGhlYWRpbmcgbGV2ZWxzIiBmb2xkLWhlYWRpbmdzKSkKKyAgOnNhZmUgIydzeW1i b2xwCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIxLjAiKQorCisoZGVm Y3VzdG9tIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMgbmlsCisgICJOb24tbmlsIG1lYW5zIGRp c3BsYXkgaW5saW5lIGltYWdlcyBiZWxvdyBpbWFnZSBsaW5rcy4iCisgIDp0eXBlICdib29sZWFu CisgIDpzYWZlICMnYm9vbGVhbnAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNp b24gIjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoICd3aW5k b3cKKyAgIk1heGltdW0gd2lkdGggb2YgaW5saW5lIGltYWdlcyBpbiBwaXhlbHMuCitXaGVuIGB3 aW5kb3cnLCB1c2UgdGhlIHdpbmRvdyBib2R5IHdpZHRoLiAgV2hlbiBhIG51bWJlciwgdXNlCit0 aGF0IGFzIHRoZSBtYXhpbXVtIHBpeGVsIHdpZHRoLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIldpbmRvdyB3aWR0aCIgd2luZG93KQorICAgICAgICAgICAgICAgICAobmF0bnVtIDp0 YWcgIlBpeGVsIHdpZHRoIikpCisgIDpzYWZlIChsYW1iZGEgKHYpIChvciAoZXEgdiAnd2luZG93 KSAobmF0bnVtcCB2KSkpCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFn ZXMgbmlsCisgICJIb3cgdG8gZGlzcGxheSByZW1vdGUgaW5saW5lIGltYWdlcy4KK1doZW4gbmls LCBkbyBub3QgZGlzcGxheSByZW1vdGUgaW1hZ2VzLiAgV2hlbiBgZG93bmxvYWQnLCBmZXRjaCB0 aGUKK2ltYWdlIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBkaXNwbGF5IGl0LgorCitSZW1v dGUgaW1hZ2VzIGFyZSBza2lwcGVkIGJ5IGRlZmF1bHQgZm9yIHNlY3VyaXR5LiIKKyAgOnR5cGUg JyhjaG9pY2UgKGNvbnN0IDp0YWcgIlNraXAgcmVtb3RlIGltYWdlcyIgbmlsKQorICAgICAgICAg ICAgICAgICAoY29uc3QgOnRhZyAiRG93bmxvYWQgcmVtb3RlIGltYWdlcyIgZG93bmxvYWQpKQor ICA6c2FmZSAjJ3N5bWJvbHAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24g IjEuMCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtY2hlY2tlZC1jaGVja2JveCAi4piRIgor ICAiSWYgbWFya3VwIGlzIGhpZGRlbiwgZGlzcGxheSB0aGlzIGNoZWNrZWQgdGFzayBsaXN0IHN0 cmluZy4KK25pbCBkaXNwbGF5cyB0aGUgcmF3IG1hcmt1cC4iCisgIDp0eXBlICcoY2hvaWNlIChz dHJpbmcgOnRhZyAiRGlzcGxheSBzcGVjaWZpZWQgc3RyaW5nIikKKyAgICAgICAgICAgICAgICAg KGNvbnN0IDp0YWcgIkRpc3BsYXkgb3JpZ2luYWwgbWFya3VwIiBuaWwpKQorICA6c2FmZSAjJ3N0 cmluZy1vci1udWxsLXAKKyAgOnZlcnNpb24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEu MCIpCisKKyhkZWZjdXN0b20gbWFya2Rvd24tdHMtdW5jaGVja2VkLWNoZWNrYm94ICLimJAiCisg ICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgdW5jaGVja2VkIHRhc2sgbGlzdCBz dHJpbmcuCituaWwgZGlzcGxheXMgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAo c3RyaW5nIDp0YWcgIkRpc3BsYXkgc3BlY2lmaWVkIHN0cmluZyIpCisgICAgICAgICAgICAgICAg IChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnNhZmUgIydz dHJpbmctb3ItbnVsbC1wCisgIDp2ZXJzaW9uICIzMS4xIgorICA6cGFja2FnZS12ZXJzaW9uICIx LjAiKQorCisoZGVmY3VzdG9tIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNoYXJhY3RlciA/ 4pSACisgICJJZiBtYXJrdXAgaXMgaGlkZGVuLCBkaXNwbGF5IHRoaXMgdGhlbWF0aWMgYnJlYWsg c3RyaW5nLgorVGhlIGNoYXJhY3RlciBpcyByZXBlYXRlZCB0byBmaWxsIHRoZSB3aW5kb3cgd2lk dGguCituaWwgZGlzcGxheXMgdGhlIHJhdyBtYXJrdXAuIgorICA6dHlwZSAnKGNob2ljZSAoY2hh cmFjdGVyIDp0YWcgIkRpc3BsYXkgc3BlY2lmaWVkIGNoYXJhY3RlciIpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEaXNwbGF5IG9yaWdpbmFsIG1hcmt1cCIgbmlsKSkKKyAgOnZlcnNp b24gIjMxLjEiCisgIDpwYWNrYWdlLXZlcnNpb24gIjEuMCIpCisKKzs7OyBGYWNlczoKIAogKGRl Zmdyb3VwIG1hcmtkb3duLXRzLWZhY2VzIG5pbAotICAiRmFjZXMgdXNlZCBpbiBNYXJrZG93biBU UyBNb2RlLiIKKyAgIkZhY2VzIHVzZWQgYnkgTWFya2Rvd24tVFMuIgogICA6Z3JvdXAgJ21hcmtk b3duLXRzLWZhY2VzCiAgIDpncm91cCAnZmFjZXMpCiAKQEAgLTE0NCwxNiArMjQ3LDEzNSBAQCBt YXJrZG93bi10cy1oZWFkaW5nLTUKIChkZWZmYWNlIG1hcmtkb3duLXRzLWhlYWRpbmctNiAnKCh0 ICg6aW5oZXJpdCBvdXRsaW5lLTYpKSkKICAgIkZhY2UgZm9yIHNpeHRoIGxldmVsIE1hcmtkb3du IGhlYWRpbmdzLiIpCiAKLShkZWZmYWNlIG1hcmtkb3duLXRzLWxpc3QtbWFya2VyICcoKHQgKDpp bmhlcml0IHNoYWRvdykpKQotICAiRmFjZSBmb3IgTWFya2Rvd24gbGlzdCBtYXJrZXJzIGxpa2Ug LSBhbmQgKi4iKQorKGRlZmZhY2UgbWFya2Rvd24tdHMtZW1waGFzaXMgJygodCAoOmluaGVyaXQg aXRhbGljKSkpCisgICJGYWNlIGZvciBNYXJrZG93biBlbXBoYXNpcyAoaXRhbGljKSB0ZXh0LiIp CisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWJvbGQgJygodCAoOmluaGVyaXQgYm9sZCkpKQorICAi RmFjZSBmb3IgTWFya2Rvd24gc3Ryb25nIGVtcGhhc2lzIChib2xkKSB0ZXh0LiIpCisKKyhkZWZm YWNlIG1hcmtkb3duLXRzLXN0cmlrZXRocm91Z2ggJygodCAoOnN0cmlrZS10aHJvdWdoIHQpKSkK KyAgIkZhY2UgZm9yIE1hcmtkb3duIHN0cmlrZXRocm91Z2ggdGV4dC4iKQogCiAoZGVmZmFjZSBt YXJrZG93bi10cy1ibG9jay1xdW90ZSAnKCh0ICg6aW5oZXJpdCBpdGFsaWMpKSkKICAgIkZhY2Ug Zm9yIE1hcmtkb3duIGJsb2NrIHF1b3Rlcy4iKQogCisoZGVmZmFjZSBtYXJrZG93bi10cy1saW5r ICcoKHQgKDppbmhlcml0IGxpbmspKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGxpbmsgdGV4dCBh bmQgaW1hZ2UgZGVzY3JpcHRpb25zLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWxpbmstZGVz dGluYXRpb24gJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmluZy1mYWNlKSkpCisgICJGYWNl IGZvciBNYXJrZG93biBsaW5rIGRlc3RpbmF0aW9ucyAoVVJMcykuIikKKworKGRlZmZhY2UgbWFy a2Rvd24tdHMtY29kZS1zcGFuICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1zdHJpbmctZmFjZSkp KQorICAiRmFjZSBmb3IgTWFya2Rvd24gaW5saW5lIGNvZGUgc3BhbnMuIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtY29kZS1ibG9jayAnKCh0ICg6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1h cmtkb3duIGZlbmNlZCBjb2RlIGJsb2NrIGNvbnRlbnQuCitBbHRlciB0aGlzIGZhY2UgdG8gYWRk IGEgYDpiYWNrZ3JvdW5kJyBmb3IgYSB2aXN1YWxseSBkaXN0aW5jdAorY29kZSBibG9jayByZWdp b24sIGUuZy46CisgIChzZXQtZmFjZS1hdHRyaWJ1dGUgXFw9J21hcmtkb3duLXRzLWNvZGUtYmxv Y2sgbmlsIDpiYWNrZ3JvdW5kIFwiZ3JheTk1XCIpIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMt Y29kZS1ibG9jay1tYXJrdXAtaGlkZGVuCisgICcoKCgoYmFja2dyb3VuZCBsaWdodCkpICg6YmFj a2dyb3VuZCAiZ3JheTk1IiA6ZXh0ZW5kIHQpKQorICAgICgoKGJhY2tncm91bmQgZGFyaykpICg6 YmFja2dyb3VuZCAiZ3JheTE1IiA6ZXh0ZW5kIHQpKSkKKyAgIkZhY2UgZm9yIE1hcmtkb3duIGZl bmNlZCBjb2RlIGJsb2NrIGNvbnRlbnQgd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorVXNlZCBpbnN0 ZWFkIG9mIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrJyB3aGVuIGBtYXJrZG93bi10cy1oaWRlLW1h cmt1cCcKK2lzIG5vbi1uaWwuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtaW5kZW50ZWQtY29k ZS1ibG9jayAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKKyAgIkZhY2Ug Zm9yIE1hcmtkb3duIGluZGVudGVkIGNvZGUgYmxvY2tzLiIpCisKKyhkZWZmYWNlIG1hcmtkb3du LXRzLWh0bWwtdGFnICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1kb2MtbWFya3VwLWZhY2UpKSkK KyAgIkZhY2UgZm9yIGlubGluZSBIVE1MIHRhZ3MgaW4gTWFya2Rvd24uIikKKworKGRlZmZhY2Ug bWFya2Rvd24tdHMtaHRtbC1ibG9jayAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLW1hcmt1 cC1mYWNlKSkpCisgICJGYWNlIGZvciBIVE1MIGJsb2NrcyBpbiBNYXJrZG93bi4iKQorCisoZGVm ZmFjZSBtYXJrZG93bi10cy10aGVtYXRpYy1icmVhayAnKCh0ICg6aW5oZXJpdCBzaGFkb3cgOmV4 dGVuZCB0KSkpCisgICJGYWNlIGZvciBNYXJrZG93biB0aGVtYXRpYyBicmVha3MgKGhvcml6b250 YWwgcnVsZXMpLgorQ3VzdG9taXplIHRoaXMgZmFjZSB0byBhZGQgYSA6YmFja2dyb3VuZCBmb3Ig YSBmdWxsLXdpZHRoIHZpc3VhbCBydWxlLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLWVudGl0 eS1yZWZlcmVuY2UgJygodCAoOmluaGVyaXQgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpKQorICAi RmFjZSBmb3IgbmFtZWQgSFRNTCBlbnRpdHkgcmVmZXJlbmNlcyBsaWtlICZhbXA7IGFuZCAmY29w eTsuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNl CisgICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1lc2NhcGUtZmFjZSkpKQorICAiRmFjZSBmb3Ig bnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBsaWtlICYjNjU7IGFuZCAmI3g0MTsuIikKKwor KGRlZmZhY2UgbWFya2Rvd24tdHMtbGF0ZXggJygodCAoOmluaGVyaXQgZm9udC1sb2NrLXN0cmlu Zy1mYWNlKSkpCisgICJGYWNlIGZvciBMYVRlWCAvIG1hdGggY29udGVudCBpbiBNYXJrZG93biAo JC4uLiQgYW5kICQkLi4uJCQpLiIpCisKKyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhYmxlLWhlYWRl ciAnKCh0ICg6aW5oZXJpdCAoYm9sZCBmb250LWxvY2stZG9jLWZhY2UpKSkpCisgICJGYWNlIGZv ciBNYXJrZG93biBwaXBlIHRhYmxlIGhlYWRlciBjZWxscy4iKQorCisoZGVmZmFjZSBtYXJrZG93 bi10cy10YWJsZS1jZWxsICcoKHQgKDppbmhlcml0IGRlZmF1bHQpKSkKKyAgIkZhY2UgZm9yIE1h cmtkb3duIHBpcGUgdGFibGUgZGF0YSBjZWxscy4iKQorCisoZGVmZmFjZSBtYXJrZG93bi10cy10 YWJsZS1kZWxpbWl0ZXItY2VsbCAnKCh0ICg6aW5oZXJpdCBmb250LWxvY2stZG9jLWZhY2UpKSkK KyAgIkZhY2UgZm9yIE1hcmtkb3duIHBpcGUgdGFibGUgZGVsaW1pdGVyIGNlbGxzICgtLS0gc2Vw YXJhdG9ycykuIikKKwogKGRlZmZhY2UgbWFya2Rvd24tdHMtbGFuZ3VhZ2Uta2V5d29yZCAnKCh0 ICg6aW5oZXJpdCBmb250LWxvY2sta2V5d29yZC1mYWNlKSkpCiAgICJGYWNlIGZvciB0aGUgbGFu Z3VhZ2Uga2V5d29yZCBmb3IgTWFya2Rvd24gY29kZSBibG9ja3MuIikKIAotOzs7IEZvbnQtbG9j aworKGRlZmZhY2UgbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIgJygodCAoOmluaGVyaXQgc2hhZG93 KSkpCisgICJGYWNlIGZvciBNYXJrZG93biBsaXN0IG1hcmtlcnMgbGlrZSAtIGFuZCAqLiIpCisK KyhkZWZmYWNlIG1hcmtkb3duLXRzLXRhc2stdW5jaGVja2VkICcoKHQgKDppbmhlcml0IG1hcmtk b3duLXRzLWxpc3QtbWFya2VyKSkpCisgICJGYWNlIGZvciBNYXJrZG93biB1bmNoZWNrZWQgdGFz ayBsaXN0IG1hcmtlcnMuIikKKworKGRlZmZhY2UgbWFya2Rvd24tdHMtdGFzay1jaGVja2VkICco KHQgKDppbmhlcml0IG1hcmtkb3duLXRzLWxpc3QtbWFya2VyKSkpCisgICJGYWNlIGZvciBNYXJr ZG93biBjaGVja2VkIHRhc2sgbGlzdCBtYXJrZXJzLiIpCisKKyh0cmVlc2l0LWRlY2xhcmUtdW5h dmFpbGFibGUtZnVuY3Rpb25zKQorCisoYWRkLXRvLWxpc3QKKyAndHJlZXNpdC1sYW5ndWFnZS1z b3VyY2UtYWxpc3QKKyAnKG1hcmtkb3duCisgICAiaHR0cHM6Ly9naXRodWIuY29tL3RyZWUtc2l0 dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duIgorICAgOmNvbW1pdCAiNDEzMjg1MjMx Y2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIKKyAgIDpzb3VyY2UtZGlyICJ0cmVlLXNp dHRlci1tYXJrZG93bi9zcmMiKQorIHQpCisKKyhhZGQtdG8tbGlzdAorICd0cmVlc2l0LWxhbmd1 YWdlLXNvdXJjZS1hbGlzdAorICcobWFya2Rvd24taW5saW5lCisgICAiaHR0cHM6Ly9naXRodWIu Y29tL3RyZWUtc2l0dGVyLWdyYW1tYXJzL3RyZWUtc2l0dGVyLW1hcmtkb3duIgorICAgOmNvbW1p dCAiNDEzMjg1MjMxY2U4ZmE4YjExZTcwNzRiYmUyNjViNDhhYTcyNzdmOSIKKyAgIDpzb3VyY2Ut ZGlyICJ0cmVlLXNpdHRlci1tYXJrZG93bi1pbmxpbmUvc3JjIikKKyB0KQorCis7OzsgVmFyaWFi bGVzOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMKKyAgYCgoc2ggLiBi YXNoLXRzLW1vZGUpCisgICAgKHNoZWxsIC4gYmFzaC10cy1tb2RlKQorICAgICgsKGludGVybiAi YyMiKSAuIGMtc2hhcnApCisgICAgKGNwcCAuIGMrKy10cy1tb2RlKQorICAgIChlbCAuIGVtYWNz LWxpc3AtbW9kZSkKKyAgICAoZWxpc3AgLiBlbWFjcy1saXNwLW1vZGUpCisgICAgKGdvbGFuZyAu IGdvLXRzLW1vZGUpCisgICAgKGdvbW9kIC4gZ28tbW9kLXRzLW1vZGUpCisgICAgKGdvd29yayAu IGdvLXdvcmstdHMtbW9kZSkKKyAgICAoamF2YXNjcmlwdCAuIGpzLXRzLW1vZGUpCisgICAgKG1k IC4gbWFya2Rvd24tdHMtbW9kZSkKKyAgICAocHkgLiBweXRob24tdHMtbW9kZSkKKyAgICAocmIg LiBydWJ5LXRzLW1vZGUpCisgICAgKHJzIC4gcnVzdC10cy1tb2RlKQorICAgICh0ZXggLiBsYXRl eC1tb2RlKQorICAgICh0cyAuIHR5cGVzY3JpcHQtdHMtbW9kZSkKKyAgICAoeW1sIC4geWFtbC10 cy1tb2RlKSkKKyAgIkFsaXN0IG1hcHBpbmcgY29kZSBibG9jayBsYW5ndWFnZXMgdG8gdGhlaXIg bWFqb3IgbW9kZS4KK1RoZSBhbGlzdCBpcyBvZiB0aGUgZm9ybSAoTEFOR1VBR0UgLiBNQUpPUi1N T0RFKS4KK01BSk9SLU1PREUgY2FuIGJlIGEgdHJlZS1zaXR0ZXIgb3IgYSBjb252ZW50aW9uYWwg bW9kZS4KK0lmIHlvdSBwcmVmZXIgYSBjb252ZW50aW9uYWwgbW9kZSBvdmVyIGl0cyB0cmVlLXNp dHRlciB2YXJpYW50LCBhZGQgb3IgcmVwbGFjZQorcmVsZXZhbnQgZW50cmllcy4gIEZvciBleGFt cGxlOgorICAgIChhZGQtdG8tbGlzdCBcXD0nbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2Rlcwor ICAgICAgXFw9JyhweXRob24gLiBweXRob24tbW9kZSkpCisgICAgKHNldGYgKGFsaXN0LWdldCBc XD0ncHkgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlcykKKyAgICAgICAgICBcXD0ncHl0aG9u LW1vZGUpCitDb2RlIGJsb2NrcyBmb3IgdGhhdCBub24gdHJlZS1zaXR0ZXIgbW9kZXMgd2lsbCBi ZSBmb250aWZpZWQgdXNpbmcgdGhlCittb2RlJ3MgY29udmVudGlvbmFsIGZvbnQtbG9jayBydWxl cy4iKQorCis7OzsgRm9udC1sb2NrOgogCiAoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktZGVs aW1pdGVyIChub2RlIG92ZXJyaWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQogICAiRm9udGlmeSBkZWxp bWl0ZXIgTk9ERSBhbmQgb3B0aW9uYWxseSBoaWRlIGl0cyBtYXJrdXAuCkBAIC0xNjgsMTMgKzM5 MCw1MTAgQEAgbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCiAgICAgKHB1dC10ZXh0LXBy b3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkK ICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkp KQogCisoZGVmdmFyIHVybC1tYWlsLWNvbW1hbmQpIDsgdXJsL3VybC12YXJzLmVsCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tbWFrZS1saW5rLWJ1dHRvbiAoYmVnIGVuZCB1cmwpCisgICJNYWtlIHRo ZSByZWdpb24gZnJvbSBCRUcgdG8gRU5EIGEgY2xpY2thYmxlIGJ1dHRvbiBmb3IgVVJMLgorRm9y IG1haWx0bzogVVJJcywgdXNlIGB1cmwtbWFpbC1jb21tYW5kJy4gIEZvciBvdGhlciBzY2hlbWVz CitcKGUuZy4sIGh0dHAsIGZ0cCksIG9wZW4gd2l0aCBgYnJvd3NlLXVybCcuICBPdGhlcndpc2Us IHRyZWF0IGFzCithIHJlbGF0aXZlIGZpbGUgcGF0aCBhbmQgb3BlbiB3aXRoIGBmaW5kLWZpbGUn LiIKKyAgOzsgTk9URTogVVJJIHNjaGVtZSBhbmQgaG9zdCBuYW1lIGFyZSBjYXNlLWluc2Vuc2l0 aXZlIHBlciBSRkMgMzk4NgorICA7OyBhbmQgUkZDIDcyMzAuCisgIChsZXQgKChjYXNlLWZvbGQt c2VhcmNoIG5pbCkpCisgICAgKG1ha2UtdGV4dC1idXR0b24gYmVnIGVuZAorICAgICAgICAgICAg ICAgICAgICAgICdhY3Rpb24gKGxhbWJkYSAoX2J1dHRvbikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3Ry aW5nLW1hdGNoLXAgIlxcYG1haWx0bzoiIHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZnVuY2FsbCB1cmwtbWFpbC1jb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbWFpbHRvOiIgIiIgdXJsKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaC1wICJcXGBb YS16XSs6IiB1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJyb3dzZS11 cmwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IChmaW5kLWZpbGUg dXJsKSkpKQorICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdtYXJrZG93bi10cy1saW5rCisg ICAgICAgICAgICAgICAgICAgICAgJ2hlbHAtZWNobyB1cmwpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1mb250aWZ5LWxpbmstZGVzdGluYXRpb24gKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZy ZXN0IF8pCisgICJGb250aWZ5IGxpbmsgZGVzdGluYXRpb24gTk9ERSBhbmQgaGlkZSBpdCB3aGVu IG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBhc3NlZCB0 aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLiIKKyAgKHRyZWVzaXQt Zm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVl c2l0LW5vZGUtZW5kIG5vZGUpCisgICAnbWFya2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbiBvdmVy cmlkZSBzdGFydCBlbmQpCisgICh3aGVuIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgKHB1 dC10ZXh0LXByb3BlcnR5ICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1l bmQgbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFya2Rvd24tdHMt LW1hcmt1cCkpKQorCisoZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSBu aWwKKyAgIkNhY2hlZCBhbGlzdCBvZiAoTEFCRUwgLiBVUkwpIGZyb20gbGluayByZWZlcmVuY2Ug ZGVmaW5pdGlvbnMuCitFYWNoIGVudHJ5IGlzIGEgY29ucyBjZWxsIG1hcHBpbmcgYSBkb3duY2Fz ZWQgbGFiZWwgc3RyaW5nIHRvIGl0cworZGVzdGluYXRpb24gVVJMLiIpCisKKyhkZWZ2YXItbG9j YWwgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRpY2sgbmlsCisgICJWYWx1ZSBvZiBgYnVm ZmVyLWNoYXJzLW1vZGlmaWVkLXRpY2snIHdoZW4gdGhlIGNhY2hlIHdhcyBidWlsdC4iKQorCiso ZGVmdW4gbWFya2Rvd24tdHMtLWxpbmstcmVmLWRlZmluaXRpb25zICgpCisgICJSZXR1cm4gYW4g YWxpc3Qgb2YgKExBQkVMIC4gVVJMKSBmcm9tIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25zLgor TEFCRUwgaXMgZG93bmNhc2VkIGZvciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLiAgUmVzdWx0 cyBhcmUKK2NhY2hlZCBhbmQgcmVidWlsdCBvbmx5IHdoZW4gdGhlIGJ1ZmZlciBjaGFuZ2VzLiIK KyAgKGxldCAoKHRpY2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkpCisgICAgKHVubGVz cyAoZXEgdGljayBtYXJrZG93bi10cy0tbGluay1yZWYtY2FjaGUtdGljaykKKyAgICAgIChsZXQq ICgocm9vdCAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJrZG93bikpCisgICAgICAgICAg ICAgKG1hdGNoZXMgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICAg ICByb290CisgICAgICAgICAgICAgICAgICAgICAgICcoKGxpbmtfcmVmZXJlbmNlX2RlZmluaXRp b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfbGFiZWwpIEBsYWJlbAorICAgICAg ICAgICAgICAgICAgICAgICAgICAobGlua19kZXN0aW5hdGlvbikgQGRlc3QpKSkpCisgICAgICAg ICAgICAgZGVmcykKKyAgICAgICAgKHdoaWxlIG1hdGNoZXMKKyAgICAgICAgICAobGV0KiAoKGxh YmVsLXBhaXIgKHBvcCBtYXRjaGVzKSkKKyAgICAgICAgICAgICAgICAgKGRlc3QtcGFpciAocG9w IG1hdGNoZXMpKQorICAgICAgICAgICAgICAgICAobGJsLXRleHQgKHN0cmluZy10cmltICh0cmVl c2l0LW5vZGUtdGV4dCAoY2RyIGxhYmVsLXBhaXIpIHQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlxcWyIgIlxcXSIpKSkKKyAgICAgICAgICAgIChwdXNoIChjb25z IChkb3duY2FzZSBsYmwtdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5v ZGUtdGV4dCAoY2RyIGRlc3QtcGFpcikgdCkpCisgICAgICAgICAgICAgICAgICBkZWZzKSkpCisg ICAgICAgIChzZXRxIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSAobnJldmVyc2UgZGVmcykK KyAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWxpbmstcmVmLWNhY2hlLXRpY2sgdGljaykpKQor ICAgIG1hcmtkb3duLXRzLS1saW5rLXJlZi1jYWNoZSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t cmVzb2x2ZS1saW5rLXJlZiAobGFiZWwpCisgICJSZXNvbHZlIExBQkVMIHRvIGEgVVJMIHZpYSBs aW5rIHJlZmVyZW5jZSBkZWZpbml0aW9ucy4KK0xBQkVMIHNob3VsZCBiZSB0aGUgdGV4dCB3aXRo b3V0IGJyYWNrZXRzLiAgTWF0Y2hpbmcgaXMKK2Nhc2UtaW5zZW5zaXRpdmUgcGVyIENvbW1vbk1h cmsgc3BlYyBzZWN0aW9uIDQuNy4iCisgIChhbGlzdC1nZXQgKGRvd25jYXNlIGxhYmVsKSAobWFy a2Rvd24tdHMtLWxpbmstcmVmLWRlZmluaXRpb25zKQorICAgICAgICAgICAgIG5pbCBuaWwgIydl cXVhbCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUgKG5vZGUgb3Zl cnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGxpbmsgb3IgaW1hZ2UgdGV4dCBO T0RFIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK1dvcmtzIGZvciBpbmxpbmUgbGlua3MsIHJlZmVy ZW5jZSBsaW5rcywgc2hvcnRjdXQgbGlua3MsIGFuZAoraW1hZ2UgZGVzY3JpcHRpb25zLiAgVGhl IFVSTCBpcyB0YWtlbiBmcm9tIGEgc2libGluZworYGxpbmtfZGVzdGluYXRpb24nIG5vZGUgd2hl biBwcmVzZW50LCBvciByZXNvbHZlZCBmcm9tIGEKK2xpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24s IG9yIHRoZSBub2RlIHRleHQgaXRzZWxmIGlzIHVzZWQgYXMKK2ZhbGxiYWNrLiAgT1ZFUlJJREUs IFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13 aXRoLW92ZXJyaWRlJy4iCisgIChsZXQgKChwYXJlbnQgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9k ZSkpKQorICAgIDs7IFdoZW4gTk9ERSBpcyBhIGxpbmtfbGFiZWwgaW5zaWRlIGEgZnVsbF9yZWZl cmVuY2VfbGluayB0aGF0CisgICAgOzsgYWxzbyBoYXMgYSBsaW5rX3RleHQsIHNraXAgaXQsIGxp bmtfdGV4dCBoYW5kbGVzIHRoYXQgbGluay4KKyAgICAodW5sZXNzIChhbmQgKHN0cmluZz0gKHRy ZWVzaXQtbm9kZS10eXBlIG5vZGUpICJsaW5rX2xhYmVsIikKKyAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50ICJcXGBsaW5rX3RleHRcXCciKSkKKyAgICAgICh0 cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQg bm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkKKyAgICAgICAnbWFya2Rvd24tdHMtbGluayBv dmVycmlkZSBzdGFydCBlbmQpCisgICAgICAobGV0KiAoKGRlc3QgKHRyZWVzaXQtc2VhcmNoLXN1 YnRyZWUgcGFyZW50ICJcXGBsaW5rX2Rlc3RpbmF0aW9uXFwnIikpCisgICAgICAgICAgICAgKHVy bCAoaWYgZGVzdAorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtdGV4dCBkZXN0 IHQpCisgICAgICAgICAgICAgICAgICAgIDs7IFJlZmVyZW5jZSBsaW5rczogcmVzb2x2ZSB2aWEg bGlua19sYWJlbCBvciBsaW5rX3RleHQuCisgICAgICAgICAgICAgICAgICAgIChsZXQqICgobGFi ZWwtbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhcmVudCAiXFxgbGlua19sYWJlbFxcJyIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhYmVsIChpZiBsYWJlbC1ub2RlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbSAodHJlZXNpdC1ub2RlLXRleHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC1ub2Rl IHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi XFxbIiAiXFxdIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0 LW5vZGUtdGV4dCBub2RlIHQpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKG9yIChtYXJrZG93 bi10cy0tcmVzb2x2ZS1saW5rLXJlZiBsYWJlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg bGFiZWwpKSkpKQorICAgICAgICAobWFya2Rvd24tdHMtLW1ha2UtbGluay1idXR0b24KKyAgICAg ICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkgdXJs KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWF1dG9saW5rIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSBhdXRvbGluayBOT0RFIChVUkkgb3Ig ZW1haWwpIGFzIGEgY2xpY2thYmxlIGJ1dHRvbi4KK0ZvciBlbWFpbCBhdXRvbGlua3MsIHRoZSBV UkwgaXMgcHJlZml4ZWQgd2l0aCBcIm1haWx0bzpcIi4KK0FuZ2xlIGJyYWNrZXQgZGVsaW1pdGVy cyBhcmUgaGlkZGVuIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5k IEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlk ZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAg ICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChpbm5l ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICgxKyBu b2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpKSkKKyAgICAgICAgICh1cmwgKGlmIChzdHJpbmc9ICh0 cmVlc2l0LW5vZGUtdHlwZSBub2RlKSAiZW1haWxfYXV0b2xpbmsiKQorICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAibWFpbHRvOiIgaW5uZXIpCisgICAgICAgICAgICAgICAgaW5uZXIpKSkKKyAg ICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgbm9kZS1zdGFydCBub2RlLWVu ZCAnbWFya2Rvd24tdHMtbGluayBvdmVycmlkZSBzdGFydCBlbmQpCisgICAgKG1hcmtkb3duLXRz LS1tYWtlLWxpbmstYnV0dG9uIG5vZGUtc3RhcnQgbm9kZS1lbmQgdXJsKQorICAgICh3aGVuIG1h cmtkb3duLXRzLWhpZGUtbWFya3VwCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFy dCAoMSsgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdt YXJrZG93bi10cy0tbWFya3VwKQorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBub2RlLWVu ZCkgbm9kZS1lbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93 bi10cy0tbWFya3VwKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYt bGFiZWwgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0IF8pCisgICJGb250aWZ5IGxpbmsg cmVmZXJlbmNlIGRlZmluaXRpb24gbGFiZWwgTk9ERSBhcyBhIGNsaWNrYWJsZSBidXR0b24uCitU aGUgYnJhY2tldHMgYW5kIGNvbG9uIGFyZSBoaWRkZW4gd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgor T1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQgdGhyb3VnaCB0bworYHRyZWVzaXQt Zm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgIChsZXQqICgobm9kZS1zdGFydCAodHJlZXNpdC1u b2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5v ZGUpKQorICAgICAgICAgKHBhcmVudCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAg ICAgIChkZXN0LW5vZGUgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgcGFyZW50ICJcXGBsaW5rX2Rl c3RpbmF0aW9uXFwnIikpCisgICAgICAgICAodXJsICh3aGVuIGRlc3Qtbm9kZSAodHJlZXNpdC1u b2RlLXRleHQgZGVzdC1ub2RlIHQpKSkpCisgICAgOzsgRm9udGlmeSB0aGUgbGFiZWwgdGV4dCAo aW5zaWRlIGJyYWNrZXRzKS4KKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAg ICAgKDErIG5vZGUtc3RhcnQpICgxLSBub2RlLWVuZCkKKyAgICAgJ21hcmtkb3duLXRzLWxpbmsg b3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIDs7IE1ha2UgaXQgYSBjbGlja2FibGUgYnV0dG9uLgor ICAgICh3aGVuIHVybAorICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0dG9uICgxKyBu b2RlLXN0YXJ0KSAoMS0gbm9kZS1lbmQpIHVybCkpCisgICAgOzsgSGlkZSAiWyIgYmVmb3JlIGxh YmVsIGFuZCAiXTogIiBiZXR3ZWVuIGxhYmVsIGFuZCBkZXN0aW5hdGlvbi4KKyAgICAod2hlbiBt YXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG5vZGUtc3Rh cnQgKDErIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAn bWFya2Rvd24tdHMtLW1hcmt1cCkKKyAgICAgIChsZXQgKChjb2xvbi1lbmQgKGlmIGRlc3Qtbm9k ZSAodHJlZXNpdC1ub2RlLXN0YXJ0IGRlc3Qtbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoMSsgbm9kZS1lbmQpKSkpCisgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gbm9kZS1l bmQpIGNvbG9uLWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmlzaWJsZSAnbWFy a2Rvd24tdHMtLW1hcmt1cCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1saW5r LXJlZi1kZXN0aW5hdGlvbiAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdCBfKQorICAiRm9u dGlmeSBsaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGRlc3RpbmF0aW9uIE5PREUgYW5kIGhpZGUg d2hlbiBtYXJrdXAgaGlkZGVuLgorT1ZFUlJJREUsIFNUQVJULCBhbmQgRU5EIGFyZSBwYXNzZWQg dGhyb3VnaCB0bworYHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlJy4iCisgICh0cmVlc2l0 LWZvbnRpZnktd2l0aC1vdmVycmlkZQorICAgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJl ZXNpdC1ub2RlLWVuZCBub2RlKQorICAgJ21hcmtkb3duLXRzLWxpbmstZGVzdGluYXRpb24gb3Zl cnJpZGUgc3RhcnQgZW5kKQorICAod2hlbiBtYXJrZG93bi10cy1oaWRlLW1hcmt1cAorICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpICh0cmVlc2l0LW5vZGUt ZW5kIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICdpbnZpc2libGUgJ21hcmtkb3duLXRz LS1tYXJrdXApKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1sYXRleC1ibG9jay12YWxpZC1wIChu b2RlKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbGF0ZXggYmxvY2sgTk9ERSBpcyB3aXRoaW4gYSBz aW5nbGUgaW5saW5lIHNjb3BlLgorVGhlIGdsb2JhbCBpbmxpbmUgcGFyc2VyIGNhbiBjcmVhdGUg ZmFsc2UgYGxhdGV4X2Jsb2NrJyBtYXRjaGVzCitzcGFubmluZyBhY3Jvc3MgcGFyYWdyYXBoIGJv dW5kYXJpZXMuICBDaGVjayB0aGF0IHRoZSBvcGVuaW5nIGFuZAorY2xvc2luZyBkZWxpbWl0ZXJz IHNoYXJlIHRoZSBzYW1lIG1hcmtkb3duIGBpbmxpbmUnIGFuY2VzdG9yLiIKKyAgKGxldCAoKG5v ZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgKG5vZGUtZW5kICgx LSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkpKQorICAgICh3aGVuLWxldCogKChtZC1zdGFydCAo dHJlZXNpdC1ub2RlLWF0IG5vZGUtc3RhcnQgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgICAo bWQtZW5kICh0cmVlc2l0LW5vZGUtYXQgbm9kZS1lbmQgJ21hcmtkb3duKSkKKyAgICAgICAgICAg ICAgICAoaW5saW5lLXN0YXJ0ICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1kLXN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJl ZXNpdC1ub2RlLXR5cGUgbikgImlubGluZSIpKSkpCisgICAgICAgICAgICAgICAgKGlubGluZS1l bmQgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1k LWVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChuKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImlubGlu ZSIpKSkpKQorICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtc3RhcnQgaW5saW5lLXN0YXJ0KQor ICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3RhcnQgaW5saW5lLWVuZCkpKSkpCisKKyhkZWZ1 biBtYXJrZG93bi10cy0tZm9udGlmeS1sYXRleC1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBl bmQgJnJlc3QgXykKKyAgIkZvbnRpZnkgbGF0ZXggYmxvY2sgTk9ERSBhbmQgaGlkZSBpdHMgZGVs aW1pdGVycyB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitTa2lwIGZvbnRpZmljYXRpb24gZm9yIGZh bHNlIG1hdGNoZXMgdGhhdCBzcGFuIGFjcm9zcyBwYXJhZ3JhcGggYm91bmRhcmllcy4KK09WRVJS SURFLCBTVEFSVCwgYW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRp Znktd2l0aC1vdmVycmlkZScuIgorICAod2hlbiAobWFya2Rvd24tdHMtLWxhdGV4LWJsb2NrLXZh bGlkLXAgbm9kZSkKKyAgICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgKHRy ZWVzaXQtbm9kZS1zdGFydCBub2RlKSAodHJlZXNpdC1ub2RlLWVuZCBub2RlKQorICAgICAnbWFy a2Rvd24tdHMtbGF0ZXggb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgICh3aGVuIG1hcmtkb3duLXRz LWhpZGUtbWFya3VwCisgICAgICAoZG90aW1lcyAoaSAodHJlZXNpdC1ub2RlLWNoaWxkLWNvdW50 IG5vZGUpKQorICAgICAgICAobGV0ICgoY2hpbGQgKHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIGkp KSkKKyAgICAgICAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGNoaWxkKSAibGF0 ZXhfc3Bhbl9kZWxpbWl0ZXIiKQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICh0cmVl c2l0LW5vZGUtc3RhcnQgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRy ZWVzaXQtbm9kZS1lbmQgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lu dmlzaWJsZSAnbWFya2Rvd24tdHMtLW1hcmt1cCkpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LS1mb250aWZ5LWJhY2tzbGFzaC1lc2NhcGUgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5kICZyZXN0 IF8pCisgICJGb250aWZ5IGJhY2tzbGFzaCBlc2NhcGUgTk9ERSwgaGlkaW5nIHRoZSBiYWNrc2xh c2ggd2hlbiBtYXJrdXAgaXMgaGlkZGVuLgorU2tpcCBoaWRpbmcgaW5zaWRlIGBsYXRleF9ibG9j aycgd2hlcmUgYmFja3NsYXNoZXMgYXJlIExhVGVYIHN5bnRheC4KK09WRVJSSURFLCBTVEFSVCwg YW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVy cmlkZScuIgorICAobGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQor ICAgICAgICAoaW4tbGF0ZXggKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSAodHJlZXNpdC1ub2Rl LXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAibGF0ZXhfYmxvY2siKSkp CisgICAgKHRyZWVzaXQtZm9udGlmeS13aXRoLW92ZXJyaWRlCisgICAgIG5vZGUtc3RhcnQgKDEr IG5vZGUtc3RhcnQpCisgICAgICdtYXJrZG93bi10cy1kZWxpbWl0ZXIgb3ZlcnJpZGUgc3RhcnQg ZW5kKQorICAgICh3aGVuIChhbmQgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBpbi1sYXRl eCkpCisgICAgICAocHV0LXRleHQtcHJvcGVydHkgbm9kZS1zdGFydCAoMSsgbm9kZS1zdGFydCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAnaW52aXNpYmxlICdtYXJrZG93bi10cy0tbWFya3Vw KSkpKQorCisoZGVmdmFyIHNnbWwtY2hhci1uYW1lcykKKyhkZWNsYXJlLWZ1bmN0aW9uIG9yZy1l bnRpdHktZ2V0ICJvcmcvb3JnLWVudGl0aWVzLmVsIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1k ZWNvZGUtZW50aXR5ICh0ZXh0KQorICAiRGVjb2RlIEhUTUwgZW50aXR5IFRFWFQgKGUuZy4sIFwi JmFtcDtcIikgdG8gaXRzIGNoYXJhY3RlciBzdHJpbmcuCitSZXR1cm4gdGhlIGRlY29kZWQgc3Ry aW5nLCBvciBuaWwgaWYgdGhlIGVudGl0eSBpcyB1bmtub3duLiIKKyAgKGNvbmQKKyAgIDs7IE51 bWVyaWMgaGV4ICYjeDFGNEE5OworICAgKChzdHJpbmctbWF0Y2ggIlxcYCYjeFxcKFtbOnhkaWdp dDpdXStcXCk7XFwnIiB0ZXh0KQorICAgIChjaGFyLXRvLXN0cmluZyAoc3RyaW5nLXRvLW51bWJl ciAobWF0Y2gtc3RyaW5nIDEgdGV4dCkgMTYpKSkKKyAgIDs7IE51bWVyaWMgZGVjaW1hbCAmIzEy MzsKKyAgICgoc3RyaW5nLW1hdGNoICJcXGAmI1xcKFtbOmRpZ2l0Ol1dK1xcKTtcXCciIHRleHQp CisgICAgKGNoYXItdG8tc3RyaW5nIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSB0 ZXh0KSkpKQorICAgOzsgTmFtZWQgJmFtcDsgJmNvcHk7IHZpYSBvcmctZW50aXRpZXMsIGZhbGwg YmFjayB0byBzZ21sLWNoYXItbmFtZXMKKyAgICgoc3RyaW5nLW1hdGNoICJcXGAmXFwoW1s6YWxu dW06XV0rXFwpO1xcJyIgdGV4dCkKKyAgICAobGV0ICgobmFtZSAobWF0Y2gtc3RyaW5nIDEgdGV4 dCkpKQorICAgICAgKHJlcXVpcmUgJ29yZy1lbnRpdGllcykKKyAgICAgIChpZi1sZXQqICgoZW50 cnkgKG9yZy1lbnRpdHktZ2V0IG5hbWUpKQorICAgICAgICAgICAgICAgICh1dGY4IChudGggNiBl bnRyeSkpKQorICAgICAgICAgIHV0ZjgKKyAgICAgICAgKHJlcXVpcmUgJ3NnbWwtbW9kZSkKKyAg ICAgICAgKHdoZW4tbGV0KiAoKGNvZGUgKHNlcS1wb3NpdGlvbiBzZ21sLWNoYXItbmFtZXMgbmFt ZSAjJ2VxdWFsKSkpCisgICAgICAgICAgKGNoYXItdG8tc3RyaW5nIGNvZGUpKSkpKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1lbnRpdHkgKG5vZGUgb3ZlcnJpZGUgc3RhcnQgZW5k ICZyZXN0IF8pCisgICJGb250aWZ5IGVudGl0eSBOT0RFIGFuZCBzaG93IGl0cyBkZWNvZGVkIHZh bHVlIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwgYW5kIEVORCBhcmUg cGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVycmlkZScuIgorICAo bGV0ICgobm9kZS1zdGFydCAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAobm9k ZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCisgICAgICAgIChmYWNlIChpZiAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJlbnRpdHlfcmVmZXJlbmNlIikKKyAgICAgICAgICAg ICAgICAgICdtYXJrZG93bi10cy1lbnRpdHktcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgJ21h cmtkb3duLXRzLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSkpKQorICAgICh0cmVlc2l0LWZv bnRpZnktd2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiBtYXJr ZG93bi10cy1oaWRlLW1hcmt1cAorICAgICAgICAod2hlbi1sZXQqICgoZGVjb2RlZCAobWFya2Rv d24tdHMtLWRlY29kZS1lbnRpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVl c2l0LW5vZGUtdGV4dCBub2RlIHQpKSkKKyAgICAgICAgICAgICAgICAgICAgKChjaGFyLWRpc3Bs YXlhYmxlLXAgKGFyZWYgZGVjb2RlZCAwKSkpKQorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0 eSBub2RlLXN0YXJ0IG5vZGUtZW5kICdkaXNwbGF5IGRlY29kZWQpKQorICAgICAgKHJlbW92ZS10 ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkKKwor KGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWNoZWNrYm94IChub2RlIG92ZXJyaWRlIHN0YXJ0 IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0YXNrIGxpc3QgY2hlY2tib3ggTk9ERSwgc2hvdyBh IFVuaWNvZGUgc3ltYm9sIHdoZW4gbWFya3VwIGlzIGhpZGRlbi4KK09WRVJSSURFLCBTVEFSVCwg YW5kIEVORCBhcmUgcGFzc2VkIHRocm91Z2ggdG8KK2B0cmVlc2l0LWZvbnRpZnktd2l0aC1vdmVy cmlkZScuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkK KyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkKKyAgICAgICAgIChj aGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgInRhc2tfbGlzdF9tYXJrZXJf Y2hlY2tlZCIpKQorICAgICAgICAgKGZhY2UgKGlmIGNoZWNrZWQgJ21hcmtkb3duLXRzLXRhc2st Y2hlY2tlZAorICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGFzay11bmNoZWNrZWQpKQor ICAgICAgICAgKHJlcGxhY2VtZW50IChpZiBjaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAg ICAgIG1hcmtkb3duLXRzLWNoZWNrZWQtY2hlY2tib3gKKyAgICAgICAgICAgICAgICAgICAgICAg IG1hcmtkb3duLXRzLXVuY2hlY2tlZC1jaGVja2JveCkpKQorICAgICh0cmVlc2l0LWZvbnRpZnkt d2l0aC1vdmVycmlkZSBub2RlLXN0YXJ0IG5vZGUtZW5kIGZhY2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAoYW5kIG1hcmtk b3duLXRzLWhpZGUtbWFya3VwIHJlcGxhY2VtZW50CisgICAgICAgICAgICAgKGNoYXItZGlzcGxh eWFibGUtcCAoYXJlZiByZXBsYWNlbWVudCAwKSkpCisgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0 eSBub2RlLXN0YXJ0IG5vZGUtZW5kICdkaXNwbGF5IHJlcGxhY2VtZW50KQorICAgICAgKHJlbW92 ZS10ZXh0LXByb3BlcnRpZXMgbm9kZS1zdGFydCBub2RlLWVuZCAnKGRpc3BsYXkgbmlsKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrIChub2RlIG92ZXJy aWRlIHN0YXJ0IGVuZCAmcmVzdCBfKQorICAiRm9udGlmeSB0aGVtYXRpYyBicmVhayBOT0RFIGFu ZCBzaG93IGEgbGluZSB3aGVuIG1hcmt1cCBpcyBoaWRkZW4uCitPVkVSUklERSwgU1RBUlQsIGFu ZCBFTkQgYXJlIHBhc3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJp ZGUnLiIKKyAgKGxldCAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAg ICAgICAgKG5vZGUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKSkKKyAgICAodHJlZXNpdC1m b250aWZ5LXdpdGgtb3ZlcnJpZGUgbm9kZS1zdGFydCBub2RlLWVuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtdGhlbWF0aWMtYnJlYWsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUgc3RhcnQgZW5kKQorICAgIChpZiAo YW5kIG1hcmtkb3duLXRzLWhpZGUtbWFya3VwIG1hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrLWNo YXJhY3RlcgorICAgICAgICAgICAgIChjaGFyLWRpc3BsYXlhYmxlLXAgbWFya2Rvd24tdHMtdGhl bWF0aWMtYnJlYWstY2hhcmFjdGVyKSkKKyAgICAgICAgKGxldCogKChjb2wgKHNhdmUtZXhjdXJz aW9uIChnb3RvLWNoYXIgbm9kZS1zdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgICAgICAgOzsgU3BhbiBpZiB0aGUg ZmFjZSBoYXMgbm9uLW5pbCA6ZXh0ZW5kLgorICAgICAgICAgICAgICAgKHNwYW4tbGVuZ3RoIChp ZiAoZmFjZS1hdHRyaWJ1dGUgJ21hcmtkb3duLXRzLXRoZW1hdGljLWJyZWFrCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZXh0ZW5kIG5pbCAnZGVmYXVs dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHdpbmRvdy1ib2R5LXdpZHRo KSBjb2wpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMikpKQorICAgICAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSBub2RlLXN0YXJ0IG5vZGUtZW5kCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXN0cmluZyBzcGFuLWxlbmd0aAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRzLXRo ZW1hdGljLWJyZWFrLWNoYXJhY3RlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJc biIpKSkKKyAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIG5vZGUtc3RhcnQgbm9kZS1lbmQg JyhkaXNwbGF5IG5pbCkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlmeS1jb2RlLWJs b2NrIChub2RlIF9vdmVycmlkZSBfc3RhcnQgX2VuZCAmcmVzdCBfKQorICAiRm9udGlmeSBjb2Rl IGJsb2NrIGNvbnRlbnQgTk9ERSB3aXRoIGEgYmFja2dyb3VuZCBvdmVybGF5LgorVXNlIGBtYXJr ZG93bi10cy1jb2RlLWJsb2NrLW1hcmt1cC1oaWRkZW4nIHdoZW4gbWFya3VwIGlzIGhpZGRlbiwK K2BtYXJrZG93bi10cy1jb2RlLWJsb2NrJyBvdGhlcndpc2UuICBVc2UgYW4gb3ZlcmxheSBzbyB0 aGUKK2JhY2tncm91bmQgbGF5ZXJzIGl0c2VsZiBiZWhpbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZm9u dGlmaWNhdGlvbi4KK1RoZSBvdmVybGF5IGFsc28gc3RvcmVzIHRoZSBjb2RlIGJsb2NrIGxhbmd1 YWdlIGFuZCBtb2RlIGFzCitwcm9wZXJ0aWVzIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1 YWdlJyBhbmQKK2BtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUnLCBhY2Nlc3NpYmxlIHZpYQor YG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQnLiIKKyAgKGxldCogKChub2RlLXN0 YXJ0IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICh0 cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJl Z2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgKG5vZGUtZW5kIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkK KyAgICAgICAgICAgICAgICAgICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQorICAgICAg ICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAoZmFjZSAoaWYgbWFya2Rvd24tdHMt aGlkZS1tYXJrdXAKKyAgICAgICAgICAgICAgICAgICAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1t YXJrdXAtaGlkZGVuCisgICAgICAgICAgICAgICAgICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkK KyAgICAgICAgIChsYW5nIChtYXJrZG93bi10cy0tbGFuZ3VhZ2UtYXQtbm9kZSBub2RlKSkKKyAg ICAgICAgIChtb2RlICh3aGVuIGxhbmcKKyAgICAgICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1j b2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUgbGFuZykpKQorICAgICAgICAgKGV4aXN0aW5nIChzZXEt ZmluZCAobGFtYmRhIChvdikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3Zlcmxh eS1nZXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2spKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAob3ZlcmxheXMtYXQgbm9kZS1zdGFydCkpKSkKKyAgICAoaWYgZXhpc3RpbmcKKyAg ICAgICAgKHByb2duCisgICAgICAgICAgKG1vdmUtb3ZlcmxheSBleGlzdGluZyBub2RlLXN0YXJ0 IG5vZGUtZW5kKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAnZmFjZSBmYWNlKQor ICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1s YW5ndWFnZSBsYW5nKQorICAgICAgICAgIChvdmVybGF5LXB1dCBleGlzdGluZyAnbWFya2Rvd24t dHMtY29kZS1ibG9jay1tb2RlIG1vZGUpKQorICAgICAgKGxldCAoKG92IChtYWtlLW92ZXJsYXkg bm9kZS1zdGFydCBub2RlLWVuZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgOzsgTWFya2VycyBuZWVk IHRvIGJlIHNldCBvbmx5IG9uY2UuCisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24t dHMtY29kZS1iZWctbWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZS1zdGFydCkpCisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtY29kZS1lbmQt bWFya2VyIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS1lbmQpKQorICAg ICAgICAob3ZlcmxheS1wdXQgb3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2sgdCkKKyAgICAgICAg KG92ZXJsYXktcHV0IG92ICdmYWNlIGZhY2UpCisgICAgICAgIChvdmVybGF5LXB1dCBvdiAnbWFy a2Rvd24tdHMtY29kZS1ibG9jay1sYW5ndWFnZSBsYW5nKQorICAgICAgICAob3ZlcmxheS1wdXQg b3YgJ21hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZSBtb2RlKQorICAgICAgICAob3ZlcmxheS1w dXQgb3YgJ2V2YXBvcmF0ZSB0KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNvZGUtYmxvY2st YXQtcCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiBub24gbmlsIGlmIHBvaW50IGlzIGluIGEg Y29kZSBibG9jay4KK0lmIFBPUyBpcyBuaWwsIHVzZSBwb2ludC4iCisgIChnZXQtY2hhci1wcm9w ZXJ0eSAob3IgcG9zIChwb2ludCkpICdtYXJrZG93bi10cy1jb2RlLWJsb2NrKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbGFuZ3VhZ2UtYXQgKCZvcHRpb25hbCBwb3MpCisgICJS ZXR1cm4gdGhlIGxhbmd1YWdlIHN5bWJvbCBvZiB0aGUgY29kZSBibG9jayBhdCBQT1MuCitJZiBQ T1MgaXMgbmlsLCB1c2UgcG9pbnQuICBSZXR1cm5zIG5pbCBpZiBQT1MgaXMgbm90IGluc2lkZSBh IGZlbmNlZAorY29kZSBibG9jay4gIFRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEg Z3Vlc3QgdHJlZS1zaXR0ZXIgcGFyc2VyCitpcyBhY3RpdmUsIHNpbmNlIHRoZSBsYW5ndWFnZSBp cyBzdG9yZWQgb24gdGhlIGNvZGUgYmxvY2sgb3ZlcmxheSBieSB0aGUKK2hvc3QgcGFyc2VyJ3Mg Zm9udGlmaWNhdGlvbi4iCisgIChnZXQtY2hhci1wcm9wZXJ0eSAob3IgcG9zIChwb2ludCkpICdt YXJrZG93bi10cy1jb2RlLWJsb2NrLWxhbmd1YWdlKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLWNv ZGUtYmxvY2stbW9kZS1hdCAoJm9wdGlvbmFsIHBvcykKKyAgIlJldHVybiB0aGUgbWFqb3IgbW9k ZSBmb3IgdGhlIGNvZGUgYmxvY2sgYXQgUE9TLgorSWYgUE9TIGlzIG5pbCwgdXNlIHBvaW50LiAg UmV0dXJucyBuaWwgaWYgUE9TIGlzIG5vdCBpbnNpZGUgYSBmZW5jZWQKK2NvZGUgYmxvY2sgb3Ig aWYgdGhlIGxhbmd1YWdlIGhhcyBubyByZWNvZ25pemVkIG1vZGUuIgorICAoZ2V0LWNoYXItcHJv cGVydHkgKG9yIHBvcyAocG9pbnQpKSAnbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlKSkKKwor Ozs7IEltYWdlIGhhbmRsaW5nOgorCisoZGVmdW4gbWFya2Rvd24tdHMtLWltYWdlLWFsb25lLW9u LWxpbmUtcCAobm9kZSkKKyAgIlJldHVybiBub24tbmlsIGlmIGltYWdlIE5PREUgaXMgdGhlIG9u bHkgY29udGVudCBvbiBpdHMgbGluZS4KK1doaXRlc3BhY2UsIGJsb2NrIHF1b3RlIG1hcmtlcnMg KGA+JyksIGFuZCBsaXN0IG1hcmtlcnMKK1woYC0nLCBgKicsIGArJywgYDEuJykgYmVmb3JlIHRo ZSBpbWFnZSBhcmUgaWdub3JlZC4iCisgIChsZXQgKChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUt c3RhcnQgbm9kZSkpCisgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2RlKSkp CisgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAoZ290by1jaGFyIG5vZGUtc3RhcnQpCisgICAg ICAobGV0ICgoYm9sIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpCisgICAgICAgICAgICAoZW9s IChsaW5lLWVuZC1wb3NpdGlvbikpKQorICAgICAgICA7OyBCZWZvcmUgdGhlIGltYWdlOiBvbmx5 IGJsb2NrIHF1b3RlIG1hcmtlcnMsIHdoaXRlc3BhY2UsCisgICAgICAgIDs7IGFuZCBhbiBvcHRp b25hbCBsaXN0IG1hcmtlciBhcmUgYWxsb3dlZC4KKyAgICAgICAgKGFuZCAoc3RyaW5nLW1hdGNo LXAKKyAgICAgICAgICAgICAgKHJ4IGJvcworICAgICAgICAgICAgICAgICAgKHplcm8tb3ItbW9y ZSAoYW55ICI+IFx0IikpCisgICAgICAgICAgICAgICAgICAob3B0aW9uYWwgKG9yIChzZXEgKGFu eSAiLSorIikgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VxIChvbmUt b3ItbW9yZSBkaWdpdCkgKGFueSAiLikiICkgIiAiKSkpCisgICAgICAgICAgICAgICAgICBlb3Mp CisgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgYm9sIG5vZGUt c3RhcnQpKQorICAgICAgICAgICAgIDs7IEFmdGVyIHRoZSBpbWFnZTogb25seSB0cmFpbGluZyB3 aGl0ZXNwYWNlIGFsbG93ZWQuCisgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAg ICAgICAgIChyeCBib3MgKHplcm8tb3ItbW9yZSAoYW55ICIgXHQiKSkgZW9zKQorICAgICAgICAg ICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIG5vZGUtZW5kIGVvbCkpKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1mb250aWZ5LWltYWdlIChub2RlIF9vdmVycmlkZSBfc3Rh cnQgX2VuZCAmcmVzdCBfKQorICAiU2hvdyBhbiBpbmxpbmUgaW1hZ2UgYXQgTk9ERS4KK1doZW4g YG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMnIGlzIG5vbi1uaWwsIGRpc3BsYXkgdGhlIGltYWdl LgorSWYgdGhlIGltYWdlIGxpbmsgaXMgdGhlIG9ubHkgY29udGVudCBvbiBpdHMgbGluZSwgZGlz cGxheSB0aGUKK2ltYWdlIGJlbG93IHRoZSBsaW5rLiAgSWYgdGhlIGltYWdlIGlzIGlubGluZSB3 aXRoaW4gYSBwYXJhZ3JhcGgsCitkaXNwbGF5IGl0IHJpZ2h0IGFmdGVyIHRoZSBsaW5rIHRleHQu CitSZW1vdGUgaW1hZ2VzIGFyZSBjb250cm9sbGVkIGJ5CitgbWFya2Rvd24tdHMtZGlzcGxheS1y ZW1vdGUtaW5saW5lLWltYWdlcycuIgorICAobGV0KiAoKG5vZGUtc3RhcnQgKHRyZWVzaXQtbm9k ZS1zdGFydCBub2RlKSkKKyAgICAgICAgIChub2RlLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBub2Rl KSkKKyAgICAgICAgIChlb2wgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgbm9kZS1lbmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkKKyAgICAg ICAgIChzZWFyY2gtZW5kIChtaW4gKDErIGVvbCkgKHBvaW50LW1heCkpKSkKKyAgICA7OyBBbHdh eXMgY2xlYXIgc3RhbGUgb3ZlcmxheXMgZm9yIHRoaXMgbm9kZSdzIHJhbmdlLgorICAgIChkb2xp c3QgKG92IChvdmVybGF5cy1pbiBub2RlLXN0YXJ0IHNlYXJjaC1lbmQpKQorICAgICAgKHdoZW4g KGFuZCAob3ZlcmxheS1nZXQgb3YgJ21hcmtkb3duLXRzLWltYWdlKQorICAgICAgICAgICAgICAg ICAoPj0gKG92ZXJsYXktc3RhcnQgb3YpIG5vZGUtc3RhcnQpCisgICAgICAgICAgICAgICAgICg8 PSAob3ZlcmxheS1lbmQgb3YpIHNlYXJjaC1lbmQpKQorICAgICAgICAoZGVsZXRlLW92ZXJsYXkg b3YpKSkKKyAgICAod2hlbiAoYW5kIG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAgICAg ICAgICAgIDs7IERvbid0IGNyZWF0ZSBpbWFnZSBvdmVybGF5cyBmb3Igbm9kZXMgaW5zaWRlCisg ICAgICAgICAgICAgICA7OyBmb2xkZWQgKG91dGxpbmUtaW52aXNpYmxlKSBoZWFkaW5ncywgc2lu Y2UgdGhlCisgICAgICAgICAgICAgICA7OyBpbWFnZXMgd291bGRuJ3QgYmUgdmlzaWJsZSBhbmQg Y291bGQgaW50ZXJmZXJlCisgICAgICAgICAgICAgICA7OyB3aXRoIHRoZSBmb2xkZWQgZGlzcGxh eS4KKyAgICAgICAgICAgICAgIChub3QgKG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1w IG5vZGUtc3RhcnQpKSkKKyAgICAgIChsZXQqICgoZGVzdCAodHJlZXNpdC1zZWFyY2gtc3VidHJl ZSBub2RlICJcXGBsaW5rX2Rlc3RpbmF0aW9uXFwnIikpCisgICAgICAgICAgICAgKHVybCAoYW5k IGRlc3QgKHRyZWVzaXQtbm9kZS10ZXh0IGRlc3QgdCkpKQorICAgICAgICAgICAgIChyZW1vdGVw IChhbmQgdXJsIChzdHJpbmctbWF0Y2gtcCAiXFxgaHR0cHM/Oi8vIiB1cmwpKSkKKyAgICAgICAg ICAgICAoZGlzcGxheWFibGUKKyAgICAgICAgICAgICAgKHdoZW4gdXJsCisgICAgICAgICAgICAg ICAgKGlmIHJlbW90ZXAKKyAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIG1hcmtkb3duLXRz LWRpc3BsYXktcmVtb3RlLWlubGluZS1pbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdkb3dubG9hZCkKKyAgICAgICAgICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycworICAg ICAgICAgICAgICAgICAgICAgICAgKHJlcXVpcmUgJ3VybC1oYW5kbGVycykKKyAgICAgICAgICAg ICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXQtYnVmZmVyLW11bHRpYnl0ZSBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1 cmwtaW5zZXJ0LWZpbGUtY29udGVudHMgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLXN0cmluZykpKSkKKyAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlIChleHBhbmQt ZmlsZS1uYW1lIHVybCkpKQorICAgICAgICAgICAgICAgICAgICAoYW5kIChub3QgKGZpbGUtcmVt b3RlLXAgZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgZmls ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2Utc3VwcG9ydGVkLWZpbGUtcCBmaWxl KQorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUpKSkpKQorICAgICAgICAgICAgIChtYXgt dyAoYW5kIGRpc3BsYXlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcSBtYXJr ZG93bi10cy1pbWFnZS1tYXgtd2lkdGggJ3dpbmRvdykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdpbmRvdy1ib2R5LXdpZHRoIG5pbCB0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFya2Rvd24tdHMtaW1hZ2UtbWF4LXdpZHRoKSkpCisgICAgICAgICAgICAgKGltZyAoYW5k IG1heC13CisgICAgICAgICAgICAgICAgICAgICAgIChjcmVhdGUtaW1hZ2UgZGlzcGxheWFibGUg bmlsIHJlbW90ZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF4LXdp ZHRoIG1heC13CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjYWxlIDEp KSkpCisgICAgICAgICh3aGVuIGltZworICAgICAgICAgIChsZXQqICgoYWxvbmUgKG1hcmtkb3du LXRzLS1pbWFnZS1hbG9uZS1vbi1saW5lLXAgbm9kZSkpCisgICAgICAgICAgICAgICAgIChzdHIg KGlmIGFsb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgIlxuIiAocHJvcGVy dGl6ZSAiICIgJ2Rpc3BsYXkgaW1nKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0 aXplICIgIiAnZGlzcGxheSBpbWcpKSkKKyAgICAgICAgICAgICAgICAgKG92IChtYWtlLW92ZXJs YXkgKDEtIG5vZGUtZW5kKSBub2RlLWVuZCBuaWwgdCBuaWwpKSkKKyAgICAgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UgdCkKKyAgICAgICAgICAgIChvdmVybGF5LXB1 dCBvdiAnYWZ0ZXItc3RyaW5nIHN0cikKKyAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZXZh cG9yYXRlIHQpKSkpKSkpCisKKzs7OyBVUkwvVVJJIGhhbmRsaW5nOgorCisoZGVmdmFyIG1hcmtk b3duLXRzLS1iYXJlLXVybC1yZWdleHAgZ290by1hZGRyZXNzLXVybC1yZWdleHAKKyAgIlJlZ2V4 cCBtYXRjaGluZyBiYXJlIFVSTHMgbm90IHdyYXBwZWQgaW4gYW5nbGUgYnJhY2tldHMgb3IgbGlu ayBzeW50YXguIikKKworKGRlZnZhciBtYXJrZG93bi10cy0tYmFyZS1lbWFpbC11cmktcmVnZXhw IGdvdG8tYWRkcmVzcy1tYWlsLXJlZ2V4cAorICAiUmVnZXhwIG1hdGNoaW5nIGJhcmUgZW1haWwg YWRkcmVzc2VzIG5vdCB3cmFwcGVkIGluIGFuZ2xlIGJyYWNrZXRzLiIpCisKKyhkZWZ1biBtYXJr ZG93bi10cy0tZm9udGlmeS1iYXJlLXVyaSAoc3RhcnQgZW5kKQorICAiRm9udGlmeSBiYXJlIFVS TCBvciBlbWFpbCBVUkkgYmV0d2VlbiBTVEFSVCBhbmQgRU5ELgorU2tpcCBtYXRjaGVzIGFscmVh ZHkgaW5zaWRlIHRyZWUtc2l0dGVyIGxpbmsgb3IgYXV0b2xpbmsgbm9kZXMuIgorICAoZG9saXN0 IChyZSAobGlzdCBtYXJrZG93bi10cy0tYmFyZS11cmwtcmVnZXhwCisgICAgICAgICAgICAgICAg ICAgIG1hcmtkb3duLXRzLS1iYXJlLWVtYWlsLXVyaS1yZWdleHApKQorICAgIChnb3RvLWNoYXIg c3RhcnQpCisgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCByZSBlbmQgdCkKKyAgICAgIChs ZXQqICgodXJpLXN0YXJ0IChtYXRjaC1iZWdpbm5pbmcgMCkpCisgICAgICAgICAgICAgKHVyaS1l bmQgKG1hdGNoLWVuZCAwKSkKKyAgICAgICAgICAgICAodXJpIChtYXRjaC1zdHJpbmcgMCkpCisg ICAgICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCB1cmktc3RhcnQgJ21hcmtkb3duLWlu bGluZSkpCisgICAgICAgICAgICAgKHBhcmVudCAoYW5kIG5vZGUgKHRyZWVzaXQtbm9kZS1wYXJl bnQgbm9kZSkpKQorICAgICAgICAgICAgIChwYXJlbnQtdHlwZSAoYW5kIHBhcmVudCAodHJlZXNp dC1ub2RlLXR5cGUgcGFyZW50KSkpKQorICAgICAgICAodW5sZXNzIChvciAobWVtYmVyIHBhcmVu dC10eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiaW5saW5lX2xpbmsiICJmdWxs X3JlZmVyZW5jZV9saW5rIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbGxhcHNl ZF9yZWZlcmVuY2VfbGluayIgInNob3J0Y3V0X2xpbmsiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiaW1hZ2UiICJ1cmlfYXV0b2xpbmsiICJlbWFpbF9hdXRvbGluayIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJsaW5rX2Rlc3RpbmF0aW9uIikpCisgICAgICAgICAgICAg ICAgICAgIChtZW1iZXIgKGFuZCBub2RlICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnKCJ1cmlfYXV0b2xpbmsiICJlbWFpbF9hdXRvbGluayIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rX2Rlc3RpbmF0aW9uIiAiY29kZV9z cGFuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVfZmVuY2VfY29udGVudCIg ImluZm9fc3RyaW5nIikpCisgICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSB1 cmktc3RhcnQgJ2J1dHRvbikpCisgICAgICAgICAgKG1hcmtkb3duLXRzLS1tYWtlLWxpbmstYnV0 dG9uCisgICAgICAgICAgIHVyaS1zdGFydCB1cmktZW5kCisgICAgICAgICAgIChpZiAoZXEgdXJp LXN0YXJ0IDApCisgICAgICAgICAgICAgICB1cmkKKyAgICAgICAgICAgICAoY29uY2F0ICJtYWls dG86IiB1cmkpKSkpKSkpKQorCis7OzsgdHJlZXNpdCBzZXR0aW5nczoKKwogKGRlZnZhciBtYXJr ZG93bi10cy0tdHJlZXNpdC1zZXR0aW5ncwogICAodHJlZXNpdC1mb250LWxvY2stcnVsZXMKICAg IDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCiAgICA6b3ZlcnJpZGUgdAogICAgOmZlYXR1cmUg J2RlbGltaXRlcgotICAgJygoaW5saW5lX2xpbmsgWyAiWyIgIl0iICIoIiAiKSIgXSBAc2hhZG93 KQotICAgICAoaW1hZ2UgWyAiISIgIlsiICJdIiAiKCIgIikiIF0gQHNoYWRvdykpCisgICAnKChp bmxpbmVfbGluayBbICJbIiAiXSIgIigiICIpIiBdIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxp bWl0ZXIpCisgICAgIChmdWxsX3JlZmVyZW5jZV9saW5rIFsgIlsiICJdIiBdIEBtYXJrZG93bi10 cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChjb2xsYXBzZWRfcmVmZXJlbmNlX2xpbmsgWyAi WyIgIl0iIF0gQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKKyAgICAgKHNob3J0Y3V0 X2xpbmsgWyAiWyIgIl0iIF0gQG1hcmtkb3duLXRzLS1mb250aWZ5LWRlbGltaXRlcikKKyAgICAg KGltYWdlIFsgIiEiICJbIiAiXSIgIigiICIpIiBdIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxp bWl0ZXIpKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAnaGVhZGluZwpA QCAtMTk0LDE2ICs5MTMsMzQgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAg KGF0eF9oM19tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0 eF9oNF9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgKGF0eF9o NV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKLSAgICAgKGF0eF9oNl9t YXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIpCisgICAgIChhdHhfaDZfbWFy a2VyKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDFfdW5k ZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyCisgICAgIChzZXRleHRfaDJf dW5kZXJsaW5lKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZGVsaW1pdGVyKQogCiAgICA6bGFuZ3Vh Z2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBoCi0gICAnKCgodGhlbWF0aWNfYnJl YWspIEBtYXJrZG93bi10cy1kZWxpbWl0ZXIpCi0gICAgICgoaW5kZW50ZWRfY29kZV9ibG9jaykg QGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICcoKCh0aGVtYXRpY19icmVhaykgQG1hcmtkb3du LXRzLS1mb250aWZ5LXRoZW1hdGljLWJyZWFrKQorICAgICAoKGh0bWxfYmxvY2spIEBtYXJrZG93 bi10cy1odG1sLWJsb2NrKQorICAgICAoKGluZGVudGVkX2NvZGVfYmxvY2spIEBtYXJrZG93bi10 cy1pbmRlbnRlZC1jb2RlLWJsb2NrKQogICAgICAobGlzdF9pdGVtIChsaXN0X21hcmtlcl9zdGFy KSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpCiAgICAgIChsaXN0X2l0ZW0gKGxpc3RfbWFya2Vy X3BsdXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKICAgICAgKGxpc3RfaXRlbSAobGlzdF9t YXJrZXJfbWludXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKLSAgICAgKGxpc3RfaXRlbSAo bGlzdF9tYXJrZXJfZG90KSBAbWFya2Rvd24tdHMtbGlzdC1tYXJrZXIpKQorICAgICAobGlzdF9p dGVtIChsaXN0X21hcmtlcl9kb3QpIEBtYXJrZG93bi10cy1saXN0LW1hcmtlcikKKyAgICAgKGxp c3RfaXRlbSAobGlzdF9tYXJrZXJfcGFyZW50aGVzaXMpIEBtYXJrZG93bi10cy1saXN0LW1hcmtl cikKKyAgICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtlcl91bmNoZWNrZWQpIEBtYXJrZG93 bi10cy0tZm9udGlmeS1jaGVja2JveCkKKyAgICAgKGxpc3RfaXRlbSAodGFza19saXN0X21hcmtl cl9jaGVja2VkKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktY2hlY2tib3gpCisgICAgIChwaXBlX3Rh YmxlX2hlYWRlciAifCIgQG1hcmtkb3duLXRzLXRhYmxlLWhlYWRlcikKKyAgICAgKHBpcGVfdGFi bGVfaGVhZGVyIChwaXBlX3RhYmxlX2NlbGwpIEBtYXJrZG93bi10cy10YWJsZS1oZWFkZXIpCisg ICAgIChwaXBlX3RhYmxlX3JvdyAifCIgQG1hcmtkb3duLXRzLXRhYmxlLWRlbGltaXRlci1jZWxs KQorICAgICAocGlwZV90YWJsZV9yb3cgKHBpcGVfdGFibGVfY2VsbCkgQG1hcmtkb3duLXRzLXRh YmxlLWNlbGwpCisgICAgIChwaXBlX3RhYmxlX2RlbGltaXRlcl9yb3cgInwiIEBtYXJrZG93bi10 cy10YWJsZS1kZWxpbWl0ZXItY2VsbCkKKyAgICAgKGxpbmtfcmVmZXJlbmNlX2RlZmluaXRpb24K KyAgICAgIChsaW5rX2xhYmVsKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1yZWYtbGFiZWwp CisgICAgIChsaW5rX3JlZmVyZW5jZV9kZWZpbml0aW9uCisgICAgICAobGlua19kZXN0aW5hdGlv bikgQG1hcmtkb3duLXRzLS1mb250aWZ5LWxpbmstcmVmLWRlc3RpbmF0aW9uKQorICAgICAobGlu a19yZWZlcmVuY2VfZGVmaW5pdGlvbgorICAgICAgKGxpbmtfdGl0bGUpIEBtYXJrZG93bi10cy1s aW5rLWRlc3RpbmF0aW9uKQorICAgICAocGlwZV90YWJsZV9kZWxpbWl0ZXJfcm93IChwaXBlX3Rh YmxlX2RlbGltaXRlcl9jZWxsKSBAbWFya2Rvd24tdHMtdGFibGUtZGVsaW1pdGVyLWNlbGwpKQog CiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBoCkBAIC0yMTcs ODQgKzk1NCw5NTkgQEAgbWFya2Rvd24tdHMtLXRyZWVzaXQtc2V0dGluZ3MKICAgICAgIChibG9j a19xdW90ZV9tYXJrZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0ZXIKICAgICAgIChw YXJhZ3JhcGggKGlubGluZSAoYmxvY2tfY29udGludWF0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktZGVsaW1pdGVyKSkpKQogCisgICA6bGFuZ3VhZ2UgJ21hcmtkb3duCisgICA6ZmVhdHVyZSAn cGFyYWdyYXBoCisgICA6b3ZlcnJpZGUgJ2FwcGVuZAorICAgJygoZmVuY2VkX2NvZGVfYmxvY2sK KyAgICAgIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpKQorICAgICAgKGNvZGVfZmVuY2VfY29udGVu dCkgQG1hcmtkb3duLXRzLS1mb250aWZ5LW5vbi10cy1jb2RlLWJsb2NrKSkKKworICAgOmxhbmd1 YWdlICdtYXJrZG93bgorICAgOmZlYXR1cmUgJ3BhcmFncmFwaAorICAgOm92ZXJyaWRlICdhcHBl bmQKKyAgICcoKGZlbmNlZF9jb2RlX2Jsb2NrIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBtYXJrZG93 bi10cy0tZm9udGlmeS1jb2RlLWJsb2NrKSkKKwogICAgOmxhbmd1YWdlICdtYXJrZG93bi1pbmxp bmUKICAgIDpvdmVycmlkZSAnYXBwZW5kCiAgICA6ZmVhdHVyZSAncGFyYWdyYXBoLWlubGluZQot ICAgJygoKGltYWdlX2Rlc2NyaXB0aW9uKSBAbGluaykKLSAgICAgKChsaW5rX2Rlc3RpbmF0aW9u KSBAZm9udC1sb2NrLXN0cmluZy1mYWNlKQotICAgICAoKGNvZGVfc3BhbikgQGZvbnQtbG9jay1z dHJpbmctZmFjZSkKKyAgICcoKChsaW5rX2Rlc3RpbmF0aW9uKSBAbWFya2Rvd24tdHMtLWZvbnRp ZnktbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChjb2RlX3NwYW4pIEBtYXJrZG93bi10cy1jb2Rl LXNwYW4pCiAgICAgICgoY29kZV9zcGFuX2RlbGltaXRlcikgQG1hcmtkb3duLXRzLS1mb250aWZ5 LWRlbGltaXRlcikKLSAgICAgKChlbXBoYXNpcykgQGl0YWxpYykKLSAgICAgKChzdHJvbmdfZW1w aGFzaXMpIEBib2xkKQotICAgICAoaW5saW5lX2xpbmsgKGxpbmtfdGV4dCkgQGxpbmspCi0gICAg IChpbmxpbmVfbGluayAobGlua19kZXN0aW5hdGlvbikgQGZvbnQtbG9jay1zdHJpbmctZmFjZSkK LSAgICAgKHNob3J0Y3V0X2xpbmsgKGxpbmtfdGV4dCkgQGxpbmspKQorICAgICAoKGVtcGhhc2lz KSBAbWFya2Rvd24tdHMtZW1waGFzaXMpCisgICAgICgoc3Ryb25nX2VtcGhhc2lzKSBAbWFya2Rv d24tdHMtYm9sZCkKKyAgICAgKChzdHJpa2V0aHJvdWdoKSBAbWFya2Rvd24tdHMtc3RyaWtldGhy b3VnaCkKKyAgICAgKGlubGluZV9saW5rIChsaW5rX3RleHQpIEBtYXJrZG93bi10cy0tZm9udGlm eS1saW5rLW5vZGUpCisgICAgIChmdWxsX3JlZmVyZW5jZV9saW5rIChsaW5rX3RleHQpIEBtYXJr ZG93bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgIChmdWxsX3JlZmVyZW5jZV9saW5rIChs aW5rX2xhYmVsKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktbGluay1ub2RlKQorICAgICAoY29sbGFw c2VkX3JlZmVyZW5jZV9saW5rIChsaW5rX3RleHQpIEBtYXJrZG93bi10cy0tZm9udGlmeS1saW5r LW5vZGUpCisgICAgIChzaG9ydGN1dF9saW5rIChsaW5rX3RleHQpIEBtYXJrZG93bi10cy0tZm9u dGlmeS1saW5rLW5vZGUpCisgICAgIChpbWFnZSAoaW1hZ2VfZGVzY3JpcHRpb24pIEBtYXJrZG93 bi10cy0tZm9udGlmeS1saW5rLW5vZGUpCisgICAgICgodXJpX2F1dG9saW5rKSBAbWFya2Rvd24t dHMtLWZvbnRpZnktYXV0b2xpbmspCisgICAgICgoZW1haWxfYXV0b2xpbmspIEBtYXJrZG93bi10 cy0tZm9udGlmeS1hdXRvbGluaykKKyAgICAgKGlubGluZV9saW5rIChsaW5rX3RpdGxlKSBAbWFy a2Rvd24tdHMtbGluay1kZXN0aW5hdGlvbikKKyAgICAgKChiYWNrc2xhc2hfZXNjYXBlKSBAbWFy a2Rvd24tdHMtLWZvbnRpZnktYmFja3NsYXNoLWVzY2FwZSkKKyAgICAgKChlbnRpdHlfcmVmZXJl bmNlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktZW50aXR5KQorICAgICAoKG51bWVyaWNfY2hhcmFj dGVyX3JlZmVyZW5jZSkgQG1hcmtkb3duLXRzLS1mb250aWZ5LWVudGl0eSkKKyAgICAgKChodG1s X3RhZykgQG1hcmtkb3duLXRzLWh0bWwtdGFnKQorICAgICAoKGxhdGV4X2Jsb2NrKSBAbWFya2Rv d24tdHMtLWZvbnRpZnktbGF0ZXgtYmxvY2spKQogCiAgICA6bGFuZ3VhZ2UgJ21hcmtkb3duLWlu bGluZQogICAgOmZlYXR1cmUgJ3BhcmFncmFwaC1pbmxpbmUKICAgIDpvdmVycmlkZSAnYXBwZW5k CiAgICAnKChlbXBoYXNpc19kZWxpbWl0ZXIpIEBtYXJrZG93bi10cy0tZm9udGlmeS1kZWxpbWl0 ZXIpCi0gICApKQogCi07OzsgSW1lbnUKKyAgIDpsYW5ndWFnZSAnbWFya2Rvd24taW5saW5lCisg ICA6ZmVhdHVyZSAnaW1hZ2UtcHJldmlldworICAgOm92ZXJyaWRlICdhcHBlbmQKKyAgICcoKGlt YWdlKSBAbWFya2Rvd24tdHMtLWZvbnRpZnktaW1hZ2UpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRz LWltZW51LW5vZGUtcCAobm9kZSkKKzs7OyBJbWVudToKKworKGRlZnVuIG1hcmtkb3duLXRzLS1p bWVudS1oZWFkaW5nLW5vZGUtcCAobm9kZSkKICAgIkNoZWNrIGlmIE5PREUgaXMgYSB2YWxpZCBl bnRyeSB0byBpbWVudS4iCi0gIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9k ZS1wYXJlbnQgbm9kZSkpCi0gICAgICAgICAiYXR4X2hlYWRpbmciKSkKKyAgKGFuZCAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG5vZGUpICJpbmxpbmUiKQorICAgICAgIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgKHRyZWVzaXQtbm9kZS1wYXJlbnQgbm9kZSkpCisgICAgICAgICAgICAgICJh dHhfaGVhZGluZyIpKSkKIAotKGRlZnVuIG1hcmtkb3duLXRzLWltZW51LW5hbWUtZnVuY3Rpb24g KG5vZGUpCisoZGVmdW4gbWFya2Rvd24tdHMtLWltZW51LWhlYWRpbmctbmFtZS1mdW5jdGlvbiAo bm9kZSkKICAgIlJldHVybiBhbiBpbWVudSBlbnRyeSBpZiBOT0RFIGlzIGEgdmFsaWQgaGVhZGVy LiIKICAgKGxldCAoKG5hbWUgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpKSkKLSAgICAoaWYgKG1h cmtkb3duLXRzLWltZW51LW5vZGUtcCBub2RlKQotCSh0aHJlYWQtZmlyc3QgKHRyZWVzaXQtbm9k ZS1wYXJlbnQgbm9kZSkgKHRyZWVzaXQtbm9kZS10ZXh0KSkKKyAgICAoaWYgKG1hcmtkb3duLXRz LS1pbWVudS1oZWFkaW5nLW5vZGUtcCBub2RlKQorICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcg KHRyZWVzaXQtbm9kZS10ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1u b2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIiB0ICIgIikp CiAgICAgICBuYW1lKSkpCiAKLShkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLXByZWRpY2F0ZSAo bm9kZSkKLSAgIk1hdGNoIGEgaGllcmFyY2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5n LiIKKyhkZWZ1biBtYXJrZG93bi10cy0taW1lbnUtY29kZS1ibG9jay1ub2RlLXAgKG5vZGUpCisg ICJDaGVjayBpZiBOT0RFIGlzIGFuIGluZm9fc3RyaW5nIChjb2RlIGJsb2NrIGhlYWRlcikuIgor ICAoYW5kIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbm9kZSkgImluZm9fc3RyaW5nIikKKyAg ICAgICAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJsYW5ndWFnZSIpKSkKKworKGRlZnVu IG1hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5hbWUtZnVuY3Rpb24gKG5vZGUpCisgICJS ZXR1cm4gYW4gaW1lbnUgZW50cnkgbmFtZSBmb3IgYSBjb2RlIGJsb2NrIGluZm9fc3RyaW5nIE5P REUuCitVc2VzIHRoZSBkZXNjcmlwdGl2ZSB0ZXh0IGFmdGVyIHRoZSBsYW5ndWFnZSBuYW1lLiIK KyAgKHdoZW4tbGV0KiAoKGxhbmctbm9kZSAodHJlZXNpdC1zZWFyY2gtc3VidHJlZSBub2RlICJs YW5ndWFnZSIpKQorICAgICAgICAgICAgICAoZGVzYyAoc3RyaW5nLXRyaW0KKyAgICAgICAgICAg ICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKKyAgICAgICAgICAgICAg ICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBsYW5nLW5vZGUpCisgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpKSkpCisgICAgKGZvcm1hdCAiJXM6ICVzIiAodHJl ZXNpdC1ub2RlLXRleHQgbGFuZy1ub2RlKSBkZXNjKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t b3V0bGluZS1wcmVkaWNhdGUgKG5vZGUpCisgICJNYXRjaCBOT0RFIGlmIGl0IGlzIGEgaGllcmFy Y2hpY2FsIHNlY3Rpb24gdGhhdCBoYXMgYSBoZWFkaW5nLiIKICAgKGFuZCAoZXF1YWwgKHRyZWVz aXQtbm9kZS10eXBlIG5vZGUpICJzZWN0aW9uIikKICAgICAgICAod2hlbi1sZXQqICgoY2hpbGQg KHRyZWVzaXQtbm9kZS1jaGlsZCBub2RlIDApKSkKICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1u b2RlLXR5cGUgY2hpbGQpICJhdHhfaGVhZGluZyIpKSkpCiAKLTs7OyBDb2RlIGJsb2NrcwotCi0o ZGVmdmFyLWxvY2FsIG1hcmtkb3duLXRzLS1jb25maWd1cmVkLWxhbmd1YWdlcyBuaWwKLSAgIkEg bGlzdCBvZiBsYW5ndWFnZXMgdGhhdCBoYXZlIGJlZW4gc2V0dXAgaW4gdGhpcyBidWZmZXIuCi0K LVdoZW4gYSBjb2RlIGJsb2NrIG9mIGEgbGFuZ3VhZ2UgYXBwZWFycywgYG1hcmtkb3duLXRzLW1v ZGUnIGxvYWRzCi1sYW5ndWFnZSBzZXR1cHMgbGlrZSBmb250LWxvY2sgYW5kIGluZGVudGF0aW9u IGZvciB0aGF0IGxhbmd1YWdlLCBhbmQKLWFkZHMgdGhhdCBsYW5ndWFnZSB0byB0aGlzIGxpc3Qu IikKKzs7OyBIZWFkaW5nIG1hbmlwdWxhdGlvbjoKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1w YXJzZXItaGVhZGluZy1tYXgtbGV2ZWwgNgorICAiTWF4aW11bSBBVFggaGVhZGluZyBsZXZlbCBp biBNYXJrZG93biAoaDHigJNoNikuCitEZWZpbmVkIGJ5IHRoZSBDb21tb25NYXJrIHNwZWMgYW5k IHRoZSB0cmVlLXNpdHRlciBncmFtbWFyLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGlu Zy1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSBhdHhfaGVhZGluZyBub2RlIGF0IG9yIGJlZm9y ZSBwb2ludCwgb3IgbmlsLiIKKyAgKHdoZW4tbGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCAo cG9pbnQpICdtYXJrZG93bikpKQorICAgIChpZiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG5v ZGUpICJhdHhfaGVhZGluZyIpCisgICAgICAgIG5vZGUKKyAgICAgICh0cmVlc2l0LXBhcmVudC11 bnRpbAorICAgICAgIG5vZGUgKGxhbWJkYSAobikgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlwZSBu KSAiYXR4X2hlYWRpbmciKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taGVhZGluZy1sZXZl bCAoaGVhZGluZykKKyAgIlJldHVybiB0aGUgbGV2ZWwgb2YgSEVBRElORyBub2RlICgxIHRvIGBt YXJrZG93bi10cy0tcGFyc2VyLWhlYWRpbmctbWF4LWxldmVsJykuIgorICAobGV0ICgobWFya2Vy ICh0cmVlc2l0LW5vZGUtY2hpbGQgaGVhZGluZyAwKSkpCisgICAgKGxlbmd0aCAodHJlZXNpdC1u b2RlLXRleHQgbWFya2VyIHQpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tc2VjdGlvbi1hdC1w b2ludCAoKQorICAiUmV0dXJuIHRoZSBzZWN0aW9uIG5vZGUgY29udGFpbmluZyBwb2ludC4iCisg ICh3aGVuLWxldCogKChub2RlICh0cmVlc2l0LW5vZGUtYXQgKHBvaW50KSAnbWFya2Rvd24pKSkK KyAgICAodHJlZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKSAoZXF1YWwg KHRyZWVzaXQtbm9kZS10eXBlIG4pICJzZWN0aW9uIikpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10 cy1wcm9tb3RlICgpCisgICJQcm9tb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2lu dC4KK0ZvciBoZWFkaW5ncywgZGVjcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIyB0byAjKS4KK0Zv ciBsaXN0IGl0ZW1zLCBkZWNyZWFzZSBuZXN0aW5nIChkZWRlbnQpLgorV2l0aCBgdHJhbnNpZW50 LW1hcmstbW9kZScgb24gYW5kIG1hcmsgYWN0aXZlLCBwcm9tb3RlIGFsbAoraGVhZGluZ3MgaW4g dGhlIHJlZ2lvbi4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGNvbmQKKyAgICgoYW5kIHRyYW5zaWVu dC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCisgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRl bW90ZS1yZWdpb24gLTEpKQorICAgKChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQor ICAgIChtYXJrZG93bi10cy0tbGlzdC1wcm9tb3RlLW9yLWRlbW90ZSBuaWwpKQorICAgKHQgKG1h cmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRz LWRlbW90ZSAoKQorICAiRGVtb3RlIHRoZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSBhdCBwb2ludC4K K0ZvciBoZWFkaW5ncywgaW5jcmVhc2UgdGhlIGxldmVsIChlLmcuLCAjIHRvICMjKS4KK0ZvciBs aXN0IGl0ZW1zLCBpbmNyZWFzZSBuZXN0aW5nIChpbmRlbnQpLgorV2l0aCBgdHJhbnNpZW50LW1h cmstbW9kZScgb24gYW5kIG1hcmsgYWN0aXZlLCBkZW1vdGUgYWxsIGhlYWRpbmdzCitpbiB0aGUg cmVnaW9uLiIKKyAgKGludGVyYWN0aXZlKQorICAoY29uZAorICAgKChhbmQgdHJhbnNpZW50LW1h cmstbW9kZSBtYXJrLWFjdGl2ZSkKKyAgICAobWFya2Rvd24tdHMtLXByb21vdGUtb3ItZGVtb3Rl LXJlZ2lvbiAxKSkKKyAgICgobWFya2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAo bWFya2Rvd24tdHMtLWxpc3QtcHJvbW90ZS1vci1kZW1vdGUgdCkpCisgICAodCAobWFya2Rvd24t dHMtLXByb21vdGUtb3ItZGVtb3RlIDEpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tcHJvbW90 ZS1vci1kZW1vdGUgKGRlbHRhKQorICAiQ2hhbmdlIHRoZSBoZWFkaW5nIGF0IHBvaW50IGJ5IERF TFRBIGxldmVscy4KK05lZ2F0aXZlIERFTFRBIHByb21vdGVzIChmZXdlciAjKSwgcG9zaXRpdmUg ZGVtb3RlcyAobW9yZSAjKS4iCisgICh3aGVuLWxldCogKChoZWFkaW5nIChtYXJrZG93bi10cy0t aGVhZGluZy1hdC1wb2ludCkpCisgICAgICAgICAgICAgIChtYXJrZXIgKHRyZWVzaXQtbm9kZS1j aGlsZCBoZWFkaW5nIDApKQorICAgICAgICAgICAgICAobGV2ZWwgKGxlbmd0aCAodHJlZXNpdC1u b2RlLXRleHQgbWFya2VyIHQpKSkKKyAgICAgICAgICAgICAgKG5ldy1sZXZlbCAoKyBsZXZlbCBk ZWx0YSkpKQorICAgICh3aGVuIChhbmQgKD49IG5ldy1sZXZlbCAxKSAoPD0gbmV3LWxldmVsIG1h cmtkb3duLXRzLS1wYXJzZXItaGVhZGluZy1tYXgtbGV2ZWwpKQorICAgICAgKHNhdmUtZXhjdXJz aW9uCisgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBtYXJrZXIpKQorICAg ICAgICAoZGVsZXRlLXJlZ2lvbiAodHJlZXNpdC1ub2RlLXN0YXJ0IG1hcmtlcikKKyAgICAgICAg ICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1lbmQgbWFya2VyKSkKKyAgICAgICAgKGluc2Vy dCAobWFrZS1zdHJpbmcgbmV3LWxldmVsID8jKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0t cHJvbW90ZS1vci1kZW1vdGUtcmVnaW9uIChkZWx0YSkKKyAgIkNoYW5nZSBhbGwgaGVhZGluZ3Mg aW4gdGhlIGFjdGl2ZSByZWdpb24gYnkgREVMVEEgbGV2ZWxzLgorTmVnYXRpdmUgREVMVEEgcHJv bW90ZXMgKGZld2VyICMpLCBwb3NpdGl2ZSBkZW1vdGVzIChtb3JlICMpLiIKKyAgKGxldCAoKGJl ZyAocmVnaW9uLWJlZ2lubmluZykpCisgICAgICAgIChlbmQgKHJlZ2lvbi1lbmQpKSkKKyAgICAo c2F2ZS1leGN1cnNpb24KKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8IChw b2ludCkgZW5kKQorICAgICAgICAod2hlbiAobWFya2Rvd24tdHMtLWhlYWRpbmctYXQtcG9pbnQp CisgICAgICAgICAgKG1hcmtkb3duLXRzLS1wcm9tb3RlLW9yLWRlbW90ZSBkZWx0YSkpCisgICAg ICAgIChmb3J3YXJkLWxpbmUgMSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1tb3ZlLXN1YnRy ZWUtdXAgKCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gdXAgcGFz dCB0aGUgcHJldmlvdXMgc2libGluZy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKGlmIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50KQorICAgICAgKG1hcmtkb3duLXRzLS1saXN0LW1vdmUg dCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIHQpKSkKIAotKGRl ZnVuIG1hcmtkb3duLXRzLS1oYXJ2ZXN0LXRyZWVzaXQtY29uZmlncyAobW9kZSkKLSAgIkhhcnZl c3QgdHJlZS1zaXR0ZXIgY29uZmlncyBmcm9tIE1PREUuCi1SZXR1cm4gYSBwbGlzdCB3aXRoIHRo ZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWU6CisoZGVmdW4gbWFya2Rvd24tdHMtbW92ZS1zdWJ0 cmVlLWRvd24gKCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQgc2VjdGlvbiBvciBsaXN0IGl0ZW0gZG93 biBwYXN0IHRoZSBuZXh0IHNpYmxpbmcuIgorICAoaW50ZXJhY3RpdmUpCisgIChpZiAobWFya2Rv d24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkKKyAgICAgIChtYXJrZG93bi10cy0tbGlzdC1tb3Zl IG5pbCkKKyAgICAobWFya2Rvd24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duIG5pbCkpKQor CisoZGVmdW4gbWFya2Rvd24tdHMtLXNlY3Rpb24tZm9sZGVkLXAgKHNlY3Rpb24pCisgICJSZXR1 cm4gbm9uLW5pbCBpZiBTRUNUSU9OJ3MgaGVhZGluZyBpcyBmb2xkZWQuCitDaGVja3Mgd2hldGhl ciB0aGUgZW5kIG9mIHRoZSBoZWFkaW5nIGxpbmUgaGFzIGFuIG91dGxpbmUKK2ludmlzaWJsZSBv dmVybGF5LiIKKyAgKGxldCAoKGhlYWRpbmcgKHRyZWVzaXQtbm9kZS1jaGlsZCBzZWN0aW9uIDAp KSkKKyAgICAod2hlbiAoYW5kIGhlYWRpbmcKKyAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgaGVhZGluZykgImF0eF9oZWFkaW5nIikpCisgICAgICAoc2F2ZS1leGN1cnNp b24KKyAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGhlYWRpbmcpKQorICAg ICAgICAob3V0bGluZS1pbnZpc2libGUtcCAocG9zLWVvbCkpKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLW1vdmUtc3VidHJlZS11cC1vci1kb3duICh1cCkKKyAgIk1vdmUgdGhlIGN1cnJlbnQg c2VjdGlvbiBzdWJ0cmVlLgorSWYgVVAgaXMgbm9uLW5pbCwgbW92ZSBwYXN0IHRoZSBwcmV2aW91 cyBzaWJsaW5nOyBvdGhlcndpc2UgbW92ZSBkb3duLgorUHJlc2VydmVzIHRoZSBmb2xkaW5nIHN0 YXRlIG9mIGJvdGggc2VjdGlvbnMuIgorICAod2hlbi1sZXQqICgoc2VjdGlvbiAobWFya2Rvd24t dHMtLXNlY3Rpb24tYXQtcG9pbnQpKQorICAgICAgICAgICAgICAoc2libGluZyAoaWYgdXAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5nIHNlY3Rp b24pCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcg c2VjdGlvbikpKSkKKyAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIHNpYmxpbmcp ICJzZWN0aW9uIikKKyAgICAgIChsZXQqICgoZmlyc3QgKGlmIHVwIHNpYmxpbmcgc2VjdGlvbikp CisgICAgICAgICAgICAgKHNlY29uZCAoaWYgdXAgc2VjdGlvbiBzaWJsaW5nKSkKKyAgICAgICAg ICAgICAoZmlyc3QtZm9sZGVkIChtYXJrZG93bi10cy0tc2VjdGlvbi1mb2xkZWQtcCBmaXJzdCkp CisgICAgICAgICAgICAgKHNlY29uZC1mb2xkZWQgKG1hcmtkb3duLXRzLS1zZWN0aW9uLWZvbGRl ZC1wIHNlY29uZCkpCisgICAgICAgICAgICAgKGZpcnN0LXN0YXJ0ICh0cmVlc2l0LW5vZGUtc3Rh cnQgZmlyc3QpKQorICAgICAgICAgICAgIChzZWNvbmQtc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFy dCBzZWNvbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtZW5kICh0cmVlc2l0LW5vZGUtZW5kIHNl Y29uZCkpCisgICAgICAgICAgICAgOzsgRXh0cmFjdCBzZXBhcmF0b3IgYmV0d2VlbiBpdGVtcyBh bmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICAgICAgICAgICAoZmlyc3QtcmF3IChidWZmZXIt c3Vic3RyaW5nIGZpcnN0LXN0YXJ0IHNlY29uZC1zdGFydCkpCisgICAgICAgICAgICAgKGZpcnN0 LXRleHQgKHN0cmluZy10cmltLXJpZ2h0IGZpcnN0LXJhdykpCisgICAgICAgICAgICAgKHNlcGFy YXRvciAoc3Vic3RyaW5nIGZpcnN0LXJhdyAobGVuZ3RoIGZpcnN0LXRleHQpKSkKKyAgICAgICAg ICAgICAoc2Vjb25kLXJhdyAoYnVmZmVyLXN1YnN0cmluZyBzZWNvbmQtc3RhcnQgc2Vjb25kLWVu ZCkpCisgICAgICAgICAgICAgKHNlY29uZC10ZXh0IChzdHJpbmctdHJpbS1yaWdodCBzZWNvbmQt cmF3KSkKKyAgICAgICAgICAgICAodHJhaWxpbmcgKHN1YnN0cmluZyBzZWNvbmQtcmF3IChsZW5n dGggc2Vjb25kLXRleHQpKSkKKyAgICAgICAgICAgICAoY29sIChjdXJyZW50LWNvbHVtbikpCisg ICAgICAgICAgICAgKGxpbmUtb2Zmc2V0ICgtIChsaW5lLW51bWJlci1hdC1wb3MgKHBvaW50KSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNp dC1ub2RlLXN0YXJ0IHNlY3Rpb24pKSkpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBmaXJzdC1z dGFydCBzZWNvbmQtZW5kKQorICAgICAgICAoZ290by1jaGFyIGZpcnN0LXN0YXJ0KQorICAgICAg ICAoaW5zZXJ0IHNlY29uZC10ZXh0IHNlcGFyYXRvciBmaXJzdC10ZXh0IHRyYWlsaW5nKQorICAg ICAgICA7OyBSZXN0b3JlIGZvbGRpbmcgc3RhdGUKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisg ICAgICAgICAgKGdvdG8tY2hhciBmaXJzdC1zdGFydCkKKyAgICAgICAgICAod2hlbiAob3V0bGlu ZS1vbi1oZWFkaW5nLXApCisgICAgICAgICAgICAoaWYgc2Vjb25kLWZvbGRlZAorICAgICAgICAg ICAgICAgIChvdXRsaW5lLWhpZGUtc3VidHJlZSkKKyAgICAgICAgICAgICAgKG91dGxpbmUtc2hv dy1zdWJ0cmVlKSkpCisgICAgICAgICAgKG91dGxpbmUtbmV4dC1oZWFkaW5nKQorICAgICAgICAg ICh3aGVuIChvdXRsaW5lLW9uLWhlYWRpbmctcCkKKyAgICAgICAgICAgIChpZiBmaXJzdC1mb2xk ZWQKKyAgICAgICAgICAgICAgICAob3V0bGluZS1oaWRlLXN1YnRyZWUpCisgICAgICAgICAgICAg IChvdXRsaW5lLXNob3ctc3VidHJlZSkpKSkKKyAgICAgICAgKGdvdG8tY2hhciAoaWYgdXAKKyAg ICAgICAgICAgICAgICAgICAgICAgZmlyc3Qtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICgr IGZpcnN0LXN0YXJ0IChsZW5ndGggc2Vjb25kLXRleHQpCisgICAgICAgICAgICAgICAgICAgICAg ICAobGVuZ3RoIHNlcGFyYXRvcikpKSkKKyAgICAgICAgKGZvcndhcmQtbGluZSBsaW5lLW9mZnNl dCkKKyAgICAgICAgKG1vdmUtdG8tY29sdW1uIGNvbCkpKSkpCisKKzs7OyBMaXN0IG1hbmlwdWxh dGlvbjoKKworKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1jaGVja2JveCAoKQorICAiVG9nZ2xl IHRoZSB0YXNrIGxpc3QgY2hlY2tib3ggb24gdGhlIGN1cnJlbnQgbGluZS4KK1N3aXRjaGVzIGJl dHdlZW4gYFsgXScgYW5kIGBbeF0nLiIKKyAgKGludGVyYWN0aXZlKQorICAod2hlbi1sZXQqICgo cG9zIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlvbikgKHBvaW50KSkpCisgICAg ICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgcG9zICdtYXJrZG93bikpCisgICAgICAg ICAgICAgIChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAg bm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJl ZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQorICAgICh3aGVuLWxldCogKChtYXJr ZXIgKHNlcS1maW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoY2hpbGQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBjaGls ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygidGFza19saXN0X21hcmtl cl9jaGVja2VkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXNrX2xp c3RfbWFya2VyX3VuY2hlY2tlZCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNp dC1ub2RlLWNoaWxkcmVuIGl0ZW0pKSkpCisgICAgICAobGV0ICgoYmVnICh0cmVlc2l0LW5vZGUt c3RhcnQgbWFya2VyKSkKKyAgICAgICAgICAgIChlbmQgKHRyZWVzaXQtbm9kZS1lbmQgbWFya2Vy KSkKKyAgICAgICAgICAgIChjaGVja2VkIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbWFya2Vy KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXNrX2xpc3RfbWFya2VyX2NoZWNrZWQi KSkpCisgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgIChnb3RvLWNoYXIgYmVnKQor ICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgKGluc2VydCAoaWYg Y2hlY2tlZCAiWyBdIiAiW3hdIikpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0 ZW0tYXQtcG9pbnQgKCkKKyAgIlJldHVybiB0aGUgaW5uZXJtb3N0IGxpc3RfaXRlbSBub2RlIGNv bnRhaW5pbmcgcG9pbnQsIG9yIG5pbC4KK1VzZXMgdGhlIHBvc2l0aW9uIGFmdGVyIGBiYWNrLXRv LWluZGVudGF0aW9uJyBzbyB0aGF0IHBvaW50IGluCithIGxpbmUncyBsZWFkaW5nIHdoaXRlc3Bh Y2UgcmVzb2x2ZXMgdG8gdGhlIGl0ZW0gb24gdGhhdCBsaW5lLAorbm90IHRvIGEgcHJlY2VkaW5n IGl0ZW0gd2hvc2Ugbm9kZSBzcGFucyB0aGUgd2hpdGVzcGFjZS4KK0luc2lkZSBibG9jayBxdW90 ZXMsIGFsc28gdHJ5IGZyb20gdGhlIGNvbnRlbnQgcG9zaXRpb24gcGFzdAordGhlIGA+JyBtYXJr ZXJzLiIKKyAgKHdoZW4tbGV0KiAoKHBvcyAoc2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50 YXRpb24pIChwb2ludCkpKQorICAgICAgICAgICAgICAobm9kZSAodHJlZXNpdC1ub2RlLWF0IHBv cyAnbWFya2Rvd24pKQorICAgICAgICAgICAgICAoYm9sIChsaW5lLWJlZ2lubmluZy1wb3NpdGlv bikpCisgICAgICAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCisgICAgKG9yIChs ZXQgKChpdGVtICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgbm9k ZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNp dC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQorICAgICAgICAgIDs7IFZlcmlmeSB0aGUg Y3VycmVudCBsaW5lIGlzIHdpdGhpbiB0aGUgaXRlbSdzIHJhbmdlLgorICAgICAgICAgIDs7IGB0 cmVlc2l0LW5vZGUtYXQnIGNhbiByZXR1cm4gYSBub2RlIGluc2lkZSBhIGxpc3RfaXRlbQorICAg ICAgICAgIDs7IGV2ZW4gd2hlbiBwb2ludCBpcyBvbiBhIHByZWNlZGluZyBsaW5lLgorICAgICAg ICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAgICAgICAgICAgKDw9ICh0cmVlc2l0LW5v ZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAgICAgICAgICAgICAgICAgKD49ICh0cmVlc2l0LW5v ZGUtZW5kIGl0ZW0pIGJvbCkpCisgICAgICAgICAgICBpdGVtKSkKKyAgICAgICAgOzsgV2hlbiBi YWNrLXRvLWluZGVudGF0aW9uIGxhbmRzIG9uIGJsb2NrIHF1b3RlIG1hcmtlcnMsCisgICAgICAg IDs7IHNraXAgcGFzdCB0aGVtIGFuZCB0cnkgZnJvbSB0aGUgY29udGVudCBwb3NpdGlvbi4KKyAg ICAgICAgKGxldCAoKGNvbnRlbnQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIj4gXHQiKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocG9pbnQpKSkpCisgICAgICAgICAgKHdoZW4gKD4gY29udGVudC1wb3MgcG9zKQor ICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGNub2RlICh0cmVlc2l0LW5vZGUtYXQgY29udGVudC1w b3MgJ21hcmtkb3duKSkpCisgICAgICAgICAgICAgIChsZXQgKChpdGVtICh0cmVlc2l0LXBhcmVu dC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY25vZGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgKG4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl cXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgbikgImxpc3RfaXRlbSIpKSkpKQorICAgICAgICAgICAg ICAgICh3aGVuIChhbmQgaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9ICh0cmVl c2l0LW5vZGUtc3RhcnQgaXRlbSkgZW9sKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKD49 ICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pIGJvbCkpCisgICAgICAgICAgICAgICAgICBpdGVtKSkp KSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW1hcmtlci13aWR0aCAoaXRlbSkKKyAg IlJldHVybiB0aGUgd2lkdGggb2YgSVRFTSdzIGxpc3QgbWFya2VyIGluY2x1ZGluZyB0cmFpbGlu ZyBzcGFjZS4iCisgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9kZS1jaGlsZCBpdGVtIDApKSkK KyAgICAoLSAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFy a2VyKSkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1yZWdpb24gKGl0ZW0pCisg ICJSZXR1cm4gdGhlIChCRUcgLiBFTkQpIHJlZ2lvbiBmb3IgSVRFTSwgY2xhbXBlZCB0byBmdWxs IGxpbmVzLgorQkVHIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGNvbnRhaW5p bmcgdGhlIGl0ZW0uCitFTkQgaXMgY2xhbXBlZCBzbyBpdCBkb2VzIG5vdCBleHRlbmQgaW50byB0 aGUgbmV4dCBsaW5lJ3MKK2luZGVudGF0aW9uLCB3aGljaCB0cmVlLXNpdHRlciBtYXkgaW5jbHVk ZSBpbiB0aGUgbm9kZS4iCisgIChsZXQgKChiZWcgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAg ICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkpCisgICAgICAgICAgICAg ICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAgICAgKGVuZCAoc2F2ZS1leGN1cnNp b24KKyAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1lbmQgaXRlbSkpCisg ICAgICAgICAgICAgICAoaWYgKGJvbHApIChwb2ludCkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KSkpKSkKKyAgICAoY29ucyBiZWcgZW5kKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlzdC1v cmRlcmVkLWl0ZW0tcCAoaXRlbSkKKyAgIlJldHVybiBub24tbmlsIGlmIElURU0gaXMgYW4gb3Jk ZXJlZCAobnVtYmVyZWQpIGxpc3QgaXRlbS4iCisgIChsZXQgKChtYXJrZXIgKHRyZWVzaXQtbm9k ZS1jaGlsZCBpdGVtIDApKSkKKyAgICAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIG1hcmtlcikg Imxpc3RfbWFya2VyX2RvdCIpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LXByb21vdGUt b3ItZGVtb3RlIChkZW1vdGUpCisgICJDaGFuZ2UgbmVzdGluZyBvZiB0aGUgbGlzdCBpdGVtIGF0 IHBvaW50LgorSWYgREVNT1RFIGlzIG5vbi1uaWwsIGRlbW90ZSAoaW5kZW50KTsgb3RoZXJ3aXNl IHByb21vdGUgKGRlZGVudCkuCitPcmRlcmVkIChudW1iZXJlZCkgbGlzdCBpdGVtcyBhcmUgc2tp cHBlZCBiZWNhdXNlIHRoZSBncmFtbWFyIGRvZXMKK25vdCBzdXBwb3J0IG5lc3RpbmcgdGhlbSBi eSBpbmRlbnRhdGlvbi4iCisgICh3aGVuLWxldCogKChpdGVtIChtYXJrZG93bi10cy0tbGlzdC1p dGVtLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgKHJlZ2lvbiAobWFya2Rvd24tdHMtLWxpc3Qt aXRlbS1yZWdpb24gaXRlbSkpCisgICAgICAgICAgICAgIChiZWcgKGNhciByZWdpb24pKQorICAg ICAgICAgICAgICAoZW5kIChjZHIgcmVnaW9uKSkpCisgICAgKHdoZW4gKG1hcmtkb3duLXRzLS1s aXN0LW9yZGVyZWQtaXRlbS1wIGl0ZW0pCisgICAgICAodXNlci1lcnJvciAiT3JkZXJlZCBsaXN0 IGl0ZW1zIGNhbm5vdCBiZSBuZXN0ZWQgKGdyYW1tYXIgbGltaXRhdGlvbikiKSkKKyAgICAoaWYg ZGVtb3RlCisgICAgICAgIDs7IERlbW90ZTogaW5kZW50IGJ5IG1hcmtlciB3aWR0aCwgb25seSBp ZiB0aGVyZSBpcyBhIHByZXZpb3VzCisgICAgICAgIDs7IHNpYmxpbmcgdG8gbmVzdCB1bmRlciAo bGlrZSBvcmctbW9kZSkuCisgICAgICAgICh3aGVuICh0cmVlc2l0LW5vZGUtcHJldi1zaWJsaW5n IGl0ZW0pCisgICAgICAgICAgKGluZGVudC1yaWdpZGx5IGJlZyBlbmQgKG1hcmtkb3duLXRzLS1s aXN0LW1hcmtlci13aWR0aCBpdGVtKSkpCisgICAgICA7OyBQcm9tb3RlOiBkZWRlbnQgdG8gZ3Jh bmRwYXJlbnQgbGV2ZWwuCisgICAgICAobGV0KiAoKHBhcmVudC1saXN0ICh0cmVlc2l0LW5vZGUt cGFyZW50IGl0ZW0pKQorICAgICAgICAgICAgIChncmFuZHBhcmVudCAoYW5kIHBhcmVudC1saXN0 ICh0cmVlc2l0LW5vZGUtcGFyZW50IHBhcmVudC1saXN0KSkpCisgICAgICAgICAgICAgKGl0ZW0t Y29sIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg YmVnKSAoY3VycmVudC1pbmRlbnRhdGlvbikpKSkKKyAgICAgICAgKHdoZW4gKGFuZCBncmFuZHBh cmVudAorICAgICAgICAgICAgICAgICAgIChlcXVhbCAodHJlZXNpdC1ub2RlLXR5cGUgZ3JhbmRw YXJlbnQpICJsaXN0X2l0ZW0iKQorICAgICAgICAgICAgICAgICAgICg+IGl0ZW0tY29sIDApKQor ICAgICAgICAgIChsZXQgKChncC1jb2wgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBncmFuZHBhcmVudCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWluZGVudGF0aW9uKSkpKQorICAgICAg ICAgICAgKGluZGVudC1yaWdpZGx5IGJlZyBlbmQgKC0gZ3AtY29sIGl0ZW0tY29sKSkpKSkpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LW5vZGUtYm9sIChub2RlKQorICAiUmV0dXJuIHRo ZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgY29udGFpbmluZyBOT0RFJ3Mgc3RhcnQuIgorICAoc2F2 ZS1leGN1cnNpb24KKyAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbm9kZSkpCisg ICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tbGlz dC1tb3ZlICh1cCkKKyAgIk1vdmUgdGhlIGxpc3QgaXRlbSBhdCBwb2ludC4KK0lmIFVQIGlzIG5v bi1uaWwsIG1vdmUgcGFzdCB0aGUgcHJldmlvdXMgc2libGluZzsgb3RoZXJ3aXNlIG1vdmUgZG93 bi4iCisgICh3aGVuLWxldCogKChpdGVtIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBvaW50 KSkKKyAgICAgICAgICAgICAgKHNpYmxpbmcgKGlmIHVwCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAodHJlZXNpdC1ub2RlLXByZXYtc2libGluZyBpdGVtKQorICAgICAgICAgICAgICAgICAg ICAgICAgICh0cmVlc2l0LW5vZGUtbmV4dC1zaWJsaW5nIGl0ZW0pKSkpCisgICAgKHdoZW4gKGVx dWFsICh0cmVlc2l0LW5vZGUtdHlwZSBzaWJsaW5nKSAibGlzdF9pdGVtIikKKyAgICAgIChsZXQq ICgoZmlyc3QgKGlmIHVwIHNpYmxpbmcgaXRlbSkpCisgICAgICAgICAgICAgKHNlY29uZCAoaWYg dXAgaXRlbSBzaWJsaW5nKSkKKyAgICAgICAgICAgICAoZmlyc3Qtc3RhcnQgKG1hcmtkb3duLXRz LS1saXN0LW5vZGUtYm9sIGZpcnN0KSkKKyAgICAgICAgICAgICAoc2Vjb25kLXN0YXJ0IChtYXJr ZG93bi10cy0tbGlzdC1ub2RlLWJvbCBzZWNvbmQpKQorICAgICAgICAgICAgIChzZWNvbmQtZW5k ICh0cmVlc2l0LW5vZGUtZW5kIHNlY29uZCkpCisgICAgICAgICAgICAgOzsgRXh0cmFjdCBzZXBh cmF0b3IgYmV0d2VlbiBpdGVtcyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICAgICAgICAg ICAoZmlyc3QtcmF3IChidWZmZXItc3Vic3RyaW5nIGZpcnN0LXN0YXJ0IHNlY29uZC1zdGFydCkp CisgICAgICAgICAgICAgKGZpcnN0LXRleHQgKHN0cmluZy10cmltLXJpZ2h0IGZpcnN0LXJhdykp CisgICAgICAgICAgICAgKHNlcGFyYXRvciAoc3Vic3RyaW5nIGZpcnN0LXJhdyAobGVuZ3RoIGZp cnN0LXRleHQpKSkKKyAgICAgICAgICAgICAoc2Vjb25kLXJhdyAoYnVmZmVyLXN1YnN0cmluZyBz ZWNvbmQtc3RhcnQgc2Vjb25kLWVuZCkpCisgICAgICAgICAgICAgKHNlY29uZC10ZXh0IChzdHJp bmctdHJpbS1yaWdodCBzZWNvbmQtcmF3KSkKKyAgICAgICAgICAgICAodHJhaWxpbmcgKHN1YnN0 cmluZyBzZWNvbmQtcmF3IChsZW5ndGggc2Vjb25kLXRleHQpKSkKKyAgICAgICAgICAgICAoY29s IChjdXJyZW50LWNvbHVtbikpCisgICAgICAgICAgICAgKGxpbmUtb2Zmc2V0ICgtIChsaW5lLW51 bWJlci1hdC1wb3MgKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUt bnVtYmVyLWF0LXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1zdGFydCBpdGVtKSkpKSkKKyAgICAgICAgKGRlbGV0ZS1yZWdpb24gZmlyc3Qtc3RhcnQgc2Vj b25kLWVuZCkKKyAgICAgICAgKGdvdG8tY2hhciBmaXJzdC1zdGFydCkKKyAgICAgICAgKGluc2Vy dCBzZWNvbmQtdGV4dCBzZXBhcmF0b3IgZmlyc3QtdGV4dCB0cmFpbGluZykKKyAgICAgICAgKGdv dG8tY2hhciAoaWYgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Qtc3RhcnQKKyAgICAg ICAgICAgICAgICAgICAgICgrIGZpcnN0LXN0YXJ0IChsZW5ndGggc2Vjb25kLXRleHQpCisgICAg ICAgICAgICAgICAgICAgICAgICAobGVuZ3RoIHNlcGFyYXRvcikpKSkKKyAgICAgICAgKGZvcndh cmQtbGluZSBsaW5lLW9mZnNldCkKKyAgICAgICAgKG1vdmUtdG8tY29sdW1uIGNvbCkpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy1yZW51bWJlci1saXN0ICgmb3B0aW9uYWwgc3RhcnQpCisgICJS ZW51bWJlciB0aGUgb3JkZXJlZCBsaXN0IGF0IHBvaW50LgorTnVtYmVycyBhcmUgYXNzaWduZWQg c2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGl0ZW0ncworbnVtYmVyLiAgV2l0 aCBhIHByZWZpeCBhcmd1bWVudCBTVEFSVCwgc3RhcnQgbnVtYmVyaW5nIGZyb20gdGhhdAordmFs dWUgaW5zdGVhZC4gIERvZXMgbm90aGluZyBmb3IgdW5vcmRlcmVkIGxpc3RzLiIKKyAgKGludGVy YWN0aXZlICJQIikKKyAgKHdoZW4tbGV0KiAoKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0t YXQtcG9pbnQpKQorICAgICAgICAgICAgICAobGlzdC1ub2RlICh0cmVlc2l0LW5vZGUtcGFyZW50 IGl0ZW0pKSkKKyAgICAod2hlbiAoZXF1YWwgKHRyZWVzaXQtbm9kZS10eXBlIGxpc3Qtbm9kZSkg Imxpc3QiKQorICAgICAgKGxldCogKChjaGlsZHJlbiAodHJlZXNpdC1ub2RlLWNoaWxkcmVuIGxp c3Qtbm9kZSkpCisgICAgICAgICAgICAgKGl0ZW1zIChzZXEtZmlsdGVyIChsYW1iZGEgKG4pCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsICh0cmVlc2l0LW5vZGUtdHlw ZSBuKSAibGlzdF9pdGVtIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxk cmVuKSkKKyAgICAgICAgICAgICAoZmlyc3QtbWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgKGNh ciBpdGVtcykgMCkpCisgICAgICAgICAgICAgKG1hcmtlci10eXBlICh0cmVlc2l0LW5vZGUtdHlw ZSBmaXJzdC1tYXJrZXIpKSkKKyAgICAgICAgKHdoZW4gKG1lbWJlciBtYXJrZXItdHlwZSAnKCJs aXN0X21hcmtlcl9kb3QiICJsaXN0X21hcmtlcl9wYXJlbnRoZXNpcyIpKQorICAgICAgICAgIChs ZXQqICgoYmFzZSAoaWYgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVmaXgt bnVtZXJpYy12YWx1ZSBzdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRv LW51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLXRleHQgZmly c3QtbWFya2VyIHQpKSkpCisgICAgICAgICAgICAgICAgIChjb3VudCAobGVuZ3RoIGl0ZW1zKSkK KyAgICAgICAgICAgICAgICAgOzsgU3RhcnQgZnJvbSB0aGUgbGFzdCBudW1iZXIgYW5kIHdvcmsg YmFja3dhcmRzIHNvCisgICAgICAgICAgICAgICAgIDs7IHRoYXQgZWFybGllciBidWZmZXIgcG9z aXRpb25zIHJlbWFpbiB2YWxpZC4KKyAgICAgICAgICAgICAgICAgKG51bSAoKyBiYXNlIGNvdW50 IC0xKSkpCisgICAgICAgICAgICAoZG9saXN0IChpdCAocmV2ZXJzZSBpdGVtcykpCisgICAgICAg ICAgICAgIChsZXQqICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hpbGQgaXQgMCkpCisgICAgICAg ICAgICAgICAgICAgICAobWFya2VyLWVuZCAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpKQorICAg ICAgICAgICAgICAgICAgICAgKGJvbCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgbWFya2VyKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKKyAgICAg ICAgICAgICAgICAgICAgIDs7IEZ1bGwgdGV4dCBmcm9tIGJvbCB0byBlbmQgb2YgbWFya2VyIGlu Y2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICA7OyBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlLCB0 aGUgbnVtYmVyLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICA7OyBzZXBhcmF0b3IgKGUu Zy4sICIuICIgb3IgIi5cdCIpLgorICAgICAgICAgICAgICAgICAgICAgKGZ1bGwtdGV4dCAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib2wgbWFya2VyLWVuZCkpCisgICAgICAgICAgICAgICAgICAgICAoaW5kZW50LXN0cgor ICAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAiXFxgXFwoW1s6Ymxhbms6XV0qXFwpWzAtOV0iIGZ1bGwtdGV4dCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAxIGZ1bGwtdGV4dCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICIiKSkKKyAgICAgICAgICAgICAgICAgICAgIChzdWZmaXgtc3RyCisg ICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICJcXGBbWzpibGFuazpdXSpbMC05XStcXCguKlxcKVxcJyIgZnVsbC10ZXh0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgZnVsbC10ZXh0KQorICAg ICAgICAgICAgICAgICAgICAgICAgIi4gIikpCisgICAgICAgICAgICAgICAgICAgICAobmV3LXRl eHQgKGNvbmNhdCBpbmRlbnQtc3RyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobnVtYmVyLXRvLXN0cmluZyBudW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdWZmaXgtc3RyKSkpCisgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9u CisgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBib2wgbWFya2VyLWVuZCkKKyAgICAg ICAgICAgICAgICAgIChnb3RvLWNoYXIgYm9sKQorICAgICAgICAgICAgICAgICAgKGluc2VydCBu ZXctdGV4dCkpKQorICAgICAgICAgICAgICAoY2wtZGVjZiBudW0pKQorICAgICAgICAgICAgKG1l c3NhZ2UgIlJlbnVtYmVyZWQgJWQgaXRlbXMiIGNvdW50KSkpKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyIChpdGVtKQorICAiUmV0dXJuIHRoZSBtYXJrZXIg c3RyaW5nIGZvciBhIG5ldyBpdGVtIGZvbGxvd2luZyBJVEVNLgorRm9yIHVub3JkZXJlZCBpdGVt cywgcmV1c2UgdGhlIHNhbWUgbWFya2VyIGNoYXJhY3Rlci4KK0ZvciBvcmRlcmVkIGl0ZW1zLCBp bmNyZW1lbnQgdGhlIG51bWJlci4iCisgIChsZXQqICgobWFya2VyICh0cmVlc2l0LW5vZGUtY2hp bGQgaXRlbSAwKSkKKyAgICAgICAgICh0eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBtYXJrZXIpKQor ICAgICAgICAgKGluZGVudCAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAoZ290 by1jaGFyICh0cmVlc2l0LW5vZGUtc3RhcnQgaXRlbSkpCisgICAgICAgICAgICAgICAgICAgKGN1 cnJlbnQtaW5kZW50YXRpb24pKSkKKyAgICAgICAgIChwcmVmaXggKG1ha2Utc3RyaW5nIGluZGVu dCA/XHMpKSkKKyAgICAocGNhc2UgdHlwZQorICAgICAgKCJsaXN0X21hcmtlcl9taW51cyIgKGNv bmNhdCBwcmVmaXggIi0gIikpCisgICAgICAoImxpc3RfbWFya2VyX3BsdXMiICAoY29uY2F0IHBy ZWZpeCAiKyAiKSkKKyAgICAgICgibGlzdF9tYXJrZXJfc3RhciIgIChjb25jYXQgcHJlZml4ICIq ICIpKQorICAgICAgKCJsaXN0X21hcmtlcl9kb3QiCisgICAgICAgKGxldCAoKG51bSAoc3RyaW5n LXRvLW51bWJlciAodHJlZXNpdC1ub2RlLXRleHQgbWFya2VyIHQpKSkpCisgICAgICAgICAoY29u Y2F0IHByZWZpeCAobnVtYmVyLXRvLXN0cmluZyAoMSsgbnVtKSkgIi4gIikpKQorICAgICAgKCJs aXN0X21hcmtlcl9wYXJlbnRoZXNpcyIKKyAgICAgICAobGV0ICgobnVtIChzdHJpbmctdG8tbnVt YmVyICh0cmVlc2l0LW5vZGUtdGV4dCBtYXJrZXIgdCkpKSkKKyAgICAgICAgIChjb25jYXQgcHJl Zml4IChudW1iZXItdG8tc3RyaW5nICgxKyBudW0pKSAiKSAiKSkpCisgICAgICAoXyAoY29uY2F0 IHByZWZpeCAiLSAiKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1uZXctbWFya2VyLWZvci1s aW5lIChpdGVtKQorICAiUmV0dXJuIHRoZSBtYXJrZXIgc3RyaW5nIGZvciBhIG5ldyBpdGVtIGZv bGxvd2luZyBJVEVNLgorV2hlbiB0aGUgY3VycmVudCBsaW5lIGhhcyBhIGxpc3QgbWFya2VyIHBh dHRlcm4gYXQgYSBkaWZmZXJlbnQKK2luZGVudGF0aW9uIHRoYW4gSVRFTSAoZS5nLiwgYSBuZXN0 ZWQgbWFya2VyIHRoYXQgdGhlIGdyYW1tYXIgZGlkCitub3QgcmVjb2duaXplIGFzIGEgbGlzdF9p dGVtKSwgdXNlIHRoZSBjdXJyZW50IGxpbmUncyBtYXJrZXIuCitPdGhlcndpc2UsIGZhbGwgYmFj ayB0byBgbWFya2Rvd24tdHMtLWxpc3QtaXRlbS1uZXctbWFya2VyJy4iCisgIChsZXQgKChtYXJr ZXItbm9kZSAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQorICAgIChpZiAoPSAobGluZS1u dW1iZXItYXQtcG9zKQorICAgICAgICAgICAgKGxpbmUtbnVtYmVyLWF0LXBvcyAodHJlZXNpdC1u b2RlLXN0YXJ0IG1hcmtlci1ub2RlKSkpCisgICAgICAgIDs7IEl0ZW0ncyBtYXJrZXIgaXMgb24g dGhlIGN1cnJlbnQgbGluZTogdXNlIGl0IG5vcm1hbGx5LgorICAgICAgICAobWFya2Rvd24tdHMt LWxpc3QtaXRlbS1uZXctbWFya2VyIGl0ZW0pCisgICAgICA7OyBJdGVtJ3MgbWFya2VyIGlzIG9u IGEgZGlmZmVyZW50IGxpbmUuICBUaGUgcGFyc2VyIG1heSBoYXZlCisgICAgICA7OyBmYWlsZWQg dG8gcmVjb2duaXplIGEgbmVzdGVkIG1hcmtlciAoZS5nLiwgYSBsb25lIGAgIC0gJworICAgICAg OzsgcGFyc2VkIGFzIGEgc2V0ZXh0IGhlYWRpbmcpLiAgUmVhZCB0aGUgY3VycmVudCBsaW5lLgor ICAgICAgKGxldCAoKGxpbmUgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAg ICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxpbmUtZW5kLXBvc2l0aW9u KSkpKQorICAgICAgICAoaWYgKHN0cmluZy1tYXRjaAorICAgICAgICAgICAgICJcXGBcXChbWzpi bGFuazpdXSpcXClcXChbLSorXSBcXHxcXChbMC05XStcXClcXChbLildIFxcKVxcKSIKKyAgICAg ICAgICAgICBsaW5lKQorICAgICAgICAgICAgKGxldCAoKGluZGVudCAobWF0Y2gtc3RyaW5nIDEg bGluZSkpCisgICAgICAgICAgICAgICAgICAobnVtIChtYXRjaC1zdHJpbmcgMyBsaW5lKSkKKyAg ICAgICAgICAgICAgICAgIChzdWZmaXggKG1hdGNoLXN0cmluZyA0IGxpbmUpKQorICAgICAgICAg ICAgICAgICAgKHVub3JkZXJlZCAobWF0Y2gtc3RyaW5nIDIgbGluZSkpKQorICAgICAgICAgICAg ICAoaWYgbnVtCisgICAgICAgICAgICAgICAgICAoY29uY2F0IGluZGVudCAobnVtYmVyLXRvLXN0 cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKyAoc3RyaW5nLXRvLW51 bWJlciBudW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4KQorICAgICAgICAg ICAgICAgIChjb25jYXQgaW5kZW50IHVub3JkZXJlZCkpKQorICAgICAgICAgIDs7IE5vIG1hcmtl ciBwYXR0ZXJuIG9uIGN1cnJlbnQgbGluZTogdXNlIGl0ZW0ncyBtYXJrZXIuCisgICAgICAgICAg KG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tbmV3LW1hcmtlciBpdGVtKSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy0tbGluZS1ibG9jay1xdW90ZS1kZXB0aCAoJm9wdGlvbmFsIHBvcykKKyAgIkNv dW50IHRoZSBudW1iZXIgb2YgYD4nIGJsb2NrIHF1b3RlIG1hcmtlcnMgb24gdGhlIGxpbmUgYXQg UE9TLiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKHdoZW4gcG9zIChnb3RvLWNoYXIgcG9zKSkK KyAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgKGxldCAoKGNvdW50IDApKQorICAgICAgKHdo aWxlIChhbmQgKG5vdCAoZW9scCkpCisgICAgICAgICAgICAgICAgICAobWVtcSAoY2hhci1hZnRl cikgJyg/PiA/XHMgP1x0KSkpCisgICAgICAgICh3aGVuIChlcSAoY2hhci1hZnRlcikgPz4pCisg ICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkpCisgICAgICAgIChmb3J3YXJkLWNoYXIg MSkpCisgICAgICBjb3VudCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtbmV3bGluZSAoKQorICAi SW5zZXJ0IGEgbmV3bGluZSwgY29udGludWluZyB0aGUgY3VycmVudCBjb250ZXh0LgorSW5zaWRl IGEgbGlzdCBpdGVtLCB0aGUgbmV3IGxpbmUgaXMgaW5kZW50ZWQgdG8gdGhlIGl0ZW0ncyB0ZXh0 Citjb2x1bW4gc28gdGhlIHBhcmFncmFwaCBjb250aW51ZXMuICBBIHNlY29uZCBSRVQgb24gYSBi bGFuaworY29udGludWF0aW9uIGxpbmUgcmVtb3ZlcyB0aGUgaW5kZW50YXRpb24sIGRyb3BwaW5n IHBvaW50IHRvCitjb2x1bW4gMCBzbyB0aGUgdHJlZS1zaXR0ZXIgZ3JhbW1hciBlbmRzIHRoZSBs aXN0LgorSW5zaWRlIGEgYmxvY2sgcXVvdGUsIHRoZSBuZXcgbGluZSBpbmNsdWRlcyB0aGUgcXVv dGUgcHJlZml4LgorT3RoZXJ3aXNlLCBpbnNlcnQgYSBwbGFpbiBuZXdsaW5lLiIKKyAgKGludGVy YWN0aXZlKQorICAobGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgICAgICAgICAg IChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlvbikgKHBvaW50KSkKKyAgICAgICAg ICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgOzsgVHJlZS1zaXR0ZXIgbWF5IHJlcG9ydCBh IG5vZGUgaW5zaWRlIGEgYmxvY2tfcXVvdGUgZXZlbgorICAgICAgICAgOzsgd2hlbiBwb2ludCBp cyBvbiBhIGJsYW5rIGxpbmUgcGFzdCB0aGUgcXVvdGUgKHRoZSBub2RlCisgICAgICAgICA7OyBz cGFuIGNhbiBleHRlbmQgYmV5b25kIHRoZSBgPicgbGluZXMpLiAgT25seSB0cmVhdCB0aGUKKyAg ICAgICAgIDs7IGxpbmUgYXMgaW5zaWRlIGEgYmxvY2sgcXVvdGUgaWYgaXQgYWN0dWFsbHkgc3Rh cnRzIHdpdGgKKyAgICAgICAgIDs7IGEgYD4nIG1hcmtlci4KKyAgICAgICAgIChpbi1icSAoYW5k ICh0cmVlc2l0LXBhcmVudC11bnRpbCBub2RlICJcXGBibG9ja19xdW90ZVxcJyIpCisgICAgICAg ICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgKGJl Z2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAobG9va2luZy1hdC1wICJb IFx0XSo+IikpKSkKKyAgICAgICAgIChpdGVtIChtYXJrZG93bi10cy0tbGlzdC1pdGVtLWF0LXBv aW50KSkpCisgICAgKGNvbmQKKyAgICAgKGl0ZW0KKyAgICAgIChsZXQqICgoY29sIChtYXJrZG93 bi10cy0tbGlzdC1pdGVtLXRleHQtY29sdW1uIGl0ZW0pKQorICAgICAgICAgICAgIChicS1wcmVm aXggKHdoZW4gaW4tYnEgKG1hcmtkb3duLXRzLS1ibG9jay1xdW90ZS1wcmVmaXgpKSkKKyAgICAg ICAgICAgICA7OyBgY29sJyBpcyB0aGUgYWJzb2x1dGUgY29sdW1uIG9mIHRoZSBpdGVtJ3MgdGV4 dCwKKyAgICAgICAgICAgICA7OyB3aGljaCBpbnNpZGUgYSBibG9jayBxdW90ZSBpbmNsdWRlcyB0 aGUgIj4gIiBwcmVmaXgKKyAgICAgICAgICAgICA7OyB3aWR0aC4gIFNpbmNlIHdlIGluc2VydCBg YnEtcHJlZml4JyBzZXBhcmF0ZWx5LCB3ZQorICAgICAgICAgICAgIDs7IG11c3Qgc3VidHJhY3Qg aXRzIGxlbmd0aCB0byBhdm9pZCBkb3VibGluZyBpdC4KKyAgICAgICAgICAgICAoaW5kZW50ICgt IGNvbCAobGVuZ3RoIChvciBicS1wcmVmaXggIiIpKSkpCisgICAgICAgICAgICAgOzsgVGhlIGN1 cnJlbnQgbGluZSBpcyAiYmxhbmsiIGlmIGl0IGNvbnRhaW5zIG9ubHkKKyAgICAgICAgICAgICA7 OyB3aGl0ZXNwYWNlIChvciBxdW90ZSBwcmVmaXggKyB3aGl0ZXNwYWNlKSBhbmQgbm8KKyAgICAg ICAgICAgICA7OyBhY3R1YWwgdGV4dCBmcm9tIGEgcHJldmlvdXMgUkVUJ3MgY29udGludWF0aW9u IGluZGVudC4KKyAgICAgICAgICAgICAoYmxhbmstbGluZS1wIChzYXZlLWV4Y3Vyc2lvbgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0LXAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJeWz4gXHRdKiQiKSkpCisgICAgICAgICAgICAgOzsgUG9pbnQgaXMgYmVmb3JlIHRo ZSBpdGVtJ3MgdGV4dCAoYXQgb3IgYmVmb3JlIHRoZQorICAgICAgICAgICAgIDs7IG1hcmtlciku ICBBIHBsYWluIG5ld2xpbmUgaXMgYXBwcm9wcmlhdGUgaGVyZSwgYWRkaW5nCisgICAgICAgICAg ICAgOzsgY29udGludWF0aW9uIGluZGVudCB3b3VsZCBzaGlmdCB0aGUgZXhpc3RpbmcgY29udGVu dAorICAgICAgICAgICAgIDs7IHRvIHRoZSByaWdodC4KKyAgICAgICAgICAgICAoYmVmb3JlLXRl eHQtcCAoPD0gKGN1cnJlbnQtY29sdW1uKSBjb2wpKSkKKyAgICAgICAgKGNvbmQKKyAgICAgICAg IChibGFuay1saW5lLXAKKyAgICAgICAgICA7OyBUaGUgdXNlciBwcmVzc2VkIFJFVCBvbiBhbiBh bHJlYWR5LWJsYW5rIGNvbnRpbnVhdGlvbgorICAgICAgICAgIDs7IGxpbmUuICBJbnN0ZWFkIG9m IGFkZGluZyB5ZXQgYW5vdGhlciBpbmRlbnRlZCBibGFuaworICAgICAgICAgIDs7IGxpbmUsIHJl bW92ZSB0aGUgaW5kZW50YXRpb24gYW5kIGluc2VydCBhIHBsYWluCisgICAgICAgICAgOzsgbmV3 bGluZS4gIFRoaXMgZHJvcHMgcG9pbnQgdG8gY29sdW1uIDAsIHdoaWNoIGlzIHRoZQorICAgICAg ICAgIDs7IG9ubHkgd2F5IHRoZSB0cmVlLXNpdHRlciBtYXJrZG93biBncmFtbWFyIGVuZHMgYSBs aXN0OgorICAgICAgICAgIDs7IGJsYW5rIGxpbmVzIGFsb25lIGRvIE5PVCBlbmQgYSBsaXN0LCBv bmx5CisgICAgICAgICAgOzsgbm9uLWluZGVudGVkIGNvbnRlbnQgZG9lcy4gIFNvIHRoaXMgZ2l2 ZXMgdGhlIHVzZXIgYQorICAgICAgICAgIDs7IG5hdHVyYWwgIlJFVCBSRVQgdG8gZXhpdCB0aGUg bGlzdCIgd29ya2Zsb3cuCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxpbmUtYmVnaW5uaW5n LXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAgICAgIChuZXdsaW5lKSkKKyAg ICAgICAgIChiZWZvcmUtdGV4dC1wCisgICAgICAgICAgOzsgUG9pbnQgaXMgb24gb3IgYmVmb3Jl IHRoZSBsaXN0IG1hcmtlcjsganVzdCBpbnNlcnQgYQorICAgICAgICAgIDs7IHBsYWluIG5ld2xp bmUgc28gdGhlIGl0ZW0gaXMgcHVzaGVkIGRvd24gdW5jaGFuZ2VkLgorICAgICAgICAgIChuZXds aW5lKSkKKyAgICAgICAgICh0CisgICAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQor ICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgICh3aGVuIGJxLXByZWZpeCAoaW5zZXJ0IGJx LXByZWZpeCkpCisgICAgICAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgaW5kZW50ID9ccykpKSkp KQorICAgICAoaW4tYnEKKyAgICAgIChsZXQgKChicS1wcmVmaXggKG1hcmtkb3duLXRzLS1ibG9j ay1xdW90ZS1wcmVmaXgpKQorICAgICAgICAgICAgOzsgQSBsaW5lIHdpdGggb25seSBxdW90ZSBt YXJrZXJzIGFuZCB3aGl0ZXNwYWNlIChlLmcuLAorICAgICAgICAgICAgOzsgIj4gIikgaXMgImJs YW5rIiBpbnNpZGUgdGhlIHF1b3RlLiAgUkVUIGhlcmUgZXhpdHMgdGhlCisgICAgICAgICAgICA7 OyBxdW90ZSwgc2FtZSBhcyBSRVQgb24gYSBibGFuayBjb250aW51YXRpb24gbGluZSBleGl0cyBh CisgICAgICAgICAgICA7OyBsaXN0OiByZW1vdmUgdGhlIHByZWZpeCBhbmQgZHJvcCB0byBjb2x1 bW4gMC4KKyAgICAgICAgICAgIChibGFuay1saW5lLXAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsb29raW5nLWF0LXAgIl5bPiBcdF0qJCIpKSkpCisgICAgICAgIChpZiBi bGFuay1saW5lLXAKKyAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAoZGVsZXRlLXJl Z2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAg ICAgICAgICAgIChuZXdsaW5lKSkKKyAgICAgICAgICAoZGVsZXRlLWhvcml6b250YWwtc3BhY2Up CisgICAgICAgICAgKG5ld2xpbmUpCisgICAgICAgICAgKGluc2VydCBicS1wcmVmaXgpKSkpCisg ICAgIDs7IERlZmF1bHQ6IHBsYWluIG5ld2xpbmUuICBUaGlzIGFsc28gaGFuZGxlcyBlbXB0eSBs aXN0IG1hcmtlcnMKKyAgICAgOzsgKGUuZy4sICItICIgd2l0aCBubyB0ZXh0KSB0aGF0IHRoZSBn cmFtbWFyIHBhcnNlcyBhcyBFUlJPUgorICAgICA7OyBub2RlcyByYXRoZXIgdGhhbiBsaXN0X2l0 ZW0gbm9kZXMuCisgICAgIDs7CisgICAgIDs7IFdoZW4gdGhlIGN1cnJlbnQgbGluZSBpcyBibGFu ayAod2hpdGVzcGFjZSBvbmx5KSwgaXQgaXMgYQorICAgICA7OyBjb250aW51YXRpb24taW5kZW50 IGxpbmUgbGVmdCBieSBhIHByZXZpb3VzIFJFVCB0aGF0CisgICAgIDs7IHRyZWUtc2l0dGVyIG5v IGxvbmdlciBjb25zaWRlcnMgcGFydCBvZiBhIGxpc3RfaXRlbS4gIENsZWFyCisgICAgIDs7IHRo ZSB3aGl0ZXNwYWNlIHNvIG5vIHRyYWlsaW5nIHNwYWNlcyByZW1haW4sIGFuZCBpbnNlcnQgYQor ICAgICA7OyBwbGFpbiBuZXdsaW5lIGF0IGNvbHVtbiAwIHRvIGV4aXQgdGhlIGxpc3QgY29udGV4 dC4KKyAgICAgKHQKKyAgICAgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAo YmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgIChsb29raW5nLWF0LXAgIl5bIFx0XSsk IikpCisgICAgICAgIChkZWxldGUtcmVnaW9uIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxp bmUtZW5kLXBvc2l0aW9uKSkpCisgICAgICAobmV3bGluZSkpKSkpCisKKyhkZWZ1biBtYXJrZG93 bi10cy1pbnNlcnQtbGlzdC1pdGVtICgpCisgICJJbnNlcnQgYSBuZXcgbGlzdCBpdGVtLCBzcGxp dHRpbmcgdGV4dCBhdCBwb2ludC4KK1RleHQgYWZ0ZXIgcG9pbnQgbW92ZXMgdG8gdGhlIG5ldyBp dGVtLiAgQXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsCithbiBlbXB0eSBpdGVtIGlzIGluc2Vy dGVkIGFib3ZlIGFuZCB0aGUgY3VycmVudCBjb250ZW50IGlzIHB1c2hlZCBkb3duLgorSW5zaWRl IGEgYmxvY2sgcXVvdGUsIHRoZSBuZXcgbGluZSBpbmNsdWRlcyB0aGUgcXVvdGUgcHJlZml4Lgor Rm9yIG9yZGVyZWQgbGlzdHMsIHRoZSBudW1iZXIgaXMgaW5jcmVtZW50ZWQuCitXaGVuIG5vdCBp bnNpZGUgYSBsaXN0LCBmYWxsIGJhY2sgdG8gYG1hcmtkb3duLXRzLW5ld2xpbmUnLiIKKyAgKGlu dGVyYWN0aXZlKQorICAobGV0KiAoKG5vZGUgKHRyZWVzaXQtbm9kZS1hdAorICAgICAgICAgICAg ICAgIChzYXZlLWV4Y3Vyc2lvbiAoYmFjay10by1pbmRlbnRhdGlvbikgKHBvaW50KSkKKyAgICAg ICAgICAgICAgICAnbWFya2Rvd24pKQorICAgICAgICAgKGluLWJxIChhbmQgKHRyZWVzaXQtcGFy ZW50LXVudGlsIG5vZGUgIlxcYGJsb2NrX3F1b3RlXFwnIikKKyAgICAgICAgICAgICAgICAgICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxp bmUpCisgICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0LXAgIlsgXHRdKj4iKSkpKQor ICAgICAgICAgKGJxLXByZWZpeCAod2hlbiBpbi1icSAobWFya2Rvd24tdHMtLWJsb2NrLXF1b3Rl LXByZWZpeCkpKQorICAgICAgICAgKGl0ZW0gKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9p bnQpKSkKKyAgICAoY29uZAorICAgICAoKGFuZCBpdGVtCisgICAgICAgICAgIChvciAobm90IGlu LWJxKQorICAgICAgICAgICAgICAgKD49IChtYXJrZG93bi10cy0tbGluZS1ibG9jay1xdW90ZS1k ZXB0aCkKKyAgICAgICAgICAgICAgICAgICAobWFya2Rvd24tdHMtLWxpbmUtYmxvY2stcXVvdGUt ZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9kZS1zdGFydCAodHJlZXNpdC1u b2RlLWNoaWxkIGl0ZW0gMCkpKSkpKQorICAgICAgKGxldCogKChuZXctbWFya2VyIChtYXJrZG93 bi10cy0tbmV3LW1hcmtlci1mb3ItbGluZSBpdGVtKSkKKyAgICAgICAgICAgICAoYXQtYm9sICg8 PSAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJz aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKSkKKyAgICAgICAgICAg ICAodGFpbCAod2hlbiAoYW5kIChub3QgYXQtYm9sKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAobG9va2luZy1hdC1wICJbIFx0XSokIikpKQorICAgICAgICAgICAgICAgICAg ICAgKGRlbGV0ZS1hbmQtZXh0cmFjdC1yZWdpb24KKyAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpIChsaW5lLWVuZC1wb3NpdGlvbikpKSkpCisgICAgICAgIChpZiBhdC1ib2wKKyAgICAgICAg ICAgIDs7IEF0IEJPTDogaW5zZXJ0IGVtcHR5IGl0ZW0gYWJvdmUsIHB1c2ggY3VycmVudCBsaW5l IGRvd24uCisgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1s aW5lKQorICAgICAgICAgICAgICAod2hlbiBicS1wcmVmaXggKGluc2VydCBicS1wcmVmaXgpKQor ICAgICAgICAgICAgICAoaW5zZXJ0IG5ldy1tYXJrZXIgIlxuIikKKyAgICAgICAgICAgICAgKGJh Y2stdG8taW5kZW50YXRpb24pKQorICAgICAgICAgIDs7IE1pZC1saW5lIG9yIEVPTDogbmV3IGl0 ZW0gYmVsb3cgd2l0aCB0YWlsIHRleHQuCisgICAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNw YWNlKQorICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgICh3aGVuIGJxLXByZWZpeCAoaW5z ZXJ0IGJxLXByZWZpeCkpCisgICAgICAgICAgKGluc2VydCBuZXctbWFya2VyKQorICAgICAgICAg ICh3aGVuIHRhaWwgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgKHN0cmluZy10cmltLWxlZnQgdGFp bCkpKSkpKSkKKworICAgICA7OyBOb3QgaW4gYSBsaXN0OiBmYWxsIGJhY2sgdG8gbmV3bGluZSBi ZWhhdmlvci4KKyAgICAgKHQgKG1hcmtkb3duLXRzLW5ld2xpbmUpKSkpKQorCis7OzsgRmlsbGlu ZzoKKworKGRlZmNvbnN0IG1hcmtkb3duLXRzLS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnkK KyAgJyhbKGZlbmNlZF9jb2RlX2Jsb2NrKSAoaW5kZW50ZWRfY29kZV9ibG9jaykgKHBpcGVfdGFi bGUpXSBAYmxvY2spCisgICJUcmVlLXNpdHRlciBxdWVyeSBtYXRjaGluZyBibG9ja3Mgd2hlcmUg ZmlsbGluZyBpcyBpbmhpYml0ZWQuIikKKworKGRlZnVuIG1hcmtkb3duLXRzLS1saXN0LWl0ZW0t dGV4dC1jb2x1bW4gKGl0ZW0pCisgICJSZXR1cm4gdGhlIGNvbHVtbiB3aGVyZSB0aGUgdGV4dCBv ZiBsaXN0IElURU0gc3RhcnRzLgorVGhpcyBpcyB0aGUgY29sdW1uIG9mIHRoZSBmaXJzdCBwYXJh Z3JhcGggbm9kZSBpbnNpZGUgSVRFTSwgb3IKK3RoZSB3aWR0aCBvZiB0aGUgbGlzdCBtYXJrZXIg aWYgbm8gcGFyYWdyYXBoIGlzIGZvdW5kLiIKKyAgKGxldCAoKHBhcmFncmFwaCAodHJlZXNpdC1z ZWFyY2gtc3VidHJlZSBpdGVtICJcXGBwYXJhZ3JhcGhcXCciKSkpCisgICAgKGlmIHBhcmFncmFw aAorICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0 LW5vZGUtc3RhcnQgcGFyYWdyYXBoKSkKKyAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKQorICAg ICAgKGxldCAoKG1hcmtlciAodHJlZXNpdC1ub2RlLWNoaWxkIGl0ZW0gMCkpKQorICAgICAgICAo LSAodHJlZXNpdC1ub2RlLWVuZCBtYXJrZXIpCisgICAgICAgICAgICh0cmVlc2l0LW5vZGUtc3Rh cnQgbWFya2VyKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0ZW0gKGl0 ZW0ganVzdGlmeSkKKyAgIkZpbGwgdGhlIGNvbnRlbnRzIG9mIGxpc3QgSVRFTSwgcHJlc2Vydmlu ZyBpdHMgaW5kZW50YXRpb24uCitOYXJyb3dzIHRvIElURU0ncyBvd24gcGFyYWdyYXBoIGNvbnRl bnQgKGV4Y2x1ZGluZyBuZXN0ZWQgbGlzdHMpCithbmQgc2V0cyBgZmlsbC1wcmVmaXgnIHRvIGFs aWduIGNvbnRpbnVhdGlvbiBsaW5lcyB3aXRoIHRoZSBzdGFydAorb2YgdGhlIGl0ZW0ncyB0ZXh0 LiAgSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKGxldCogKChmaWxsLXBy ZWZpeCAobWFrZS1zdHJpbmcgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tdGV4dC1jb2x1bW4gaXRl bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xzKSkKKyAgICAgICAgIDs7 IEZpbmQgdGhlIGl0ZW0ncyBvd24gcGFyYWdyYXBoIChmaXJzdCBwYXJhZ3JhcGggY2hpbGQpLgor ICAgICAgICAgOzsgSWYgdGhlIGl0ZW0gaGFzIG5lc3RlZCBsaXN0cywgbmFycm93IHRvIGp1c3Qg dGhlCisgICAgICAgICA7OyBwYXJhZ3JhcGggc28gd2UgZG9uJ3QgbWVyZ2UgbmVzdGVkIGl0ZW1z LgorICAgICAgICAgKHBhcmEgKHRyZWVzaXQtc2VhcmNoLXN1YnRyZWUgaXRlbSAiXFxgcGFyYWdy YXBoXFwnIiBuaWwgbmlsIDEpKQorICAgICAgICAgKGJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0 ZW0pKQorICAgICAgICAgKGVuZCAoaWYgcGFyYQorICAgICAgICAgICAgICAgICAgKHRyZWVzaXQt bm9kZS1lbmQgcGFyYSkKKyAgICAgICAgICAgICAgICAodHJlZXNpdC1ub2RlLWVuZCBpdGVtKSkp CisgICAgICAgICA7OyBVc2UgZGVmYXVsdCBwYXJhZ3JhcGggbW90aW9uIGluc2lkZSB0aGUgbmFy cm93ZWQgcmVnaW9uCisgICAgICAgICA7OyBzbyB0aGF0IHRoZSBpbm5lciBgZmlsbC1wYXJhZ3Jh cGgnIGRvZXMgbm90IHJlLWVudGVyIG91cgorICAgICAgICAgOzsgY3VzdG9tIHBhcmFncmFwaC1m aW5kaW5nIGxvZ2ljLgorICAgICAgICAgKGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVuY3Rpb24g Iydmb3J3YXJkLXBhcmFncmFwaCkpCisgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgIChuYXJy b3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAoZmlsbC1wYXJhZ3JhcGgganVzdGlmeSkpCisg ICAgOzsgUmV0dXJuIG5vbi1uaWwgdG8gc2lnbmFsIHRoYXQgZmlsbGluZyBoYXMgYmVlbiBoYW5k bGVkLAorICAgIDs7IGFzIHBlciB0aGUgY29udHJhY3Qgb2YgYGZpbGwtcGFyYWdyYXBoLWZ1bmN0 aW9uJy4KKyAgICB0KSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1hZGFwdGl2ZS1maWxsICgpCisg ICJSZXR1cm4gdGhlIGZpbGwgcHJlZml4IGZvciB0aGUgY3VycmVudCBsaW5lIGluIE1hcmtkb3du LgorV2hlbiBpbnNpZGUgYSBsaXN0IGl0ZW0sIHJldHVybiBzcGFjZXMgbWF0Y2hpbmcgdGhlIGNv bHVtbiB3aGVyZQordGhlIGl0ZW0ncyB0ZXh0IHN0YXJ0cy4iCisgIChhbmQtbGV0KiAoKG5vZGUg KHRyZWVzaXQtbm9kZS1hdAorICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGJh Y2stdG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICdtYXJrZG93 bikpCisgICAgICAgICAgICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxp c3RfaXRlbVxcJyIpKSkKKyAgICAobWFrZS1zdHJpbmcgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0t dGV4dC1jb2x1bW4gaXRlbSkgP1xzKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1mb3J3 YXJkLXBhcmFncmFwaCAoYXJnKQorICAiTW92ZSBmb3J3YXJkIGJ5IEFSRyBwYXJhZ3JhcGhzLCBy ZXNwZWN0aW5nIE1hcmtkb3duIHN0cnVjdHVyZS4KK0xpc3QgaXRlbXMgYXJlIHRyZWF0ZWQgYXMg aW5kaXZpZHVhbCBwYXJhZ3JhcGhzLiAgQmxvY2tzIG1hdGNoZWQKK2J5IGBtYXJrZG93bi10cy0t ZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1ZXJ5JyBhcmUgc2tpcHBlZDogYm90aAorZm9yd2FyZCBh bmQgYmFja3dhcmQgbW90aW9uIG1vdmUgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2ssIHNvCitgZmls bC1yZWdpb24nIHNlZXMgYSB6ZXJvLWxlbmd0aCByZWdpb24gYW5kIGxlYXZlcyB0aGUgYmxvY2sK K3VuZmlsbGVkLiIKKyAgKGxldCAoKGRpcmVjdGlvbiAoaWYgKD4gYXJnIDApIDEgLTEpKQorICAg ICAgICAoY291bnQgKGFicyBhcmcpKQorICAgICAgICAobW92ZWQgMCkpCisgICAgKGRvdGltZXMg KF8gY291bnQpCisgICAgICA7OyBGb3IgYmFja3dhcmQgbW90aW9uLCBza2lwIGJhY2sgb3ZlciB3 aGl0ZXNwYWNlIHRvIGZpbmQKKyAgICAgIDs7IHRoZSBpdGVtIHdlIGFyZSBsZWF2aW5nLCBub3Qg dGhlIG5leHQgb25lLgorICAgICAgKGxldCogKChwb3MgKGlmICg8IGRpcmVjdGlvbiAwKQorICAg ICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg ICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAg IChtYXggKHBvaW50LW1pbikgKDEtIChwb2ludCkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHBv aW50KSkpCisgICAgICAgICAgICAgKGJsb2NrIChjYXIgKHRyZWVzaXQtcXVlcnktY2FwdHVyZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1idWZmZXItcm9vdC1ub2RlICdtYXJr ZG93bikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Rvd24tdHMtLWZpbGwtdW5maWxs YWJsZS1ibG9jay1xdWVyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKDErIHBvcykp KSkKKyAgICAgICAgICAgICAoaW5kZW50ZWQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBvcykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChwb2ludCkpKQorICAgICAgICAgICAgIChub2RlICh0cmVlc2l0LW5vZGUtYXQgaW5kZW50 ZWQtcG9zICdtYXJrZG93bikpCisgICAgICAgICAgICAgKGl0ZW0gKHRyZWVzaXQtcGFyZW50LXVu dGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkKKyAgICAgICAgOzsgV2hlbiBtb3ZpbmcgZm9y d2FyZCBmcm9tIHdoaXRlc3BhY2UgYmV0d2VlbiBsaXN0IGl0ZW1zLAorICAgICAgICA7OyBza2lw IHRvIHRoZSBuZXh0IG5vbi1ibGFuayBwb3NpdGlvbiBhbmQgY2hlY2sgYWdhaW4uCisgICAgICAg ICh3aGVuIChhbmQgKG5vdCBpdGVtKSAobm90IGJsb2NrKSAoPiBkaXJlY3Rpb24gMCkpCisgICAg ICAgICAgKGxldCAoKG5leHQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocG9pbnQpKSkpCisgICAgICAgICAgICAoc2V0cSBub2RlICh0cmVlc2l0LW5v ZGUtYXQgbmV4dC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAgIChzZXRxIGl0ZW0gKHRyZWVz aXQtcGFyZW50LXVudGlsIG5vZGUgIlxcYGxpc3RfaXRlbVxcJyIpKSkpCisgICAgICAgIChjb25k CisgICAgICAgICA7OyBJbnNpZGUgYW4gdW5maWxsYWJsZSBibG9jazogc2tpcCBvdmVyIGl0IGVu dGlyZWx5LgorICAgICAgICAgKGJsb2NrCisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1u b2RlLWVuZCAoY2RyIGJsb2NrKSkpCisgICAgICAgICAgKHNldHEgbW92ZWQgKDErIG1vdmVkKSkp CisgICAgICAgICA7OyBJbnNpZGUgYSBsaXN0IGl0ZW06IHRyZWF0IGFzIHBhcmFncmFwaCBib3Vu ZGFyeS4KKyAgICAgICAgIChpdGVtCisgICAgICAgICAgKGlmICg+IGRpcmVjdGlvbiAwKQorICAg ICAgICAgICAgICAoZ290by1jaGFyICh0cmVlc2l0LW5vZGUtZW5kIGl0ZW0pKQorICAgICAgICAg ICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IGl0ZW0pKSkKKyAgICAgICAgICAoc2V0 cSBtb3ZlZCAoMSsgbW92ZWQpKSkKKyAgICAgICAgIDs7IERlZmF1bHQ6IHVzZSBzdGFuZGFyZCBw YXJhZ3JhcGggbW90aW9uLgorICAgICAgICAgKHQKKyAgICAgICAgICAoZm9yd2FyZC1wYXJhZ3Jh cGggZGlyZWN0aW9uKQorICAgICAgICAgIChzZXRxIG1vdmVkICgxKyBtb3ZlZCkpKSkpKQorICAg IDs7IFJldHVybiB0aGUgbnVtYmVyIG9mIHBhcmFncmFwaHMgbGVmdCB0byBtb3ZlICgwID0gYWxs IGRvbmUpLgorICAgICgtIGNvdW50IG1vdmVkKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmls bC1wYXJhZ3JhcGggKCZvcHRpb25hbCBqdXN0aWZ5KQorICAiRmlsbCB0aGUgY3VycmVudCBwYXJh Z3JhcGgsIHJlc3BlY3RpbmcgTWFya2Rvd24gYmxvY2sgc3RydWN0dXJlLgorVGhpcyBmdW5jdGlv biBwcmV2ZW50cyBmaWxsaW5nIGluc2lkZSBibG9ja3MgbWF0Y2hlZCBieQorYG1hcmtkb3duLXRz LS1maWxsLXVuZmlsbGFibGUtYmxvY2stcXVlcnknLCBhbmQgZmlsbHMgd2l0aGluIGxpc3QKK2l0 ZW1zIHdpdGhvdXQgbWVyZ2luZyBhZGphY2VudCBpdGVtcy4gIEpVU1RJRlkgaXMgYXMgaW4KK2Bm aWxsLXBhcmFncmFwaCcuIgorICAoY29uZCoKKyAgIDs7IERvbid0IGZpbGwgaW5zaWRlIHVuZmls bGFibGUgYmxvY2tzLiAgVXNlIGEgcXVlcnkgYWdhaW5zdCB0aGUKKyAgIDs7IHJvb3Qgbm9kZSBi ZWNhdXNlIGB0cmVlc2l0LW5vZGUtYXQnIG1heSBub3QgcmV0dXJuIGEgbm9kZQorICAgOzsgaW5z aWRlIHRoZSBibG9jayB3aGVuIHBvaW50IGlzIG9uIGFub255bW91cyAodW5uYW1lZCkgdGV4dC4K KyAgICgodHJlZXNpdC1xdWVyeS1jYXB0dXJlCisgICAgICh0cmVlc2l0LWJ1ZmZlci1yb290LW5v ZGUgJ21hcmtkb3duKQorICAgICBtYXJrZG93bi10cy0tZmlsbC11bmZpbGxhYmxlLWJsb2NrLXF1 ZXJ5CisgICAgIChwb2ludCkgKG1pbiAoMSsgKHBvaW50KSkgKHBvaW50LW1heCkpKQorICAgIHQp CisgICA7OyBGaWxsIHdpdGhpbiB0aGUgZW5jbG9zaW5nIGxpc3QgaXRlbS4gIFVzZQorICAgOzsg YG1hcmtkb3duLXRzLS1saXN0LWl0ZW0tYXQtcG9pbnQnIHdoaWNoIGhhbmRsZXMgYmxvY2sgcXVv dGUKKyAgIDs7IG1hcmtlcnMuICBXaGVuIHRoZSBsaXN0IGl0ZW0gaXMgaW5zaWRlIGEgYmxvY2sg cXVvdGUsIGRlbGVnYXRlCisgICA7OyB0byB0aGUgYmxvY2sgcXVvdGUgZmlsbGVyIHdoaWNoIGhh bmRsZXMgYD4gJyBwcmVmaXhlcyBjb3JyZWN0bHkuCisgICAoKGJpbmQtYW5kKiAoaXRlbSAobWFy a2Rvd24tdHMtLWxpc3QtaXRlbS1hdC1wb2ludCkpKQorICAgIChpZiAodHJlZXNpdC1wYXJlbnQt dW50aWwgaXRlbSAiXFxgYmxvY2tfcXVvdGVcXCciKQorICAgICAgICAobWFya2Rvd24tdHMtLWZp bGwtYmxvY2stcXVvdGUganVzdGlmeSkKKyAgICAgIChtYXJrZG93bi10cy0tZmlsbC1saXN0LWl0 ZW0gaXRlbSBqdXN0aWZ5KSkpCisgICA7OyBQb2ludCBpcyBvbiBhIGJsYW5rIGxpbmUgYmVmb3Jl IGEgbGlzdC4gIElmIHRoZSBuZXh0CisgICA7OyBub24td2hpdGVzcGFjZSBwb3NpdGlvbiBmYWxs cyBpbnNpZGUgYSBsaXN0IGl0ZW0sIGZpbGwgdGhhdCBpdGVtLgorICAgKChzYXZlLWV4Y3Vyc2lv bgorICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQorICAgICAgKGxvb2tpbmctYXQtcCAiWyBcdF0q JCIpKQorICAgIChhbmQtbGV0KiAoKG5leHQtcG9zIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG4iKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCisgICAgICAgICAgICAgICAobmV4dC1ub2RlICh0 cmVlc2l0LW5vZGUtYXQgbmV4dC1wb3MgJ21hcmtkb3duKSkKKyAgICAgICAgICAgICAgIChpdGVt ICh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAgICAgICAgICAgICAgICAgIG5leHQtbm9kZSAi XFxgbGlzdF9pdGVtXFwnIikpKQorICAgICAgKG1hcmtkb3duLXRzLS1maWxsLWxpc3QtaXRlbSBp dGVtIGp1c3RpZnkpKSkKKyAgIDs7IEZpbGwgd2l0aGluIGEgYmxvY2sgcXVvdGUuICBOYXJyb3cg dG8gdGhlIHBhcmFncmFwaCBub2RlIGF0CisgICA7OyBwb2ludCdzIG5lc3RpbmcgbGV2ZWwgc28g bGluZXMgd2l0aCBkaWZmZXJlbnQgYD4gJyBkZXB0aHMKKyAgIDs7IGFyZSBub3QgbWVyZ2VkLgor ICAgKCh0cmVlc2l0LXBhcmVudC11bnRpbAorICAgICAodHJlZXNpdC1ub2RlLWF0CisgICAgICAo c2F2ZS1leGN1cnNpb24gKGJhY2stdG8taW5kZW50YXRpb24pIChwb2ludCkpCisgICAgICAnbWFy a2Rvd24pCisgICAgICJcXGBibG9ja19xdW90ZVxcJyIpCisgICAgKG1hcmtkb3duLXRzLS1maWxs LWJsb2NrLXF1b3RlIGp1c3RpZnkpKQorICAgOzsgRmlsbCB3aXRoaW4gYW4gSFRNTCBjb21tZW50 LiAgVGhlIG5vZGUgdHlwZSBpcyAiaHRtbF9ibG9jayIKKyAgIDs7IGluIGdyYW1tYXIgdjAuNC54 IGFuZCAiY29tbWVudCIgaW4gc29tZSBvdGhlciB2ZXJzaW9ucy4KKyAgICgoYmluZC1hbmQqIChi bG9jayAobGV0ICgobiAodHJlZXNpdC1ub2RlLWF0IChwb2ludCkgJ21hcmtkb3duKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAob3IgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG4gIlxcYFxcKD86aHRtbF9ibG9ja1xcfGNvbW1lbnRcXClcXCci KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKG1lbWJlciAodHJlZXNpdC1ub2Rl LXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiaHRt bF9ibG9jayIgImNvbW1lbnQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4p KSkpKQorICAgIChtYXJrZG93bi10cy0tZmlsbC1odG1sLWNvbW1lbnQgYmxvY2sganVzdGlmeSkp CisgICA7OyBEZWZhdWx0OiBsZXQgZmlsbC1wYXJhZ3JhcGggaGFuZGxlIGl0LgorICAgKHQgbmls KSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmlsbC1odG1sLWNvbW1lbnQgKG5vZGUganVzdGlm eSkKKyAgIkZpbGwgSFRNTCBjb21tZW50IE5PREUsIGFsaWduaW5nIGNvbnRpbnVhdGlvbiBsaW5l cy4KK1JldHVybiB0IGlmIE5PREUgaXMgYSBjb21tZW50IGFuZCB3YXMgZmlsbGVkLCBuaWwgb3Ro ZXJ3aXNlLgorSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJhZ3JhcGgnLiIKKyAgKHdoZW4gKHNh dmUtZXhjdXJzaW9uCisgICAgICAgICAgKGdvdG8tY2hhciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5v ZGUpKQorICAgICAgICAgIChsb29raW5nLWF0LXAgIjwhLS0iKSkKKyAgICAobGV0ICgoZmlsbC1w cmVmaXggKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAodHJlZXNpdC1ub2RlLXN0YXJ0IG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICht YWtlLXN0cmluZyAoKyAoY3VycmVudC1jb2x1bW4pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsZW5ndGggIjwhLS0gIikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID9ccykpKQorICAgICAgICAgIChhZGFwdGl2ZS1maWxsLWZ1bmN0aW9u IG5pbCkKKyAgICAgICAgICAoZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbiAjJ2Zvcndh cmQtcGFyYWdyYXBoKQorICAgICAgICAgIChmaWxsLXBhcmFncmFwaC1mdW5jdGlvbiBuaWwpKQor ICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgICAgKG5hcnJvdy10by1yZWdpb24gKHRyZWVz aXQtbm9kZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAodHJlZXNpdC1u b2RlLWVuZCBub2RlKSkKKyAgICAgICAgKGZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKQorICAgICAg dCkpKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCAoKQorICAiUmV0 dXJuIHRoZSBibG9jayBxdW90ZSBwcmVmaXggc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbGluZS4K K1JlYWQgdGhlIGFjdHVhbCBgPicgbWFya2VycyAod2l0aCB3aGF0ZXZlciBzcGFjaW5nIHRoZSB1 c2VyIHdyb3RlKQorZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHNvIHRoYXQgZmlsbCBw cmVzZXJ2ZXMgdGhlIGV4aXN0aW5nCitzdHlsZSAoZS5nLiwgYD4+PiAnIHN0YXlzIGA+Pj4gJywg YD4gPiA+ICcgc3RheXMgYD4gPiA+ICcpLiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGJlZ2lu bmluZy1vZi1saW5lKQorICAgIChpZiAobG9va2luZy1hdCAiXFwoWz4gXHRdKj5cXClbIFx0XSoi KQorICAgICAgICAoY29uY2F0IChtYXRjaC1zdHJpbmcgMCkpCisgICAgICAiPiAiKSkpCisKKyhk ZWZ1biBtYXJrZG93bi10cy0tZmlsbC1ibG9jay1xdW90ZSAoanVzdGlmeSkKKyAgIkZpbGwgdGhl IHBhcmFncmFwaCBhdCBwb2ludCBpbnNpZGUgYSBibG9jayBxdW90ZS4KK0ZpbmQgdGhlIHBhcmFn cmFwaCBub2RlIGF0IHBvaW50IHdpdGhpbiB0aGUgYmxvY2sgcXVvdGUgYW5kIGZpbGwKK29ubHkg dGhhdCBwYXJhZ3JhcGgsIHByZXNlcnZpbmcgdGhlIGA+ICcgcHJlZml4LiAgV2hlbiB0aGUKK3Bh cmFncmFwaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0sIGFsaWduIGNvbnRpbnVhdGlvbiBsaW5lcyB3 aXRoCit0aGUgaXRlbSdzIHRleHQgY29sdW1uLiAgSlVTVElGWSBpcyBhcyBpbiBgZmlsbC1wYXJh Z3JhcGgnLiIKKyAgOzsgU2tpcCBwYXN0IGA+ICcgbWFya2VycyBhbmQgYW55IGxpc3QgbWFya2Vy IHRvIGxhbmQgaW5zaWRlIHRoZQorICA7OyBjb250ZW50LCB3aGVyZSB0aGUgcGFyYWdyYXBoIG5v ZGUgbGl2ZXMuCisgIChsZXQqICgoY29udGVudC1wb3MgKHNhdmUtZXhjdXJzaW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgICAgICAg ICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICI+IFx0IikKKyAgICAgICAgICAgICAgICAgICAgICAg IDs7IElmIHdlIGxhbmQgb24gYSBsaXN0IG1hcmtlciwgc2tpcCBwYXN0IGl0LgorICAgICAgICAg ICAgICAgICAgICAgICAgKHdoZW4gKGxvb2tpbmctYXQgIlstKitdIFxcfFswLTldK1suKV1ccyIp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAobWluICgxKyAocG9pbnQpKSAocG9pbnQtbWF4KSkpKQor ICAgICAgICAgKG5vZGUgKHRyZWVzaXQtbm9kZS1hdCBjb250ZW50LXBvcyAnbWFya2Rvd24pKQor ICAgICAgICAgKHBhcmEgKHRyZWVzaXQtcGFyZW50LXVudGlsCisgICAgICAgICAgICAgICAgbm9k ZSAobGFtYmRhIChuKQorICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwgKHRyZWVzaXQtbm9k ZS10eXBlIG4pICJwYXJhZ3JhcGgiKSkpKSkKKyAgICAod2hlbiBwYXJhCisgICAgICA7OyBUaGUg Z3JhbW1hciBtYXkgaW5jbHVkZSB0cmFpbGluZyBibG9ja19jb250aW51YXRpb24gbm9kZXMKKyAg ICAgIDs7IChibGFuayBgPiA+JyBsaW5lcykgYXMgY2hpbGRyZW4gb2YgdGhlIHBhcmFncmFwaC4g IFVzZSB0aGUKKyAgICAgIDs7IGVuZCBvZiB0aGUgbGFzdCBpbmxpbmUgY2hpbGQgc28gZmlsbCBk b2VzIG5vdCBtZXJnZSBhY3Jvc3MKKyAgICAgIDs7IHdoYXQgc2hvdWxkIGJlIGEgcGFyYWdyYXBo IGJvdW5kYXJ5LgorICAgICAgKGxldCogKChsYXN0LWlubGluZQorICAgICAgICAgICAgICAoc2Vx LWZpbmQgKGxhbWJkYSAoY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAo dHJlZXNpdC1ub2RlLXR5cGUgY2hpbGQpICJpbmxpbmUiKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgIChyZXZlcnNlICh0cmVlc2l0LW5vZGUtY2hpbGRyZW4gcGFyYSkpKSkKKyAgICAgICAgICAg ICAocGFyYS1lbmQgKGlmIGxhc3QtaW5saW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLWVuZCBsYXN0LWlubGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAo dHJlZXNpdC1ub2RlLWVuZCBwYXJhKSkpCisgICAgICAgICAgICAgKGJxLXByZWZpeCAobWFya2Rv d24tdHMtLWJsb2NrLXF1b3RlLXByZWZpeCkpCisgICAgICAgICAgICAgOzsgV2hlbiBpbnNpZGUg YSBsaXN0IGl0ZW0sIGV4dGVuZCB0aGUgcHJlZml4IHdpdGggc3BhY2VzCisgICAgICAgICAgICAg Ozsgc28gY29udGludWF0aW9uIGxpbmVzIGFsaWduIHdpdGggdGhlIGl0ZW0ncyB0ZXh0LgorICAg ICAgICAgICAgIChsaXN0LWl0ZW0gKHRyZWVzaXQtcGFyZW50LXVudGlsIHBhcmEgIlxcYGxpc3Rf aXRlbVxcJyIpKQorICAgICAgICAgICAgIChwcmVmaXggKGlmIGxpc3QtaXRlbQorICAgICAgICAg ICAgICAgICAgICAgICAgIChsZXQqICgodGV4dC1jb2wgKG1hcmtkb3duLXRzLS1saXN0LWl0ZW0t dGV4dC1jb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aXN0LWl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0cmEgKG1heCAw ICgtIHRleHQtY29sIChsZW5ndGggYnEtcHJlZml4KSkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25jYXQgYnEtcHJlZml4IChtYWtlLXN0cmluZyBleHRyYSA/XHMpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgYnEtcHJlZml4KSkKKyAgICAgICAgICAgICAoYWRhcHRpdmUtZmls bC1mdW5jdGlvbiBuaWwpCisgICAgICAgICAgICAgKGZpbGwtZm9yd2FyZC1wYXJhZ3JhcGgtZnVu Y3Rpb24gIydmb3J3YXJkLXBhcmFncmFwaCkKKyAgICAgICAgICAgICAoZmlsbC1wYXJhZ3JhcGgt ZnVuY3Rpb24gbmlsKSkKKyAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgICAgICA7OyBO YXJyb3cgdG8gdGhlIGZ1bGwgbGluZXMgb2YgdGhlIHBhcmFncmFwaCBzbyB0aGF0IHRoZQorICAg ICAgICAgIDs7IGA+ICcgbWFya2VycyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZpbGwgcmVnaW9uLgor ICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uCisgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBwYXJhKSkKKyAgICAg ICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgKHBvaW50KSkKKyAgICAg ICAgICAgcGFyYS1lbmQpCisgICAgICAgICAgKGxldCAoKGZpbGwtcHJlZml4IHByZWZpeCkpCisg ICAgICAgICAgICAoZmlsbC1wYXJhZ3JhcGgganVzdGlmeSkpKSkpKQorICB0KQorCis7OzsgQ29k ZSBibG9ja3M6CisKKyhkZWZ2YXItbG9jYWwgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3Vh Z2VzIG5pbAorICAiQWxpc3QgbWFwcGluZyBsYW5ndWFnZSBub2RlIG5hbWVzIHRvIHRzIGxhbmd1 YWdlLgorSWYgYSBsYW5ndWFnZSBpcyBub3QgYSB0cyBsYW5ndWFnZSBvciBpcyBub3QgbWFwcGVk IHRvIG9uZSwgaXQgd2lsbCBiZQoraW4gYG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLW5vbi10cy1t b2RlcycuIikKKworKGRlZnZhci1sb2NhbCBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMt bW9kZXMgbmlsCisgICJBbGlzdCBtYXBwaW5nIGxhbmd1YWdlcyB0byBub24tdHJlZS1zaXR0ZXIg bW9kZXMgZm9yIGNvZGUgYmxvY2tzLgorUG9wdWxhdGVkIGJ5IGBtYXJrZG93bi10cy0tY29kZS1i bG9jay10cy1sYW5ndWFnZScgdG8gaWRlbnRpZnkgYQorY29kZS1ibG9jayBsYW5ndWFnZSBtb2Rl IHdoaWNoIGlzIG5vdCBhIHRyZWUtc2l0dGVyIG1vZGUgb3IgZm9yIHdoaWNoCit0aGUgdHJlZS1z aXR0ZXIgZ3JhbW1hciBpcyB1bmF2YWlsYWJsZS4iKQorCisoZGVmdW4gbWFya2Rvd24tdHMtLWhh cnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24gKG1vZGUpCisgICJIYXJ2ZXN0IHRyZWUt c2l0dGVyIGNvbmZpZ3VyYXRpb24gZnJvbSBNT0RFLgorUmV0dXJuIGEgcGxpc3Qgd2l0aCB0aGUg Zm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgIDpmb250LWxvY2sgKGZyb20gYHRyZWVz aXQtZm9udC1sb2NrLXNldHRpbmdzJykKICAgICA6c2ltcGxlLWluZGVudCAoZnJvbSBgdHJlZXNp dC1zaW1wbGUtaW5kZW50LXJ1bGVzJykKICAgICA6cmFuZ2UgKGZyb20gYHRyZWVzaXQtcmFuZ2Ut c2V0dGluZ3MnKSIKICAgKHdpdGgtdGVtcC1idWZmZXIKLSAgICAoZnVuY2FsbCBtb2RlKQotICAg IChsaXN0IDpmb250LWxvY2sgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAoZGVsYXkt bW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkKKyAgICAobGlzdCA6bGFuZ3VhZ2UgKHRyZWVzaXQt bGFuZ3VhZ2UtYXQgKHBvaW50LW1pbikpCisgICAgICAgICAgOmZvbnQtbG9jayB0cmVlc2l0LWZv bnQtbG9jay1zZXR0aW5ncwogICAgICAgICAgIDpzaW1wbGUtaW5kZW50IHRyZWVzaXQtc2ltcGxl LWluZGVudC1ydWxlcwogICAgICAgICAgIDpyYW5nZSB0cmVlc2l0LXJhbmdlLXNldHRpbmdzKSkp CiAKLShkZWZ1biBtYXJrZG93bi10cy0tYWRkLWNvbmZpZy1mb3ItbW9kZSAobGFuZ3VhZ2UgbW9k ZSkKLSAgIkFkZCBjb25maWd1cmF0aW9ucyBmb3IgTEFOR1VBR0UgZnJvbSBNT0RFIHRvIGN1cnJl bnQgYnVmZmVyLgotCi1Db25maWd1cmF0aW9uIGluY2x1ZGVzIGZvbnQtbG9jayBhbmQgaW5kZW50 LiAgRm9yIGZvbnQtbG9jayBydWxlcywgdXNlCi10aGUgc2FtZSBmZWF0dXJlcyBlbmFibGVkIGlu IE1PREUuIgotICAobGV0ICgoY29uZmlncyAobWFya2Rvd24tdHMtLWhhcnZlc3QtdHJlZXNpdC1j b25maWdzIG1vZGUpKSkKLSAgICAoaWdub3JlIGxhbmd1YWdlKSA7IFdlIG1pZ2h0IG1ha2UgdXNl IG9mIHRoaXMgbGF0ZXIuCi0gICAgKHNldHEgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKLSAg ICAgICAgICAoYXBwZW5kIHRyZWVzaXQtZm9udC1sb2NrLXNldHRpbmdzCi0gICAgICAgICAgICAg ICAgICA7OyBHZXQgYWxsIHRoZSBmb250LWxvY2sgc2V0dGluZ3MsIGluY2x1ZGluZyBvbmVzIHRo YXQKLSAgICAgICAgICAgICAgICAgIDs7IGRvbid0IHBlcnRhaW4gdG8gTEFOR1VBR0UuICBUaGlz IHdheSB3ZSBnZXQganNkb2MKLSAgICAgICAgICAgICAgICAgIDs7IGZyb20ganMtdHMtbW9kZSwg Zm9yIGV4YW1wbGUuCi0gICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3MgOmZvbnQt bG9jaykpKQotICAgIChzZXRxIHRyZWVzaXQtc2ltcGxlLWluZGVudC1ydWxlcwotICAgICAgICAg IChhcHBlbmQgdHJlZXNpdC1zaW1wbGUtaW5kZW50LXJ1bGVzCi0gICAgICAgICAgICAgICAgICA7 OyBTaW1pbGFybHksIGdldCBhbGwgaW5kZW50IHJ1bGVzLgotICAgICAgICAgICAgICAgICAgKHBs aXN0LWdldCBjb25maWdzIDpzaW1wbGUtaW5kZW50KSkpCisoZGVmdW4gbWFya2Rvd24tdHMtLWNv bmZpZ3VyZS1jdXJyZW50LWJ1ZmZlciAoY29uZmlndXJhdGlvbikKKyAgIkFkZCBDT05GSUdVUkFU SU9OIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4KK0NPTkZJR1VSQVRJT04gaW5jbHVkZXMgZm9udC1s b2NrIGFuZCBpbmRlbnQgcnVsZXMuICBGb3IgZm9udC1sb2NrIHJ1bGVzLAordXNlIHRoZSBzYW1l IGZlYXR1cmVzIGVuYWJsZWQgaW4gTU9ERS4iCisgIChzZXRxIHRyZWVzaXQtZm9udC1sb2NrLXNl dHRpbmdzCisgICAgICAgIChhcHBlbmQgdHJlZXNpdC1mb250LWxvY2stc2V0dGluZ3MKKyAgICAg ICAgICAgICAgICA7OyBHZXQgYWxsIHRoZSBmb250LWxvY2sgc2V0dGluZ3MsIGluY2x1ZGluZyBv bmVzIHRoYXQKKyAgICAgICAgICAgICAgICA7OyBkb24ndCBwZXJ0YWluIHRvIE1PREUuICBUaGlz IHdheSwgd2UgZ2V0IGpzZG9jCisgICAgICAgICAgICAgICAgOzsgZnJvbSBqcy10cy1tb2RlLCBm b3IgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IGNvbmZpZ3VyYXRpb24gOmZv bnQtbG9jaykpKQorICAoc2V0cSB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKKyAgICAgICAg KGFwcGVuZCB0cmVlc2l0LXNpbXBsZS1pbmRlbnQtcnVsZXMKKyAgICAgICAgICAgICAgICA7OyBT aW1pbGFybHksIGdldCBhbGwgaW5kZW50IHJ1bGVzLgorICAgICAgICAgICAgICAgIChwbGlzdC1n ZXQgY29uZmlndXJhdGlvbiA6c2ltcGxlLWluZGVudCkpKQogICAgIChzZXRxIHRyZWVzaXQtcmFu Z2Utc2V0dGluZ3MKICAgICAgICAgICAoYXBwZW5kIHRyZWVzaXQtcmFuZ2Utc2V0dGluZ3MKICAg ICAgICAgICAgICAgICAgIDs7IEZpbHRlciBvdXQgZnVuY3Rpb24gcXVlcmllcywgYmVjYXVzZSB0 aGV5IGFyZQpAQCAtMzAyLDUyICsxOTE0LDM5NyBAQCBtYXJrZG93bi10cy0tYWRkLWNvbmZpZy1m b3ItbW9kZQogICAgICAgICAgICAgICAgICAgOzsgQ2FzZSBpbiBwb2ludDogYy10cy1tb2RlJ3Mg cmFuZ2Ugc2V0dGluZy4KICAgICAgICAgICAgICAgICAgIChzZXEtZmlsdGVyIChsYW1iZGEgKHNl dHRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGZ1bmN0aW9ucCAo Y2FyIHNldHRpbmcpKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IGNvbmZpZ3MgOnJhbmdlKSkpKQotICAgIChzZXRxLWxvY2FsIGluZGVudC1saW5lLWZ1bmN0aW9u ICMndHJlZXNpdC1pbmRlbnQpCi0gICAgKHNldHEtbG9jYWwgaW5kZW50LXJlZ2lvbi1mdW5jdGlv biAjJ3RyZWVzaXQtaW5kZW50LXJlZ2lvbikpKQotCi0oZGVmdW4gbWFya2Rvd24tdHMtLWNvbnZl cnQtY29kZS1ibG9jay1sYW5ndWFnZSAobm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChwbGlzdC1nZXQgY29uZmlndXJhdGlvbiA6cmFuZ2UpKSkpCisgIChzZXRxLWxvY2FsIGlu ZGVudC1saW5lLWZ1bmN0aW9uICMndHJlZXNpdC1pbmRlbnQpCisgIChzZXRxLWxvY2FsIGluZGVu dC1yZWdpb24tZnVuY3Rpb24gIyd0cmVlc2l0LWluZGVudC1yZWdpb24pKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtLWxhbmd1YWdlLWF0LW5vZGUgKG5vZGUpCisgICJSZXR1cm4gdGhlIGxhbmd1YWdl IHN5bWJvbCBmb3IgY29kZV9mZW5jZV9jb250ZW50IE5PREUuIgorICAod2hlbi1sZXQqICgocGFy ZW50ICh0cmVlc2l0LW5vZGUtcGFyZW50IG5vZGUpKQorICAgICAgICAgICAgICAobGFuZy1ub2Rl ICh3aGVuIHBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtc2VhcmNo LXN1YnRyZWUgcGFyZW50ICJcXGBsYW5ndWFnZVxcJyIpKSkpCisgICAgKGludGVybiAodHJlZXNp dC1ub2RlLXRleHQgbGFuZy1ub2RlIHQpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZm9udGlm eS1ub24tdHMtY29kZS1ibG9jayAobm9kZSBvdmVycmlkZSBzdGFydCBlbmQgJnJlc3QgXykKKyAg IkZvbnRpZnkgY29kZV9mZW5jZV9jb250ZW50IE5PREUgdXNpbmcgYSBub24tdHJlZS1zaXR0ZXIg bW9kZS4KK0FwcGx5IHRoZSBjb2RlLWJsb2NrIG1vZGUncyBjb252ZW50aW9uYWwgZm9udC1sb2Nr IGluIGEgdGVtcG9yYXJ5CitidWZmZXIuICBPVkVSUklERSwgU1RBUlQsIGFuZCBFTkQgYXJlIHBh c3NlZCB0aHJvdWdoIHRvCitgdHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUnLgorCitOT0RF IHNob3VsZCBhbHJlYWR5IGhhdmUgcGFzc2VkIHRocm91Z2gKK2BtYXJrZG93bi10cy0tY29kZS1i bG9jay10cy1sYW5ndWFnZScgd2hpY2ggbWF5IGhhdmUgY2xhc3NpZmllZCB0aGlzCitub2RlIGFz IGEgbm9uLXRzIG1vZGUuIgorICAod2hlbi1sZXQqICgobGFuZyAobWFya2Rvd24tdHMtLWxhbmd1 YWdlLWF0LW5vZGUgbm9kZSkpCisgICAgICAgICAgICAgIChtb2RlIChhbGlzdC1nZXQgbGFuZyBt YXJrZG93bi10cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpKQorICAgICAgICAgICAgICAoYmxv Y2stc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkKKyAgICAgICAgICAgICAgKGNvbnRl bnQgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUgdCkpKQorICAgICh3aGVuICg+IChsZW5ndGggY29u dGVudCkgMCkKKyAgICAgIChsZXQgKChwcm9wcworICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVm ZmVyCisgICAgICAgICAgICAgICAoaW5zZXJ0IGNvbnRlbnQpCisgICAgICAgICAgICAgICAoZGVs YXktbW9kZS1ob29rcyAoZnVuY2FsbCBtb2RlKSkKKyAgICAgICAgICAgICAgIChmb250LWxvY2st ZW5zdXJlKQorICAgICAgICAgICAgICAgKGxldCAocmVzdWx0IChwb3MgKHBvaW50LW1pbikpKQor ICAgICAgICAgICAgICAgICAod2hpbGUgKDwgcG9zIChwb2ludC1tYXgpKQorICAgICAgICAgICAg ICAgICAgIChsZXQqICgobmV4dCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgJ2ZhY2UgbmlsIChwb2ludC1tYXgpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZhY2UgKGdldC10ZXh0LXByb3BlcnR5IHBvcyAnZmFj ZSkpKQorICAgICAgICAgICAgICAgICAgICAgKHdoZW4gZmFjZQorICAgICAgICAgICAgICAgICAg ICAgICAocHVzaCAobGlzdCAoMS0gcG9zKSAoMS0gbmV4dCkgZmFjZSkgcmVzdWx0KSkKKyAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHBvcyBuZXh0KSkpCisgICAgICAgICAgICAgICAgIChucmV2 ZXJzZSByZXN1bHQpKSkpKQorICAgICAgICAoZG9saXN0IChyYW5nZSBwcm9wcykKKyAgICAgICAg ICAodHJlZXNpdC1mb250aWZ5LXdpdGgtb3ZlcnJpZGUKKyAgICAgICAgICAgKCsgYmxvY2stc3Rh cnQgKG50aCAwIHJhbmdlKSkKKyAgICAgICAgICAgKCsgYmxvY2stc3RhcnQgKG50aCAxIHJhbmdl KSkKKyAgICAgICAgICAgKG50aCAyIHJhbmdlKQorICAgICAgICAgICBvdmVycmlkZSBzdGFydCBl bmQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1vZGUg KGxhbmcpCisgICJDb21wdXRlIGFuZCBjYWNoZSBhIG1vZGUgc3ltYm9sIGZyb20gTEFORywgYSBz eW1ib2wuCitDb25zdWx0IHRoZSBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tYXAnIGNhY2hlLCBv ciBwcm9iZSBtb2RlIG5hbWVzLgorUmV0dXJuIGEgdmFsaWQgbW9kZSBzeW1ib2wgb3IgbmlsLiIK KyAgKGlmLWxldCogKChtYXBwZWQtbW9kZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtY29k ZS1ibG9jay1tb2RlcykpKQorICAgICAgbWFwcGVkLW1vZGUKKyAgICAobGV0ICgobGFuZy1zdHJp bmcgKHN5bWJvbC1uYW1lIGxhbmcpKSkKKyAgICAgIChjYXRjaCA6bW9kZQorICAgICAgICAoZG9s aXN0IChtb2RlCisgICAgICAgICAgICAgICAgIChsaXN0CisgICAgICAgICAgICAgICAgICA7OyBU cnkgYSB0cmVlc2l0IG1vZGUgdXNpbmcgdGhlIHJhdyBzdHJpbmcuCisgICAgICAgICAgICAgICAg ICAoY29uY2F0IGxhbmctc3RyaW5nICItdHMtbW9kZSIpCisgICAgICAgICAgICAgICAgICA7OyBU cnkgYSBjb252ZW50aW9uYWwgbW9kZSB1c2luZyB0aGUgcmF3IHN0cmluZy4KKyAgICAgICAgICAg ICAgICAgIChjb25jYXQgbGFuZy1zdHJpbmcgIi1tb2RlIikKKyAgICAgICAgICAgICAgICAgIDs7 IFRyeSBhIHRyZWVzaXQgbW9kZSB1c2luZyB0aGUgZG93bmNhc2VkIHN0cmluZy4KKyAgICAgICAg ICAgICAgICAgIChjb25jYXQgKGRvd25jYXNlIGxhbmctc3RyaW5nKSAiLXRzLW1vZGUiKQorICAg ICAgICAgICAgICAgICAgOzsgVHJ5IGEgY29udmVudGlvbmFsIG1vZGUgdXNpbmcgdGhlIGRvd25j YXNlZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAoY29uY2F0IChkb3duY2FzZSBsYW5nLXN0 cmluZykgIi1tb2RlIikpKQorICAgICAgICAgIChzZXRxIG1vZGUgKGludGVybiBtb2RlKSkKKyAg ICAgICAgICAod2hlbiAoZmJvdW5kcCBtb2RlKQorICAgICAgICAgICAgKHB1c2ggKGNvbnMgbGFu ZyBtb2RlKSBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGVzKQorICAgICAgICAgICAgKHRocm93 IDptb2RlIG1vZGUpKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tY29kZS1ibG9jay10cy1s YW5ndWFnZSAobm9kZSkKICAgIkNvbnZlcnQgTk9ERSB0byBhIGxhbmd1YWdlIGZvciB0aGUgY29k ZSBibG9jay4iCi0gIChsZXQqICgobGFuZy1zdHJpbmcgKGFsaXN0LWdldCAodHJlZXNpdC1ub2Rl LXRleHQgbm9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duLXRz LS1jb2RlLWJsb2NrLWxhbmd1YWdlLW1hcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHRyZWVzaXQtbm9kZS10ZXh0IG5vZGUpIG5pbCAjJ2VxdWFsKSkKLSAgICAgICAgIChsYW5n IChpZiAoc3ltYm9scCBsYW5nLXN0cmluZykKLSAgICAgICAgICAgICAgICAgICBsYW5nLXN0cmlu ZwotICAgICAgICAgICAgICAgICAoaW50ZXJuIChkb3duY2FzZSBsYW5nLXN0cmluZykpKSkpCi0g ICAgOzsgRklYTUU6IEtpbmQgb2YgYSBoYWNrIGhlcmU6IHdlIHVzZSB0aGlzIGZ1bmN0aW9uIGFz IGEgaG9vayBmb3IKLSAgICA7OyBsb2FkaW5nIHVwIGNvbmZpZ3MgZm9yIHRoZSBsYW5ndWFnZSBm b3IgdGhlIGNvZGUgYmxvY2sgb24tZGVtYW5kLgotICAgIChsZXQgKChtb2RlIChhbGlzdC1nZXQg bGFuZyBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXNvdXJjZS1tb2RlLW1hcCkpKQotICAgICAgOzsg SWYgdGhlcmUncyBubyBzdXBwb3J0ZWQgbW9kZSBmb3IgdGhlIGxhbmd1YWdlLCByZXR1cm4gbmls LAotICAgICAgOzsgd2hpY2ggbWFrZXMgRW1hY3Mgc2tpcCB0aGUgY29kZSBibG9jay4KLSAgICAg IChpZiAobm90IChhbmQgbW9kZSAoZmJvdW5kcCBtb2RlKSkpCi0gICAgICAgICAgbmlsCi0gICAg ICAgIDs7IElmIHRoZXJlJ3MgYSBtYWpvciBtb2RlIGZvciB0aGUgbGFuZ3VhZ2UsIHNldCB1cCB0 aGUgY29uZmlnCi0gICAgICAgIDs7IGFuZCByZXR1cm4gdGhlIGxhbmd1YWdlLgotICAgICAgICAo d2hlbiAobm90IChtZW1xIGxhbmcgbWFya2Rvd24tdHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkK LSAgICAgICAgICAobWFya2Rvd24tdHMtLWFkZC1jb25maWctZm9yLW1vZGUgbGFuZyBtb2RlKQot ICAgICAgICAgIChwdXNoIGxhbmcgbWFya2Rvd24tdHMtLWNvbmZpZ3VyZWQtbGFuZ3VhZ2VzKSkK LSAgICAgICAgbGFuZykpKSkKKyAgKGxldCogKChsYW5nIChpbnRlcm4gKHRyZWVzaXQtbm9kZS10 ZXh0IG5vZGUpKSkKKyAgICAgICAgIChtb2RlIChtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5n dWFnZS1tb2RlIGxhbmcpKQorICAgICAgICAgKHRzLWxhbmd1YWdlIChhbGlzdC1nZXQgbGFuZyBt YXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpKQorICAgICAgICAgKG5vbi10cy1sYW5n dWFnZSAoYWxpc3QtZ2V0IGxhbmcgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVz KSkpCisgICAgKGNvbmQKKyAgICAgKChmYm91bmRwIG1vZGUpCisgICAgICAoY29uZAorICAgICAg IDs7IFJldHVybiBrbm93biB0cmVlc2l0IGxhbmd1YWdlLgorICAgICAgICh0cy1sYW5ndWFnZSB0 cy1sYW5ndWFnZSkKKyAgICAgICA7OyBSZXR1cm4gbmlsIGZvciBrbm93biBub24tdHJlZXNpdCBs YW5ndWFnZSBmb3IgZm9udC1sb2NrLgorICAgICAgIChub24tdHMtbGFuZ3VhZ2UgbmlsKQorICAg ICAgIDs7IE1hcmtkb3duIGl0c2VsZiBuZWVkcyB0d28gcGFyc2VycyAobWFya2Rvd24gKworICAg ICAgIDs7IG1hcmtkb3duLWlubGluZSksIHNvIHRyZWVzaXQgZW1iZWRkaW5nICh3aGljaCBjcmVh dGVzIG9ubHkKKyAgICAgICA7OyBvbmUpIGNhbm5vdCBmdWxseSBmb250aWZ5IGl0LiAgUm91dGUg dGhyb3VnaCB0aGUgbm9uLXRzCisgICAgICAgOzsgcGF0aCBzbyB0aGUgdGVtcCBidWZmZXIgcnVu cyB0aGUgZnVsbCBtb2RlIHdpdGggYm90aAorICAgICAgIDs7IHBhcnNlcnMuCisgICAgICAgKChl cSBtb2RlICdtYXJrZG93bi10cy1tb2RlKQorICAgICAgICAodW5sZXNzIChhc3NxIGxhbmcgbWFy a2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKQorICAgICAgICAgIChwdXNoIChjb25z IGxhbmcgbW9kZSkgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAg ICAgbmlsKQorICAgICAgICh0CisgICAgICAgIChsZXQqICgoY29uZmlndXJhdGlvbiAobWFya2Rv d24tdHMtLWhhcnZlc3QtbW9kZS10cmVlc2l0LWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb2RlKSkKKyAgICAgICAgICAgICAgICh0cy1sYW5ndWFnZSAocGxp c3QtZ2V0IGNvbmZpZ3VyYXRpb24gOmxhbmd1YWdlKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgKChhbmQgdHMtbGFuZ3VhZ2UKKyAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBjb25m aWd1cmF0aW9uIDpmb250LWxvY2spKQorICAgICAgICAgICAgKG1hcmtkb3duLXRzLS1jb25maWd1 cmUtY3VycmVudC1idWZmZXIgY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICh1bmxlc3MgKGFz c3EgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1sYW5ndWFnZXMpCisgICAgICAgICAgICAg IChwdXNoIChjb25zIGxhbmcgdHMtbGFuZ3VhZ2UpIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWxh bmd1YWdlcykpCisgICAgICAgICAgICB0cy1sYW5ndWFnZSkKKyAgICAgICAgICAgOzsgT3RoZXJ3 aXNlLCBjbGFzc2lmeSBtb2RlIGFzIG5vbi10cmVlLXNpdHRlci4KKyAgICAgICAgICAgKHQKKyAg ICAgICAgICAgICh1bmxlc3MgKGFzc3EgbGFuZyBtYXJrZG93bi10cy0tY29kZS1ibG9jay1ub24t dHMtbW9kZXMpCisgICAgICAgICAgICAgIChwdXNoIChjb25zIGxhbmcgbW9kZSkgbWFya2Rvd24t dHMtLWNvZGUtYmxvY2stbm9uLXRzLW1vZGVzKSkKKyAgICAgICAgICAgIG5pbCkpKSkpKQorICAg ICAodCBuaWwpKSkpCisKKzs7OyBDb2RlIGJsb2NrIG1pbm9yIG1vZGUgc3VwcG9ydCBhbmQgY29k ZS1ibG9jayBjb250ZXh0IGNvbW1hbmRzOgorCisoZGVmdmFyIG1hcmtkb3duLXRzLWNvZGUtYmxv Y2stY29tbWFuZHMgJyhpbmRlbnQtZm9yLXRhYi1jb21tYW5kCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbGVjdHJpYy1uZXdsaW5lLWFuZC1tYXliZS1pbmRlbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtZHdpbQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC1saW5lCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LW9yLXVuY29tbWVudC1y ZWdpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3du LXRzLS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm9nLWZpbGwtcmVpbmRlbnQtZGVmdW4pCisgICJDb21tYW5kcyB0 byBleGVjdXRlIGluIGEgY29kZS1ibG9jayBjb250ZXh0LgorU2VlIGBtYXJrZG93bi10cy0tcnVu LWNvbW1hbmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnZhciBtYXJrZG93bi10cy1jb2RlLWJs b2NrLXRoaW5nLWNvbW1hbmRzICcoeHJlZi1maW5kLWRlZmluaXRpb25zKQorICAiQ29tbWFuZHMg dGhhdCBuZWVkIGEgXCJ0aGluZ1wiIGF0IHBvaW50IGluIGEgY29kZS1ibG9jayBjb250ZXh0Lgor U2VlIGBtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jaycuIikKKworKGRlZnZh ciBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXJlZ2lvbi1jb21tYW5kcyAnKGNvbW1lbnQtb3ItdW5j b21tZW50LXJlZ2lvbikKKyAgIkNvbW1hbmRzIHRoYXQgbmVlZCBhIHJlZ2lvbiBpbiBhIGNvZGUt YmxvY2sgY29udGV4dC4KK1NlZSBgbWFya2Rvd24tdHMtLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxv Y2snLiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW5hYmxlLWNvZGUtYmxvY2stbW9kZSAoKQor ICAiRW5hYmxlIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUnIHdoZW4gaWYgYSBmZW5jZWQg Y29kZSBibG9jay4iCisgIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUgKGlmIChtYXJrZG93 bi10cy1jb2RlLWJsb2NrLWF0LXApIDEgLTEpKSkKKworOzsgTk9URTogRG8gbm90IGFkZCB0aGlz IGNvbW1hbmQgdG8gYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stY29tbWFuZHMnLgorKGRlZnVuIG1h cmtkb3duLXRzLS1jb2RlLWJsb2NrLW5ld2xpbmUgKCZvcHRpb25hbCBhcmcgaW50ZXJhY3RpdmUp CisgICAiSW5zZXJ0IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5l dyBsaW5lLgorV2l0aCBwcmVmaXggYXJndW1lbnQgQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xp bmVzLgorCitJZiBgZWxlY3RyaWMtaW5kZW50LW1vZGUnIGlzIGVuYWJsZWQsIHRoaXMgaW5kZW50 cyB0aGUgZmluYWwgbmV3IGxpbmUKK3RoYXQgaXQgYWRkcywgYW5kIHJlaW5kZW50cyB0aGUgcHJl Y2VkaW5nIGxpbmUuICBUbyBqdXN0IGluc2VydAorYSBuZXdsaW5lLCB1c2UgXFxbZWxlY3RyaWMt aW5kZW50LWp1c3QtbmV3bGluZV0uCisKK0lmIGBhdXRvLWZpbGwtbW9kZScgaXMgZW5hYmxlZCwg dGhpcyBtYXkgY2F1c2UgYXV0b21hdGljIGxpbmUKK2JyZWFraW5nIG9mIHRoZSBwcmVjZWRpbmcg bGluZS4gIEEgbm9uLW5pbCBBUkcgaW5oaWJpdHMgdGhpcy4KKworSWYgdmFyaWFibGUgYHVzZS1o YXJkLW5ld2xpbmVzJyBpcyBlbmFibGVkLCB0aGUgbmV3bGluZSBpcyBtYXJrZWQgd2l0aAordGhl IHRleHQtcHJvcGVydHkgYGhhcmQnLgorCitBIG5vbi1uaWwgSU5URVJBQ1RJVkUgYXJndW1lbnQg bWVhbnMgdG8gcnVuIHRoZSBgcG9zdC1zZWxmLWluc2VydC1ob29rJy4iCisgICAoaW50ZXJhY3Rp dmUgIipQXG5wIikKKyAgIChpZi1sZXQqICgoYmxvY2stbW9kZSAobWFya2Rvd24tdHMtY29kZS1i bG9jay1tb2RlLWF0KSkKKyAgICAgICAgICAgICAoKGZib3VuZHAgYmxvY2stbW9kZSkpKQorICAg ICAgIChtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9jayBibG9jay1tb2RlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMnbmV3bGluZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUpKSkK KworKGRlZnVuIG1hcmtkb3duLXRzLS1jb2RlLWJsb2NrLWZpbGwtcGFyYWdyYXBoICgmb3B0aW9u YWwganVzdGlmeSkKKyAgIlJlZmlsbCBvciByZWluZGVudCB0aGUgbWFya2Rvd24gY29udGVudCB0 aGF0IGNvbnRhaW5zIHBvaW50LgorSWYgdGhlIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yIGEgY29t bWVudCwgZmlsbCB0aGUgcGFyYWdyYXBoIHRoYXQKK2NvbnRhaW5zIHBvaW50IG9yIGZvbGxvd3Mg cG9pbnQuCisKK090aGVyd2lzZSwgcmVpbmRlbnQgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gdGhh dCBjb250YWlucyBwb2ludCBvcgorZm9sbG93cyBwb2ludC4KKworSWYgSlVTVElGWSBpcyBub24t bmlsIChpbnRlcmFjdGl2ZWx5LCB3aXRoIHByZWZpeCBhcmd1bWVudCksIGp1c3RpZnkgYXMKK3dl bGwuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAoY29uZCAoKGRlcml2ZWQtbW9kZS1wICdwcm9n LW1vZGUpCisgICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMncHJvZy1maWxsLXJlaW5kZW50 LWRlZnVuIGp1c3RpZnkpKQorICAgICAgICAodAorICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVs eSAjJ2ZpbGwtcGFyYWdyYXBoIGp1c3RpZnkpKSkpCisKKzs7IE5PVEU6IERvIG5vdCBhZGQgdGhp cyBjb21tYW5kIHRvIGBtYXJrZG93bi10cy1jb2RlLWJsb2NrLWNvbW1hbmRzJy4KKyhkZWZ1biBt YXJrZG93bi10cy0tY29kZS1ibG9jay14cmVmLWZpbmQtZGVmaW5pdGlvbnMgKCZyZXN0IGFyZ3Mp CisgICJIZWxwZXIgY29tbWFuZCBmb3IgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaW4gYSBjb2Rl LWJsb2NrIGNvbnRleHQuCitGaW5kIHRoaW5nIGF0IHBvaW50LgorQWRqdXN0IHRoZSByZWZlcmVu Y2VzIG9uIHRoZSB4cmVmIHN0YWNrIHRvIHRoZSBiYXNlIGJ1ZmZlci4KK1Bhc3MgdGhyb3VnaCBB UkdTIGlmIG5vdCBpbiBhIGNvZGUgYmxvY2sgd2l0aCBhbiBhdmFpbGFibGUgbW9kZS4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKGlmLWxldCogKChibG9jay1tb2RlIChtYXJrZG93bi10cy1jb2RlLWJs b2NrLW1vZGUtYXQpKQorICAgICAgICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAg IChjb25kaXRpb24tY2FzZSBlcnIKKyAgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAg ICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgOzsgUmVjb3JkIGEgcGxhY2Vob2xkZXIgeHJl ZiBtYXJrZXIgaW4gdGhlIGJhc2UgYnVmZmVyLiAgVGhpcworICAgICAgICAgICAgICAgIDs7IHdp bGwgYmUgcmV0YWluZWQgaWYgdGhlIGNvbW1hbmQgc3VjY2VlZHMgdG8gcHVzaCBhIG1hcmtlciBp bgorICAgICAgICAgICAgICAgIDs7IHRoZSBpbmRpcmVjdCBidWZmZXIgd2hpY2ggd2Ugd2lsbCBw b3AuCisgICAgICAgICAgICAgICAgKHhyZWYtcHVzaC1tYXJrZXItc3RhY2spCisgICAgICAgICAg ICAgICAgOzsgYHhyZWYtZmluZC1kZWZpbml0aW9ucycgaXMgYSB0aGluZyBjb21tYW5kIGluCisg ICAgICAgICAgICAgICAgOzsgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stdGhpbmctY29tbWFuZHMn LgorICAgICAgICAgICAgICAgIChtYXJrZG93bi10cy0tcnVuLWNvbW1hbmQtaW4tY29kZS1ibG9j ayBibG9jay1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMneHJlZi1maW5kLWRlZmluaXRpb25zCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MpKQorICAgICAgICAgICAg OzsgUG9wIHRoZSB0b3AgeHJlZiBtYXJrZXIuICBJZiB0aGUgY29tbWFuZCBzdWNjZWVkZWQsIHRo ZQorICAgICAgICAgICAgOzsgdG9wIG1hcmtlciB3aWxsIGJlIHRoZSBpbmRpcmVjdCBidWZmZXIg bWFya2VyLiAgSWYgaXQKKyAgICAgICAgICAgIDs7IGZhaWxlZCwgd2UnbGwgcG9wIHRoZSBwbGFj ZWhvbGRlciB3aGljaCBpcyBub3cgb2Ygbm8KKyAgICAgICAgICAgIDs7IHZhbHVlPAorICAgICAg ICAgICAgOzsgVE9ETzogUHJvcG9zZSBhbiBgeHJlZicgcG9wIGZ1bmN0aW9uIHRoYXQgZG9lc24n dCAiZ28KKyAgICAgICAgICAgIDs7IGJhY2siLgorICAgICAgICAgICAgKGxldCAoKGhpc3Rvcnkg KHhyZWYtLWdldC1oaXN0b3J5KSkpCisgICAgICAgICAgICAgICh1bmxlc3MgKG51bGwgKGNhciBo aXN0b3J5KSkKKyAgICAgICAgICAgICAgICAocG9wIChjYXIgaGlzdG9yeSkpKSkpCisgICAgICAg IChlcnJvcgorICAgICAgICAgOzsgUHJvcGFnYXRlIHRoZSBzaWduYWwuCisgICAgICAgICAoc2ln bmFsIChjYXIgZXJyKSAoY2RyIGVycikpKSkKKyAgICA7OyBOb3QgaW4gYSBjb2RlIGJsb2NrIGNv bnRleHQuICBUaGlzIHNob3VsZCByZWFsbHkgbmV2ZXIgaGFwcGVuLgorICAgIChmdW5jYWxsLWlu dGVyYWN0aXZlbHkgIyd4cmVmLWZpbmQtZGVmaW5pdGlvbnMgYXJncykpKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2sgKCkKKyAgIkhlbHBlciBm dW5jdGlvbiB0byB3cmFwIGEgY29tbWFuZCBmb3IgYSBjb2RlLWJsb2NrIGNvbnRleHQuCitJZiBg dGhpcy1jb21tYW5kJyBpcyBhIG1lbWJlciBvZiBgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb21t YW5kcycgYW5kCitwb2ludCBpcyB3aXRoaW4gYSBjb2RlIGJsb2NrIHdpdGggYW4gYXZhaWxhYmxl IG1vZGUsIGl0IHdpbGwgcnVuIGluIHRoYXQKK2NvZGUgYmxvY2sncyBtb2RlIGluIGEgYnVmZmVy IG5hcnJvd2VkIHRvIGl0cyBjb250ZW50LiAgT3RoZXJ3aXNlLCB0aGUKK2NvbW1hbmQgd2lsbCBy dW4gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBtYXJrZG93bi10cy1tb2RlJyBidWZmZXIuIgorICAo d2hlbiAobWVtcSB0aGlzLWNvbW1hbmQgbWFya2Rvd24tdHMtY29kZS1ibG9jay1jb21tYW5kcykK KyAgICAod2hlbi1sZXQqICgoY29tbWFuZCB0aGlzLWNvbW1hbmQpCisgICAgICAgICAgICAgICAg KGJsb2NrLW1vZGUgKG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZS1hdCkpCisgICAgICAgICAg ICAgICAgKChmYm91bmRwIGJsb2NrLW1vZGUpKSkKKyAgICAgIChzZXRxIHRoaXMtY29tbWFuZCAo bGFtYmRhICgmcmVzdCBhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVyYWN0 aXZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5ICMnbWFya2Rvd24tdHMtLXJ1 bi1jb21tYW5kLWluLWNvZGUtYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBibG9jay1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MpKSkpKSkKKworKGRlZnVuIG1h cmtkb3duLXRzLS1ydW4tY29tbWFuZC1pbi1jb2RlLWJsb2NrIChibG9jay1tb2RlIGNvbW1hbmQg JnJlc3QgYXJncykKKyAgIlJ1biBDT01NQU5EIGluIEJMT0NLLU1PREUuCitBUkdTIGFyZSBjYXB0 dXJlZCBieSBgbWFya2Rvd24tdHMtLW1heWJlLXJ1bi1jb21tYW5kLWluLWNvZGUtYmxvY2snLiIK KyAgKHdoZW4tbGV0KiAoKGJlZyAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnbWFya2Rvd24t dHMtY29kZS1iZWctbWFya2VyKSkKKyAgICAgICAgICAgICAgKGVuZCAoZ2V0LWNoYXItcHJvcGVy dHkgKHBvaW50KSAnbWFya2Rvd24tdHMtY29kZS1lbmQtbWFya2VyKSkpCisgICAgKGxldCAoKHJl Z2lvbi1iZWcgKHVzZS1yZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAocmVnaW9uLWVuZCAo dXNlLXJlZ2lvbi1lbmQpKSkKKyAgICAgIDs7IFVzZSBhIG5vbi1jbG9uZWQgaW5kaXJlY3QgYnVm ZmVyIHRvIGF2b2lkIGNoYW5naW5nIG1ham9yIG1vZGUKKyAgICAgIDs7IGluIHRoZSBwYXJlbnQg YnVmZmVyICh3aGljaCB3b3VsZCB0cmFzaCBsb2NhbCB2YXJpYWJsZXMpLiAgVGhpcworICAgICAg OzsgYWxzbyBlbnN1cmVzIHRyZWVzaXQgc2V0dXAgaXMgbm90IGNvcGllZCBvdmVyIG9yIGl0IGdl dHMKKyAgICAgIDs7IGNvbmZ1c2VkLgorICAgICAgKGxldCAoKGluZGlyZWN0LWJ1ZmZlciAobWFr ZS1pbmRpcmVjdC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50 LWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmF0ZS1uZXctYnVm ZmVyLW5hbWUgKGJ1ZmZlci1uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5p bCAnaW5oaWJpdC1idWZmZXItaG9va3MpKQorICAgICAgICAgICAgKGluZGlyZWN0LWRlYWN0aXZh dGUtbWFyaykKKyAgICAgICAgICAgIChwb2ludC1kZWx0YSAwKSkKKyAgICAgICAgKHVud2luZC1w cm90ZWN0CisgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBpbmRpcmVjdC1idWZmZXIK KyAgICAgICAgICAgICAgOzsgQ29weSB0aGUgYmFzZSBidWZmZXIncyByZWdpb24sIGlmIHRoZXJl IGlzIG9uZS4KKyAgICAgICAgICAgICAgKHdoZW4gKGFuZCByZWdpb24tYmVnIHJlZ2lvbi1lbmQp CisgICAgICAgICAgICAgICAgKHNldC1tYXJrIChpZiAoPCAocG9pbnQpIHJlZ2lvbi1lbmQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tZW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVnaW9uLWJlZykpCisgICAgICAgICAgICAgICAgKGFjdGl2YXRlLW1hcmsp KQorICAgICAgICAgICAgICAoZGVsYXktbW9kZS1ob29rcworICAgICAgICAgICAgICAgIChmdW5j YWxsIGJsb2NrLW1vZGUpCisgICAgICAgICAgICAgICAgKHJlYWQtb25seS1tb2RlIC0xKQorICAg ICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpCisgICAgICAgICAgICAgICAg KGxldCAoKHBvaW50IChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtl ciAocG9pbnQtbWFya2VyKSkpCisgICAgICAgICAgICAgICAgICAgIChjb25kCisgICAgICAgICAg ICAgICAgICAgICAoKG1lbXEgY29tbWFuZCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXRoaW5nLWNv bW1hbmRzKQorICAgICAgICAgICAgICAgICAgICAgICh3aGVuLWxldCogKCh0aGluZyAodGhpbmct YXQtcG9pbnQgJ3N5bWJvbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kIHRoaW5nKSkpCisgICAgICAgICAgICAgICAgICAgICAoKG1lbXEg Y29tbWFuZCBtYXJrZG93bi10cy1jb2RlLWJsb2NrLXJlZ2lvbi1jb21tYW5kcykKKyAgICAgICAg ICAgICAgICAgICAgICAod2hlbiAoYW5kIHJlZ2lvbi1iZWcgcmVnaW9uLWVuZCkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChhcHBseSAjJ2Z1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLWJlZyByZWdpb24tZW5kIGFyZ3Mp KSkKKyAgICAgICAgICAgICAgICAgICAgICgoemVyb3AgKGNkciAoZnVuYy1hcml0eSBjb21tYW5k KSkpCisgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k KSkKKyAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgKGNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kKSkpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIGluZGly ZWN0LWRlYWN0aXZhdGUtbWFyayBkZWFjdGl2YXRlLW1hcmspCisgICAgICAgICAgICAgICAgICAg IDs7IFRoZSBoZXVyaXN0aWMgb2Ygd2hlbiB0byBtb3ZlIHBvaW50LgorICAgICAgICAgICAgICAg ICAgICA7OyBkZWFjdGl2YXRlLW1hcmsgcChkKT1wbShkKSBkZWx0YQorICAgICAgICAgICAgICAg ICAgICA7OyBuaWwgICAgICAgICAgICAgbm8gICAgICAgICAwICAgOyBjbGFzcyBBCisgICAgICAg ICAgICAgICAgICAgIDs7IG5pbCAgICAgICAgICAgICB5ZXMgICAgICAgIHllcyA7IGNsYXNzIEIK KyAgICAgICAgICAgICAgICAgICAgOzsgdCAgICAgICAgICAgICAgIG5vICAgICAgICAgMCAgIDsg Y2xhc3MgQworICAgICAgICAgICAgICAgICAgICA7OyB0ICAgICAgICAgICAgICAgeWVzICAgICAg ICB5ZXMgOyBjbGFzcyBECisgICAgICAgICAgICAgICAgICAgIDs7IEE6IG5pbAorICAgICAgICAg ICAgICAgICAgICA7OyBCOiBpbmRlbnQtZm9yLXRhYi1jb21tYW5kCisgICAgICAgICAgICAgICAg ICAgIDs7IEM6IGNvbW1lbnQtb3ItdW5jb21tZW50LXJlZ2lvbgorICAgICAgICAgICAgICAgICAg ICA7OyBEOiBjb21tZW50LWR3aW0gbmV3bGluZSBlbGVjdHJpYy1uZXdsaW5lLWFuZC1tYXliZS1p bmRlbnQKKyAgICAgICAgICAgICAgICAgICAgOzsgICAgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2st ZmlsbC1wYXJhZ3JhcGgKKyAgICAgICAgICAgICAgICAgIChzZXRxIHBvaW50LWRlbHRhICgtIChw b2ludCkgcG9pbnQpKQorICAgICAgICAgICAgICAgICAgKHdoZW4gKG5vdCAoZXEgcG9pbnQtZGVs dGEgKC0gKHBvaW50LW1hcmtlcikgcG9pbnQtbWFya2VyKSkpCisgICAgICAgICAgICAgICAgICAg IChzZXRxIHBvaW50LWRlbHRhIDApKSkpKQorICAgICAgICAgIChraWxsLWJ1ZmZlciBpbmRpcmVj dC1idWZmZXIpCisgICAgICAgICAgOzsgUHJvcGFnYXRlIG1hcmsgZGVhY3RpdmF0aW9uIHRvIHRo ZSBiYXNlIGJ1ZmZlci4KKyAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgaW5kaXJlY3Qt ZGVhY3RpdmF0ZS1tYXJrKQorICAgICAgICAgIDs7IE1vdmUgYmFzZSBidWZmZXIgcG9pbnQgaWYg aXQgbW92ZWQgaW4gdGhlIGluZGlyZWN0IGJ1ZmZlci4KKyAgICAgICAgICAoZ290by1jaGFyICgr IChwb2ludCkgcG9pbnQtZGVsdGEpKQorICAgICAgICAgIDs7IFJlY29yZCB0aGUgb3JpZ2luYWwg Y29tbWFuZC4KKyAgICAgICAgICAoc2V0cSB0aGlzLWNvbW1hbmQgY29tbWFuZCkKKyAgICAgICAg ICA7OyBNYWtlIHN1cmUgdGhlIG9yaWdpbmF0aW5nIHJlZ2lvbiBpcyByZWZvbnRpZmllZC4KKyAg ICAgICAgICAoZm9udC1sb2NrLWZsdXNoIGJlZyBlbmQpKSkpKSkKKworKGRlZnVuIG1hcmtkb3du LXRzLS1maW5kLWNvZGUtYmxvY2stZGVsaW1pdGVyIChwb3MgJm9wdGlvbmFsIGJhY2t3YXJkKQor ICAiUmV0dXJuIHRoZSBuZXh0IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRl ciBub2RlLCBvciBuaWwuCitTZWFyY2ggc3RhcnRpbmcgYXQgUE9TLgorU2VhcmNoIGJhY2t3YXJk IGlmIEJBQ0tXQVJEIGlzIG5vbi1uaWwuIgorICAodHJlZXNpdC1zZWFyY2gtZm9yd2FyZCAodHJl ZXNpdC1ub2RlLWF0IHBvcyAnbWFya2Rvd24pCisgICAgICAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0gKHRyZWVz aXQtbm9kZS10eXBlIG5vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciIpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICBiYWNrd2FyZCkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZmluZC1uZXh0LWNvZGUtYmxvY2st ZGVsaW1pdGVyICgmb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwb3MgYmFja3dhcmQgcmVtYWluKQorICAiUmV0dXJuIHRoZSBuZXh0 IG9yIHByZXZpb3VzIGZlbmNlZF9jb2RlX2Jsb2NrX2RlbGltaXRlciBub2RlLCBvciBuaWwuCitT ZWFyY2ggc3RhcnRpbmcgYXQgUE9TIG9yIGBwb2ludCcsIGlmIFBPUyBpcyBuaWwuCitTZWFyY2gg YmFja3dhcmQgaWYgQkFDS1dBUkQgaXMgbm9uLW5pbC4KK0lmIFJFTUFJTiBpcyBub24tbmlsLCBt b3ZlIHRvIHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBjdXJyZW50IGNvZGUKK2Jsb2NrLCBpZiBp biBvbmUuIgorICAoc2V0cSBwb3MgKG9yIHBvcyAocG9pbnQpKSkKKyAgKGFuZC1sZXQqICgobm9k ZSAobWFya2Rvd24tdHMtLWZpbmQtY29kZS1ibG9jay1kZWxpbWl0ZXIgcG9zIGJhY2t3YXJkKSkp CisgICAgKGxldCAoKGluLWJsb2NrIChtYXJrZG93bi10cy1jb2RlLWJsb2NrLWF0LXAgcG9zKSkp CisgICAgICAoY29uZAorICAgICAgICgoYW5kIHJlbWFpbiBpbi1ibG9jaykKKyAgICAgICAgbm9k ZSkKKyAgICAgICAocmVtYWluCisgICAgICAgIG5pbCkKKyAgICAgICAodAorICAgICAgICAod2hp bGUgKGFuZCBub2RlCisgICAgICAgICAgICAgICAgICAgIDs7IElmIGJhY2t3YXJkLCBza2lwIHRo ZSBjdXJyZW50IGJsb2NrJ3MKKyAgICAgICAgICAgICAgICAgICAgOzsgc3RhcnRpbmcgZGVsaW1p dGVyLgorICAgICAgICAgICAgICAgICAgICAob3IgKGFuZCBiYWNrd2FyZCBpbi1ibG9jayAodHJl ZXNpdC1ub2RlLW5leHQtc2libGluZyBub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChu b3QgKHRyZWVzaXQtbm9kZS1uZXh0LXNpYmxpbmcgbm9kZSkpKSkKKyAgICAgICAgICAoc2V0cSBp bi1ibG9jayAobWFya2Rvd24tdHMtY29kZS1ibG9jay1hdC1wIHBvcykpCisgICAgICAgICAgKHNl dHEgcG9zIChpZiBiYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgKHRyZWVzaXQtbm9k ZS1zdGFydCBub2RlKQorICAgICAgICAgICAgICAgICAgICAgICh0cmVlc2l0LW5vZGUtZW5kIG5v ZGUpKSkKKyAgICAgICAgICAoc2V0cSBub2RlIChtYXJrZG93bi10cy0tZmluZC1jb2RlLWJsb2Nr LWRlbGltaXRlciBwb3MgYmFja3dhcmQpKSkKKyAgICAgICAgbm9kZSkpKSkpCisKKyhkZWZ1biBt YXJrZG93bi10cy1tb3ZlLXRvLW5leHQtY29kZS1ibG9jayAoYXJnKQorICAiTW92ZSBwb2ludCB0 byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29kZSBibG9jay4KK1dpdGggdGhlIHByZWZpeCBhcmd1 bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jay4iCisgIChpbnRl cmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2RlCisgICAgICAgICAgICAgICAobWFya2Rv d24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRlciBuaWwgbmlsIGFyZykpKQorICAg IChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkpKQorCisoZGVmdW4gbWFya2Rv d24tdHMtbW92ZS10by1wcmV2aW91cy1jb2RlLWJsb2NrIChhcmcpCisgICJNb3ZlIHBvaW50IHRv IHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29kZSBibG9jay4KK1dpdGggdGhlIHByZWZpeCBh cmd1bWVudCBBUkcsIHJlbWFpbiB3aXRoaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jay4iCisgIChp bnRlcmFjdGl2ZSAiUCIpCisgICh3aGVuLWxldCogKChub2RlCisgICAgICAgICAgICAgICAobWFy a2Rvd24tdHMtLWZpbmQtbmV4dC1jb2RlLWJsb2NrLWRlbGltaXRlciBuaWwgJ2JhY2t3YXJkIGFy ZykpKQorICAgIChnb3RvLWNoYXIgKHRyZWVzaXQtbm9kZS1zdGFydCBub2RlKSkpKQorCis7Ozsg SGVscGVyczoKKworKGRlZnVuIG1hcmtkb3duLXRzLS1vdXRsaW5lLWludmlzaWJsZS1wIChwb3Mp CisgICJSZXR1cm4gbm9uLW5pbCBpZiBQT1MgaXMgaW5zaWRlIGFuIG91dGxpbmUtZm9sZGVkIHJl Z2lvbi4iCisgIChjbC1zb21lIChsYW1iZGEgKG92KSAoZXEgKG92ZXJsYXktZ2V0IG92ICdpbnZp c2libGUpICdvdXRsaW5lKSkKKyAgICAgICAgICAgKG92ZXJsYXlzLWF0IHBvcykpKQogCiAoZGVm dW4gbWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzICgpCiAgICJSZXR1cm4gcmFuZ2Ugc2V0dGlu Z3MgZm9yIGBtYXJrZG93bi10cy1tb2RlJy4iCiAgICh0cmVlc2l0LXJhbmdlLXJ1bGVzCiAgICA6 ZW1iZWQgJ21hcmtkb3duLWlubGluZQogICAgOmhvc3QgJ21hcmtkb3duCi0gICA6cmFuZ2UtZm4g Iyd0cmVlc2l0LXJhbmdlLWZuLWV4Y2x1ZGUtY2hpbGRyZW4KICAgICcoKGlubGluZSkgQG1hcmtk b3duLWlubGluZSkKIAotICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvbnZlcnQtY29kZS1ibG9j ay1sYW5ndWFnZQorICAgOmVtYmVkICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stdHMtbGFuZ3Vh Z2UKICAgIDpob3N0ICdtYXJrZG93bgogICAgOmxvY2FsIHQKICAgICcoKGZlbmNlZF9jb2RlX2Js b2NrIChpbmZvX3N0cmluZyAobGFuZ3VhZ2UpIEBsYW5ndWFnZSkKICAgICAgICAgICAgICAgICAg ICAgICAgIChjb2RlX2ZlbmNlX2NvbnRlbnQpIEBjb250ZW50KSkpKQogCisoZGVmdW4gbWFya2Rv d24tdHMtLXJlbW92ZS1pbWFnZS1vdmVybGF5cyAoKQorICAiUmVtb3ZlIGFsbCBpbmxpbmUgaW1h Z2Ugb3ZlcmxheXMgZnJvbSB0aGUgY3VycmVudCBidWZmZXIuIgorICAoZG9saXN0IChvdiAob3Zl cmxheXMtaW4gKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAgICh3aGVuIChvdmVybGF5LWdl dCBvdiAnbWFya2Rvd24tdHMtaW1hZ2UpCisgICAgICAoZGVsZXRlLW92ZXJsYXkgb3YpKSkpCisK KyhkZWZ1biBtYXJrZG93bi10cy0tb3V0bGluZS12aWV3LWNoYW5nZSAoKQorICAiVXBkYXRlIGlt YWdlIG92ZXJsYXlzIGFmdGVyIG91dGxpbmUgZm9sZC91bmZvbGQuCitSZW1vdmVzIGltYWdlIG92 ZXJsYXlzIGluIGZvbGRlZCByZWdpb25zIGFuZCB0cmlnZ2VycworcmVmb250aWZpY2F0aW9uIHNv IHRoYXQgaW1hZ2VzIGluIHVuZm9sZGVkIHJlZ2lvbnMgYXJlIHJlY3JlYXRlZC4iCisgICh3aGVu IG1hcmtkb3duLXRzLWlubGluZS1pbWFnZXMKKyAgICAobWFya2Rvd24tdHMtLXJlbW92ZS1pbWFn ZS1vdmVybGF5cykKKyAgICAoZm9udC1sb2NrLWZsdXNoKSkpCisKIChkZWZ1biBtYXJrZG93bi10 cy0tc2V0LWhpZGUtbWFya3VwICh2YWx1ZSkKICAgIlNldCBoaWRpbmcgb2YgTWFya2Rvd24gbWFy a3VwIGRlbGltaXRlcnMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgogVkFMVUUgbm9uLW5pbCBoaWRl cyBtYXJrdXAsIG5pbCBzaG93cyBpdC4iCiAgIChpZiB2YWx1ZQogICAgICAgKGFkZC10by1pbnZp c2liaWxpdHktc3BlYyAnbWFya2Rvd24tdHMtLW1hcmt1cCkKICAgICAocmVtb3ZlLWZyb20taW52 aXNpYmlsaXR5LXNwZWMgJ21hcmtkb3duLXRzLS1tYXJrdXApKQorICAod2hlbiBtYXJrZG93bi10 cy1pbmxpbmUtaW1hZ2VzCisgICAgKG1hcmtkb3duLXRzLS1yZW1vdmUtaW1hZ2Utb3ZlcmxheXMp KQogICAoZm9udC1sb2NrLWZsdXNoKSkKIAogKGRlZnVuIG1hcmtkb3duLXRzLXRvZ2dsZS1oaWRl LW1hcmt1cCAoKQpAQCAtMzU2LDE1ICsyMzEzLDIzMCBAQCBtYXJrZG93bi10cy10b2dnbGUtaGlk ZS1tYXJrdXAKICAgKHNldHEgbWFya2Rvd24tdHMtaGlkZS1tYXJrdXAgKG5vdCBtYXJrZG93bi10 cy1oaWRlLW1hcmt1cCkpCiAgIChtYXJrZG93bi10cy0tc2V0LWhpZGUtbWFya3VwIG1hcmtkb3du LXRzLWhpZGUtbWFya3VwKSkKIAorKGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtaW5saW5lLWltYWdl cyAodmFsdWUpCisgICJTZXQgZGlzcGxheSBvZiBpbmxpbmUgaW1hZ2VzIGluIHRoZSBjdXJyZW50 IGJ1ZmZlci4KK1ZBTFVFIG5vbi1uaWwgZGlzcGxheXMgaW1hZ2VzLCBuaWwgcmVtb3ZlcyB0aGVt LiIKKyAgKGlmIHZhbHVlCisgICAgICAodHJlZXNpdC1mb250LWxvY2stcmVjb21wdXRlLWZlYXR1 cmVzICcoaW1hZ2UtcHJldmlldykpCisgICAgKHRyZWVzaXQtZm9udC1sb2NrLXJlY29tcHV0ZS1m ZWF0dXJlcyBuaWwgJyhpbWFnZS1wcmV2aWV3KSkpCisgIChtYXJrZG93bi10cy0tcmVtb3ZlLWlt YWdlLW92ZXJsYXlzKQorICAoZm9udC1sb2NrLWZsdXNoKSkKIAotOzs7IE1ham9yIG1vZGUKLQot KGRlZnVuIG1hcmtkb3duLXRzLXNldHVwICgpCi0gICJTZXR1cCB0cmVlc2l0IGZvciBgbWFya2Rv d24tdHMtbW9kZScuIgotICAobWFrZS1sb2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1t YXJrdXApCisoZGVmdW4gbWFya2Rvd24tdHMtdG9nZ2xlLWlubGluZS1pbWFnZXMgKCkKKyAgIlRv Z2dsZSBkaXNwbGF5IG9mIGlubGluZSBpbWFnZXMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiIKKyAg KGludGVyYWN0aXZlKQorICAoc2V0cSBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzIChub3QgbWFy a2Rvd24tdHMtaW5saW5lLWltYWdlcykpCisgIChtYXJrZG93bi10cy0tc2V0LWlubGluZS1pbWFn ZXMgbWFya2Rvd24tdHMtaW5saW5lLWltYWdlcykKKyAgKG1lc3NhZ2UgIklubGluZSBpbWFnZXMg JXMiIChpZiBtYXJrZG93bi10cy1pbmxpbmUtaW1hZ2VzICJlbmFibGVkIiAiZGlzYWJsZWQiKSkp CisKKzs7OyBFbXBoYXNpczoKKworKGRlZnZhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdAor ICAnKCg/YiAuICIqKiIpCisgICAgKD9CIC4gIl9fIikKKyAgICAoP2kgLiAiKiIpCisgICAgKD9J IC4gIl8iKQorICAgICg/cyAuICJ+fiIpCisgICAgKD9jIC4gImAiKQorICAgICg/YSAuICIqKioi KSkKKyAgIkFsaXN0IG9mIGVtcGhhc2lzIG1hcmtlcnMgZm9yIGBtYXJrZG93bi10cy1lbXBoYXNp emUnLgorRWFjaCBlbnRyeSBpcyAoS0VZIC4gTUFSS0VSKSB3aGVyZSBLRVkgaXMgYSBjaGFyYWN0 ZXIgKG5vdCBhIHN0cmluZykgYW5kCitNQVJLRVIgaXMgdGhlIE1hcmtkb3duIGVtcGhhc2l6ZWQg dGV4dCBwcmVmaXgvc3VmZml4LiIpCisKKyhkZWZ1biBtYXJrZG93bi10cy0tZW1waGFzaXMtbm9k ZS1hdC1wb2ludCAoKQorICAiUmV0dXJuIHRoZSBlbXBoYXNpcyBub2RlIGF0IHBvaW50LCBvciBu aWwuCitGaW5kcyB0aGUgaW5uZXJtb3N0IGBlbXBoYXNpcycsIGBzdHJvbmdfZW1waGFzaXMnLAor YHN0cmlrZXRocm91Z2gnLCBvciBgY29kZV9zcGFuJyBub2RlLiIKKyAgKHdoZW4tbGV0KiAoKG5v ZGUgKHRyZWVzaXQtbm9kZS1hdCAocG9pbnQpICdtYXJrZG93bi1pbmxpbmUpKSkKKyAgICAodHJl ZXNpdC1wYXJlbnQtdW50aWwKKyAgICAgbm9kZSAobGFtYmRhIChuKQorICAgICAgICAgICAgKG1l bWJlciAodHJlZXNpdC1ub2RlLXR5cGUgbikKKyAgICAgICAgICAgICAgICAgICAgJygiZW1waGFz aXMiICJzdHJvbmdfZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgInN0cmlrZXRocm91 Z2giICJjb2RlX3NwYW4iKSkpKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy1yZW1vdmUtZW1waGFz aXMgKCkKKyAgIlJlbW92ZSBlbXBoYXNpcyBhcm91bmQgcG9pbnQgb3IgcmVnaW9uLgorV2l0aCBh biBhY3RpdmUgcmVnaW9uLCBzdHJpcCB0aGUgb3V0ZXJtb3N0IGVtcGhhc2lzIG1hcmtlcnMgZnJv bQordGhlIHNlbGVjdGVkIHRleHQuICBXaXRob3V0IGEgcmVnaW9uLCBmaW5kIHRoZSBlbXBoYXNp cyBub2RlIGF0Citwb2ludCB1c2luZyB0cmVlLXNpdHRlciBhbmQgcmVtb3ZlIGl0cyBtYXJrZXJz LiIKKyAgKGludGVyYWN0aXZlKQorICAoaWYgKHVzZS1yZWdpb24tcCkKKyAgICAgIChsZXQqICgo YmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAgICAoZW5kIChyZWdpb24tZW5kKSkK KyAgICAgICAgICAgICAodGV4dCAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKKyAgICAgICAg ICAgICAoc3RyaXBwZWQgbmlsKSkKKyAgICAgICAgKGNsLWxvb3AgZm9yIChfa2V5IC4gbSkgaW4g KHNvcnQgKGNvcHktc2VxdWVuY2UgbWFya2Rvd24tdHMtZW1waGFzaXMtYWxpc3QpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGEgYikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPiAobGVuZ3RoIChjZHIgYSkpIChs ZW5ndGggKGNkciBiKSkpKSkKKyAgICAgICAgICAgICAgICAgZm9yIHJlID0gKGNvbmNhdCAiXFxg IiAocmVnZXhwLXF1b3RlIG0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxc KFxcKD86LlxcfFxuXFwpKlxcKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cmVnZXhwLXF1b3RlIG0pICJcXCciKQorICAgICAgICAgICAgICAgICB3aGVuIChzdHJpbmctbWF0 Y2ggcmUgdGV4dCkKKyAgICAgICAgICAgICAgICAgZG8gKHNldHEgc3RyaXBwZWQgKG1hdGNoLXN0 cmluZyAxIHRleHQpKQorICAgICAgICAgICAgICAgICBhbmQgcmV0dXJuIG5pbCkKKyAgICAgICAg KHdoZW4gc3RyaXBwZWQKKyAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiBiZWcgZW5kKQorICAgICAg ICAgIChpbnNlcnQgc3RyaXBwZWQpKSkKKyAgICA7OyBGaW5kIHRoZSBvdXRlcm1vc3QgZW1waGFz aXMgbm9kZSBhdCBwb2ludC4KKyAgICAod2hlbi1sZXQqICgoaW5uZXIgKG1hcmtkb3duLXRzLS1l bXBoYXNpcy1ub2RlLWF0LXBvaW50KSkKKyAgICAgICAgICAgICAgICAobm9kZSAobGV0ICgobiBp bm5lcikpCisgICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGxldCAoKHBhcmVudCAodHJl ZXNpdC1ub2RlLXBhcmVudCBuKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiAoYW5kIHBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobWVtYmVyICh0cmVlc2l0LW5vZGUtdHlwZSBwYXJlbnQpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygiZW1waGFzaXMiICJzdHJvbmdf ZW1waGFzaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAic3RyaWtldGhyb3VnaCIgImNvZGVfc3BhbiIpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbiBwYXJlbnQpKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICBuKSkKKyAgICAgICAgICAgICAgICAoc3RhcnQgKHRyZWVzaXQtbm9kZS1zdGFydCBub2Rl KSkKKyAgICAgICAgICAgICAgICAoZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUpKQorICAgICAg ICAgICAgICAgICh0ZXh0ICh0cmVlc2l0LW5vZGUtdGV4dCBub2RlIHQpKQorICAgICAgICAgICAg ICAgICh0eXBlICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkKKyAgICAgICAgICAgICAgICAobWxl biAocGNhc2UgdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgKCJzdHJvbmdfZW1waGFzaXMi CisgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctcHJlZml4LXAgIl8iIHRleHQp IDIgMikpCisgICAgICAgICAgICAgICAgICAgICAgICAoImVtcGhhc2lzIgorICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoc3RyaW5nLXByZWZpeC1wICJfIiB0ZXh0KSAxIDEpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKCJzdHJpa2V0aHJvdWdoIiAyKQorICAgICAgICAgICAgICAgICAg ICAgICAgKCJjb2RlX3NwYW4iIDEpKSkKKyAgICAgICAgICAgICAgICAoaW5uZXItdGV4dCAoc3Vi c3RyaW5nIHRleHQgbWxlbiAoLSAobGVuZ3RoIHRleHQpIG1sZW4pKSkpCisgICAgICAobGV0ICgo b2Zmc2V0ICgtIChwb2ludCkgc3RhcnQgbWxlbikpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBz dGFydCBlbmQpCisgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisgICAgICAgIChpbnNlcnQgaW5u ZXItdGV4dCkKKyAgICAgICAgKGdvdG8tY2hhciAoKyBzdGFydCAobWF4IDAgb2Zmc2V0KSkpKSkp KQorCisoZGVmdW4gbWFya2Rvd24tdHMtZW1waGFzaXplICgmb3B0aW9uYWwgY2hhcikKKyAgIklu c2VydCBvciBjaGFuZ2UgZW1waGFzaXMgb24gdGV4dC4KK0lmIHRoZXJlIGlzIGFuIGFjdGl2ZSBy ZWdpb24sIHdyYXAgaXQgd2l0aCBlbXBoYXNpcyBtYXJrZXJzLgorSWYgdGhlcmUgaXMgbm8gcmVn aW9uLCBpbnNlcnQgbWFya2VyIHBhaXJzIGFuZCBwbGFjZSBwb2ludCBiZXR3ZWVuCit0aGVtLiAg Q0hBUiBzZWxlY3RzIHRoZSBlbXBoYXNpcyB0eXBlOgorCisgIGIgICAqKmJvbGQqKiAgICAgICBC ICBfX2JvbGRfXworICBpICAgKml0YWxpYyogICAgICAgSSAgX2l0YWxpY18KKyAgYSAgICoqKmJv bGQraXRhbGljKioqCisgIHMgICB+fnN0cmlrZXRocm91Z2h+fgorICBjICAgYGNvZGVgCisgIFNQ QyByZW1vdmUgZW1waGFzaXMgYXQgcG9pbnQgb3IgcmVnaW9uIgorICAoaW50ZXJhY3RpdmUKKyAg ICJjRW1waGFzaXMgW2Jdb2xkIFtCXW9sZF8gW2lddGFsaWMgW0lddGFsaWNfIFthXWxsIFtzXXRy aWtlIFtjXW9kZSBTUEMgcmVtb3ZlOiIpCisgIChpZiAoZXEgY2hhciA/XHMpCisgICAgICAobWFy a2Rvd24tdHMtcmVtb3ZlLWVtcGhhc2lzKQorICAgIChpZi1sZXQqICgobWFya2VyIChjZHIgKGFz c3EgY2hhciBtYXJrZG93bi10cy1lbXBoYXNpcy1hbGlzdCkpKSkKKyAgICAgICAgKGlmICh1c2Ut cmVnaW9uLXApCisgICAgICAgICAgICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAg ICAgICAgICAgICAgICAgIChlbmQgKGNvcHktbWFya2VyIChyZWdpb24tZW5kKSkpKQorICAgICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkK KyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikKKyAgICAgICAgICAgICAgICAoZ290by1j aGFyIGJlZykKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IG1hcmtlcikpKQorICAgICAgICAgIChp Zi1sZXQqICgoYm91bmRzIChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3dvcmQpKSkKKyAgICAg ICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2Ry IGJvdW5kcykpCisgICAgICAgICAgICAgICAgKGluc2VydCBtYXJrZXIpCisgICAgICAgICAgICAg ICAgKGdvdG8tY2hhciAoY2FyIGJvdW5kcykpCisgICAgICAgICAgICAgICAgKGluc2VydCBtYXJr ZXIpKQorICAgICAgICAgICAgKGluc2VydCBtYXJrZXIgbWFya2VyKQorICAgICAgICAgICAgKGJh Y2t3YXJkLWNoYXIgKGxlbmd0aCBtYXJrZXIpKSkpCisgICAgICAodXNlci1lcnJvciAiTm8gc3Vj aCBlbXBoYXNpcyBtYXJrZXI6ICVjIiBjaGFyKSkpKQorCis7OzsgQmxvY2sgc3RydWN0dXJlOgor CisoZGVmdW4gbWFya2Rvd24tdHMtaW5zZXJ0LXN0cnVjdHVyZSAoJm9wdGlvbmFsIGNoYXIpCisg ICJJbnNlcnQgYSBibG9jayBzdHJ1Y3R1cmUuCitJZiB0aGVyZSBpcyBhbiBhY3RpdmUgcmVnaW9u LCB3cmFwIGl0LiAgT3RoZXJ3aXNlLCBpbnNlcnQgYW4gZW1wdHkKK2Jsb2NrIGFuZCBwbGFjZSBw b2ludCBpbnNpZGUuICBDSEFSIHNlbGVjdHMgdGhlIHN0cnVjdHVyZSB0eXBlOgorCisgIGMgIGZl bmNlZCBjb2RlIGJsb2NrIChgYGApCisgIHQgIHRpbGRlIGZlbmNlZCBjb2RlIGJsb2NrICh+fn4p CisgIHEgIGJsb2NrIHF1b3RlICg+ICkKKyAgZCAgaG9yaXpvbnRhbCBkaXZpZGVyL3J1bGUgKC0t LSkiCisgIChpbnRlcmFjdGl2ZSAiY1N0cnVjdHVyZSBbY11vZGUgYmxvY2sgW3RdaWxkZSBjb2Rl IGJsb2NrIFtxXXVvdGUgW2RdaXZpZGVyOiIpCisgIChwY2FzZSBjaGFyCisgICAgKD9jIChtYXJr ZG93bi10cy0taW5zZXJ0LWNvZGUtYmxvY2sgP2ApKQorICAgICg/dCAobWFya2Rvd24tdHMtLWlu c2VydC1jb2RlLWJsb2NrID9+KSkKKyAgICAoP3EgKG1hcmtkb3duLXRzLS1pbnNlcnQtYmxvY2st cXVvdGUpKQorICAgICg/ZCAobWFya2Rvd24tdHMtLWluc2VydC1kaXZpZGVyKSkKKyAgICAoXyAo dXNlci1lcnJvciAiTm8gc3VjaCBzdHJ1Y3R1cmU6ICVjIiBjaGFyKSkpKQorCisoZGVmdW4gbWFy a2Rvd24tdHMtLWluc2VydC1jb2RlLWJsb2NrIChjaGFyICZvcHRpb25hbCBsYW5ndWFnZSkKKyAg Ikluc2VydCBhIGZlbmNlZCBjb2RlIGJsb2NrIHVzaW5nIGEgQ0hBUiBzZXF1ZW5jZS4KK0NIQVIg c2hvdWxkIGJlIG9uZSBvZiBhIGJhY2t0aWNrIG9yIGEgdGlsZGUuCitMQU5HVUFHRSBpcyBhIHdo aXRlc3BhY2UgZnJlZSBsYW5ndWFnZSBzdHJpbmcuIgorICAoc2V0cSBsYW5ndWFnZQorICAgICAg ICAob3IgbGFuZ3VhZ2UKKyAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKyAg ICAgICAgICAgICAiW1s6Ymxhbms6XV0iICIiCisgICAgICAgICAgICAgKGxldCAoKGNvbXBsZXRp b24taWdub3JlLWNhc2UgbmlsKQorICAgICAgICAgICAgICAgICAgIChjYW5kaWRhdGVzCisgICAg ICAgICAgICAgICAgICAgIChzZXEtbWFwCisgICAgICAgICAgICAgICAgICAgICAjJ3N5bWJvbC1u YW1lCisgICAgICAgICAgICAgICAgICAgICAoc2VxLXVuaXEKKyAgICAgICAgICAgICAgICAgICAg ICAoYXBwZW5kIChtYXBjYXIgIydjYXIgbWFya2Rvd24tdHMtLWNvZGUtYmxvY2stbGFuZ3VhZ2Vz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBtYXJrZG93bi10 cy0tY29kZS1ibG9jay1ub24tdHMtbW9kZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFwY2FyICMnY2FyIG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9kZXMpKSkpKSkKKyAgICAg ICAgICAgICAgIChjb21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAiQ29kZSBibG9jayBs YW5ndWFnZTogIgorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMKKyAgICAgICAgICAgICAgICBu aWwKKyAgICAgICAgICAgICAgICAnY29uZmlybSA7IFByb21wdCBpZiB0aGUgbGFuZ3VhZ2UgaXMg bm90IG9uIG91ciBsaXN0LgorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICdt YXJrZG93bi10cy1sYW5ndWFnZS1oaXN0b3J5KSkpKSkKKyAgKGxldCAoKGZlbmNlLXN0cmluZyAo bWFrZS1zdHJpbmcgMyBjaGFyKSkpCisgICAgKGlmICh1c2UtcmVnaW9uLXApCisgICAgICAgIChs ZXQgKChiZWcgKHJlZ2lvbi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAoZW5kIChyZWdpb24t ZW5kKSkpCisgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAoZ290by1jaGFy IGVuZCkKKyAgICAgICAgICAgICh1bmxlc3MgKGJvbHApIChpbnNlcnQgIlxuIikpCisgICAgICAg ICAgICAoaW5zZXJ0IGZlbmNlLXN0cmluZyAiXG4iKQorICAgICAgICAgICAgKGdvdG8tY2hhciBi ZWcpCisgICAgICAgICAgICAoaW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG4iKSkpCisg ICAgICAoaW5zZXJ0IGZlbmNlLXN0cmluZyBsYW5ndWFnZSAiXG5cbiIgZmVuY2Utc3RyaW5nKQor ICAgICAgKGZvcndhcmQtbGluZSAtMSkpKSkKKworKGRlZnVuIG1hcmtkb3duLXRzLS1pbnNlcnQt YmxvY2stcXVvdGUgKCkKKyAgIkluc2VydCBhIGJsb2NrIHF1b3RlLiIKKyAgKGlmICh1c2UtcmVn aW9uLXApCisgICAgICAobGV0ICgoYmVnIChyZWdpb24tYmVnaW5uaW5nKSkKKyAgICAgICAgICAg IChlbmQgKGNvcHktbWFya2VyIChyZWdpb24tZW5kKSkpKQorICAgICAgICAoc2F2ZS1leGN1cnNp b24KKyAgICAgICAgICAoZ290by1jaGFyIGJlZykKKyAgICAgICAgICAod2hpbGUgKDwgKHBvaW50 KSBlbmQpCisgICAgICAgICAgICAoaW5zZXJ0ICI+ICIpCisgICAgICAgICAgICAoZm9yd2FyZC1s aW5lIDEpKSkpCisgICAgKGluc2VydCAiPiAiKSkpCisKKyhkZWZ1biBtYXJrZG93bi10cy0taW5z ZXJ0LWRpdmlkZXIgKCkKKyAgIkluc2VydCBhIGhvcml6b250YWwgcnVsZS4iCisgICh1bmxlc3Mg KGJvbHApIChpbnNlcnQgIlxuIikpCisgIChpbnNlcnQgIlxuLS0tXG5cbiIpKQorCisoZGVmdW4g bWFya2Rvd24tdHMtLWFwcGx5LWVsbGlwc2lzICgpCisgICJBcHBseSBgbWFya2Rvd24tdHMtZWxs aXBzaXMnIHRvIHRoZSBjdXJyZW50IGJ1ZmZlcidzIGRpc3BsYXkgdGFibGUuIgorICAoaWYgKGFu ZCAoc3RyaW5ncCBtYXJrZG93bi10cy1lbGxpcHNpcykKKyAgICAgICAgICAgKG5vdCAoc3RyaW5n LWVtcHR5LXAgbWFya2Rvd24tdHMtZWxsaXBzaXMpKSkKKyAgICAgIChsZXQgKCh0YWJsZSAob3Ig YnVmZmVyLWRpc3BsYXktdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtZGlzcGxh eS10YWJsZSkpKSkKKyAgICAgICAgKHNldC1kaXNwbGF5LXRhYmxlLXNsb3QKKyAgICAgICAgIHRh YmxlIDQKKyAgICAgICAgICh2Y29uY2F0IChtYXBjYXIgKGxhbWJkYSAoYykgKG1ha2UtZ2x5cGgt Y29kZSBjICdzaGFkb3cpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bi10cy1l bGxpcHNpcykpKQorICAgICAgICAoc2V0cSBidWZmZXItZGlzcGxheS10YWJsZSB0YWJsZSkpCisg ICAgKHdoZW4gYnVmZmVyLWRpc3BsYXktdGFibGUKKyAgICAgIChzZXQtZGlzcGxheS10YWJsZS1z bG90IGJ1ZmZlci1kaXNwbGF5LXRhYmxlIDQgbmlsKSkpKQorCis7OzsgTWFqb3IgbW9kZToKKwor KGRlZnVuIG1hcmtkb3duLXRzLS1zZXQtdXAgKCkKKyAgIlNldCB1cCB0cmVlc2l0IGZvciBgbWFy a2Rvd24tdHMtbW9kZScuIgogICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5n cyBtYXJrZG93bi10cy0tdHJlZXNpdC1zZXR0aW5ncykKICAgKHNldHEtbG9jYWwgdHJlZXNpdC1y YW5nZS1zZXR0aW5ncyAobWFya2Rvd24tdHMtLXJhbmdlLXNldHRpbmdzKSkKLSAgKGFkZC10by1s aXN0ICdmb250LWxvY2stZXh0cmEtbWFuYWdlZC1wcm9wcyAnaW52aXNpYmxlKQorICAocHJvZ24K KyAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnbWFya2Rvd24tdHMtaGlkZS1tYXJrdXApCisgICAg KG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2VkLXByb3BzKQorICAg IChkb2xpc3QgKHByb3AgJyhpbnZpc2libGUgZGlzcGxheSBidXR0b24gY2F0ZWdvcnkgYWN0aW9u IGhlbHAtZWNobykpCisgICAgICAoYWRkLXRvLWxpc3QgJ2ZvbnQtbG9jay1leHRyYS1tYW5hZ2Vk LXByb3BzIHByb3ApKSkKIAogICAod2hlbiAodHJlZXNpdC1yZWFkeS1wICdodG1sIHQpCiAgICAg KHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnaHRtbCkKQEAgLTQyOSwzOCArMjYwMSwxODUgQEAgbWFy a2Rvd24tdHMtc2V0dXAKICAgICAgICAgICAgICAgICAgICAgICAgICAnKChwbHVzX21ldGFkYXRh KSBAdG9tbCkpKSkpCiAKICAgKHRyZWVzaXQtbWFqb3ItbW9kZS1zZXR1cCkKKyAgOzsgRG8gbm90 IGVuYWJsZSBgaml0LWxvY2stbW9kZScgaW4gaW5kaXJlY3QgYnVmZmVycyBzdWNoIGFzIHRoZSBv bmUKKyAgOzsgd2UgdXNlIGZvciBjb2RlIGJsb2NrIGNvbW1hbmRzLgorICAodW5sZXNzIChidWZm ZXItYmFzZS1idWZmZXIpCisgICAgKGppdC1sb2NrLXJlZ2lzdGVyICMnbWFya2Rvd24tdHMtLWZv bnRpZnktYmFyZS11cmkpKQogICAobWFya2Rvd24tdHMtLXNldC1oaWRlLW1hcmt1cCBtYXJrZG93 bi10cy1oaWRlLW1hcmt1cCkpCiAKKyhkZWZ1biBtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlICgp CisgICJDeWNsZSB2aXNpYmlsaXR5IG9mIHRoZSBoZWFkaW5nIGF0IHBvaW50LgorT24gYSBoZWFk aW5nLCBjYWxsIGBvdXRsaW5lLWN5Y2xlJy4gIE90aGVyd2lzZSBkbyBub3RoaW5nLiIKKyAgKGlu dGVyYWN0aXZlKQorICAod2hlbiAob3V0bGluZS1vbi1oZWFkaW5nLXApCisgICAgKG91dGxpbmUt Y3ljbGUpKSkKKworKGRlZnZhci1rZXltYXAgbWFya2Rvd24tdHMtbW9kZS1tYXAKKyAgOmRvYyAi S2V5bWFwIGZvciBgbWFya2Rvd24tdHMtbW9kZScuIgorICAiTS08bGVmdD4iICAgICMnbWFya2Rv d24tdHMtcHJvbW90ZQorICAiTS08cmlnaHQ+IiAgICMnbWFya2Rvd24tdHMtZGVtb3RlCisgICJN LTx1cD4iICAgICAgIydtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtdXAKKyAgIk0tPGRvd24+IiAg ICAjJ21hcmtkb3duLXRzLW1vdmUtc3VidHJlZS1kb3duCisgICJDLWMgQy1uIiAgICAgIydvdXRs aW5lLW5leHQtaGVhZGluZworICAiQy1jIEMtcCIgICAgICMnb3V0bGluZS1wcmV2aW91cy1oZWFk aW5nCisgICJDLWMgQy11IiAgICAgIydvdXRsaW5lLXVwLWhlYWRpbmcKKyAgIkMtYyBDLWYiICAg ICAjJ291dGxpbmUtZm9yd2FyZC1zYW1lLWxldmVsCisgICJDLWMgQy1iIiAgICAgIydvdXRsaW5l LWJhY2t3YXJkLXNhbWUtbGV2ZWwKKyAgIkMtYyBDLXggQy1mIiAjJ21hcmtkb3duLXRzLWVtcGhh c2l6ZQorICAiQy1jIEMteCBDLW0iICMnbWFya2Rvd24tdHMtdG9nZ2xlLWhpZGUtbWFya3VwCisg ICJDLWMgQy14IEMtdiIgIydtYXJrZG93bi10cy10b2dnbGUtaW5saW5lLWltYWdlcworICAiQy1j IEMtYyIgICAgICMnbWFya2Rvd24tdHMtdG9nZ2xlLWNoZWNrYm94CisgICJDLWMgQy1yIiAgICAg IydtYXJrZG93bi10cy1yZW51bWJlci1saXN0CisgICJDLWMgQy0sIiAgICAgIydtYXJrZG93bi10 cy1pbnNlcnQtc3RydWN0dXJlCisgICJDLWMgQy12IG4iICAgIydtYXJrZG93bi10cy1tb3ZlLXRv LW5leHQtY29kZS1ibG9jaworICAiQy1jIEMtdiBwIiAgICMnbWFya2Rvd24tdHMtbW92ZS10by1w cmV2aW91cy1jb2RlLWJsb2NrCisgICJSRVQiICAgICAgICAgIydtYXJrZG93bi10cy1uZXdsaW5l CisgICJNLVJFVCIgICAgICAgIydtYXJrZG93bi10cy1pbnNlcnQtbGlzdC1pdGVtCisgICJUQUIi ICAgICAgICAgIydtYXJrZG93bi10cy1vdXRsaW5lLWN5Y2xlKQorCisoZGVmdmFyLWtleW1hcCBt YXJrZG93bi10cy1jb2RlLWJsb2NrLW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYG1hcmtk b3duLXRzLWNvZGUtYmxvY2stbW9kZScuCitUaGVzZSBvdmVycmlkZSBrZXlzIGluIGBtYXJrZG93 bi10cy1tb2RlLW1hcCcgdG8gc3VwcG9ydCBleGVjdXRpbmcgdGhlaXIKK2NvbW1hbmRzIGluIGEg Y29kZS1ibG9jayBjb250ZXh0LiIKKyAgOnBhcmVudCBtYXJrZG93bi10cy1tb2RlLW1hcAorICAi TS0uIiAgICAgICAgICMnbWFya2Rvd24tdHMtLWNvZGUtYmxvY2steHJlZi1maW5kLWRlZmluaXRp b25zCisgICJUQUIiICAgICAgICAgIydpbmRlbnQtZm9yLXRhYi1jb21tYW5kCisgICJSRVQiICAg ICAgICAgIydtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJDLWoiICAgICAgICAg IydtYXJrZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJNLVJFVCIgICAgICAgIydtYXJr ZG93bi10cy0tY29kZS1ibG9jay1uZXdsaW5lCisgICJNLXEiICAgICAgICAgIydtYXJrZG93bi10 cy0tY29kZS1ibG9jay1maWxsLXBhcmFncmFwaCkKKworKGVhc3ktbWVudS1kZWZpbmUgbWFya2Rv d24tdHMtbW9kZS1tZW51IG1hcmtkb3duLXRzLW1vZGUtbWFwCisgICJgbWFya2Rvd24tdHMtbW9k ZScgbWVudS4iCisgICcoIk1hcmtkb3duIiA6dmlzaWJsZSBtYXJrZG93bi10cy1tZW51LWJhci1z aG93CisgICAgIi0tIgorICAgIFsiQ3ljbGUgT3V0bGluZSBWaXNpYmlsaXR5IiBtYXJrZG93bi10 cy1vdXRsaW5lLWN5Y2xlCisgICAgIDpoZWxwICJDeWNsZSBoZWFkaW5nIHZpc2liaWxpdHkgZnJv bSBwb2ludCJdCisgICAgWyJUb2dnbGUgSGlkZSBNYXJrdXAiIG1hcmtkb3duLXRzLXRvZ2dsZS1o aWRlLW1hcmt1cAorICAgICA6c3R5bGUgdG9nZ2xlIDpzZWxlY3RlZCBtYXJrZG93bi10cy1oaWRl LW1hcmt1cAorICAgICA6aGVscCAiVG9nZ2xlIGRpc3BsYXkgb2YgbWFya3VwIGNoYXJhY3RlcnMi XQorICAgIFsiVG9nZ2xlIElubGluZSBJbWFnZXMiIG1hcmtkb3duLXRzLXRvZ2dsZS1pbmxpbmUt aW1hZ2VzCisgICAgIDpzdHlsZSB0b2dnbGUgOnNlbGVjdGVkIG1hcmtkb3duLXRzLWlubGluZS1p bWFnZXMKKyAgICAgOmhlbHAgIlRvZ2dsZSBkaXNwbGF5IG9mIGlubGluZSBpbWFnZXMgYmVsb3cg bGlua3MiXQorICAgICItLSIKKyAgICBbIlVwIiBvdXRsaW5lLXVwLWhlYWRpbmcKKyAgICAgOmhl bHAgIk1vdmUgdG8gdGhlIHBhcmVudCBoZWFkaW5nIl0KKyAgICBbIk5leHQiIG91dGxpbmUtbmV4 dC1oZWFkaW5nCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmciXQorICAgIFsi UHJldmlvdXMiIG91dGxpbmUtcHJldmlvdXMtaGVhZGluZworICAgICA6aGVscCAiTW92ZSB0byB0 aGUgcHJldmlvdXMgaGVhZGluZyJdCisgICAgWyJOZXh0IFNhbWUgTGV2ZWwiIG91dGxpbmUtZm9y d2FyZC1zYW1lLWxldmVsCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBuZXh0IGhlYWRpbmcgYXQg dGhlIHNhbWUgbGV2ZWwiXQorICAgIFsiUHJldmlvdXMgU2FtZSBMZXZlbCIgb3V0bGluZS1iYWNr d2FyZC1zYW1lLWxldmVsCisgICAgIDpoZWxwICJNb3ZlIHRvIHRoZSBwcmV2aW91cyBoZWFkaW5n IGF0IHRoZSBzYW1lIGxldmVsIl0KKyAgICAiLS0iCisgICAgWyJKdW1wIiBpbWVudQorICAgICA6 aGVscCAiSnVtcCB0byBhIGhlYWRpbmcgdmlhIGNvbXBsZXRpb24iXQorICAgICItLSIKKyAgICBb Ik1vdmUgU3VidHJlZSBVcCIgbWFya2Rvd24tdHMtbW92ZS1zdWJ0cmVlLXVwCisgICAgIDpoZWxw ICJNb3ZlIHRoZSBjdXJyZW50IHNlY3Rpb24gb3IgbGlzdCBpdGVtIHVwIl0KKyAgICBbIk1vdmUg U3VidHJlZSBEb3duIiBtYXJrZG93bi10cy1tb3ZlLXN1YnRyZWUtZG93bgorICAgICA6aGVscCAi TW92ZSB0aGUgY3VycmVudCBzZWN0aW9uIG9yIGxpc3QgaXRlbSBkb3duIl0KKyAgICBbIlByb21v dGUiIG1hcmtkb3duLXRzLXByb21vdGUKKyAgICAgOmhlbHAgIlByb21vdGUgaGVhZGluZyBvciBs aXN0IGl0ZW0iXQorICAgIFsiRGVtb3RlIiBtYXJrZG93bi10cy1kZW1vdGUKKyAgICAgOmhlbHAg IkRlbW90ZSBoZWFkaW5nIG9yIGxpc3QgaXRlbSJdCisgICAgIi0tIgorICAgIFsiRW1waGFzaXMu Li4iIG1hcmtkb3duLXRzLWVtcGhhc2l6ZQorICAgICA6aGVscCAiQWRkIG9yIGNoYW5nZSBlbXBo YXNpcyBvbiByZWdpb24iXQorICAgIFsiQWRkIEJsb2NrIFN0cnVjdHVyZSIgbWFya2Rvd24tdHMt aW5zZXJ0LXN0cnVjdHVyZQorICAgICA6aGVscCAiSW5zZXJ0IGEgY29kZSBibG9jaywgcXVvdGUs IG9yIG90aGVyIHN0cnVjdHVyZSJdCisgICAgIi0tIgorICAgIFsiVG9nZ2xlIENoZWNrYm94IiBt YXJrZG93bi10cy10b2dnbGUtY2hlY2tib3gKKyAgICAgOmhlbHAgIlRvZ2dsZSB0YXNrIGxpc3Qg Y2hlY2tib3ggYXQgcG9pbnQiXQorICAgIFsiTmV3IExpc3QgSXRlbSIgbWFya2Rvd24tdHMtaW5z ZXJ0LWxpc3QtaXRlbQorICAgICA6aGVscCAiSW5zZXJ0IGEgbmV3IGxpc3QgaXRlbSBhZnRlciB0 aGUgY3VycmVudCBvbmUiXQorICAgIFsiUmVudW1iZXIgTGlzdCIgbWFya2Rvd24tdHMtcmVudW1i ZXItbGlzdAorICAgICA6aGVscCAiUmVudW1iZXIgdGhlIG9yZGVyZWQgbGlzdCBhdCBwb2ludCJd KSkKKwogOzs7IyMjYXV0b2xvYWQKIChkZWZpbmUtZGVyaXZlZC1tb2RlIG1hcmtkb3duLXRzLW1v ZGUgdGV4dC1tb2RlICJNYXJrZG93biIKICAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgTWFya2Rv d24gdXNpbmcgdHJlZS1zaXR0ZXIgZ3JhbW1hci4iCiAKLSAgKHNldHEtbG9jYWwgY29tbWVudC1z dGFydCAiPCEtLSAiKQotICAoc2V0cS1sb2NhbCBjb21tZW50LWVuZCAiIC0tPiIpCisgIChzZXRx LWxvY2FsIGNvbW1lbnQtc3RhcnQgIjwhLS0gIgorICAgICAgICAgICAgICBjb21tZW50LWVuZCAi IC0tPiIKKyAgICAgICAgICAgICAgY29tbWVudC1zdGFydC1za2lwICI8IS0tWyBcdF0qIgorICAg ICAgICAgICAgICBjb21tZW50LWVuZC1za2lwICJbIFx0XSotLT4iCisgICAgICAgICAgICAgIGNv bW1lbnQtdXNlLXN5bnRheCBuaWwpCisKKyAgKHNldHEtbG9jYWwgZmlsbC1wYXJhZ3JhcGgtZnVu Y3Rpb24KKyAgICAgICAgICAgICAgIydtYXJrZG93bi10cy0tZmlsbC1wYXJhZ3JhcGgKKyAgICAg ICAgICAgICAgZmlsbC1mb3J3YXJkLXBhcmFncmFwaC1mdW5jdGlvbgorICAgICAgICAgICAgICAj J21hcmtkb3duLXRzLS1maWxsLWZvcndhcmQtcGFyYWdyYXBoKQorICA7OyBgYWRhcHRpdmUtZmls bC1mdW5jdGlvbicgdGFrZXMgcHJlY2VkZW5jZSBvdmVyCisgIDs7IGBhZGFwdGl2ZS1maWxsLXJl Z2V4cCc7IHRoZSBkZWZhdWx0IHJlZ2V4cCBpcyBmaW5lIGFzIGEKKyAgOzsgZmFsbGJhY2sgZm9y IHBsYWluIChub24tbGlzdCkgcGFyYWdyYXBocy4KKyAgKHNldHEtbG9jYWwgYWRhcHRpdmUtZmls bC1mdW5jdGlvbiAjJ21hcmtkb3duLXRzLS1hZGFwdGl2ZS1maWxsKQogCiAgIChzZXRxLWxvY2Fs IGZvbnQtbG9jay1kZWZhdWx0cyBuaWwKLQkgICAgICB0cmVlc2l0LWZvbnQtbG9jay1mZWF0dXJl LWxpc3QgJygoZGVsaW1pdGVyIGhlYWRpbmcpCi0JCQkJCSAgICAgICAocGFyYWdyYXBoKQotCQkJ CQkgICAgICAgKHBhcmFncmFwaC1pbmxpbmUpKSkKKyAgICAgICAgICAgICAgdHJlZXNpdC1mb250 LWxvY2stZmVhdHVyZS1saXN0ICcoKGRlbGltaXRlciBoZWFkaW5nKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWdyYXBoKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWdyYXBoLWlubGluZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlLXByZXZp ZXcpKSkKIAogICAoc2V0cS1sb2NhbCB0cmVlc2l0LXNpbXBsZS1pbWVudS1zZXR0aW5ncwotICAg ICAgICAgICAgICBgKCgiSGVhZGluZ3MiICwjJ21hcmtkb3duLXRzLWltZW51LW5vZGUtcAotICAg ICAgICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtaW1lbnUtbmFtZS1mdW5jdGlvbikpKQot ICAoc2V0cS1sb2NhbCB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlICMnbWFya2Rvd24tdHMtb3V0 bGluZS1wcmVkaWNhdGUpCisgICAgICAgICAgICAgIGAoKCJIZWFkaW5ncyIgLCMnbWFya2Rvd24t dHMtLWltZW51LWhlYWRpbmctbm9kZS1wCisgICAgICAgICAgICAgICAgIG5pbCAsIydtYXJrZG93 bi10cy0taW1lbnUtaGVhZGluZy1uYW1lLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICgiQ29k ZSBCbG9ja3MiICwjJ21hcmtkb3duLXRzLS1pbWVudS1jb2RlLWJsb2NrLW5vZGUtcAorICAgICAg ICAgICAgICAgICBuaWwgLCMnbWFya2Rvd24tdHMtLWltZW51LWNvZGUtYmxvY2stbmFtZS1mdW5j dGlvbikpKQorICAoc2V0cS1sb2NhbCB0cmVlc2l0LW91dGxpbmUtcHJlZGljYXRlICMnbWFya2Rv d24tdHMtLW91dGxpbmUtcHJlZGljYXRlKQorCisgIChzZXRxLWxvY2FsIG91dGxpbmUtbWlub3It bW9kZS1jeWNsZSB0KQorICAob3V0bGluZS1taW5vci1tb2RlIDEpCisKKyAgKG1hcmtkb3duLXRz LS1hcHBseS1lbGxpcHNpcykKKworICA7OyBOT1RFOiBgb3V0bGluZS12aWV3LWNoYW5nZS1ob29r JyB3YXMgb2Jzb2xldGVkIGluIDI5LjEgKGNvbW1pdAorICA7OyA1M2IxZTZmOTZjYikgb24gdGhl IGdyb3VuZHMgdGhhdCBvbmx5IGxhenktbG9jayB1c2VkIGl0LCBidXQgbm8KKyAgOzsgcmVwbGFj ZW1lbnQgd2FzIHByb3ZpZGVkIGFuZCBvdXRsaW5lLmVsIGl0c2VsZiBzdGlsbCBydW5zIHRoZSBo b29rCisgIDs7IGluIDEwKyBwbGFjZXMuCisgICh3aXRoLXN1cHByZXNzZWQtd2FybmluZ3MgKChv YnNvbGV0ZSBvdXRsaW5lLXZpZXctY2hhbmdlLWhvb2spKQorICAgIChhZGQtaG9vayAnb3V0bGlu ZS12aWV3LWNoYW5nZS1ob29rCisgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMtLW91dGxpbmUt dmlldy1jaGFuZ2UgbmlsIHQpKQogCiAgICh3aGVuIChhbmQgKHRyZWVzaXQtZW5zdXJlLWluc3Rh bGxlZCAnbWFya2Rvd24pCiAgICAgICAgICAgICAgKHRyZWVzaXQtZW5zdXJlLWluc3RhbGxlZCAn bWFya2Rvd24taW5saW5lKSkKICAgICAodHJlZXNpdC1wYXJzZXItY3JlYXRlICdtYXJrZG93bi1p bmxpbmUpCiAgICAgKHRyZWVzaXQtcGFyc2VyLWNyZWF0ZSAnbWFya2Rvd24pCi0gICAgKG1hcmtk b3duLXRzLXNldHVwKSkpCisgICAgKG1hcmtkb3duLXRzLS1zZXQtdXApCisKKyAgICAocGNhc2Ug bWFya2Rvd24tdHMtZGVmYXVsdC1mb2xkaW5nCisgICAgICAoJ3Nob3ctYWxsIChpZ25vcmUpKQor ICAgICAgKCdmb2xkLWFsbCAob3V0bGluZS1oaWRlLXN1YmxldmVscyAxKSkKKyAgICAgICgnZm9s ZC1oZWFkaW5ncyAob3V0bGluZS1zaG93LWFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAob3V0 bGluZS1oaWRlLXJlZ2lvbi1ib2R5IChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKQorCisgIDs7 IFN1cHBvcnQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBpbiBhIGNvZGUtYmxvY2sgY29udGV4dC4K KworICA7OyBFbmFibGUgdGhlIG1pbm9yIG1vZGUgYG1hcmtkb3duLXRzLWNvZGUtYmxvY2stbW9k ZScgYW5kIGl0cyBrZXltYXAKKyAgOzsgd2hlbiBwb2ludCBpcyB3aXRoaW4gYSBjb2RlIGJsb2Nr LgorICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rCisgICAgICAgICAgICAjJ21hcmtkb3du LXRzLS1lbmFibGUtY29kZS1ibG9jay1tb2RlIG5pbCAnbG9jYWwpCisgIDs7IElmIGBzYXZlLXBs YWNlLW1vZGUnIG9yIHNpbWlsYXIgaXMgdXNlZCwgcG9pbnQgY291bGQgc3RhcnQgd2l0aGluIGEK KyAgOzsgY29kZSBibG9jayBzbyBpbml0aWFsaXplIHRoYXQgc3RhdGUuCisgIChydW4td2l0aC1p ZGxlLXRpbWVyIDAuMDEgbmlsCisgICAgICAgICAgICAgICAgICAgICAgICMnbWFya2Rvd24tdHMt LWVuYWJsZS1jb2RlLWJsb2NrLW1vZGUpCisgIDs7IEZvciBlYWNoIGVsaWdpYmxlIGNvbW1hbmQs IGV4ZWN1dGUgaXQgaW4gYSBjb2RlLWJsb2NrIGNvbnRleHQsCisgIDs7IG90aGVyd2lzZSBpbiB0 aGUgYG1hcmtkb3duLXRzLW1vZGUnIGJ1ZmZlcidzIGNvbnRleHQuCisgIChhZGQtaG9vayAncHJl LWNvbW1hbmQtaG9vaworICAgICAgICAgICAgIydtYXJrZG93bi10cy0tbWF5YmUtcnVuLWNvbW1h bmQtaW4tY29kZS1ibG9jayBuaWwgJ2xvY2FsKSkKIAogKGRlcml2ZWQtbW9kZS1hZGQtcGFyZW50 cyAnbWFya2Rvd24tdHMtbW9kZSAnKG1hcmtkb3duLW1vZGUpKQogCisoZGVmaW5lLW1pbm9yLW1v ZGUgbWFya2Rvd24tdHMtY29kZS1ibG9jay1tb2RlCisgICJNb2RlIGVuYWJsZWQgaWYgcG9pbnQg aXMgd2l0aGluIGEgZmVuY2VkIGNvZGUgYmxvY2suIgorICA6aW50ZXJhY3RpdmUgbmlsKQorCiA7 OzsjIyNhdXRvbG9hZAogKGRlZnVuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUgKCkKICAgIkVuYWJs ZSBgbWFya2Rvd24tdHMtbW9kZScgd2hlbiBpdHMgZ3JhbW1hciBpcyBhdmFpbGFibGUuCi1BbHNv IHByb3Bvc2UgdG8gaW5zdGFsbCB0aGUgZ3JhbW1hciB3aGVuIGB0cmVlc2l0LWVuYWJsZWQtbW9k ZXMnCi1pcyB0IG9yIGNvbnRhaW5zIHRoZSBtb2RlIG5hbWUuIgorUHJvcG9zZSBwcm9wb3NlIHRv IGluc3RhbGwgdGhlIGdyYW1tYXIgd2hlbiBgdHJlZXNpdC1lbmFibGVkLW1vZGVzJyBpcyB0Citv ciBjb250YWlucyB0aGUgbW9kZSBuYW1lLiIKICAgKGRlY2xhcmUtZnVuY3Rpb24gdHJlZXNpdC1s YW5ndWFnZS1hdmFpbGFibGUtcCAidHJlZXNpdC5jIikKICAgKGlmIChvciAodHJlZXNpdC1sYW5n dWFnZS1hdmFpbGFibGUtcCAnbWFya2Rvd24pCiAgICAgICAgICAgKGVxIHRyZWVzaXQtZW5hYmxl ZC1tb2RlcyB0KQpAQCAtNDcxLDcgKzI3OTAsOCBAQCBtYXJrZG93bi10cy1tb2RlLW1heWJlCiA7 OzsjIyNhdXRvbG9hZAogKHdoZW4gKGJvdW5kcCAndHJlZXNpdC1tYWpvci1tb2RlLXJlbWFwLWFs aXN0KQogICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZFxcJyIgLiBtYXJr ZG93bi10cy1tb2RlLW1heWJlKSkKLSAgOzsgVG8gYmUgYWJsZSB0byB0b2dnbGUgYmV0d2VlbiBh biBleHRlcm5hbCBwYWNrYWdlIGFuZCBjb3JlIHRzLW1vZGU6CisgIChhZGQtdG8tbGlzdCAnYXV0 by1tb2RlLWFsaXN0ICcoIlxcLm1hcmtkb3duXFwnIiAuIG1hcmtkb3duLXRzLW1vZGUtbWF5YmUp KQorICAoYWRkLXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5tZHhcXCciIC4gbWFya2Rv d24tdHMtbW9kZS1tYXliZSkpCiAgIChhZGQtdG8tbGlzdCAndHJlZXNpdC1tYWpvci1tb2RlLXJl bWFwLWFsaXN0CiAgICAgICAgICAgICAgICAnKG1hcmtkb3duLW1vZGUgLiBtYXJrZG93bi10cy1t b2RlKSkpCiAKLS0gCjIuNTMuMAoK --=-=-=--
Rahul Martim Juliato <rahuljuliato@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#80740; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.